diff --git a/.gitignore b/.gitignore index d21a8bb..ae19df1 100644 --- a/.gitignore +++ b/.gitignore @@ -6,7 +6,7 @@ .pnp.js package-lock.json .idea -/public/demo/projects +/public/demo/libs # testing /coverage diff --git a/config-overrides.js b/config-overrides.js new file mode 100644 index 0000000..051f9ad --- /dev/null +++ b/config-overrides.js @@ -0,0 +1,31 @@ +const CopyPlugin = require("copy-webpack-plugin"); +const path = require("path"); + +const sdkPath = path.resolve( +__dirname, +"node_modules/@pattern-x/gemini-viewer-threejs/dist" +); + +module.exports = { + webpack: function (config, env) { + let demoDistPath = path.resolve(__dirname, "public/demo/libs"); + if (env === 'production') { + demoDistPath = path.resolve(__dirname, "build/demo/libs"); + } + //do stuff with the webpack config... + config.optimization.minimizer[0].options.extractComments = false; + config.plugins.push( + new CopyPlugin({ + patterns: [{ force: true, from: sdkPath, to: demoDistPath }], + }) + ); + return config; + }, + devServer: function(configFunction) { + return function(proxy, allowedHost) { + const config = configFunction(proxy, allowedHost); + config.devMiddleware.writeToDisk = true; + return config; + }; + } +}; diff --git a/package.json b/package.json index c0ef700..da5f828 100644 --- a/package.json +++ b/package.json @@ -9,6 +9,7 @@ "@codemirror/lang-javascript": "^6.1.1", "@codemirror/state": "^6.1.2", "@codemirror/view": "^6.4.0", + "@pattern-x/gemini-viewer-threejs": "latest", "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^13.5.0", @@ -29,9 +30,9 @@ "web-vitals": "^2.1.4" }, "scripts": { - "start": "react-scripts start", - "build": "react-scripts build", - "test": "react-scripts test", + "start": "react-app-rewired start", + "build": "react-app-rewired build", + "test": "react-app-rewired test", "eject": "react-scripts eject" }, "eslintConfig": { @@ -51,5 +52,9 @@ "last 1 firefox version", "last 1 safari version" ] + }, + "devDependencies": { + "copy-webpack-plugin": "^11.0.0", + "react-app-rewired": "^2.2.1" } } diff --git a/public/demo/libs/gemini-viewer.esm.min.js b/public/demo/libs/gemini-viewer.esm.min.js index ff56980..8ea0029 100644 --- a/public/demo/libs/gemini-viewer.esm.min.js +++ b/public/demo/libs/gemini-viewer.esm.min.js @@ -1,7 +1,7 @@ /** - * @pattern-x/gemini-viewer-threejs v0.2.28 build Tue Mar 28 2023 + * @pattern-x/gemini-viewer-threejs v0.2.30 build Thu Mar 30 2023 * https://pattern-x.github.io/gemini-viewer-examples/ * Copyright 2023 gemini * @license UNLICENSED */ -var xNe=Object.create,a1=Object.defineProperty,INe=Object.defineProperties,_Ne=Object.getOwnPropertyDescriptor,SNe=Object.getOwnPropertyDescriptors,wNe=Object.getOwnPropertyNames,P7=Object.getOwnPropertySymbols,L7=Object.getPrototypeOf,F7=Object.prototype.hasOwnProperty,RNe=Object.prototype.propertyIsEnumerable,MNe=Reflect.get,jh=Math.pow,N7=(e,t,i)=>t in e?a1(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i,Br=(e,t)=>{for(var i in t||(t={}))F7.call(t,i)&&N7(e,i,t[i]);if(P7)for(var i of P7(t))RNe.call(t,i)&&N7(e,i,t[i]);return e},Cn=(e,t)=>INe(e,SNe(t)),t2=(e=>"undefined"!=typeof require?require:"undefined"!=typeof Proxy?new Proxy(e,{get:(e,t)=>("undefined"!=typeof require?require:e)[t]}):e)((function(e){if("undefined"!=typeof require)return require.apply(this,arguments);throw new Error('Dynamic require of "'+e+'" is not supported')})),DNe=(e,t)=>()=>(e&&(t=e(e=0)),t),z=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),QS=(e,t)=>{for(var i in t)a1(e,i,{get:t[i],enumerable:!0})},H7=(e,t,i,r)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let n of wNe(t))!F7.call(e,n)&&n!==i&&a1(e,n,{get:()=>t[n],enumerable:!(r=_Ne(t,n))||r.enumerable});return e},kn=(e,t,i)=>(i=null!=e?xNe(L7(e)):{},H7(!t&&e&&e.__esModule?i:a1(i,"default",{value:e,enumerable:!0}),e)),CNe=e=>H7(a1({},"__esModule",{value:!0}),e),U7=(e,t,i)=>MNe(L7(e),i,t),ht=(e,t,i)=>new Promise(((r,n)=>{var s=e=>{try{o(i.next(e))}catch(e){n(e)}},a=e=>{try{o(i.throw(e))}catch(e){n(e)}},o=e=>e.done?r(e.value):Promise.resolve(e.value).then(s,a);o((i=i.apply(e,t)).next())})),G7={};function ew(e){return(ew="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})(e)}function ONe(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function B7(e,t){for(var i=0;i1&&void 0!==arguments[1]?arguments[1]:{};ONe(this,s),this._locale=n(i),this._select=t(this._locale),this._type=FNe(r.type),this._nf=new e("en",r)}return PNe(s,[{key:"resolvedOptions",value:function(){var e=this._nf.resolvedOptions(),t=e.minimumIntegerDigits,r=e.minimumFractionDigits,n=e.maximumFractionDigits,s=e.minimumSignificantDigits,a=e.maximumSignificantDigits,o={locale:this._locale,minimumIntegerDigits:t,minimumFractionDigits:r,maximumFractionDigits:n,pluralCategories:i(this._locale,"ordinal"===this._type),type:this._type};return"number"==typeof s&&(o.minimumSignificantDigits=s,o.maximumSignificantDigits=a),o}},{key:"select",value:function(e){if(!(this instanceof s))throw new TypeError("select() called on incompatible ".concat(this));if("number"!=typeof e&&(e=Number(e)),!isFinite(e))return"other";var t=this._nf.format(Math.abs(e));return this._select(t,"ordinal"===this._type)}}],[{key:"supportedLocalesOf",value:function(e){return k7(e).filter(r)}}]),s}();return Object.defineProperty(s,"prototype",{writable:!1}),s}QS(G7,{default:()=>HNe});var NNe,k7,LNe,FNe,V7=DNe((()=>{NNe=function(e){return e.split("-").every((function(e){return/[a-z0-9]+/i.test(e)}))},k7=function(e){if(!e)return[];Array.isArray(e)||(e=[e]);for(var t={},i=0;i{"use strict";function i(e,t){for(var i=0;i="0"&&n<="9"&&++i}return ithis._maxSD?e.toPrecision(this._maxSD):t}return this._minFD>0?e.toFixed(this._minFD):0===this._maxFD?e.toFixed(0):String(e)}}]),e}();t.exports=r})),Q7=z(((e,t)=>{"use strict";var i=(V7(),CNe(G7)),r=W7();function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var s=n(i),a=n(r);function o(e){return(o="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})(e)}"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self&&self;function l(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var h,u,c,p,d,f,m,g,y={exports:{}};h=y,c=function(e,t){return t?"other":1==e?"one":"other"},p=function(e,t){return t?"other":0==e||1==e?"one":"other"},d=function(e,t){return t?"other":e>=0&&e<=1?"one":"other"},f=function(e,t){var i=!String(e).split(".")[1];return t?"other":1==e&&i?"one":"other"},g=function(e,t){return t?"other":1==e?"one":2==e?"two":"other"},u={_in:m=function(e,t){return"other"},af:c,ak:p,am:d,an:c,ar:function(e,t){var i=String(e).split("."),r=Number(i[0])==e&&i[0].slice(-2);return t?"other":0==e?"zero":1==e?"one":2==e?"two":r>=3&&r<=10?"few":r>=11&&r<=99?"many":"other"},ars:function(e,t){var i=String(e).split("."),r=Number(i[0])==e&&i[0].slice(-2);return t?"other":0==e?"zero":1==e?"one":2==e?"two":r>=3&&r<=10?"few":r>=11&&r<=99?"many":"other"},as:function(e,t){return t?1==e||5==e||7==e||8==e||9==e||10==e?"one":2==e||3==e?"two":4==e?"few":6==e?"many":"other":e>=0&&e<=1?"one":"other"},asa:c,ast:f,az:function(e,t){var i=String(e).split(".")[0],r=i.slice(-1),n=i.slice(-2),s=i.slice(-3);return t?1==r||2==r||5==r||7==r||8==r||20==n||50==n||70==n||80==n?"one":3==r||4==r||100==s||200==s||300==s||400==s||500==s||600==s||700==s||800==s||900==s?"few":0==i||6==r||40==n||60==n||90==n?"many":"other":1==e?"one":"other"},be:function(e,t){var i=String(e).split("."),r=Number(i[0])==e,n=r&&i[0].slice(-1),s=r&&i[0].slice(-2);return t?2!=n&&3!=n||12==s||13==s?"other":"few":1==n&&11!=s?"one":n>=2&&n<=4&&(s<12||s>14)?"few":r&&0==n||n>=5&&n<=9||s>=11&&s<=14?"many":"other"},bem:c,bez:c,bg:c,bho:p,bm:m,bn:function(e,t){return t?1==e||5==e||7==e||8==e||9==e||10==e?"one":2==e||3==e?"two":4==e?"few":6==e?"many":"other":e>=0&&e<=1?"one":"other"},bo:m,br:function(e,t){var i=String(e).split("."),r=Number(i[0])==e,n=r&&i[0].slice(-1),s=r&&i[0].slice(-2),a=r&&i[0].slice(-6);return t?"other":1==n&&11!=s&&71!=s&&91!=s?"one":2==n&&12!=s&&72!=s&&92!=s?"two":(3==n||4==n||9==n)&&(s<10||s>19)&&(s<70||s>79)&&(s<90||s>99)?"few":0!=e&&r&&0==a?"many":"other"},brx:c,bs:function(e,t){var i=String(e).split("."),r=i[0],n=i[1]||"",s=!i[1],a=r.slice(-1),o=r.slice(-2),l=n.slice(-1),h=n.slice(-2);return t?"other":s&&1==a&&11!=o||1==l&&11!=h?"one":s&&a>=2&&a<=4&&(o<12||o>14)||l>=2&&l<=4&&(h<12||h>14)?"few":"other"},ca:function(e,t){var i=!String(e).split(".")[1];return t?1==e||3==e?"one":2==e?"two":4==e?"few":"other":1==e&&i?"one":"other"},ce:c,ceb:function(e,t){var i=String(e).split("."),r=i[0],n=i[1]||"",s=!i[1],a=r.slice(-1),o=n.slice(-1);return t?"other":s&&(1==r||2==r||3==r)||s&&4!=a&&6!=a&&9!=a||!s&&4!=o&&6!=o&&9!=o?"one":"other"},cgg:c,chr:c,ckb:c,cs:function(e,t){var i=String(e).split("."),r=i[0],n=!i[1];return t?"other":1==e&&n?"one":r>=2&&r<=4&&n?"few":n?"other":"many"},cy:function(e,t){return t?0==e||7==e||8==e||9==e?"zero":1==e?"one":2==e?"two":3==e||4==e?"few":5==e||6==e?"many":"other":0==e?"zero":1==e?"one":2==e?"two":3==e?"few":6==e?"many":"other"},da:function(e,t){var i=String(e).split("."),r=i[0],n=Number(i[0])==e;return t||1!=e&&(n||0!=r&&1!=r)?"other":"one"},de:f,doi:d,dsb:function(e,t){var i=String(e).split("."),r=i[0],n=i[1]||"",s=!i[1],a=r.slice(-2),o=n.slice(-2);return t?"other":s&&1==a||1==o?"one":s&&2==a||2==o?"two":s&&(3==a||4==a)||3==o||4==o?"few":"other"},dv:c,dz:m,ee:c,el:c,en:function(e,t){var i=String(e).split("."),r=!i[1],n=Number(i[0])==e,s=n&&i[0].slice(-1),a=n&&i[0].slice(-2);return t?1==s&&11!=a?"one":2==s&&12!=a?"two":3==s&&13!=a?"few":"other":1==e&&r?"one":"other"},eo:c,es:c,et:f,eu:c,fa:d,ff:function(e,t){return t?"other":e>=0&&e<2?"one":"other"},fi:f,fil:function(e,t){var i=String(e).split("."),r=i[0],n=i[1]||"",s=!i[1],a=r.slice(-1),o=n.slice(-1);return t?1==e?"one":"other":s&&(1==r||2==r||3==r)||s&&4!=a&&6!=a&&9!=a||!s&&4!=o&&6!=o&&9!=o?"one":"other"},fo:c,fr:function(e,t){var i=String(e).split("."),r=i[0],n=!i[1],s=r.slice(-6);return t?1==e?"one":"other":e>=0&&e<2?"one":0!=r&&0==s&&n?"many":"other"},fur:c,fy:f,ga:function(e,t){var i=String(e).split("."),r=Number(i[0])==e;return t?1==e?"one":"other":1==e?"one":2==e?"two":r&&e>=3&&e<=6?"few":r&&e>=7&&e<=10?"many":"other"},gd:function(e,t){var i=String(e).split("."),r=Number(i[0])==e;return t?1==e||11==e?"one":2==e||12==e?"two":3==e||13==e?"few":"other":1==e||11==e?"one":2==e||12==e?"two":r&&e>=3&&e<=10||r&&e>=13&&e<=19?"few":"other"},gl:f,gsw:c,gu:function(e,t){return t?1==e?"one":2==e||3==e?"two":4==e?"few":6==e?"many":"other":e>=0&&e<=1?"one":"other"},guw:p,gv:function(e,t){var i=String(e).split("."),r=i[0],n=!i[1],s=r.slice(-1),a=r.slice(-2);return t?"other":n&&1==s?"one":n&&2==s?"two":!n||0!=a&&20!=a&&40!=a&&60!=a&&80!=a?n?"other":"many":"few"},ha:c,haw:c,he:function(e,t){var i=String(e).split("."),r=i[0],n=!i[1],s=Number(i[0])==e,a=s&&i[0].slice(-1);return t?"other":1==e&&n?"one":2==r&&n?"two":n&&(e<0||e>10)&&s&&0==a?"many":"other"},hi:function(e,t){return t?1==e?"one":2==e||3==e?"two":4==e?"few":6==e?"many":"other":e>=0&&e<=1?"one":"other"},hr:function(e,t){var i=String(e).split("."),r=i[0],n=i[1]||"",s=!i[1],a=r.slice(-1),o=r.slice(-2),l=n.slice(-1),h=n.slice(-2);return t?"other":s&&1==a&&11!=o||1==l&&11!=h?"one":s&&a>=2&&a<=4&&(o<12||o>14)||l>=2&&l<=4&&(h<12||h>14)?"few":"other"},hsb:function(e,t){var i=String(e).split("."),r=i[0],n=i[1]||"",s=!i[1],a=r.slice(-2),o=n.slice(-2);return t?"other":s&&1==a||1==o?"one":s&&2==a||2==o?"two":s&&(3==a||4==a)||3==o||4==o?"few":"other"},hu:function(e,t){return t?1==e||5==e?"one":"other":1==e?"one":"other"},hy:function(e,t){return t?1==e?"one":"other":e>=0&&e<2?"one":"other"},ia:f,id:m,ig:m,ii:m,io:f,is:function(e,t){var i=String(e).split("."),r=i[0],n=Number(i[0])==e,s=r.slice(-1),a=r.slice(-2);return t?"other":n&&1==s&&11!=a||!n?"one":"other"},it:function(e,t){var i=!String(e).split(".")[1];return t?11==e||8==e||80==e||800==e?"many":"other":1==e&&i?"one":"other"},iu:g,iw:function(e,t){var i=String(e).split("."),r=i[0],n=!i[1],s=Number(i[0])==e,a=s&&i[0].slice(-1);return t?"other":1==e&&n?"one":2==r&&n?"two":n&&(e<0||e>10)&&s&&0==a?"many":"other"},ja:m,jbo:m,jgo:c,ji:f,jmc:c,jv:m,jw:m,ka:function(e,t){var i=String(e).split(".")[0],r=i.slice(-2);return t?1==i?"one":0==i||r>=2&&r<=20||40==r||60==r||80==r?"many":"other":1==e?"one":"other"},kab:function(e,t){return t?"other":e>=0&&e<2?"one":"other"},kaj:c,kcg:c,kde:m,kea:m,kk:function(e,t){var i=String(e).split("."),r=Number(i[0])==e,n=r&&i[0].slice(-1);return t?6==n||9==n||r&&0==n&&0!=e?"many":"other":1==e?"one":"other"},kkj:c,kl:c,km:m,kn:d,ko:m,ks:c,ksb:c,ksh:function(e,t){return t?"other":0==e?"zero":1==e?"one":"other"},ku:c,kw:function(e,t){var i=String(e).split("."),r=Number(i[0])==e,n=r&&i[0].slice(-2),s=r&&i[0].slice(-3),a=r&&i[0].slice(-5),o=r&&i[0].slice(-6);return t?r&&e>=1&&e<=4||n>=1&&n<=4||n>=21&&n<=24||n>=41&&n<=44||n>=61&&n<=64||n>=81&&n<=84?"one":5==e||5==n?"many":"other":0==e?"zero":1==e?"one":2==n||22==n||42==n||62==n||82==n||r&&0==s&&(a>=1e3&&a<=2e4||4e4==a||6e4==a||8e4==a)||0!=e&&1e5==o?"two":3==n||23==n||43==n||63==n||83==n?"few":1==e||1!=n&&21!=n&&41!=n&&61!=n&&81!=n?"other":"many"},ky:c,lag:function(e,t){var i=String(e).split(".")[0];return t?"other":0==e?"zero":0!=i&&1!=i||0==e?"other":"one"},lb:c,lg:c,lij:function(e,t){var i=String(e).split("."),r=!i[1],n=Number(i[0])==e;return t?11==e||8==e||n&&e>=80&&e<=89||n&&e>=800&&e<=899?"many":"other":1==e&&r?"one":"other"},lkt:m,ln:p,lo:function(e,t){return t&&1==e?"one":"other"},lt:function(e,t){var i=String(e).split("."),r=i[1]||"",n=Number(i[0])==e,s=n&&i[0].slice(-1),a=n&&i[0].slice(-2);return t?"other":1==s&&(a<11||a>19)?"one":s>=2&&s<=9&&(a<11||a>19)?"few":0!=r?"many":"other"},lv:function(e,t){var i=String(e).split("."),r=i[1]||"",n=r.length,s=Number(i[0])==e,a=s&&i[0].slice(-1),o=s&&i[0].slice(-2),l=r.slice(-2),h=r.slice(-1);return t?"other":s&&0==a||o>=11&&o<=19||2==n&&l>=11&&l<=19?"zero":1==a&&11!=o||2==n&&1==h&&11!=l||2!=n&&1==h?"one":"other"},mas:c,mg:p,mgo:c,mk:function(e,t){var i=String(e).split("."),r=i[0],n=i[1]||"",s=!i[1],a=r.slice(-1),o=r.slice(-2),l=n.slice(-1),h=n.slice(-2);return t?1==a&&11!=o?"one":2==a&&12!=o?"two":7!=a&&8!=a||17==o||18==o?"other":"many":s&&1==a&&11!=o||1==l&&11!=h?"one":"other"},ml:c,mn:c,mo:function(e,t){var i=String(e).split("."),r=!i[1],n=Number(i[0])==e&&i[0].slice(-2);return t?1==e?"one":"other":1==e&&r?"one":!r||0==e||n>=2&&n<=19?"few":"other"},mr:function(e,t){return t?1==e?"one":2==e||3==e?"two":4==e?"few":"other":1==e?"one":"other"},ms:function(e,t){return t&&1==e?"one":"other"},mt:function(e,t){var i=String(e).split("."),r=Number(i[0])==e&&i[0].slice(-2);return t?"other":1==e?"one":0==e||r>=2&&r<=10?"few":r>=11&&r<=19?"many":"other"},my:m,nah:c,naq:g,nb:c,nd:c,ne:function(e,t){var i=String(e).split("."),r=Number(i[0])==e;return t?r&&e>=1&&e<=4?"one":"other":1==e?"one":"other"},nl:f,nn:c,nnh:c,no:c,nqo:m,nr:c,nso:p,ny:c,nyn:c,om:c,or:function(e,t){var i=String(e).split("."),r=Number(i[0])==e;return t?1==e||5==e||r&&e>=7&&e<=9?"one":2==e||3==e?"two":4==e?"few":6==e?"many":"other":1==e?"one":"other"},os:c,osa:m,pa:p,pap:c,pcm:d,pl:function(e,t){var i=String(e).split("."),r=i[0],n=!i[1],s=r.slice(-1),a=r.slice(-2);return t?"other":1==e&&n?"one":n&&s>=2&&s<=4&&(a<12||a>14)?"few":n&&1!=r&&(0==s||1==s)||n&&s>=5&&s<=9||n&&a>=12&&a<=14?"many":"other"},prg:function(e,t){var i=String(e).split("."),r=i[1]||"",n=r.length,s=Number(i[0])==e,a=s&&i[0].slice(-1),o=s&&i[0].slice(-2),l=r.slice(-2),h=r.slice(-1);return t?"other":s&&0==a||o>=11&&o<=19||2==n&&l>=11&&l<=19?"zero":1==a&&11!=o||2==n&&1==h&&11!=l||2!=n&&1==h?"one":"other"},ps:c,pt:function(e,t){var i=String(e).split(".")[0];return t?"other":0==i||1==i?"one":"other"},pt_PT:f,rm:c,ro:function(e,t){var i=String(e).split("."),r=!i[1],n=Number(i[0])==e&&i[0].slice(-2);return t?1==e?"one":"other":1==e&&r?"one":!r||0==e||n>=2&&n<=19?"few":"other"},rof:c,root:m,ru:function(e,t){var i=String(e).split("."),r=i[0],n=!i[1],s=r.slice(-1),a=r.slice(-2);return t?"other":n&&1==s&&11!=a?"one":n&&s>=2&&s<=4&&(a<12||a>14)?"few":n&&0==s||n&&s>=5&&s<=9||n&&a>=11&&a<=14?"many":"other"},rwk:c,sah:m,saq:c,sat:g,sc:function(e,t){var i=!String(e).split(".")[1];return t?11==e||8==e||80==e||800==e?"many":"other":1==e&&i?"one":"other"},scn:function(e,t){var i=!String(e).split(".")[1];return t?11==e||8==e||80==e||800==e?"many":"other":1==e&&i?"one":"other"},sd:c,sdh:c,se:g,seh:c,ses:m,sg:m,sh:function(e,t){var i=String(e).split("."),r=i[0],n=i[1]||"",s=!i[1],a=r.slice(-1),o=r.slice(-2),l=n.slice(-1),h=n.slice(-2);return t?"other":s&&1==a&&11!=o||1==l&&11!=h?"one":s&&a>=2&&a<=4&&(o<12||o>14)||l>=2&&l<=4&&(h<12||h>14)?"few":"other"},shi:function(e,t){var i=String(e).split("."),r=Number(i[0])==e;return t?"other":e>=0&&e<=1?"one":r&&e>=2&&e<=10?"few":"other"},si:function(e,t){var i=String(e).split("."),r=i[0],n=i[1]||"";return t?"other":0==e||1==e||0==r&&1==n?"one":"other"},sk:function(e,t){var i=String(e).split("."),r=i[0],n=!i[1];return t?"other":1==e&&n?"one":r>=2&&r<=4&&n?"few":n?"other":"many"},sl:function(e,t){var i=String(e).split("."),r=i[0],n=!i[1],s=r.slice(-2);return t?"other":n&&1==s?"one":n&&2==s?"two":n&&(3==s||4==s)||!n?"few":"other"},sma:g,smi:g,smj:g,smn:g,sms:g,sn:c,so:c,sq:function(e,t){var i=String(e).split("."),r=Number(i[0])==e,n=r&&i[0].slice(-1),s=r&&i[0].slice(-2);return t?1==e?"one":4==n&&14!=s?"many":"other":1==e?"one":"other"},sr:function(e,t){var i=String(e).split("."),r=i[0],n=i[1]||"",s=!i[1],a=r.slice(-1),o=r.slice(-2),l=n.slice(-1),h=n.slice(-2);return t?"other":s&&1==a&&11!=o||1==l&&11!=h?"one":s&&a>=2&&a<=4&&(o<12||o>14)||l>=2&&l<=4&&(h<12||h>14)?"few":"other"},ss:c,ssy:c,st:c,su:m,sv:function(e,t){var i=String(e).split("."),r=!i[1],n=Number(i[0])==e,s=n&&i[0].slice(-1),a=n&&i[0].slice(-2);return t?1!=s&&2!=s||11==a||12==a?"other":"one":1==e&&r?"one":"other"},sw:f,syr:c,ta:c,te:c,teo:c,th:m,ti:p,tig:c,tk:function(e,t){var i=String(e).split("."),r=Number(i[0])==e&&i[0].slice(-1);return t?6==r||9==r||10==e?"few":"other":1==e?"one":"other"},tl:function(e,t){var i=String(e).split("."),r=i[0],n=i[1]||"",s=!i[1],a=r.slice(-1),o=n.slice(-1);return t?1==e?"one":"other":s&&(1==r||2==r||3==r)||s&&4!=a&&6!=a&&9!=a||!s&&4!=o&&6!=o&&9!=o?"one":"other"},tn:c,to:m,tr:c,ts:c,tzm:function(e,t){var i=String(e).split("."),r=Number(i[0])==e;return t?"other":0==e||1==e||r&&e>=11&&e<=99?"one":"other"},ug:c,uk:function(e,t){var i=String(e).split("."),r=i[0],n=!i[1],s=Number(i[0])==e,a=s&&i[0].slice(-1),o=s&&i[0].slice(-2),l=r.slice(-1),h=r.slice(-2);return t?3==a&&13!=o?"few":"other":n&&1==l&&11!=h?"one":n&&l>=2&&l<=4&&(h<12||h>14)?"few":n&&0==l||n&&l>=5&&l<=9||n&&h>=11&&h<=14?"many":"other"},ur:f,uz:c,ve:c,vi:function(e,t){return t&&1==e?"one":"other"},vo:c,vun:c,wa:p,wae:c,wo:m,xh:c,xog:c,yi:f,yo:m,yue:m,zh:m,zu:d},Object.defineProperty(u,"__esModule",{value:!0}),h.exports=u;var v=l(y.exports),T=Object.freeze(Object.assign(Object.create(null),y.exports,{default:v})),x={exports:{}};!function(e,t){var i,r="zero",n="one",s="two",a="few",o="many",l="other",h={cardinal:[n,l],ordinal:[l]},u={cardinal:[l],ordinal:[l]},c={cardinal:[n,a,o,l],ordinal:[l]},p={cardinal:[n,l],ordinal:[n,l]},d={cardinal:[n,s,l],ordinal:[l]};i={_in:u,af:h,ak:h,am:h,an:h,ar:{cardinal:[r,n,s,a,o,l],ordinal:[l]},ars:{cardinal:[r,n,s,a,o,l],ordinal:[l]},as:{cardinal:[n,l],ordinal:[n,s,a,o,l]},asa:h,ast:h,az:{cardinal:[n,l],ordinal:[n,a,o,l]},be:{cardinal:[n,a,o,l],ordinal:[a,l]},bem:h,bez:h,bg:h,bho:h,bm:u,bn:{cardinal:[n,l],ordinal:[n,s,a,o,l]},bo:u,br:{cardinal:[n,s,a,o,l],ordinal:[l]},brx:h,bs:{cardinal:[n,a,l],ordinal:[l]},ca:{cardinal:[n,l],ordinal:[n,s,a,l]},ce:h,ceb:h,cgg:h,chr:h,ckb:h,cs:c,cy:{cardinal:[r,n,s,a,o,l],ordinal:[r,n,s,a,o,l]},da:h,de:h,doi:h,dsb:{cardinal:[n,s,a,l],ordinal:[l]},dv:h,dz:u,ee:h,el:h,en:{cardinal:[n,l],ordinal:[n,s,a,l]},eo:h,es:h,et:h,eu:h,fa:h,ff:h,fi:h,fil:p,fo:h,fr:{cardinal:[n,o,l],ordinal:[n,l]},fur:h,fy:h,ga:{cardinal:[n,s,a,o,l],ordinal:[n,l]},gd:{cardinal:[n,s,a,l],ordinal:[n,s,a,l]},gl:h,gsw:h,gu:{cardinal:[n,l],ordinal:[n,s,a,o,l]},guw:h,gv:{cardinal:[n,s,a,o,l],ordinal:[l]},ha:h,haw:h,he:{cardinal:[n,s,o,l],ordinal:[l]},hi:{cardinal:[n,l],ordinal:[n,s,a,o,l]},hr:{cardinal:[n,a,l],ordinal:[l]},hsb:{cardinal:[n,s,a,l],ordinal:[l]},hu:p,hy:p,ia:h,id:u,ig:u,ii:u,io:h,is:h,it:{cardinal:[n,l],ordinal:[o,l]},iu:d,iw:{cardinal:[n,s,o,l],ordinal:[l]},ja:u,jbo:u,jgo:h,ji:h,jmc:h,jv:u,jw:u,ka:{cardinal:[n,l],ordinal:[n,o,l]},kab:h,kaj:h,kcg:h,kde:u,kea:u,kk:{cardinal:[n,l],ordinal:[o,l]},kkj:h,kl:h,km:u,kn:h,ko:u,ks:h,ksb:h,ksh:{cardinal:[r,n,l],ordinal:[l]},ku:h,kw:{cardinal:[r,n,s,a,o,l],ordinal:[n,o,l]},ky:h,lag:{cardinal:[r,n,l],ordinal:[l]},lb:h,lg:h,lij:{cardinal:[n,l],ordinal:[o,l]},lkt:u,ln:h,lo:{cardinal:[l],ordinal:[n,l]},lt:c,lv:{cardinal:[r,n,l],ordinal:[l]},mas:h,mg:h,mgo:h,mk:{cardinal:[n,l],ordinal:[n,s,o,l]},ml:h,mn:h,mo:{cardinal:[n,a,l],ordinal:[n,l]},mr:{cardinal:[n,l],ordinal:[n,s,a,l]},ms:{cardinal:[l],ordinal:[n,l]},mt:c,my:u,nah:h,naq:d,nb:h,nd:h,ne:p,nl:h,nn:h,nnh:h,no:h,nqo:u,nr:h,nso:h,ny:h,nyn:h,om:h,or:{cardinal:[n,l],ordinal:[n,s,a,o,l]},os:h,osa:u,pa:h,pap:h,pcm:h,pl:c,prg:{cardinal:[r,n,l],ordinal:[l]},ps:h,pt:h,pt_PT:h,rm:h,ro:{cardinal:[n,a,l],ordinal:[n,l]},rof:h,root:u,ru:c,rwk:h,sah:u,saq:h,sat:d,sc:{cardinal:[n,l],ordinal:[o,l]},scn:{cardinal:[n,l],ordinal:[o,l]},sd:h,sdh:h,se:d,seh:h,ses:u,sg:u,sh:{cardinal:[n,a,l],ordinal:[l]},shi:{cardinal:[n,a,l],ordinal:[l]},si:h,sk:c,sl:{cardinal:[n,s,a,l],ordinal:[l]},sma:d,smi:d,smj:d,smn:d,sms:d,sn:h,so:h,sq:{cardinal:[n,l],ordinal:[n,o,l]},sr:{cardinal:[n,a,l],ordinal:[l]},ss:h,ssy:h,st:h,su:u,sv:p,sw:h,syr:h,ta:h,te:h,teo:h,th:u,ti:h,tig:h,tk:{cardinal:[n,l],ordinal:[a,l]},tl:p,tn:h,to:u,tr:h,ts:h,tzm:h,ug:h,uk:{cardinal:[n,a,o,l],ordinal:[a,l]},ur:h,uz:h,ve:h,vi:{cardinal:[l],ordinal:[n,l]},vo:h,vun:h,wa:h,wae:h,wo:u,xh:h,xog:h,yi:h,yo:u,yue:u,zh:u,zu:h},Object.defineProperty(i,"__esModule",{value:!0}),e.exports=i}(x);var b=l(x.exports),_=Object.freeze(Object.assign(Object.create(null),x.exports,{default:b})),E=v||T,w=b||_,S="object"===("undefined"==typeof Intl?"undefined":o(Intl))&&Intl.NumberFormat||a.default,I=function(e){return"in"===e?"_in":"pt-PT"===e?"pt_PT":e},M=s.default(S,(function(e){return E[I(e)]}),(function(e,t){return w[I(e)][t?"ordinal":"cardinal"]}));t.exports=M})),r9=z((e=>{"use strict";var t=Q7();var i,r,n=(i=t)&&"object"==typeof i&&"default"in i?i:{default:i};"undefined"==typeof Intl?("undefined"!=typeof global?global.Intl={PluralRules:n.default}:"undefined"!=typeof window?window.Intl={PluralRules:n.default}:e.Intl={PluralRules:n.default},n.default.polyfill=!0):Intl.PluralRules?(r=["en","es","ru","zh"],Intl.PluralRules.supportedLocalesOf(r).length{var i=function(e){return e&&e.Math==Math&&e};t.exports=i("object"==typeof globalThis&&globalThis)||i("object"==typeof window&&window)||i("object"==typeof self&&self)||i("object"==typeof global&&global)||function(){return this}()||Function("return this")()})),Dt=z(((e,t)=>{t.exports=function(e){try{return!!e()}catch(e){return!0}}})),Ar=z(((e,t)=>{var i=Dt();t.exports=!i((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))})),sv=z(((e,t)=>{var i=Dt();t.exports=!i((function(){var e=function(){}.bind();return"function"!=typeof e||e.hasOwnProperty("prototype")}))})),si=z(((e,t)=>{var i=sv(),r=Function.prototype.call;t.exports=i?r.bind(r):function(){return r.apply(r,arguments)}})),o1=z((e=>{"use strict";var t={}.propertyIsEnumerable,i=Object.getOwnPropertyDescriptor,r=i&&!t.call({1:2},1);e.f=r?function(e){var t=i(this,e);return!!t&&t.enumerable}:t})),Mo=z(((e,t)=>{t.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}})),Bt=z(((e,t)=>{var i=sv(),r=Function.prototype,n=r.call,s=i&&r.bind.bind(n,n);t.exports=i?s:function(e){return function(){return n.apply(e,arguments)}}})),ma=z(((e,t)=>{var i=Bt(),r=i({}.toString),n=i("".slice);t.exports=function(e){return n(r(e),8,-1)}})),wm=z(((e,t)=>{var i=Bt(),r=Dt(),n=ma(),s=Object,a=i("".split);t.exports=r((function(){return!s("z").propertyIsEnumerable(0)}))?function(e){return"String"==n(e)?a(e,""):s(e)}:s})),ga=z(((e,t)=>{t.exports=function(e){return null==e}})),cs=z(((e,t)=>{var i=ga(),r=TypeError;t.exports=function(e){if(i(e))throw r("Can't call method on "+e);return e}})),va=z(((e,t)=>{var i=wm(),r=cs();t.exports=function(e){return i(r(e))}})),l2=z(((e,t)=>{var i="object"==typeof document&&document.all,r=void 0===i&&void 0!==i;t.exports={all:i,IS_HTMLDDA:r}})),Ei=z(((e,t)=>{var i=l2(),r=i.all;t.exports=i.IS_HTMLDDA?function(e){return"function"==typeof e||e===r}:function(e){return"function"==typeof e}})),ai=z(((e,t)=>{var i=Ei(),r=l2(),n=r.all;t.exports=r.IS_HTMLDDA?function(e){return"object"==typeof e?null!==e:i(e)||e===n}:function(e){return"object"==typeof e?null!==e:i(e)}})),In=z(((e,t)=>{var i=rr(),r=Ei(),n=function(e){return r(e)?e:void 0};t.exports=function(e,t){return arguments.length<2?n(i[e]):i[e]&&i[e][t]}})),Do=z(((e,t)=>{var i=Bt();t.exports=i({}.isPrototypeOf)})),bu=z(((e,t)=>{var i=In();t.exports=i("navigator","userAgent")||""})),xu=z(((e,t)=>{var i,r,n=rr(),s=bu(),a=n.process,o=n.Deno,l=a&&a.versions||o&&o.version,h=l&&l.v8;h&&(r=(i=h.split("."))[0]>0&&i[0]<4?1:+(i[0]+i[1])),!r&&s&&((!(i=s.match(/Edge\/(\d+)/))||i[1]>=74)&&((i=s.match(/Chrome\/(\d+)/))&&(r=+i[1]))),t.exports=r})),Rm=z(((e,t)=>{var i=xu(),r=Dt();t.exports=!!Object.getOwnPropertySymbols&&!r((function(){var e=Symbol();return!String(e)||!(Object(e)instanceof Symbol)||!Symbol.sham&&i&&i<41}))})),h2=z(((e,t)=>{var i=Rm();t.exports=i&&!Symbol.sham&&"symbol"==typeof Symbol.iterator})),Dd=z(((e,t)=>{var i=In(),r=Ei(),n=Do(),s=h2(),a=Object;t.exports=s?function(e){return"symbol"==typeof e}:function(e){var t=i("Symbol");return r(t)&&n(t.prototype,a(e))}})),Cd=z(((e,t)=>{var i=String;t.exports=function(e){try{return i(e)}catch(e){return"Object"}}})),ms=z(((e,t)=>{var i=Ei(),r=Cd(),n=TypeError;t.exports=function(e){if(i(e))return e;throw n(r(e)+" is not a function")}})),Iu=z(((e,t)=>{var i=ms(),r=ga();t.exports=function(e,t){var n=e[t];return r(n)?void 0:i(n)}})),m2=z(((e,t)=>{var i=si(),r=Ei(),n=ai(),s=TypeError;t.exports=function(e,t){var a,o;if("string"===t&&r(a=e.toString)&&!n(o=i(a,e))||r(a=e.valueOf)&&!n(o=i(a,e))||"string"!==t&&r(a=e.toString)&&!n(o=i(a,e)))return o;throw s("Can't convert object to primitive value")}})),Gn=z(((e,t)=>{t.exports=!1})),sw=z(((e,t)=>{var i=rr(),r=Object.defineProperty;t.exports=function(e,t){try{r(i,e,{value:t,configurable:!0,writable:!0})}catch(r){i[e]=t}return t}})),aw=z(((e,t)=>{var i=rr(),r=sw(),n="__core-js_shared__",s=i[n]||r(n,{});t.exports=s})),Mm=z(((e,t)=>{var i=Gn(),r=aw();(t.exports=function(e,t){return r[e]||(r[e]=void 0!==t?t:{})})("versions",[]).push({version:"3.27.1",mode:i?"pure":"global",copyright:"© 2014-2022 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.27.1/LICENSE",source:"https://github.com/zloirock/core-js"})})),Hi=z(((e,t)=>{var i=cs(),r=Object;t.exports=function(e){return r(i(e))}})),Si=z(((e,t)=>{var i=Bt(),r=Hi(),n=i({}.hasOwnProperty);t.exports=Object.hasOwn||function(e,t){return n(r(e),t)}})),Dm=z(((e,t)=>{var i=Bt(),r=0,n=Math.random(),s=i(1..toString);t.exports=function(e){return"Symbol("+(void 0===e?"":e)+")_"+s(++r+n,36)}})),fi=z(((e,t)=>{var i=rr(),r=Mm(),n=Si(),s=Dm(),a=Rm(),o=h2(),l=r("wks"),h=i.Symbol,u=h&&h.for,c=o?h:h&&h.withoutSetter||s;t.exports=function(e){if(!n(l,e)||!a&&"string"!=typeof l[e]){var t="Symbol."+e;a&&n(h,e)?l[e]=h[e]:l[e]=o&&u?u(t):c(t)}return l[e]}})),l1=z(((e,t)=>{var i=si(),r=ai(),n=Dd(),s=Iu(),a=m2(),o=fi(),l=TypeError,h=o("toPrimitive");t.exports=function(e,t){if(!r(e)||n(e))return e;var o,u=s(e,h);if(u){if(void 0===t&&(t="default"),o=i(u,e,t),!r(o)||n(o))return o;throw l("Can't convert object to primitive value")}return void 0===t&&(t="number"),a(e,t)}})),Wh=z(((e,t)=>{var i=l1(),r=Dd();t.exports=function(e){var t=i(e,"string");return r(t)?t:t+""}})),c1=z(((e,t)=>{var i=rr(),r=ai(),n=i.document,s=r(n)&&r(n.createElement);t.exports=function(e){return s?n.createElement(e):{}}})),v2=z(((e,t)=>{var i=Ar(),r=Dt(),n=c1();t.exports=!i&&!r((function(){return 7!=Object.defineProperty(n("div"),"a",{get:function(){return 7}}).a}))})),Us=z((e=>{var t=Ar(),i=si(),r=o1(),n=Mo(),s=va(),a=Wh(),o=Si(),l=v2(),h=Object.getOwnPropertyDescriptor;e.f=t?h:function(e,t){if(e=s(e),t=a(t),l)try{return h(e,t)}catch(e){}if(o(e,t))return n(!i(r.f,e,t),e[t])}})),y2=z(((e,t)=>{var i=Ar(),r=Dt();t.exports=i&&r((function(){return 42!=Object.defineProperty((function(){}),"prototype",{value:42,writable:!1}).prototype}))})),Yr=z(((e,t)=>{var i=ai(),r=String,n=TypeError;t.exports=function(e){if(i(e))return e;throw n(r(e)+" is not an object")}})),ji=z((e=>{var t=Ar(),i=v2(),r=y2(),n=Yr(),s=Wh(),a=TypeError,o=Object.defineProperty,l=Object.getOwnPropertyDescriptor,h="enumerable",u="configurable",c="writable";e.f=t?r?function(e,t,i){if(n(e),t=s(t),n(i),"function"==typeof e&&"prototype"===t&&"value"in i&&c in i&&!i[c]){var r=l(e,t);r&&r[c]&&(e[t]=i.value,i={configurable:u in i?i[u]:r[u],enumerable:h in i?i[h]:r[h],writable:!1})}return o(e,t,i)}:o:function(e,t,r){if(n(e),t=s(t),n(r),i)try{return o(e,t,r)}catch(e){}if("get"in r||"set"in r)throw a("Accessors not supported");return"value"in r&&(e[t]=r.value),e}})),ya=z(((e,t)=>{var i=Ar(),r=ji(),n=Mo();t.exports=i?function(e,t,i){return r.f(e,t,n(1,i))}:function(e,t,i){return e[t]=i,e}})),Am=z(((e,t)=>{var i=Ar(),r=Si(),n=Function.prototype,s=i&&Object.getOwnPropertyDescriptor,a=r(n,"name"),o=a&&"something"===function(){}.name,l=a&&(!i||i&&s(n,"name").configurable);t.exports={EXISTS:a,PROPER:o,CONFIGURABLE:l}})),lw=z(((e,t)=>{var i=Bt(),r=Ei(),n=aw(),s=i(Function.toString);r(n.inspectSource)||(n.inspectSource=function(e){return s(e)}),t.exports=n.inspectSource})),w2=z(((e,t)=>{var i=rr(),r=Ei(),n=i.WeakMap;t.exports=r(n)&&/native code/.test(String(n))})),u1=z(((e,t)=>{var i=Mm(),r=Dm(),n=i("keys");t.exports=function(e){return n[e]||(n[e]=r(e))}})),ov=z(((e,t)=>{t.exports={}})),us=z(((e,t)=>{var i,r,n,s,a,o=w2(),l=rr(),h=ai(),u=ya(),c=Si(),p=aw(),d=u1(),f=ov(),m="Object already initialized",g=l.TypeError,y=l.WeakMap;o||p.state?((s=p.state||(p.state=new y)).get=s.get,s.has=s.has,s.set=s.set,i=function(e,t){if(s.has(e))throw g(m);return t.facade=e,s.set(e,t),t},r=function(e){return s.get(e)||{}},n=function(e){return s.has(e)}):(f[a=d("state")]=!0,i=function(e,t){if(c(e,a))throw g(m);return t.facade=e,u(e,a,t),t},r=function(e){return c(e,a)?e[a]:{}},n=function(e){return c(e,a)}),t.exports={set:i,get:r,has:n,enforce:function(e){return n(e)?r(e):i(e,{})},getterFor:function(e){return function(t){var i;if(!h(t)||(i=r(t)).type!==e)throw g("Incompatible receiver, "+e+" required");return i}}}})),dw=z(((e,t)=>{var i=Dt(),r=Ei(),n=Si(),s=Ar(),a=Am().CONFIGURABLE,o=lw(),l=us(),h=l.enforce,u=l.get,c=Object.defineProperty,p=s&&!i((function(){return 8!==c((function(){}),"length",{value:8}).length})),d=String(String).split("String"),f=t.exports=function(e,t,i){"Symbol("===String(t).slice(0,7)&&(t="["+String(t).replace(/^Symbol\(([^)]*)\)/,"$1")+"]"),i&&i.getter&&(t="get "+t),i&&i.setter&&(t="set "+t),(!n(e,"name")||a&&e.name!==t)&&(s?c(e,"name",{value:t,configurable:!0}):e.name=t),p&&i&&n(i,"arity")&&e.length!==i.arity&&c(e,"length",{value:i.arity});try{i&&n(i,"constructor")&&i.constructor?s&&c(e,"prototype",{writable:!1}):e.prototype&&(e.prototype=void 0)}catch(e){}var r=h(e);return n(r,"source")||(r.source=d.join("string"==typeof t?t:"")),e};Function.prototype.toString=f((function(){return r(this)&&u(this).source||o(this)}),"toString")})),An=z(((e,t)=>{var i=Ei(),r=ji(),n=dw(),s=sw();t.exports=function(e,t,a,o){o||(o={});var l=o.enumerable,h=void 0!==o.name?o.name:t;if(i(a)&&n(a,h,o),o.global)l?e[t]=a:s(t,a);else{try{o.unsafe?e[t]&&(l=!0):delete e[t]}catch(e){}l?e[t]=a:r.f(e,t,{value:a,enumerable:!1,configurable:!o.nonConfigurable,writable:!o.nonWritable})}return e}})),A2=z(((e,t)=>{var i=Math.ceil,r=Math.floor;t.exports=Math.trunc||function(e){var t=+e;return(t>0?r:i)(t)}})),gs=z(((e,t)=>{var i=A2();t.exports=function(e){var t=+e;return t!=t||0===t?0:i(t)}})),_u=z(((e,t)=>{var i=gs(),r=Math.max,n=Math.min;t.exports=function(e,t){var s=i(e);return s<0?r(s+t,0):n(s,t)}})),qa=z(((e,t)=>{var i=gs(),r=Math.min;t.exports=function(e){return e>0?r(i(e),9007199254740991):0}})),cn=z(((e,t)=>{var i=qa();t.exports=function(e){return i(e.length)}})),lv=z(((e,t)=>{var i=va(),r=_u(),n=cn(),s=function(e){return function(t,s,a){var o,l=i(t),h=n(l),u=r(a,h);if(e&&s!=s){for(;h>u;)if((o=l[u++])!=o)return!0}else for(;h>u;u++)if((e||u in l)&&l[u]===s)return e||u||0;return!e&&-1}};t.exports={includes:s(!0),indexOf:s(!1)}})),P2=z(((e,t)=>{var i=Bt(),r=Si(),n=va(),s=lv().indexOf,a=ov(),o=i([].push);t.exports=function(e,t){var i,l=n(e),h=0,u=[];for(i in l)!r(a,i)&&r(l,i)&&o(u,i);for(;t.length>h;)r(l,i=t[h++])&&(~s(u,i)||o(u,i));return u}})),fw=z(((e,t)=>{t.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]})),qh=z((e=>{var t=P2(),i=fw().concat("length","prototype");e.f=Object.getOwnPropertyNames||function(e){return t(e,i)}})),p1=z((e=>{e.f=Object.getOwnPropertySymbols})),mw=z(((e,t)=>{var i=In(),r=Bt(),n=qh(),s=p1(),a=Yr(),o=r([].concat);t.exports=i("Reflect","ownKeys")||function(e){var t=n.f(a(e)),i=s.f;return i?o(t,i(e)):t}})),d1=z(((e,t)=>{var i=Si(),r=mw(),n=Us(),s=ji();t.exports=function(e,t,a){for(var o=r(t),l=s.f,h=n.f,u=0;u{var i=Dt(),r=Ei(),n=/#|\.prototype\./,s=function(e,t){var n=o[a(e)];return n==h||n!=l&&(r(t)?i(t):!!t)},a=s.normalize=function(e){return String(e).replace(n,".").toLowerCase()},o=s.data={},l=s.NATIVE="N",h=s.POLYFILL="P";t.exports=s})),He=z(((e,t)=>{var i=rr(),r=Us().f,n=ya(),s=An(),a=sw(),o=d1(),l=cv();t.exports=function(e,t){var h,u,c,p,d,f=e.target,m=e.global,g=e.stat;if(h=m?i:g?i[f]||a(f,{}):(i[f]||{}).prototype)for(u in t){if(p=t[u],e.dontCallGetSet?c=(d=r(h,u))&&d.value:c=h[u],!l(m?u:f+(g?".":"#")+u,e.forced)&&void 0!==c){if(typeof p==typeof c)continue;o(p,c)}(e.sham||c&&c.sham)&&n(p,"sham",!0),s(h,u,p,e)}}})),gw=z(((e,t)=>{var i={};i[fi()("toStringTag")]="z",t.exports="[object z]"===String(i)})),mc=z(((e,t)=>{var i=gw(),r=Ei(),n=ma(),s=fi()("toStringTag"),a=Object,o="Arguments"==n(function(){return arguments}());t.exports=i?n:function(e){var t,i,l;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:o?n(t):"Object"==(l=n(t))&&r(t.callee)?"Arguments":l}})),mi=z(((e,t)=>{var i=mc(),r=String;t.exports=function(e){if("Symbol"===i(e))throw TypeError("Cannot convert a Symbol value to a string");return r(e)}})),uv=z(((e,t)=>{var i=P2(),r=fw();t.exports=Object.keys||function(e){return i(e,r)}})),yw=z((e=>{var t=Ar(),i=y2(),r=ji(),n=Yr(),s=va(),a=uv();e.f=t&&!i?Object.defineProperties:function(e,t){n(e);for(var i,o=s(t),l=a(t),h=l.length,u=0;h>u;)r.f(e,i=l[u++],o[i]);return e}})),L2=z(((e,t)=>{var i=In();t.exports=i("document","documentElement")})),Ya=z(((e,t)=>{var i,r=Yr(),n=yw(),s=fw(),a=ov(),o=L2(),l=c1(),h=u1(),u="prototype",c="script",p=h("IE_PROTO"),d=function(){},f=function(e){return"<"+c+">"+e+""},m=function(e){e.write(f("")),e.close();var t=e.parentWindow.Object;return e=null,t},g=function(){try{i=new ActiveXObject("htmlfile")}catch(e){}g="undefined"!=typeof document?document.domain&&i?m(i):function(){var e,t=l("iframe"),i="java"+c+":";return t.style.display="none",o.appendChild(t),t.src=String(i),(e=t.contentWindow.document).open(),e.write(f("document.F=Object")),e.close(),e.F}():m(i);for(var e=s.length;e--;)delete g[u][s[e]];return g()};a[p]=!0,t.exports=Object.create||function(e,t){var i;return null!==e?(d[u]=r(e),i=new d,d[u]=null,i[p]=e):i=g(),void 0===t?i:n.f(i,t)}})),Su=z(((e,t)=>{"use strict";var i=Wh(),r=ji(),n=Mo();t.exports=function(e,t,s){var a=i(t);a in e?r.f(e,a,n(0,s)):e[a]=s}})),hv=z(((e,t)=>{var i=_u(),r=cn(),n=Su(),s=Array,a=Math.max;t.exports=function(e,t,o){for(var l=r(e),h=i(t,l),u=i(void 0===o?l:o,l),c=s(a(u-h,0)),p=0;h{var i=ma(),r=va(),n=qh().f,s=hv(),a="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];t.exports.f=function(e){return a&&"Window"==i(e)?function(e){try{return n(e)}catch(e){return s(a)}}(e):n(r(e))}})),B2=z((e=>{var t=fi();e.f=t})),xw=z(((e,t)=>{var i=rr();t.exports=i})),Ta=z(((e,t)=>{var i=xw(),r=Si(),n=B2(),s=ji().f;t.exports=function(e){var t=i.Symbol||(i.Symbol={});r(t,e)||s(t,e,{value:n.f(e)})}})),k2=z(((e,t)=>{var i=si(),r=In(),n=fi(),s=An();t.exports=function(){var e=r("Symbol"),t=e&&e.prototype,a=t&&t.valueOf,o=n("toPrimitive");t&&!t[o]&&s(t,o,(function(e){return i(a,this)}),{arity:1})}})),Xa=z(((e,t)=>{var i=ji().f,r=Si(),n=fi()("toStringTag");t.exports=function(e,t,s){e&&!s&&(e=e.prototype),e&&!r(e,n)&&i(e,n,{configurable:!0,value:t})}})),Yh=z(((e,t)=>{var i=ma(),r=Bt();t.exports=function(e){if("Function"===i(e))return r(e)}})),pl=z(((e,t)=>{var i=Yh(),r=ms(),n=sv(),s=i(i.bind);t.exports=function(e,t){return r(e),void 0===t?e:n?s(e,t):function(){return e.apply(t,arguments)}}})),Xh=z(((e,t)=>{var i=ma();t.exports=Array.isArray||function(e){return"Array"==i(e)}})),Pm=z(((e,t)=>{var i=Bt(),r=Dt(),n=Ei(),s=mc(),a=In(),o=lw(),l=function(){},h=[],u=a("Reflect","construct"),c=/^\s*(?:class|function)\b/,p=i(c.exec),d=!c.exec(l),f=function(e){if(!n(e))return!1;try{return u(l,h,e),!0}catch(e){return!1}},m=function(e){if(!n(e))return!1;switch(s(e)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return d||!!p(c,o(e))}catch(e){return!0}};m.sham=!0,t.exports=!u||r((function(){var e;return f(f.call)||!f(Object)||!f((function(){e=!0}))||e}))?m:f})),Lj=z(((e,t)=>{var i=Xh(),r=Pm(),n=ai(),s=fi()("species"),a=Array;t.exports=function(e){var t;return i(e)&&(t=e.constructor,r(t)&&(t===a||i(t.prototype))?t=void 0:n(t)&&(null===(t=t[s])&&(t=void 0))),void 0===t?a:t}})),pv=z(((e,t)=>{var i=Lj();t.exports=function(e,t){return new(i(e))(0===t?0:t)}})),Rs=z(((e,t)=>{var i=pl(),r=Bt(),n=wm(),s=Hi(),a=cn(),o=pv(),l=r([].push),h=function(e){var t=1==e,r=2==e,h=3==e,u=4==e,c=6==e,p=7==e,d=5==e||c;return function(f,m,g,y){for(var v,T,x=s(f),b=n(x),_=i(m,g),E=a(b),w=0,S=y||o,I=t?S(f,E):r||p?S(f,0):void 0;E>w;w++)if((d||w in b)&&(T=_(v=b[w],w,x),e))if(t)I[w]=T;else if(T)switch(e){case 3:return!0;case 5:return v;case 6:return w;case 2:l(I,v)}else switch(e){case 4:return!1;case 7:l(I,v)}return c?-1:h||u?u:I}};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)}})),eW=z((()=>{"use strict";var e=He(),t=rr(),i=si(),r=Bt(),n=Gn(),s=Ar(),a=Rm(),o=Dt(),l=Si(),h=Do(),u=Yr(),c=va(),p=Wh(),d=mi(),f=Mo(),m=Ya(),g=uv(),y=qh(),v=bw(),T=p1(),x=Us(),b=ji(),_=yw(),E=o1(),w=An(),S=Mm(),I=u1(),M=ov(),A=Dm(),D=fi(),O=B2(),R=Ta(),C=k2(),N=Xa(),P=us(),L=Rs().forEach,F=I("hidden"),U="Symbol",k="prototype",B=P.set,H=P.getterFor(U),G=Object[k],z=t.Symbol,V=z&&z[k],j=t.TypeError,W=t.QObject,Y=x.f,X=b.f,q=v.f,Z=E.f,K=r([].push),$=S("symbols"),J=S("op-symbols"),Q=S("wks"),ee=!W||!W[k]||!W[k].findChild,te=s&&o((function(){return 7!=m(X({},"a",{get:function(){return X(this,"a",{value:7}).a}})).a}))?function(e,t,i){var r=Y(G,t);r&&delete G[t],X(e,t,i),r&&e!==G&&X(G,t,r)}:X,ie=function(e,t){var i=$[e]=m(V);return B(i,{type:U,tag:e,description:t}),s||(i.description=t),i},re=function(e,t,i){e===G&&re(J,t,i),u(e);var r=p(t);return u(i),l($,r)?(i.enumerable?(l(e,F)&&e[F][r]&&(e[F][r]=!1),i=m(i,{enumerable:f(0,!1)})):(l(e,F)||X(e,F,f(1,{})),e[F][r]=!0),te(e,r,i)):X(e,r,i)},ne=function(e,t){u(e);var r=c(t),n=g(r).concat(le(r));return L(n,(function(t){(!s||i(se,r,t))&&re(e,t,r[t])})),e},se=function(e){var t=p(e),r=i(Z,this,t);return!(this===G&&l($,t)&&!l(J,t))&&(!(r||!l(this,t)||!l($,t)||l(this,F)&&this[F][t])||r)},ae=function(e,t){var i=c(e),r=p(t);if(i!==G||!l($,r)||l(J,r)){var n=Y(i,r);return n&&l($,r)&&!(l(i,F)&&i[F][r])&&(n.enumerable=!0),n}},oe=function(e){var t=q(c(e)),i=[];return L(t,(function(e){!l($,e)&&!l(M,e)&&K(i,e)})),i},le=function(e){var t=e===G,i=q(t?J:c(e)),r=[];return L(i,(function(e){l($,e)&&(!t||l(G,e))&&K(r,$[e])})),r};a||(w(V=(z=function(){if(h(V,this))throw j("Symbol is not a constructor");var e=arguments.length&&void 0!==arguments[0]?d(arguments[0]):void 0,t=A(e),r=function(e){this===G&&i(r,J,e),l(this,F)&&l(this[F],t)&&(this[F][t]=!1),te(this,t,f(1,e))};return s&&ee&&te(G,t,{configurable:!0,set:r}),ie(t,e)})[k],"toString",(function(){return H(this).tag})),w(z,"withoutSetter",(function(e){return ie(A(e),e)})),E.f=se,b.f=re,_.f=ne,x.f=ae,y.f=v.f=oe,T.f=le,O.f=function(e){return ie(D(e),e)},s&&(X(V,"description",{configurable:!0,get:function(){return H(this).description}}),n||w(G,"propertyIsEnumerable",se,{unsafe:!0}))),e({global:!0,constructor:!0,wrap:!0,forced:!a,sham:!a},{Symbol:z}),L(g(Q),(function(e){R(e)})),e({target:U,stat:!0,forced:!a},{useSetter:function(){ee=!0},useSimple:function(){ee=!1}}),e({target:"Object",stat:!0,forced:!a,sham:!s},{create:function(e,t){return void 0===t?m(e):ne(m(e),t)},defineProperty:re,defineProperties:ne,getOwnPropertyDescriptor:ae}),e({target:"Object",stat:!0,forced:!a},{getOwnPropertyNames:oe}),C(),N(z,U),M[F]=!0})),tN=z(((e,t)=>{var i=Rm();t.exports=i&&!!Symbol.for&&!!Symbol.keyFor})),iW=z((()=>{var e=He(),t=In(),i=Si(),r=mi(),n=Mm(),s=tN(),a=n("string-to-symbol-registry"),o=n("symbol-to-string-registry");e({target:"Symbol",stat:!0,forced:!s},{for:function(e){var n=r(e);if(i(a,n))return a[n];var s=t("Symbol")(n);return a[n]=s,o[s]=n,s}})})),sW=z((()=>{var e=He(),t=Si(),i=Dd(),r=Cd(),n=Mm(),s=tN(),a=n("symbol-to-string-registry");e({target:"Symbol",stat:!0,forced:!s},{keyFor:function(e){if(!i(e))throw TypeError(r(e)+" is not a symbol");if(t(a,e))return a[e]}})})),Co=z(((e,t)=>{var i=sv(),r=Function.prototype,n=r.apply,s=r.call;t.exports="object"==typeof Reflect&&Reflect.apply||(i?s.bind(n):function(){return s.apply(n,arguments)})})),Pd=z(((e,t)=>{var i=Bt();t.exports=i([].slice)})),iN=z((()=>{var e=He(),t=In(),i=Co(),r=si(),n=Bt(),s=Dt(),a=Xh(),o=Ei(),l=ai(),h=Dd(),u=Pd(),c=Rm(),p=t("JSON","stringify"),d=n(/./.exec),f=n("".charAt),m=n("".charCodeAt),g=n("".replace),y=n(1..toString),v=/[\uD800-\uDFFF]/g,T=/^[\uD800-\uDBFF]$/,x=/^[\uDC00-\uDFFF]$/,b=!c||s((function(){var e=t("Symbol")();return"[null]"!=p([e])||"{}"!=p({a:e})||"{}"!=p(Object(e))})),_=s((function(){return'"\\udf06\\ud834"'!==p("\udf06\ud834")||'"\\udead"'!==p("\udead")})),E=function(e,t){var n=u(arguments),s=t;if((l(t)||void 0!==e)&&!h(e))return a(t)||(t=function(e,t){if(o(s)&&(t=r(s,this,e,t)),!h(t))return t}),n[1]=t,i(p,null,n)},w=function(e,t,i){var r=f(i,t-1),n=f(i,t+1);return d(T,e)&&!d(x,n)||d(x,e)&&!d(T,r)?"\\u"+y(m(e,0),16):e};p&&e({target:"JSON",stat:!0,arity:3,forced:b||_},{stringify:function(e,t,r){var n=u(arguments),s=i(b?E:p,null,n);return _&&"string"==typeof s?g(s,v,w):s}})})),xW=z((()=>{var e=He(),t=Rm(),i=Dt(),r=p1(),n=Hi();e({target:"Object",stat:!0,forced:!t||i((function(){r.f(1)}))},{getOwnPropertySymbols:function(e){var t=r.f;return t?t(n(e)):[]}})})),IW=z((()=>{eW(),iW(),sW(),iN(),xW()})),CW=z((()=>{"use strict";var e,t,i,r,n,s,a,o,l=He(),h=Ar(),u=rr(),c=Bt(),p=Si(),d=Ei(),f=Do(),m=mi(),g=ji().f,y=d1(),v=u.Symbol,T=v&&v.prototype;h&&d(v)&&(!("description"in T)||void 0!==v().description)&&(e={},y(t=function(){var t=arguments.length<1||void 0===arguments[0]?void 0:m(arguments[0]),i=f(T,this)?new v(t):void 0===t?v():v(t);return""===t&&(e[i]=!0),i},v),t.prototype=T,T.constructor=t,i="Symbol(test)"==String(v("test")),r=c(T.valueOf),n=c(T.toString),s=/^Symbol\((.*)\)[^)]+$/,a=c("".replace),o=c("".slice),g(T,"description",{configurable:!0,get:function(){var t=r(this);if(p(e,t))return"";var l=n(t),h=i?o(l,7,-1):a(l,s,"$1");return""===h?void 0:h}}),l({global:!0,constructor:!0,forced:!0},{Symbol:t}))})),AW=z((()=>{Ta()("asyncIterator")})),OW=z((()=>{Ta()("hasInstance")})),PW=z((()=>{Ta()("isConcatSpreadable")})),NW=z((()=>{Ta()("iterator")})),LW=z((()=>{Ta()("match")})),FW=z((()=>{Ta()("matchAll")})),HW=z((()=>{Ta()("replace")})),UW=z((()=>{Ta()("search")})),BW=z((()=>{Ta()("species")})),kW=z((()=>{Ta()("split")})),GW=z((()=>{var e=Ta(),t=k2();e("toPrimitive"),t()})),VW=z((()=>{var e=In(),t=Ta(),i=Xa();t("toStringTag"),i(e("Symbol"),"Symbol")})),zW=z((()=>{Ta()("unscopables")})),sN=z(((e,t)=>{var i=Ei(),r=String,n=TypeError;t.exports=function(e){if("object"==typeof e||i(e))return e;throw n("Can't set "+r(e)+" as a prototype")}})),gc=z(((e,t)=>{var i=Bt(),r=Yr(),n=sN();t.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var e,t=!1,s={};try{(e=i(Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set))(s,[]),t=s instanceof Array}catch(e){}return function(i,s){return r(i),n(s),t?e(i,s):i.__proto__=s,i}}():void 0)})),aN=z(((e,t)=>{var i=ji().f;t.exports=function(e,t,r){r in e||i(e,r,{configurable:!0,get:function(){return t[r]},set:function(e){t[r]=e}})}})),Fm=z(((e,t)=>{var i=Ei(),r=ai(),n=gc();t.exports=function(e,t,s){var a,o;return n&&i(a=t.constructor)&&a!==s&&r(o=a.prototype)&&o!==s.prototype&&n(e,o),e}})),mv=z(((e,t)=>{var i=mi();t.exports=function(e,t){return void 0===e?arguments.length<2?"":t:i(e)}})),oN=z(((e,t)=>{var i=ai(),r=ya();t.exports=function(e,t){i(t)&&"cause"in t&&r(e,"cause",t.cause)}})),x1=z(((e,t)=>{var i=Bt(),r=Error,n=i("".replace),s=String(r("zxcasd").stack),a=/\n\s*at [^:]*:[^\n]*/,o=a.test(s);t.exports=function(e,t){if(o&&"string"==typeof e&&!r.prepareStackTrace)for(;t--;)e=n(e,a,"");return e}})),Cw=z(((e,t)=>{var i=Dt(),r=Mo();t.exports=!i((function(){var e=Error("a");return!("stack"in e)||(Object.defineProperty(e,"stack",r(1,7)),7!==e.stack)}))})),cN=z(((e,t)=>{"use strict";var i=In(),r=Si(),n=ya(),s=Do(),a=gc(),o=d1(),l=aN(),h=Fm(),u=mv(),c=oN(),p=x1(),d=Cw(),f=Ar(),m=Gn();t.exports=function(e,t,g,y){var v="stackTraceLimit",T=y?2:1,x=e.split("."),b=x[x.length-1],_=i.apply(null,x);if(_){var E=_.prototype;if(!m&&r(E,"cause")&&delete E.cause,!g)return _;var w=i("Error"),S=t((function(e,t){var i=u(y?t:e,void 0),r=y?new _(e):new _;return void 0!==i&&n(r,"message",i),d&&n(r,"stack",p(r.stack,2)),this&&s(E,this)&&h(r,this,S),arguments.length>T&&c(r,arguments[T]),r}));if(S.prototype=E,"Error"!==b?a?a(S,w):o(S,w,{name:!0}):f&&v in _&&(l(S,_,v),l(S,_,"prepareStackTrace")),o(S,_),!m)try{E.name!==b&&n(E,"name",b),E.constructor=S}catch(e){}return S}}})),uq=z((()=>{var e=He(),t=rr(),i=Co(),r=cN(),n="WebAssembly",s=t[n],a=7!==Error("e",{cause:7}).cause,o=function(t,i){var n={};n[t]=r(t,i,a),e({global:!0,constructor:!0,arity:1,forced:a},n)},l=function(t,i){if(s&&s[t]){var o={};o[t]=r(n+"."+t,i,a),e({target:n,stat:!0,constructor:!0,arity:1,forced:a},o)}};o("Error",(function(e){return function(t){return i(e,this,arguments)}})),o("EvalError",(function(e){return function(t){return i(e,this,arguments)}})),o("RangeError",(function(e){return function(t){return i(e,this,arguments)}})),o("ReferenceError",(function(e){return function(t){return i(e,this,arguments)}})),o("SyntaxError",(function(e){return function(t){return i(e,this,arguments)}})),o("TypeError",(function(e){return function(t){return i(e,this,arguments)}})),o("URIError",(function(e){return function(t){return i(e,this,arguments)}})),l("CompileError",(function(e){return function(t){return i(e,this,arguments)}})),l("LinkError",(function(e){return function(t){return i(e,this,arguments)}})),l("RuntimeError",(function(e){return function(t){return i(e,this,arguments)}}))})),pN=z(((e,t)=>{"use strict";var i=Ar(),r=Dt(),n=Yr(),s=Ya(),a=mv(),o=Error.prototype.toString,l=r((function(){if(i){var e=s(Object.defineProperty({},"name",{get:function(){return this===e}}));if("true"!==o.call(e))return!0}return"2: 1"!==o.call({message:1,name:2})||"Error"!==o.call({})}));t.exports=l?function(){var e=n(this),t=a(e.name,"Error"),i=a(e.message);return t?i?t+": "+i:t:i}:o})),mq=z((()=>{var e=An(),t=pN(),i=Error.prototype;i.toString!==t&&e(i,"toString",t)})),Pw=z(((e,t)=>{var i=Dt();t.exports=!i((function(){function e(){}return e.prototype.constructor=null,Object.getPrototypeOf(new e)!==e.prototype}))})),Ao=z(((e,t)=>{var i=Si(),r=Ei(),n=Hi(),s=u1(),a=Pw(),o=s("IE_PROTO"),l=Object,h=l.prototype;t.exports=a?l.getPrototypeOf:function(e){var t=n(e);if(i(t,o))return t[o];var s=t.constructor;return r(s)&&t instanceof s?s.prototype:t instanceof l?h:null}})),gv=z(((e,t)=>{t.exports={}})),Nw=z(((e,t)=>{var i=fi(),r=gv(),n=i("iterator"),s=Array.prototype;t.exports=function(e){return void 0!==e&&(r.Array===e||s[n]===e)}})),vv=z(((e,t)=>{var i=mc(),r=Iu(),n=ga(),s=gv(),a=fi()("iterator");t.exports=function(e){if(!n(e))return r(e,a)||r(e,"@@iterator")||s[i(e)]}})),I1=z(((e,t)=>{var i=si(),r=ms(),n=Yr(),s=Cd(),a=vv(),o=TypeError;t.exports=function(e,t){var l=arguments.length<2?a(e):t;if(r(l))return n(i(l,e));throw o(s(e)+" is not iterable")}})),fN=z(((e,t)=>{var i=si(),r=Yr(),n=Iu();t.exports=function(e,t,s){var a,o;r(e);try{if(!(a=n(e,"return"))){if("throw"===t)throw s;return s}a=i(a,e)}catch(e){o=!0,a=e}if("throw"===t)throw s;if(o)throw a;return r(a),s}})),vc=z(((e,t)=>{var i=pl(),r=si(),n=Yr(),s=Cd(),a=Nw(),o=cn(),l=Do(),h=I1(),u=vv(),c=fN(),p=TypeError,d=function(e,t){this.stopped=e,this.result=t},f=d.prototype;t.exports=function(e,t,m){var g,y,v,T,x,b,_,E=m&&m.that,w=!(!m||!m.AS_ENTRIES),S=!(!m||!m.IS_RECORD),I=!(!m||!m.IS_ITERATOR),M=!(!m||!m.INTERRUPTED),A=i(t,E),D=function(e){return g&&c(g,"normal",e),new d(!0,e)},O=function(e){return w?(n(e),M?A(e[0],e[1],D):A(e[0],e[1])):M?A(e,D):A(e)};if(S)g=e.iterator;else if(I)g=e;else{if(!(y=u(e)))throw p(s(e)+" is not iterable");if(a(y)){for(v=0,T=o(e);T>v;v++)if((x=O(e[v]))&&l(f,x))return x;return new d(!1)}g=h(e,y)}for(b=S?e.next:g.next;!(_=r(b,g)).done;){try{x=O(_.value)}catch(e){c(g,"throw",e)}if("object"==typeof x&&x&&l(f,x))return x}return new d(!1)}})),Aq=z((()=>{"use strict";var e=He(),t=Do(),i=Ao(),r=gc(),n=d1(),s=Ya(),a=ya(),o=Mo(),l=x1(),h=oN(),u=vc(),c=mv(),p=fi(),d=Cw(),f=p("toStringTag"),m=Error,g=[].push,y=function(e,n){var o,p=arguments.length>2?arguments[2]:void 0,y=t(v,this);r?o=r(m(),y?i(this):v):(o=y?this:s(v),a(o,f,"Error")),void 0!==n&&a(o,"message",c(n)),d&&a(o,"stack",l(o.stack,1)),h(o,p);var T=[];return u(e,g,{that:T}),a(o,"errors",T),o};r?r(y,m):n(y,m,{name:!0});var v=y.prototype=s(m.prototype,{constructor:o(1,y),message:o(1,""),name:o(1,"AggregateError")});e({global:!0,constructor:!0,arity:2},{AggregateError:y})})),Oq=z((()=>{Aq()})),Fq=z((()=>{var e=He(),t=In(),i=Co(),r=Dt(),n=cN(),s="AggregateError",a=t(s),o=!r((function(){return 1!==a([1]).errors[0]}))&&r((function(){return 7!==a([1],s,{cause:7}).cause}));e({global:!0,constructor:!0,arity:2,forced:o},{AggregateError:n(s,(function(e){return function(t,r){return i(e,this,arguments)}}),o,!0)})})),fl=z(((e,t)=>{var i=fi(),r=Ya(),n=ji().f,s=i("unscopables"),a=Array.prototype;null==a[s]&&n(a,s,{configurable:!0,value:r(null)}),t.exports=function(e){a[s][e]=!0}})),Uq=z((()=>{"use strict";var e=He(),t=Hi(),i=cn(),r=gs(),n=fl();e({target:"Array",proto:!0},{at:function(e){var n=t(this),s=i(n),a=r(e),o=a>=0?a:s+a;return o<0||o>=s?void 0:n[o]}}),n("at")})),yv=z(((e,t)=>{var i=TypeError;t.exports=function(e){if(e>9007199254740991)throw i("Maximum allowed index exceeded");return e}})),Tv=z(((e,t)=>{var i=Dt(),r=fi(),n=xu(),s=r("species");t.exports=function(e){return n>=51||!i((function(){var t=[];return(t.constructor={})[s]=function(){return{foo:1}},1!==t[e](Boolean).foo}))}})),jq=z((()=>{"use strict";var e=He(),t=Dt(),i=Xh(),r=ai(),n=Hi(),s=cn(),a=yv(),o=Su(),l=pv(),h=Tv(),u=fi(),c=xu(),p=u("isConcatSpreadable"),d=c>=51||!t((function(){var e=[];return e[p]=!1,e.concat()[0]!==e})),f=h("concat"),m=function(e){if(!r(e))return!1;var t=e[p];return void 0!==t?!!t:i(e)};e({target:"Array",proto:!0,arity:1,forced:!d||!f},{concat:function(e){var t,i,r,h,u,c=n(this),p=l(c,0),d=0;for(t=-1,r=arguments.length;t{"use strict";var i=Cd(),r=TypeError;t.exports=function(e,t){if(!delete e[t])throw r("Cannot delete property "+i(t)+" of "+i(e))}})),bN=z(((e,t)=>{"use strict";var i=Hi(),r=_u(),n=cn(),s=S1(),a=Math.min;t.exports=[].copyWithin||function(e,t){var o=i(this),l=n(o),h=r(e,l),u=r(t,l),c=arguments.length>2?arguments[2]:void 0,p=a((void 0===c?l:r(c,l))-u,l-h),d=1;for(u0;)u in o?o[h]=o[u]:s(o,h),h+=d,u+=d;return o}})),Xq=z((()=>{var e=He(),t=bN(),i=fl();e({target:"Array",proto:!0},{copyWithin:t}),i("copyWithin")})),Ru=z(((e,t)=>{"use strict";var i=Dt();t.exports=function(e,t){var r=[][e];return!!r&&i((function(){r.call(null,t||function(){return 1},1)}))}})),Kq=z((()=>{"use strict";var e=He(),t=Rs().every;e({target:"Array",proto:!0,forced:!Ru()("every")},{every:function(e){return t(this,e,arguments.length>1?arguments[1]:void 0)}})})),Bw=z(((e,t)=>{"use strict";var i=Hi(),r=_u(),n=cn();t.exports=function(e){for(var t=i(this),s=n(t),a=arguments.length,o=r(a>1?arguments[1]:void 0,s),l=a>2?arguments[2]:void 0,h=void 0===l?s:r(l,s);h>o;)t[o++]=e;return t}})),Qq=z((()=>{var e=He(),t=Bw(),i=fl();e({target:"Array",proto:!0},{fill:t}),i("fill")})),eY=z((()=>{"use strict";var e=He(),t=Rs().filter;e({target:"Array",proto:!0,forced:!Tv()("filter")},{filter:function(e){return t(this,e,arguments.length>1?arguments[1]:void 0)}})})),rY=z((()=>{"use strict";var e=He(),t=Rs().find,i=fl(),r="find",n=!0;r in[]&&Array(1)[r]((function(){n=!1})),e({target:"Array",proto:!0,forced:n},{find:function(e){return t(this,e,arguments.length>1?arguments[1]:void 0)}}),i(r)})),nY=z((()=>{"use strict";var e=He(),t=Rs().findIndex,i=fl(),r="findIndex",n=!0;r in[]&&Array(1)[r]((function(){n=!1})),e({target:"Array",proto:!0,forced:n},{findIndex:function(e){return t(this,e,arguments.length>1?arguments[1]:void 0)}}),i(r)})),w1=z(((e,t)=>{var i=pl(),r=wm(),n=Hi(),s=cn(),a=function(e){var t=1==e;return function(a,o,l){for(var h,u=n(a),c=r(u),p=i(o,l),d=s(c);d-- >0;)if(p(h=c[d],d,u))switch(e){case 0:return h;case 1:return d}return t?-1:void 0}};t.exports={findLast:a(0),findLastIndex:a(1)}})),oY=z((()=>{"use strict";var e=He(),t=w1().findLast,i=fl();e({target:"Array",proto:!0},{findLast:function(e){return t(this,e,arguments.length>1?arguments[1]:void 0)}}),i("findLast")})),lY=z((()=>{"use strict";var e=He(),t=w1().findLastIndex,i=fl();e({target:"Array",proto:!0},{findLastIndex:function(e){return t(this,e,arguments.length>1?arguments[1]:void 0)}}),i("findLastIndex")})),_N=z(((e,t)=>{"use strict";var i=Xh(),r=cn(),n=yv(),s=pl(),a=function(e,t,o,l,h,u,c,p){for(var d,f,m=h,g=0,y=!!c&&s(c,p);g0&&i(d)?(f=r(d),m=a(e,t,d,f,m,u-1)-1):(n(m+1),e[m]=d),m++),g++;return m};t.exports=a})),hY=z((()=>{"use strict";var e=He(),t=_N(),i=Hi(),r=cn(),n=gs(),s=pv();e({target:"Array",proto:!0},{flat:function(){var e=arguments.length?arguments[0]:void 0,a=i(this),o=r(a),l=s(a,0);return l.length=t(l,a,a,o,0,void 0===e?1:n(e)),l}})})),pY=z((()=>{"use strict";var e=He(),t=_N(),i=ms(),r=Hi(),n=cn(),s=pv();e({target:"Array",proto:!0},{flatMap:function(e){var a,o=r(this),l=n(o);return i(e),(a=s(o,0)).length=t(a,o,o,l,0,1,e,arguments.length>1?arguments[1]:void 0),a}})})),SN=z(((e,t)=>{"use strict";var i=Rs().forEach,r=Ru()("forEach");t.exports=r?[].forEach:function(e){return i(this,e,arguments.length>1?arguments[1]:void 0)}})),mY=z((()=>{"use strict";var e=He(),t=SN();e({target:"Array",proto:!0,forced:[].forEach!=t},{forEach:t})})),vY=z(((e,t)=>{var i=Yr(),r=fN();t.exports=function(e,t,n,s){try{return s?t(i(n)[0],n[1]):t(n)}catch(t){r(e,"throw",t)}}})),wN=z(((e,t)=>{"use strict";var i=pl(),r=si(),n=Hi(),s=vY(),a=Nw(),o=Pm(),l=cn(),h=Su(),u=I1(),c=vv(),p=Array;t.exports=function(e){var t=n(e),d=o(this),f=arguments.length,m=f>1?arguments[1]:void 0,g=void 0!==m;g&&(m=i(m,f>2?arguments[2]:void 0));var y,v,T,x,b,_,E=c(t),w=0;if(!E||this===p&&a(E))for(y=l(t),v=d?new this(y):p(y);y>w;w++)_=g?m(t[w],w):t[w],h(v,w,_);else for(b=(x=u(t,E)).next,v=d?new this:[];!(T=r(b,x)).done;w++)_=g?s(x,m,[T.value,w],!0):T.value,h(v,w,_);return v.length=w,v}})),R1=z(((e,t)=>{var i,r,n=fi()("iterator"),s=!1;try{i=0,(r={next:function(){return{done:!!i++}},return:function(){s=!0}})[n]=function(){return this},Array.from(r,(function(){throw 2}))}catch(e){}t.exports=function(e,t){if(!t&&!s)return!1;var i=!1;try{var r={};r[n]=function(){return{next:function(){return{done:i=!0}}}},e(r)}catch(e){}return i}})),SY=z((()=>{var e=He(),t=wN();e({target:"Array",stat:!0,forced:!R1()((function(e){Array.from(e)}))},{from:t})})),wY=z((()=>{"use strict";var e=He(),t=lv().includes,i=Dt(),r=fl();e({target:"Array",proto:!0,forced:i((function(){return!Array(1).includes()}))},{includes:function(e){return t(this,e,arguments.length>1?arguments[1]:void 0)}}),r("includes")})),MY=z((()=>{"use strict";var e=He(),t=Yh(),i=lv().indexOf,r=Ru(),n=t([].indexOf),s=!!n&&1/n([1],1,-0)<0,a=r("indexOf");e({target:"Array",proto:!0,forced:s||!a},{indexOf:function(e){var t=arguments.length>1?arguments[1]:void 0;return s?n(this,e,t)||0:i(this,e,t)}})})),DY=z((()=>{He()({target:"Array",stat:!0},{isArray:Xh()})})),ON=z(((e,t)=>{"use strict";var i,r,n,s=Dt(),a=Ei(),o=ai(),l=Ya(),h=Ao(),u=An(),c=fi(),p=Gn(),d=c("iterator"),f=!1;[].keys&&("next"in(n=[].keys())?(r=h(h(n)))!==Object.prototype&&(i=r):f=!0),!o(i)||s((function(){var e={};return i[d].call(e)!==e}))?i={}:p&&(i=l(i)),a(i[d])||u(i,d,(function(){return this})),t.exports={IteratorPrototype:i,BUGGY_SAFARI_ITERATORS:f}})),kw=z(((e,t)=>{"use strict";var i=ON().IteratorPrototype,r=Ya(),n=Mo(),s=Xa(),a=gv(),o=function(){return this};t.exports=function(e,t,l,h){var u=t+" Iterator";return e.prototype=r(i,{next:n(+!h,l)}),s(e,u,!1,!0),a[u]=o,e}})),zw=z(((e,t)=>{"use strict";var i=He(),r=si(),n=Gn(),s=Am(),a=Ei(),o=kw(),l=Ao(),h=gc(),u=Xa(),c=ya(),p=An(),d=fi(),f=gv(),m=ON(),g=s.PROPER,y=s.CONFIGURABLE,v=m.IteratorPrototype,T=m.BUGGY_SAFARI_ITERATORS,x=d("iterator"),b="keys",_="values",E="entries",w=function(){return this};t.exports=function(e,t,s,d,m,S,I){o(s,t,d);var M,A,D,O=function(e){if(e===m&&L)return L;if(!T&&e in N)return N[e];switch(e){case b:case _:case E:return function(){return new s(this,e)}}return function(){return new s(this)}},R=t+" Iterator",C=!1,N=e.prototype,P=N[x]||N["@@iterator"]||m&&N[m],L=!T&&P||O(m),F="Array"==t&&N.entries||P;if(F&&((M=l(F.call(new e)))!==Object.prototype&&M.next&&(!n&&l(M)!==v&&(h?h(M,v):a(M[x])||p(M,x,w)),u(M,R,!0,!0),n&&(f[R]=w))),g&&m==_&&P&&P.name!==_&&(!n&&y?c(N,"name",_):(C=!0,L=function(){return r(P,this)})),m)if(A={values:O(_),keys:S?L:O(b),entries:O(E)},I)for(D in A)(T||C||!(D in N))&&p(N,D,A[D]);else i({target:t,proto:!0,forced:T||C},A);return(!n||I)&&N[x]!==L&&p(N,x,L,{name:m}),f[t]=L,A}})),C1=z(((e,t)=>{t.exports=function(e,t){return{value:e,done:t}}})),A1=z(((e,t)=>{"use strict";var i=va(),r=fl(),n=gv(),s=us(),a=ji().f,o=zw(),l=C1(),h=Gn(),u=Ar(),c="Array Iterator",p=s.set,d=s.getterFor(c);t.exports=o(Array,"Array",(function(e,t){p(this,{type:c,target:i(e),index:0,kind:t})}),(function(){var e=d(this),t=e.target,i=e.kind,r=e.index++;return!t||r>=t.length?(e.target=void 0,l(void 0,!0)):l("keys"==i?r:"values"==i?t[r]:[r,t[r]],!1)}),"values");var f=n.Arguments=n.Array;if(r("keys"),r("values"),r("entries"),!h&&u&&"values"!==f.name)try{a(f,"name",{value:"values"})}catch(e){}})),KY=z((()=>{"use strict";var e=He(),t=Bt(),i=wm(),r=va(),n=Ru(),s=t([].join),a=i!=Object,o=n("join",",");e({target:"Array",proto:!0,forced:a||!o},{join:function(e){return s(r(this),void 0===e?",":e)}})})),FN=z(((e,t)=>{"use strict";var i=Co(),r=va(),n=gs(),s=cn(),a=Ru(),o=Math.min,l=[].lastIndexOf,h=!!l&&1/[1].lastIndexOf(1,-0)<0,u=a("lastIndexOf"),c=h||!u;t.exports=c?function(e){if(h)return i(l,this,arguments)||0;var t=r(this),a=s(t),u=a-1;for(arguments.length>1&&(u=o(u,n(arguments[1]))),u<0&&(u=a+u);u>=0;u--)if(u in t&&t[u]===e)return u||0;return-1}:l})),eX=z((()=>{var e=He(),t=FN();e({target:"Array",proto:!0,forced:t!==[].lastIndexOf},{lastIndexOf:t})})),tX=z((()=>{"use strict";var e=He(),t=Rs().map;e({target:"Array",proto:!0,forced:!Tv()("map")},{map:function(e){return t(this,e,arguments.length>1?arguments[1]:void 0)}})})),iX=z((()=>{"use strict";var e=He(),t=Dt(),i=Pm(),r=Su(),n=Array;e({target:"Array",stat:!0,forced:t((function(){function e(){}return!(n.of.call(e)instanceof e)}))},{of:function(){for(var e=0,t=arguments.length,s=new(i(this)?this:n)(t);t>e;)r(s,e,arguments[e++]);return s.length=t,s}})})),Ww=z(((e,t)=>{"use strict";var i=Ar(),r=Xh(),n=TypeError,s=Object.getOwnPropertyDescriptor,a=i&&!function(){if(void 0!==this)return!0;try{Object.defineProperty([],"length",{writable:!1}).length=1}catch(e){return e instanceof TypeError}}();t.exports=a?function(e,t){if(r(e)&&!s(e,"length").writable)throw n("Cannot set read only .length");return e.length=t}:function(e,t){return e.length=t}})),sX=z((()=>{"use strict";var e=He(),t=Hi(),i=cn(),r=Ww(),n=yv(),s=Dt()((function(){return 4294967297!==[].push.call({length:4294967296},1)})),a=!function(){try{Object.defineProperty([],"length",{writable:!1}).push()}catch(e){return e instanceof TypeError}}();e({target:"Array",proto:!0,arity:1,forced:s||a},{push:function(e){var s=t(this),a=i(s),o=arguments.length;n(a+o);for(var l=0;l{var i=ms(),r=Hi(),n=wm(),s=cn(),a=TypeError,o=function(e){return function(t,o,l,h){i(o);var u=r(t),c=n(u),p=s(u),d=e?p-1:0,f=e?-1:1;if(l<2)for(;;){if(d in c){h=c[d],d+=f;break}if(d+=f,e?d<0:p<=d)throw a("Reduce of empty array with no initial value")}for(;e?d>=0:p>d;d+=f)d in c&&(h=o(h,c[d],d,u));return h}};t.exports={left:o(!1),right:o(!0)}})),Mu=z(((e,t)=>{var i=ma(),r=rr();t.exports="process"==i(r.process)})),uX=z((()=>{"use strict";var e=He(),t=O1().left,i=Ru(),r=xu(),n=Mu();e({target:"Array",proto:!0,forced:!i("reduce")||!n&&r>79&&r<83},{reduce:function(e){var i=arguments.length;return t(this,e,i,i>1?arguments[1]:void 0)}})})),pX=z((()=>{"use strict";var e=He(),t=O1().right,i=Ru(),r=xu(),n=Mu();e({target:"Array",proto:!0,forced:!i("reduceRight")||!n&&r>79&&r<83},{reduceRight:function(e){return t(this,e,arguments.length,arguments.length>1?arguments[1]:void 0)}})})),fX=z((()=>{"use strict";var e=He(),t=Bt(),i=Xh(),r=t([].reverse),n=[1,2];e({target:"Array",proto:!0,forced:String(n)===String(n.reverse())},{reverse:function(){return i(this)&&(this.length=this.length),r(this)}})})),vX=z((()=>{"use strict";var e=He(),t=Xh(),i=Pm(),r=ai(),n=_u(),s=cn(),a=va(),o=Su(),l=fi(),h=Tv(),u=Pd(),c=h("slice"),p=l("species"),d=Array,f=Math.max;e({target:"Array",proto:!0,forced:!c},{slice:function(e,l){var h,c,m,g=a(this),y=s(g),v=n(e,y),T=n(void 0===l?y:l,y);if(t(g)&&(h=g.constructor,i(h)&&(h===d||t(h.prototype))?h=void 0:r(h)&&(null===(h=h[p])&&(h=void 0)),h===d||void 0===h))return u(g,v,T);for(c=new(void 0===h?d:h)(f(T-v,0)),m=0;v{"use strict";var e=He(),t=Rs().some;e({target:"Array",proto:!0,forced:!Ru()("some")},{some:function(e){return t(this,e,arguments.length>1?arguments[1]:void 0)}})})),qw=z(((e,t)=>{var i=hv(),r=Math.floor,n=function(e,t){var o=e.length,l=r(o/2);return o<8?s(e,t):a(e,n(i(e,0,l),t),n(i(e,l),t),t)},s=function(e,t){for(var i,r,n=e.length,s=1;s0;)e[r]=e[--r];r!==s++&&(e[r]=i)}return e},a=function(e,t,i,r){for(var n=t.length,s=i.length,a=0,o=0;a{var i=bu().match(/firefox\/(\d+)/i);t.exports=!!i&&+i[1]})),kN=z(((e,t)=>{var i=bu();t.exports=/MSIE|Trident/.test(i)})),Yw=z(((e,t)=>{var i=bu().match(/AppleWebKit\/(\d+)\./);t.exports=!!i&&+i[1]})),NX=z((()=>{"use strict";var e=He(),t=Bt(),i=ms(),r=Hi(),n=cn(),s=S1(),a=mi(),o=Dt(),l=qw(),h=Ru(),u=BN(),c=kN(),p=xu(),d=Yw(),f=[],m=t(f.sort),g=t(f.push),y=o((function(){f.sort(void 0)})),v=o((function(){f.sort(null)})),T=h("sort"),x=!o((function(){if(p)return p<70;if(!(u&&u>3)){if(c)return!0;if(d)return d<603;var e,t,i,r,n="";for(e=65;e<76;e++){switch(t=String.fromCharCode(e),e){case 66:case 69:case 70:case 72:i=3;break;case 68:case 71:i=4;break;default:i=2}for(r=0;r<47;r++)f.push({k:t+r,v:i})}for(f.sort((function(e,t){return t.v-e.v})),r=0;ra(i)?1:-1}}(e)),o=n(u),h=0;h{"use strict";var i=In(),r=ji(),n=fi(),s=Ar(),a=n("species");t.exports=function(e){var t=i(e),n=r.f;s&&t&&!t[a]&&n(t,a,{configurable:!0,get:function(){return this}})}})),HX=z((()=>{Um()("Array")})),UX=z((()=>{"use strict";var e=He(),t=Hi(),i=_u(),r=gs(),n=cn(),s=Ww(),a=yv(),o=pv(),l=Su(),h=S1(),u=Tv()("splice"),c=Math.max,p=Math.min;e({target:"Array",proto:!0,forced:!u},{splice:function(e,u){var d,f,m,g,y,v,T=t(this),x=n(T),b=i(e,x),_=arguments.length;for(0===_?d=f=0:1===_?(d=0,f=x-b):(d=_-2,f=p(c(r(u),0),x-b)),a(x+d-f),m=o(T,f),g=0;gx-f+d;g--)h(T,g-1)}else if(d>f)for(g=x-f;g>b;g--)v=g+d-1,(y=g+f-1)in T?T[v]=T[y]:h(T,v);for(g=0;g{fl()("flat")})),kX=z((()=>{fl()("flatMap")})),GX=z((()=>{"use strict";var e=He(),t=Hi(),i=cn(),r=Ww(),n=S1(),s=yv(),a=1!==[].unshift(0),o=!function(){try{Object.defineProperty([],"length",{writable:!1}).unshift()}catch(e){return e instanceof TypeError}}();e({target:"Array",proto:!0,arity:1,forced:a||o},{unshift:function(e){var a=t(this),o=i(a),l=arguments.length;if(l){s(o+l);for(var h=o;h--;){var u=h+l;h in a?a[u]=a[h]:n(a,u)}for(var c=0;c{t.exports="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView})),Ev=z(((e,t)=>{var i=An();t.exports=function(e,t,r){for(var n in t)i(e,n,t[n],r);return e}})),yc=z(((e,t)=>{var i=Do(),r=TypeError;t.exports=function(e,t){if(i(t,e))return e;throw r("Incorrect invocation")}})),zN=z(((e,t)=>{var i=gs(),r=qa(),n=RangeError;t.exports=function(e){if(void 0===e)return 0;var t=i(e),s=r(t);if(t!==s)throw n("Wrong length or index");return s}})),YX=z(((e,t)=>{var i=Array,r=Math.abs,n=Math.pow,s=Math.floor,a=Math.log,o=Math.LN2;t.exports={pack:function(e,t,l){var h,u,c,p=i(l),d=8*l-t-1,f=(1<>1,g=23===t?n(2,-24)-n(2,-77):0,y=e<0||0===e&&1/e<0?1:0,v=0;for((e=r(e))!=e||e===1/0?(u=e!=e?1:0,h=f):(h=s(a(e)/o),e*(c=n(2,-h))<1&&(h--,c*=2),(e+=h+m>=1?g/c:g*n(2,1-m))*c>=2&&(h++,c/=2),h+m>=f?(u=0,h=f):h+m>=1?(u=(e*c-1)*n(2,t),h+=m):(u=e*n(2,m-1)*n(2,t),h=0));t>=8;)p[v++]=255&u,u/=256,t-=8;for(h=h<0;)p[v++]=255&h,h/=256,d-=8;return p[--v]|=128*y,p},unpack:function(e,t){var i,r=e.length,s=8*r-t-1,a=(1<>1,l=s-7,h=r-1,u=e[h--],c=127&u;for(u>>=7;l>0;)c=256*c+e[h--],l-=8;for(i=c&(1<<-l)-1,c>>=-l,l+=t;l>0;)i=256*i+e[h--],l-=8;if(0===c)c=1-o;else{if(c===a)return i?NaN:u?-1/0:1/0;i+=n(2,t),c-=o}return(u?-1:1)*i*n(2,c-t)}}})),N1=z(((e,t)=>{"use strict";var i,r,n,s,a,o,l=rr(),h=Bt(),u=Ar(),c=Xw(),p=Am(),d=ya(),f=Ev(),m=Dt(),g=yc(),y=gs(),v=qa(),T=zN(),x=YX(),b=Ao(),_=gc(),E=qh().f,w=ji().f,S=Bw(),I=hv(),M=Xa(),A=us(),D=p.PROPER,O=p.CONFIGURABLE,R=A.get,C=A.set,N="ArrayBuffer",P="DataView",L="prototype",F="Wrong index",U=l[N],k=U,B=k&&k[L],H=l[P],G=H&&H[L],z=Object.prototype,V=l.Array,j=l.RangeError,W=h(S),Y=h([].reverse),X=x.pack,q=x.unpack,Z=function(e){return[255&e]},K=function(e){return[255&e,e>>8&255]},$=function(e){return[255&e,e>>8&255,e>>16&255,e>>24&255]},J=function(e){return e[3]<<24|e[2]<<16|e[1]<<8|e[0]},Q=function(e){return X(e,23,4)},ee=function(e){return X(e,52,8)},te=function(e,t){w(e[L],t,{get:function(){return R(this)[t]}})},ie=function(e,t,i,r){var n=T(i),s=R(e);if(n+t>s.byteLength)throw j(F);var a=R(s.buffer).bytes,o=n+s.byteOffset,l=I(a,o,o+t);return r?l:Y(l)},re=function(e,t,i,r,n,s){var a=T(i),o=R(e);if(a+t>o.byteLength)throw j(F);for(var l=R(o.buffer).bytes,h=a+o.byteOffset,u=r(+n),c=0;cn;)(s=r[n++])in k||d(k,s,U[s]);B.constructor=k}_&&b(G)!==z&&_(G,z),a=new H(new k(2)),o=h(G.setInt8),a.setInt8(0,2147483648),a.setInt8(1,2147483649),(a.getInt8(0)||!a.getInt8(1))&&f(G,{setInt8:function(e,t){o(this,e,t<<24>>24)},setUint8:function(e,t){o(this,e,t<<24>>24)}},{unsafe:!0})}else B=(k=function(e){g(this,B);var t=T(e);C(this,{bytes:W(V(t),0),byteLength:t}),u||(this.byteLength=t)})[L],G=(H=function(e,t,i){g(this,G),g(e,B);var r=R(e).byteLength,n=y(t);if(n<0||n>r)throw j("Wrong offset");if(n+(i=void 0===i?r-n:v(i))>r)throw j("Wrong length");C(this,{buffer:e,byteLength:i,byteOffset:n}),u||(this.buffer=e,this.byteLength=i,this.byteOffset=n)})[L],u&&(te(k,"byteLength"),te(H,"buffer"),te(H,"byteLength"),te(H,"byteOffset")),f(G,{getInt8:function(e){return ie(this,1,e)[0]<<24>>24},getUint8:function(e){return ie(this,1,e)[0]},getInt16:function(e){var t=ie(this,2,e,arguments.length>1?arguments[1]:void 0);return(t[1]<<8|t[0])<<16>>16},getUint16:function(e){var t=ie(this,2,e,arguments.length>1?arguments[1]:void 0);return t[1]<<8|t[0]},getInt32:function(e){return J(ie(this,4,e,arguments.length>1?arguments[1]:void 0))},getUint32:function(e){return J(ie(this,4,e,arguments.length>1?arguments[1]:void 0))>>>0},getFloat32:function(e){return q(ie(this,4,e,arguments.length>1?arguments[1]:void 0),23)},getFloat64:function(e){return q(ie(this,8,e,arguments.length>1?arguments[1]:void 0),52)},setInt8:function(e,t){re(this,1,e,Z,t)},setUint8:function(e,t){re(this,1,e,Z,t)},setInt16:function(e,t){re(this,2,e,K,t,arguments.length>2?arguments[2]:void 0)},setUint16:function(e,t){re(this,2,e,K,t,arguments.length>2?arguments[2]:void 0)},setInt32:function(e,t){re(this,4,e,$,t,arguments.length>2?arguments[2]:void 0)},setUint32:function(e,t){re(this,4,e,$,t,arguments.length>2?arguments[2]:void 0)},setFloat32:function(e,t){re(this,4,e,Q,t,arguments.length>2?arguments[2]:void 0)},setFloat64:function(e,t){re(this,8,e,ee,t,arguments.length>2?arguments[2]:void 0)}});M(k,N),M(H,P),t.exports={ArrayBuffer:k,DataView:H}})),f$=z((()=>{"use strict";var e=He(),t=rr(),i=N1(),r=Um(),n="ArrayBuffer",s=i[n];e({global:!0,constructor:!0,forced:t[n]!==s},{ArrayBuffer:s}),r(n)})),wi=z(((e,t)=>{"use strict";var i,r,n,s=Xw(),a=Ar(),o=rr(),l=Ei(),h=ai(),u=Si(),c=mc(),p=Cd(),d=ya(),f=An(),m=ji().f,g=Do(),y=Ao(),v=gc(),T=fi(),x=Dm(),b=us(),_=b.enforce,E=b.get,w=o.Int8Array,S=w&&w.prototype,I=o.Uint8ClampedArray,M=I&&I.prototype,A=w&&y(w),D=S&&y(S),O=Object.prototype,R=o.TypeError,C=T("toStringTag"),N=x("TYPED_ARRAY_TAG"),P="TypedArrayConstructor",L=s&&!!v&&"Opera"!==c(o.opera),F=!1,U={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},k={BigInt64Array:8,BigUint64Array:8},B=function(e){var t=y(e);if(h(t)){var i=E(t);return i&&u(i,P)?i[P]:B(t)}},H=function(e){if(!h(e))return!1;var t=c(e);return u(U,t)||u(k,t)};for(i in U)(n=(r=o[i])&&r.prototype)?_(n)[P]=r:L=!1;for(i in k)(n=(r=o[i])&&r.prototype)&&(_(n)[P]=r);if((!L||!l(A)||A===Function.prototype)&&(A=function(){throw R("Incorrect invocation")},L))for(i in U)o[i]&&v(o[i],A);if((!L||!D||D===O)&&(D=A.prototype,L))for(i in U)o[i]&&v(o[i].prototype,D);if(L&&y(M)!==D&&v(M,D),a&&!u(D,C))for(i in F=!0,m(D,C,{get:function(){return h(this)?this[N]:void 0}}),U)o[i]&&d(o[i],N,i);t.exports={NATIVE_ARRAY_BUFFER_VIEWS:L,TYPED_ARRAY_TAG:F&&N,aTypedArray:function(e){if(H(e))return e;throw R("Target is not a typed array")},aTypedArrayConstructor:function(e){if(l(e)&&(!v||g(A,e)))return e;throw R(p(e)+" is not a typed array constructor")},exportTypedArrayMethod:function(e,t,i,r){if(a){if(i)for(var n in U){var s=o[n];if(s&&u(s.prototype,e))try{delete s.prototype[e]}catch(i){try{s.prototype[e]=t}catch(e){}}}(!D[e]||i)&&f(D,e,i?t:L&&S[e]||t,r)}},exportTypedArrayStaticMethod:function(e,t,i){var r,n;if(a){if(v){if(i)for(r in U)if((n=o[r])&&u(n,e))try{delete n[e]}catch(e){}if(A[e]&&!i)return;try{return f(A,e,i?t:L&&A[e]||t)}catch(e){}}for(r in U)(n=o[r])&&(!n[e]||i)&&f(n,e,t)}},getTypedArrayConstructor:B,isView:function(e){if(!h(e))return!1;var t=c(e);return"DataView"===t||u(U,t)||u(k,t)},isTypedArray:H,TypedArray:A,TypedArrayPrototype:D}})),w$=z((()=>{var e=He(),t=wi();e({target:"ArrayBuffer",stat:!0,forced:!t.NATIVE_ARRAY_BUFFER_VIEWS},{isView:t.isView})})),aR=z(((e,t)=>{var i=Pm(),r=Cd(),n=TypeError;t.exports=function(e){if(i(e))return e;throw n(r(e)+" is not a constructor")}})),km=z(((e,t)=>{var i=Yr(),r=aR(),n=ga(),s=fi()("species");t.exports=function(e,t){var a,o=i(e).constructor;return void 0===o||n(a=i(o)[s])?t:r(a)}})),L$=z((()=>{"use strict";var e=He(),t=Yh(),i=Dt(),r=N1(),n=Yr(),s=_u(),a=qa(),o=km(),l=r.ArrayBuffer,h=r.DataView,u=h.prototype,c=t(l.prototype.slice),p=t(u.getUint8),d=t(u.setUint8);e({target:"ArrayBuffer",proto:!0,unsafe:!0,forced:i((function(){return!new l(2).slice(1,void 0).byteLength}))},{slice:function(e,t){if(c&&void 0===t)return c(n(this),e);for(var i=n(this).byteLength,r=s(e,i),u=s(void 0===t?i:t,i),f=new(o(this,l))(a(u-r)),m=new h(this),g=new h(f),y=0;r{var e=He(),t=N1();e({global:!0,constructor:!0,forced:!Xw()},{DataView:t.DataView})})),H$=z((()=>{F$()})),U$=z((()=>{"use strict";var e=He(),t=Bt(),i=Dt()((function(){return 120!==new Date(16e11).getYear()})),r=t(Date.prototype.getFullYear);e({target:"Date",proto:!0,forced:i},{getYear:function(){return r(this)-1900}})})),k$=z((()=>{var e=He(),t=Bt(),i=Date,r=t(i.prototype.getTime);e({target:"Date",stat:!0},{now:function(){return r(new i)}})})),z$=z((()=>{"use strict";var e=He(),t=Bt(),i=gs(),r=Date.prototype,n=t(r.getTime),s=t(r.setFullYear);e({target:"Date",proto:!0},{setYear:function(e){n(this);var t=i(e);return s(this,0<=t&&t<=99?t+1900:t)}})})),j$=z((()=>{He()({target:"Date",proto:!0},{toGMTString:Date.prototype.toUTCString})})),L1=z(((e,t)=>{"use strict";var i=gs(),r=mi(),n=cs(),s=RangeError;t.exports=function(e){var t=r(n(this)),a="",o=i(e);if(o<0||o==1/0)throw s("Wrong number of repetitions");for(;o>0;(o>>>=1)&&(t+=t))1&o&&(a+=t);return a}})),oR=z(((e,t)=>{var i=Bt(),r=qa(),n=mi(),s=L1(),a=cs(),o=i(s),l=i("".slice),h=Math.ceil,u=function(e){return function(t,i,s){var u,c,p=n(a(t)),d=r(i),f=p.length,m=void 0===s?" ":n(s);return d<=f||""==m?p:((c=o(m,h((u=d-f)/m.length))).length>u&&(c=l(c,0,u)),e?p+c:c+p)}};t.exports={start:u(!1),end:u(!0)}})),J$=z(((e,t)=>{"use strict";var i=Bt(),r=Dt(),n=oR().start,s=RangeError,a=isFinite,o=Math.abs,l=Date.prototype,h=l.toISOString,u=i(l.getTime),c=i(l.getUTCDate),p=i(l.getUTCFullYear),d=i(l.getUTCHours),f=i(l.getUTCMilliseconds),m=i(l.getUTCMinutes),g=i(l.getUTCMonth),y=i(l.getUTCSeconds);t.exports=r((function(){return"0385-07-25T07:06:39.999Z"!=h.call(new Date(-50000000000001))}))||!r((function(){h.call(new Date(NaN))}))?function(){if(!a(u(this)))throw s("Invalid time value");var e=this,t=p(e),i=f(e),r=t<0?"-":t>9999?"+":"";return r+n(o(t),r?6:4,0)+"-"+n(g(e)+1,2,0)+"-"+n(c(e),2,0)+"T"+n(d(e),2,0)+":"+n(m(e),2,0)+":"+n(y(e),2,0)+"."+n(i,3,0)+"Z"}:h})),eK=z((()=>{var e=He(),t=J$();e({target:"Date",proto:!0,forced:Date.prototype.toISOString!==t},{toISOString:t})})),tK=z((()=>{"use strict";var e=He(),t=Dt(),i=Hi(),r=l1();e({target:"Date",proto:!0,arity:1,forced:t((function(){return null!==new Date(NaN).toJSON()||1!==Date.prototype.toJSON.call({toISOString:function(){return 1}})}))},{toJSON:function(e){var t=i(this),n=r(t,"number");return"number"!=typeof n||isFinite(n)?t.toISOString():null}})})),iK=z(((e,t)=>{"use strict";var i=Yr(),r=m2(),n=TypeError;t.exports=function(e){if(i(this),"string"===e||"default"===e)e="string";else if("number"!==e)throw n("Incorrect hint");return r(this,e)}})),aK=z((()=>{var e=Si(),t=An(),i=iK(),r=fi()("toPrimitive"),n=Date.prototype;e(n,r)||t(n,r,i)})),uK=z((()=>{var e=Bt(),t=An(),i=Date.prototype,r="Invalid Date",n="toString",s=e(i[n]),a=e(i.getTime);String(new Date(NaN))!=r&&t(i,n,(function(){var e=a(this);return e==e?s(this):r}))})),pK=z((()=>{"use strict";var e=He(),t=Bt(),i=mi(),r=t("".charAt),n=t("".charCodeAt),s=t(/./.exec),a=t(1..toString),o=t("".toUpperCase),l=/[\w*+\-./@]/,h=function(e,t){for(var i=a(e,16);i.length{"use strict";var i=Bt(),r=ms(),n=ai(),s=Si(),a=Pd(),o=sv(),l=Function,h=i([].concat),u=i([].join),c={},p=function(e,t,i){if(!s(c,t)){for(var r=[],n=0;n{var e=He(),t=hL();e({target:"Function",proto:!0,forced:Function.bind!==t},{bind:t})})),bK=z((()=>{"use strict";var e=Ei(),t=ai(),i=ji(),r=Ao(),n=fi(),s=dw(),a=n("hasInstance"),o=Function.prototype;a in o||i.f(o,a,{value:s((function(i){if(!e(this)||!t(i))return!1;var n=this.prototype;if(!t(n))return i instanceof this;for(;i=r(i);)if(n===i)return!0;return!1}),a)})})),SK=z((()=>{var e=Ar(),t=Am().EXISTS,i=Bt(),r=ji().f,n=Function.prototype,s=i(n.toString),a=/function\b(?:\s|\/\*[\S\s]*?\*\/|\/\/[^\n\r]*[\n\r]+)*([^\s(/]*)/,o=i(a.exec);e&&!t&&r(n,"name",{configurable:!0,get:function(){try{return o(a,s(this))[1]}catch(e){return""}}})})),wK=z((()=>{var e=He(),t=rr();e({global:!0,forced:t.globalThis!==t},{globalThis:t})})),RK=z((()=>{var e=rr();Xa()(e.JSON,"JSON",!0)})),lR=z(((e,t)=>{var i=Dt();t.exports=i((function(){if("function"==typeof ArrayBuffer){var e=new ArrayBuffer(8);Object.isExtensible(e)&&Object.defineProperty(e,"a",{value:8})}}))})),uR=z(((e,t)=>{var i=Dt(),r=ai(),n=ma(),s=lR(),a=Object.isExtensible,o=i((function(){a(1)}));t.exports=o||s?function(e){return!(!r(e)||s&&"ArrayBuffer"==n(e))&&(!a||a(e))}:a})),Vm=z(((e,t)=>{var i=Dt();t.exports=!i((function(){return Object.isExtensible(Object.preventExtensions({}))}))})),Gd=z(((e,t)=>{var i=He(),r=Bt(),n=ov(),s=ai(),a=Si(),o=ji().f,l=qh(),h=bw(),u=uR(),c=Dm(),p=Vm(),d=!1,f=c("meta"),m=0,g=function(e){o(e,f,{value:{objectID:"O"+m++,weakData:{}}})},y=t.exports={enable:function(){y.enable=function(){},d=!0;var e=l.f,t=r([].splice),n={};n[f]=1,e(n).length&&(l.f=function(i){for(var r=e(i),n=0,s=r.length;n{"use strict";var i=He(),r=rr(),n=Bt(),s=cv(),a=An(),o=Gd(),l=vc(),h=yc(),u=Ei(),c=ga(),p=ai(),d=Dt(),f=R1(),m=Xa(),g=Fm();t.exports=function(e,t,y){var v=-1!==e.indexOf("Map"),T=-1!==e.indexOf("Weak"),x=v?"set":"add",b=r[e],_=b&&b.prototype,E=b,w={},S=function(e){var t=n(_[e]);a(_,e,"add"==e?function(e){return t(this,0===e?0:e),this}:"delete"==e?function(e){return!(T&&!p(e))&&t(this,0===e?0:e)}:"get"==e?function(e){return T&&!p(e)?void 0:t(this,0===e?0:e)}:"has"==e?function(e){return!(T&&!p(e))&&t(this,0===e?0:e)}:function(e,i){return t(this,0===e?0:e,i),this})};if(s(e,!u(b)||!(T||_.forEach&&!d((function(){(new b).entries().next()})))))E=y.getConstructor(t,e,v,x),o.enable();else if(s(e,!0)){var I=new E,M=I[x](T?{}:-0,1)!=I,A=d((function(){I.has(1)})),D=f((function(e){new b(e)})),O=!T&&d((function(){for(var e=new b,t=5;t--;)e[x](t,t);return!e.has(-0)}));D||((E=t((function(e,t){h(e,_);var i=g(new b,e,E);return c(t)||l(t,i[x],{that:i,AS_ENTRIES:v}),i}))).prototype=_,_.constructor=E),(A||O)&&(S("delete"),S("has"),v&&S("get")),(O||M)&&S(x),T&&_.clear&&delete _.clear}return w[e]=E,i({global:!0,constructor:!0,forced:E!=b},w),m(E,e),T||y.setStrong(E,e,v),E}})),EL=z(((e,t)=>{"use strict";var i=ji().f,r=Ya(),n=Ev(),s=pl(),a=yc(),o=ga(),l=vc(),h=zw(),u=C1(),c=Um(),p=Ar(),d=Gd().fastKey,f=us(),m=f.set,g=f.getterFor;t.exports={getConstructor:function(e,t,h,u){var c=e((function(e,i){a(e,f),m(e,{type:t,index:r(null),first:void 0,last:void 0,size:0}),p||(e.size=0),o(i)||l(i,e[u],{that:e,AS_ENTRIES:h})})),f=c.prototype,y=g(t),v=function(e,t,i){var r,n,s=y(e),a=T(e,t);return a?a.value=i:(s.last=a={index:n=d(t,!0),key:t,value:i,previous:r=s.last,next:void 0,removed:!1},s.first||(s.first=a),r&&(r.next=a),p?s.size++:e.size++,"F"!==n&&(s.index[n]=a)),e},T=function(e,t){var i,r=y(e),n=d(t);if("F"!==n)return r.index[n];for(i=r.first;i;i=i.next)if(i.key==t)return i};return n(f,{clear:function(){for(var e=y(this),t=e.index,i=e.first;i;)i.removed=!0,i.previous&&(i.previous=i.previous.next=void 0),delete t[i.index],i=i.next;e.first=e.last=void 0,p?e.size=0:this.size=0},delete:function(e){var t=this,i=y(t),r=T(t,e);if(r){var n=r.next,s=r.previous;delete i.index[r.index],r.removed=!0,s&&(s.next=n),n&&(n.previous=s),i.first==r&&(i.first=n),i.last==r&&(i.last=s),p?i.size--:t.size--}return!!r},forEach:function(e){for(var t,i=y(this),r=s(e,arguments.length>1?arguments[1]:void 0);t=t?t.next:i.first;)for(r(t.value,t.key,this);t&&t.removed;)t=t.previous},has:function(e){return!!T(this,e)}}),n(f,h?{get:function(e){var t=T(this,e);return t&&t.value},set:function(e,t){return v(this,0===e?0:e,t)}}:{add:function(e){return v(this,e=0===e?0:e,e)}}),p&&i(f,"size",{get:function(){return y(this).size}}),c},setStrong:function(e,t,i){var r=t+" Iterator",n=g(t),s=g(r);h(e,t,(function(e,t){m(this,{type:r,target:e,state:n(e),kind:t,last:void 0})}),(function(){for(var e=s(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),c(t)}}})),VK=z((()=>{"use strict";H1()("Map",(function(e){return function(){return e(this,arguments.length?arguments[0]:void 0)}}),EL())})),zK=z((()=>{VK()})),bL=z(((e,t)=>{var i=Math.log;t.exports=Math.log1p||function(e){var t=+e;return t>-1e-8&&t<1e-8?t-t*t/2:i(1+t)}})),qK=z((()=>{var e=He(),t=bL(),i=Math.acosh,r=Math.log,n=Math.sqrt,s=Math.LN2;e({target:"Math",stat:!0,forced:!i||710!=Math.floor(i(Number.MAX_VALUE))||i(1/0)!=1/0},{acosh:function(e){var i=+e;return i<1?NaN:i>94906265.62425156?r(i)+s:t(i-1+n(i-1)*n(i+1))}})})),$K=z((()=>{var e=He(),t=Math.asinh,i=Math.log,r=Math.sqrt;e({target:"Math",stat:!0,forced:!(t&&1/t(0)>0)},{asinh:function e(t){var n=+t;return isFinite(n)&&0!=n?n<0?-e(-n):i(n+r(n*n+1)):n}})})),ZK=z((()=>{var e=He(),t=Math.atanh,i=Math.log;e({target:"Math",stat:!0,forced:!(t&&1/t(-0)<0)},{atanh:function(e){var t=+e;return 0==t?t:i((1+t)/(1-t))/2}})})),pR=z(((e,t)=>{t.exports=Math.sign||function(e){var t=+e;return 0==t||t!=t?t:t<0?-1:1}})),QK=z((()=>{var e=He(),t=pR(),i=Math.abs,r=Math.pow;e({target:"Math",stat:!0},{cbrt:function(e){var n=+e;return t(n)*r(i(n),1/3)}})})),eZ=z((()=>{var e=He(),t=Math.floor,i=Math.log,r=Math.LOG2E;e({target:"Math",stat:!0},{clz32:function(e){var n=e>>>0;return n?31-t(i(n+.5)*r):32}})})),k1=z(((e,t)=>{var i=Math.expm1,r=Math.exp;t.exports=!i||i(10)>22025.465794806718||i(10)<22025.465794806718||-2e-17!=i(-2e-17)?function(e){var t=+e;return 0==t?t:t>-1e-6&&t<1e-6?t+t*t/2:r(t)-1}:i})),iZ=z((()=>{var e=He(),t=k1(),i=Math.cosh,r=Math.abs,n=Math.E;e({target:"Math",stat:!0,forced:!i||i(710)===1/0},{cosh:function(e){var i=t(r(e)-1)+1;return(i+1/(i*n*n))*(n/2)}})})),sZ=z((()=>{var e=He(),t=k1();e({target:"Math",stat:!0,forced:t!=Math.expm1},{expm1:t})})),oZ=z(((e,t)=>{var i=pR(),r=Math.abs,n=Math.pow,s=n(2,-52),a=n(2,-23),o=n(2,127)*(2-a),l=n(2,-126);t.exports=Math.fround||function(e){var t,n,h=+e,u=r(h),c=i(h);return uo||n!=n?c*(1/0):c*n}})),lZ=z((()=>{He()({target:"Math",stat:!0},{fround:oZ()})})),uZ=z((()=>{var e=He(),t=Math.hypot,i=Math.abs,r=Math.sqrt;e({target:"Math",stat:!0,arity:2,forced:!!t&&t(1/0,NaN)!==1/0},{hypot:function(e,t){for(var n,s,a=0,o=0,l=arguments.length,h=0;o0?a+=(s=n/h)*s:a+=n;return h===1/0?1/0:h*r(a)}})})),pZ=z((()=>{var e=He(),t=Dt(),i=Math.imul;e({target:"Math",stat:!0,forced:t((function(){return-5!=i(4294967295,5)||2!=i.length}))},{imul:function(e,t){var i=65535,r=+e,n=+t,s=i&r,a=i&n;return 0|s*a+((i&r>>>16)*a+s*(i&n>>>16)<<16>>>0)}})})),wL=z(((e,t)=>{var i=Math.log,r=Math.LOG10E;t.exports=Math.log10||function(e){return i(e)*r}})),fZ=z((()=>{He()({target:"Math",stat:!0},{log10:wL()})})),mZ=z((()=>{He()({target:"Math",stat:!0},{log1p:bL()})})),gZ=z((()=>{var e=He(),t=Math.log,i=Math.LN2;e({target:"Math",stat:!0},{log2:function(e){return t(e)/i}})})),vZ=z((()=>{He()({target:"Math",stat:!0},{sign:pR()})})),EZ=z((()=>{var e=He(),t=Dt(),i=k1(),r=Math.abs,n=Math.exp,s=Math.E;e({target:"Math",stat:!0,forced:t((function(){return-2e-17!=Math.sinh(-2e-17)}))},{sinh:function(e){var t=+e;return r(t)<1?(i(t)-i(-t))/2:(n(t-1)-n(-t-1))*(s/2)}})})),IZ=z((()=>{var e=He(),t=k1(),i=Math.exp;e({target:"Math",stat:!0},{tanh:function(e){var r=+e,n=t(r),s=t(-r);return n==1/0?1:s==1/0?-1:(n-s)/(i(r)+i(-r))}})})),_Z=z((()=>{Xa()(Math,"Math",!0)})),SZ=z((()=>{He()({target:"Math",stat:!0},{trunc:A2()})})),G1=z(((e,t)=>{var i=Bt();t.exports=i(1..valueOf)})),V1=z(((e,t)=>{t.exports="\t\n\v\f\r                 \u2028\u2029\ufeff"})),zm=z(((e,t)=>{var i=Bt(),r=cs(),n=mi(),s=V1(),a=i("".replace),o="["+s+"]",l=RegExp("^"+o+o+"*"),h=RegExp(o+o+"*$"),u=function(e){return function(t){var i=n(r(t));return 1&e&&(i=a(i,l,"")),2&e&&(i=a(i,h,"")),i}};t.exports={start:u(1),end:u(2),trim:u(3)}})),FZ=z((()=>{"use strict";var e=He(),t=Gn(),i=Ar(),r=rr(),n=xw(),s=Bt(),a=cv(),o=Si(),l=Fm(),h=Do(),u=Dd(),c=l1(),p=Dt(),d=qh().f,f=Us().f,m=ji().f,g=G1(),y=zm().trim,v="Number",T=r[v],x=n[v],b=T.prototype,_=r.TypeError,E=s("".slice),w=s("".charCodeAt),S=function(e){var t=c(e,"number");return"bigint"==typeof t?t:I(t)},I=function(e){var t,i,r,n,s,a,o,l,h=c(e,"number");if(u(h))throw _("Cannot convert a Symbol value to a number");if("string"==typeof h&&h.length>2)if(h=y(h),43===(t=w(h,0))||45===t){if(88===(i=w(h,2))||120===i)return NaN}else if(48===t){switch(w(h,1)){case 66:case 98:r=2,n=49;break;case 79:case 111:r=8,n=55;break;default:return+h}for(a=(s=E(h,2)).length,o=0;on)return NaN;return parseInt(s,r)}return+h},M=a(v,!T(" 0o1")||!T("0b1")||T("+0x1")),A=function(e){return h(b,e)&&p((function(){g(e)}))},D=function(e){var t=arguments.length<1?0:T(S(e));return A(this)?l(Object(t),this,D):t};D.prototype=b,M&&!t&&(b.constructor=D),e({global:!0,constructor:!0,wrap:!0,forced:M},{Number:D});var O=function(e,t){for(var r,n=i?d(t):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,isFinite,isInteger,isNaN,isSafeInteger,parseFloat,parseInt,fromString,range".split(","),s=0;n.length>s;s++)o(t,r=n[s])&&!o(e,r)&&m(e,r,f(t,r))};t&&x&&O(n[v],x),(M||t)&&O(n[v],T)})),HZ=z((()=>{He()({target:"Number",stat:!0,nonConfigurable:!0,nonWritable:!0},{EPSILON:Math.pow(2,-52)})})),BZ=z(((e,t)=>{var i=rr().isFinite;t.exports=Number.isFinite||function(e){return"number"==typeof e&&i(e)}})),kZ=z((()=>{He()({target:"Number",stat:!0},{isFinite:BZ()})})),yR=z(((e,t)=>{var i=ai(),r=Math.floor;t.exports=Number.isInteger||function(e){return!i(e)&&isFinite(e)&&r(e)===e}})),VZ=z((()=>{He()({target:"Number",stat:!0},{isInteger:yR()})})),zZ=z((()=>{He()({target:"Number",stat:!0},{isNaN:function(e){return e!=e}})})),jZ=z((()=>{var e=He(),t=yR(),i=Math.abs;e({target:"Number",stat:!0},{isSafeInteger:function(e){return t(e)&&i(e)<=9007199254740991}})})),WZ=z((()=>{He()({target:"Number",stat:!0,nonConfigurable:!0,nonWritable:!0},{MAX_SAFE_INTEGER:9007199254740991})})),qZ=z((()=>{He()({target:"Number",stat:!0,nonConfigurable:!0,nonWritable:!0},{MIN_SAFE_INTEGER:-9007199254740991})})),OL=z(((e,t)=>{var i=rr(),r=Dt(),n=Bt(),s=mi(),a=zm().trim,o=V1(),l=n("".charAt),h=i.parseFloat,u=i.Symbol,c=u&&u.iterator,p=1/h(o+"-0")!=-1/0||c&&!r((function(){h(Object(c))}));t.exports=p?function(e){var t=a(s(e)),i=h(t);return 0===i&&"-"==l(t,0)?-0:i}:h})),JZ=z((()=>{var e=He(),t=OL();e({target:"Number",stat:!0,forced:Number.parseFloat!=t},{parseFloat:t})})),PL=z(((e,t)=>{var i=rr(),r=Dt(),n=Bt(),s=mi(),a=zm().trim,o=V1(),l=i.parseInt,h=i.Symbol,u=h&&h.iterator,c=/^[+-]?0x/i,p=n(c.exec),d=8!==l(o+"08")||22!==l(o+"0x16")||u&&!r((function(){l(Object(u))}));t.exports=d?function(e,t){var i=a(s(e));return l(i,t>>>0||(p(c,i)?16:10))}:l})),aJ=z((()=>{var e=He(),t=PL();e({target:"Number",stat:!0,forced:Number.parseInt!=t},{parseInt:t})})),hJ=z((()=>{"use strict";var e=He(),t=Bt(),i=gs(),r=G1(),n=L1(),s=wL(),a=Dt(),o=RangeError,l=String,h=isFinite,u=Math.abs,c=Math.floor,p=Math.pow,d=Math.round,f=t(1..toExponential),m=t(n),g=t("".slice),y="-6.9000e-11"===f(-69e-12,4)&&"1.25e+0"===f(1.255,2)&&"1.235e+4"===f(12345,3)&&"3e+1"===f(25,0),v=a((function(){f(1,1/0)}))&&a((function(){f(1,-1/0)})),T=!a((function(){f(1/0,1/0)}))&&!a((function(){f(NaN,1/0)}));e({target:"Number",proto:!0,forced:!y||!v||!T},{toExponential:function(e){var t=r(this);if(void 0===e)return f(t);var n=i(e);if(!h(t))return String(t);if(n<0||n>20)throw o("Incorrect fraction digits");if(y)return f(t,n);var a="",v="",T=0,x="",b="";if(t<0&&(a="-",t=-t),0===t)T=0,v=m("0",n+1);else{var _=s(t);T=c(_);var E=0,w=p(10,T-n);2*t>=(2*(E=d(t/w))+1)*w&&(E+=1),E>=p(10,n+1)&&(E/=10,T+=1),v=l(E)}return 0!==n&&(v=g(v,0,1)+"."+g(v,1)),0===T?(x="+",b="0"):(x=T>0?"+":"-",b=l(u(T))),a+(v+="e"+x+b)}})})),vJ=z((()=>{"use strict";var e=He(),t=Bt(),i=gs(),r=G1(),n=L1(),s=Dt(),a=RangeError,o=String,l=Math.floor,h=t(n),u=t("".slice),c=t(1..toFixed),p=function(e,t,i){return 0===t?i:t%2==1?p(e,t-1,i*e):p(e*e,t/2,i)},d=function(e,t,i){for(var r=-1,n=i;++r<6;)n+=t*e[r],e[r]=n%1e7,n=l(n/1e7)},f=function(e,t){for(var i=6,r=0;--i>=0;)r+=e[i],e[i]=l(r/t),r=r%t*1e7},m=function(e){for(var t=6,i="";--t>=0;)if(""!==i||0===t||0!==e[t]){var r=o(e[t]);i=""===i?r:i+h("0",7-r.length)+r}return i};e({target:"Number",proto:!0,forced:s((function(){return"0.000"!==c(8e-5,3)||"1"!==c(.9,0)||"1.25"!==c(1.255,2)||"1000000000000000128"!==c(0xde0b6b3a7640080,0)}))||!s((function(){c({})}))},{toFixed:function(e){var t,n,s,l,c=r(this),g=i(e),y=[0,0,0,0,0,0],v="",T="0";if(g<0||g>20)throw a("Incorrect fraction digits");if(c!=c)return"NaN";if(c<=-1e21||c>=1e21)return o(c);if(c<0&&(v="-",c=-c),c>1e-21)if(t=function(e){for(var t=0,i=e;i>=4096;)t+=12,i/=4096;for(;i>=2;)t+=1,i/=2;return t}(c*p(2,69,1))-69,n=t<0?c*p(2,-t,1):c/p(2,t,1),n*=4503599627370496,(t=52-t)>0){for(d(y,0,n),s=g;s>=7;)d(y,1e7,0),s-=7;for(d(y,p(10,s,1),0),s=t-1;s>=23;)f(y,1<<23),s-=23;f(y,1<0?T=v+((l=T.length)<=g?"0."+h("0",g-l)+T:u(T,0,l-g)+"."+u(T,l-g)):T=v+T,T}})})),EJ=z((()=>{"use strict";var e=He(),t=Bt(),i=Dt(),r=G1(),n=t(1..toPrecision);e({target:"Number",proto:!0,forced:i((function(){return"1"!==n(1,void 0)}))||!i((function(){n({})}))},{toPrecision:function(e){return void 0===e?n(r(this)):n(r(this),e)}})})),BL=z(((e,t)=>{"use strict";var i=Ar(),r=Bt(),n=si(),s=Dt(),a=uv(),o=p1(),l=o1(),h=Hi(),u=wm(),c=Object.assign,p=Object.defineProperty,d=r([].concat);t.exports=!c||s((function(){if(i&&1!==c({b:1},c(p({},"a",{enumerable:!0,get:function(){p(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var e={},t={},r=Symbol(),n="abcdefghijklmnopqrst";return e[r]=7,n.split("").forEach((function(e){t[e]=e})),7!=c({},e)[r]||a(c({},t)).join("")!=n}))?function(e,t){for(var r=h(e),s=arguments.length,c=1,p=o.f,f=l.f;s>c;)for(var m,g=u(arguments[c++]),y=p?d(a(g),p(g)):a(g),v=y.length,T=0;v>T;)m=y[T++],(!i||n(f,g,m))&&(r[m]=g[m]);return r}:c})),SJ=z((()=>{var e=He(),t=BL();e({target:"Object",stat:!0,arity:2,forced:Object.assign!==t},{assign:t})})),wJ=z((()=>{He()({target:"Object",stat:!0,sham:!Ar()},{create:Ya()})})),q1=z(((e,t)=>{"use strict";var i=Gn(),r=rr(),n=Dt(),s=Yw();t.exports=i||!n((function(){if(!(s&&s<535)){var e=Math.random();__defineSetter__.call(null,e,(function(){})),delete r[e]}}))})),DJ=z((()=>{"use strict";var e=He(),t=Ar(),i=q1(),r=ms(),n=Hi(),s=ji();t&&e({target:"Object",proto:!0,forced:i},{__defineGetter__:function(e,t){s.f(n(this),e,{get:r(t),enumerable:!0,configurable:!0})}})})),AJ=z((()=>{var e=He(),t=Ar(),i=yw().f;e({target:"Object",stat:!0,forced:Object.defineProperties!==i,sham:!t},{defineProperties:i})})),PJ=z((()=>{var e=He(),t=Ar(),i=ji().f;e({target:"Object",stat:!0,forced:Object.defineProperty!==i,sham:!t},{defineProperty:i})})),NJ=z((()=>{"use strict";var e=He(),t=Ar(),i=q1(),r=ms(),n=Hi(),s=ji();t&&e({target:"Object",proto:!0,forced:i},{__defineSetter__:function(e,t){s.f(n(this),e,{set:r(t),enumerable:!0,configurable:!0})}})})),kL=z(((e,t)=>{var i=Ar(),r=Bt(),n=uv(),s=va(),a=r(o1().f),o=r([].push),l=function(e){return function(t){for(var r,l=s(t),h=n(l),u=h.length,c=0,p=[];u>c;)r=h[c++],(!i||a(l,r))&&o(p,e?[r,l[r]]:l[r]);return p}};t.exports={entries:l(!0),values:l(!1)}})),UJ=z((()=>{var e=He(),t=kL().entries;e({target:"Object",stat:!0},{entries:function(e){return t(e)}})})),BJ=z((()=>{var e=He(),t=Vm(),i=Dt(),r=ai(),n=Gd().onFreeze,s=Object.freeze;e({target:"Object",stat:!0,forced:i((function(){s(1)})),sham:!t},{freeze:function(e){return s&&r(e)?s(n(e)):e}})})),kJ=z((()=>{var e=He(),t=vc(),i=Su();e({target:"Object",stat:!0},{fromEntries:function(e){var r={};return t(e,(function(e,t){i(r,e,t)}),{AS_ENTRIES:!0}),r}})})),zJ=z((()=>{var e=He(),t=Dt(),i=va(),r=Us().f,n=Ar(),s=t((function(){r(1)}));e({target:"Object",stat:!0,forced:!n||s,sham:!n},{getOwnPropertyDescriptor:function(e,t){return r(i(e),t)}})})),jJ=z((()=>{var e=He(),t=Ar(),i=mw(),r=va(),n=Us(),s=Su();e({target:"Object",stat:!0,sham:!t},{getOwnPropertyDescriptors:function(e){for(var t,a,o=r(e),l=n.f,h=i(o),u={},c=0;h.length>c;)void 0!==(a=l(o,t=h[c++]))&&s(u,t,a);return u}})})),WJ=z((()=>{var e=He(),t=Dt(),i=bw().f;e({target:"Object",stat:!0,forced:t((function(){return!Object.getOwnPropertyNames(1)}))},{getOwnPropertyNames:i})})),YJ=z((()=>{var e=He(),t=Dt(),i=Hi(),r=Ao(),n=Pw();e({target:"Object",stat:!0,forced:t((function(){r(1)})),sham:!n},{getPrototypeOf:function(e){return r(i(e))}})})),XJ=z((()=>{He()({target:"Object",stat:!0},{hasOwn:Si()})})),VL=z(((e,t)=>{t.exports=Object.is||function(e,t){return e===t?0!==e||1/e==1/t:e!=e&&t!=t}})),KJ=z((()=>{He()({target:"Object",stat:!0},{is:VL()})})),JJ=z((()=>{var e=He(),t=uR();e({target:"Object",stat:!0,forced:Object.isExtensible!==t},{isExtensible:t})})),eQ=z((()=>{var e=He(),t=Dt(),i=ai(),r=ma(),n=lR(),s=Object.isFrozen;e({target:"Object",stat:!0,forced:t((function(){s(1)}))||n},{isFrozen:function(e){return!(i(e)&&(!n||"ArrayBuffer"!=r(e)))||!!s&&s(e)}})})),rQ=z((()=>{var e=He(),t=Dt(),i=ai(),r=ma(),n=lR(),s=Object.isSealed;e({target:"Object",stat:!0,forced:t((function(){s(1)}))||n},{isSealed:function(e){return!(i(e)&&(!n||"ArrayBuffer"!=r(e)))||!!s&&s(e)}})})),nQ=z((()=>{var e=He(),t=Hi(),i=uv();e({target:"Object",stat:!0,forced:Dt()((function(){i(1)}))},{keys:function(e){return i(t(e))}})})),sQ=z((()=>{"use strict";var e=He(),t=Ar(),i=q1(),r=Hi(),n=Wh(),s=Ao(),a=Us().f;t&&e({target:"Object",proto:!0,forced:i},{__lookupGetter__:function(e){var t,i=r(this),o=n(e);do{if(t=a(i,o))return t.get}while(i=s(i))}})})),aQ=z((()=>{"use strict";var e=He(),t=Ar(),i=q1(),r=Hi(),n=Wh(),s=Ao(),a=Us().f;t&&e({target:"Object",proto:!0,forced:i},{__lookupSetter__:function(e){var t,i=r(this),o=n(e);do{if(t=a(i,o))return t.set}while(i=s(i))}})})),oQ=z((()=>{var e=He(),t=ai(),i=Gd().onFreeze,r=Vm(),n=Dt(),s=Object.preventExtensions;e({target:"Object",stat:!0,forced:n((function(){s(1)})),sham:!r},{preventExtensions:function(e){return s&&t(e)?s(i(e)):e}})})),Vd=z(((e,t)=>{var i=dw(),r=ji();t.exports=function(e,t,n){return n.get&&i(n.get,t,{getter:!0}),n.set&&i(n.set,t,{setter:!0}),r.f(e,t,n)}})),mQ=z((()=>{"use strict";var e=Ar(),t=Vd(),i=ai(),r=Hi(),n=cs(),s=Object.getPrototypeOf,a=Object.setPrototypeOf,o=Object.prototype,l="__proto__";if(e&&s&&a&&!(l in o))try{t(o,l,{configurable:!0,get:function(){return s(r(this))},set:function(e){var t=n(this);!i(e)&&null!==e||!i(t)||a(t,e)}})}catch(e){}})),gQ=z((()=>{var e=He(),t=ai(),i=Gd().onFreeze,r=Vm(),n=Dt(),s=Object.seal;e({target:"Object",stat:!0,forced:n((function(){s(1)})),sham:!r},{seal:function(e){return s&&t(e)?s(i(e)):e}})})),vQ=z((()=>{He()({target:"Object",stat:!0},{setPrototypeOf:gc()})})),TQ=z(((e,t)=>{"use strict";var i=gw(),r=mc();t.exports=i?{}.toString:function(){return"[object "+r(this)+"]"}})),EQ=z((()=>{var e=gw(),t=An(),i=TQ();e||t(Object.prototype,"toString",i,{unsafe:!0})})),bQ=z((()=>{var e=He(),t=kL().values;e({target:"Object",stat:!0},{values:function(e){return t(e)}})})),IQ=z((()=>{var e=He(),t=OL();e({global:!0,forced:parseFloat!=t},{parseFloat:t})})),SQ=z((()=>{var e=He(),t=PL();e({global:!0,forced:parseInt!=t},{parseInt:t})})),ip=z(((e,t)=>{var i=TypeError;t.exports=function(e,t){if(e{var i=bu();t.exports=/(?:ipad|iphone|ipod).*applewebkit/i.test(i)})),$1=z(((e,t)=>{var i,r,n,s,a=rr(),o=Co(),l=pl(),h=Ei(),u=Si(),c=Dt(),p=L2(),d=Pd(),f=c1(),m=ip(),g=YL(),y=Mu(),v=a.setImmediate,T=a.clearImmediate,x=a.process,b=a.Dispatch,_=a.Function,E=a.MessageChannel,w=a.String,S=0,I={},M="onreadystatechange";try{i=a.location}catch(e){}var A=function(e){if(u(I,e)){var t=I[e];delete I[e],t()}},D=function(e){return function(){A(e)}},O=function(e){A(e.data)},R=function(e){a.postMessage(w(e),i.protocol+"//"+i.host)};(!v||!T)&&(v=function(e){m(arguments.length,1);var t=h(e)?e:_(e),i=d(arguments,1);return I[++S]=function(){o(t,void 0,i)},r(S),S},T=function(e){delete I[e]},y?r=function(e){x.nextTick(D(e))}:b&&b.now?r=function(e){b.now(D(e))}:E&&!g?(s=(n=new E).port2,n.port1.onmessage=O,r=l(s.postMessage,s)):a.addEventListener&&h(a.postMessage)&&!a.importScripts&&i&&"file:"!==i.protocol&&!c(R)?(r=R,a.addEventListener("message",O,!1)):r=M in f("script")?function(e){p.appendChild(f("script"))[M]=function(){p.removeChild(this),A(e)}}:function(e){setTimeout(D(e),0)}),t.exports={set:v,clear:T}})),HQ=z(((e,t)=>{var i=bu(),r=rr();t.exports=/ipad|iphone|ipod/i.test(i)&&void 0!==r.Pebble})),BQ=z(((e,t)=>{var i=bu();t.exports=/web0s(?!.*chrome)/i.test(i)})),aF=z(((e,t)=>{var i,r,n,s,a,o,l,h,u=rr(),c=pl(),p=Us().f,d=$1().set,f=YL(),m=HQ(),g=BQ(),y=Mu(),v=u.MutationObserver||u.WebKitMutationObserver,T=u.document,x=u.process,b=u.Promise,_=p(u,"queueMicrotask"),E=_&&_.value;E||(i=function(){var e,t;for(y&&(e=x.domain)&&e.exit();r;){t=r.fn,r=r.next;try{t()}catch(e){throw r?s():n=void 0,e}}n=void 0,e&&e.enter()},f||y||g||!v||!T?!m&&b&&b.resolve?((l=b.resolve(void 0)).constructor=b,h=c(l.then,l),s=function(){h(i)}):y?s=function(){x.nextTick(i)}:(d=c(d,u),s=function(){d(i)}):(a=!0,o=T.createTextNode(""),new v(i).observe(o,{characterData:!0}),s=function(){o.data=a=!a})),t.exports=E||function(e){var t={fn:e,next:void 0};n&&(n.next=t),r||(r=t,s()),n=t}})),$Q=z(((e,t)=>{var i=rr();t.exports=function(e,t){var r=i.console;r&&r.error&&(1==arguments.length?r.error(e):r.error(e,t))}})),Av=z(((e,t)=>{t.exports=function(e){try{return{error:!1,value:e()}}catch(e){return{error:!0,value:e}}}})),QQ=z(((e,t)=>{var i=function(){this.head=null,this.tail=null};i.prototype={add:function(e){var t={item:e,next:null};this.head?this.tail.next=t:this.head=t,this.tail=t},get:function(){var e=this.head;if(e)return this.head=e.next,this.tail===e&&(this.tail=null),e.item}},t.exports=i})),Ym=z(((e,t)=>{var i=rr();t.exports=i.Promise})),_R=z(((e,t)=>{t.exports="object"==typeof Deno&&Deno&&"object"==typeof Deno.version})),oF=z(((e,t)=>{var i=_R(),r=Mu();t.exports=!i&&!r&&"object"==typeof window&&"object"==typeof document})),Ov=z(((e,t)=>{var i=rr(),r=Ym(),n=Ei(),s=cv(),a=lw(),o=fi(),l=oF(),h=_R(),u=Gn(),c=xu(),p=r&&r.prototype,d=o("species"),f=!1,m=n(i.PromiseRejectionEvent),g=s("Promise",(function(){var e=a(r),t=e!==String(r);if(!t&&66===c||u&&(!p.catch||!p.finally))return!0;if(!c||c<51||!/native code/.test(e)){var i=new r((function(e){e(1)})),n=function(e){e((function(){}),(function(){}))};if((i.constructor={})[d]=n,!(f=i.then((function(){}))instanceof n))return!0}return!t&&(l||h)&&!m}));t.exports={CONSTRUCTOR:g,REJECTION_EVENT:m,SUBCLASSING:f}})),zd=z(((e,t)=>{"use strict";var i=ms(),r=TypeError,n=function(e){var t,n;this.promise=new e((function(e,i){if(void 0!==t||void 0!==n)throw r("Bad Promise constructor");t=e,n=i})),this.resolve=i(t),this.reject=i(n)};t.exports.f=function(e){return new n(e)}})),wee=z((()=>{"use strict";var e,t,i,r=He(),n=Gn(),s=Mu(),a=rr(),o=si(),l=An(),h=gc(),u=Xa(),c=Um(),p=ms(),d=Ei(),f=ai(),m=yc(),g=km(),y=$1().set,v=aF(),T=$Q(),x=Av(),b=QQ(),_=us(),E=Ym(),w=Ov(),S=zd(),I="Promise",M=w.CONSTRUCTOR,A=w.REJECTION_EVENT,D=w.SUBCLASSING,O=_.getterFor(I),R=_.set,C=E&&E.prototype,N=E,P=C,L=a.TypeError,F=a.document,U=a.process,k=S.f,B=k,H=!!(F&&F.createEvent&&a.dispatchEvent),G="unhandledrejection",z=function(e){var t;return!(!f(e)||!d(t=e.then))&&t},V=function(e,t){var i,r,n,s=t.value,a=1==t.state,l=a?e.ok:e.fail,h=e.resolve,u=e.reject,c=e.domain;try{l?(a||(2===t.rejection&&q(t),t.rejection=1),!0===l?i=s:(c&&c.enter(),i=l(s),c&&(c.exit(),n=!0)),i===e.promise?u(L("Promise-chain cycle")):(r=z(i))?o(r,i,h,u):h(i)):u(s)}catch(e){c&&!n&&c.exit(),u(e)}},j=function(e,t){e.notified||(e.notified=!0,v((function(){for(var i,r=e.reactions;i=r.get();)V(i,e);e.notified=!1,t&&!e.rejection&&Y(e)})))},W=function(e,t,i){var r,n;H?((r=F.createEvent("Event")).promise=t,r.reason=i,r.initEvent(e,!1,!0),a.dispatchEvent(r)):r={promise:t,reason:i},!A&&(n=a["on"+e])?n(r):e===G&&T("Unhandled promise rejection",i)},Y=function(e){o(y,a,(function(){var t,i=e.facade,r=e.value;if(X(e)&&(t=x((function(){s?U.emit("unhandledRejection",r,i):W(G,i,r)})),e.rejection=s||X(e)?2:1,t.error))throw t.value}))},X=function(e){return 1!==e.rejection&&!e.parent},q=function(e){o(y,a,(function(){var t=e.facade;s?U.emit("rejectionHandled",t):W("rejectionhandled",t,e.value)}))},Z=function(e,t,i){return function(r){e(t,r,i)}},K=function(e,t,i){e.done||(e.done=!0,i&&(e=i),e.value=t,e.state=2,j(e,!0))},$=function(e,t,i){if(!e.done){e.done=!0,i&&(e=i);try{if(e.facade===t)throw L("Promise can't be resolved itself");var r=z(t);r?v((function(){var i={done:!1};try{o(r,t,Z($,i,e),Z(K,i,e))}catch(t){K(i,t,e)}})):(e.value=t,e.state=1,j(e,!1))}catch(t){K({done:!1},t,e)}}};if(M&&(P=(N=function(t){m(this,P),p(t),o(e,this);var i=O(this);try{t(Z($,i),Z(K,i))}catch(e){K(i,e)}}).prototype,(e=function(e){R(this,{type:I,done:!1,notified:!1,parent:!1,reactions:new b,rejection:!1,state:0,value:void 0})}).prototype=l(P,"then",(function(e,t){var i=O(this),r=k(g(this,N));return i.parent=!0,r.ok=!d(e)||e,r.fail=d(t)&&t,r.domain=s?U.domain:void 0,0==i.state?i.reactions.add(r):v((function(){V(r,i)})),r.promise})),t=function(){var t=new e,i=O(t);this.promise=t,this.resolve=Z($,i),this.reject=Z(K,i)},S.f=k=function(e){return e===N||undefined===e?new t(e):B(e)},!n&&d(E)&&C!==Object.prototype)){i=C.then,D||l(C,"then",(function(e,t){var r=this;return new N((function(e,t){o(i,r,e,t)})).then(e,t)}),{unsafe:!0});try{delete C.constructor}catch(e){}h&&h(C,P)}r({global:!0,constructor:!0,wrap:!0,forced:M},{Promise:N}),u(N,I,!1,!0),c(I)})),yF=z(((e,t)=>{var i=Ym(),r=R1(),n=Ov().CONSTRUCTOR;t.exports=n||!r((function(e){i.all(e).then(void 0,(function(){}))}))})),Mee=z((()=>{"use strict";var e=He(),t=si(),i=ms(),r=zd(),n=Av(),s=vc();e({target:"Promise",stat:!0,forced:yF()},{all:function(e){var a=this,o=r.f(a),l=o.resolve,h=o.reject,u=n((function(){var r=i(a.resolve),n=[],o=0,u=1;s(e,(function(e){var i=o++,s=!1;u++,t(r,a,e).then((function(e){s||(s=!0,n[i]=e,--u||l(n))}),h)})),--u||l(n)}));return u.error&&h(u.value),o.promise}})})),Cee=z((()=>{"use strict";var e,t=He(),i=Gn(),r=Ov().CONSTRUCTOR,n=Ym(),s=In(),a=Ei(),o=An(),l=n&&n.prototype;t({target:"Promise",proto:!0,forced:r,real:!0},{catch:function(e){return this.then(void 0,e)}}),!i&&a(n)&&(e=s("Promise").prototype.catch,l.catch!==e&&o(l,"catch",e,{unsafe:!0}))})),Aee=z((()=>{"use strict";var e=He(),t=si(),i=ms(),r=zd(),n=Av(),s=vc();e({target:"Promise",stat:!0,forced:yF()},{race:function(e){var a=this,o=r.f(a),l=o.reject,h=n((function(){var r=i(a.resolve);s(e,(function(e){t(r,a,e).then(o.resolve,l)}))}));return h.error&&l(h.value),o.promise}})})),Oee=z((()=>{"use strict";var e=He(),t=si(),i=zd();e({target:"Promise",stat:!0,forced:Ov().CONSTRUCTOR},{reject:function(e){var r=i.f(this);return t(r.reject,void 0,e),r.promise}})})),bF=z(((e,t)=>{var i=Yr(),r=ai(),n=zd();t.exports=function(e,t){if(i(e),r(t)&&t.constructor===e)return t;var s=n.f(e);return(0,s.resolve)(t),s.promise}})),Fee=z((()=>{"use strict";var e=He(),t=In(),i=Gn(),r=Ym(),n=Ov().CONSTRUCTOR,s=bF(),a=t("Promise"),o=i&&!n;e({target:"Promise",stat:!0,forced:i||n},{resolve:function(e){return s(o&&this===a?r:this,e)}})})),Hee=z((()=>{wee(),Mee(),Cee(),Aee(),Oee(),Fee()})),Uee=z((()=>{"use strict";var e=He(),t=si(),i=ms(),r=zd(),n=Av(),s=vc();e({target:"Promise",stat:!0},{allSettled:function(e){var a=this,o=r.f(a),l=o.resolve,h=o.reject,u=n((function(){var r=i(a.resolve),n=[],o=0,h=1;s(e,(function(e){var i=o++,s=!1;h++,t(r,a,e).then((function(e){s||(s=!0,n[i]={status:"fulfilled",value:e},--h||l(n))}),(function(e){s||(s=!0,n[i]={status:"rejected",reason:e},--h||l(n))}))})),--h||l(n)}));return u.error&&h(u.value),o.promise}})})),kee=z((()=>{"use strict";var e=He(),t=si(),i=ms(),r=In(),n=zd(),s=Av(),a=vc(),o="No one promise resolved";e({target:"Promise",stat:!0},{any:function(e){var l=this,h=r("AggregateError"),u=n.f(l),c=u.resolve,p=u.reject,d=s((function(){var r=i(l.resolve),n=[],s=0,u=1,d=!1;a(e,(function(e){var i=s++,a=!1;u++,t(r,l,e).then((function(e){a||d||(d=!0,c(e))}),(function(e){a||d||(a=!0,n[i]=e,--u||p(new h(n,o)))}))})),--u||p(new h(n,o))}));return d.error&&p(d.value),u.promise}})})),jee=z((()=>{"use strict";var e,t=He(),i=Gn(),r=Ym(),n=Dt(),s=In(),a=Ei(),o=km(),l=bF(),h=An(),u=r&&r.prototype;t({target:"Promise",proto:!0,real:!0,forced:!!r&&n((function(){u.finally.call({then:function(){}},(function(){}))}))},{finally:function(e){var t=o(this,s("Promise")),i=a(e);return this.then(i?function(i){return l(t,e()).then((function(){return i}))}:e,i?function(i){return l(t,e()).then((function(){throw i}))}:e)}}),!i&&a(r)&&(e=s("Promise").prototype.finally,u.finally!==e&&h(u,"finally",e,{unsafe:!0}))})),Wee=z((()=>{var e=He(),t=Co(),i=ms(),r=Yr();e({target:"Reflect",stat:!0,forced:!Dt()((function(){Reflect.apply((function(){}))}))},{apply:function(e,n,s){return t(i(e),n,r(s))}})})),Jee=z((()=>{var e=He(),t=In(),i=Co(),r=hL(),n=aR(),s=Yr(),a=ai(),o=Ya(),l=Dt(),h=t("Reflect","construct"),u=Object.prototype,c=[].push,p=l((function(){function e(){}return!(h((function(){}),[],e)instanceof e)})),d=!l((function(){h((function(){}))})),f=p||d;e({target:"Reflect",stat:!0,forced:f,sham:f},{construct:function(e,t){n(e),s(t);var l=arguments.length<3?e:n(arguments[2]);if(d&&!p)return h(e,t,l);if(e==l){switch(t.length){case 0:return new e;case 1:return new e(t[0]);case 2:return new e(t[0],t[1]);case 3:return new e(t[0],t[1],t[2]);case 4:return new e(t[0],t[1],t[2],t[3])}var f=[null];return i(c,f,t),new(i(r,e,f))}var m=l.prototype,g=o(a(m)?m:u),y=i(e,g,t);return a(y)?y:g}})})),tte=z((()=>{var e=He(),t=Ar(),i=Yr(),r=Wh(),n=ji();e({target:"Reflect",stat:!0,forced:Dt()((function(){Reflect.defineProperty(n.f({},1,{value:1}),1,{value:2})})),sham:!t},{defineProperty:function(e,t,s){i(e);var a=r(t);i(s);try{return n.f(e,a,s),!0}catch(e){return!1}}})})),rte=z((()=>{var e=He(),t=Yr(),i=Us().f;e({target:"Reflect",stat:!0},{deleteProperty:function(e,r){var n=i(t(e),r);return!(n&&!n.configurable)&&delete e[r]}})})),wF=z(((e,t)=>{var i=Si();t.exports=function(e){return void 0!==e&&(i(e,"value")||i(e,"writable"))}})),ate=z((()=>{var e=He(),t=si(),i=ai(),r=Yr(),n=wF(),s=Us(),a=Ao();e({target:"Reflect",stat:!0},{get:function e(o,l){var h,u,c=arguments.length<3?o:arguments[2];return r(o)===c?o[l]:(h=s.f(o,l))?n(h)?h.value:void 0===h.get?void 0:t(h.get,c):i(u=a(o))?e(u,l,c):void 0}})})),ote=z((()=>{var e=He(),t=Ar(),i=Yr(),r=Us();e({target:"Reflect",stat:!0,sham:!t},{getOwnPropertyDescriptor:function(e,t){return r.f(i(e),t)}})})),lte=z((()=>{var e=He(),t=Yr(),i=Ao();e({target:"Reflect",stat:!0,sham:!Pw()},{getPrototypeOf:function(e){return i(t(e))}})})),cte=z((()=>{He()({target:"Reflect",stat:!0},{has:function(e,t){return t in e}})})),ute=z((()=>{var e=He(),t=Yr(),i=uR();e({target:"Reflect",stat:!0},{isExtensible:function(e){return t(e),i(e)}})})),hte=z((()=>{He()({target:"Reflect",stat:!0},{ownKeys:mw()})})),pte=z((()=>{var e=He(),t=In(),i=Yr();e({target:"Reflect",stat:!0,sham:!Vm()},{preventExtensions:function(e){i(e);try{var r=t("Object","preventExtensions");return r&&r(e),!0}catch(e){return!1}}})})),vte=z((()=>{var e=He(),t=si(),i=Yr(),r=ai(),n=wF(),s=Dt(),a=ji(),o=Us(),l=Ao(),h=Mo();e({target:"Reflect",stat:!0,forced:s((function(){var e=function(){},t=a.f(new e,"a",{configurable:!0});return!1!==Reflect.set(e.prototype,"a",1,t)}))},{set:function e(s,u,c){var p,d,f,m=arguments.length<4?s:arguments[3],g=o.f(i(s),u);if(!g){if(r(d=l(s)))return e(d,u,c,m);g=h(0)}if(n(g)){if(!1===g.writable||!r(m))return!1;if(p=o.f(m,u)){if(p.get||p.set||!1===p.writable)return!1;p.value=c,a.f(m,u,p)}else a.f(m,u,h(0,c))}else{if(void 0===(f=g.set))return!1;t(f,m,c)}return!0}})})),Tte=z((()=>{var e=He(),t=Yr(),i=sN(),r=gc();r&&e({target:"Reflect",stat:!0},{setPrototypeOf:function(e,n){t(e),i(n);try{return r(e,n),!0}catch(e){return!1}}})})),Ete=z((()=>{var e=He(),t=rr(),i=Xa();e({global:!0},{Reflect:{}}),i(t.Reflect,"Reflect",!0)})),Hv=z(((e,t)=>{var i=ai(),r=ma(),n=fi()("match");t.exports=function(e){var t;return i(e)&&(void 0!==(t=e[n])?!!t:"RegExp"==r(e))}})),OR=z(((e,t)=>{"use strict";var i=Yr();t.exports=function(){var e=i(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}})),Uv=z(((e,t)=>{var i=si(),r=Si(),n=Do(),s=OR(),a=RegExp.prototype;t.exports=function(e){var t=e.flags;return void 0!==t||"flags"in a||r(e,"flags")||!n(a,e)?t:i(s,e)}})),Q1=z(((e,t)=>{var i=Dt(),r=rr().RegExp,n=i((function(){var e=r("a","y");return e.lastIndex=2,null!=e.exec("abcd")})),s=n||i((function(){return!r("a","y").sticky})),a=n||i((function(){var e=r("^r","gy");return e.lastIndex=2,null!=e.exec("str")}));t.exports={BROKEN_CARET:a,MISSED_STICKY:s,UNSUPPORTED_Y:n}})),PR=z(((e,t)=>{var i=Dt(),r=rr().RegExp;t.exports=i((function(){var e=r(".","s");return!(e.dotAll&&e.exec("\n")&&"s"===e.flags)}))})),AF=z(((e,t)=>{var i=Dt(),r=rr().RegExp;t.exports=i((function(){var e=r("(?b)","g");return"b"!==e.exec("b").groups.a||"bc"!=="b".replace(e,"$c")}))})),Fte=z((()=>{var e,t,i,r=Ar(),n=rr(),s=Bt(),a=cv(),o=Fm(),l=ya(),h=qh().f,u=Do(),c=Hv(),p=mi(),d=Uv(),f=Q1(),m=aN(),g=An(),y=Dt(),v=Si(),T=us().enforce,x=Um(),b=fi(),_=PR(),E=AF(),w=b("match"),S=n.RegExp,I=S.prototype,M=n.SyntaxError,A=s(I.exec),D=s("".charAt),O=s("".replace),R=s("".indexOf),C=s("".slice),N=/^\?<[^\s\d!#%&*+<=>@^][^\s!#%&*+<=>@^]*>/,P=/a/g,L=/a/g,F=new S(P)!==P,U=f.MISSED_STICKY,k=f.UNSUPPORTED_Y,B=r&&(!F||U||_||E||y((function(){return L[w]=!1,S(P)!=P||S(L)==L||"/a/i"!=S(P,"i")})));if(a("RegExp",B)){for(e=function(t,i){var r,n,s,a,h,f,m=u(I,this),g=c(t),y=void 0===i,x=[],b=t;if(!m&&g&&y&&t.constructor===e)return t;if((g||u(I,t))&&(t=t.source,y&&(i=d(b))),t=void 0===t?"":p(t),i=void 0===i?"":p(i),b=t,_&&"dotAll"in P&&((n=!!i&&R(i,"s")>-1)&&(i=O(i,/s/g,""))),r=i,U&&"sticky"in P&&((s=!!i&&R(i,"y")>-1)&&k&&(i=O(i,/y/g,""))),E&&(a=function(e){for(var t,i=e.length,r=0,n="",s=[],a={},o=!1,l=!1,h=0,u="";r<=i;r++){if("\\"===(t=D(e,r)))t+=D(e,++r);else if("]"===t)o=!1;else if(!o)switch(!0){case"["===t:o=!0;break;case"("===t:A(N,C(e,r+1))&&(r+=2,l=!0),n+=t,h++;continue;case">"===t&&l:if(""===u||v(a,u))throw new M("Invalid capture group name");a[u]=!0,s[s.length]=[u,h],l=!1,u="";continue}l?u+=t:n+=t}return[n,s]}(t),t=a[0],x=a[1]),h=o(S(t,i),m?this:I,e),(n||s||x.length)&&(f=T(h),n&&(f.dotAll=!0,f.raw=e(function(e){for(var t,i=e.length,r=0,n="",s=!1;r<=i;r++)"\\"!==(t=D(e,r))?s||"."!==t?("["===t?s=!0:"]"===t&&(s=!1),n+=t):n+="[\\s\\S]":n+=t+D(e,++r);return n}(t),r)),s&&(f.sticky=!0),x.length&&(f.groups=x)),t!==b)try{l(h,"source",""===b?"(?:)":b)}catch(e){}return h},t=h(S),i=0;t.length>i;)m(e,S,t[i++]);I.constructor=e,e.prototype=I,g(n,"RegExp",e,{constructor:!0})}x("RegExp")})),Ute=z((()=>{var e=Ar(),t=PR(),i=ma(),r=Vd(),n=us().get,s=RegExp.prototype,a=TypeError;e&&t&&r(s,"dotAll",{configurable:!0,get:function(){if(this!==s){if("RegExp"===i(this))return!!n(this).dotAll;throw a("Incompatible receiver, RegExp required")}}})})),tb=z(((e,t)=>{"use strict";var i,r,n=si(),s=Bt(),a=mi(),o=OR(),l=Q1(),h=Mm(),u=Ya(),c=us().get,p=PR(),d=AF(),f=h("native-string-replace",String.prototype.replace),m=RegExp.prototype.exec,g=m,y=s("".charAt),v=s("".indexOf),T=s("".replace),x=s("".slice),b=(r=/b*/g,n(m,i=/a/,"a"),n(m,r,"a"),0!==i.lastIndex||0!==r.lastIndex),_=l.BROKEN_CARET,E=void 0!==/()??/.exec("")[1];(b||E||_||p||d)&&(g=function(e){var t,i,r,s,l,h,p,d=this,w=c(d),S=a(e),I=w.raw;if(I)return I.lastIndex=d.lastIndex,t=n(g,I,S),d.lastIndex=I.lastIndex,t;var M=w.groups,A=_&&d.sticky,D=n(o,d),O=d.source,R=0,C=S;if(A&&(D=T(D,"y",""),-1===v(D,"g")&&(D+="g"),C=x(S,d.lastIndex),d.lastIndex>0&&(!d.multiline||d.multiline&&"\n"!==y(S,d.lastIndex-1))&&(O="(?: "+O+")",C=" "+C,R++),i=new RegExp("^(?:"+O+")",D)),E&&(i=new RegExp("^"+O+"$(?!\\s)",D)),b&&(r=d.lastIndex),s=n(m,A?i:d,C),A?s?(s.input=x(s.input,R),s[0]=x(s[0],R),s.index=d.lastIndex,d.lastIndex+=s[0].length):d.lastIndex=0:b&&s&&(d.lastIndex=d.global?s.index+s[0].length:r),E&&s&&s.length>1&&n(f,s[0],i,(function(){for(l=1;l{"use strict";var e=He(),t=tb();e({target:"RegExp",proto:!0,forced:/./.exec!==t},{exec:t})})),jte=z((()=>{var e=rr(),t=Ar(),i=Vd(),r=OR(),n=Dt(),s=e.RegExp,a=s.prototype;t&&n((function(){var e=!0;try{s(".","d")}catch(t){e=!1}var t={},i="",r=e?"dgimsy":"gimsy",n=function(e,r){Object.defineProperty(t,e,{get:function(){return i+=r,!0}})},o={dotAll:"s",global:"g",ignoreCase:"i",multiline:"m",sticky:"y"};for(var l in e&&(o.hasIndices="d"),o)n(l,o[l]);return Object.getOwnPropertyDescriptor(a,"flags").get.call(t)!==r||i!==r}))&&i(a,"flags",{configurable:!0,get:r})})),qte=z((()=>{var e=Ar(),t=Q1().MISSED_STICKY,i=ma(),r=Vd(),n=us().get,s=RegExp.prototype,a=TypeError;e&&t&&r(s,"sticky",{configurable:!0,get:function(){if(this!==s){if("RegExp"===i(this))return!!n(this).sticky;throw a("Incompatible receiver, RegExp required")}}})})),$te=z((()=>{"use strict";HR();var e,t,i=He(),r=si(),n=Ei(),s=Yr(),a=mi(),o=(e=!1,(t=/[ac]/).exec=function(){return e=!0,/./.exec.apply(this,arguments)},!0===t.test("abc")&&e),l=/./.test;i({target:"RegExp",proto:!0,forced:!o},{test:function(e){var t=s(this),i=a(e),o=t.exec;if(!n(o))return r(l,t,i);var h=r(o,t,i);return null!==h&&(s(h),!0)}})})),Jte=z((()=>{"use strict";var e=Am().PROPER,t=An(),i=Yr(),r=mi(),n=Dt(),s=Uv(),a="toString",o=RegExp.prototype[a],l=n((function(){return"/a/b"!=o.call({source:"a",flags:"b"})})),h=e&&o.name!=a;(l||h)&&t(RegExp.prototype,a,(function(){var e=i(this);return"/"+r(e.source)+"/"+r(s(e))}),{unsafe:!0})})),Qte=z((()=>{"use strict";H1()("Set",(function(e){return function(){return e(this,arguments.length?arguments[0]:void 0)}}),EL())})),ere=z((()=>{Qte()})),tre=z((()=>{"use strict";var e=He(),t=Bt(),i=cs(),r=gs(),n=mi(),s=Dt(),a=t("".charAt);e({target:"String",proto:!0,forced:s((function(){return"\ud842"!=="𠮷".at(-2)}))},{at:function(e){var t=n(i(this)),s=t.length,o=r(e),l=o>=0?o:s+o;return l<0||l>=s?void 0:a(t,l)}})})),rb=z(((e,t)=>{var i=Bt(),r=gs(),n=mi(),s=cs(),a=i("".charAt),o=i("".charCodeAt),l=i("".slice),h=function(e){return function(t,i){var h,u,c=n(s(t)),p=r(i),d=c.length;return p<0||p>=d?e?"":void 0:(h=o(c,p))<55296||h>56319||p+1===d||(u=o(c,p+1))<56320||u>57343?e?a(c,p):h:e?l(c,p,p+2):u-56320+(h-55296<<10)+65536}};t.exports={codeAt:h(!1),charAt:h(!0)}})),sre=z((()=>{"use strict";var e=He(),t=rb().codeAt;e({target:"String",proto:!0},{codePointAt:function(e){return t(this,e)}})})),UR=z(((e,t)=>{var i=Hv(),r=TypeError;t.exports=function(e){if(i(e))throw r("The method doesn't accept regular expressions");return e}})),BR=z(((e,t)=>{var i=fi()("match");t.exports=function(e){var t=/./;try{"/./"[e](t)}catch(r){try{return t[i]=!1,"/./"[e](t)}catch(e){}}return!1}})),pre=z((()=>{"use strict";var e,t=He(),i=Yh(),r=Us().f,n=qa(),s=mi(),a=UR(),o=cs(),l=BR(),h=Gn(),u=i("".endsWith),c=i("".slice),p=Math.min,d=l("endsWith");t({target:"String",proto:!0,forced:!!(h||d||(e=r(String.prototype,"endsWith"),!e||e.writable))&&!d},{endsWith:function(e){var t=s(o(this));a(e);var i=arguments.length>1?arguments[1]:void 0,r=t.length,l=void 0===i?r:p(n(i),r),h=s(e);return u?u(t,h,l):c(t,l-h.length,l)===h}})})),mre=z((()=>{var e=He(),t=Bt(),i=_u(),r=RangeError,n=String.fromCharCode,s=String.fromCodePoint,a=t([].join);e({target:"String",stat:!0,arity:1,forced:!!s&&1!=s.length},{fromCodePoint:function(e){for(var t,s=[],o=arguments.length,l=0;o>l;){if(t=+arguments[l++],i(t,1114111)!==t)throw r(t+" is not a valid code point");s[l]=t<65536?n(t):n(55296+((t-=65536)>>10),t%1024+56320)}return a(s,"")}})})),vre=z((()=>{"use strict";var e=He(),t=Bt(),i=UR(),r=cs(),n=mi(),s=BR(),a=t("".indexOf);e({target:"String",proto:!0,forced:!s("includes")},{includes:function(e){return!!~a(n(r(this)),n(i(e)),arguments.length>1?arguments[1]:void 0)}})})),VF=z((()=>{"use strict";var e=rb().charAt,t=mi(),i=us(),r=zw(),n=C1(),s="String Iterator",a=i.set,o=i.getterFor(s);r(String,"String",(function(e){a(this,{type:s,string:t(e),index:0})}),(function(){var t,i=o(this),r=i.string,s=i.index;return s>=r.length?n(void 0,!0):(t=e(r,s),i.index+=t.length,n(t,!1))}))})),ib=z(((e,t)=>{"use strict";HR();var i=Yh(),r=An(),n=tb(),s=Dt(),a=fi(),o=ya(),l=a("species"),h=RegExp.prototype;t.exports=function(e,t,u,c){var p=a(e),d=!s((function(){var t={};return t[p]=function(){return 7},7!=""[e](t)})),f=d&&!s((function(){var t=!1,i=/a/;return"split"===e&&((i={}).constructor={},i.constructor[l]=function(){return i},i.flags="",i[p]=/./[p]),i.exec=function(){return t=!0,null},i[p](""),!t}));if(!d||!f||u){var m=i(/./[p]),g=t(p,""[e],(function(e,t,r,s,a){var o=i(e),l=t.exec;return l===n||l===h.exec?d&&!a?{done:!0,value:m(t,r,s)}:{done:!0,value:o(r,t,s)}:{done:!1}}));r(String.prototype,e,g[0]),r(h,p,g[1])}c&&o(h[p],"sham",!0)}})),nb=z(((e,t)=>{"use strict";var i=rb().charAt;t.exports=function(e,t,r){return t+(r?i(e,t).length:1)}})),Gv=z(((e,t)=>{var i=si(),r=Yr(),n=Ei(),s=ma(),a=tb(),o=TypeError;t.exports=function(e,t){var l=e.exec;if(n(l)){var h=i(l,e,t);return null!==h&&r(h),h}if("RegExp"===s(e))return i(a,e,t);throw o("RegExp#exec called on incompatible receiver")}})),Cre=z((()=>{"use strict";var e=si(),t=ib(),i=Yr(),r=ga(),n=qa(),s=mi(),a=cs(),o=Iu(),l=nb(),h=Gv();t("match",(function(t,u,c){return[function(i){var n=a(this),l=r(i)?void 0:o(i,t);return l?e(l,i,n):new RegExp(i)[t](s(n))},function(e){var t=i(this),r=s(e),a=c(u,t,r);if(a.done)return a.value;if(!t.global)return h(t,r);var o=t.unicode;t.lastIndex=0;for(var p,d=[],f=0;null!==(p=h(t,r));){var m=s(p[0]);d[f]=m,""===m&&(t.lastIndex=l(r,n(t.lastIndex),o)),f++}return 0===f?null:d}]}))})),kre=z((()=>{"use strict";var e=He(),t=si(),i=Yh(),r=kw(),n=C1(),s=cs(),a=qa(),o=mi(),l=Yr(),h=ga(),u=ma(),c=Hv(),p=Uv(),d=Iu(),f=An(),m=Dt(),g=fi(),y=km(),v=nb(),T=Gv(),x=us(),b=Gn(),_=g("matchAll"),E="RegExp String",w=E+" Iterator",S=x.set,I=x.getterFor(w),M=RegExp.prototype,A=TypeError,D=i("".indexOf),O=i("".matchAll),R=!!O&&!m((function(){O("a",/./)})),C=r((function(e,t,i,r){S(this,{type:w,regexp:e,string:t,global:i,unicode:r,done:!1})}),E,(function(){var e=I(this);if(e.done)return n(void 0,!0);var t=e.regexp,i=e.string,r=T(t,i);return null===r?(e.done=!0,n(void 0,!0)):e.global?(""===o(r[0])&&(t.lastIndex=v(i,a(t.lastIndex),e.unicode)),n(r,!1)):(e.done=!0,n(r,!1))})),N=function(e){var t,i,r,n=l(this),s=o(e),h=y(n,RegExp),u=o(p(n));return t=new h(h===RegExp?n.source:n,u),i=!!~D(u,"g"),r=!!~D(u,"u"),t.lastIndex=a(n.lastIndex),new C(t,s,i,r)};e({target:"String",proto:!0,forced:R},{matchAll:function(e){var i,r,n,a,l=s(this);if(h(e)){if(R)return O(l,e)}else{if(c(e)&&(i=o(s(p(e))),!~D(i,"g")))throw A("`.matchAll` does not allow non-global regexes");if(R)return O(l,e);if(void 0===(n=d(e,_))&&b&&"RegExp"==u(e)&&(n=N),n)return t(n,e,l)}return r=o(l),a=new RegExp(e,"g"),b?t(N,a,r):a[_](r)}}),b||_ in M||f(M,_,N)})),$F=z(((e,t)=>{var i=bu();t.exports=/Version\/10(?:\.\d+){1,2}(?: [\w./]+)?(?: Mobile\/\w+)? Safari\//.test(i)})),Vre=z((()=>{"use strict";var e=He(),t=oR().end;e({target:"String",proto:!0,forced:$F()},{padEnd:function(e){return t(this,e,arguments.length>1?arguments[1]:void 0)}})})),zre=z((()=>{"use strict";var e=He(),t=oR().start;e({target:"String",proto:!0,forced:$F()},{padStart:function(e){return t(this,e,arguments.length>1?arguments[1]:void 0)}})})),Yre=z((()=>{var e=He(),t=Bt(),i=va(),r=Hi(),n=mi(),s=cn(),a=t([].push),o=t([].join);e({target:"String",stat:!0},{raw:function(e){for(var t=i(r(e).raw),l=s(t),h=arguments.length,u=[],c=0;l>c;){if(a(u,n(t[c++])),c===l)return o(u,"");c{He()({target:"String",proto:!0},{repeat:L1()})})),QF=z(((e,t)=>{var i=Bt(),r=Hi(),n=Math.floor,s=i("".charAt),a=i("".replace),o=i("".slice),l=/\$([$&'`]|\d{1,2}|<[^>]*>)/g,h=/\$([$&'`]|\d{1,2})/g;t.exports=function(e,t,i,u,c,p){var d=i+e.length,f=u.length,m=h;return void 0!==c&&(c=r(c),m=l),a(p,m,(function(r,a){var l;switch(s(a,0)){case"$":return"$";case"&":return e;case"`":return o(t,0,i);case"'":return o(t,d);case"<":l=c[o(a,1,-1)];break;default:var h=+a;if(0===h)return r;if(h>f){var p=n(h/10);return 0===p?r:p<=f?void 0===u[p-1]?s(a,1):u[p-1]+s(a,1):r}l=u[h-1]}return void 0===l?"":l}))}})),eie=z((()=>{"use strict";var e=Co(),t=si(),i=Bt(),r=ib(),n=Dt(),s=Yr(),a=Ei(),o=ga(),l=gs(),h=qa(),u=mi(),c=cs(),p=nb(),d=Iu(),f=QF(),m=Gv(),g=fi()("replace"),y=Math.max,v=Math.min,T=i([].concat),x=i([].push),b=i("".indexOf),_=i("".slice),E=function(e){return void 0===e?e:String(e)},w="$0"==="a".replace(/./,"$0"),S=!!/./[g]&&""===/./[g]("a","$0");r("replace",(function(i,r,n){var w=S?"$":"$0";return[function(e,i){var n=c(this),s=o(e)?void 0:d(e,g);return s?t(s,e,n,i):t(r,u(n),e,i)},function(t,i){var o=s(this),c=u(t);if("string"==typeof i&&-1===b(i,w)&&-1===b(i,"$<")){var d=n(r,o,c,i);if(d.done)return d.value}var g=a(i);g||(i=u(i));var S=o.global;if(S){var I=o.unicode;o.lastIndex=0}for(var M=[];;){var A=m(o,c);if(null===A||(x(M,A),!S))break;""===u(A[0])&&(o.lastIndex=p(c,h(o.lastIndex),I))}for(var D="",O=0,R=0;R=O&&(D+=_(c,O,N)+k,O=N+C.length)}return D+_(c,O)}]}),!!n((function(){var e=/./;return e.exec=function(){var e=[];return e.groups={a:"7"},e},"7"!=="".replace(e,"$")}))||!w||S)})),sie=z((()=>{"use strict";var e=He(),t=si(),i=Bt(),r=cs(),n=Ei(),s=ga(),a=Hv(),o=mi(),l=Iu(),h=Uv(),u=QF(),c=fi(),p=Gn(),d=c("replace"),f=TypeError,m=i("".indexOf),g=i("".replace),y=i("".slice),v=Math.max,T=function(e,t,i){return i>e.length?-1:""===t?i:m(e,t,i)};e({target:"String",proto:!0},{replaceAll:function(e,i){var c,x,b,_,E,w,S,I,M,A=r(this),D=0,O=0,R="";if(!s(e)){if((c=a(e))&&(x=o(r(h(e))),!~m(x,"g")))throw f("`.replaceAll` does not allow non-global regexes");if(b=l(e,d))return t(b,e,A,i);if(p&&c)return g(o(A),e,i)}for(_=o(A),E=o(e),(w=n(i))||(i=o(i)),S=E.length,I=v(1,S),D=T(_,E,0);-1!==D;)M=w?o(i(E,D,_)):u(E,_,D,[],void 0,i),R+=y(_,O,D)+M,O=D+S,D=T(_,E,D+I);return O<_.length&&(R+=y(_,O)),R}})})),lie=z((()=>{"use strict";var e=si(),t=ib(),i=Yr(),r=ga(),n=cs(),s=VL(),a=mi(),o=Iu(),l=Gv();t("search",(function(t,h,u){return[function(i){var s=n(this),l=r(i)?void 0:o(i,t);return l?e(l,i,s):new RegExp(i)[t](a(s))},function(e){var t=i(this),r=a(e),n=u(h,t,r);if(n.done)return n.value;var o=t.lastIndex;s(o,0)||(t.lastIndex=0);var c=l(t,r);return s(t.lastIndex,o)||(t.lastIndex=o),null===c?-1:c.index}]}))})),fie=z((()=>{"use strict";var e=Co(),t=si(),i=Bt(),r=ib(),n=Yr(),s=ga(),a=Hv(),o=cs(),l=km(),h=nb(),u=qa(),c=mi(),p=Iu(),d=hv(),f=Gv(),m=tb(),g=Q1(),y=Dt(),v=g.UNSUPPORTED_Y,T=4294967295,x=Math.min,b=[].push,_=i(/./.exec),E=i(b),w=i("".slice);r("split",(function(i,r,g){var y;return y="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(i,n){var s=c(o(this)),l=void 0===n?T:n>>>0;if(0===l)return[];if(void 0===i)return[s];if(!a(i))return t(r,s,i,l);for(var h,u,p,f=[],g=(i.ignoreCase?"i":"")+(i.multiline?"m":"")+(i.unicode?"u":"")+(i.sticky?"y":""),y=0,v=new RegExp(i.source,g+"g");(h=t(m,v,s))&&!((u=v.lastIndex)>y&&(E(f,w(s,y,h.index)),h.length>1&&h.index=l));)v.lastIndex===h.index&&v.lastIndex++;return y===s.length?(p||!_(v,""))&&E(f,""):E(f,w(s,y)),f.length>l?d(f,0,l):f}:"0".split(void 0,0).length?function(e,i){return void 0===e&&0===i?[]:t(r,this,e,i)}:r,[function(e,r){var n=o(this),a=s(e)?void 0:p(e,i);return a?t(a,e,n,r):t(y,c(n),e,r)},function(e,t){var i=n(this),s=c(e),a=g(y,i,s,t,y!==r);if(a.done)return a.value;var o=l(i,RegExp),p=i.unicode,d=(i.ignoreCase?"i":"")+(i.multiline?"m":"")+(i.unicode?"u":"")+(v?"g":"y"),m=new o(v?"^(?:"+i.source+")":i,d),b=void 0===t?T:t>>>0;if(0===b)return[];if(0===s.length)return null===f(m,s)?[s]:[];for(var _=0,S=0,I=[];S{"use strict";var e,t=He(),i=Yh(),r=Us().f,n=qa(),s=mi(),a=UR(),o=cs(),l=BR(),h=Gn(),u=i("".startsWith),c=i("".slice),p=Math.min,d=l("startsWith");t({target:"String",proto:!0,forced:!!(h||d||(e=r(String.prototype,"startsWith"),!e||e.writable))&&!d},{startsWith:function(e){var t=s(o(this));a(e);var i=n(p(arguments.length>1?arguments[1]:void 0,t.length)),r=s(e);return u?u(t,r,i):c(t,i,i+r.length)===r}})})),bie=z((()=>{"use strict";var e=He(),t=Bt(),i=cs(),r=gs(),n=mi(),s=t("".slice),a=Math.max,o=Math.min;e({target:"String",proto:!0,forced:!"".substr||"b"!=="ab".substr(-1)},{substr:function(e,t){var l,h,u=n(i(this)),c=u.length,p=r(e);return p===1/0&&(p=0),p<0&&(p=a(c+p,0)),(l=void 0===t?c:r(t))<=0||l===1/0?"":p>=(h=o(p+l,c))?"":s(u,p,h)}})})),jR=z(((e,t)=>{var i=Am().PROPER,r=Dt(),n=V1();t.exports=function(e){return r((function(){return!!n[e]()||"​…᠎"!=="​…᠎"[e]()||i&&n[e].name!==e}))}})),Sie=z((()=>{"use strict";var e=He(),t=zm().trim;e({target:"String",proto:!0,forced:jR()("trim")},{trim:function(){return t(this)}})})),s5=z(((e,t)=>{"use strict";var i=zm().end,r=jR();t.exports=r("trimEnd")?function(){return i(this)}:"".trimEnd})),Mie=z((()=>{var e=He(),t=s5();e({target:"String",proto:!0,name:"trimEnd",forced:"".trimRight!==t},{trimRight:t})})),Cie=z((()=>{Mie();var e=He(),t=s5();e({target:"String",proto:!0,name:"trimEnd",forced:"".trimEnd!==t},{trimEnd:t})})),a5=z(((e,t)=>{"use strict";var i=zm().start,r=jR();t.exports=r("trimStart")?function(){return i(this)}:"".trimStart})),Pie=z((()=>{var e=He(),t=a5();e({target:"String",proto:!0,name:"trimStart",forced:"".trimLeft!==t},{trimLeft:t})})),Lie=z((()=>{Pie();var e=He(),t=a5();e({target:"String",proto:!0,name:"trimStart",forced:"".trimStart!==t},{trimStart:t})})),Za=z(((e,t)=>{var i=Bt(),r=cs(),n=mi(),s=/"/g,a=i("".replace);t.exports=function(e,t,i,o){var l=n(r(e)),h="<"+t;return""!==i&&(h+=" "+i+'="'+a(n(o),s,""")+'"'),h+">"+l+""}})),Ja=z(((e,t)=>{var i=Dt();t.exports=function(e){return i((function(){var t=""[e]('"');return t!==t.toLowerCase()||t.split('"').length>3}))}})),Bie=z((()=>{"use strict";var e=He(),t=Za();e({target:"String",proto:!0,forced:Ja()("anchor")},{anchor:function(e){return t(this,"a","name",e)}})})),kie=z((()=>{"use strict";var e=He(),t=Za();e({target:"String",proto:!0,forced:Ja()("big")},{big:function(){return t(this,"big","","")}})})),Gie=z((()=>{"use strict";var e=He(),t=Za();e({target:"String",proto:!0,forced:Ja()("blink")},{blink:function(){return t(this,"blink","","")}})})),Vie=z((()=>{"use strict";var e=He(),t=Za();e({target:"String",proto:!0,forced:Ja()("bold")},{bold:function(){return t(this,"b","","")}})})),zie=z((()=>{"use strict";var e=He(),t=Za();e({target:"String",proto:!0,forced:Ja()("fixed")},{fixed:function(){return t(this,"tt","","")}})})),jie=z((()=>{"use strict";var e=He(),t=Za();e({target:"String",proto:!0,forced:Ja()("fontcolor")},{fontcolor:function(e){return t(this,"font","color",e)}})})),Wie=z((()=>{"use strict";var e=He(),t=Za();e({target:"String",proto:!0,forced:Ja()("fontsize")},{fontsize:function(e){return t(this,"font","size",e)}})})),qie=z((()=>{"use strict";var e=He(),t=Za();e({target:"String",proto:!0,forced:Ja()("italics")},{italics:function(){return t(this,"i","","")}})})),Yie=z((()=>{"use strict";var e=He(),t=Za();e({target:"String",proto:!0,forced:Ja()("link")},{link:function(e){return t(this,"a","href",e)}})})),Xie=z((()=>{"use strict";var e=He(),t=Za();e({target:"String",proto:!0,forced:Ja()("small")},{small:function(){return t(this,"small","","")}})})),$ie=z((()=>{"use strict";var e=He(),t=Za();e({target:"String",proto:!0,forced:Ja()("strike")},{strike:function(){return t(this,"strike","","")}})})),Kie=z((()=>{"use strict";var e=He(),t=Za();e({target:"String",proto:!0,forced:Ja()("sub")},{sub:function(){return t(this,"sub","","")}})})),Zie=z((()=>{"use strict";var e=He(),t=Za();e({target:"String",proto:!0,forced:Ja()("sup")},{sup:function(){return t(this,"sup","","")}})})),WR=z(((e,t)=>{var i=rr(),r=Dt(),n=R1(),s=wi().NATIVE_ARRAY_BUFFER_VIEWS,a=i.ArrayBuffer,o=i.Int8Array;t.exports=!s||!r((function(){o(1)}))||!r((function(){new o(-1)}))||!n((function(e){new o,new o(null),new o(1.5),new o(e)}),!0)||r((function(){return 1!==new o(new a(2),1,void 0).length}))})),tne=z(((e,t)=>{var i=gs(),r=RangeError;t.exports=function(e){var t=i(e);if(t<0)throw r("The argument can't be less than 0");return t}})),l5=z(((e,t)=>{var i=tne(),r=RangeError;t.exports=function(e,t){var n=i(e);if(n%t)throw r("Wrong offset");return n}})),nne=z(((e,t)=>{var i=mc(),r=Bt()("".slice);t.exports=function(e){return"Big"===r(i(e),0,3)}})),c5=z(((e,t)=>{var i=l1(),r=TypeError;t.exports=function(e){var t=i(e,"number");if("number"==typeof t)throw r("Can't convert number to bigint");return BigInt(t)}})),u5=z(((e,t)=>{var i=pl(),r=si(),n=aR(),s=Hi(),a=cn(),o=I1(),l=vv(),h=Nw(),u=nne(),c=wi().aTypedArrayConstructor,p=c5();t.exports=function(e){var t,d,f,m,g,y,v,T,x=n(this),b=s(e),_=arguments.length,E=_>1?arguments[1]:void 0,w=void 0!==E,S=l(b);if(S&&!h(S))for(T=(v=o(b,S)).next,b=[];!(y=r(T,v)).done;)b.push(y.value);for(w&&_>2&&(E=i(E,arguments[2])),d=a(b),f=new(c(x))(d),m=u(f),t=0;d>t;t++)g=w?E(b[t],t):b[t],f[t]=m?p(g):+g;return f}})),Ou=z(((e,t)=>{"use strict";var i=He(),r=rr(),n=si(),s=Ar(),a=WR(),o=wi(),l=N1(),h=yc(),u=Mo(),c=ya(),p=yR(),d=qa(),f=zN(),m=l5(),g=Wh(),y=Si(),v=mc(),T=ai(),x=Dd(),b=Ya(),_=Do(),E=gc(),w=qh().f,S=u5(),I=Rs().forEach,M=Um(),A=ji(),D=Us(),O=us(),R=Fm(),C=O.get,N=O.set,P=O.enforce,L=A.f,F=D.f,U=Math.round,k=r.RangeError,B=l.ArrayBuffer,H=B.prototype,G=l.DataView,z=o.NATIVE_ARRAY_BUFFER_VIEWS,V=o.TYPED_ARRAY_TAG,j=o.TypedArray,W=o.TypedArrayPrototype,Y=o.aTypedArrayConstructor,X=o.isTypedArray,q="BYTES_PER_ELEMENT",Z="Wrong length",K=function(e,t){Y(e);for(var i=0,r=t.length,n=new e(r);r>i;)n[i]=t[i++];return n},$=function(e,t){L(e,t,{get:function(){return C(this)[t]}})},J=function(e){var t;return _(H,e)||"ArrayBuffer"==(t=v(e))||"SharedArrayBuffer"==t},Q=function(e,t){return X(e)&&!x(t)&&t in e&&p(+t)&&t>=0},ee=function(e,t){return t=g(t),Q(e,t)?u(2,e[t]):F(e,t)},te=function(e,t,i){return t=g(t),!(Q(e,t)&&T(i)&&y(i,"value"))||y(i,"get")||y(i,"set")||i.configurable||y(i,"writable")&&!i.writable||y(i,"enumerable")&&!i.enumerable?L(e,t,i):(e[t]=i.value,e)};s?(z||(D.f=ee,A.f=te,$(W,"buffer"),$(W,"byteOffset"),$(W,"byteLength"),$(W,"length")),i({target:"Object",stat:!0,forced:!z},{getOwnPropertyDescriptor:ee,defineProperty:te}),t.exports=function(e,t,s){var o=e.match(/\d+$/)[0]/8,l=e+(s?"Clamped":"")+"Array",u="get"+e,p="set"+e,g=r[l],y=g,v=y&&y.prototype,x={},_=function(e,t){L(e,t,{get:function(){return function(e,t){var i=C(e);return i.view[u](t*o+i.byteOffset,!0)}(this,t)},set:function(e){return function(e,t,i){var r=C(e);s&&(i=(i=U(i))<0?0:i>255?255:255&i),r.view[p](t*o+r.byteOffset,i,!0)}(this,t,e)},enumerable:!0})};z?a&&(y=t((function(e,t,i,r){return h(e,v),R(T(t)?J(t)?void 0!==r?new g(t,m(i,o),r):void 0!==i?new g(t,m(i,o)):new g(t):X(t)?K(y,t):n(S,y,t):new g(f(t)),e,y)})),E&&E(y,j),I(w(g),(function(e){e in y||c(y,e,g[e])})),y.prototype=v):(y=t((function(e,t,i,r){h(e,v);var s,a,l,u=0,c=0;if(T(t)){if(!J(t))return X(t)?K(y,t):n(S,y,t);s=t,c=m(i,o);var p=t.byteLength;if(void 0===r){if(p%o||(a=p-c)<0)throw k(Z)}else if((a=d(r)*o)+c>p)throw k(Z);l=a/o}else l=f(t),s=new B(a=l*o);for(N(e,{buffer:s,byteOffset:c,byteLength:a,length:l,view:new G(s)});u{Ou()("Float32",(function(e){return function(t,i,r){return e(this,t,i,r)}}))})),wne=z((()=>{Ou()("Float64",(function(e){return function(t,i,r){return e(this,t,i,r)}}))})),Rne=z((()=>{Ou()("Int8",(function(e){return function(t,i,r){return e(this,t,i,r)}}))})),Mne=z((()=>{Ou()("Int16",(function(e){return function(t,i,r){return e(this,t,i,r)}}))})),Dne=z((()=>{Ou()("Int32",(function(e){return function(t,i,r){return e(this,t,i,r)}}))})),Cne=z((()=>{Ou()("Uint8",(function(e){return function(t,i,r){return e(this,t,i,r)}}))})),Ane=z((()=>{Ou()("Uint8",(function(e){return function(t,i,r){return e(this,t,i,r)}}),!0)})),One=z((()=>{Ou()("Uint16",(function(e){return function(t,i,r){return e(this,t,i,r)}}))})),Pne=z((()=>{Ou()("Uint32",(function(e){return function(t,i,r){return e(this,t,i,r)}}))})),Lne=z((()=>{"use strict";var e=wi(),t=cn(),i=gs(),r=e.aTypedArray;(0,e.exportTypedArrayMethod)("at",(function(e){var n=r(this),s=t(n),a=i(e),o=a>=0?a:s+a;return o<0||o>=s?void 0:n[o]}))})),Hne=z((()=>{"use strict";var e=Bt(),t=wi(),i=e(bN()),r=t.aTypedArray;(0,t.exportTypedArrayMethod)("copyWithin",(function(e,t){return i(r(this),e,t,arguments.length>2?arguments[2]:void 0)}))})),Bne=z((()=>{"use strict";var e=wi(),t=Rs().every,i=e.aTypedArray;(0,e.exportTypedArrayMethod)("every",(function(e){return t(i(this),e,arguments.length>1?arguments[1]:void 0)}))})),Gne=z((()=>{"use strict";var e=wi(),t=Bw(),i=c5(),r=mc(),n=si(),s=Bt(),a=Dt(),o=e.aTypedArray,l=e.exportTypedArrayMethod,h=s("".slice);l("fill",(function(e){var s=arguments.length;o(this);var a="Big"===h(r(this),0,3)?i(e):+e;return n(t,this,a,s>1?arguments[1]:void 0,s>2?arguments[2]:void 0)}),a((function(){var e=0;return new Int8Array(2).fill({valueOf:function(){return e++}}),1!==e})))})),zne=z(((e,t)=>{var i=cn();t.exports=function(e,t){for(var r=0,n=i(t),s=new e(n);n>r;)s[r]=t[r++];return s}})),hb=z(((e,t)=>{var i=wi(),r=km(),n=i.aTypedArrayConstructor,s=i.getTypedArrayConstructor;t.exports=function(e){return n(r(e,s(e)))}})),Yne=z(((e,t)=>{var i=zne(),r=hb();t.exports=function(e,t){return i(r(e),t)}})),$ne=z((()=>{"use strict";var e=wi(),t=Rs().filter,i=Yne(),r=e.aTypedArray;(0,e.exportTypedArrayMethod)("filter",(function(e){var n=t(r(this),e,arguments.length>1?arguments[1]:void 0);return i(this,n)}))})),Zne=z((()=>{"use strict";var e=wi(),t=Rs().find,i=e.aTypedArray;(0,e.exportTypedArrayMethod)("find",(function(e){return t(i(this),e,arguments.length>1?arguments[1]:void 0)}))})),Qne=z((()=>{"use strict";var e=wi(),t=Rs().findIndex,i=e.aTypedArray;(0,e.exportTypedArrayMethod)("findIndex",(function(e){return t(i(this),e,arguments.length>1?arguments[1]:void 0)}))})),tse=z((()=>{"use strict";var e=wi(),t=w1().findLast,i=e.aTypedArray;(0,e.exportTypedArrayMethod)("findLast",(function(e){return t(i(this),e,arguments.length>1?arguments[1]:void 0)}))})),ise=z((()=>{"use strict";var e=wi(),t=w1().findLastIndex,i=e.aTypedArray;(0,e.exportTypedArrayMethod)("findLastIndex",(function(e){return t(i(this),e,arguments.length>1?arguments[1]:void 0)}))})),sse=z((()=>{"use strict";var e=wi(),t=Rs().forEach,i=e.aTypedArray;(0,e.exportTypedArrayMethod)("forEach",(function(e){t(i(this),e,arguments.length>1?arguments[1]:void 0)}))})),ase=z((()=>{"use strict";var e=WR();(0,wi().exportTypedArrayStaticMethod)("from",u5(),e)})),lse=z((()=>{"use strict";var e=wi(),t=lv().includes,i=e.aTypedArray;(0,e.exportTypedArrayMethod)("includes",(function(e){return t(i(this),e,arguments.length>1?arguments[1]:void 0)}))})),use=z((()=>{"use strict";var e=wi(),t=lv().indexOf,i=e.aTypedArray;(0,e.exportTypedArrayMethod)("indexOf",(function(e){return t(i(this),e,arguments.length>1?arguments[1]:void 0)}))})),mse=z((()=>{"use strict";var e=rr(),t=Dt(),i=Bt(),r=wi(),n=A1(),s=fi()("iterator"),a=e.Uint8Array,o=i(n.values),l=i(n.keys),h=i(n.entries),u=r.aTypedArray,c=r.exportTypedArrayMethod,p=a&&a.prototype,d=!t((function(){p[s].call([1])})),f=!!p&&p.values&&p[s]===p.values&&"values"===p.values.name,m=function(){return o(u(this))};c("entries",(function(){return h(u(this))}),d),c("keys",(function(){return l(u(this))}),d),c("values",m,d||!f,{name:"values"}),c(s,m,d||!f,{name:"values"})})),vse=z((()=>{"use strict";var e=wi(),t=Bt(),i=e.aTypedArray,r=e.exportTypedArrayMethod,n=t([].join);r("join",(function(e){return n(i(this),e)}))})),Tse=z((()=>{"use strict";var e=wi(),t=Co(),i=FN(),r=e.aTypedArray;(0,e.exportTypedArrayMethod)("lastIndexOf",(function(e){var n=arguments.length;return t(i,r(this),n>1?[e,arguments[1]]:[e])}))})),bse=z((()=>{"use strict";var e=wi(),t=Rs().map,i=hb(),r=e.aTypedArray;(0,e.exportTypedArrayMethod)("map",(function(e){return t(r(this),e,arguments.length>1?arguments[1]:void 0,(function(e,t){return new(i(e))(t)}))}))})),Ise=z((()=>{"use strict";var e=wi(),t=WR(),i=e.aTypedArrayConstructor;(0,e.exportTypedArrayStaticMethod)("of",(function(){for(var e=0,t=arguments.length,r=new(i(this))(t);t>e;)r[e]=arguments[e++];return r}),t)})),Sse=z((()=>{"use strict";var e=wi(),t=O1().left,i=e.aTypedArray;(0,e.exportTypedArrayMethod)("reduce",(function(e){var r=arguments.length;return t(i(this),e,r,r>1?arguments[1]:void 0)}))})),Rse=z((()=>{"use strict";var e=wi(),t=O1().right,i=e.aTypedArray;(0,e.exportTypedArrayMethod)("reduceRight",(function(e){var r=arguments.length;return t(i(this),e,r,r>1?arguments[1]:void 0)}))})),Dse=z((()=>{"use strict";var e=wi(),t=e.aTypedArray,i=e.exportTypedArrayMethod,r=Math.floor;i("reverse",(function(){for(var e,i=this,n=t(i).length,s=r(n/2),a=0;a{"use strict";var e=rr(),t=si(),i=wi(),r=cn(),n=l5(),s=Hi(),a=Dt(),o=e.RangeError,l=e.Int8Array,h=l&&l.prototype,u=h&&h.set,c=i.aTypedArray,p=i.exportTypedArrayMethod,d=!a((function(){var e=new Uint8ClampedArray(2);return t(u,e,{length:1,0:3},1),3!==e[1]})),f=d&&i.NATIVE_ARRAY_BUFFER_VIEWS&&a((function(){var e=new l(2);return e.set(1),e.set("2",1),0!==e[0]||2!==e[1]}));p("set",(function(e){c(this);var i=n(arguments.length>1?arguments[1]:void 0,1),a=s(e);if(d)return t(u,this,a,i);var l=this.length,h=r(a),p=0;if(h+i>l)throw o("Wrong length");for(;p{"use strict";var e=wi(),t=hb(),i=Dt(),r=Pd(),n=e.aTypedArray;(0,e.exportTypedArrayMethod)("slice",(function(e,i){for(var s=r(n(this),e,i),a=t(this),o=0,l=s.length,h=new a(l);l>o;)h[o]=s[o++];return h}),i((function(){new Int8Array(1).slice()})))})),Bse=z((()=>{"use strict";var e=wi(),t=Rs().some,i=e.aTypedArray;(0,e.exportTypedArrayMethod)("some",(function(e){return t(i(this),e,arguments.length>1?arguments[1]:void 0)}))})),Wse=z((()=>{"use strict";var e=rr(),t=Yh(),i=Dt(),r=ms(),n=qw(),s=wi(),a=BN(),o=kN(),l=xu(),h=Yw(),u=s.aTypedArray,c=s.exportTypedArrayMethod,p=e.Uint16Array,d=p&&t(p.prototype.sort),f=!(!d||i((function(){d(new p(2),null)}))&&i((function(){d(new p(2),{})}))),m=!!d&&!i((function(){if(l)return l<74;if(a)return a<67;if(o)return!0;if(h)return h<602;var e,t,i=new p(516),r=Array(516);for(e=0;e<516;e++)t=e%4,i[e]=515-e,r[e]=e-2*t+3;for(d(i,(function(e,t){return(e/4|0)-(t/4|0)})),e=0;e<516;e++)if(i[e]!==r[e])return!0}));c("sort",(function(e){return void 0!==e&&r(e),m?d(this,e):n(u(this),(t=e,function(e,i){return void 0!==t?+t(e,i)||0:i!=i?-1:e!=e?1:0===e&&0===i?1/e>0&&1/i<0?1:-1:e>i}));var t}),!m||f)})),Xse=z((()=>{"use strict";var e=wi(),t=qa(),i=_u(),r=hb(),n=e.aTypedArray;(0,e.exportTypedArrayMethod)("subarray",(function(e,s){var a=n(this),o=a.length,l=i(e,o);return new(r(a))(a.buffer,a.byteOffset+l*a.BYTES_PER_ELEMENT,t((void 0===s?o:i(s,o))-l))}))})),Qse=z((()=>{"use strict";var e=rr(),t=Co(),i=wi(),r=Dt(),n=Pd(),s=e.Int8Array,a=i.aTypedArray,o=i.exportTypedArrayMethod,l=[].toLocaleString,h=!!s&&r((function(){l.call(new s(1))}));o("toLocaleString",(function(){return t(l,h?n(a(this)):a(this),n(arguments))}),r((function(){return[1,2].toLocaleString()!=new s([1,2]).toLocaleString()}))||!r((function(){s.prototype.toLocaleString.call([1,2])})))})),tae=z((()=>{"use strict";var e=wi().exportTypedArrayMethod,t=Dt(),i=rr(),r=Bt(),n=i.Uint8Array,s=n&&n.prototype||{},a=[].toString,o=r([].join);t((function(){a.call({})}))&&(a=function(){return o(this)});var l=s.toString!=a;e("toString",a,l)})),aae=z((()=>{"use strict";var e=He(),t=Bt(),i=mi(),r=String.fromCharCode,n=t("".charAt),s=t(/./.exec),a=t("".slice),o=/^[\da-f]{2}$/i,l=/^[\da-f]{4}$/i;e({global:!0},{unescape:function(e){for(var t,h,u=i(e),c="",p=u.length,d=0;d{"use strict";var i=Bt(),r=Ev(),n=Gd().getWeakData,s=yc(),a=Yr(),o=ga(),l=ai(),h=vc(),u=Rs(),c=Si(),p=us(),d=p.set,f=p.getterFor,m=u.find,g=u.findIndex,y=i([].splice),v=0,T=function(e){return e.frozen||(e.frozen=new x)},x=function(){this.entries=[]},b=function(e,t){return m(e.entries,(function(e){return e[0]===t}))};x.prototype={get:function(e){var t=b(this,e);if(t)return t[1]},has:function(e){return!!b(this,e)},set:function(e,t){var i=b(this,e);i?i[1]=t:this.entries.push([e,t])},delete:function(e){var t=g(this.entries,(function(t){return t[0]===e}));return~t&&y(this.entries,t,1),!!~t}},t.exports={getConstructor:function(e,t,i,u){var p=e((function(e,r){s(e,m),d(e,{type:t,id:v++,frozen:void 0}),o(r)||h(r,e[u],{that:e,AS_ENTRIES:i})})),m=p.prototype,g=f(t),y=function(e,t,i){var r=g(e),s=n(a(t),!0);return!0===s?T(r).set(t,i):s[r.id]=i,e};return r(m,{delete:function(e){var t=g(this);if(!l(e))return!1;var i=n(e);return!0===i?T(t).delete(e):i&&c(i,t.id)&&delete i[t.id]},has:function(e){var t=g(this);if(!l(e))return!1;var i=n(e);return!0===i?T(t).has(e):i&&c(i,t.id)}}),r(m,i?{get:function(e){var t=g(this);if(l(e)){var i=n(e);return!0===i?T(t).get(e):i?i[t.id]:void 0}},set:function(e,t){return y(this,e,t)}}:{add:function(e){return y(this,e,!0)}}),p}}})),xae=z((()=>{"use strict";var e,t,i,r,n=Vm(),s=rr(),a=Bt(),o=Ev(),l=Gd(),h=H1(),u=O5(),c=ai(),p=us().enforce,d=Dt(),f=w2(),m=Object,g=Array.isArray,y=m.isExtensible,v=m.isFrozen,T=m.isSealed,x=m.freeze,b=m.seal,_={},E={},w=!s.ActiveXObject&&"ActiveXObject"in s,S=function(e){return function(){return e(this,arguments.length?arguments[0]:void 0)}},I=h("WeakMap",S,u),M=I.prototype,A=a(M.set);f&&(w?(e=u.getConstructor(S,"WeakMap",!0),l.enable(),t=a(M.delete),i=a(M.has),r=a(M.get),o(M,{delete:function(i){if(c(i)&&!y(i)){var r=p(this);return r.frozen||(r.frozen=new e),t(this,i)||r.frozen.delete(i)}return t(this,i)},has:function(t){if(c(t)&&!y(t)){var r=p(this);return r.frozen||(r.frozen=new e),i(this,t)||r.frozen.has(t)}return i(this,t)},get:function(t){if(c(t)&&!y(t)){var n=p(this);return n.frozen||(n.frozen=new e),i(this,t)?r(this,t):n.frozen.get(t)}return r(this,t)},set:function(t,r){if(c(t)&&!y(t)){var n=p(this);n.frozen||(n.frozen=new e),i(this,t)?A(this,t,r):n.frozen.set(t,r)}else A(this,t,r);return this}})):n&&d((function(){var e=x([]);return A(new I,e,1),!v(e)}))&&o(M,{set:function(e,t){var i;return g(e)&&(v(e)?i=_:T(e)&&(i=E)),A(this,e,t),i==_&&x(e),i==E&&b(e),this}}))})),Iae=z((()=>{xae()})),_ae=z((()=>{"use strict";H1()("WeakSet",(function(e){return function(){return e(this,arguments.length?arguments[0]:void 0)}}),O5())})),Sae=z((()=>{_ae()})),L5=z(((e,t)=>{var i,r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",n={};for(i=0;i<66;i++)n[r.charAt(i)]=i;t.exports={itoc:r,ctoi:n}})),Nae=z((()=>{var e=He(),t=In(),i=Bt(),r=Dt(),n=mi(),s=Si(),a=ip(),o=L5().ctoi,l=/[^\d+/a-z]/i,h=/[\t\n\f\r ]+/g,u=/[=]+$/,c=t("atob"),p=String.fromCharCode,d=i("".charAt),f=i("".replace),m=i(l.exec),g=r((function(){return""!==c(" ")})),y=!r((function(){c("a")})),v=!g&&!y&&!r((function(){c()})),T=!g&&!y&&1!==c.length;e({global:!0,enumerable:!0,forced:g||y||v||T},{atob:function(e){if(a(arguments.length,1),v||T)return c(e);var i,r,g=f(n(e),h,""),y="",x=0,b=0;if(g.length%4==0&&(g=f(g,u,"")),g.length%4==1||m(l,g))throw new(t("DOMException"))("The string is not correctly encoded","InvalidCharacterError");for(;i=d(g,x++);)s(o,i)&&(r=b%4?64*r+o[i]:o[i],b++%4&&(y+=p(255&r>>(-2*b&6))));return y}})})),zae=z((()=>{var e=He(),t=In(),i=Bt(),r=Dt(),n=mi(),s=ip(),a=L5().itoc,o=t("btoa"),l=i("".charAt),h=i("".charCodeAt),u=!!o&&!r((function(){o()})),c=!!o&&r((function(){return"bnVsbA=="!==o(null)})),p=!!o&&1!==o.length;e({global:!0,enumerable:!0,forced:u||c||p},{btoa:function(e){if(s(arguments.length,1),u||c||p)return o(n(e));for(var i,r,d=n(e),f="",m=0,g=a;l(d,m)||(g="=",m%1);){if((r=h(d,m+=3/4))>255)throw new(t("DOMException"))("The string contains characters outside of the Latin1 range","InvalidCharacterError");f+=l(g,63&(i=i<<8|r)>>8-m%1*8)}return f}})})),G5=z(((e,t)=>{t.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}})),z5=z(((e,t)=>{var i=c1()("span").classList,r=i&&i.constructor&&i.constructor.prototype;t.exports=r===Object.prototype?void 0:r})),Kae=z((()=>{var e,t=rr(),i=G5(),r=z5(),n=SN(),s=ya(),a=function(e){if(e&&e.forEach!==n)try{s(e,"forEach",n)}catch(t){e.forEach=n}};for(e in i)i[e]&&a(t[e]&&t[e].prototype);a(r)})),roe=z((()=>{var e,t=rr(),i=G5(),r=z5(),n=A1(),s=ya(),a=fi(),o=a("iterator"),l=a("toStringTag"),h=n.values,u=function(e,t){if(e){if(e[o]!==h)try{s(e,o,h)}catch(t){e[o]=h}if(e[l]||s(e,l,t),i[t])for(var r in n)if(e[r]!==n[r])try{s(e,r,n[r])}catch(t){e[r]=n[r]}}};for(e in i)u(t[e]&&t[e].prototype,e);u(r,"DOMTokenList")})),noe=z(((e,t)=>{var i=Mu();t.exports=function(e){try{if(i)return Function('return require("'+e+'")')()}catch(e){}}})),X5=z(((e,t)=>{t.exports={IndexSizeError:{s:"INDEX_SIZE_ERR",c:1,m:1},DOMStringSizeError:{s:"DOMSTRING_SIZE_ERR",c:2,m:0},HierarchyRequestError:{s:"HIERARCHY_REQUEST_ERR",c:3,m:1},WrongDocumentError:{s:"WRONG_DOCUMENT_ERR",c:4,m:1},InvalidCharacterError:{s:"INVALID_CHARACTER_ERR",c:5,m:1},NoDataAllowedError:{s:"NO_DATA_ALLOWED_ERR",c:6,m:0},NoModificationAllowedError:{s:"NO_MODIFICATION_ALLOWED_ERR",c:7,m:1},NotFoundError:{s:"NOT_FOUND_ERR",c:8,m:1},NotSupportedError:{s:"NOT_SUPPORTED_ERR",c:9,m:1},InUseAttributeError:{s:"INUSE_ATTRIBUTE_ERR",c:10,m:1},InvalidStateError:{s:"INVALID_STATE_ERR",c:11,m:1},SyntaxError:{s:"SYNTAX_ERR",c:12,m:1},InvalidModificationError:{s:"INVALID_MODIFICATION_ERR",c:13,m:1},NamespaceError:{s:"NAMESPACE_ERR",c:14,m:1},InvalidAccessError:{s:"INVALID_ACCESS_ERR",c:15,m:1},ValidationError:{s:"VALIDATION_ERR",c:16,m:0},TypeMismatchError:{s:"TYPE_MISMATCH_ERR",c:17,m:1},SecurityError:{s:"SECURITY_ERR",c:18,m:1},NetworkError:{s:"NETWORK_ERR",c:19,m:1},AbortError:{s:"ABORT_ERR",c:20,m:1},URLMismatchError:{s:"URL_MISMATCH_ERR",c:21,m:1},QuotaExceededError:{s:"QUOTA_EXCEEDED_ERR",c:22,m:1},TimeoutError:{s:"TIMEOUT_ERR",c:23,m:1},InvalidNodeTypeError:{s:"INVALID_NODE_TYPE_ERR",c:24,m:1},DataCloneError:{s:"DATA_CLONE_ERR",c:25,m:1}}})),goe=z((()=>{"use strict";var e=He(),t=noe(),i=In(),r=Dt(),n=Ya(),s=Mo(),a=ji().f,o=An(),l=Vd(),h=Si(),u=yc(),c=Yr(),p=pN(),d=mv(),f=X5(),m=x1(),g=us(),y=Ar(),v=Gn(),T="DOMException",x="DATA_CLONE_ERR",b=i("Error"),_=i(T)||function(){try{(new(i("MessageChannel")||t("worker_threads").MessageChannel)).port1.postMessage(new WeakMap)}catch(e){if(e.name==x&&25==e.code)return e.constructor}}(),E=_&&_.prototype,w=b.prototype,S=g.set,I=g.getterFor(T),M="stack"in b(T),A=function(e){return h(f,e)&&f[e].m?f[e].c:0},D=function(){u(this,O);var e=arguments.length,t=d(e<1?void 0:arguments[0]),i=d(e<2?void 0:arguments[1],"Error"),r=A(i);if(S(this,{type:T,name:i,message:t,code:r}),y||(this.name=i,this.message=t,this.code=r),M){var n=b(t);n.name=T,a(this,"stack",s(1,m(n.stack,1)))}},O=D.prototype=n(w),R=function(e){return{enumerable:!0,configurable:!0,get:e}},C=function(e){return R((function(){return I(this)[e]}))};y&&(l(O,"code",C("code")),l(O,"message",C("message")),l(O,"name",C("name"))),a(O,"constructor",s(1,D));var N=r((function(){return!(new _ instanceof b)})),P=N||r((function(){return w.toString!==p||"2: 1"!==String(new _(1,2))})),L=N||r((function(){return 25!==new _(1,"DataCloneError").code})),F=N||25!==_[x]||25!==E[x],U=v?P||L||F:N;e({global:!0,constructor:!0,forced:U},{DOMException:U?D:_});var k,B,H,G,z=i(T),V=z.prototype;for(G in P&&(v||_===z)&&o(V,"toString",p),L&&y&&_===z&&l(V,"code",R((function(){return A(c(this).name)}))),f)h(f,G)&&(B=(k=f[G]).s,H=s(6,k.c),h(z,B)||a(z,B,H),h(V,B)||a(V,B,H))})),Ioe=z((()=>{"use strict";var e=He(),t=rr(),i=In(),r=Mo(),n=ji().f,s=Si(),a=yc(),o=Fm(),l=mv(),h=X5(),u=x1(),c=Ar(),p=Gn(),d="DOMException",f=i("Error"),m=i(d),g=function(){a(this,y);var e=arguments.length,t=l(e<1?void 0:arguments[0]),i=l(e<2?void 0:arguments[1],"Error"),s=new m(t,i),h=f(t);return h.name=d,n(s,"stack",r(1,u(h.stack,1))),o(s,this,g),s},y=g.prototype=m.prototype,v="stack"in f(d),T="stack"in new m(1,2),x=m&&c&&Object.getOwnPropertyDescriptor(t,d),b=!(!x||x.writable&&x.configurable),_=v&&!b&&!T;e({global:!0,constructor:!0,forced:p||_},{DOMException:_?g:m});var E,w,S,I=i(d),M=I.prototype;if(M.constructor!==I)for(S in p||n(M,"constructor",r(1,I)),h)s(h,S)&&(s(I,w=(E=h[S]).s)||n(I,w,r(6,E.c)))})),Soe=z((()=>{var e=In(),t="DOMException";Xa()(e(t),t)})),Roe=z((()=>{var e=He(),t=rr(),i=$1().clear;e({global:!0,bind:!0,enumerable:!0,forced:t.clearImmediate!==i},{clearImmediate:i})})),Doe=z(((e,t)=>{t.exports="function"==typeof Bun&&Bun&&"string"==typeof Bun.version})),gM=z(((e,t)=>{"use strict";var i,r=rr(),n=Co(),s=Ei(),a=Doe(),o=bu(),l=Pd(),h=ip(),u=r.Function,c=/MSIE .\./.test(o)||a&&((i=r.Bun.version.split(".")).length<3||0==i[0]&&(i[1]<3||3==i[1]&&0==i[2]));t.exports=function(e,t){var i=t?2:1;return c?function(r,a){var o=h(arguments.length,1)>i,c=s(r)?r:u(r),p=o?l(arguments,i):[],d=o?function(){n(c,this,p)}:c;return t?e(d,a):e(d)}:e}})),Loe=z((()=>{var e=He(),t=rr(),i=$1().set,r=gM(),n=t.setImmediate?r(i,!1):i;e({global:!0,bind:!0,enumerable:!0,forced:t.setImmediate!==n},{setImmediate:n})})),Foe=z((()=>{Roe(),Loe()})),Hoe=z((()=>{var e=He(),t=rr(),i=aF(),r=ms(),n=ip(),s=Mu(),a=t.process;e({global:!0,enumerable:!0,dontCallGetSet:!0},{queueMicrotask:function(e){n(arguments.length,1),r(e);var t=s&&a.domain;i(t?t.bind(e):e)}})})),Boe=z((()=>{"use strict";var e,t=He(),i=rr(),r=Vd(),n=Ar(),s=TypeError,a=Object.defineProperty,o=i.self!==i;try{n?(e=Object.getOwnPropertyDescriptor(i,"self"),(o||!e||!e.get||!e.enumerable)&&r(i,"self",{get:function(){return i},set:function(e){if(this!==i)throw s("Illegal invocation");a(i,"self",{value:e,writable:!0,configurable:!0,enumerable:!0})},configurable:!0,enumerable:!0})):t({global:!0,simple:!0,forced:o},{self:i})}catch(e){}})),Goe=z(((e,t)=>{var i=Bt(),r=Map.prototype;t.exports={Map:Map,set:i(r.set),get:i(r.get),has:i(r.has),remove:i(r.delete),proto:r}})),zoe=z(((e,t)=>{var i=Bt(),r=Set.prototype;t.exports={Set:Set,add:i(r.add),has:i(r.has),remove:i(r.delete),proto:r,$has:r.has,$keys:r.keys}})),Qoe=z((()=>{var e,t=Gn(),i=He(),r=rr(),n=In(),s=Bt(),a=Dt(),o=Dm(),l=Ei(),h=Pm(),u=ga(),c=ai(),p=Dd(),d=vc(),f=Yr(),m=mc(),g=Si(),y=Su(),v=ya(),T=cn(),x=ip(),b=Uv(),_=Goe(),E=zoe(),w=Cw(),S=xu(),I=oF(),M=_R(),A=Mu(),D=r.Object,O=r.Array,R=r.Date,C=r.Error,N=r.EvalError,P=r.RangeError,L=r.ReferenceError,F=r.SyntaxError,U=r.TypeError,k=r.URIError,B=r.PerformanceMark,H=r.WebAssembly,G=H&&H.CompileError||C,z=H&&H.LinkError||C,V=H&&H.RuntimeError||C,j=n("DOMException"),W=_.Map,Y=_.has,X=_.get,q=_.set,Z=E.Set,K=E.add,$=n("Object","keys"),J=s([].push),Q=s((!0).valueOf),ee=s(1..valueOf),te=s("".valueOf),ie=s(R.prototype.getTime),re=o("structuredClone"),ne="DataCloneError",se="Transferring",ae=function(e){return!a((function(){var t=new r.Set([7]),i=e(t),n=e(D(7));return i==t||!i.has(7)||"object"!=typeof n||7!=n}))&&e},oe=function(e,t){return!a((function(){var i=new t,r=e({a:i,b:i});return!(r&&r.a===r.b&&r.a instanceof t&&r.a.stack===i.stack)}))},le=r.structuredClone,he=t||!oe(le,C)||!oe(le,j)||(e=le,!!a((function(){var t=e(new r.AggregateError([1],re,{cause:3}));return"AggregateError"!=t.name||1!=t.errors[0]||t.message!=re||3!=t.cause}))),ue=!le&&ae((function(e){return new B(re,{detail:e}).detail})),ce=ae(le)||ue,pe=function(e){throw new j("Uncloneable type: "+e,ne)},de=function(e,t){throw new j((t||"Cloning")+" of "+e+" cannot be properly polyfilled in this engine",ne)},fe=function(e,t){if(p(e)&&pe("Symbol"),!c(e))return e;if(t){if(Y(t,e))return X(t,e)}else t=new W;var i,s,a,o,h,u,d,f,x,_,E=m(e),S=!1;switch(E){case"Array":a=O(T(e)),S=!0;break;case"Object":a={},S=!0;break;case"Map":a=new W,S=!0;break;case"Set":a=new Z,S=!0;break;case"RegExp":a=new RegExp(e.source,b(e));break;case"Error":switch(s=e.name){case"AggregateError":a=n("AggregateError")([]);break;case"EvalError":a=N();break;case"RangeError":a=P();break;case"ReferenceError":a=L();break;case"SyntaxError":a=F();break;case"TypeError":a=U();break;case"URIError":a=k();break;case"CompileError":a=G();break;case"LinkError":a=z();break;case"RuntimeError":a=V();break;default:a=C()}S=!0;break;case"DOMException":a=new j(e.message,e.name),S=!0;break;case"DataView":case"Int8Array":case"Uint8Array":case"Uint8ClampedArray":case"Int16Array":case"Uint16Array":case"Int32Array":case"Uint32Array":case"Float32Array":case"Float64Array":case"BigInt64Array":case"BigUint64Array":i=r[E],c(i)||de(E),a=new i(fe(e.buffer,t),e.byteOffset,"DataView"===E?e.byteLength:e.length);break;case"DOMQuad":try{a=new DOMQuad(fe(e.p1,t),fe(e.p2,t),fe(e.p3,t),fe(e.p4,t))}catch(t){ce?a=ce(e):de(E)}break;case"FileList":if(o=function(){var e;try{e=new r.DataTransfer}catch(t){try{e=new r.ClipboardEvent("").clipboardData}catch(e){}}return e&&e.items&&e.files?e:null}(),o){for(h=0,u=T(e);h92||A&&S>94||I&&S>97)return!1;var e=new ArrayBuffer(8),t=le(e,{transfer:[e]});return 0!=e.byteLength||8!=t.byteLength})),ge=function(e,t){if(!c(e))throw U("Transfer option cannot be converted to a sequence");var i=[];d(e,(function(e){J(i,f(e))}));var n,s,a,o,u,p,g=0,y=T(i);if(me)for(o=le(i,{transfer:i});g1&&!u(arguments[1])?f(arguments[1]):void 0,r=i?i.transfer:void 0;return void 0!==r&&(t=new W,ge(r,t)),fe(e,t)}})})),rle=z((()=>{var e=He(),t=rr(),i=gM()(t.setInterval,!0);e({global:!0,bind:!0,forced:t.setInterval!==i},{setInterval:i})})),sle=z((()=>{var e=He(),t=rr(),i=gM()(t.setTimeout,!0);e({global:!0,bind:!0,forced:t.setTimeout!==i},{setTimeout:i})})),ale=z((()=>{rle(),sle()})),I6=z(((e,t)=>{var i=Dt(),r=fi(),n=Gn(),s=r("iterator");t.exports=!i((function(){var e=new URL("b?a=1&b=2&c=3","http://a"),t=e.searchParams,i="";return e.pathname="c%20d",t.forEach((function(e,r){t.delete("b"),i+=r+e})),n&&!e.toJSON||!t.sort||"http://a/c%20d?a=1&c=3"!==e.href||"3"!==t.get("c")||"a=1"!==String(new URLSearchParams("?a=1"))||!t[s]||"a"!==new URL("https://a@b").username||"b"!==new URLSearchParams(new URLSearchParams("a=b")).get("a")||"xn--e1aybc"!==new URL("http://тест").host||"#%D0%B1"!==new URL("http://a#б").hash||"a1c3"!==i||"x"!==new URL("http://x",void 0).host}))})),gle=z(((e,t)=>{"use strict";var i=Bt(),r=2147483647,n=/[^\0-\u007E]/,s=/[.\u3002\uFF0E\uFF61]/g,a="Overflow: input needs wider integers to process",o=RangeError,l=i(s.exec),h=Math.floor,u=String.fromCharCode,c=i("".charCodeAt),p=i([].join),d=i([].push),f=i("".replace),m=i("".split),g=i("".toLowerCase),y=function(e){return e+22+75*(e<26)},v=function(e,t,i){var r=0;for(e=i?h(e/700):e>>1,e+=h(e/t);e>455;)e=h(e/35),r+=36;return h(r+36*e/(e+38))},T=function(e){var t=[];e=function(e){for(var t=[],i=0,r=e.length;i=55296&&n<=56319&&i=l&&nh((r-f)/b))throw o(a);for(f+=(x-l)*b,l=x,i=0;ir)throw o(a);if(n==l){for(var _=f,E=36;;){var w=E<=m?1:E>=m+26?26:E-m;if(_{"use strict";A1();var i=He(),r=rr(),n=si(),s=Bt(),a=Ar(),o=I6(),l=An(),h=Ev(),u=Xa(),c=kw(),p=us(),d=yc(),f=Ei(),m=Si(),g=pl(),y=mc(),v=Yr(),T=ai(),x=mi(),b=Ya(),_=Mo(),E=I1(),w=vv(),S=ip(),I=fi(),M=qw(),A=I("iterator"),D="URLSearchParams",O=D+"Iterator",R=p.set,C=p.getterFor(D),N=p.getterFor(O),P=Object.getOwnPropertyDescriptor,L=function(e){if(!a)return r[e];var t=P(r,e);return t&&t.value},F=L("fetch"),U=L("Request"),k=L("Headers"),B=U&&U.prototype,H=k&&k.prototype,G=r.RegExp,z=r.TypeError,V=r.decodeURIComponent,j=r.encodeURIComponent,W=s("".charAt),Y=s([].join),X=s([].push),q=s("".replace),Z=s([].shift),K=s([].splice),$=s("".split),J=s("".slice),Q=/\+/g,ee=Array(4),te=function(e){return ee[e-1]||(ee[e-1]=G("((?:%[\\da-f]{2}){"+e+"})","gi"))},ie=function(e){try{return V(e)}catch(t){return e}},re=function(e){var t=q(e,Q," "),i=4;try{return V(t)}catch(e){for(;i;)t=q(t,te(i--),ie);return t}},ne=/[!'()~]|%20/g,se={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+"},ae=function(e){return se[e]},oe=function(e){return q(j(e),ne,ae)},le=c((function(e,t){R(this,{type:O,iterator:E(C(e).entries),kind:t})}),"Iterator",(function(){var e=N(this),t=e.kind,i=e.iterator.next(),r=i.value;return i.done||(i.value="keys"===t?r.key:"values"===t?r.value:[r.key,r.value]),i}),!0),he=function(e){this.entries=[],this.url=null,void 0!==e&&(T(e)?this.parseObject(e):this.parseQuery("string"==typeof e?"?"===W(e,0)?J(e,1):e:x(e)))};he.prototype={type:D,bindURL:function(e){this.url=e,this.update()},parseObject:function(e){var t,i,r,s,a,o,l,h=w(e);if(h)for(i=(t=E(e,h)).next;!(r=n(i,t)).done;){if(a=(s=E(v(r.value))).next,(o=n(a,s)).done||(l=n(a,s)).done||!n(a,s).done)throw z("Expected sequence with length 2");X(this.entries,{key:x(o.value),value:x(l.value)})}else for(var u in e)m(e,u)&&X(this.entries,{key:u,value:x(e[u])})},parseQuery:function(e){if(e)for(var t,i,r=$(e,"&"),n=0;n0?arguments[0]:void 0;R(this,new he(e))},me=fe.prototype;h(me,{append:function(e,t){S(arguments.length,2);var i=C(this);X(i.entries,{key:x(e),value:x(t)}),i.updateURL()},delete:function(e){S(arguments.length,1);for(var t=C(this),i=t.entries,r=x(e),n=0;nt.key?1:-1})),e.updateURL()},forEach:function(e){for(var t,i=C(this).entries,r=g(e,arguments.length>1?arguments[1]:void 0),n=0;n1?pe(arguments[1]):{})}}),f(U)&&(de=function(e){return d(this,B),new U(e,arguments.length>1?pe(arguments[1]):{})},B.constructor=de,de.prototype=B,i({global:!0,constructor:!0,dontCallGetSet:!0,forced:!0},{Request:de}))),t.exports={URLSearchParams:fe,getState:C}})),tce=z((()=>{"use strict";VF();var e,t=He(),i=Ar(),r=I6(),n=rr(),s=pl(),a=Bt(),o=An(),l=Vd(),h=yc(),u=Si(),c=BL(),p=wN(),d=hv(),f=rb().codeAt,m=gle(),g=mi(),y=Xa(),v=ip(),T=H6(),x=us(),b=x.set,_=x.getterFor("URL"),E=T.URLSearchParams,w=T.getState,S=n.URL,I=n.TypeError,M=n.parseInt,A=Math.floor,D=Math.pow,O=a("".charAt),R=a(/./.exec),C=a([].join),N=a(1..toString),P=a([].pop),L=a([].push),F=a("".replace),U=a([].shift),k=a("".split),B=a("".slice),H=a("".toLowerCase),G=a([].unshift),z="Invalid scheme",V="Invalid host",j="Invalid port",W=/[a-z]/i,Y=/[\d+-.a-z]/i,X=/\d/,q=/^0x/i,Z=/^[0-7]+$/,K=/^\d+$/,$=/^[\da-f]+$/i,J=/[\0\t\n\r #%/:<>?@[\\\]^|]/,Q=/[\0\t\n\r #/:<>?@[\\\]^|]/,ee=/^[\u0000-\u0020]+|[\u0000-\u0020]+$/g,te=/[\t\n\r]/g,ie=function(e){var t,i,r,n;if("number"==typeof e){for(t=[],i=0;i<4;i++)G(t,e%256),e=A(e/256);return C(t,".")}if("object"==typeof e){for(t="",r=function(e){for(var t=null,i=1,r=null,n=0,s=0;s<8;s++)0!==e[s]?(n>i&&(t=r,i=n),r=null,n=0):(null===r&&(r=s),++n);return n>i&&(t=r,i=n),t}(e),i=0;i<8;i++)n&&0===e[i]||(n&&(n=!1),r===i?(t+=i?":":"::",n=!0):(t+=N(e[i],16),i<7&&(t+=":")));return"["+t+"]"}return e},re={},ne=c({},re,{" ":1,'"':1,"<":1,">":1,"`":1}),se=c({},ne,{"#":1,"?":1,"{":1,"}":1}),ae=c({},se,{"/":1,":":1,";":1,"=":1,"@":1,"[":1,"\\":1,"]":1,"^":1,"|":1}),oe=function(e,t){var i=f(e,0);return i>32&&i<127&&!u(t,e)?e:encodeURIComponent(e)},le={ftp:21,file:null,http:80,https:443,ws:80,wss:443},he=function(e,t){var i;return 2==e.length&&R(W,O(e,0))&&(":"==(i=O(e,1))||!t&&"|"==i)},ue=function(e){var t;return e.length>1&&he(B(e,0,2))&&(2==e.length||"/"===(t=O(e,2))||"\\"===t||"?"===t||"#"===t)},ce=function(e){return"."===e||"%2e"===H(e)},pe=function(e){return".."===(e=H(e))||"%2e."===e||".%2e"===e||"%2e%2e"===e},de={},fe={},me={},ge={},ye={},ve={},Te={},xe={},be={},_e={},Ee={},we={},Se={},Ie={},Me={},Ae={},De={},Oe={},Re={},Ce={},Ne={},Pe=function(e,t,i){var r,n,s,a=g(e);if(t){if(n=this.parse(a))throw I(n);this.searchParams=null}else{if(void 0!==i&&(r=new Pe(i,!0)),n=this.parse(a,null,r))throw I(n);(s=w(new E)).bindURL(this),this.searchParams=s}};Pe.prototype={type:"URL",parse:function(t,i,r){var n,s,a,o,l=this,h=i||de,c=0,f="",m=!1,y=!1,v=!1;for(t=g(t),i||(l.scheme="",l.username="",l.password="",l.host=null,l.port=null,l.path=[],l.query=null,l.fragment=null,l.cannotBeABaseURL=!1,t=F(t,ee,"")),t=F(t,te,""),n=p(t);c<=n.length;){switch(s=n[c],h){case de:if(!s||!R(W,s)){if(i)return z;h=me;continue}f+=H(s),h=fe;break;case fe:if(s&&(R(Y,s)||"+"==s||"-"==s||"."==s))f+=H(s);else{if(":"!=s){if(i)return z;f="",h=me,c=0;continue}if(i&&(l.isSpecial()!=u(le,f)||"file"==f&&(l.includesCredentials()||null!==l.port)||"file"==l.scheme&&!l.host))return;if(l.scheme=f,i)return void(l.isSpecial()&&le[l.scheme]==l.port&&(l.port=null));f="","file"==l.scheme?h=Ie:l.isSpecial()&&r&&r.scheme==l.scheme?h=ge:l.isSpecial()?h=xe:"/"==n[c+1]?(h=ye,c++):(l.cannotBeABaseURL=!0,L(l.path,""),h=Re)}break;case me:if(!r||r.cannotBeABaseURL&&"#"!=s)return z;if(r.cannotBeABaseURL&&"#"==s){l.scheme=r.scheme,l.path=d(r.path),l.query=r.query,l.fragment="",l.cannotBeABaseURL=!0,h=Ne;break}h="file"==r.scheme?Ie:ve;continue;case ge:if("/"!=s||"/"!=n[c+1]){h=ve;continue}h=be,c++;break;case ye:if("/"==s){h=_e;break}h=Oe;continue;case ve:if(l.scheme=r.scheme,s==e)l.username=r.username,l.password=r.password,l.host=r.host,l.port=r.port,l.path=d(r.path),l.query=r.query;else if("/"==s||"\\"==s&&l.isSpecial())h=Te;else if("?"==s)l.username=r.username,l.password=r.password,l.host=r.host,l.port=r.port,l.path=d(r.path),l.query="",h=Ce;else{if("#"!=s){l.username=r.username,l.password=r.password,l.host=r.host,l.port=r.port,l.path=d(r.path),l.path.length--,h=Oe;continue}l.username=r.username,l.password=r.password,l.host=r.host,l.port=r.port,l.path=d(r.path),l.query=r.query,l.fragment="",h=Ne}break;case Te:if(!l.isSpecial()||"/"!=s&&"\\"!=s){if("/"!=s){l.username=r.username,l.password=r.password,l.host=r.host,l.port=r.port,h=Oe;continue}h=_e}else h=be;break;case xe:if(h=be,"/"!=s||"/"!=O(f,c+1))continue;c++;break;case be:if("/"!=s&&"\\"!=s){h=_e;continue}break;case _e:if("@"==s){m&&(f="%40"+f),m=!0,a=p(f);for(var T=0;T65535)return j;l.port=l.isSpecial()&&_===le[l.scheme]?null:_,f=""}if(i)return;h=De;continue}return j}f+=s;break;case Ie:if(l.scheme="file","/"==s||"\\"==s)h=Me;else{if(!r||"file"!=r.scheme){h=Oe;continue}if(s==e)l.host=r.host,l.path=d(r.path),l.query=r.query;else if("?"==s)l.host=r.host,l.path=d(r.path),l.query="",h=Ce;else{if("#"!=s){ue(C(d(n,c),""))||(l.host=r.host,l.path=d(r.path),l.shortenPath()),h=Oe;continue}l.host=r.host,l.path=d(r.path),l.query=r.query,l.fragment="",h=Ne}}break;case Me:if("/"==s||"\\"==s){h=Ae;break}r&&"file"==r.scheme&&!ue(C(d(n,c),""))&&(he(r.path[0],!0)?L(l.path,r.path[0]):l.host=r.host),h=Oe;continue;case Ae:if(s==e||"/"==s||"\\"==s||"?"==s||"#"==s){if(!i&&he(f))h=Oe;else if(""==f){if(l.host="",i)return;h=De}else{if(o=l.parseHost(f))return o;if("localhost"==l.host&&(l.host=""),i)return;f="",h=De}continue}f+=s;break;case De:if(l.isSpecial()){if(h=Oe,"/"!=s&&"\\"!=s)continue}else if(i||"?"!=s)if(i||"#"!=s){if(s!=e&&(h=Oe,"/"!=s))continue}else l.fragment="",h=Ne;else l.query="",h=Ce;break;case Oe:if(s==e||"/"==s||"\\"==s&&l.isSpecial()||!i&&("?"==s||"#"==s)){if(pe(f)?(l.shortenPath(),"/"!=s&&!("\\"==s&&l.isSpecial())&&L(l.path,"")):ce(f)?"/"!=s&&!("\\"==s&&l.isSpecial())&&L(l.path,""):("file"==l.scheme&&!l.path.length&&he(f)&&(l.host&&(l.host=""),f=O(f,0)+":"),L(l.path,f)),f="","file"==l.scheme&&(s==e||"?"==s||"#"==s))for(;l.path.length>1&&""===l.path[0];)U(l.path);"?"==s?(l.query="",h=Ce):"#"==s&&(l.fragment="",h=Ne)}else f+=oe(s,se);break;case Re:"?"==s?(l.query="",h=Ce):"#"==s?(l.fragment="",h=Ne):s!=e&&(l.path[0]+=oe(s,re));break;case Ce:i||"#"!=s?s!=e&&("'"==s&&l.isSpecial()?l.query+="%27":l.query+="#"==s?"%23":oe(s,re)):(l.fragment="",h=Ne);break;case Ne:s!=e&&(l.fragment+=oe(s,ne))}c++}},parseHost:function(e){var t,i,r;if("["==O(e,0)){if("]"!=O(e,e.length-1)||(t=function(e){var t,i,r,n,s,a,o,l=[0,0,0,0,0,0,0,0],h=0,u=null,c=0,p=function(){return O(e,c)};if(":"==p()){if(":"!=O(e,1))return;c+=2,u=++h}for(;p();){if(8==h)return;if(":"!=p()){for(t=i=0;i<4&&R($,p());)t=16*t+M(p(),16),c++,i++;if("."==p()){if(0==i||(c-=i,h>6))return;for(r=0;p();){if(n=null,r>0){if(!("."==p()&&r<4))return;c++}if(!R(X,p()))return;for(;R(X,p());){if(s=M(p(),10),null===n)n=s;else{if(0==n)return;n=10*n+s}if(n>255)return;c++}l[h]=256*l[h]+n,(2==++r||4==r)&&h++}if(4!=r)return;break}if(":"==p()){if(c++,!p())return}else if(p())return;l[h++]=t}else{if(null!==u)return;c++,u=++h}}if(null!==u)for(a=h-u,h=7;0!=h&&a>0;)o=l[h],l[h--]=l[u+a-1],l[u+--a]=o;else if(8!=h)return;return l}(B(e,1,-1)),!t))return V;this.host=t}else if(this.isSpecial()){if(e=m(e),R(J,e)||(t=function(e){var t,i,r,n,s,a,o,l=k(e,".");if(l.length&&""==l[l.length-1]&&l.length--,(t=l.length)>4)return e;for(i=[],r=0;r1&&"0"==O(n,0)&&(s=R(q,n)?16:8,n=B(n,8==s?1:2)),""===n)a=0;else{if(!R(10==s?K:8==s?Z:$,n))return e;a=M(n,s)}L(i,a)}for(r=0;r=D(256,5-t))return null}else if(a>255)return null;for(o=P(i),r=0;r1?arguments[1]:void 0,n=b(t,new Pe(e,!1,r));i||(t.href=n.serialize(),t.origin=n.getOrigin(),t.protocol=n.getProtocol(),t.username=n.getUsername(),t.password=n.getPassword(),t.host=n.getHost(),t.hostname=n.getHostname(),t.port=n.getPort(),t.pathname=n.getPathname(),t.search=n.getSearch(),t.searchParams=n.getSearchParams(),t.hash=n.getHash())},ke=Ue.prototype,Be=function(e,t){return{get:function(){return _(this)[e]()},set:t&&function(e){return _(this)[t](e)},configurable:!0,enumerable:!0}};i&&(l(ke,"href",Be("serialize","setHref")),l(ke,"origin",Be("getOrigin")),l(ke,"protocol",Be("getProtocol","setProtocol")),l(ke,"username",Be("getUsername","setUsername")),l(ke,"password",Be("getPassword","setPassword")),l(ke,"host",Be("getHost","setHost")),l(ke,"hostname",Be("getHostname","setHostname")),l(ke,"port",Be("getPort","setPort")),l(ke,"pathname",Be("getPathname","setPathname")),l(ke,"search",Be("getSearch","setSearch")),l(ke,"searchParams",Be("getSearchParams")),l(ke,"hash",Be("getHash","setHash"))),o(ke,"toJSON",(function(){return _(this).serialize()}),{enumerable:!0}),o(ke,"toString",(function(){return _(this).serialize()}),{enumerable:!0}),S&&(Le=S.createObjectURL,Fe=S.revokeObjectURL,Le&&o(Ue,"createObjectURL",s(Le,S)),Fe&&o(Ue,"revokeObjectURL",s(Fe,S))),y(Ue,"URL"),t({global:!0,constructor:!0,forced:!r,sham:!i},{URL:Ue})})),rce=z((()=>{tce()})),ice=z((()=>{"use strict";var e=He(),t=si();e({target:"URL",proto:!0,enumerable:!0},{toJSON:function(){return t(URL.prototype.toString,this)}})})),nce=z((()=>{H6()})),ace=z(((e,t)=>{IW(),CW(),AW(),OW(),PW(),NW(),LW(),FW(),HW(),UW(),BW(),kW(),GW(),VW(),zW(),uq(),mq(),Oq(),Fq(),Uq(),jq(),Xq(),Kq(),Qq(),eY(),rY(),nY(),oY(),lY(),hY(),pY(),mY(),SY(),wY(),MY(),DY(),A1(),KY(),eX(),tX(),iX(),sX(),uX(),pX(),fX(),vX(),yX(),NX(),HX(),UX(),BX(),kX(),GX(),f$(),w$(),L$(),H$(),U$(),k$(),z$(),j$(),eK(),tK(),aK(),uK(),pK(),yK(),bK(),SK(),wK(),iN(),RK(),zK(),qK(),$K(),ZK(),QK(),eZ(),iZ(),sZ(),lZ(),uZ(),pZ(),fZ(),mZ(),gZ(),vZ(),EZ(),IZ(),_Z(),SZ(),FZ(),HZ(),kZ(),VZ(),zZ(),jZ(),WZ(),qZ(),JZ(),aJ(),hJ(),vJ(),EJ(),SJ(),wJ(),DJ(),AJ(),PJ(),NJ(),UJ(),BJ(),kJ(),zJ(),jJ(),WJ(),YJ(),XJ(),KJ(),JJ(),eQ(),rQ(),nQ(),sQ(),aQ(),oQ(),mQ(),gQ(),vQ(),EQ(),bQ(),IQ(),SQ(),Hee(),Uee(),kee(),jee(),Wee(),Jee(),tte(),rte(),ate(),ote(),lte(),cte(),ute(),hte(),pte(),vte(),Tte(),Ete(),Fte(),Ute(),HR(),jte(),qte(),$te(),Jte(),ere(),tre(),sre(),pre(),mre(),vre(),VF(),Cre(),kre(),Vre(),zre(),Yre(),Xre(),eie(),sie(),lie(),fie(),Tie(),bie(),Sie(),Cie(),Lie(),Bie(),kie(),Gie(),Vie(),zie(),jie(),Wie(),qie(),Yie(),Xie(),$ie(),Kie(),Zie(),Sne(),wne(),Rne(),Mne(),Dne(),Cne(),Ane(),One(),Pne(),Lne(),Hne(),Bne(),Gne(),$ne(),Zne(),Qne(),tse(),ise(),sse(),ase(),lse(),use(),mse(),vse(),Tse(),bse(),Ise(),Sse(),Rse(),Dse(),Lse(),Hse(),Bse(),Wse(),Xse(),Qse(),tae(),aae(),Iae(),Sae(),Nae(),zae(),Kae(),roe(),goe(),Ioe(),Soe(),Foe(),Hoe(),Boe(),Qoe(),ale(),rce(),ice(),nce(),t.exports=xw()})),oce=z(((e,t)=>{var i=function(e){"use strict";var t,i=Object.prototype,r=i.hasOwnProperty,n=Object.defineProperty||function(e,t,i){e[t]=i.value},s="function"==typeof Symbol?Symbol:{},a=s.iterator||"@@iterator",o=s.asyncIterator||"@@asyncIterator",l=s.toStringTag||"@@toStringTag";function h(e,t,i){return Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{h({},"")}catch(e){h=function(e,t,i){return e[t]=i}}function u(e,t,i,r){var s=t&&t.prototype instanceof g?t:g,a=Object.create(s.prototype),o=new D(r||[]);return n(a,"_invoke",{value:S(e,i,o)}),a}function c(e,t,i){try{return{type:"normal",arg:e.call(t,i)}}catch(e){return{type:"throw",arg:e}}}e.wrap=u;var p="suspendedStart",d="executing",f="completed",m={};function g(){}function y(){}function v(){}var T={};h(T,a,(function(){return this}));var x=Object.getPrototypeOf,b=x&&x(x(O([])));b&&b!==i&&r.call(b,a)&&(T=b);var _=v.prototype=g.prototype=Object.create(T);function E(e){["next","throw","return"].forEach((function(t){h(e,t,(function(e){return this._invoke(t,e)}))}))}function w(e,t){function i(n,s,a,o){var l=c(e[n],e,s);if("throw"!==l.type){var h=l.arg,u=h.value;return u&&"object"==typeof u&&r.call(u,"__await")?t.resolve(u.__await).then((function(e){i("next",e,a,o)}),(function(e){i("throw",e,a,o)})):t.resolve(u).then((function(e){h.value=e,a(h)}),(function(e){return i("throw",e,a,o)}))}o(l.arg)}var s;n(this,"_invoke",{value:function(e,r){function n(){return new t((function(t,n){i(e,r,t,n)}))}return s=s?s.then(n,n):n()}})}function S(e,t,i){var r=p;return function(n,s){if(r===d)throw new Error("Generator is already running");if(r===f){if("throw"===n)throw s;return R()}for(i.method=n,i.arg=s;;){var a=i.delegate;if(a){var o=I(a,i);if(o){if(o===m)continue;return o}}if("next"===i.method)i.sent=i._sent=i.arg;else if("throw"===i.method){if(r===p)throw r=f,i.arg;i.dispatchException(i.arg)}else"return"===i.method&&i.abrupt("return",i.arg);r=d;var l=c(e,t,i);if("normal"===l.type){if(r=i.done?f:"suspendedYield",l.arg===m)continue;return{value:l.arg,done:i.done}}"throw"===l.type&&(r=f,i.method="throw",i.arg=l.arg)}}}function I(e,i){var r=i.method,n=e.iterator[r];if(n===t)return i.delegate=null,"throw"===r&&e.iterator.return&&(i.method="return",i.arg=t,I(e,i),"throw"===i.method)||"return"!==r&&(i.method="throw",i.arg=new TypeError("The iterator does not provide a '"+r+"' method")),m;var s=c(n,e.iterator,i.arg);if("throw"===s.type)return i.method="throw",i.arg=s.arg,i.delegate=null,m;var a=s.arg;return a?a.done?(i[e.resultName]=a.value,i.next=e.nextLoc,"return"!==i.method&&(i.method="next",i.arg=t),i.delegate=null,m):a:(i.method="throw",i.arg=new TypeError("iterator result is not an object"),i.delegate=null,m)}function M(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function A(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function D(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(M,this),this.reset(!0)}function O(e){if(e){var i=e[a];if(i)return i.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var n=-1,s=function i(){for(;++n=0;--s){var a=this.tryEntries[s],o=a.completion;if("root"===a.tryLoc)return n("end");if(a.tryLoc<=this.prev){var l=r.call(a,"catchLoc"),h=r.call(a,"finallyLoc");if(l&&h){if(this.prev=0;--i){var n=this.tryEntries[i];if(n.tryLoc<=this.prev&&r.call(n,"finallyLoc")&&this.prev=0;--t){var i=this.tryEntries[t];if(i.finallyLoc===e)return this.complete(i.completion,i.afterLoc),A(i),m}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var i=this.tryEntries[t];if(i.tryLoc===e){var r=i.completion;if("throw"===r.type){var n=r.arg;A(i)}return n}}throw new Error("illegal catch attempt")},delegateYield:function(e,i,r){return this.delegate={iterator:O(e),resultName:i,nextLoc:r},"next"===this.method&&(this.arg=t),m}},e}("object"==typeof t?t.exports:{});try{regeneratorRuntime=i}catch(e){"object"==typeof globalThis?globalThis.regeneratorRuntime=i:Function("r","regeneratorRuntime = r")(i)}})),ope=z(((e,t)=>{!function(e,i){"use strict";"function"==typeof define&&define.amd?define(i):"object"==typeof t&&t.exports?t.exports=i():e.log=i()}(e,(function(){"use strict";var e=function(){},t="undefined",i=typeof window!==t&&typeof window.navigator!==t&&/Trident\/|MSIE /.test(window.navigator.userAgent),r=["trace","debug","info","warn","error"];function n(e,t){var i=e[t];if("function"==typeof i.bind)return i.bind(e);try{return Function.prototype.bind.call(i,e)}catch(t){return function(){return Function.prototype.apply.apply(i,[e,arguments])}}}function s(){console.log&&(console.log.apply?console.log.apply(console,arguments):Function.prototype.apply.apply(console.log,[console,arguments])),console.trace&&console.trace()}function a(r){return"debug"===r&&(r="log"),typeof console!==t&&("trace"===r&&i?s:void 0!==console[r]?n(console,r):void 0!==console.log?n(console,"log"):e)}function o(t,i){for(var n=0;n=0&&i<=a.levels.SILENT))throw"log.setLevel() called with invalid level: "+i;if(s=i,!1!==n&&function(e){var i=(r[e]||"silent").toUpperCase();if(typeof window!==t&&l){try{return void(window.localStorage[l]=i)}catch(e){}try{window.document.cookie=encodeURIComponent(l)+"="+i+";"}catch(e){}}}(i),o.call(a,i,e),typeof console===t&&i{var i,r;i=e,r=function(){"use strict";function e(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function t(e,t){for(var i=0;it?1:e0))break;if(null===t.right)break;if(i(e,t.right.key)>0&&(l=t.right,t.right=l.left,l.left=t,null===(t=l).right))break;s.right=t,s=t,t=t.right}}return s.right=t.left,a.left=t.right,t.left=n.right,t.right=n.left,t}function a(e,t,i,n){var a=new r(e,t);if(null===i)return a.left=a.right=null,a;var o=n(e,(i=s(e,i,n)).key);return o<0?(a.left=i.left,a.right=i,i.left=null):o>=0&&(a.right=i.right,a.left=i,i.right=null),a}function o(e,t,i){var r=null,n=null;if(t){var a=i((t=s(e,t,i)).key,e);0===a?(r=t.left,n=t.right):a<0?(n=t.right,t.right=null,r=t):(r=t.left,t.left=null,n=t)}return{left:r,right:n}}function l(e,t,i,r,n){if(e){r(t+(i?"└── ":"├── ")+n(e)+"\n");var s=t+(i?" ":"│ ");e.left&&l(e.left,s,!1,r,n),e.right&&l(e.right,s,!0,r,n)}}var h=function(){function e(e){void 0===e&&(e=n),this._root=null,this._size=0,this._comparator=e}return e.prototype.insert=function(e,t){return this._size++,this._root=a(e,t,this._root,this._comparator)},e.prototype.add=function(e,t){var i=new r(e,t);null===this._root&&(i.left=i.right=null,this._size++,this._root=i);var n=this._comparator,a=s(e,this._root,n),o=n(e,a.key);return 0===o?this._root=a:(o<0?(i.left=a.left,i.right=a,a.left=null):o>0&&(i.right=a.right,i.left=a,a.right=null),this._size++,this._root=i),this._root},e.prototype.remove=function(e){this._root=this._remove(e,this._root,this._comparator)},e.prototype._remove=function(e,t,i){var r;return null===t?null:0===i(e,(t=s(e,t,i)).key)?(null===t.left?r=t.right:(r=s(e,t.left,i)).right=t.right,this._size--,r):t},e.prototype.pop=function(){var e=this._root;if(e){for(;e.left;)e=e.left;return this._root=s(e.key,this._root,this._comparator),this._root=this._remove(e.key,this._root,this._comparator),{key:e.key,data:e.data}}return null},e.prototype.findStatic=function(e){for(var t=this._root,i=this._comparator;t;){var r=i(e,t.key);if(0===r)return t;t=r<0?t.left:t.right}return null},e.prototype.find=function(e){return this._root&&(this._root=s(e,this._root,this._comparator),0!==this._comparator(e,this._root.key))?null:this._root},e.prototype.contains=function(e){for(var t=this._root,i=this._comparator;t;){var r=i(e,t.key);if(0===r)return!0;t=r<0?t.left:t.right}return!1},e.prototype.forEach=function(e,t){for(var i=this._root,r=[],n=!1;!n;)null!==i?(r.push(i),i=i.left):0!==r.length?(i=r.pop(),e.call(t,i),i=i.right):n=!0;return this},e.prototype.range=function(e,t,i,r){for(var n=[],s=this._comparator,a=this._root;0!==n.length||a;)if(a)n.push(a),a=a.left;else{if(s((a=n.pop()).key,t)>0)break;if(s(a.key,e)>=0&&i.call(r,a))return this;a=a.right}return this},e.prototype.keys=function(){var e=[];return this.forEach((function(t){var i=t.key;return e.push(i)})),e},e.prototype.values=function(){var e=[];return this.forEach((function(t){var i=t.data;return e.push(i)})),e},e.prototype.min=function(){return this._root?this.minNode(this._root).key:null},e.prototype.max=function(){return this._root?this.maxNode(this._root).key:null},e.prototype.minNode=function(e){if(void 0===e&&(e=this._root),e)for(;e.left;)e=e.left;return e},e.prototype.maxNode=function(e){if(void 0===e&&(e=this._root),e)for(;e.right;)e=e.right;return e},e.prototype.at=function(e){for(var t=this._root,i=!1,r=0,n=[];!i;)if(t)n.push(t),t=t.left;else if(n.length>0){if(t=n.pop(),r===e)return t;r++,t=t.right}else i=!0;return null},e.prototype.next=function(e){var t=this._root,i=null;if(e.right){for(i=e.right;i.left;)i=i.left;return i}for(var r=this._comparator;t;){var n=r(e.key,t.key);if(0===n)break;n<0?(i=t,t=t.left):t=t.right}return i},e.prototype.prev=function(e){var t=this._root,i=null;if(null!==e.left){for(i=e.left;i.right;)i=i.right;return i}for(var r=this._comparator;t;){var n=r(e.key,t.key);if(0===n)break;n<0?t=t.left:(i=t,t=t.right)}return i},e.prototype.clear=function(){return this._root=null,this._size=0,this},e.prototype.toList=function(){return function(e){for(var t=e,i=[],n=!1,s=new r(null,null),a=s;!n;)t?(i.push(t),t=t.left):i.length>0?t=(t=a=a.next=i.pop()).right:n=!0;return a.next=null,s.next}(this._root)},e.prototype.load=function(e,t,i){void 0===t&&(t=[]),void 0===i&&(i=!1);var n=e.length,s=this._comparator;if(i&&p(e,t,0,n-1,s),null===this._root)this._root=u(e,t,0,n),this._size=n;else{var a=function(e,t,i){for(var n=new r(null,null),s=n,a=e,o=t;null!==a&&null!==o;)i(a.key,o.key)<0?(s.next=a,a=a.next):(s.next=o,o=o.next),s=s.next;return null!==a?s.next=a:null!==o&&(s.next=o),n.next}(this.toList(),function(e,t){for(var i=new r(null,null),n=i,s=0;s0){var a=i+Math.floor(s/2),o=e[a],l=t[a],h=new r(o,l);return h.left=u(e,t,i,a),h.right=u(e,t,a+1,n),h}return null}function c(e,t,i){var r=i-t;if(r>0){var n=t+Math.floor(r/2),s=c(e,t,n),a=e.head;return a.left=s,e.head=e.head.next,a.right=c(e,n+1,i),a}return null}function p(e,t,i,r,n){if(!(i>=r)){for(var s=e[i+r>>1],a=i-1,o=r+1;;){do{a++}while(n(e[a],s)<0);do{o--}while(n(e[o],s)>0);if(a>=o)break;var l=e[a];e[a]=e[o],e[o]=l,l=t[a],t[a]=t[o],t[o]=l}p(e,t,i,o,n),p(e,t,o+1,r,n)}}var d=function(e,t){return e.ll.x<=t.x&&t.x<=e.ur.x&&e.ll.y<=t.y&&t.y<=e.ur.y},f=function(e,t){if(t.ur.xt.x?1:e.yt.y?1:0}}]),i(t,[{key:"link",value:function(e){if(e.point===this.point)throw new Error("Tried to link already linked events");for(var t=e.point.events,i=0,r=t.length;i=0&&l>=0?ah?-1:0:s<0&&l<0?ah?1:0:ls?1:0}}}]),t}(),O=0,R=function(){function t(i,r,n,s){e(this,t),this.id=++O,this.leftSE=i,i.segment=this,i.otherSE=r,this.rightSE=r,r.segment=this,r.otherSE=i,this.rings=n,this.windings=s}return i(t,null,[{key:"compare",value:function(e,t){var i=e.leftSE.point.x,r=t.leftSE.point.x,n=e.rightSE.point.x,s=t.rightSE.point.x;if(sa&&o>l)return-1;var u=e.comparePoint(t.leftSE.point);if(u<0)return 1;if(u>0)return-1;var c=t.comparePoint(e.rightSE.point);return 0!==c?c:-1}if(i>r){if(ao&&a>h)return 1;var p=t.comparePoint(e.leftSE.point);if(0!==p)return p;var d=e.comparePoint(t.rightSE.point);return d<0?1:d>0?-1:1}if(ao)return 1;if(ns){var m=e.comparePoint(t.rightSE.point);if(m<0)return 1;if(m>0)return-1}if(n!==s){var g=l-a,y=n-i,v=h-o,T=s-r;if(g>y&&vT)return-1}return n>s?1:nh?1:e.idt.id?1:0}}]),i(t,[{key:"replaceRightSE",value:function(e){this.rightSE=e,this.rightSE.segment=this,this.rightSE.otherSE=this.leftSE,this.leftSE.otherSE=this.rightSE}},{key:"bbox",value:function(){var e=this.leftSE.point.y,t=this.rightSE.point.y;return{ll:{x:this.leftSE.point.x,y:et?e:t}}}},{key:"vector",value:function(){return{x:this.rightSE.point.x-this.leftSE.point.x,y:this.rightSE.point.y-this.leftSE.point.y}}},{key:"isAnEndpoint",value:function(e){return e.x===this.leftSE.point.x&&e.y===this.leftSE.point.y||e.x===this.rightSE.point.x&&e.y===this.rightSE.point.y}},{key:"comparePoint",value:function(e){if(this.isAnEndpoint(e))return 0;var t=this.leftSE.point,i=this.rightSE.point,r=this.vector();if(t.x===i.x)return e.x===t.x?0:e.x0&&o.swapEvents(),D.comparePoints(this.leftSE.point,this.rightSE.point)>0&&this.swapEvents(),r&&(n.checkForConsuming(),s.checkForConsuming()),i}},{key:"swapEvents",value:function(){var e=this.rightSE;this.rightSE=this.leftSE,this.leftSE=e,this.leftSE.isLeft=!0,this.rightSE.isLeft=!1;for(var t=0,i=this.windings.length;t0){var s=i;i=r,r=s}if(i.prev===r){var a=i;i=r,r=a}for(var o=0,l=r.rings.length;o0))throw new Error("Tried to create degenerate segment at [".concat(e.x,", ").concat(e.y,"]"));n=i,s=e,a=-1}return new t(new D(n,!0),new D(s,!1),[r],[a])}}]),t}(),C=function(){function t(i,r,n){if(e(this,t),!Array.isArray(i)||0===i.length)throw new Error("Input geometry is not a valid Polygon or MultiPolygon");if(this.poly=r,this.isExterior=n,this.segments=[],"number"!=typeof i[0][0]||"number"!=typeof i[0][1])throw new Error("Input geometry is not a valid Polygon or MultiPolygon");var s=x.round(i[0][0],i[0][1]);this.bbox={ll:{x:s.x,y:s.y},ur:{x:s.x,y:s.y}};for(var a=s,o=1,l=i.length;othis.bbox.ur.x&&(this.bbox.ur.x=h.x),h.y>this.bbox.ur.y&&(this.bbox.ur.y=h.y),a=h)}(s.x!==a.x||s.y!==a.y)&&this.segments.push(R.fromRing(a,s,this))}return i(t,[{key:"getSweepEvents",value:function(){for(var e=[],t=0,i=this.segments.length;tthis.bbox.ur.x&&(this.bbox.ur.x=a.bbox.ur.x),a.bbox.ur.y>this.bbox.ur.y&&(this.bbox.ur.y=a.bbox.ur.y),this.interiorRings.push(a)}this.multiPoly=r}return i(t,[{key:"getSweepEvents",value:function(){for(var e=this.exteriorRing.getSweepEvents(),t=0,i=this.interiorRings.length;tthis.bbox.ur.x&&(this.bbox.ur.x=a.bbox.ur.x),a.bbox.ur.y>this.bbox.ur.y&&(this.bbox.ur.y=a.bbox.ur.y),this.polys.push(a)}this.isSubject=r}return i(t,[{key:"getSweepEvents",value:function(){for(var e=[],t=0,i=this.polys.length;t0&&(e=r)}for(var n=e.segment.prevInResult(),s=n?n.prevInResult():null;;){if(!n)return null;if(!s)return n.ringOut;if(s.ringOut!==n.ringOut)return s.ringOut.enclosingRing()!==n.ringOut?n.ringOut:n.ringOut.enclosingRing();n=s.prevInResult(),s=n?n.prevInResult():null}}}]),t}(),F=function(){function t(i){e(this,t),this.exteriorRing=i,i.poly=this,this.interiorRings=[]}return i(t,[{key:"addInterior",value:function(e){this.interiorRings.push(e),e.poly=this}},{key:"getGeom",value:function(){var e=[this.exteriorRing.getGeom()];if(null===e[0])return null;for(var t=0,i=this.interiorRings.length;t1&&void 0!==arguments[1]?arguments[1]:R.compare;e(this,t),this.queue=i,this.tree=new h(r),this.segments=[]}return i(t,[{key:"process",value:function(e){var t=e.segment,i=[];if(e.consumedBy)return e.isLeft?this.queue.remove(e.otherSE):this.tree.remove(t),i;var r=e.isLeft?this.tree.insert(t):this.tree.find(t);if(!r)throw new Error("Unable to find segment #".concat(t.id," ")+"[".concat(t.leftSE.point.x,", ").concat(t.leftSE.point.y,"] -> ")+"[".concat(t.rightSE.point.x,", ").concat(t.rightSE.point.y,"] ")+"in SweepLine tree. Please submit a bug report.");for(var n=r,s=r,a=void 0,o=void 0;void 0===a;)null===(n=this.tree.prev(n))?a=null:void 0===n.key.consumedBy&&(a=n.key);for(;void 0===o;)null===(s=this.tree.next(s))?o=null:void 0===s.key.consumedBy&&(o=s.key);if(e.isLeft){var l=null;if(a){var h=a.getIntersection(t);if(null!==h&&(t.isAnEndpoint(h)||(l=h),!a.isAnEndpoint(h)))for(var u=this._splitSafely(a,h),c=0,p=u.length;c0?(this.tree.remove(t),i.push(e)):(this.segments.push(t),t.prev=a)}else{if(a&&o){var _=a.getIntersection(o);if(null!==_){if(!a.isAnEndpoint(_))for(var E=this._splitSafely(a,_),w=0,S=E.length;wB)throw new Error("Infinite loop when putting segment endpoints in a priority queue (queue size too big). Please file a bug report.");for(var _=new k(m),E=m.size,w=m.pop();w;){var S=w.key;if(m.size===E){var I=S.segment;throw new Error("Unable to pop() ".concat(S.isLeft?"left":"right"," SweepEvent ")+"[".concat(S.point.x,", ").concat(S.point.y,"] from segment #").concat(I.id," ")+"[".concat(I.leftSE.point.x,", ").concat(I.leftSE.point.y,"] -> ")+"[".concat(I.rightSE.point.x,", ").concat(I.rightSE.point.y,"] from queue. ")+"Please file a bug report.")}if(m.size>B)throw new Error("Infinite loop when passing sweep line over endpoints (queue size too big). Please file a bug report.");if(_.segments.length>H)throw new Error("Infinite loop when passing sweep line over endpoints (too many sweep line segments). Please file a bug report.");for(var M=_.process(S),A=0,O=M.length;A1?t-1:0),r=1;r1?t-1:0),r=1;r1?t-1:0),r=1;r1?t-1:0),r=1;r{"use strict";t.exports=function(e,t,r){var n=e*t,s=i*e,a=s-(s-e),o=e-a,l=i*t,h=l-(l-t),u=t-h,c=o*u-(n-a*h-o*h-a*u);return r?(r[0]=c,r[1]=n,r):[c,n]};var i=+(Math.pow(2,27)+1)})),FB=z(((e,t)=>{"use strict";t.exports=function(e,t){var i=0|e.length,r=0|t.length;if(1===i&&1===r)return function(e,t){var i=e+t,r=i-e,n=i-r,s=t-r,a=e-n,o=a+s;return o?[o,i]:[i]}(e[0],t[0]);var n,s,a=new Array(i+r),o=0,l=0,h=0,u=Math.abs,c=e[l],p=u(c),d=t[h],f=u(d);p=r?(n=c,(l+=1){"use strict";t.exports=function(e,t,i){var r=e+t,n=r-e,s=t-n,a=e-(r-n);return i?(i[0]=a+s,i[1]=r,i):[a+s,r]}})),UB=z(((e,t)=>{"use strict";var i=VC(),r=Hpe();t.exports=function(e,t){var n=e.length;if(1===n){var s=i(e[0],t);return s[0]?s:[s[1]]}var a=new Array(2*n),o=[.1,.1],l=[.1,.1],h=0;i(e[0],t,o),o[0]&&(a[h++]=o[0]);for(var u=1;u{"use strict";t.exports=function(e){for(var t=e.length,i=e[e.length-1],r=t,n=t-2;n>=0;--n){var s=i;(l=(o=e[n])-((i=s+o)-s))&&(e[--r]=i,i=l)}var a=0;for(n=r;n{"use strict";t.exports=function(e,t){var i=0|e.length,r=0|t.length;if(1===i&&1===r)return function(e,t){var i=e+t,r=i-e,n=i-r,s=t-r,a=e-n,o=a+s;return o?[o,i]:[i]}(e[0],-t[0]);var n,s,a=new Array(i+r),o=0,l=0,h=0,u=Math.abs,c=e[l],p=u(c),d=-t[h],f=u(d);p=r?(n=c,(l+=1){"use strict";var i=VC(),r=FB(),n=UB(),s=Vpe();function a(e,t,i,r){return function(i,n,s){var a=e(e(t(n[1],s[0]),t(-s[1],n[0])),e(t(i[1],n[0]),t(-n[1],i[0]))),o=e(t(i[1],s[0]),t(-s[1],i[0])),l=r(a,o);return l[l.length-1]}}function o(e,t,i,r){return function(n,s,a,o){var l=e(e(i(e(t(a[1],o[0]),t(-o[1],a[0])),s[2]),e(i(e(t(s[1],o[0]),t(-o[1],s[0])),-a[2]),i(e(t(s[1],a[0]),t(-a[1],s[0])),o[2]))),e(i(e(t(s[1],o[0]),t(-o[1],s[0])),n[2]),e(i(e(t(n[1],o[0]),t(-o[1],n[0])),-s[2]),i(e(t(n[1],s[0]),t(-s[1],n[0])),o[2])))),h=e(e(i(e(t(a[1],o[0]),t(-o[1],a[0])),n[2]),e(i(e(t(n[1],o[0]),t(-o[1],n[0])),-a[2]),i(e(t(n[1],a[0]),t(-a[1],n[0])),o[2]))),e(i(e(t(s[1],a[0]),t(-a[1],s[0])),n[2]),e(i(e(t(n[1],a[0]),t(-a[1],n[0])),-s[2]),i(e(t(n[1],s[0]),t(-s[1],n[0])),a[2])))),u=r(l,h);return u[u.length-1]}}function l(e,t,i,r){return function(n,s,a,o,l){var h=e(e(e(i(e(i(e(t(o[1],l[0]),t(-l[1],o[0])),a[2]),e(i(e(t(a[1],l[0]),t(-l[1],a[0])),-o[2]),i(e(t(a[1],o[0]),t(-o[1],a[0])),l[2]))),s[3]),e(i(e(i(e(t(o[1],l[0]),t(-l[1],o[0])),s[2]),e(i(e(t(s[1],l[0]),t(-l[1],s[0])),-o[2]),i(e(t(s[1],o[0]),t(-o[1],s[0])),l[2]))),-a[3]),i(e(i(e(t(a[1],l[0]),t(-l[1],a[0])),s[2]),e(i(e(t(s[1],l[0]),t(-l[1],s[0])),-a[2]),i(e(t(s[1],a[0]),t(-a[1],s[0])),l[2]))),o[3]))),e(i(e(i(e(t(a[1],o[0]),t(-o[1],a[0])),s[2]),e(i(e(t(s[1],o[0]),t(-o[1],s[0])),-a[2]),i(e(t(s[1],a[0]),t(-a[1],s[0])),o[2]))),-l[3]),e(i(e(i(e(t(o[1],l[0]),t(-l[1],o[0])),s[2]),e(i(e(t(s[1],l[0]),t(-l[1],s[0])),-o[2]),i(e(t(s[1],o[0]),t(-o[1],s[0])),l[2]))),n[3]),i(e(i(e(t(o[1],l[0]),t(-l[1],o[0])),n[2]),e(i(e(t(n[1],l[0]),t(-l[1],n[0])),-o[2]),i(e(t(n[1],o[0]),t(-o[1],n[0])),l[2]))),-s[3])))),e(e(i(e(i(e(t(s[1],l[0]),t(-l[1],s[0])),n[2]),e(i(e(t(n[1],l[0]),t(-l[1],n[0])),-s[2]),i(e(t(n[1],s[0]),t(-s[1],n[0])),l[2]))),o[3]),e(i(e(i(e(t(s[1],o[0]),t(-o[1],s[0])),n[2]),e(i(e(t(n[1],o[0]),t(-o[1],n[0])),-s[2]),i(e(t(n[1],s[0]),t(-s[1],n[0])),o[2]))),-l[3]),i(e(i(e(t(a[1],o[0]),t(-o[1],a[0])),s[2]),e(i(e(t(s[1],o[0]),t(-o[1],s[0])),-a[2]),i(e(t(s[1],a[0]),t(-a[1],s[0])),o[2]))),n[3]))),e(i(e(i(e(t(a[1],o[0]),t(-o[1],a[0])),n[2]),e(i(e(t(n[1],o[0]),t(-o[1],n[0])),-a[2]),i(e(t(n[1],a[0]),t(-a[1],n[0])),o[2]))),-s[3]),e(i(e(i(e(t(s[1],o[0]),t(-o[1],s[0])),n[2]),e(i(e(t(n[1],o[0]),t(-o[1],n[0])),-s[2]),i(e(t(n[1],s[0]),t(-s[1],n[0])),o[2]))),a[3]),i(e(i(e(t(s[1],a[0]),t(-a[1],s[0])),n[2]),e(i(e(t(n[1],a[0]),t(-a[1],n[0])),-s[2]),i(e(t(n[1],s[0]),t(-s[1],n[0])),a[2]))),-o[3]))))),u=e(e(e(i(e(i(e(t(o[1],l[0]),t(-l[1],o[0])),a[2]),e(i(e(t(a[1],l[0]),t(-l[1],a[0])),-o[2]),i(e(t(a[1],o[0]),t(-o[1],a[0])),l[2]))),n[3]),i(e(i(e(t(o[1],l[0]),t(-l[1],o[0])),n[2]),e(i(e(t(n[1],l[0]),t(-l[1],n[0])),-o[2]),i(e(t(n[1],o[0]),t(-o[1],n[0])),l[2]))),-a[3])),e(i(e(i(e(t(a[1],l[0]),t(-l[1],a[0])),n[2]),e(i(e(t(n[1],l[0]),t(-l[1],n[0])),-a[2]),i(e(t(n[1],a[0]),t(-a[1],n[0])),l[2]))),o[3]),i(e(i(e(t(a[1],o[0]),t(-o[1],a[0])),n[2]),e(i(e(t(n[1],o[0]),t(-o[1],n[0])),-a[2]),i(e(t(n[1],a[0]),t(-a[1],n[0])),o[2]))),-l[3]))),e(e(i(e(i(e(t(a[1],l[0]),t(-l[1],a[0])),s[2]),e(i(e(t(s[1],l[0]),t(-l[1],s[0])),-a[2]),i(e(t(s[1],a[0]),t(-a[1],s[0])),l[2]))),n[3]),i(e(i(e(t(a[1],l[0]),t(-l[1],a[0])),n[2]),e(i(e(t(n[1],l[0]),t(-l[1],n[0])),-a[2]),i(e(t(n[1],a[0]),t(-a[1],n[0])),l[2]))),-s[3])),e(i(e(i(e(t(s[1],l[0]),t(-l[1],s[0])),n[2]),e(i(e(t(n[1],l[0]),t(-l[1],n[0])),-s[2]),i(e(t(n[1],s[0]),t(-s[1],n[0])),l[2]))),a[3]),i(e(i(e(t(s[1],a[0]),t(-a[1],s[0])),n[2]),e(i(e(t(n[1],a[0]),t(-a[1],n[0])),-s[2]),i(e(t(n[1],s[0]),t(-s[1],n[0])),a[2]))),-l[3])))),c=r(h,u);return c[c.length-1]}}function h(e){return(3===e?a:4===e?o:l)(r,i,n,s)}var u=h(3),c=h(4),p=[function(){return 0},function(){return 0},function(e,t){return t[0]-e[0]},function(e,t,i){var r,n=(e[1]-i[1])*(t[0]-i[0]),s=(e[0]-i[0])*(t[1]-i[1]),a=n-s;if(n>0){if(s<=0)return a;r=n+s}else{if(!(n<0))return a;if(s>=0)return a;r=-(n+s)}var o=33306690738754716e-32*r;return a>=o||a<=-o?a:u(e,t,i)},function(e,t,i,r){var n=e[0]-r[0],s=t[0]-r[0],a=i[0]-r[0],o=e[1]-r[1],l=t[1]-r[1],h=i[1]-r[1],u=e[2]-r[2],p=t[2]-r[2],d=i[2]-r[2],f=s*h,m=a*l,g=a*o,y=n*h,v=n*l,T=s*o,x=u*(f-m)+p*(g-y)+d*(v-T),b=7771561172376103e-31*((Math.abs(f)+Math.abs(m))*Math.abs(u)+(Math.abs(g)+Math.abs(y))*Math.abs(p)+(Math.abs(v)+Math.abs(T))*Math.abs(d));return x>b||-x>b?x:c(e,t,i,r)}];function d(e){var t=p[e.length];return t||(t=p[e.length]=h(e.length)),t.apply(void 0,e)}function f(e,t,i,r,n,s,a){return function(t,i,o,l,h){switch(arguments.length){case 0:case 1:return 0;case 2:return r(t,i);case 3:return n(t,i,o);case 4:return s(t,i,o,l);case 5:return a(t,i,o,l,h)}for(var u=new Array(arguments.length),c=0;c{"use strict";t.exports=function(e,t,r,n){var s=i(e,r,n),a=i(t,r,n);if(s>0&&a>0||s<0&&a<0)return!1;var o=i(r,e,t),l=i(n,e,t);return!(o>0&&l>0||o<0&&l<0)&&(0!==s||0!==a||0!==o||0!==l||function(e,t,i,r){for(var n=0;n<2;++n){var s=e[n],a=t[n],o=Math.min(s,a),l=Math.max(s,a),h=i[n],u=r[n],c=Math.min(h,u);if(Math.max(h,u){"use strict";t.exports=function(e,t,o,l){if(!a(e,t,o,l))return[[0],[0],[0]];var h=r([o[1]],[-l[1]]),u=r([-o[0]],[l[0]]),c=r(r(n(u,e[1]),n(u,-t[1])),r(n(h,e[0]),n(h,-t[0]))),p=r(i(-e[0],t[1]),i(e[1],t[0])),d=r(i(-o[0],l[1]),i(o[1],l[0])),f=r(r(n(d,e[0]),n(d,-t[0])),r(n(p,-o[0]),n(p,l[0]))),m=r(r(n(d,e[1]),n(d,-t[1])),r(n(p,-o[1]),n(p,l[1])));return[s(f),s(m),s(c)]};var i=VC(),r=FB(),n=UB(),s=kpe(),a=qpe()})),Kpe=z(((e,t)=>{t.exports=function(e){var t=0,i=e.length;switch(i){case 1:t=e[0];break;case 2:t=e[0]+e[1];break;case 3:t=e[0]+e[1]+e[2];break;case 4:t=e[0]+e[1]+e[2]+e[3];break;default:for(var r=0;r{var i=Xpe(),r=Kpe();function n(e,t){return e[0]===t[0]&&e[1]===t[1]}t.exports=function(e,t){for(var u={},c=e.length,p=[],d=0;d{!function(){"use strict";function e(e,t){var i=e.x-t.x,r=e.y-t.y;return i*i+r*r}function i(e,t,i){var r=t.x,n=t.y,s=i.x-r,a=i.y-n;if(0!==s||0!==a){var o=((e.x-r)*s+(e.y-n)*a)/(s*s+a*a);o>1?(r=i.x,n=i.y):o>0&&(r+=s*o,n+=a*o)}return(s=e.x-r)*s+(a=e.y-n)*a}function r(e,t,n,s,a){for(var o,l=s,h=t+1;hl&&(o=h,l=u)}l>s&&(o-t>1&&r(e,t,o,s,a),a.push(e[o]),n-o>1&&r(e,o,n,s,a))}function n(e,t){var i=e.length-1,n=[e[0]];return r(e,0,i,t,n),n.push(e[i]),n}function s(t,i,r){if(t.length<=2)return t;var s=void 0!==i?i*i:1;return t=r?t:function(t,i){for(var r,n=t[0],s=[n],a=1,o=t.length;ai&&(s.push(r),n=r);return n!==r&&s.push(r),s}(t,s),t=n(t,s)}"function"==typeof define&&define.amd?define((function(){return s})):void 0!==t?(t.exports=s,t.exports.default=s):"undefined"!=typeof self?self.simplify=s:window.simplify=s}()})),dde=z(((e,t)=>{var i,r;i=e,r=function(){"use strict";var e=Math.imul,t=Math.clz32;function i(e){return(i="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})(e)}function r(e,t){for(var i,r=0;re.length)&&(t=e.length);for(var i=0,r=Array(t);id.__kMaxLength)throw new RangeError("Maximum BigInt size exceeded");return i}!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&s(e,t)}(d,e);var f=function(e){var t=a();return function(){var i,r=n(e);if(t){var s=n(this).constructor;i=Reflect.construct(r,arguments,s)}else i=r.apply(this,arguments);return u(this,i)}}(d);return function(e,t,i){t&&r(e.prototype,t),i&&r(e,i),Object.defineProperty(e,"prototype",{writable:!1})}(d,[{key:"toDebugString",value:function(){var e,t=["BigInt["],i=function(e,t){var i="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!i){if(Array.isArray(e)||(i=p(e))||t&&e&&"number"==typeof e.length){i&&(e=i);var r=0,n=function(){};return{s:n,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:n}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,a=!0,o=!1;return{s:function(){i=i.call(e)},n:function(){var e=i.next();return a=e.done,e},e:function(e){o=!0,s=e},f:function(){try{a||null==i.return||i.return()}finally{if(o)throw s}}}}(this);try{for(i.s();!(e=i.n()).done;){var r=e.value;t.push((r&&(r>>>0).toString(16))+", ")}}catch(e){i.e(e)}finally{i.f()}return t.push("]"),t.join("")}},{key:"toString",value:function(){var e=0e||36this.length&&(i=this.length);for(var r=32767&e,n=e>>>15,s=0,a=t,o=0;o>>15,c=d.__imul(h,r),p=d.__imul(h,n),f=d.__imul(u,r),m=a+c+s;s=m>>>30,m&=1073741823,s+=(m+=((32767&p)<<15)+((32767&f)<<15))>>>30,a=d.__imul(u,n)+(p>>>15)+(f>>>15),this.__setDigit(o,1073741823&m)}if(0!==s||0!==a)throw new Error("implementation bug")}},{key:"__inplaceAdd",value:function(e,t,i){for(var r,n=0,s=0;s>>15,this.__setHalfDigit(t+s,32767&r);return n}},{key:"__inplaceSub",value:function(e,t,i){var r=0;if(1&t){t>>=1;for(var n=this.__digit(t),s=32767&n,a=0;a>>1;a++){var o=e.__digit(a),l=(n>>>15)-(32767&o)-r;r=1&l>>>15,this.__setDigit(t+a,(32767&l)<<15|32767&s),r=1&(s=(32767&(n=this.__digit(t+a+1)))-(o>>>15)-r)>>>15}var h=e.__digit(a),u=(n>>>15)-(32767&h)-r;if(r=1&u>>>15,this.__setDigit(t+a,(32767&u)<<15|32767&s),t+a+1>=this.length)throw new RangeError("out of bounds");!(1&i)&&(r=1&(s=(32767&(n=this.__digit(t+a+1)))-(h>>>15)-r)>>>15,this.__setDigit(t+e.length,1073709056&n|32767&s))}else{t>>=1;for(var c=0;c>>15)-(d>>>15)-(r=1&f>>>15);r=1&m>>>15,this.__setDigit(t+c,(32767&m)<<15|32767&f)}var g=this.__digit(t+c),y=e.__digit(c),v=(32767&g)-(32767&y)-r;r=1&v>>>15;var T=0;!(1&i)&&(r=1&(T=(g>>>15)-(y>>>15)-r)>>>15),this.__setDigit(t+c,(32767&T)<<15|32767&v)}return r}},{key:"__inplaceRightShift",value:function(e){if(0!==e){for(var t,i=this.__digit(0)>>>e,r=this.length-1,n=0;n>>e;this.__setDigit(r,i)}}},{key:"__digit",value:function(e){return this[e]}},{key:"__unsignedDigit",value:function(e){return this[e]>>>0}},{key:"__setDigit",value:function(e,t){this[e]=0|t}},{key:"__setDigitGrow",value:function(e,t){this[e]=0|t}},{key:"__halfDigitLength",value:function(){var e=this.length;return 32767>=this.__unsignedDigit(e-1)?2*e-1:2*e}},{key:"__halfDigit",value:function(e){return 32767&this[e>>>1]>>>15*(1&e)}},{key:"__setHalfDigit",value:function(e,t){var i=e>>>1,r=this.__digit(i),n=1&e?32767&r|t<<15:1073709056&r|32767&t;this.__setDigit(i,n)}}],[{key:"BigInt",value:function(e){var t=Number.isFinite;if("number"==typeof e){if(0===e)return d.__zero();if(d.__isOneDigitInt(e))return 0>e?d.__oneDigit(-e,!0):d.__oneDigit(e,!1);if(!t(e)||l(e)!==e)throw new RangeError("The number "+e+" cannot be converted to BigInt because it is not an integer");return d.__fromDouble(e)}if("string"==typeof e){var r=d.__fromString(e);if(null===r)throw new SyntaxError("Cannot convert "+e+" to a BigInt");return r}if("boolean"==typeof e)return!0===e?d.__oneDigit(1,!1):d.__zero();if("object"===i(e)){if(e.constructor===d)return e;var n=d.__toPrimitive(e);return d.BigInt(n)}throw new TypeError("Cannot convert "+e+" to a BigInt")}},{key:"toNumber",value:function(e){var t=e.length;if(0===t)return 0;if(1===t){var i=e.__unsignedDigit(0);return e.sign?-i:i}var r=e.__digit(t-1),n=d.__clz30(r),s=30*t-n;if(1024>>=12;var c=h-12,p=12<=h?0:o<<20+h,f=20+h;for(0>>30-c,p=o<>>30-f,f-=30;var m=d.__decideRounding(e,f,l,o);if((1===m||0===m&&1==(1&p))&&0==(p=p+1>>>0)&&++u>>>20!=0&&(u=0,1023<++a))return e.sign?-1/0:1/0;var g=e.sign?-2147483648:0;return a=a+1023<<20,d.__kBitConversionInts[1]=g|a|u,d.__kBitConversionInts[0]=p,d.__kBitConversionDouble[0]}},{key:"unaryMinus",value:function(e){if(0===e.length)return e;var t=e.__copy();return t.sign=!e.sign,t}},{key:"bitwiseNot",value:function(e){return e.sign?d.__absoluteSubOne(e).__trim():d.__absoluteAddOne(e,!0)}},{key:"exponentiate",value:function(e,t){if(t.sign)throw new RangeError("Exponent must be positive");if(0===t.length)return d.__oneDigit(1,!1);if(0===e.length)return e;if(1===e.length&&1===e.__digit(0))return!e.sign||1&t.__digit(0)?e:d.unaryMinus(e);if(1=d.__kMaxLengthBits)throw new RangeError("BigInt too big");if(1===e.length&&2===e.__digit(0)){var r=1+(0|i/30),n=new d(r,e.sign&&0!=(1&i));n.__initializeDigits();var s=1<>=1;0!==i;i>>=1)o=d.multiply(o,o),1&i&&(a=null===a?o:d.multiply(a,o));return a}},{key:"multiply",value:function(e,t){if(0===e.length)return e;if(0===t.length)return t;var i=e.length+t.length;30<=e.__clzmsd()+t.__clzmsd()&&i--;var r=new d(i,e.sign!==t.sign);r.__initializeDigits();for(var n=0;nd.__absoluteCompare(e,t))return d.__zero();var i,r=e.sign!==t.sign,n=t.__unsignedDigit(0);if(1===t.length&&32767>=n){if(1===n)return r===e.sign?e:d.unaryMinus(e);i=d.__absoluteDivSmall(e,n,null)}else i=d.__absoluteDivLarge(e,t,!0,!1);return i.sign=r,i.__trim()}},{key:"remainder",value:function(e,t){if(0===t.length)throw new RangeError("Division by zero");if(0>d.__absoluteCompare(e,t))return e;var i=t.__unsignedDigit(0);if(1===t.length&&32767>=i){if(1===i)return d.__zero();var r=d.__absoluteModSmall(e,i);return 0===r?d.__zero():d.__oneDigit(r,e.sign)}var n=d.__absoluteDivLarge(e,t,!1,!0);return n.sign=e.sign,n.__trim()}},{key:"add",value:function(e,t){var i=e.sign;return i===t.sign?d.__absoluteAdd(e,t,i):0<=d.__absoluteCompare(e,t)?d.__absoluteSub(e,t,i):d.__absoluteSub(t,e,!i)}},{key:"subtract",value:function(e,t){var i=e.sign;return i===t.sign?0<=d.__absoluteCompare(e,t)?d.__absoluteSub(e,t,i):d.__absoluteSub(t,e,!i):d.__absoluteAdd(e,t,i)}},{key:"leftShift",value:function(e,t){return 0===t.length||0===e.length?e:t.sign?d.__rightShiftByAbsolute(e,t):d.__leftShiftByAbsolute(e,t)}},{key:"signedRightShift",value:function(e,t){return 0===t.length||0===e.length?e:t.sign?d.__leftShiftByAbsolute(e,t):d.__rightShiftByAbsolute(e,t)}},{key:"unsignedRightShift",value:function(){throw new TypeError("BigInts have no unsigned right shift; use >> instead")}},{key:"lessThan",value:function(e,t){return 0>d.__compareToBigInt(e,t)}},{key:"lessThanOrEqual",value:function(e,t){return 0>=d.__compareToBigInt(e,t)}},{key:"greaterThan",value:function(e,t){return 0(e=l(e)))throw new RangeError("Invalid value: not (convertible to) a safe integer");if(0===e)return d.__zero();if(e>=d.__kMaxLengthBits)return t;var i=0|(e+29)/30;if(t.length(e=l(e)))throw new RangeError("Invalid value: not (convertible to) a safe integer");if(0===e)return d.__zero();if(t.sign){if(e>d.__kMaxLengthBits)throw new RangeError("BigInt too big");return d.__truncateAndSubFromPowerOfTwo(e,t,!1)}if(e>=d.__kMaxLengthBits)return t;var i=0|(e+29)/30;if(t.length>>r))return t}return d.__truncateToNBits(e,t)}},{key:"ADD",value:function(e,t){if(e=d.__toPrimitive(e),t=d.__toPrimitive(t),"string"==typeof e)return"string"!=typeof t&&(t=t.toString()),e+t;if("string"==typeof t)return e.toString()+t;if(e=d.__toNumeric(e),t=d.__toNumeric(t),d.__isBigInt(e)&&d.__isBigInt(t))return d.add(e,t);if("number"==typeof e&&"number"==typeof t)return e+t;throw new TypeError("Cannot mix BigInt and other types, use explicit conversions")}},{key:"LT",value:function(e,t){return d.__compare(e,t,0)}},{key:"LE",value:function(e,t){return d.__compare(e,t,1)}},{key:"GT",value:function(e,t){return d.__compare(e,t,2)}},{key:"GE",value:function(e,t){return d.__compare(e,t,3)}},{key:"EQ",value:function(e,t){for(;;){if(d.__isBigInt(e))return d.__isBigInt(t)?d.equal(e,t):d.EQ(t,e);if("number"==typeof e){if(d.__isBigInt(t))return d.__equalToNumber(t,e);if("object"!==i(t))return e==t;t=d.__toPrimitive(t)}else if("string"==typeof e){if(d.__isBigInt(t))return null!==(e=d.__fromString(e))&&d.equal(e,t);if("object"!==i(t))return e==t;t=d.__toPrimitive(t)}else if("boolean"==typeof e){if(d.__isBigInt(t))return d.__equalToNumber(t,+e);if("object"!==i(t))return e==t;t=d.__toPrimitive(t)}else if("symbol"===i(e)){if(d.__isBigInt(t))return!1;if("object"!==i(t))return e==t;t=d.__toPrimitive(t)}else{if("object"!==i(e))return e==t;if("object"===i(t)&&t.constructor!==d)return e==t;e=d.__toPrimitive(e)}}}},{key:"NE",value:function(e,t){return!d.EQ(e,t)}},{key:"DataViewGetBigInt64",value:function(e,t){var i=2>>30),h.__setDigit(2,o>>>28),h.__trim()}},{key:"DataViewSetBigInt64",value:function(e,t,i){var r=3>>2,2t)n=-t-1;else{if(0===i)return-1;i--,r=e.__digit(i),n=29}var s=1<>>20)-1023,r=1+(0|i/30),n=new d(r,0>e),s=1048575&d.__kBitConversionInts[1]|1048576,a=d.__kBitConversionInts[0],o=i%30,l=0;if(o<20){var h=20-o;l=h+32,t=s>>>h,s=s<<32-h|a>>>h,a<<=32-h}else if(20===o)l=32,t=s,s=a,a=0;else{var u=o-20;l=32-u,t=s<>>32-u,s=a<>>2,s=s<<30|a>>>2,a<<=30):t=0,n.__setDigit(c,t);return n.__trim()}},{key:"__isWhitespace",value:function(e){return 13>=e&&9<=e||(159>=e?32==e:131071>=e?160==e||5760==e:196607>=e?10>=(e&=131071)||40==e||41==e||47==e||95==e||4096==e:65279==e)}},{key:"__fromString",value:function(e){var t=11073741824/o)return null;var h=o*a+l>>>d.__kBitsPerCharTableShift,u=new d(0|(h+29)/30,!1),c=10>t?t:10,p=10>>0>>0>>d.__kBitsPerCharTableShift)/30;u.__inplaceMultiplyAdd(v,y,x)}while(!f)}else{o>>=d.__kBitsPerCharTableShift;var b=[],_=[],E=!1;do{for(var w,S=0,I=0;;){if(w=void 0,s-48>>>0>>0>>l-(s-=30))}if(0!==n){if(r>=e.length)throw new Error("implementation bug");e.__setDigit(r++,n)}for(;r>>1)+(85&r))>>>2)+(51&r))>>>4)+(15&r),s=t-1,a=e.__digit(i-1),o=0|(30*i-d.__clz30(a)+n-1)/n;if(e.sign&&o++,268435456>>g,c=30-g;c>=n;)l[h--]=d.__kConversionChars[u&s],u>>>=n,c-=n}var y=(u|a<>>n-c;0!==u;)l[h--]=d.__kConversionChars[u&s],u>>>=n;if(e.sign&&(l[h--]="-"),-1!==h)throw new Error("implementation bug");return l.join("")}},{key:"__toStringGeneric",value:function(e,t,i){var r=e.length;if(0===r)return"";if(1===r){var n=e.__unsignedDigit(0).toString(t);return!1===i&&e.sign&&(n="-"+n),n}var s,a,o=30*r-d.__clz30(e.__digit(r-1)),l=d.__kMaxBitsPerChar[t]-1,h=o*d.__kBitsPerCharTableMultiplier,u=1+(h=0|(h+=l-1)/l)>>1,c=d.exponentiate(d.__oneDigit(t,!1),d.__oneDigit(u,!1)),p=c.__unsignedDigit(0);if(1===c.length&&32767>=p){(s=new d(e.length,!1)).__initializeDigits();for(var f,m=0,g=2*e.length-1;0<=g;g--)f=m<<15|e.__halfDigit(g),s.__setHalfDigit(g,0|f/p),m=0|f%p;a=m.toString(t)}else{var y=d.__absoluteDivLarge(e,c,!0,!0);s=y.quotient;var v=y.remainder.__trim();a=d.__toStringGeneric(v,t,!0)}s.__trim();for(var T=d.__toStringGeneric(s,t,!0);a.lengthr?d.__absoluteLess(i):0}},{key:"__compareToNumber",value:function(e,i){if(d.__isOneDigitInt(i)){var r=e.sign,n=0>i;if(r!==n)return d.__unequalSign(r);if(0===e.length){if(n)throw new Error("implementation bug");return 0===i?0:-1}if(1s?d.__absoluteGreater(r):at)return d.__unequalSign(i);if(0===t)throw new Error("implementation bug: should be handled elsewhere");if(0===e.length)return-1;d.__kBitConversionDouble[0]=t;var r=2047&d.__kBitConversionInts[1]>>>20;if(2047==r)throw new Error("implementation bug: handled elsewhere");var n=r-1023;if(0>n)return d.__absoluteGreater(i);var s=e.length,a=e.__digit(s-1),o=d.__clz30(a),l=30*s-o,h=n+1;if(lh)return d.__absoluteGreater(i);var u=1048576|1048575&d.__kBitConversionInts[1],c=d.__kBitConversionInts[0],p=29-o;if(p!==(0|(l-1)%30))throw new Error("implementation bug");var f,m=0;if(p<20){var g=20-p;m=g+32,f=u>>>g,u=u<<32-g|c>>>g,c<<=32-g}else if(20===p)m=32,f=u,u=c,c=0;else{var y=p-20;m=32-y,f=u<>>32-y,u=c<>>=0)>(f>>>=0))return d.__absoluteGreater(i);if(a>>2,u=u<<30|c>>>2,c<<=30):f=0;var T=e.__unsignedDigit(v);if(T>f)return d.__absoluteGreater(i);if(Ti&&e.__unsignedDigit(0)===t(i):0===d.__compareToDouble(e,i)}},{key:"__comparisonResultToBool",value:function(e,t){return 0===t?0>e:1===t?0>=e:2===t?0t;case 3:return e>=t}if(d.__isBigInt(e)&&"string"==typeof t)return null!==(t=d.__fromString(t))&&d.__comparisonResultToBool(d.__compareToBigInt(e,t),i);if("string"==typeof e&&d.__isBigInt(t))return null!==(e=d.__fromString(e))&&d.__comparisonResultToBool(d.__compareToBigInt(e,t),i);if(e=d.__toNumeric(e),t=d.__toNumeric(t),d.__isBigInt(e)){if(d.__isBigInt(t))return d.__comparisonResultToBool(d.__compareToBigInt(e,t),i);if("number"!=typeof t)throw new Error("implementation bug");return d.__comparisonResultToBool(d.__compareToNumber(e,t),i)}if("number"!=typeof e)throw new Error("implementation bug");if(d.__isBigInt(t))return d.__comparisonResultToBool(d.__compareToNumber(t,e),2^i);if("number"!=typeof t)throw new Error("implementation bug");return 0===i?et:3===i?e>=t:void 0}},{key:"__absoluteAdd",value:function(e,t,i){if(e.length>>30,s.__setDigit(o,1073741823&n);for(;o>>30,s.__setDigit(o,1073741823&l)}return o>>30,n.__setDigit(a,1073741823&r);for(;a>>30,n.__setDigit(a,1073741823&o)}return n.__trim()}},{key:"__absoluteAddOne",value:function(e,t){var i=2>>30,i.__setDigit(a,1073741823&n);return 0!==s&&i.__setDigitGrow(r,1),i}},{key:"__absoluteSubOne",value:function(e,t){for(var i,r=e.length,n=new d(t=t||r,!1),s=1,a=0;a>>30,n.__setDigit(a,1073741823&i);if(0!==s)throw new Error("implementation bug");for(var o=r;or?0:e.__unsignedDigit(r)>t.__unsignedDigit(r)?1:-1}},{key:"__multiplyAccumulate",value:function(e,t,i,r){if(0!==t){for(var n=32767&t,s=t>>>15,a=0,o=0,l=0;l>>15,f=d.__imul(c,n),m=d.__imul(c,s),g=d.__imul(p,n);a=(h+=o+f+a)>>>30,h&=1073741823,a+=(h+=((32767&m)<<15)+((32767&g)<<15))>>>30,o=d.__imul(p,s)+(m>>>15)+(g>>>15),i.__setDigit(r,1073741823&h)}for(;0!==a||0!==o;r++){var y=i.__digit(r);y+=a+o,o=0,a=y>>>30,i.__setDigit(r,1073741823&y)}}}},{key:"__internalMultiplyAdd",value:function(e,t,i,r,n){for(var s=i,a=0,o=0;o>>15,t),c=h+((32767&u)<<15)+a+s;s=c>>>30,a=u>>>15,n.__setDigit(o,1073741823&c)}if(n.length>r)for(n.__setDigit(r++,s+a);r>>0,a=0|s/t,o=0|(s=((r=0|s%t)<<15|e.__halfDigit(n-1))>>>0)/t;r=0|s%t,i.__setDigit(n>>>1,a<<15|o)}return i}},{key:"__absoluteModSmall",value:function(e,t){for(var i=0,r=2*e.length-1;0<=r;r--)i=0|((i<<15|e.__halfDigit(r))>>>0)%t;return i}},{key:"__absoluteDivLarge",value:function(e,t,i,r){var n=t.__halfDigitLength(),s=t.length,a=e.__halfDigitLength()-n,o=null;i&&(o=new d(a+2>>>1,!1)).__initializeDigits();var l=new d(n+2>>>1,!1);l.__initializeDigits();var h=d.__clz15(t.__halfDigit(n-1));0>>0;m=0|y/c;for(var v=0|y%c,T=t.__halfDigit(n-2),x=u.__halfDigit(f+n-2);d.__imul(m,T)>>>0>(v<<16|x)>>>0&&(m--,!(32767<(v+=c))););}d.__internalMultiplyAdd(t,m,0,s,l);var b=u.__inplaceSub(l,f,n+1);0!==b&&(b=u.__inplaceAdd(t,f,n),u.__setHalfDigit(f+n,32767&u.__halfDigit(f+n)+b),m--),i&&(1&f?p=m<<15:o.__setDigit(f>>>1,p|m))}if(r)return u.__inplaceRightShift(h),i?{quotient:o,remainder:u}:u;if(i)return o;throw new Error("unreachable")}},{key:"__clz15",value:function(e){return d.__clz30(e)-15}},{key:"__specialLeftShift",value:function(e,t,i){var r=e.length,n=new d(r+i,!1);if(0===t){for(var s=0;s>>30-t;return 0i)throw new RangeError("BigInt too big");var r=0|i/30,n=i%30,s=e.length,a=0!==n&&e.__digit(s-1)>>>30-n!=0,o=s+r+(a?1:0),l=new d(o,e.sign);if(0===n){for(var h=0;h>>30-n;if(a)l.__setDigit(s+r,u);else if(0!==u)throw new Error("implementation bug")}return l.__trim()}},{key:"__rightShiftByAbsolute",value:function(e,t){var i=e.length,r=e.sign,n=d.__toShiftAmount(t);if(0>n)return d.__rightShiftByMaximum(r);var s=0|n/30,a=n%30,o=i-s;if(0>=o)return d.__rightShiftByMaximum(r);var l=!1;if(r)if(e.__digit(s)&(1<>>a,m=i-s-1,g=0;g>>a;u.__setDigit(m,f)}return l&&(u=d.__absoluteAddOne(u,!0,u)),u.__trim()}},{key:"__rightShiftByMaximum",value:function(e){return e?d.__oneDigit(1,!0):d.__zero()}},{key:"__toShiftAmount",value:function(e){if(1d.__kMaxLengthBits?-1:t}},{key:"__toPrimitive",value:function(e){var t=1>>o}return r.__setDigit(n,a),r.__trim()}},{key:"__truncateAndSubFromPowerOfTwo",value:function(e,t,i){for(var r,n=Math.min,s=0|(e+29)/30,a=new d(s,i),o=0,l=s-1,h=0,u=n(l,t.length);o>>30,a.__setDigit(o,1073741823&r);for(;o>>m)-h,c&=g-1}return a.__setDigit(l,c),a.__trim()}},{key:"__digitPow",value:function(e,t){for(var i=1;0>>=1,e*=e;return i}},{key:"__isOneDigitInt",value:function(e){return(1073741823&e)===e}}]),d}(l(Array));return f.__kMaxLength=33554432,f.__kMaxLengthBits=f.__kMaxLength<<5,f.__kMaxBitsPerChar=[0,0,32,51,64,75,83,90,96,102,107,111,115,119,122,126,128,131,134,136,139,141,143,145,147,149,151,153,154,156,158,159,160,162,163,165,166],f.__kBitsPerCharTableShift=5,f.__kBitsPerCharTableMultiplier=1<>>0)/t)},f.__imul=e||function(e,t){return 0|e*t},f},"object"==typeof e&&void 0!==t?t.exports=r():"function"==typeof define&&define.amd?define(r):(i=i||self).JSBI=r()})),mRe=z(((e,t)=>{var i,r;i=e,r=function(){"use strict";function e(e,r,n,s,a){!function e(i,r,n,s,a){for(;s>n;){if(s-n>600){var o=s-n+1,l=r-n+1,h=Math.log(o),u=.5*Math.exp(2*h/3),c=.5*Math.sqrt(h*u*(o-u)/o)*(l-o/2<0?-1:1);e(i,r,Math.max(n,Math.floor(r-l*u/o+c)),Math.min(s,Math.floor(r+(o-l)*u/o+c)),a)}var p=i[r],d=n,f=s;for(t(i,n,r),a(i[s],p)>0&&t(i,n,s);d0;)f--}0===a(i[n],p)?t(i,n,f):t(i,++f,s),f<=r&&(n=f+1),r<=f&&(s=f-1)}}(e,r,n||0,s||e.length-1,a||i)}function t(e,t,i){var r=e[t];e[t]=e[i],e[i]=r}function i(e,t){return et?1:0}var r=function(e){void 0===e&&(e=9),this._maxEntries=Math.max(4,e),this._minEntries=Math.max(2,Math.ceil(.4*this._maxEntries)),this.clear()};function n(e,t,i){if(!i)return t.indexOf(e);for(var r=0;r=e.minX&&t.maxY>=e.minY}function f(e){return{children:e,height:1,leaf:!0,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0}}function m(t,i,r,n,s){for(var a=[i,r];a.length;)if(!((r=a.pop())-(i=a.pop())<=n)){var o=i+Math.ceil((r-i)/n/2)*n;e(t,o,i,r,s),a.push(i,o,o,r)}}return r.prototype.all=function(){return this._all(this.data,[])},r.prototype.search=function(e){var t=this.data,i=[];if(!d(e,t))return i;for(var r=this.toBBox,n=[];t;){for(var s=0;s=0&&n[t].children.length>this._maxEntries;)this._split(n,t),t--;this._adjustParentBBoxes(r,n,t)},r.prototype._split=function(e,t){var i=e[t],r=i.children.length,n=this._minEntries;this._chooseSplitAxis(i,n,r);var a=this._chooseSplitIndex(i,n,r),o=f(i.children.splice(a,i.children.length-a));o.height=i.height,o.leaf=i.leaf,s(i,this.toBBox),s(o,this.toBBox),t?e[t-1].children.push(o):this._splitRoot(i,o)},r.prototype._splitRoot=function(e,t){this.data=f([e,t]),this.data.height=e.height+1,this.data.leaf=!1,s(this.data,this.toBBox)},r.prototype._chooseSplitIndex=function(e,t,i){for(var r,n,s,o,l,h,c,p=1/0,d=1/0,f=t;f<=i-t;f++){var m=a(e,0,f,this.toBBox),g=a(e,f,i,this.toBBox),y=(n=m,s=g,o=Math.max(n.minX,s.minX),l=Math.max(n.minY,s.minY),h=Math.min(n.maxX,s.maxX),c=Math.min(n.maxY,s.maxY),Math.max(0,h-o)*Math.max(0,c-l)),v=u(m)+u(g);y=t;d--){var f=e.children[d];o(l,e.leaf?n(f):f),h+=c(l)}return h},r.prototype._adjustParentBBoxes=function(e,t,i){for(var r=i;r>=0;r--)o(t[r],e)},r.prototype._condense=function(e){for(var t=e.length-1,i=void 0;t>=0;t--)0===e[t].children.length?t>0?(i=e[t-1].children).splice(i.indexOf(e[t]),1):this.clear():s(e[t],this.toBBox)},r},"object"==typeof e&&void 0!==t?t.exports=r():"function"==typeof define&&define.amd?define(r):(i=i||self).RBush=r()})),gRe=z(((e,t)=>{var i,r;i=e,r=function(){"use strict";var e=function(e,i){if(void 0===e&&(e=[]),void 0===i&&(i=t),this.data=e,this.length=this.data.length,this.compare=i,this.length>0)for(var r=(this.length>>1)-1;r>=0;r--)this._down(r)};function t(e,t){return et?1:0}return e.prototype.push=function(e){this.data.push(e),this.length++,this._up(this.length-1)},e.prototype.pop=function(){if(0!==this.length){var e=this.data[0],t=this.data.pop();return this.length--,this.length>0&&(this.data[0]=t,this._down(0)),e}},e.prototype.peek=function(){return this.data[0]},e.prototype._up=function(e){for(var t=this.data,i=this.compare,r=t[e];e>0;){var n=e-1>>1,s=t[n];if(i(r,s)>=0)break;t[e]=s,e=n}t[e]=r},e.prototype._down=function(e){for(var t=this.data,i=this.compare,r=this.length>>1,n=t[e];e=0)break;t[e]=a,e=s}t[e]=n},e},"object"==typeof e&&void 0!==t?t.exports=r():"function"==typeof define&&define.amd?define(r):(i=i||self).TinyQueue=r()})),yRe=z(((e,t)=>{t.exports=function(e,t,i,r){var n=e[0],s=e[1],a=!1;void 0===i&&(i=0),void 0===r&&(r=t.length);for(var o=(r-i)/2,l=0,h=o-1;ls!=d>s&&n<(p-u)*(s-c)/(d-c)+u&&(a=!a)}return a}})),ERe=z(((e,t)=>{t.exports=function(e,t,i,r){var n=e[0],s=e[1],a=!1;void 0===i&&(i=0),void 0===r&&(r=t.length);for(var o=r-i,l=0,h=o-1;ls!=d>s&&n<(p-u)*(s-c)/(d-c)+u&&(a=!a)}return a}})),IRe=z(((e,t)=>{var i=yRe(),r=ERe();t.exports=function(e,t,n,s){return t.length>0&&Array.isArray(t[0])?r(e,t,n,s):i(e,t,n,s)},t.exports.nested=r,t.exports.flat=i})),SRe=z(((e,t)=>{var i,r;i=e,r=function(e){"use strict";function t(e,t,i,r,n){let s,a,o,l,h=t[0],u=r[0],c=0,p=0;u>h==u>-h?(s=h,h=t[++c]):(s=u,u=r[++p]);let d=0;if(ch==u>-h?(o=s-((a=h+s)-h),h=t[++c]):(o=s-((a=u+s)-u),u=r[++p]),s=a,0!==o&&(n[d++]=o);ch==u>-h?(o=s-((a=s+h)-(l=a-s))+(h-l),h=t[++c]):(o=s-((a=s+u)-(l=a-s))+(u-l),u=r[++p]),s=a,0!==o&&(n[d++]=o);for(;c0!=d>0)return f;let m=Math.abs(p+d);return Math.abs(f)>=33306690738754716e-32*m?f:-function(e,i,l,h,u,c,p){let d,f,m,g,y,v,T,x,b,_,E,w,S,I,M,A,D,O,R=e-u,C=l-u,N=i-c,P=h-c;y=(M=(x=R-(T=(v=134217729*R)-(v-R)))*(_=P-(b=(v=134217729*P)-(v-P)))-((I=R*P)-T*b-x*b-T*_))-(E=M-(D=(x=N-(T=(v=134217729*N)-(v-N)))*(_=C-(b=(v=134217729*C)-(v-C)))-((A=N*C)-T*b-x*b-T*_))),r[0]=M-(E+y)+(y-D),y=(S=I-((w=I+E)-(y=w-I))+(E-y))-(E=S-A),r[1]=S-(E+y)+(y-A),y=(O=w+E)-w,r[2]=w-(O-y)+(E-y),r[3]=O;let L=function(e,t){let i=t[0];for(let e=1;e<4;e++)i+=t[e];return i}(0,r),F=22204460492503146e-32*p;if(L>=F||-L>=F||(d=e-(R+(y=e-R))+(y-u),m=l-(C+(y=l-C))+(y-u),f=i-(N+(y=i-N))+(y-c),g=h-(P+(y=h-P))+(y-c),0===d&&0===f&&0===m&&0===g)||(F=11093356479670487e-47*p+33306690738754706e-32*Math.abs(L),(L+=R*g+P*d-(N*m+C*f))>=F||-L>=F))return L;y=(M=(x=d-(T=(v=134217729*d)-(v-d)))*(_=P-(b=(v=134217729*P)-(v-P)))-((I=d*P)-T*b-x*b-T*_))-(E=M-(D=(x=f-(T=(v=134217729*f)-(v-f)))*(_=C-(b=(v=134217729*C)-(v-C)))-((A=f*C)-T*b-x*b-T*_))),o[0]=M-(E+y)+(y-D),y=(S=I-((w=I+E)-(y=w-I))+(E-y))-(E=S-A),o[1]=S-(E+y)+(y-A),y=(O=w+E)-w,o[2]=w-(O-y)+(E-y),o[3]=O;let U=t(4,r,4,o,n);y=(M=(x=R-(T=(v=134217729*R)-(v-R)))*(_=g-(b=(v=134217729*g)-(v-g)))-((I=R*g)-T*b-x*b-T*_))-(E=M-(D=(x=N-(T=(v=134217729*N)-(v-N)))*(_=m-(b=(v=134217729*m)-(v-m)))-((A=N*m)-T*b-x*b-T*_))),o[0]=M-(E+y)+(y-D),y=(S=I-((w=I+E)-(y=w-I))+(E-y))-(E=S-A),o[1]=S-(E+y)+(y-A),y=(O=w+E)-w,o[2]=w-(O-y)+(E-y),o[3]=O;let k=t(U,n,4,o,s);y=(M=(x=d-(T=(v=134217729*d)-(v-d)))*(_=g-(b=(v=134217729*g)-(v-g)))-((I=d*g)-T*b-x*b-T*_))-(E=M-(D=(x=f-(T=(v=134217729*f)-(v-f)))*(_=m-(b=(v=134217729*m)-(v-m)))-((A=f*m)-T*b-x*b-T*_))),o[0]=M-(E+y)+(y-D),y=(S=I-((w=I+E)-(y=w-I))+(E-y))-(E=S-A),o[1]=S-(E+y)+(y-A),y=(O=w+E)-w,o[2]=w-(O-y)+(E-y),o[3]=O;let B=t(k,s,4,o,a);return a[B-1]}(e,i,l,h,u,c,m)},e.orient2dfast=function(e,t,i,r,n,s){return(t-s)*(i-n)-(e-n)*(r-s)},Object.defineProperty(e,"__esModule",{value:!0})},"object"==typeof e&&void 0!==t?r(e):"function"==typeof define&&define.amd?define(["exports"],r):r((i=i||self).predicates={})})),ARe=z(((e,t)=>{"use strict";var i=mRe(),r=gRe(),n=IRe(),s=SRe().orient2d;function a(e,t,r){t=Math.max(0,void 0===t?2:t),r=r||0;var s=function(e){for(var t=e[0],i=e[0],r=e[0],s=e[0],a=0;ar[0]&&(r=o),o[1]s[1]&&(s=o)}var l=[t,i,r,s],h=l.slice();for(a=0;a=2&&p(t[t.length-2],t[t.length-1],e[i])<=0;)t.pop();t.push(e[i])}for(var r=[],n=e.length-1;n>=0;n--){for(;r.length>=2&&p(r[r.length-2],r[r.length-1],e[n])<=0;)r.pop();r.push(e[n])}return r.pop(),t.pop(),t.concat(r)}(h)}(e),a=new i(16);a.toBBox=function(e){return{minX:e[0],minY:e[1],maxX:e[0],maxY:e[1]}},a.compareMinX=function(e,t){return e[0]-t[0]},a.compareMinY=function(e,t){return e[1]-t[1]},a.load(e);for(var l,h=[],u=0;ua||u.push({node:f,dist:m})}for(;u.length&&!u.peek().node.children;){var g=u.pop(),v=g.node,T=y(v,t,i),x=y(v,n,s);if(g.dist=t.minX&&e[0]<=t.maxX&&e[1]>=t.minY&&e[1]<=t.maxY}function c(e,t,i){for(var r=Math.min(e[0],t[0]),n=Math.min(e[1],t[1]),s=Math.max(e[0],t[0]),a=Math.max(e[1],t[1]),o=i.search({minX:r,minY:n,maxX:s,maxY:a}),l=0;l0!=p(e,t,r)>0&&p(i,r,e)>0!=p(i,r,t)>0}function f(e){var t=e.p,i=e.next.p;return e.minX=Math.min(t[0],i[0]),e.minY=Math.min(t[1],i[1]),e.maxX=Math.max(t[0],i[0]),e.maxY=Math.max(t[1],i[1]),e}function m(e,t){var i={p:e,prev:null,next:null,minX:0,minY:0,maxX:0,maxY:0};return t?(i.next=t.next,i.prev=t,t.next.prev=i,t.next=i):(i.prev=i,i.next=i),i}function g(e,t){var i=e[0]-t[0],r=e[1]-t[1];return i*i+r*r}function y(e,t,i){var r=t[0],n=t[1],s=i[0]-r,a=i[1]-n;if(0!==s||0!==a){var o=((e[0]-r)*s+(e[1]-n)*a)/(s*s+a*a);o>1?(r=i[0],n=i[1]):o>0&&(r+=s*o,n+=a*o)}return(s=e[0]-r)*s+(a=e[1]-n)*a}function v(e,t,i,r,n,s,a,o){var l,h,u,c,p=i-e,d=r-t,f=a-n,m=o-s,g=e-n,y=t-s,v=p*p+d*d,T=p*f+d*m,x=f*f+m*m,b=p*g+d*y,_=f*g+m*y,E=v*x-T*T,w=E,S=E;0===E?(h=0,w=1,c=_,S=x):(c=v*_-T*b,(h=T*_-x*b)<0?(h=0,c=_,S=x):h>w&&(h=w,c=_+T,S=x)),c<0?(c=0,-b<0?h=0:-b>v?h=w:(h=-b,w=v)):c>S&&(c=S,-b+T<0?h=0:-b+T>v?h=w:(h=-b+T,w=v));var I=(1-(u=0===c?0:c/S))*n+u*a-((1-(l=0===h?0:h/w))*e+l*i),M=(1-u)*s+u*o-((1-l)*t+l*r);return I*I+M*M}function T(e,t){return e[0]===t[0]?e[1]-t[1]:e[0]-t[0]}r.default&&(r=r.default),t.exports=a,t.exports.default=a})),JRe=z(((e,t)=>{t.exports=function(){var e,t=0,i=!1;function r(t,i){return e.list.push({type:t,data:i?JSON.parse(JSON.stringify(i)):void 0}),e}return e={list:[],segmentId:function(){return t++},checkIntersection:function(e,t){return r("check",{seg1:e,seg2:t})},segmentChop:function(e,t){return r("div_seg",{seg:e,pt:t}),r("chop",{seg:e,pt:t})},statusRemove:function(e){return r("pop_seg",{seg:e})},segmentUpdate:function(e){return r("seg_update",{seg:e})},segmentNew:function(e,t){return r("new_seg",{seg:e,primary:t})},segmentRemove:function(e){return r("rem_seg",{seg:e})},tempStatus:function(e,t,i){return r("temp_status",{seg:e,above:t,below:i})},rewind:function(e){return r("rewind",{seg:e})},status:function(e,t,i){return r("status",{seg:e,above:t,below:i})},vert:function(t){return t===i?e:(i=t,r("vert",{x:t}))},log:function(e){return"string"!=typeof e&&(e=JSON.stringify(e,!1," ")),r("log",{txt:e})},reset:function(){return r("reset")},selected:function(e){return r("selected",{segs:e})},chainStart:function(e){return r("chain_start",{seg:e})},chainRemoveHead:function(e,t){return r("chain_rem_head",{index:e,pt:t})},chainRemoveTail:function(e,t){return r("chain_rem_tail",{index:e,pt:t})},chainNew:function(e,t){return r("chain_new",{pt1:e,pt2:t})},chainMatch:function(e){return r("chain_match",{index:e})},chainClose:function(e){return r("chain_close",{index:e})},chainAddHead:function(e,t){return r("chain_add_head",{index:e,pt:t})},chainAddTail:function(e,t){return r("chain_add_tail",{index:e,pt:t})},chainConnect:function(e,t){return r("chain_con",{index1:e,index2:t})},chainReverse:function(e){return r("chain_rev",{index:e})},chainJoin:function(e,t){return r("chain_join",{index1:e,index2:t})},done:function(){return r("done")}}}})),eMe=z(((e,t)=>{t.exports=function(e){"number"!=typeof e&&(e=1e-10);var t={epsilon:function(t){return"number"==typeof t&&(e=t),e},pointAboveOrOnLine:function(t,i,r){var n=i[0],s=i[1],a=r[0],o=r[1],l=t[0];return(a-n)*(t[1]-s)-(o-s)*(l-n)>=-e},pointBetween:function(t,i,r){var n=t[1]-i[1],s=r[0]-i[0],a=t[0]-i[0],o=r[1]-i[1],l=a*s+n*o;return!(l-e)},pointsSameX:function(t,i){return Math.abs(t[0]-i[0])e!=a-n>e&&(s-h)*(n-u)/(a-u)+h-r>e&&(o=!o),s=h,a=u}return o}};return t}})),rMe=z(((e,t)=>{t.exports={create:function(){var e={root:{root:!0,next:null},exists:function(t){return!(null===t||t===e.root)},isEmpty:function(){return null===e.root.next},getHead:function(){return e.root.next},insertBefore:function(t,i){for(var r=e.root,n=e.root.next;null!==n;){if(i(n))return t.prev=n.prev,t.next=n,n.prev.next=t,void(n.prev=t);r=n,n=n.next}r.next=t,t.prev=r,t.next=null},findTransition:function(t){for(var i=e.root,r=e.root.next;null!==r&&!t(r);)i=r,r=r.next;return{before:i===e.root?null:i,after:r,insert:function(e){return e.prev=i,e.next=r,i.next=e,null!==r&&(r.prev=e),e}}}};return e},node:function(e){return e.prev=null,e.next=null,e.remove=function(){e.prev.next=e.next,e.next&&(e.next.prev=e.prev),e.prev=null,e.next=null},e}}})),nMe=z(((e,t)=>{var i=rMe();t.exports=function(e,t,r){function n(e,t){return{id:r?r.segmentId():-1,start:e,end:t,myFill:{above:null,below:null},otherFill:null}}function s(e,t,i){return{id:r?r.segmentId():-1,start:e,end:t,myFill:{above:i.myFill.above,below:i.myFill.below},otherFill:null}}var a=i.create();function o(e,i){a.insertBefore(e,(function(r){var n=function(e,i,r,n,s,a){var o=t.pointsCompare(i,s);return 0!==o?o:t.pointsSame(r,a)?0:e!==n?e?1:-1:t.pointAboveOrOnLine(r,n?s:a,n?a:s)?1:-1}(e.isStart,e.pt,i,r.isStart,r.pt,r.other.pt);return n<0}))}function l(e,t){var r=function(e,t){var r=i.node({isStart:!0,pt:e.start,seg:e,primary:t,other:null,status:null});return o(r,e.end),r}(e,t);return function(e,t,r){var n=i.node({isStart:!1,pt:t.end,seg:t,primary:r,other:e,status:null});e.other=n,o(n,e.pt)}(r,e,t),r}function h(e,t){var i=s(t,e.seg.end,e.seg);return function(e,t){r&&r.segmentChop(e.seg,t),e.other.remove(),e.seg.end=t,e.other.pt=t,o(e.other,e.pt)}(e,t),l(i,e.primary)}function u(n,s){var o=i.create();function l(e){return o.findTransition((function(i){var r=function(e,i){var r=e.seg.start,n=e.seg.end,s=i.seg.start,a=i.seg.end;return t.pointsCollinear(r,s,a)?t.pointsCollinear(n,s,a)||t.pointAboveOrOnLine(n,s,a)?1:-1:t.pointAboveOrOnLine(r,s,a)?1:-1}(e,i.ev);return r>0}))}function u(e,i){var n=e.seg,s=i.seg,a=n.start,o=n.end,l=s.start,u=s.end;r&&r.checkIntersection(n,s);var c=t.linesIntersect(a,o,l,u);if(!1===c){if(!t.pointsCollinear(a,o,l)||t.pointsSame(a,u)||t.pointsSame(o,l))return!1;var p=t.pointsSame(a,l),d=t.pointsSame(o,u);if(p&&d)return i;var f=!p&&t.pointBetween(a,l,u),m=!d&&t.pointBetween(o,l,u);if(p)return m?h(i,o):h(e,u),i;f&&(d||(m?h(i,o):h(e,u)),h(i,a))}else 0===c.alongA&&(-1===c.alongB?h(e,l):0===c.alongB?h(e,c.pt):1===c.alongB&&h(e,u)),0===c.alongB&&(-1===c.alongA?h(i,a):0===c.alongA?h(i,c.pt):1===c.alongA&&h(i,o));return!1}for(var c=[];!a.isEmpty();){var p=a.getHead();if(r&&r.vert(p.pt[0]),p.isStart){let t=function(){if(f){var e=u(p,f);if(e)return e}return!!m&&u(p,m)};r&&r.segmentNew(p.seg,p.primary);var d=l(p),f=d.before?d.before.ev:null,m=d.after?d.after.ev:null;r&&r.tempStatus(p.seg,!!f&&f.seg,!!m&&m.seg);var g=t();if(g){var y;if(e)(y=null===p.seg.myFill.below||p.seg.myFill.above!==p.seg.myFill.below)&&(g.seg.myFill.above=!g.seg.myFill.above);else g.seg.otherFill=p.seg.myFill;r&&r.segmentUpdate(g.seg),p.other.remove(),p.remove()}if(a.getHead()!==p){r&&r.rewind(p.seg);continue}if(e)y=null===p.seg.myFill.below||p.seg.myFill.above!==p.seg.myFill.below,p.seg.myFill.below=m?m.seg.myFill.above:n,p.seg.myFill.above=y?!p.seg.myFill.below:p.seg.myFill.below;else if(null===p.seg.otherFill){var v;v=m?p.primary===m.primary?m.seg.otherFill.above:m.seg.myFill.above:p.primary?s:n,p.seg.otherFill={above:v,below:v}}r&&r.status(p.seg,!!f&&f.seg,!!m&&m.seg),p.other.status=d.insert(i.node({ev:p}))}else{var T=p.status;if(null===T)throw new Error("PolyBool: Zero-length segment detected; your epsilon is probably too small or too large");if(o.exists(T.prev)&&o.exists(T.next)&&u(T.prev.ev,T.next.ev),r&&r.statusRemove(T.ev.seg),T.remove(),!p.primary){var x=p.seg.myFill;p.seg.myFill=p.seg.otherFill,p.seg.otherFill=x}c.push(p.seg)}a.getHead().remove()}return r&&r.done(),c}return e?{addRegion:function(e){for(var i,r=e[e.length-1],s=0;s{t.exports=function(e,t,i){var r=[],n=[];return e.forEach((function(e){var s=e.start,a=e.end;if(t.pointsSame(s,a))console.warn("PolyBool: Warning: Zero-length segment detected; your epsilon is probably too small or too large");else{i&&i.chainStart(e);for(var o={index:0,matches_head:!1,matches_pt1:!1},l={index:0,matches_head:!1,matches_pt1:!1},h=o,u=0;u{function i(e,t,i){var r=[];return e.forEach((function(e){var n=(e.myFill.above?8:0)+(e.myFill.below?4:0)+(e.otherFill&&e.otherFill.above?2:0)+(e.otherFill&&e.otherFill.below?1:0);0!==t[n]&&r.push({id:i?i.segmentId():-1,start:e.start,end:e.end,myFill:{above:1===t[n],below:2===t[n]},otherFill:null})})),i&&i.selected(r),r}var r={union:function(e,t){return i(e,[0,2,1,0,2,2,0,0,1,0,1,0,0,0,0,0],t)},intersect:function(e,t){return i(e,[0,0,0,0,0,2,0,2,0,0,1,1,0,2,1,0],t)},difference:function(e,t){return i(e,[0,0,0,0,2,0,2,0,1,1,0,0,0,1,2,0],t)},differenceRev:function(e,t){return i(e,[0,2,1,0,0,0,1,1,0,2,0,2,0,0,0,0],t)},xor:function(e,t){return i(e,[0,2,1,0,2,0,0,1,1,0,0,2,0,1,2,0],t)}};t.exports=r})),uMe=z(((e,t)=>{var i={toPolygon:function(e,t){function i(t){if(t.length<=0)return e.segments({inverted:!1,regions:[]});function i(t){var i=t.slice(0,t.length-1);return e.segments({inverted:!1,regions:[i]})}for(var r=i(t[0]),n=1;n{var i,r=JRe(),n=eMe(),s=nMe(),a=aMe(),o=lMe(),l=uMe(),h=!1,u=n();function c(e,t,r){var n=i.segments(e),s=i.segments(t),a=r(i.combine(n,s));return i.polygon(a)}i={buildLog:function(e){return!0===e?h=r():!1===e&&(h=!1),!1!==h&&h.list},epsilon:function(e){return u.epsilon(e)},segments:function(e){var t=s(!0,u,h);return e.regions.forEach(t.addRegion),{segments:t.calculate(e.inverted),inverted:e.inverted}},combine:function(e,t){return{combined:s(!1,u,h).calculate(e.segments,e.inverted,t.segments,t.inverted),inverted1:e.inverted,inverted2:t.inverted}},selectUnion:function(e){return{segments:o.union(e.combined,h),inverted:e.inverted1||e.inverted2}},selectIntersect:function(e){return{segments:o.intersect(e.combined,h),inverted:e.inverted1&&e.inverted2}},selectDifference:function(e){return{segments:o.difference(e.combined,h),inverted:e.inverted1&&!e.inverted2}},selectDifferenceRev:function(e){return{segments:o.differenceRev(e.combined,h),inverted:!e.inverted1&&e.inverted2}},selectXor:function(e){return{segments:o.xor(e.combined,h),inverted:e.inverted1!==e.inverted2}},polygon:function(e){return{regions:a(e.segments,u,h),inverted:e.inverted}},polygonFromGeoJSON:function(e){return l.toPolygon(i,e)},polygonToGeoJSON:function(e){return l.fromPolygon(i,u,e)},union:function(e,t){return c(e,t,i.selectUnion)},intersect:function(e,t){return c(e,t,i.selectIntersect)},difference:function(e,t){return c(e,t,i.selectDifference)},differenceRev:function(e,t){return c(e,t,i.selectDifferenceRev)},xor:function(e,t){return c(e,t,i.selectXor)}},"object"==typeof window&&(window.PolyBool=i),t.exports=i})),vMe=z(((e,t)=>{function i(e){if(e)return function(e){for(var t in i.prototype)e[t]=i.prototype[t];return e}(e)}t.exports=i,i.prototype.on=i.prototype.addEventListener=function(e,t){return this._callbacks=this._callbacks||{},(this._callbacks[e]=this._callbacks[e]||[]).push(t),this},i.prototype.once=function(e,t){var i=this;function r(){i.off(e,r),t.apply(this,arguments)}return this._callbacks=this._callbacks||{},r.fn=t,this.on(e,r),this},i.prototype.off=i.prototype.removeListener=i.prototype.removeAllListeners=i.prototype.removeEventListener=function(e,t){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var i=this._callbacks[e];if(!i)return this;if(1==arguments.length)return delete this._callbacks[e],this;for(var r,n=0;n{var i=vMe();function r(){i.call(this)}r.prototype=new i,t.exports=r,r.Stream=r,r.prototype.pipe=function(e,t){var i=this;function r(t){e.writable&&!1===e.write(t)&&i.pause&&i.pause()}function n(){i.readable&&i.resume&&i.resume()}i.on("data",r),e.on("drain",n),!e._isStdio&&(!t||!1!==t.end)&&(i.on("end",a),i.on("close",o));var s=!1;function a(){s||(s=!0,e.end())}function o(){s||(s=!0,"function"==typeof e.destroy&&e.destroy())}function l(e){if(h(),!this.hasListeners("error"))throw e}function h(){i.off("data",r),e.off("drain",n),i.off("end",a),i.off("close",o),i.off("error",l),e.off("error",l),i.off("end",h),i.off("close",h),e.off("end",h),e.off("close",h)}return i.on("error",l),e.on("error",l),i.on("end",h),i.on("close",h),e.on("end",h),e.on("close",h),e.emit("pipe",i),e}})),ql=z(((e,t)=>{(function(){var i,r="Expected a function",n="__lodash_hash_undefined__",s="__lodash_placeholder__",a=16,o=32,l=64,h=128,u=256,c=1/0,p=9007199254740991,d=NaN,f=4294967295,m=[["ary",h],["bind",1],["bindKey",2],["curry",8],["curryRight",a],["flip",512],["partial",o],["partialRight",l],["rearg",u]],g="[object Arguments]",y="[object Array]",v="[object Boolean]",T="[object Date]",x="[object Error]",b="[object Function]",_="[object GeneratorFunction]",E="[object Map]",w="[object Number]",S="[object Object]",I="[object Promise]",M="[object RegExp]",A="[object Set]",D="[object String]",O="[object Symbol]",R="[object WeakMap]",C="[object ArrayBuffer]",N="[object DataView]",P="[object Float32Array]",L="[object Float64Array]",F="[object Int8Array]",U="[object Int16Array]",k="[object Int32Array]",B="[object Uint8Array]",H="[object Uint8ClampedArray]",G="[object Uint16Array]",z="[object Uint32Array]",V=/\b__p \+= '';/g,j=/\b(__p \+=) '' \+/g,W=/(__e\(.*?\)|\b__t\)) \+\n'';/g,Y=/&(?:amp|lt|gt|quot|#39);/g,X=/[&<>"']/g,q=RegExp(Y.source),Z=RegExp(X.source),K=/<%-([\s\S]+?)%>/g,$=/<%([\s\S]+?)%>/g,J=/<%=([\s\S]+?)%>/g,Q=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,ee=/^\w*$/,te=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,ie=/[\\^$.*+?()[\]{}|]/g,re=RegExp(ie.source),ne=/^\s+/,se=/\s/,ae=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,oe=/\{\n\/\* \[wrapped with (.+)\] \*/,le=/,? & /,he=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,ue=/[()=,{}\[\]\/\s]/,ce=/\\(\\)?/g,pe=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,de=/\w*$/,fe=/^[-+]0x[0-9a-f]+$/i,me=/^0b[01]+$/i,ge=/^\[object .+?Constructor\]$/,ye=/^0o[0-7]+$/i,ve=/^(?:0|[1-9]\d*)$/,Te=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,xe=/($^)/,be=/['\n\r\u2028\u2029\\]/g,_e="\\ud800-\\udfff",Ee="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",we="\\u2700-\\u27bf",Se="a-z\\xdf-\\xf6\\xf8-\\xff",Ie="A-Z\\xc0-\\xd6\\xd8-\\xde",Me="\\ufe0e\\ufe0f",Ae="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",De="['’]",Oe="["+_e+"]",Re="["+Ae+"]",Ce="["+Ee+"]",Ne="\\d+",Pe="["+we+"]",Le="["+Se+"]",Fe="[^"+_e+Ae+Ne+we+Se+Ie+"]",Ue="\\ud83c[\\udffb-\\udfff]",ke="[^"+_e+"]",Be="(?:\\ud83c[\\udde6-\\uddff]){2}",He="[\\ud800-\\udbff][\\udc00-\\udfff]",Ge="["+Ie+"]",ze="\\u200d",Ve="(?:"+Le+"|"+Fe+")",je="(?:"+Ge+"|"+Fe+")",We="(?:['’](?:d|ll|m|re|s|t|ve))?",Ye="(?:['’](?:D|LL|M|RE|S|T|VE))?",Xe="(?:"+Ce+"|"+Ue+")"+"?",qe="["+Me+"]?",Ze=qe+Xe+("(?:"+ze+"(?:"+[ke,Be,He].join("|")+")"+qe+Xe+")*"),Ke="(?:"+[Pe,Be,He].join("|")+")"+Ze,$e="(?:"+[ke+Ce+"?",Ce,Be,He,Oe].join("|")+")",Je=RegExp(De,"g"),Qe=RegExp(Ce,"g"),et=RegExp(Ue+"(?="+Ue+")|"+$e+Ze,"g"),tt=RegExp([Ge+"?"+Le+"+"+We+"(?="+[Re,Ge,"$"].join("|")+")",je+"+"+Ye+"(?="+[Re,Ge+Ve,"$"].join("|")+")",Ge+"?"+Ve+"+"+We,Ge+"+"+Ye,"\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",Ne,Ke].join("|"),"g"),it=RegExp("["+ze+_e+Ee+Me+"]"),rt=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,nt=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],st=-1,at={};at[P]=at[L]=at[F]=at[U]=at[k]=at[B]=at[H]=at[G]=at[z]=!0,at[g]=at[y]=at[C]=at[v]=at[N]=at[T]=at[x]=at[b]=at[E]=at[w]=at[S]=at[M]=at[A]=at[D]=at[R]=!1;var ot={};ot[g]=ot[y]=ot[C]=ot[N]=ot[v]=ot[T]=ot[P]=ot[L]=ot[F]=ot[U]=ot[k]=ot[E]=ot[w]=ot[S]=ot[M]=ot[A]=ot[D]=ot[O]=ot[B]=ot[H]=ot[G]=ot[z]=!0,ot[x]=ot[b]=ot[R]=!1;var lt={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},ht=parseFloat,ut=parseInt,ct="object"==typeof global&&global&&global.Object===Object&&global,pt="object"==typeof self&&self&&self.Object===Object&&self,dt=ct||pt||Function("return this")(),ft="object"==typeof e&&e&&!e.nodeType&&e,mt=ft&&"object"==typeof t&&t&&!t.nodeType&&t,gt=mt&&mt.exports===ft,yt=gt&&ct.process,vt=function(){try{return mt&&mt.require&&mt.require("util").types||yt&&yt.binding&&yt.binding("util")}catch(e){}}(),Tt=vt&&vt.isArrayBuffer,xt=vt&&vt.isDate,bt=vt&&vt.isMap,_t=vt&&vt.isRegExp,Et=vt&&vt.isSet,wt=vt&&vt.isTypedArray;function St(e,t,i){switch(i.length){case 0:return e.call(t);case 1:return e.call(t,i[0]);case 2:return e.call(t,i[0],i[1]);case 3:return e.call(t,i[0],i[1],i[2])}return e.apply(t,i)}function It(e,t,i,r){for(var n=-1,s=null==e?0:e.length;++n-1}function Ct(e,t,i){for(var r=-1,n=null==e?0:e.length;++r-1;);return i}function ti(e,t){for(var i=e.length;i--&&Gt(t,e[i],0)>-1;);return i}function ii(e,t){for(var i=e.length,r=0;i--;)e[i]===t&&++r;return r}var ri=Yt({"À":"A","Á":"A","Â":"A","Ã":"A","Ä":"A","Å":"A","à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","Ç":"C","ç":"c","Ð":"D","ð":"d","È":"E","É":"E","Ê":"E","Ë":"E","è":"e","é":"e","ê":"e","ë":"e","Ì":"I","Í":"I","Î":"I","Ï":"I","ì":"i","í":"i","î":"i","ï":"i","Ñ":"N","ñ":"n","Ò":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","Ù":"U","Ú":"U","Û":"U","Ü":"U","ù":"u","ú":"u","û":"u","ü":"u","Ý":"Y","ý":"y","ÿ":"y","Æ":"Ae","æ":"ae","Þ":"Th","þ":"th","ß":"ss","Ā":"A","Ă":"A","Ą":"A","ā":"a","ă":"a","ą":"a","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","ć":"c","ĉ":"c","ċ":"c","č":"c","Ď":"D","Đ":"D","ď":"d","đ":"d","Ē":"E","Ĕ":"E","Ė":"E","Ę":"E","Ě":"E","ē":"e","ĕ":"e","ė":"e","ę":"e","ě":"e","Ĝ":"G","Ğ":"G","Ġ":"G","Ģ":"G","ĝ":"g","ğ":"g","ġ":"g","ģ":"g","Ĥ":"H","Ħ":"H","ĥ":"h","ħ":"h","Ĩ":"I","Ī":"I","Ĭ":"I","Į":"I","İ":"I","ĩ":"i","ī":"i","ĭ":"i","į":"i","ı":"i","Ĵ":"J","ĵ":"j","Ķ":"K","ķ":"k","ĸ":"k","Ĺ":"L","Ļ":"L","Ľ":"L","Ŀ":"L","Ł":"L","ĺ":"l","ļ":"l","ľ":"l","ŀ":"l","ł":"l","Ń":"N","Ņ":"N","Ň":"N","Ŋ":"N","ń":"n","ņ":"n","ň":"n","ŋ":"n","Ō":"O","Ŏ":"O","Ő":"O","ō":"o","ŏ":"o","ő":"o","Ŕ":"R","Ŗ":"R","Ř":"R","ŕ":"r","ŗ":"r","ř":"r","Ś":"S","Ŝ":"S","Ş":"S","Š":"S","ś":"s","ŝ":"s","ş":"s","š":"s","Ţ":"T","Ť":"T","Ŧ":"T","ţ":"t","ť":"t","ŧ":"t","Ũ":"U","Ū":"U","Ŭ":"U","Ů":"U","Ű":"U","Ų":"U","ũ":"u","ū":"u","ŭ":"u","ů":"u","ű":"u","ų":"u","Ŵ":"W","ŵ":"w","Ŷ":"Y","ŷ":"y","Ÿ":"Y","Ź":"Z","Ż":"Z","Ž":"Z","ź":"z","ż":"z","ž":"z","IJ":"IJ","ij":"ij","Œ":"Oe","œ":"oe","ʼn":"'n","ſ":"s"}),ni=Yt({"&":"&","<":"<",">":">",'"':""","'":"'"});function si(e){return"\\"+lt[e]}function ai(e){return it.test(e)}function oi(e){var t=-1,i=Array(e.size);return e.forEach((function(e,r){i[++t]=[r,e]})),i}function li(e,t){return function(i){return e(t(i))}}function hi(e,t){for(var i=-1,r=e.length,n=0,a=[];++i",""":'"',"'":"'"});var mi=function e(t){var se,_e=(t=null==t?dt:mi.defaults(dt.Object(),t,mi.pick(dt,nt))).Array,Ee=t.Date,we=t.Error,Se=t.Function,Ie=t.Math,Me=t.Object,Ae=t.RegExp,De=t.String,Oe=t.TypeError,Re=_e.prototype,Ce=Se.prototype,Ne=Me.prototype,Pe=t["__core-js_shared__"],Le=Ce.toString,Fe=Ne.hasOwnProperty,Ue=0,ke=(se=/[^.]+$/.exec(Pe&&Pe.keys&&Pe.keys.IE_PROTO||""))?"Symbol(src)_1."+se:"",Be=Ne.toString,He=Le.call(Me),Ge=dt._,ze=Ae("^"+Le.call(Fe).replace(ie,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),Ve=gt?t.Buffer:i,je=t.Symbol,We=t.Uint8Array,Ye=Ve?Ve.allocUnsafe:i,Xe=li(Me.getPrototypeOf,Me),qe=Me.create,Ze=Ne.propertyIsEnumerable,Ke=Re.splice,$e=je?je.isConcatSpreadable:i,et=je?je.iterator:i,it=je?je.toStringTag:i,lt=function(){try{var e=ps(Me,"defineProperty");return e({},"",{}),e}catch(e){}}(),ct=t.clearTimeout!==dt.clearTimeout&&t.clearTimeout,pt=Ee&&Ee.now!==dt.Date.now&&Ee.now,ft=t.setTimeout!==dt.setTimeout&&t.setTimeout,mt=Ie.ceil,yt=Ie.floor,vt=Me.getOwnPropertySymbols,kt=Ve?Ve.isBuffer:i,Yt=t.isFinite,gi=Re.join,yi=li(Me.keys,Me),vi=Ie.max,Ti=Ie.min,xi=Ee.now,bi=t.parseInt,_i=Ie.random,Ei=Re.reverse,wi=ps(t,"DataView"),Si=ps(t,"Map"),Ii=ps(t,"Promise"),Mi=ps(t,"Set"),Ai=ps(t,"WeakMap"),Di=ps(Me,"create"),Oi=Ai&&new Ai,Ri={},Ci=Bs(wi),Ni=Bs(Si),Pi=Bs(Ii),Li=Bs(Mi),Fi=Bs(Ai),Ui=je?je.prototype:i,ki=Ui?Ui.valueOf:i,Bi=Ui?Ui.toString:i;function Hi(e){if(io(e)&&!Wa(e)&&!(e instanceof ji)){if(e instanceof Vi)return e;if(Fe.call(e,"__wrapped__"))return Hs(e)}return new Vi(e)}var Gi=function(){function e(){}return function(t){if(!to(t))return{};if(qe)return qe(t);e.prototype=t;var r=new e;return e.prototype=i,r}}();function zi(){}function Vi(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=i}function ji(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=f,this.__views__=[]}function Wi(e){var t=-1,i=null==e?0:e.length;for(this.clear();++t=t?e:t)),e}function lr(e,t,r,n,s,a){var o,l=1&t,h=2&t,u=4&t;if(r&&(o=s?r(e,n,s,a):r(e)),o!==i)return o;if(!to(e))return e;var c=Wa(e);if(c){if(o=function(e){var t=e.length,i=new e.constructor(t);return t&&"string"==typeof e[0]&&Fe.call(e,"index")&&(i.index=e.index,i.input=e.input),i}(e),!l)return On(e,o)}else{var p=ms(e),d=p==b||p==_;if(Za(e))return wn(e,l);if(p==S||p==g||d&&!s){if(o=h||d?{}:ys(e),!l)return h?function(e,t){return Rn(e,fs(e),t)}(e,function(e,t){return e&&Rn(t,Po(t),e)}(o,e)):function(e,t){return Rn(e,ds(e),t)}(e,nr(o,e))}else{if(!ot[p])return s?e:{};o=function(e,t,i){var r=e.constructor;switch(t){case C:return Sn(e);case v:case T:return new r(+e);case N:return function(e,t){var i=t?Sn(e.buffer):e.buffer;return new e.constructor(i,e.byteOffset,e.byteLength)}(e,i);case P:case L:case F:case U:case k:case B:case H:case G:case z:return In(e,i);case E:return new r;case w:case D:return new r(e);case M:return function(e){var t=new e.constructor(e.source,de.exec(e));return t.lastIndex=e.lastIndex,t}(e);case A:return new r;case O:return function(e){return ki?Me(ki.call(e)):{}}(e)}}(e,p,l)}}a||(a=new Zi);var f=a.get(e);if(f)return f;a.set(e,o),oo(e)?e.forEach((function(i){o.add(lr(i,t,r,i,e,a))})):ro(e)&&e.forEach((function(i,n){o.set(n,lr(i,t,r,n,e,a))}));var m=c?i:(u?h?ss:ns:h?Po:No)(e);return Mt(m||e,(function(i,n){m&&(i=e[n=i]),tr(o,n,lr(i,t,r,n,e,a))})),o}function hr(e,t,r){var n=r.length;if(null==e)return!n;for(e=Me(e);n--;){var s=r[n],a=t[s],o=e[s];if(o===i&&!(s in e)||!a(o))return!1}return!0}function ur(e,t,n){if("function"!=typeof e)throw new Oe(r);return Cs((function(){e.apply(i,n)}),t)}function cr(e,t,i,r){var n=-1,s=Rt,a=!0,o=e.length,l=[],h=t.length;if(!o)return l;i&&(t=Nt(t,$t(i))),r?(s=Ct,a=!1):t.length>=200&&(s=Qt,a=!1,t=new qi(t));e:for(;++n-1},Yi.prototype.set=function(e,t){var i=this.__data__,r=ir(i,e);return r<0?(++this.size,i.push([e,t])):i[r][1]=t,this},Xi.prototype.clear=function(){this.size=0,this.__data__={hash:new Wi,map:new(Si||Yi),string:new Wi}},Xi.prototype.delete=function(e){var t=us(this,e).delete(e);return this.size-=t?1:0,t},Xi.prototype.get=function(e){return us(this,e).get(e)},Xi.prototype.has=function(e){return us(this,e).has(e)},Xi.prototype.set=function(e,t){var i=us(this,e),r=i.size;return i.set(e,t),this.size+=i.size==r?0:1,this},qi.prototype.add=qi.prototype.push=function(e){return this.__data__.set(e,n),this},qi.prototype.has=function(e){return this.__data__.has(e)},Zi.prototype.clear=function(){this.__data__=new Yi,this.size=0},Zi.prototype.delete=function(e){var t=this.__data__,i=t.delete(e);return this.size=t.size,i},Zi.prototype.get=function(e){return this.__data__.get(e)},Zi.prototype.has=function(e){return this.__data__.has(e)},Zi.prototype.set=function(e,t){var i=this.__data__;if(i instanceof Yi){var r=i.__data__;if(!Si||r.length<199)return r.push([e,t]),this.size=++i.size,this;i=this.__data__=new Xi(r)}return i.set(e,t),this.size=i.size,this};var pr=Pn(xr),dr=Pn(br,!0);function fr(e,t){var i=!0;return pr(e,(function(e,r,n){return i=!!t(e,r,n)})),i}function mr(e,t,r){for(var n=-1,s=e.length;++n0&&i(o)?t>1?yr(o,t-1,i,r,n):Pt(n,o):r||(n[n.length]=o)}return n}var vr=Ln(),Tr=Ln(!0);function xr(e,t){return e&&vr(e,t,No)}function br(e,t){return e&&Tr(e,t,No)}function _r(e,t){return Ot(t,(function(t){return Ja(e[t])}))}function Er(e,t){for(var r=0,n=(t=xn(t,e)).length;null!=e&&rt}function Mr(e,t){return null!=e&&Fe.call(e,t)}function Ar(e,t){return null!=e&&t in Me(e)}function Dr(e,t,r){for(var n=r?Ct:Rt,s=e[0].length,a=e.length,o=a,l=_e(a),h=1/0,u=[];o--;){var c=e[o];o&&t&&(c=Nt(c,$t(t))),h=Ti(c.length,h),l[o]=!r&&(t||s>=120&&c.length>=120)?new qi(o&&c):i}c=e[0];var p=-1,d=l[0];e:for(;++p=o?l:l*("desc"==i[r]?-1:1)}return e.index-t.index}(e,t,i)}))}function Wr(e,t,i){for(var r=-1,n=t.length,s={};++r-1;)o!==e&&Ke.call(o,l,1),Ke.call(e,l,1);return e}function Xr(e,t){for(var i=e?t.length:0,r=i-1;i--;){var n=t[i];if(i==r||n!==s){var s=n;Ts(n)?Ke.call(e,n,1):pn(e,n)}}return e}function qr(e,t){return e+yt(_i()*(t-e+1))}function Zr(e,t){var i="";if(!e||t<1||t>p)return i;do{t%2&&(i+=e),(t=yt(t/2))&&(e+=e)}while(t);return i}function Kr(e,t){return Ns(Ms(e,t,sl),e+"")}function $r(e){return $i(zo(e))}function Jr(e,t){var i=zo(e);return Fs(i,or(t,0,i.length))}function Qr(e,t,r,n){if(!to(e))return e;for(var s=-1,a=(t=xn(t,e)).length,o=a-1,l=e;null!=l&&++sn?0:n+t),(i=i>n?n:i)<0&&(i+=n),n=t>i?0:i-t>>>0,t>>>=0;for(var s=_e(n);++r>>1,a=e[s];null!==a&&!ho(a)&&(i?a<=t:a=200){var h=t?null:Kn(e);if(h)return ui(h);a=!1,n=Qt,l=new qi}else l=t?[]:o;e:for(;++r=n?e:nn(e,t,r)}var En=ct||function(e){return dt.clearTimeout(e)};function wn(e,t){if(t)return e.slice();var i=e.length,r=Ye?Ye(i):new e.constructor(i);return e.copy(r),r}function Sn(e){var t=new e.constructor(e.byteLength);return new We(t).set(new We(e)),t}function In(e,t){var i=t?Sn(e.buffer):e.buffer;return new e.constructor(i,e.byteOffset,e.length)}function Mn(e,t){if(e!==t){var r=e!==i,n=null===e,s=e==e,a=ho(e),o=t!==i,l=null===t,h=t==t,u=ho(t);if(!l&&!u&&!a&&e>t||a&&o&&h&&!l&&!u||n&&o&&h||!r&&h||!s)return 1;if(!n&&!a&&!u&&e1?r[s-1]:i,o=s>2?r[2]:i;for(a=e.length>3&&"function"==typeof a?(s--,a):i,o&&xs(r[0],r[1],o)&&(a=s<3?i:a,s=1),t=Me(t);++n-1?s[a?t[o]:o]:i}}function Hn(e){return rs((function(t){var n=t.length,s=n,a=Vi.prototype.thru;for(e&&t.reverse();s--;){var o=t[s];if("function"!=typeof o)throw new Oe(r);if(a&&!l&&"wrapper"==os(o))var l=new Vi([],!0)}for(s=l?s:n;++s1&&v.reverse(),p&&ul))return!1;var u=a.get(e),c=a.get(t);if(u&&c)return u==t&&c==e;var p=-1,d=!0,f=2&r?new qi:i;for(a.set(e,t),a.set(t,e);++p-1&&e%1==0&&e1?"& ":"")+t[r],t=t.join(i>2?", ":" "),e.replace(ae,"{\n/* [wrapped with "+t+"] */\n")}(r,function(e,t){return Mt(m,(function(i){var r="_."+i[0];t&i[1]&&!Rt(e,r)&&e.push(r)})),e.sort()}(function(e){var t=e.match(oe);return t?t[1].split(le):[]}(r),i)))}function Ls(e){var t=0,r=0;return function(){var n=xi(),s=16-(n-r);if(r=n,s>0){if(++t>=800)return arguments[0]}else t=0;return e.apply(i,arguments)}}function Fs(e,t){var r=-1,n=e.length,s=n-1;for(t=t===i?n:t;++r1?e[t-1]:i;return r="function"==typeof r?(e.pop(),r):i,aa(e,r)}));function da(e){var t=Hi(e);return t.__chain__=!0,t}function fa(e,t){return t(e)}var ma=rs((function(e){var t=e.length,r=t?e[0]:0,n=this.__wrapped__,s=function(t){return ar(t,e)};return!(t>1||this.__actions__.length)&&n instanceof ji&&Ts(r)?((n=n.slice(r,+r+(t?1:0))).__actions__.push({func:fa,args:[s],thisArg:i}),new Vi(n,this.__chain__).thru((function(e){return t&&!e.length&&e.push(i),e}))):this.thru(s)}));var ga=Cn((function(e,t,i){Fe.call(e,i)?++e[i]:sr(e,i,1)}));var ya=Bn(js),va=Bn(Ws);function Ta(e,t){return(Wa(e)?Mt:pr)(e,hs(t,3))}function xa(e,t){return(Wa(e)?At:dr)(e,hs(t,3))}var ba=Cn((function(e,t,i){Fe.call(e,i)?e[i].push(t):sr(e,i,[t])}));var _a=Kr((function(e,t,i){var r=-1,n="function"==typeof t,s=Xa(e)?_e(e.length):[];return pr(e,(function(e){s[++r]=n?St(t,e,i):Or(e,t,i)})),s})),Ea=Cn((function(e,t,i){sr(e,i,t)}));function wa(e,t){return(Wa(e)?Nt:Br)(e,hs(t,3))}var Sa=Cn((function(e,t,i){e[i?0:1].push(t)}),(function(){return[[],[]]}));var Ia=Kr((function(e,t){if(null==e)return[];var i=t.length;return i>1&&xs(e,t[0],t[1])?t=[]:i>2&&xs(t[0],t[1],t[2])&&(t=[t[0]]),jr(e,yr(t,1),[])})),Ma=pt||function(){return dt.Date.now()};function Aa(e,t,r){return t=r?i:t,t=e&&null==t?e.length:t,Jn(e,h,i,i,i,i,t)}function Da(e,t){var n;if("function"!=typeof t)throw new Oe(r);return e=go(e),function(){return--e>0&&(n=t.apply(this,arguments)),e<=1&&(t=i),n}}var Oa=Kr((function(e,t,i){var r=1;if(i.length){var n=hi(i,ls(Oa));r|=o}return Jn(e,r,t,i,n)})),Ra=Kr((function(e,t,i){var r=3;if(i.length){var n=hi(i,ls(Ra));r|=o}return Jn(t,r,e,i,n)}));function Ca(e,t,n){var s,a,o,l,h,u,c=0,p=!1,d=!1,f=!0;if("function"!=typeof e)throw new Oe(r);function m(t){var r=s,n=a;return s=a=i,c=t,l=e.apply(n,r)}function g(e){return c=e,h=Cs(v,t),p?m(e):l}function y(e){var r=e-u;return u===i||r>=t||r<0||d&&e-c>=o}function v(){var e=Ma();if(y(e))return T(e);h=Cs(v,function(e){var i=t-(e-u);return d?Ti(i,o-(e-c)):i}(e))}function T(e){return h=i,f&&s?m(e):(s=a=i,l)}function x(){var e=Ma(),r=y(e);if(s=arguments,a=this,u=e,r){if(h===i)return g(u);if(d)return En(h),h=Cs(v,t),m(u)}return h===i&&(h=Cs(v,t)),l}return t=vo(t)||0,to(n)&&(p=!!n.leading,o=(d="maxWait"in n)?vi(vo(n.maxWait)||0,t):o,f="trailing"in n?!!n.trailing:f),x.cancel=function(){h!==i&&En(h),c=0,s=u=a=h=i},x.flush=function(){return h===i?l:T(Ma())},x}var Na=Kr((function(e,t){return ur(e,1,t)})),Pa=Kr((function(e,t,i){return ur(e,vo(t)||0,i)}));function La(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new Oe(r);var i=function(){var r=arguments,n=t?t.apply(this,r):r[0],s=i.cache;if(s.has(n))return s.get(n);var a=e.apply(this,r);return i.cache=s.set(n,a)||s,a};return i.cache=new(La.Cache||Xi),i}function Fa(e){if("function"!=typeof e)throw new Oe(r);return function(){var t=arguments;switch(t.length){case 0:return!e.call(this);case 1:return!e.call(this,t[0]);case 2:return!e.call(this,t[0],t[1]);case 3:return!e.call(this,t[0],t[1],t[2])}return!e.apply(this,t)}}La.Cache=Xi;var Ua=bn((function(e,t){var i=(t=1==t.length&&Wa(t[0])?Nt(t[0],$t(hs())):Nt(yr(t,1),$t(hs()))).length;return Kr((function(r){for(var n=-1,s=Ti(r.length,i);++n=t})),ja=Rr(function(){return arguments}())?Rr:function(e){return io(e)&&Fe.call(e,"callee")&&!Ze.call(e,"callee")},Wa=_e.isArray,Ya=Tt?$t(Tt):function(e){return io(e)&&Sr(e)==C};function Xa(e){return null!=e&&eo(e.length)&&!Ja(e)}function qa(e){return io(e)&&Xa(e)}var Za=kt||vl,Ka=xt?$t(xt):function(e){return io(e)&&Sr(e)==T};function $a(e){if(!io(e))return!1;var t=Sr(e);return t==x||"[object DOMException]"==t||"string"==typeof e.message&&"string"==typeof e.name&&!so(e)}function Ja(e){if(!to(e))return!1;var t=Sr(e);return t==b||t==_||"[object AsyncFunction]"==t||"[object Proxy]"==t}function Qa(e){return"number"==typeof e&&e==go(e)}function eo(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=p}function to(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}function io(e){return null!=e&&"object"==typeof e}var ro=bt?$t(bt):function(e){return io(e)&&ms(e)==E};function no(e){return"number"==typeof e||io(e)&&Sr(e)==w}function so(e){if(!io(e)||Sr(e)!=S)return!1;var t=Xe(e);if(null===t)return!0;var i=Fe.call(t,"constructor")&&t.constructor;return"function"==typeof i&&i instanceof i&&Le.call(i)==He}var ao=_t?$t(_t):function(e){return io(e)&&Sr(e)==M};var oo=Et?$t(Et):function(e){return io(e)&&ms(e)==A};function lo(e){return"string"==typeof e||!Wa(e)&&io(e)&&Sr(e)==D}function ho(e){return"symbol"==typeof e||io(e)&&Sr(e)==O}var uo=wt?$t(wt):function(e){return io(e)&&eo(e.length)&&!!at[Sr(e)]};var co=Xn(kr),po=Xn((function(e,t){return e<=t}));function fo(e){if(!e)return[];if(Xa(e))return lo(e)?pi(e):On(e);if(et&&e[et])return function(e){for(var t,i=[];!(t=e.next()).done;)i.push(t.value);return i}(e[et]());var t=ms(e);return(t==E?oi:t==A?ui:zo)(e)}function mo(e){return e?(e=vo(e))===c||e===-c?17976931348623157e292*(e<0?-1:1):e==e?e:0:0===e?e:0}function go(e){var t=mo(e),i=t%1;return t==t?i?t-i:t:0}function yo(e){return e?or(go(e),0,f):0}function vo(e){if("number"==typeof e)return e;if(ho(e))return d;if(to(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=to(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=Kt(e);var i=me.test(e);return i||ye.test(e)?ut(e.slice(2),i?2:8):fe.test(e)?d:+e}function To(e){return Rn(e,Po(e))}function xo(e){return null==e?"":un(e)}var bo=Nn((function(e,t){if(ws(t)||Xa(t))Rn(t,No(t),e);else for(var i in t)Fe.call(t,i)&&tr(e,i,t[i])})),_o=Nn((function(e,t){Rn(t,Po(t),e)})),Eo=Nn((function(e,t,i,r){Rn(t,Po(t),e,r)})),wo=Nn((function(e,t,i,r){Rn(t,No(t),e,r)})),So=rs(ar);var Io=Kr((function(e,t){e=Me(e);var r=-1,n=t.length,s=n>2?t[2]:i;for(s&&xs(t[0],t[1],s)&&(n=1);++r1),t})),Rn(e,ss(e),i),r&&(i=lr(i,7,ts));for(var n=t.length;n--;)pn(i,t[n]);return i}));var ko=rs((function(e,t){return null==e?{}:function(e,t){return Wr(e,t,(function(t,i){return Do(e,i)}))}(e,t)}));function Bo(e,t){if(null==e)return{};var i=Nt(ss(e),(function(e){return[e]}));return t=hs(t),Wr(e,i,(function(e,i){return t(e,i[0])}))}var Ho=$n(No),Go=$n(Po);function zo(e){return null==e?[]:Jt(e,No(e))}var Vo=Un((function(e,t,i){return t=t.toLowerCase(),e+(i?jo(t):t)}));function jo(e){return Jo(xo(e).toLowerCase())}function Wo(e){return(e=xo(e))&&e.replace(Te,ri).replace(Qe,"")}var Yo=Un((function(e,t,i){return e+(i?"-":"")+t.toLowerCase()})),Xo=Un((function(e,t,i){return e+(i?" ":"")+t.toLowerCase()})),qo=Fn("toLowerCase");var Zo=Un((function(e,t,i){return e+(i?"_":"")+t.toLowerCase()}));var Ko=Un((function(e,t,i){return e+(i?" ":"")+Jo(t)}));var $o=Un((function(e,t,i){return e+(i?" ":"")+t.toUpperCase()})),Jo=Fn("toUpperCase");function Qo(e,t,r){return e=xo(e),(t=r?i:t)===i?function(e){return rt.test(e)}(e)?function(e){return e.match(tt)||[]}(e):function(e){return e.match(he)||[]}(e):e.match(t)||[]}var el=Kr((function(e,t){try{return St(e,i,t)}catch(e){return $a(e)?e:new we(e)}})),tl=rs((function(e,t){return Mt(t,(function(t){t=ks(t),sr(e,t,Oa(e[t],e))})),e}));function il(e){return function(){return e}}var rl=Hn(),nl=Hn(!0);function sl(e){return e}function al(e){return Lr("function"==typeof e?e:lr(e,1))}var ol=Kr((function(e,t){return function(i){return Or(i,e,t)}})),ll=Kr((function(e,t){return function(i){return Or(e,i,t)}}));function hl(e,t,i){var r=No(t),n=_r(t,r);null==i&&(!to(t)||!n.length&&r.length)&&(i=t,t=e,e=this,n=_r(t,No(t)));var s=!(to(i)&&"chain"in i&&!i.chain),a=Ja(e);return Mt(n,(function(i){var r=t[i];e[i]=r,a&&(e.prototype[i]=function(){var t=this.__chain__;if(s||t){var i=e(this.__wrapped__),n=i.__actions__=On(this.__actions__);return n.push({func:r,args:arguments,thisArg:e}),i.__chain__=t,i}return r.apply(e,Pt([this.value()],arguments))})})),e}function ul(){}var cl=jn(Nt),pl=jn(Dt),dl=jn(Ut);function fl(e){return bs(e)?Wt(ks(e)):function(e){return function(t){return Er(t,e)}}(e)}var ml=Yn(),gl=Yn(!0);function yl(){return[]}function vl(){return!1}var Tl=Vn((function(e,t){return e+t}),0),xl=Zn("ceil"),bl=Vn((function(e,t){return e/t}),1),_l=Zn("floor");var El=Vn((function(e,t){return e*t}),1),wl=Zn("round"),Sl=Vn((function(e,t){return e-t}),0);return Hi.after=function(e,t){if("function"!=typeof t)throw new Oe(r);return e=go(e),function(){if(--e<1)return t.apply(this,arguments)}},Hi.ary=Aa,Hi.assign=bo,Hi.assignIn=_o,Hi.assignInWith=Eo,Hi.assignWith=wo,Hi.at=So,Hi.before=Da,Hi.bind=Oa,Hi.bindAll=tl,Hi.bindKey=Ra,Hi.castArray=function(){if(!arguments.length)return[];var e=arguments[0];return Wa(e)?e:[e]},Hi.chain=da,Hi.chunk=function(e,t,r){t=(r?xs(e,t,r):t===i)?1:vi(go(t),0);var n=null==e?0:e.length;if(!n||t<1)return[];for(var s=0,a=0,o=_e(mt(n/t));ss?0:s+r),(n=n===i||n>s?s:go(n))<0&&(n+=s),n=r>n?0:yo(n);r>>0)?(e=xo(e))&&("string"==typeof t||null!=t&&!ao(t))&&(!(t=un(t))&&ai(e))?_n(pi(e),0,r):e.split(t,r):[]},Hi.spread=function(e,t){if("function"!=typeof e)throw new Oe(r);return t=null==t?0:vi(go(t),0),Kr((function(i){var r=i[t],n=_n(i,0,t);return r&&Pt(n,r),St(e,this,n)}))},Hi.tail=function(e){var t=null==e?0:e.length;return t?nn(e,1,t):[]},Hi.take=function(e,t,r){return e&&e.length?nn(e,0,(t=r||t===i?1:go(t))<0?0:t):[]},Hi.takeRight=function(e,t,r){var n=null==e?0:e.length;return n?nn(e,(t=n-(t=r||t===i?1:go(t)))<0?0:t,n):[]},Hi.takeRightWhile=function(e,t){return e&&e.length?fn(e,hs(t,3),!1,!0):[]},Hi.takeWhile=function(e,t){return e&&e.length?fn(e,hs(t,3)):[]},Hi.tap=function(e,t){return t(e),e},Hi.throttle=function(e,t,i){var n=!0,s=!0;if("function"!=typeof e)throw new Oe(r);return to(i)&&(n="leading"in i?!!i.leading:n,s="trailing"in i?!!i.trailing:s),Ca(e,t,{leading:n,maxWait:t,trailing:s})},Hi.thru=fa,Hi.toArray=fo,Hi.toPairs=Ho,Hi.toPairsIn=Go,Hi.toPath=function(e){return Wa(e)?Nt(e,ks):ho(e)?[e]:On(Us(xo(e)))},Hi.toPlainObject=To,Hi.transform=function(e,t,i){var r=Wa(e),n=r||Za(e)||uo(e);if(t=hs(t,4),null==i){var s=e&&e.constructor;i=n?r?new s:[]:to(e)&&Ja(s)?Gi(Xe(e)):{}}return(n?Mt:xr)(e,(function(e,r,n){return t(i,e,r,n)})),i},Hi.unary=function(e){return Aa(e,1)},Hi.union=ia,Hi.unionBy=ra,Hi.unionWith=na,Hi.uniq=function(e){return e&&e.length?cn(e):[]},Hi.uniqBy=function(e,t){return e&&e.length?cn(e,hs(t,2)):[]},Hi.uniqWith=function(e,t){return t="function"==typeof t?t:i,e&&e.length?cn(e,i,t):[]},Hi.unset=function(e,t){return null==e||pn(e,t)},Hi.unzip=sa,Hi.unzipWith=aa,Hi.update=function(e,t,i){return null==e?e:dn(e,t,Tn(i))},Hi.updateWith=function(e,t,r,n){return n="function"==typeof n?n:i,null==e?e:dn(e,t,Tn(r),n)},Hi.values=zo,Hi.valuesIn=function(e){return null==e?[]:Jt(e,Po(e))},Hi.without=oa,Hi.words=Qo,Hi.wrap=function(e,t){return ka(Tn(t),e)},Hi.xor=la,Hi.xorBy=ha,Hi.xorWith=ua,Hi.zip=ca,Hi.zipObject=function(e,t){return yn(e||[],t||[],tr)},Hi.zipObjectDeep=function(e,t){return yn(e||[],t||[],Qr)},Hi.zipWith=pa,Hi.entries=Ho,Hi.entriesIn=Go,Hi.extend=_o,Hi.extendWith=Eo,hl(Hi,Hi),Hi.add=Tl,Hi.attempt=el,Hi.camelCase=Vo,Hi.capitalize=jo,Hi.ceil=xl,Hi.clamp=function(e,t,r){return r===i&&(r=t,t=i),r!==i&&(r=(r=vo(r))==r?r:0),t!==i&&(t=(t=vo(t))==t?t:0),or(vo(e),t,r)},Hi.clone=function(e){return lr(e,4)},Hi.cloneDeep=function(e){return lr(e,5)},Hi.cloneDeepWith=function(e,t){return lr(e,5,t="function"==typeof t?t:i)},Hi.cloneWith=function(e,t){return lr(e,4,t="function"==typeof t?t:i)},Hi.conformsTo=function(e,t){return null==t||hr(e,t,No(t))},Hi.deburr=Wo,Hi.defaultTo=function(e,t){return null==e||e!=e?t:e},Hi.divide=bl,Hi.endsWith=function(e,t,r){e=xo(e),t=un(t);var n=e.length,s=r=r===i?n:or(go(r),0,n);return(r-=t.length)>=0&&e.slice(r,s)==t},Hi.eq=Ga,Hi.escape=function(e){return(e=xo(e))&&Z.test(e)?e.replace(X,ni):e},Hi.escapeRegExp=function(e){return(e=xo(e))&&re.test(e)?e.replace(ie,"\\$&"):e},Hi.every=function(e,t,r){var n=Wa(e)?Dt:fr;return r&&xs(e,t,r)&&(t=i),n(e,hs(t,3))},Hi.find=ya,Hi.findIndex=js,Hi.findKey=function(e,t){return Bt(e,hs(t,3),xr)},Hi.findLast=va,Hi.findLastIndex=Ws,Hi.findLastKey=function(e,t){return Bt(e,hs(t,3),br)},Hi.floor=_l,Hi.forEach=Ta,Hi.forEachRight=xa,Hi.forIn=function(e,t){return null==e?e:vr(e,hs(t,3),Po)},Hi.forInRight=function(e,t){return null==e?e:Tr(e,hs(t,3),Po)},Hi.forOwn=function(e,t){return e&&xr(e,hs(t,3))},Hi.forOwnRight=function(e,t){return e&&br(e,hs(t,3))},Hi.get=Ao,Hi.gt=za,Hi.gte=Va,Hi.has=function(e,t){return null!=e&&gs(e,t,Mr)},Hi.hasIn=Do,Hi.head=Xs,Hi.identity=sl,Hi.includes=function(e,t,i,r){e=Xa(e)?e:zo(e),i=i&&!r?go(i):0;var n=e.length;return i<0&&(i=vi(n+i,0)),lo(e)?i<=n&&e.indexOf(t,i)>-1:!!n&&Gt(e,t,i)>-1},Hi.indexOf=function(e,t,i){var r=null==e?0:e.length;if(!r)return-1;var n=null==i?0:go(i);return n<0&&(n=vi(r+n,0)),Gt(e,t,n)},Hi.inRange=function(e,t,r){return t=mo(t),r===i?(r=t,t=0):r=mo(r),function(e,t,i){return e>=Ti(t,i)&&e=-p&&e<=p},Hi.isSet=oo,Hi.isString=lo,Hi.isSymbol=ho,Hi.isTypedArray=uo,Hi.isUndefined=function(e){return e===i},Hi.isWeakMap=function(e){return io(e)&&ms(e)==R},Hi.isWeakSet=function(e){return io(e)&&"[object WeakSet]"==Sr(e)},Hi.join=function(e,t){return null==e?"":gi.call(e,t)},Hi.kebabCase=Yo,Hi.last=$s,Hi.lastIndexOf=function(e,t,r){var n=null==e?0:e.length;if(!n)return-1;var s=n;return r!==i&&(s=(s=go(r))<0?vi(n+s,0):Ti(s,n-1)),t==t?function(e,t,i){for(var r=i+1;r--;)if(e[r]===t)return r;return r}(e,t,s):Ht(e,Vt,s,!0)},Hi.lowerCase=Xo,Hi.lowerFirst=qo,Hi.lt=co,Hi.lte=po,Hi.max=function(e){return e&&e.length?mr(e,sl,Ir):i},Hi.maxBy=function(e,t){return e&&e.length?mr(e,hs(t,2),Ir):i},Hi.mean=function(e){return jt(e,sl)},Hi.meanBy=function(e,t){return jt(e,hs(t,2))},Hi.min=function(e){return e&&e.length?mr(e,sl,kr):i},Hi.minBy=function(e,t){return e&&e.length?mr(e,hs(t,2),kr):i},Hi.stubArray=yl,Hi.stubFalse=vl,Hi.stubObject=function(){return{}},Hi.stubString=function(){return""},Hi.stubTrue=function(){return!0},Hi.multiply=El,Hi.nth=function(e,t){return e&&e.length?Vr(e,go(t)):i},Hi.noConflict=function(){return dt._===this&&(dt._=Ge),this},Hi.noop=ul,Hi.now=Ma,Hi.pad=function(e,t,i){e=xo(e);var r=(t=go(t))?ci(e):0;if(!t||r>=t)return e;var n=(t-r)/2;return Wn(yt(n),i)+e+Wn(mt(n),i)},Hi.padEnd=function(e,t,i){e=xo(e);var r=(t=go(t))?ci(e):0;return t&&rt){var n=e;e=t,t=n}if(r||e%1||t%1){var s=_i();return Ti(e+s*(t-e+ht("1e-"+((s+"").length-1))),t)}return qr(e,t)},Hi.reduce=function(e,t,i){var r=Wa(e)?Lt:Xt,n=arguments.length<3;return r(e,hs(t,4),i,n,pr)},Hi.reduceRight=function(e,t,i){var r=Wa(e)?Ft:Xt,n=arguments.length<3;return r(e,hs(t,4),i,n,dr)},Hi.repeat=function(e,t,r){return t=(r?xs(e,t,r):t===i)?1:go(t),Zr(xo(e),t)},Hi.replace=function(){var e=arguments,t=xo(e[0]);return e.length<3?t:t.replace(e[1],e[2])},Hi.result=function(e,t,r){var n=-1,s=(t=xn(t,e)).length;for(s||(s=1,e=i);++np)return[];var i=f,r=Ti(e,f);t=hs(t),e-=f;for(var n=Zt(r,t);++i=a)return e;var l=r-ci(n);if(l<1)return n;var h=o?_n(o,0,l).join(""):e.slice(0,l);if(s===i)return h+n;if(o&&(l+=h.length-l),ao(s)){if(e.slice(l).search(s)){var u,c=h;for(s.global||(s=Ae(s.source,xo(de.exec(s))+"g")),s.lastIndex=0;u=s.exec(c);)var p=u.index;h=h.slice(0,p===i?l:p)}}else if(e.indexOf(un(s),l)!=l){var d=h.lastIndexOf(s);d>-1&&(h=h.slice(0,d))}return h+n},Hi.unescape=function(e){return(e=xo(e))&&q.test(e)?e.replace(Y,fi):e},Hi.uniqueId=function(e){var t=++Ue;return xo(e)+t},Hi.upperCase=$o,Hi.upperFirst=Jo,Hi.each=Ta,Hi.eachRight=xa,Hi.first=Xs,hl(Hi,function(){var e={};return xr(Hi,(function(t,i){Fe.call(Hi.prototype,i)||(e[i]=t)})),e}(),{chain:!1}),Hi.VERSION="4.17.21",Mt(["bind","bindKey","curry","curryRight","partial","partialRight"],(function(e){Hi[e].placeholder=Hi})),Mt(["drop","take"],(function(e,t){ji.prototype[e]=function(r){r=r===i?1:vi(go(r),0);var n=this.__filtered__&&!t?new ji(this):this.clone();return n.__filtered__?n.__takeCount__=Ti(r,n.__takeCount__):n.__views__.push({size:Ti(r,f),type:e+(n.__dir__<0?"Right":"")}),n},ji.prototype[e+"Right"]=function(t){return this.reverse()[e](t).reverse()}})),Mt(["filter","map","takeWhile"],(function(e,t){var i=t+1,r=1==i||3==i;ji.prototype[e]=function(e){var t=this.clone();return t.__iteratees__.push({iteratee:hs(e,3),type:i}),t.__filtered__=t.__filtered__||r,t}})),Mt(["head","last"],(function(e,t){var i="take"+(t?"Right":"");ji.prototype[e]=function(){return this[i](1).value()[0]}})),Mt(["initial","tail"],(function(e,t){var i="drop"+(t?"":"Right");ji.prototype[e]=function(){return this.__filtered__?new ji(this):this[i](1)}})),ji.prototype.compact=function(){return this.filter(sl)},ji.prototype.find=function(e){return this.filter(e).head()},ji.prototype.findLast=function(e){return this.reverse().find(e)},ji.prototype.invokeMap=Kr((function(e,t){return"function"==typeof e?new ji(this):this.map((function(i){return Or(i,e,t)}))})),ji.prototype.reject=function(e){return this.filter(Fa(hs(e)))},ji.prototype.slice=function(e,t){e=go(e);var r=this;return r.__filtered__&&(e>0||t<0)?new ji(r):(e<0?r=r.takeRight(-e):e&&(r=r.drop(e)),t!==i&&(r=(t=go(t))<0?r.dropRight(-t):r.take(t-e)),r)},ji.prototype.takeRightWhile=function(e){return this.reverse().takeWhile(e).reverse()},ji.prototype.toArray=function(){return this.take(f)},xr(ji.prototype,(function(e,t){var r=/^(?:filter|find|map|reject)|While$/.test(t),n=/^(?:head|last)$/.test(t),s=Hi[n?"take"+("last"==t?"Right":""):t],a=n||/^find/.test(t);s&&(Hi.prototype[t]=function(){var t=this.__wrapped__,o=n?[1]:arguments,l=t instanceof ji,h=o[0],u=l||Wa(t),c=function(e){var t=s.apply(Hi,Pt([e],o));return n&&p?t[0]:t};u&&r&&"function"==typeof h&&1!=h.length&&(l=u=!1);var p=this.__chain__,d=!!this.__actions__.length,f=a&&!p,m=l&&!d;if(!a&&u){t=m?t:new ji(this);var g=e.apply(t,o);return g.__actions__.push({func:fa,args:[c],thisArg:i}),new Vi(g,p)}return f&&m?e.apply(this,o):(g=this.thru(c),f?n?g.value()[0]:g.value():g)})})),Mt(["pop","push","shift","sort","splice","unshift"],(function(e){var t=Re[e],i=/^(?:push|sort|unshift)$/.test(e)?"tap":"thru",r=/^(?:pop|shift)$/.test(e);Hi.prototype[e]=function(){var e=arguments;if(r&&!this.__chain__){var n=this.value();return t.apply(Wa(n)?n:[],e)}return this[i]((function(i){return t.apply(Wa(i)?i:[],e)}))}})),xr(ji.prototype,(function(e,t){var i=Hi[t];if(i){var r=i.name+"";Fe.call(Ri,r)||(Ri[r]=[]),Ri[r].push({name:t,func:i})}})),Ri[Gn(i,2).name]=[{name:"wrapper",func:i}],ji.prototype.clone=function(){var e=new ji(this.__wrapped__);return e.__actions__=On(this.__actions__),e.__dir__=this.__dir__,e.__filtered__=this.__filtered__,e.__iteratees__=On(this.__iteratees__),e.__takeCount__=this.__takeCount__,e.__views__=On(this.__views__),e},ji.prototype.reverse=function(){if(this.__filtered__){var e=new ji(this);e.__dir__=-1,e.__filtered__=!0}else(e=this.clone()).__dir__*=-1;return e},ji.prototype.value=function(){var e=this.__wrapped__.value(),t=this.__dir__,i=Wa(e),r=t<0,n=i?e.length:0,s=function(e,t,i){for(var r=-1,n=i.length;++r=this.__values__.length;return{done:e,value:e?i:this.__values__[this.__index__++]}},Hi.prototype.plant=function(e){for(var t,r=this;r instanceof zi;){var n=Hs(r);n.__index__=0,n.__values__=i,t?s.__wrapped__=n:t=n;var s=n;r=r.__wrapped__}return s.__wrapped__=e,t},Hi.prototype.reverse=function(){var e=this.__wrapped__;if(e instanceof ji){var t=e;return this.__actions__.length&&(t=new ji(this)),(t=t.reverse()).__actions__.push({func:fa,args:[ta],thisArg:i}),new Vi(t,this.__chain__)}return this.thru(ta)},Hi.prototype.toJSON=Hi.prototype.valueOf=Hi.prototype.value=function(){return mn(this.__wrapped__,this.__actions__)},Hi.prototype.first=Hi.prototype.head,et&&(Hi.prototype[et]=function(){return this}),Hi}();"function"==typeof define&&"object"==typeof define.amd&&define.amd?(dt._=mi,define((function(){return mi}))):mt?((mt.exports=mi)._=mi,ft._=mi):dt._=mi}).call(e)}));!function(){if("undefined"!=typeof document&&!document.getElementById("776034268b16303eb90e220d7fb51791d4ec5c803243d19fc8fe7632b142487c")){var e=document.createElement("style");e.id="776034268b16303eb90e220d7fb51791d4ec5c803243d19fc8fe7632b142487c",e.textContent='@import"https://at.alicdn.com/t/font_2809422_tyv73h24h8.css";@import"https://at.alicdn.com/t/c/font_2802048_la37g7yevws.css";.axesRenderer{width:100px;height:100px;position:absolute;display:block;bottom:1px;left:10px;background:#ffffff00}.overview-map{width:200px;height:200px;top:10px;left:10px;position:absolute;z-index:1;border:1px #50505090 solid;background-color:#80808030}.statsOutput{position:absolute;opacity:.6;top:1px;left:1px}#navCube{position:absolute;bottom:10px;right:10px;z-index:1;pointer-events:none;cursor:pointer}#navCube:hover{opacity:1}.css3d-navcube .navcube-plane{backface-visibility:hidden;z-index:1;transition:all .2s}.css3d-navcube .navcube-plane.outer{opacity:.7;background:linear-gradient(-45deg,transparent 15px,#efefef 0) bottom right,linear-gradient(-135deg,transparent 15px,#efefef 0) top right,linear-gradient(135deg,transparent 15px,#efefef 0) top left,linear-gradient(45deg,transparent 15px,#efefef 0) bottom left;background-size:70% 70%;background-repeat:no-repeat}.css3d-navcube .navcube-plane.inner{margin:2px;font-size:30px;text-align:center;line-height:100px;background:linear-gradient(-45deg,transparent 14px,#2c7be5 0) bottom right,linear-gradient(-135deg,transparent 14px,#2c7be5 0) top right,linear-gradient(135deg,transparent 14px,#2c7be5 0) top left,linear-gradient(45deg,transparent 14px,#2c7be5 0) bottom left;background-size:70% 70%;background-repeat:no-repeat}.css3d-navcube .navcube-plane:hover{opacity:1!important}.css3d-navcube .navcube-edge{opacity:0;z-index:2;transition:all .2s}.css3d-navcube .navcube-edge:hover{opacity:1!important}.css3d-navcube .navcube-corner{opacity:.7;backface-visibility:hidden;box-sizing:content-box;transform-origin:50% 33%;top:4px;z-index:3;transition:all .2s}.css3d-navcube .navcube-corner-plane{opacity:0;backface-visibility:hidden;transform-origin:bottom;top:-6.5px;z-index:3;transition:all .2s}.css3d-navcube .highlight{opacity:1}.progress-bar{z-index:3;bottom:20%;left:25%;position:absolute;color:#ffffffa0;width:50%;user-select:none}.progress-bar.hidden{display:none}.progress-bar .progress-bar-item{width:100%;text-align:center;padding:2px}.pop-panel{z-index:99999999;top:calc(70% - 100px);left:calc(90% - 160px);position:absolute;background:#ffffff;color:#333;border-radius:4px;width:160px;box-shadow:0 12px 48px 16px #00000008,0 9px 28px #0000000d,0 6px 16px -8px #00000014}.pop-panel .pop-panel-header{font-size:16px;font-weight:bolder;padding:16px 24px 8px;color:#333;border-bottom:1px solid #EFEFEF;cursor:move;user-select:none}.pop-panel .pop-panel-body{display:flex;flex-direction:row;justify-content:space-between;align-items:center;padding:16px 24px}.pop-panel .pop-panel-body .pop-panel-item{display:inline-block;cursor:pointer;margin-right:16px;font-size:16px}.pop-panel .pop-panel-body .pop-panel-item .gemini-viewer-icon{font-size:24px}.pop-panel .pop-panel-body .pop-panel-item:last-child{margin-right:0}.pop-panel .pop-panel-body .pop-panel-item:hover,.pop-panel .pop-panel-body .pop-panel-item.active{color:#2c7be5}.pop-panel .pop-panel-body .pop-panel-item.disable{color:#999;cursor:not-allowed}.model-layout-switch-bar{position:absolute;bottom:0;width:100%;height:24px;background:#ffffff;opacity:.7;display:flex;font-size:14px;line-height:1;overflow-x:scroll;overflow-y:hidden;z-index:1}.model-layout-switch-bar .model-layout-switch-bar-content{white-space:nowrap}.model-layout-switch-bar .model-layout-switch-bar-content .model-layout-switch-item{position:relative;display:inline-block;padding:3px 10px 0;color:#000;height:22px;cursor:pointer;transform:translate(0)}.model-layout-switch-bar .model-layout-switch-bar-content .model-layout-switch-item:before{content:"";position:absolute;inset:0;z-index:-1;background:#fff;border:1px solid #000;border-top:0px}.model-layout-switch-bar .model-layout-switch-bar-content .model-layout-switch-item:hover{color:#8080f0}.model-layout-switch-bar .model-layout-switch-bar-content .model-layout-switch-item:nth-child(n+2){margin-left:-1px}.model-layout-switch-bar .model-layout-switch-bar-content .model-layout-switch-item.activate{color:#fff!important}.model-layout-switch-bar .model-layout-switch-bar-content .model-layout-switch-item.activate:before{background:#212830!important}.model-layout-switch-bar.hidden{display:none}.follow-tooltip{z-index:99999999;position:absolute;left:-500px;padding:6px;background:rgba(25,25,25,.3);color:#fffc;font-size:12px;border-radius:2px}.context-menu{position:absolute;box-sizing:border-box;background-color:#fff;width:200px;padding:2px;border-radius:2px;box-shadow:0 4px 8px #0003,0 6px 20px #00000030;cursor:pointer;z-index:2}.context-menu ul{list-style:none;padding:0}.context-menu ul:last-child li{border-bottom:0px}.context-menu li{height:2rem;padding:.5rem;box-sizing:border-box}.context-menu li:hover{background-color:#d3d3d3}.context-menu li.disabled{color:#ccc;cursor:not-allowed}.context-menu li:last-child{border-bottom:1px solid #000}.toolbar{position:absolute;display:flex;box-sizing:border-box;height:68px;left:50%;bottom:40px;padding:8px 20px;border:rgba(153,153,153,.8) 1px solid;border-radius:4px;background:rgba(255,255,255,.8);transform:translate(-50%);align-items:center;z-index:10;user-select:none}.toolbar .toolbar-group{display:flex;padding:0 2px;box-sizing:border-box}.toolbar .toolbar-group-division{width:1px;background-color:#999c;height:60%}.toolbar .toolbar-menu{display:flex;box-sizing:border-box;flex-direction:column;word-break:break-word;width:50px;height:50px;padding:3px 1px;margin:0 2px;transition:all .3s;cursor:pointer;color:#666;border-radius:4px}.toolbar .toolbar-menu.active{color:#2c7be5}.toolbar .toolbar-menu .icon{width:24px;height:24px;margin:auto;font-size:24px;line-height:normal}.toolbar .toolbar-menu span{display:block;width:100%;margin:auto;font-size:.75em;text-align:center;user-select:none}.toolbar .toolbar-menu:hover{color:#2c7be5;background-color:#fffc}.toolbar .toolbar-parent-menu{position:relative}.toolbar .toolbar-parent-menu:hover .toolbar-sub-menu{display:block}.toolbar .toolbar-parent-menu:hover .toolbar-sub-menu-list{background:rgba(255,255,255,.8)}.toolbar .toolbar-parent-menu:after{content:"";position:absolute;box-sizing:border-box;width:0;height:0;right:2px;top:2px;border-width:4px;border-style:solid;border-top-color:#666;border-right-color:#666;border-bottom-color:transparent;border-left-color:transparent;border-radius:1px}.toolbar .toolbar-sub-menu{display:none;position:absolute;min-width:50px;bottom:100%}.toolbar .toolbar-sub-menu .toolbar-sub-menu-list{margin-bottom:2px;border-radius:4px}.toolbar .toolbar-sub-menu .toolbar-sub-menu-list .toolbar-menu{margin:0}.bottom-bar{position:absolute;bottom:0;right:0;display:flex;color:#666;z-index:3;overflow:hidden;user-select:none}.bottom-bar i{font-size:18px;padding:3px;align-self:center;opacity:.4;cursor:pointer;line-height:1}.bottom-bar i:hover,.bottom-bar i.active{color:#2c7be5;opacity:1}.bottom-bar .fps{width:4rem}.bottom-bar span{align-self:center;padding:4px;font-size:14px}#statistics-tooltip,#tips-tooltip,#cameraInfo-tooltip{position:absolute;right:5px;bottom:30px;background:#666666;color:#fff;padding:8px 8px 5px;font-size:.8rem;border-radius:4px;z-index:3;opacity:.9;user-select:none}#statistics-tooltip p,#tips-tooltip p,#cameraInfo-tooltip p{padding-bottom:3px;margin:3px}#statistics-tooltip p span,#tips-tooltip p span,#cameraInfo-tooltip p span{float:left;margin-right:10px}.hide{display:none}.bim-viewer-spinner{position:absolute;display:flex;top:calc(50% - 20px);left:calc(50% - 20px);opacity:.8;justify-content:center;align-items:center;z-index:10}.bim-viewer-spinner>div{font-size:3rem;animation:spin 1s infinite linear;color:#2c7be5}.bim-viewer-spinner.hidden{display:none}.svg-renderer{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none}.spinner{position:absolute;display:flex;width:100%;height:100%;opacity:.8;background-color:#fff;justify-content:center;align-items:center;z-index:10}.spinner>div{font-size:3rem;animation:spin 1s infinite linear;color:#2c7be5}.spinner.hidden{display:none}.compare-markups-canvas{position:absolute;top:0;left:0;pointer-events:none;user-select:none}.anchor{position:absolute;top:0;left:0;opacity:0;width:20px;height:20px;transform:translate(-50%,-50%);pointer-events:none;user-select:none;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAADjRJREFUeF7tXQnQttUYvq4Zxr5MqBgaihRlKakUU7SYSBQljUhaxijtso2MTCrRn8YoldKIUlIIJRplSyKyqzGyJDSDLGHmMtfvvOb19n7fe7Zn+/7nnnnn+/7/O8t9zrne+5xzn3sh1hCS9GUA20UO9xqS20eWHXQxDpr7BOZHAMyfrBEA8+dllAAJX65BFB0lwCgBxjPAHAyMW8C4BQxCghczOW4B4xYwbgHjFjDqAWYxMJ4BxjNA8fY6iAbGM8B4BhjPAGvKGUDSYwA8FcAmAJ4EYOPw8/6R4upvAH4I4Efh580AbiJ5W2T9wRRbEWcASTuFBX/a1KLfq/Iq/HsKDN8NgLiych+tNzdYAEh6JoAXAdgtLHrrkwfAkuEyAJeTvL4LBkr7HBQAJK0fFtwLH/u0WzpHsfWvMRAMCJK3xlbqutwgACDplVMLf++uJ21B//+aAsL5PecVvQaApB0BHA3AP4dIVwE4maR/9pJ6CYBwij8GwOt7OWvpTJ0O4KQ+3iJ6BwBJXnQvvq9yK4l8hTQIDIbeUG8AsALEfeyi9mpb6AUAJL0bwBtjZ3CFlDuR5LFdj6VzAEi6EMCeXU9ER/1fRHKvjvpe3W1nAJC0NoDPAnhGwxNwF4DbZz6/m/q3u183fNaZ+n3yfw9smL8bALyA5B0N9zO3+U4AIMmL/gUAazU0aKtor/CH5M9K+pD0BAC7hI9Vzk3QnQB2JmkwtEqtA0DS7gAuqTxKn7C96F8EcBXJP1Zuf3Vzkh4WdBI7ADAYat9U9iD5ySZ4X6rNVgEg6TAA76s4wKsBnBa+6X6saY0k+bHJkuFQAM+r2PHhJE+t2N6yTbUGAEkHADiz0sBu8sKTPKdSe0XNSHpNAIKfoGvQgSQ/VKOhRW20AoDwcvfNRcxE/P034Rvvxf97RPnWiki6XwCBJcKjKnS8ZRsvjI0DILzg3VI4IX5gsahf1Ud16vTYghr7DQEMpQ9XGzT9stgoACQ9BMD3Cw9LlhyvI3ljIYharS5pMwAfALBlQcc+3G5K8k8FbXR3BpDkE+1LCpj3+/o+JH2XHxxJsg7ho8FwJZf/S0n65tQINSYBJH0QwEEFXJ9F0gfHwZMkH+heWzCQM0geXFB/yaqNAEDS8QDeUsDwsSRPLKjfu6qS/NbhN49cehfJt+ZWXqpedQCEV70SY8ltSX619kD70J6kbQBcV8DLTrWNS5oAgBc/y4KHZHV+Cia7saqSlNm4tZxV1dFVJzwYc7w/c3BPJPnTzLqDqiZpQwA/yWT6kJpGJdUAEO6/Ft05+vFdSX4mc0IGWU3SCwF8OoN5Xw23qaUPqQkAf/NzbPiOJPnejIkYfBVJRwA4JWMgp5M8JKPePapUAUDBwa+x602NyWmjjYLrcpUDYS0A5Bz87Ky5C8l/tDHRs31IesTUdnUbyd93xMd9g+1CalzCKgfCYgAEp42PJE6edftbtaXeDWrZ59ryJiz6owHcZ4bnuwH8CoD3WFsqfall/r4BIPXtYF+SRc4nNQBwMYA9EgFwCsmjEuskFZe0c7A1tAuZXcpyyC5edvmy7Z4tmBojSe8BcGRiB5eQfGlinf8rXgSA8NL340Tk+knX3/5GXK0l+U3ehievLpmYOXXPBXAqSdsiVKdwi7IUSHlKtiTdqOTFsBQAhwNIPcE3ouaVZN9/q0q9+H6bb4Jsg2BrneNJOoZAVcpUFx9BMtvKqhQAKVE3PFn+9mxd25hD0tMB+PHJLuNtkF3BDyb5nZqdBaOSr4dYB7FNF4W1zQZAppXP/rXNuCS9HMDHYmercrm9SX68ZpvBvOzsxDazrYdKAJD64nc1SVvTViNJbwdwXLUG8xo6juQ78qrOryXJ1s0phqbZL4UlALClj2PwxNJuJG3gUYXCKf/zVRorb+RZJC26q5AkB8Bw5JFYupnkprGFp8tlASBD8/dbAOuRrGK6XeFZNWeuFtV5HMlfLCoU8/dgcv5LAI+MKR/KZGkGcwHg+6rvrbF0Acl9YgsvVy5c8+z1k3JdqtH1ojasDfWj1j8XFYz5uySbkr0ipmwocxTJ5HeFXAD4TvyqBOaq2blL8jaya0LfbRY9geSba3SY4UdxHslk3UcuAL4NwFavsbRODefHgifUWD5Ly1lP4GtusbIoOM/aiTWWbiS5eWzhSblkAEiy6PVeF6u3vpbkc1IZm1e+59/+Ccvnktyv0ni/AuDZkW1ZK/hYkta0RlMOAGySlKIXr6L5G8C3f3rSn1/j7SBDM2gP4yR7zBwApKp/Nybp94IiknQBgL2LGmmvctZ+PMuepI1CuNpYzpPVwjkAsJbKzpAxdBfJB8UUXK6MJLfxawDFbZXyElnf9gXrRZZdtpikvwCIDVJxDsn9U/rNAYBdtWJ17j8n6QALRSRpXwDnFTXSfuUqyiFJDnDx+Ej2ryeZ5IrGEEc/sv3VxbYA8IDICteRjD3ELNlkBRezSHarFnsbSavLi0jStQC2jWzkrwC+FVl2dTEDINdGPaafi0m+LKbggi2gSR5L2VuqftEr3aRRSZ8AUGT0sdwAmwZAsfWqpAcDaMw7tqnVB3ALyVjRvZz0y7W2jhpa0wAoFoOSbL/XiPVQ1AzlF7qbpA0+i0iSjVzeWdTIMpWbBsABJM8qYV6SM378oKSNDuuuXWptLMlexY2Fi2kaAMUeP5K2BvC1DhexpOvNSy2Lm1aAjQAoWd7Fddd4AIxbQKHDydC3gPEQuFhKLFti6IfA8RpYDoBBXwNHRVA5ABpXBNm2P4X8DhCbgLGWKjjVPCplPE2VPZpkitncXD4SVcF2VklKX5fzGGRdc2yI91qPQQ4112oQ5QqoKL4BmIfEx6AbSPqtJppyAGBPYKdxi6Faz8F+DrXnrgNPDoFuJblBDUYTn4PPJ+mX02jKAYDTnJwQ3QOwYWnM/vBNSAFeAnuNFE1+l5/HRchVkBI36U0kk0LR5QAgNbbNYSRXlU5z0xqxUv5m6tcyCXPM4ZTQ8cma1xwAOAiU/eZjkzNfSdK++sW0BhqF2vYyNiycnW7WT3W7TwZAEMc2e35Kwoo+vEYWjwFIgZpm4c5O8oeEOf4eyeR8BbkASL2WVfOi7bkUqOkYkur1nOV9lQsA5/M9KQGdZ5MsCZb8v64kbQXgcwAemtB/G0V9/96+VuAISX5GTzHwPIbkyakDzQVAqm+ADTq8P9VyDrXPnKVQn2izWgEjgnOoz1kpQTeTfQI8eVkACOeArt3DHSjRWUT6QNW2uDC3/XYPD0yOASL+C701NkCE3wRSE0E1ESLGV8yuAkVUue9Pi7DBhIgJUqAvQaIch/+iFmMG2AFzz9p5DQYVJCoAINVP0NWqOIvObvwhcIStZ5uOHeAI3zZ0KXYBnzOGnKwiyf6A0/1mHwIDAByBs2+BIq2qPrABIHjhz2wqrP0gA0UGEPQ1VKyB4Ouif+Y6ldox03kMrGRpNJ/BIEPFBgD4abi3waKDZ7HtCV6ckMLuUgCfAuCUbQZBoxSCWQ8zWHQAQU64eN8gdmg7J2BwNbO7mT8T+wK7nv3ZH5L+2RqF3IKOC5jk1RuypMc+FC05nqIzwKTVjLBxk6qXk9yttdnuYUeSHA/Qip9UygoLN9tJFQAEKZBrvbpiEkSmrmBBQslia+sJrzUBYL11btKoRq6GqQvSZvmM+D8T9vqZNCpIASeNyk0bt2ITRs6575ckkOxn2rip80DOgXB19TFx5EIZVCVP0HQv1baACgfCSRMrNoFkYcJIz0+Vg1+jAAhbgS1TrdbMpWTjxtyO2qpXwZztRJK2yK5K1SXAlCS4MCRtymV4xSSULEgQOZk7J63aK3cil6vXGACCJEjxIprH5xnOAdRVbsHSCZfkEDE26z6ooK1kb5+UvpoGwNoh0uVaKUzNlPWTs0Oh31jQRutVg3rXvoGpCSGneb0TgCOt3tHUABoFQJAC9iNMil03Z7AOhGzzr1Wpdu9NTdxS7YZXPTt0HJoQUHup5rYgeUOTY2gcAAEEuwO4pMJAbIhhIJxWO/NYKW/BmMOL7k+NZBZ7kGzcIbYVAAQQOJ9fdn67mQWyMYZBcE7pwtWoH8y4vPDJjhlL9H84yRSXsOxhtAaAAIIDbFSRze09K14dJMIVtUzOY3kLptu7hG98SoavRV1Uy66yqCP/vVUABBDkGJMuGouTUvmw6Dy/lzV1aApZPPx66XzEPtylJHVaNAb/PTv/X0zj88q0DoAAApuSebFSHB9SxugAy84AbjAU5SoIMfu96M48Xhz4eolB+IFnu5IcwCmTM122EwAEENgY48MJVjq5Y7wLwO0zH+fimfyf2103fNaZ+n3yf7Gx+nP5s/XRfiQ7iYfcGQAmsyXJOX9LFCW5E9+HemeQPLhLRjoHQJAGqV5GXc5Zrb6z073WYqCTQ+BSzAezMnsd71hzgD1s6yoAJ5P0z86pFxJgehYk2ajkmAYPiF1Nug96J5E8vSsGenMLWDQBQZ1qEBgMK4G86F783uU96J0EmJEG3g6GvC30StwPRgLMMirJzie+i9t8OjZjaVeSww9Xzm9sHcT5XTER22+vJcAcIFiBNAGCtXF9Iiu2Jgvv6B6DoEEBYGZ7sErZEsGA2KSj2b7Z33QvPMmkGL0d8XuPbgcLgDlnBYet23TqU3ursGh3WJzJx2HZenGVKwHTigDAnK3C7/GWCk8OPye/xya8dAJGJ6ryN9yf1b+nZuYuWZi26q5IAMybvJAhNfbcUCXpY1uLWNLPCID5szcCoARVfaw7SoD5qzJKgFEC9PH7Wp+nUQKMEiAlpN14Bqj/Hey2xVECjBJglABzMDAeAsdDYLeiua3exy1g3ALGLWDcAlY7dMTQGnML+A8qtnUcTFYqYAAAAABJRU5ErkJggg==) no-repeat center center;background-size:100% 100%;background-blend-mode:lighten;filter:invert(61%) sepia(87%) saturate(845%) hue-rotate(120deg) brightness(94%) contrast(101%);transition:opacity .5s ease-in-out}.anchor.active{opacity:1}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0deg)}to{-webkit-transform:rotate(360deg)}}\n',document.head.appendChild(e)}}();var ANe=fetch;window.fetch=(...e)=>Promise.resolve(ANe(...e));var C5r=kn(r9(),1),A5r=kn(ace(),1),O5r=kn(oce(),1),Lt={};QS(Lt,{ACESFilmicToneMapping:()=>$ue,AddEquation:()=>Sa,AddOperation:()=>Wue,AdditiveAnimationBlendMode:()=>HU,AdditiveBlending:()=>vp,AlphaFormat:()=>rhe,AlwaysDepth:()=>Uue,AlwaysStencilFunc:()=>mhe,AmbientLight:()=>Cl,AmbientLightProbe:()=>X4,AnimationClip:()=>so,AnimationLoader:()=>k4,AnimationMixer:()=>rU,AnimationObjectGroup:()=>eU,AnimationUtils:()=>lvt,ArcCurve:()=>Ig,ArrayCamera:()=>PD,ArrowHelper:()=>Bg,Audio:()=>QD,AudioAnalyser:()=>J4,AudioContext:()=>Ix,AudioListener:()=>K4,AudioLoader:()=>q4,AxesHelper:()=>mU,BackSide:()=>zn,BasicDepthPacking:()=>dhe,BasicShadowMap:()=>ipt,Bone:()=>Sl,BooleanKeyframeTrack:()=>Pp,Box2:()=>rs,Box3:()=>Mt,Box3Helper:()=>dU,BoxBufferGeometry:()=>gU,BoxGeometry:()=>eo,BoxHelper:()=>Ug,BufferAttribute:()=>Wt,BufferGeometry:()=>lt,BufferGeometryLoader:()=>JD,ByteType:()=>Zue,Cache:()=>Lg,Camera:()=>bp,CameraHelper:()=>Rx,CanvasTexture:()=>L4,CapsuleBufferGeometry:()=>vU,CapsuleGeometry:()=>Sg,CatmullRomCurve3:()=>HD,CineonToneMapping:()=>Xue,CircleBufferGeometry:()=>yU,CircleGeometry:()=>wg,ClampToEdgeWrapping:()=>gn,Clock:()=>Al,Color:()=>je,ColorKeyframeTrack:()=>Tx,ColorManagement:()=>Xs,CompressedArrayTexture:()=>N4,CompressedTexture:()=>hx,CompressedTextureLoader:()=>G4,ConeBufferGeometry:()=>TU,ConeGeometry:()=>Rg,CubeCamera:()=>AD,CubeReflectionMapping:()=>af,CubeRefractionMapping:()=>of,CubeTexture:()=>bg,CubeTextureLoader:()=>Ex,CubeUVReflectionMapping:()=>zy,CubicBezierCurve:()=>px,CubicBezierCurve3:()=>UD,CubicInterpolant:()=>qD,CullFaceBack:()=>UH,CullFaceFront:()=>Due,CullFaceFrontBack:()=>rpt,CullFaceNone:()=>Mue,Curve:()=>Ma,CurvePath:()=>kD,CustomBlending:()=>Fp,CustomToneMapping:()=>Kue,CylinderBufferGeometry:()=>EU,CylinderGeometry:()=>Rl,Cylindrical:()=>oU,Data3DTexture:()=>lx,DataArrayTexture:()=>Ay,DataTexture:()=>Il,DataTextureLoader:()=>Hg,DataUtils:()=>Yy,DecrementStencilOp:()=>dpt,DecrementWrapStencilOp:()=>mpt,DefaultLoadingManager:()=>ao,DepthFormat:()=>sf,DepthStencilFormat:()=>Tp,DepthTexture:()=>cf,DirectionalLight:()=>Ks,DirectionalLightHelper:()=>wx,DiscreteInterpolant:()=>YD,DodecahedronBufferGeometry:()=>bU,DodecahedronGeometry:()=>Mg,DoubleSide:()=>gi,DstAlphaFactor:()=>Gy,DstColorFactor:()=>Vy,DynamicCopyUsage:()=>Cpt,DynamicDrawUsage:()=>_pt,DynamicReadUsage:()=>Rpt,EdgesGeometry:()=>Rp,EllipseCurve:()=>wp,EqualDepth:()=>kue,EqualStencilFunc:()=>Tpt,EquirectangularReflectionMapping:()=>Tg,EquirectangularRefractionMapping:()=>rx,Euler:()=>xr,EventDispatcher:()=>Bo,ExtrudeBufferGeometry:()=>xU,ExtrudeGeometry:()=>Mp,FileLoader:()=>ui,Float16BufferAttribute:()=>x4,Float32BufferAttribute:()=>dt,Float64BufferAttribute:()=>I4,FloatType:()=>wa,Fog:()=>Uu,FogExp2:()=>Ny,FramebufferTexture:()=>P4,FrontSide:()=>tn,Frustum:()=>$s,GLBufferAttribute:()=>sU,GLSL1:()=>Opt,GLSL3:()=>p4,GreaterDepth:()=>Vue,GreaterEqualDepth:()=>Gue,GreaterEqualStencilFunc:()=>Ipt,GreaterStencilFunc:()=>bpt,GridHelper:()=>Sx,Group:()=>ur,HalfFloatType:()=>Uo,HemisphereLight:()=>df,HemisphereLightHelper:()=>hU,HemisphereLightProbe:()=>Y4,IcosahedronBufferGeometry:()=>IU,IcosahedronGeometry:()=>Cg,ImageBitmapLoader:()=>xx,ImageLoader:()=>Fg,ImageUtils:()=>ox,IncrementStencilOp:()=>ppt,IncrementWrapStencilOp:()=>fpt,InstancedBufferAttribute:()=>Sp,InstancedBufferGeometry:()=>ZD,InstancedInterleavedBuffer:()=>nU,InstancedMesh:()=>rn,Int16BufferAttribute:()=>E4,Int32BufferAttribute:()=>b4,Int8BufferAttribute:()=>v4,IntType:()=>Que,InterleavedBuffer:()=>_p,InterleavedBufferAttribute:()=>to,Interpolant:()=>Op,InterpolateDiscrete:()=>Ep,InterpolateLinear:()=>Hu,InterpolateSmooth:()=>SD,InvertStencilOp:()=>gpt,KeepStencilOp:()=>wD,KeyframeTrack:()=>Go,LOD:()=>FD,LatheBufferGeometry:()=>_U,LatheGeometry:()=>uf,Layers:()=>Oy,LessDepth:()=>Bue,LessEqualDepth:()=>MD,LessEqualStencilFunc:()=>Ept,LessStencilFunc:()=>ypt,Light:()=>Dl,LightProbe:()=>Hy,Line:()=>Ir,Line3:()=>Ca,LineBasicMaterial:()=>vr,LineCurve:()=>Fy,LineCurve3:()=>BD,LineDashedMaterial:()=>Ap,LineLoop:()=>Ly,LineSegments:()=>li,LinearEncoding:()=>_l,LinearFilter:()=>oi,LinearInterpolant:()=>yx,LinearMipMapLinearFilter:()=>lpt,LinearMipMapNearestFilter:()=>opt,LinearMipmapLinearFilter:()=>Ra,LinearMipmapNearestFilter:()=>kg,LinearSRGBColorSpace:()=>Cy,LinearToneMapping:()=>que,Loader:()=>ci,LoaderUtils:()=>ks,LoadingManager:()=>Lp,LoopOnce:()=>uhe,LoopPingPong:()=>phe,LoopRepeat:()=>hhe,LuminanceAlphaFormat:()=>ihe,LuminanceFormat:()=>nC,MOUSE:()=>rC,Material:()=>jr,MaterialLoader:()=>Uy,MathUtils:()=>_r,Matrix3:()=>Ni,Matrix4:()=>Be,MaxEquation:()=>VH,Mesh:()=>rt,MeshBasicMaterial:()=>lr,MeshDepthMaterial:()=>Ip,MeshDistanceMaterial:()=>ux,MeshLambertMaterial:()=>io,MeshMatcapMaterial:()=>WD,MeshNormalMaterial:()=>pf,MeshPhongMaterial:()=>Es,MeshPhysicalMaterial:()=>Ml,MeshStandardMaterial:()=>Gu,MeshToonMaterial:()=>jD,MinEquation:()=>GH,MirroredRepeatWrapping:()=>yp,MixOperation:()=>jue,MultiplyBlending:()=>kH,MultiplyOperation:()=>Cx,NearestFilter:()=>Ci,NearestMipMapLinearFilter:()=>apt,NearestMipMapNearestFilter:()=>spt,NearestMipmapLinearFilter:()=>mp,NearestMipmapNearestFilter:()=>lf,NeverDepth:()=>Hue,NeverStencilFunc:()=>vpt,NoBlending:()=>Ui,NoColorSpace:()=>cpt,NoToneMapping:()=>Lu,NormalAnimationBlendMode:()=>aC,NormalBlending:()=>gg,NotEqualDepth:()=>zue,NotEqualStencilFunc:()=>xpt,NumberKeyframeTrack:()=>Cc,Object3D:()=>sr,ObjectLoader:()=>W4,ObjectSpaceNormalMap:()=>fhe,OctahedronBufferGeometry:()=>SU,OctahedronGeometry:()=>hf,OneFactor:()=>ky,OneMinusDstAlphaFactor:()=>Nue,OneMinusDstColorFactor:()=>Lue,OneMinusSrcAlphaFactor:()=>FU,OneMinusSrcColorFactor:()=>Pue,OrthographicCamera:()=>qi,PCFShadowMap:()=>LU,PCFSoftShadowMap:()=>By,PMREMGenerator:()=>xp,Path:()=>ku,PerspectiveCamera:()=>Vr,Plane:()=>bi,PlaneBufferGeometry:()=>wU,PlaneGeometry:()=>ts,PlaneHelper:()=>fU,PointLight:()=>Ac,PointLightHelper:()=>uU,Points:()=>nn,PointsMaterial:()=>jn,PolarGridHelper:()=>pU,PolyhedronBufferGeometry:()=>RU,PolyhedronGeometry:()=>Dc,PositionalAudio:()=>Z4,PropertyBinding:()=>Rr,PropertyMixer:()=>eC,QuadraticBezierCurve:()=>dx,QuadraticBezierCurve3:()=>fx,Quaternion:()=>Hr,QuaternionKeyframeTrack:()=>Da,QuaternionLinearInterpolant:()=>XD,RED_GREEN_RGTC2_Format:()=>u4,RED_RGTC1_Format:()=>che,REVISION:()=>tC,RGBADepthPacking:()=>Wy,RGBAFormat:()=>Bs,RGBAIntegerFormat:()=>ohe,RGBA_ASTC_10x10_Format:()=>a4,RGBA_ASTC_10x5_Format:()=>i4,RGBA_ASTC_10x6_Format:()=>n4,RGBA_ASTC_10x8_Format:()=>s4,RGBA_ASTC_12x10_Format:()=>o4,RGBA_ASTC_12x12_Format:()=>l4,RGBA_ASTC_4x4_Format:()=>$H,RGBA_ASTC_5x4_Format:()=>KH,RGBA_ASTC_5x5_Format:()=>ZH,RGBA_ASTC_6x5_Format:()=>JH,RGBA_ASTC_6x6_Format:()=>QH,RGBA_ASTC_8x5_Format:()=>e4,RGBA_ASTC_8x6_Format:()=>t4,RGBA_ASTC_8x8_Format:()=>r4,RGBA_BPTC_Format:()=>_D,RGBA_ETC2_EAC_Format:()=>XH,RGBA_PVRTC_2BPPV1_Format:()=>qH,RGBA_PVRTC_4BPPV1_Format:()=>WH,RGBA_S3TC_DXT1_Format:()=>bD,RGBA_S3TC_DXT3_Format:()=>xD,RGBA_S3TC_DXT5_Format:()=>ID,RGB_ETC1_Format:()=>lhe,RGB_ETC2_Format:()=>YH,RGB_PVRTC_2BPPV1_Format:()=>jH,RGB_PVRTC_4BPPV1_Format:()=>zH,RGB_S3TC_DXT1_Format:()=>ED,RGFormat:()=>she,RGIntegerFormat:()=>ahe,RawShaderMaterial:()=>zD,Ray:()=>ko,Raycaster:()=>Oc,RectAreaLight:()=>$D,RedFormat:()=>sC,RedIntegerFormat:()=>nhe,ReinhardToneMapping:()=>Yue,RepeatWrapping:()=>vn,ReplaceStencilOp:()=>hpt,ReverseSubtractEquation:()=>Aue,RingBufferGeometry:()=>MU,RingGeometry:()=>Ag,SIGNED_RED_GREEN_RGTC2_Format:()=>h4,SIGNED_RED_RGTC1_Format:()=>c4,SRGBColorSpace:()=>wc,Scene:()=>Nn,ShaderChunk:()=>Xr,ShaderLib:()=>Rc,ShaderMaterial:()=>Yt,ShadowMaterial:()=>VD,Shape:()=>Qa,ShapeBufferGeometry:()=>DU,ShapeGeometry:()=>Dp,ShapePath:()=>Mx,ShapeUtils:()=>es,ShortType:()=>Jue,Skeleton:()=>wl,SkeletonHelper:()=>cU,SkinnedMesh:()=>Bu,Source:()=>Mc,Sphere:()=>Wi,SphereBufferGeometry:()=>CU,SphereGeometry:()=>ro,Spherical:()=>ff,SphericalHarmonics3:()=>KD,SplineCurve:()=>_g,SpotLight:()=>Vu,SpotLightHelper:()=>lU,Sprite:()=>LD,SpriteMaterial:()=>xg,SrcAlphaFactor:()=>Dx,SrcAlphaSaturateFactor:()=>Fue,SrcColorFactor:()=>Oue,StaticCopyUsage:()=>Dpt,StaticDrawUsage:()=>nx,StaticReadUsage:()=>wpt,StereoCamera:()=>$4,StreamCopyUsage:()=>Apt,StreamDrawUsage:()=>Spt,StreamReadUsage:()=>Mpt,StringKeyframeTrack:()=>Np,SubtractEquation:()=>Cue,SubtractiveBlending:()=>BH,TOUCH:()=>tpt,TangentSpaceNormalMap:()=>gf,TetrahedronBufferGeometry:()=>AU,TetrahedronGeometry:()=>Og,Texture:()=>Bi,TextureLoader:()=>bs,TorusBufferGeometry:()=>OU,TorusGeometry:()=>Cp,TorusKnotBufferGeometry:()=>PU,TorusKnotGeometry:()=>Pg,Triangle:()=>hn,TriangleFanDrawMode:()=>jy,TriangleStripDrawMode:()=>Ox,TrianglesDrawMode:()=>UU,TubeBufferGeometry:()=>NU,TubeGeometry:()=>Ng,TwoPassDoubleSide:()=>npt,UVMapping:()=>iC,Uint16BufferAttribute:()=>Eg,Uint32BufferAttribute:()=>cx,Uint8BufferAttribute:()=>y4,Uint8ClampedBufferAttribute:()=>T4,Uniform:()=>_x,UniformsGroup:()=>iU,UniformsLib:()=>At,UniformsUtils:()=>pn,UnsignedByteType:()=>Fu,UnsignedInt248Type:()=>gp,UnsignedIntType:()=>nf,UnsignedShort4444Type:()=>ehe,UnsignedShort5551Type:()=>the,UnsignedShortType:()=>Ax,VSMShadowMap:()=>Sy,Vector2:()=>le,Vector3:()=>A,Vector4:()=>Gr,VectorKeyframeTrack:()=>no,VideoTexture:()=>O4,WebGL1Renderer:()=>ND,WebGL3DRenderTarget:()=>m4,WebGLArrayRenderTarget:()=>f4,WebGLCubeRenderTarget:()=>OD,WebGLMultipleRenderTargets:()=>g4,WebGLRenderTarget:()=>zr,WebGLRenderer:()=>Ol,WebGLUtils:()=>She,WireframeGeometry:()=>GD,WrapAroundEnding:()=>ix,ZeroCurvatureEnding:()=>dg,ZeroFactor:()=>mf,ZeroSlopeEnding:()=>fg,ZeroStencilOp:()=>upt,_SRGBAFormat:()=>DD,sRGBEncoding:()=>gr});var tC="149",rC={LEFT:0,MIDDLE:1,RIGHT:2,ROTATE:0,DOLLY:1,PAN:2},tpt={ROTATE:0,PAN:1,DOLLY_PAN:2,DOLLY_ROTATE:3},Mue=0,UH=1,Due=2,rpt=3,ipt=0,LU=1,By=2,Sy=3,tn=0,zn=1,gi=2,npt=2,Ui=0,gg=1,vp=2,BH=3,kH=4,Fp=5,Sa=100,Cue=101,Aue=102,GH=103,VH=104,mf=200,ky=201,Oue=202,Pue=203,Dx=204,FU=205,Gy=206,Nue=207,Vy=208,Lue=209,Fue=210,Hue=0,Uue=1,Bue=2,MD=3,kue=4,Gue=5,Vue=6,zue=7,Cx=0,jue=1,Wue=2,Lu=0,que=1,Yue=2,Xue=3,$ue=4,Kue=5,iC=300,af=301,of=302,Tg=303,rx=304,zy=306,vn=1e3,gn=1001,yp=1002,Ci=1003,lf=1004,spt=1004,mp=1005,apt=1005,oi=1006,kg=1007,opt=1007,Ra=1008,lpt=1008,Fu=1009,Zue=1010,Jue=1011,Ax=1012,Que=1013,nf=1014,wa=1015,Uo=1016,ehe=1017,the=1018,gp=1020,rhe=1021,Bs=1023,nC=1024,ihe=1025,sf=1026,Tp=1027,sC=1028,nhe=1029,she=1030,ahe=1031,ohe=1033,ED=33776,bD=33777,xD=33778,ID=33779,zH=35840,jH=35841,WH=35842,qH=35843,lhe=36196,YH=37492,XH=37496,$H=37808,KH=37809,ZH=37810,JH=37811,QH=37812,e4=37813,t4=37814,r4=37815,i4=37816,n4=37817,s4=37818,a4=37819,o4=37820,l4=37821,_D=36492,che=36283,c4=36284,u4=36285,h4=36286,uhe=2200,hhe=2201,phe=2202,Ep=2300,Hu=2301,SD=2302,dg=2400,fg=2401,ix=2402,aC=2500,HU=2501,UU=0,Ox=1,jy=2,_l=3e3,gr=3001,dhe=3200,Wy=3201,gf=0,fhe=1,cpt="",wc="srgb",Cy="srgb-linear",upt=0,wD=7680,hpt=7681,ppt=7682,dpt=7683,fpt=34055,mpt=34056,gpt=5386,vpt=512,ypt=513,Tpt=514,Ept=515,bpt=516,xpt=517,Ipt=518,mhe=519,nx=35044,_pt=35048,Spt=35040,wpt=35045,Rpt=35049,Mpt=35041,Dpt=35046,Cpt=35050,Apt=35042,Opt="100",p4="300 es",DD=1035,Bo=class{addEventListener(e,t){void 0===this._listeners&&(this._listeners={});let i=this._listeners;void 0===i[e]&&(i[e]=[]),-1===i[e].indexOf(t)&&i[e].push(t)}hasEventListener(e,t){if(void 0===this._listeners)return!1;let i=this._listeners;return void 0!==i[e]&&-1!==i[e].indexOf(t)}removeEventListener(e,t){if(void 0===this._listeners)return;let i=this._listeners[e];if(void 0!==i){let e=i.indexOf(t);-1!==e&&i.splice(e,1)}}dispatchEvent(e){if(void 0===this._listeners)return;let t=this._listeners[e.type];if(void 0!==t){e.target=this;let i=t.slice(0);for(let t=0,r=i.length;t>8&255]+Ys[e>>16&255]+Ys[e>>24&255]+"-"+Ys[255&t]+Ys[t>>8&255]+"-"+Ys[t>>16&15|64]+Ys[t>>24&255]+"-"+Ys[63&i|128]+Ys[i>>8&255]+"-"+Ys[i>>16&255]+Ys[i>>24&255]+Ys[255&r]+Ys[r>>8&255]+Ys[r>>16&255]+Ys[r>>24&255]).toLowerCase()}function Qn(e,t,i){return Math.max(t,Math.min(i,e))}function BU(e,t){return(e%t+t)%t}function Ppt(e,t,i,r,n){return r+(e-t)*(n-r)/(i-t)}function Npt(e,t,i){return e!==t?(i-e)/(t-e):0}function Jb(e,t,i){return(1-i)*e+i*t}function Lpt(e,t,i,r){return Jb(e,t,1-Math.exp(-i*r))}function Fpt(e,t=1){return t-Math.abs(BU(e,2*t)-t)}function Hpt(e,t,i){return e<=t?0:e>=i?1:(e=(e-t)/(i-t))*e*(3-2*e)}function Upt(e,t,i){return e<=t?0:e>=i?1:(e=(e-t)/(i-t))*e*e*(e*(6*e-15)+10)}function Bpt(e,t){return e+Math.floor(Math.random()*(t-e+1))}function kpt(e,t){return e+Math.random()*(t-e)}function Gpt(e){return e*(.5-Math.random())}function Vpt(e){void 0!==e&&(lce=e);let t=lce+=1831565813;return t=Math.imul(t^t>>>15,1|t),t^=t+Math.imul(t^t>>>7,61|t),((t^t>>>14)>>>0)/4294967296}function zpt(e){return e*vg}function jpt(e){return e*sx}function d4(e){return 0==(e&e-1)&&0!==e}function ghe(e){return Math.pow(2,Math.ceil(Math.log(e)/Math.LN2))}function CD(e){return Math.pow(2,Math.floor(Math.log(e)/Math.LN2))}function Wpt(e,t,i,r,n){let s=Math.cos,a=Math.sin,o=s(i/2),l=a(i/2),h=s((t+r)/2),u=a((t+r)/2),c=s((t-r)/2),p=a((t-r)/2),d=s((r-t)/2),f=a((r-t)/2);switch(n){case"XYX":e.set(o*u,l*c,l*p,o*h);break;case"YZY":e.set(l*p,o*u,l*c,o*h);break;case"ZXZ":e.set(l*c,l*p,o*u,o*h);break;case"XZX":e.set(o*u,l*f,l*d,o*h);break;case"YXY":e.set(l*d,o*u,l*f,o*h);break;case"ZYZ":e.set(l*f,l*d,o*u,o*h);break;default:console.warn("THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: "+n)}}function fp(e,t){switch(t.constructor){case Float32Array:return e;case Uint16Array:return e/65535;case Uint8Array:return e/255;case Int16Array:return Math.max(e/32767,-1);case Int8Array:return Math.max(e/127,-1);default:throw new Error("Invalid component type.")}}function un(e,t){switch(t.constructor){case Float32Array:return e;case Uint16Array:return Math.round(65535*e);case Uint8Array:return Math.round(255*e);case Int16Array:return Math.round(32767*e);case Int8Array:return Math.round(127*e);default:throw new Error("Invalid component type.")}}var _r=Object.freeze({__proto__:null,DEG2RAD:vg,RAD2DEG:sx,ceilPowerOfTwo:ghe,clamp:Qn,damp:Lpt,degToRad:zpt,denormalize:fp,euclideanModulo:BU,floorPowerOfTwo:CD,generateUUID:Ho,inverseLerp:Npt,isPowerOfTwo:d4,lerp:Jb,mapLinear:Ppt,normalize:un,pingpong:Fpt,radToDeg:jpt,randFloat:kpt,randFloatSpread:Gpt,randInt:Bpt,seededRandom:Vpt,setQuaternionFromProperEuler:Wpt,smootherstep:Upt,smoothstep:Hpt}),le=class{constructor(e=0,t=0){le.prototype.isVector2=!0,this.x=e,this.y=t}get width(){return this.x}set width(e){this.x=e}get height(){return this.y}set height(e){this.y=e}set(e,t){return this.x=e,this.y=t,this}setScalar(e){return this.x=e,this.y=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setComponent(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)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y)}copy(e){return this.x=e.x,this.y=e.y,this}add(e){return this.x+=e.x,this.y+=e.y,this}addScalar(e){return this.x+=e,this.y+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this}subScalar(e){return this.x-=e,this.y-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this}multiply(e){return this.x*=e.x,this.y*=e.y,this}multiplyScalar(e){return this.x*=e,this.y*=e,this}divide(e){return this.x/=e.x,this.y/=e.y,this}divideScalar(e){return this.multiplyScalar(1/e)}applyMatrix3(e){let t=this.x,i=this.y,r=e.elements;return this.x=r[0]*t+r[3]*i+r[6],this.y=r[1]*t+r[4]*i+r[7],this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this}clamp(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this}clampLength(e,t){let i=this.length();return this.divideScalar(i||1).multiplyScalar(Math.max(e,Math.min(t,i)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}roundToZero(){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(){return this.x=-this.x,this.y=-this.y,this}dot(e){return this.x*e.x+this.y*e.y}cross(e){return this.x*e.y-this.y*e.x}lengthSq(){return this.x*this.x+this.y*this.y}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)}normalize(){return this.divideScalar(this.length()||1)}angle(){return Math.atan2(-this.y,-this.x)+Math.PI}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){let t=this.x-e.x,i=this.y-e.y;return t*t+i*i}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this}lerpVectors(e,t,i){return this.x=e.x+(t.x-e.x)*i,this.y=e.y+(t.y-e.y)*i,this}equals(e){return e.x===this.x&&e.y===this.y}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this}rotateAround(e,t){let i=Math.cos(t),r=Math.sin(t),n=this.x-e.x,s=this.y-e.y;return this.x=n*i-s*r+e.x,this.y=n*r+s*i+e.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y}},Ni=class{constructor(){Ni.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1]}set(e,t,i,r,n,s,a,o,l){let h=this.elements;return h[0]=e,h[1]=r,h[2]=a,h[3]=t,h[4]=n,h[5]=o,h[6]=i,h[7]=s,h[8]=l,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(e){let t=this.elements,i=e.elements;return t[0]=i[0],t[1]=i[1],t[2]=i[2],t[3]=i[3],t[4]=i[4],t[5]=i[5],t[6]=i[6],t[7]=i[7],t[8]=i[8],this}extractBasis(e,t,i){return e.setFromMatrix3Column(this,0),t.setFromMatrix3Column(this,1),i.setFromMatrix3Column(this,2),this}setFromMatrix4(e){let t=e.elements;return this.set(t[0],t[4],t[8],t[1],t[5],t[9],t[2],t[6],t[10]),this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){let i=e.elements,r=t.elements,n=this.elements,s=i[0],a=i[3],o=i[6],l=i[1],h=i[4],u=i[7],c=i[2],p=i[5],d=i[8],f=r[0],m=r[3],g=r[6],y=r[1],v=r[4],T=r[7],x=r[2],b=r[5],_=r[8];return n[0]=s*f+a*y+o*x,n[3]=s*m+a*v+o*b,n[6]=s*g+a*T+o*_,n[1]=l*f+h*y+u*x,n[4]=l*m+h*v+u*b,n[7]=l*g+h*T+u*_,n[2]=c*f+p*y+d*x,n[5]=c*m+p*v+d*b,n[8]=c*g+p*T+d*_,this}multiplyScalar(e){let t=this.elements;return t[0]*=e,t[3]*=e,t[6]*=e,t[1]*=e,t[4]*=e,t[7]*=e,t[2]*=e,t[5]*=e,t[8]*=e,this}determinant(){let e=this.elements,t=e[0],i=e[1],r=e[2],n=e[3],s=e[4],a=e[5],o=e[6],l=e[7],h=e[8];return t*s*h-t*a*l-i*n*h+i*a*o+r*n*l-r*s*o}invert(){let e=this.elements,t=e[0],i=e[1],r=e[2],n=e[3],s=e[4],a=e[5],o=e[6],l=e[7],h=e[8],u=h*s-a*l,c=a*o-h*n,p=l*n-s*o,d=t*u+i*c+r*p;if(0===d)return this.set(0,0,0,0,0,0,0,0,0);let f=1/d;return e[0]=u*f,e[1]=(r*l-h*i)*f,e[2]=(a*i-r*s)*f,e[3]=c*f,e[4]=(h*t-r*o)*f,e[5]=(r*n-a*t)*f,e[6]=p*f,e[7]=(i*o-l*t)*f,e[8]=(s*t-i*n)*f,this}transpose(){let e,t=this.elements;return e=t[1],t[1]=t[3],t[3]=e,e=t[2],t[2]=t[6],t[6]=e,e=t[5],t[5]=t[7],t[7]=e,this}getNormalMatrix(e){return this.setFromMatrix4(e).invert().transpose()}transposeIntoArray(e){let t=this.elements;return e[0]=t[0],e[1]=t[3],e[2]=t[6],e[3]=t[1],e[4]=t[4],e[5]=t[7],e[6]=t[2],e[7]=t[5],e[8]=t[8],this}setUvTransform(e,t,i,r,n,s,a){let o=Math.cos(n),l=Math.sin(n);return this.set(i*o,i*l,-i*(o*s+l*a)+s+e,-r*l,r*o,-r*(-l*s+o*a)+a+t,0,0,1),this}scale(e,t){return this.premultiply(sH.makeScale(e,t)),this}rotate(e){return this.premultiply(sH.makeRotation(-e)),this}translate(e,t){return this.premultiply(sH.makeTranslation(e,t)),this}makeTranslation(e,t){return this.set(1,0,e,0,1,t,0,0,1),this}makeRotation(e){let t=Math.cos(e),i=Math.sin(e);return this.set(t,-i,0,i,t,0,0,0,1),this}makeScale(e,t){return this.set(e,0,0,0,t,0,0,0,1),this}equals(e){let t=this.elements,i=e.elements;for(let e=0;e<9;e++)if(t[e]!==i[e])return!1;return!0}fromArray(e,t=0){for(let i=0;i<9;i++)this.elements[i]=e[i+t];return this}toArray(e=[],t=0){let 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}clone(){return(new this.constructor).fromArray(this.elements)}},sH=new Ni;function vhe(e){for(let t=e.length-1;t>=0;--t)if(e[t]>=65535)return!0;return!1}var qpt={Int8Array:Int8Array,Uint8Array:Uint8Array,Uint8ClampedArray:Uint8ClampedArray,Int16Array:Int16Array,Uint16Array:Uint16Array,Int32Array:Int32Array,Uint32Array:Uint32Array,Float32Array:Float32Array,Float64Array:Float64Array};function wy(e,t){return new qpt[e](t)}function ax(e){return document.createElementNS("http://www.w3.org/1999/xhtml",e)}function yg(e){return e<.04045?.0773993808*e:Math.pow(.9478672986*e+.0521327014,2.4)}function RD(e){return e<.0031308?12.92*e:1.055*Math.pow(e,.41666)-.055}var aH={[wc]:{[Cy]:yg},[Cy]:{[wc]:RD}},Xs={legacyMode:!0,get workingColorSpace(){return Cy},set workingColorSpace(e){console.warn("THREE.ColorManagement: .workingColorSpace is readonly.")},convert:function(e,t,i){if(this.legacyMode||t===i||!t||!i)return e;if(aH[t]&&void 0!==aH[t][i]){let r=aH[t][i];return e.r=r(e.r),e.g=r(e.g),e.b=r(e.b),e}throw new Error("Unsupported color space conversion.")},fromWorkingColorSpace:function(e,t){return this.convert(e,this.workingColorSpace,t)},toWorkingColorSpace:function(e,t){return this.convert(e,t,this.workingColorSpace)}},yhe={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074},vs={r:0,g:0,b:0},Ic={h:0,s:0,l:0},LM={h:0,s:0,l:0};function oH(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}function FM(e,t){return t.r=e.r,t.g=e.g,t.b=e.b,t}var je=class{constructor(e,t,i){return this.isColor=!0,this.r=1,this.g=1,this.b=1,void 0===t&&void 0===i?this.set(e):this.setRGB(e,t,i)}set(e){return e&&e.isColor?this.copy(e):"number"==typeof e?this.setHex(e):"string"==typeof e&&this.setStyle(e),this}setScalar(e){return this.r=e,this.g=e,this.b=e,this}setHex(e,t=wc){return e=Math.floor(e),this.r=(e>>16&255)/255,this.g=(e>>8&255)/255,this.b=(255&e)/255,Xs.toWorkingColorSpace(this,t),this}setRGB(e,t,i,r=Xs.workingColorSpace){return this.r=e,this.g=t,this.b=i,Xs.toWorkingColorSpace(this,r),this}setHSL(e,t,i,r=Xs.workingColorSpace){if(e=BU(e,1),t=Qn(t,0,1),i=Qn(i,0,1),0===t)this.r=this.g=this.b=i;else{let r=i<=.5?i*(1+t):i+t-i*t,n=2*i-r;this.r=oH(n,r,e+1/3),this.g=oH(n,r,e),this.b=oH(n,r,e-1/3)}return Xs.toWorkingColorSpace(this,r),this}setStyle(e,t=wc){function i(t){void 0!==t&&parseFloat(t)<1&&console.warn("THREE.Color: Alpha component of "+e+" will be ignored.")}let r;if(r=/^((?:rgb|hsl)a?)\(([^\)]*)\)/.exec(e)){let e,n=r[1],s=r[2];switch(n){case"rgb":case"rgba":if(e=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s))return this.r=Math.min(255,parseInt(e[1],10))/255,this.g=Math.min(255,parseInt(e[2],10))/255,this.b=Math.min(255,parseInt(e[3],10))/255,Xs.toWorkingColorSpace(this,t),i(e[4]),this;if(e=/^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s))return this.r=Math.min(100,parseInt(e[1],10))/100,this.g=Math.min(100,parseInt(e[2],10))/100,this.b=Math.min(100,parseInt(e[3],10))/100,Xs.toWorkingColorSpace(this,t),i(e[4]),this;break;case"hsl":case"hsla":if(e=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)\%\s*,\s*(\d*\.?\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s)){let r=parseFloat(e[1])/360,n=parseFloat(e[2])/100,s=parseFloat(e[3])/100;return i(e[4]),this.setHSL(r,n,s,t)}}}else if(r=/^\#([A-Fa-f\d]+)$/.exec(e)){let e=r[1],i=e.length;if(3===i)return this.r=parseInt(e.charAt(0)+e.charAt(0),16)/255,this.g=parseInt(e.charAt(1)+e.charAt(1),16)/255,this.b=parseInt(e.charAt(2)+e.charAt(2),16)/255,Xs.toWorkingColorSpace(this,t),this;if(6===i)return this.r=parseInt(e.charAt(0)+e.charAt(1),16)/255,this.g=parseInt(e.charAt(2)+e.charAt(3),16)/255,this.b=parseInt(e.charAt(4)+e.charAt(5),16)/255,Xs.toWorkingColorSpace(this,t),this}return e&&e.length>0?this.setColorName(e,t):this}setColorName(e,t=wc){let i=yhe[e.toLowerCase()];return void 0!==i?this.setHex(i,t):console.warn("THREE.Color: Unknown color "+e),this}clone(){return new this.constructor(this.r,this.g,this.b)}copy(e){return this.r=e.r,this.g=e.g,this.b=e.b,this}copySRGBToLinear(e){return this.r=yg(e.r),this.g=yg(e.g),this.b=yg(e.b),this}copyLinearToSRGB(e){return this.r=RD(e.r),this.g=RD(e.g),this.b=RD(e.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(e=wc){return Xs.fromWorkingColorSpace(FM(this,vs),e),Qn(255*vs.r,0,255)<<16^Qn(255*vs.g,0,255)<<8^Qn(255*vs.b,0,255)<<0}getHexString(e=wc){return("000000"+this.getHex(e).toString(16)).slice(-6)}getHSL(e,t=Xs.workingColorSpace){Xs.fromWorkingColorSpace(FM(this,vs),t);let i,r,n=vs.r,s=vs.g,a=vs.b,o=Math.max(n,s,a),l=Math.min(n,s,a),h=(l+o)/2;if(l===o)i=0,r=0;else{let e=o-l;switch(r=h<=.5?e/(o+l):e/(2-o-l),o){case n:i=(s-a)/e+(s2048||t.height>2048?(console.warn("THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons",e),t.toDataURL("image/jpeg",.6)):t.toDataURL("image/png")}static sRGBToLinear(e){if("undefined"!=typeof HTMLImageElement&&e instanceof HTMLImageElement||"undefined"!=typeof HTMLCanvasElement&&e instanceof HTMLCanvasElement||"undefined"!=typeof ImageBitmap&&e instanceof ImageBitmap){let t=ax("canvas");t.width=e.width,t.height=e.height;let i=t.getContext("2d");i.drawImage(e,0,0,e.width,e.height);let r=i.getImageData(0,0,e.width,e.height),n=r.data;for(let e=0;e0&&(i.userData=this.userData),t||(e.textures[this.uuid]=i),i}dispose(){this.dispatchEvent({type:"dispose"})}transformUv(e){if(this.mapping!==iC)return e;if(e.applyMatrix3(this.matrix),e.x<0||e.x>1)switch(this.wrapS){case vn:e.x=e.x-Math.floor(e.x);break;case gn:e.x=e.x<0?0:1;break;case yp:1===Math.abs(Math.floor(e.x)%2)?e.x=Math.ceil(e.x)-e.x:e.x=e.x-Math.floor(e.x)}if(e.y<0||e.y>1)switch(this.wrapT){case vn:e.y=e.y-Math.floor(e.y);break;case gn:e.y=e.y<0?0:1;break;case yp:1===Math.abs(Math.floor(e.y)%2)?e.y=Math.ceil(e.y)-e.y:e.y=e.y-Math.floor(e.y)}return this.flipY&&(e.y=1-e.y),e}set needsUpdate(e){!0===e&&(this.version++,this.source.needsUpdate=!0)}};Bi.DEFAULT_IMAGE=null,Bi.DEFAULT_MAPPING=iC,Bi.DEFAULT_ANISOTROPY=1;var Gr=class{constructor(e=0,t=0,i=0,r=1){Gr.prototype.isVector4=!0,this.x=e,this.y=t,this.z=i,this.w=r}get width(){return this.z}set width(e){this.z=e}get height(){return this.w}set height(e){this.w=e}set(e,t,i,r){return this.x=e,this.y=t,this.z=i,this.w=r,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this.w=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setW(e){return this.w=e,this}setComponent(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)}return this}getComponent(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)}}clone(){return new this.constructor(this.x,this.y,this.z,this.w)}copy(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(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this.w+=e.w,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this.w+=e,this}addVectors(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}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this.w+=e.w*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this.w-=e.w,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this.w-=e,this}subVectors(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}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this.w*=e.w,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this.w*=e,this}applyMatrix4(e){let t=this.x,i=this.y,r=this.z,n=this.w,s=e.elements;return this.x=s[0]*t+s[4]*i+s[8]*r+s[12]*n,this.y=s[1]*t+s[5]*i+s[9]*r+s[13]*n,this.z=s[2]*t+s[6]*i+s[10]*r+s[14]*n,this.w=s[3]*t+s[7]*i+s[11]*r+s[15]*n,this}divideScalar(e){return this.multiplyScalar(1/e)}setAxisAngleFromQuaternion(e){this.w=2*Math.acos(e.w);let 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(e){let t,i,r,n,s=e.elements,a=s[0],o=s[4],l=s[8],h=s[1],u=s[5],c=s[9],p=s[2],d=s[6],f=s[10];if(Math.abs(o-h)<.01&&Math.abs(l-p)<.01&&Math.abs(c-d)<.01){if(Math.abs(o+h)<.1&&Math.abs(l+p)<.1&&Math.abs(c+d)<.1&&Math.abs(a+u+f-3)<.1)return this.set(1,0,0,0),this;t=Math.PI;let e=(a+1)/2,s=(u+1)/2,m=(f+1)/2,g=(o+h)/4,y=(l+p)/4,v=(c+d)/4;return e>s&&e>m?e<.01?(i=0,r=.707106781,n=.707106781):(i=Math.sqrt(e),r=g/i,n=y/i):s>m?s<.01?(i=.707106781,r=0,n=.707106781):(r=Math.sqrt(s),i=g/r,n=v/r):m<.01?(i=.707106781,r=.707106781,n=0):(n=Math.sqrt(m),i=y/n,r=v/n),this.set(i,r,n,t),this}let m=Math.sqrt((d-c)*(d-c)+(l-p)*(l-p)+(h-o)*(h-o));return Math.abs(m)<.001&&(m=1),this.x=(d-c)/m,this.y=(l-p)/m,this.z=(h-o)/m,this.w=Math.acos((a+u+f-1)/2),this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this.w=Math.min(this.w,e.w),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this.w=Math.max(this.w,e.w),this}clamp(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this.z=Math.max(e.z,Math.min(t.z,this.z)),this.w=Math.max(e.w,Math.min(t.w,this.w)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this.z=Math.max(e,Math.min(t,this.z)),this.w=Math.max(e,Math.min(t,this.w)),this}clampLength(e,t){let i=this.length();return this.divideScalar(i||1).multiplyScalar(Math.max(e,Math.min(t,i)))}floor(){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(){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(){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(){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(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this.w=-this.w,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z+this.w*e.w}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(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(e,t,i){return this.x=e.x+(t.x-e.x)*i,this.y=e.y+(t.y-e.y)*i,this.z=e.z+(t.z-e.z)*i,this.w=e.w+(t.w-e.w)*i,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z&&e.w===this.w}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this.w=e[t+3],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e[t+3]=this.w,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this.w=e.getW(t),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this.w=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z,yield this.w}},zr=class extends Bo{constructor(e=1,t=1,i={}){super(),this.isWebGLRenderTarget=!0,this.width=e,this.height=t,this.depth=1,this.scissor=new Gr(0,0,e,t),this.scissorTest=!1,this.viewport=new Gr(0,0,e,t);let r={width:e,height:t,depth:1};this.texture=new Bi(r,i.mapping,i.wrapS,i.wrapT,i.magFilter,i.minFilter,i.format,i.type,i.anisotropy,i.encoding),this.texture.isRenderTargetTexture=!0,this.texture.flipY=!1,this.texture.generateMipmaps=void 0!==i.generateMipmaps&&i.generateMipmaps,this.texture.internalFormat=void 0!==i.internalFormat?i.internalFormat:null,this.texture.minFilter=void 0!==i.minFilter?i.minFilter:oi,this.depthBuffer=void 0===i.depthBuffer||i.depthBuffer,this.stencilBuffer=void 0!==i.stencilBuffer&&i.stencilBuffer,this.depthTexture=void 0!==i.depthTexture?i.depthTexture:null,this.samples=void 0!==i.samples?i.samples:0}setSize(e,t,i=1){(this.width!==e||this.height!==t||this.depth!==i)&&(this.width=e,this.height=t,this.depth=i,this.texture.image.width=e,this.texture.image.height=t,this.texture.image.depth=i,this.dispose()),this.viewport.set(0,0,e,t),this.scissor.set(0,0,e,t)}clone(){return(new this.constructor).copy(this)}copy(e){this.width=e.width,this.height=e.height,this.depth=e.depth,this.viewport.copy(e.viewport),this.texture=e.texture.clone(),this.texture.isRenderTargetTexture=!0;let t=Object.assign({},e.texture.image);return this.texture.source=new Mc(t),this.depthBuffer=e.depthBuffer,this.stencilBuffer=e.stencilBuffer,null!==e.depthTexture&&(this.depthTexture=e.depthTexture.clone()),this.samples=e.samples,this}dispose(){this.dispatchEvent({type:"dispose"})}},Ay=class extends Bi{constructor(e=null,t=1,i=1,r=1){super(null),this.isDataArrayTexture=!0,this.image={data:e,width:t,height:i,depth:r},this.magFilter=Ci,this.minFilter=Ci,this.wrapR=gn,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}},f4=class extends zr{constructor(e=1,t=1,i=1){super(e,t),this.isWebGLArrayRenderTarget=!0,this.depth=i,this.texture=new Ay(null,e,t,i),this.texture.isRenderTargetTexture=!0}},lx=class extends Bi{constructor(e=null,t=1,i=1,r=1){super(null),this.isData3DTexture=!0,this.image={data:e,width:t,height:i,depth:r},this.magFilter=Ci,this.minFilter=Ci,this.wrapR=gn,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}},m4=class extends zr{constructor(e=1,t=1,i=1){super(e,t),this.isWebGL3DRenderTarget=!0,this.depth=i,this.texture=new lx(null,e,t,i),this.texture.isRenderTargetTexture=!0}},g4=class extends zr{constructor(e=1,t=1,i=1,r={}){super(e,t,r),this.isWebGLMultipleRenderTargets=!0;let n=this.texture;this.texture=[];for(let e=0;e=0?1:-1,r=1-t*t;if(r>Number.EPSILON){let n=Math.sqrt(r),s=Math.atan2(n,t*i);e=Math.sin(e*s)/n,a=Math.sin(a*s)/n}let n=a*i;if(o=o*e+c*n,l=l*e+p*n,h=h*e+d*n,u=u*e+f*n,e===1-a){let e=1/Math.sqrt(o*o+l*l+h*h+u*u);o*=e,l*=e,h*=e,u*=e}}e[t]=o,e[t+1]=l,e[t+2]=h,e[t+3]=u}static multiplyQuaternionsFlat(e,t,i,r,n,s){let a=i[r],o=i[r+1],l=i[r+2],h=i[r+3],u=n[s],c=n[s+1],p=n[s+2],d=n[s+3];return e[t]=a*d+h*u+o*p-l*c,e[t+1]=o*d+h*c+l*u-a*p,e[t+2]=l*d+h*p+a*c-o*u,e[t+3]=h*d-a*u-o*c-l*p,e}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 w(){return this._w}set w(e){this._w=e,this._onChangeCallback()}set(e,t,i,r){return this._x=e,this._y=t,this._z=i,this._w=r,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._w)}copy(e){return this._x=e.x,this._y=e.y,this._z=e.z,this._w=e.w,this._onChangeCallback(),this}setFromEuler(e,t){let i=e._x,r=e._y,n=e._z,s=e._order,a=Math.cos,o=Math.sin,l=a(i/2),h=a(r/2),u=a(n/2),c=o(i/2),p=o(r/2),d=o(n/2);switch(s){case"XYZ":this._x=c*h*u+l*p*d,this._y=l*p*u-c*h*d,this._z=l*h*d+c*p*u,this._w=l*h*u-c*p*d;break;case"YXZ":this._x=c*h*u+l*p*d,this._y=l*p*u-c*h*d,this._z=l*h*d-c*p*u,this._w=l*h*u+c*p*d;break;case"ZXY":this._x=c*h*u-l*p*d,this._y=l*p*u+c*h*d,this._z=l*h*d+c*p*u,this._w=l*h*u-c*p*d;break;case"ZYX":this._x=c*h*u-l*p*d,this._y=l*p*u+c*h*d,this._z=l*h*d-c*p*u,this._w=l*h*u+c*p*d;break;case"YZX":this._x=c*h*u+l*p*d,this._y=l*p*u+c*h*d,this._z=l*h*d-c*p*u,this._w=l*h*u-c*p*d;break;case"XZY":this._x=c*h*u-l*p*d,this._y=l*p*u-c*h*d,this._z=l*h*d+c*p*u,this._w=l*h*u+c*p*d;break;default:console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: "+s)}return!1!==t&&this._onChangeCallback(),this}setFromAxisAngle(e,t){let i=t/2,r=Math.sin(i);return this._x=e.x*r,this._y=e.y*r,this._z=e.z*r,this._w=Math.cos(i),this._onChangeCallback(),this}setFromRotationMatrix(e){let t=e.elements,i=t[0],r=t[4],n=t[8],s=t[1],a=t[5],o=t[9],l=t[2],h=t[6],u=t[10],c=i+a+u;if(c>0){let e=.5/Math.sqrt(c+1);this._w=.25/e,this._x=(h-o)*e,this._y=(n-l)*e,this._z=(s-r)*e}else if(i>a&&i>u){let e=2*Math.sqrt(1+i-a-u);this._w=(h-o)/e,this._x=.25*e,this._y=(r+s)/e,this._z=(n+l)/e}else if(a>u){let e=2*Math.sqrt(1+a-i-u);this._w=(n-l)/e,this._x=(r+s)/e,this._y=.25*e,this._z=(o+h)/e}else{let e=2*Math.sqrt(1+u-i-a);this._w=(s-r)/e,this._x=(n+l)/e,this._y=(o+h)/e,this._z=.25*e}return this._onChangeCallback(),this}setFromUnitVectors(e,t){let i=e.dot(t)+1;return iMath.abs(e.z)?(this._x=-e.y,this._y=e.x,this._z=0,this._w=i):(this._x=0,this._y=-e.z,this._z=e.y,this._w=i)):(this._x=e.y*t.z-e.z*t.y,this._y=e.z*t.x-e.x*t.z,this._z=e.x*t.y-e.y*t.x,this._w=i),this.normalize()}angleTo(e){return 2*Math.acos(Math.abs(Qn(this.dot(e),-1,1)))}rotateTowards(e,t){let i=this.angleTo(e);if(0===i)return this;let r=Math.min(1,t/i);return this.slerp(e,r),this}identity(){return this.set(0,0,0,1)}invert(){return this.conjugate()}conjugate(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this}dot(e){return this._x*e._x+this._y*e._y+this._z*e._z+this._w*e._w}lengthSq(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}length(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)}normalize(){let 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(e){return this.multiplyQuaternions(this,e)}premultiply(e){return this.multiplyQuaternions(e,this)}multiplyQuaternions(e,t){let i=e._x,r=e._y,n=e._z,s=e._w,a=t._x,o=t._y,l=t._z,h=t._w;return this._x=i*h+s*a+r*l-n*o,this._y=r*h+s*o+n*a-i*l,this._z=n*h+s*l+i*o-r*a,this._w=s*h-i*a-r*o-n*l,this._onChangeCallback(),this}slerp(e,t){if(0===t)return this;if(1===t)return this.copy(e);let i=this._x,r=this._y,n=this._z,s=this._w,a=s*e._w+i*e._x+r*e._y+n*e._z;if(a<0?(this._w=-e._w,this._x=-e._x,this._y=-e._y,this._z=-e._z,a=-a):this.copy(e),a>=1)return this._w=s,this._x=i,this._y=r,this._z=n,this;let o=1-a*a;if(o<=Number.EPSILON){let e=1-t;return this._w=e*s+t*this._w,this._x=e*i+t*this._x,this._y=e*r+t*this._y,this._z=e*n+t*this._z,this.normalize(),this._onChangeCallback(),this}let l=Math.sqrt(o),h=Math.atan2(l,a),u=Math.sin((1-t)*h)/l,c=Math.sin(t*h)/l;return this._w=s*u+this._w*c,this._x=i*u+this._x*c,this._y=r*u+this._y*c,this._z=n*u+this._z*c,this._onChangeCallback(),this}slerpQuaternions(e,t,i){return this.copy(e).slerp(t,i)}random(){let e=Math.random(),t=Math.sqrt(1-e),i=Math.sqrt(e),r=2*Math.PI*Math.random(),n=2*Math.PI*Math.random();return this.set(t*Math.cos(r),i*Math.sin(n),i*Math.cos(n),t*Math.sin(r))}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._w===this._w}fromArray(e,t=0){return this._x=e[t],this._y=e[t+1],this._z=e[t+2],this._w=e[t+3],this._onChangeCallback(),this}toArray(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._w,e}fromBufferAttribute(e,t){return this._x=e.getX(t),this._y=e.getY(t),this._z=e.getZ(t),this._w=e.getW(t),this}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}},A=class{constructor(e=0,t=0,i=0){A.prototype.isVector3=!0,this.x=e,this.y=t,this.z=i}set(e,t,i){return void 0===i&&(i=this.z),this.x=e,this.y=t,this.z=i,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setComponent(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)}return this}getComponent(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(){return new this.constructor(this.x,this.y,this.z)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this}multiplyVectors(e,t){return this.x=e.x*t.x,this.y=e.y*t.y,this.z=e.z*t.z,this}applyEuler(e){return this.applyQuaternion(cce.setFromEuler(e))}applyAxisAngle(e,t){return this.applyQuaternion(cce.setFromAxisAngle(e,t))}applyMatrix3(e){let t=this.x,i=this.y,r=this.z,n=e.elements;return this.x=n[0]*t+n[3]*i+n[6]*r,this.y=n[1]*t+n[4]*i+n[7]*r,this.z=n[2]*t+n[5]*i+n[8]*r,this}applyNormalMatrix(e){return this.applyMatrix3(e).normalize()}applyMatrix4(e){let t=this.x,i=this.y,r=this.z,n=e.elements,s=1/(n[3]*t+n[7]*i+n[11]*r+n[15]);return this.x=(n[0]*t+n[4]*i+n[8]*r+n[12])*s,this.y=(n[1]*t+n[5]*i+n[9]*r+n[13])*s,this.z=(n[2]*t+n[6]*i+n[10]*r+n[14])*s,this}applyQuaternion(e){let t=this.x,i=this.y,r=this.z,n=e.x,s=e.y,a=e.z,o=e.w,l=o*t+s*r-a*i,h=o*i+a*t-n*r,u=o*r+n*i-s*t,c=-n*t-s*i-a*r;return this.x=l*o+c*-n+h*-a-u*-s,this.y=h*o+c*-s+u*-n-l*-a,this.z=u*o+c*-a+l*-s-h*-n,this}project(e){return this.applyMatrix4(e.matrixWorldInverse).applyMatrix4(e.projectionMatrix)}unproject(e){return this.applyMatrix4(e.projectionMatrixInverse).applyMatrix4(e.matrixWorld)}transformDirection(e){let t=this.x,i=this.y,r=this.z,n=e.elements;return this.x=n[0]*t+n[4]*i+n[8]*r,this.y=n[1]*t+n[5]*i+n[9]*r,this.z=n[2]*t+n[6]*i+n[10]*r,this.normalize()}divide(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this}divideScalar(e){return this.multiplyScalar(1/e)}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this}clamp(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this.z=Math.max(e.z,Math.min(t.z,this.z)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this.z=Math.max(e,Math.min(t,this.z)),this}clampLength(e,t){let i=this.length();return this.divideScalar(i||1).multiplyScalar(Math.max(e,Math.min(t,i)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}roundToZero(){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(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(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(e,t,i){return this.x=e.x+(t.x-e.x)*i,this.y=e.y+(t.y-e.y)*i,this.z=e.z+(t.z-e.z)*i,this}cross(e){return this.crossVectors(this,e)}crossVectors(e,t){let i=e.x,r=e.y,n=e.z,s=t.x,a=t.y,o=t.z;return this.x=r*o-n*a,this.y=n*s-i*o,this.z=i*a-r*s,this}projectOnVector(e){let t=e.lengthSq();if(0===t)return this.set(0,0,0);let i=e.dot(this)/t;return this.copy(e).multiplyScalar(i)}projectOnPlane(e){return cH.copy(this).projectOnVector(e),this.sub(cH)}reflect(e){return this.sub(cH.copy(e).multiplyScalar(2*this.dot(e)))}angleTo(e){let t=Math.sqrt(this.lengthSq()*e.lengthSq());if(0===t)return Math.PI/2;let i=this.dot(e)/t;return Math.acos(Qn(i,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){let t=this.x-e.x,i=this.y-e.y,r=this.z-e.z;return t*t+i*i+r*r}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)+Math.abs(this.z-e.z)}setFromSpherical(e){return this.setFromSphericalCoords(e.radius,e.phi,e.theta)}setFromSphericalCoords(e,t,i){let r=Math.sin(t)*e;return this.x=r*Math.sin(i),this.y=Math.cos(t)*e,this.z=r*Math.cos(i),this}setFromCylindrical(e){return this.setFromCylindricalCoords(e.radius,e.theta,e.y)}setFromCylindricalCoords(e,t,i){return this.x=e*Math.sin(t),this.y=i,this.z=e*Math.cos(t),this}setFromMatrixPosition(e){let t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this}setFromMatrixScale(e){let t=this.setFromMatrixColumn(e,0).length(),i=this.setFromMatrixColumn(e,1).length(),r=this.setFromMatrixColumn(e,2).length();return this.x=t,this.y=i,this.z=r,this}setFromMatrixColumn(e,t){return this.fromArray(e.elements,4*t)}setFromMatrix3Column(e,t){return this.fromArray(e.elements,3*t)}setFromEuler(e){return this.x=e._x,this.y=e._y,this.z=e._z,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){let e=2*(Math.random()-.5),t=Math.random()*Math.PI*2,i=Math.sqrt(1-jh(e,2));return this.x=i*Math.cos(t),this.y=i*Math.sin(t),this.z=e,this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}},cH=new A,cce=new Hr,Mt=class{constructor(e=new A(1/0,1/0,1/0),t=new A(-1/0,-1/0,-1/0)){this.isBox3=!0,this.min=e,this.max=t}set(e,t){return this.min.copy(e),this.max.copy(t),this}setFromArray(e){let t=1/0,i=1/0,r=1/0,n=-1/0,s=-1/0,a=-1/0;for(let o=0,l=e.length;on&&(n=l),h>s&&(s=h),u>a&&(a=u)}return this.min.set(t,i,r),this.max.set(n,s,a),this}setFromBufferAttribute(e){let t=1/0,i=1/0,r=1/0,n=-1/0,s=-1/0,a=-1/0;for(let o=0,l=e.count;on&&(n=l),h>s&&(s=h),u>a&&(a=u)}return this.min.set(t,i,r),this.max.set(n,s,a),this}setFromPoints(e){this.makeEmpty();for(let t=0,i=e.length;tthis.max.x||e.ythis.max.y||e.zthis.max.z)}containsBox(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(e,t){return t.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))}intersectsBox(e){return!(e.max.xthis.max.x||e.max.ythis.max.y||e.max.zthis.max.z)}intersectsSphere(e){return this.clampPoint(e.center,ig),ig.distanceToSquared(e.center)<=e.radius*e.radius}intersectsPlane(e){let t,i;return e.normal.x>0?(t=e.normal.x*this.min.x,i=e.normal.x*this.max.x):(t=e.normal.x*this.max.x,i=e.normal.x*this.min.x),e.normal.y>0?(t+=e.normal.y*this.min.y,i+=e.normal.y*this.max.y):(t+=e.normal.y*this.max.y,i+=e.normal.y*this.min.y),e.normal.z>0?(t+=e.normal.z*this.min.z,i+=e.normal.z*this.max.z):(t+=e.normal.z*this.max.z,i+=e.normal.z*this.min.z),t<=-e.constant&&i>=-e.constant}intersectsTriangle(e){if(this.isEmpty())return!1;this.getCenter(Bb),HM.subVectors(this.max,Bb),ly.subVectors(e.a,Bb),cy.subVectors(e.b,Bb),uy.subVectors(e.c,Bb),Jd.subVectors(cy,ly),Qd.subVectors(uy,cy),ng.subVectors(ly,uy);let t=[0,-Jd.z,Jd.y,0,-Qd.z,Qd.y,0,-ng.z,ng.y,Jd.z,0,-Jd.x,Qd.z,0,-Qd.x,ng.z,0,-ng.x,-Jd.y,Jd.x,0,-Qd.y,Qd.x,0,-ng.y,ng.x,0];return!(!hH(t,ly,cy,uy,HM)||(t=[1,0,0,0,1,0,0,0,1],!hH(t,ly,cy,uy,HM)))&&(UM.crossVectors(Jd,Qd),t=[UM.x,UM.y,UM.z],hH(t,ly,cy,uy,HM))}clampPoint(e,t){return t.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return ig.copy(e).clamp(this.min,this.max).sub(e).length()}getBoundingSphere(e){return this.getCenter(e.center),e.radius=.5*this.getSize(ig).length(),e}intersect(e){return this.min.max(e.min),this.max.min(e.max),this.isEmpty()&&this.makeEmpty(),this}union(e){return this.min.min(e.min),this.max.max(e.max),this}applyMatrix4(e){return this.isEmpty()||(op[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(e),op[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(e),op[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(e),op[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(e),op[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(e),op[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(e),op[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(e),op[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(e),this.setFromPoints(op)),this}translate(e){return this.min.add(e),this.max.add(e),this}equals(e){return e.min.equals(this.min)&&e.max.equals(this.max)}},op=[new A,new A,new A,new A,new A,new A,new A,new A],ig=new A,uH=new Mt,ly=new A,cy=new A,uy=new A,Jd=new A,Qd=new A,ng=new A,Bb=new A,HM=new A,UM=new A,sg=new A;function hH(e,t,i,r,n){for(let s=0,a=e.length-3;s<=a;s+=3){sg.fromArray(e,s);let a=n.x*Math.abs(sg.x)+n.y*Math.abs(sg.y)+n.z*Math.abs(sg.z),o=t.dot(sg),l=i.dot(sg),h=r.dot(sg);if(Math.max(-Math.max(o,l,h),Math.min(o,l,h))>a)return!1}return!0}var Xpt=new Mt,kb=new A,pH=new A,Wi=class{constructor(e=new A,t=-1){this.center=e,this.radius=t}set(e,t){return this.center.copy(e),this.radius=t,this}setFromPoints(e,t){let i=this.center;void 0!==t?i.copy(t):Xpt.setFromPoints(e).getCenter(i);let r=0;for(let t=0,n=e.length;tthis.radius*this.radius&&(t.sub(this.center).normalize(),t.multiplyScalar(this.radius).add(this.center)),t}getBoundingBox(e){return this.isEmpty()?(e.makeEmpty(),e):(e.set(this.center,this.center),e.expandByScalar(this.radius),e)}applyMatrix4(e){return this.center.applyMatrix4(e),this.radius=this.radius*e.getMaxScaleOnAxis(),this}translate(e){return this.center.add(e),this}expandByPoint(e){if(this.isEmpty())return this.center.copy(e),this.radius=0,this;kb.subVectors(e,this.center);let t=kb.lengthSq();if(t>this.radius*this.radius){let e=Math.sqrt(t),i=.5*(e-this.radius);this.center.addScaledVector(kb,i/e),this.radius+=i}return this}union(e){return e.isEmpty()?this:this.isEmpty()?(this.copy(e),this):(!0===this.center.equals(e.center)?this.radius=Math.max(this.radius,e.radius):(pH.subVectors(e.center,this.center).setLength(e.radius),this.expandByPoint(kb.copy(e.center).add(pH)),this.expandByPoint(kb.copy(e.center).sub(pH))),this)}equals(e){return e.center.equals(this.center)&&e.radius===this.radius}clone(){return(new this.constructor).copy(this)}},lp=new A,dH=new A,BM=new A,ef=new A,fH=new A,kM=new A,mH=new A,ko=class{constructor(e=new A,t=new A(0,0,-1)){this.origin=e,this.direction=t}set(e,t){return this.origin.copy(e),this.direction.copy(t),this}copy(e){return this.origin.copy(e.origin),this.direction.copy(e.direction),this}at(e,t){return t.copy(this.direction).multiplyScalar(e).add(this.origin)}lookAt(e){return this.direction.copy(e).sub(this.origin).normalize(),this}recast(e){return this.origin.copy(this.at(e,lp)),this}closestPointToPoint(e,t){t.subVectors(e,this.origin);let i=t.dot(this.direction);return i<0?t.copy(this.origin):t.copy(this.direction).multiplyScalar(i).add(this.origin)}distanceToPoint(e){return Math.sqrt(this.distanceSqToPoint(e))}distanceSqToPoint(e){let t=lp.subVectors(e,this.origin).dot(this.direction);return t<0?this.origin.distanceToSquared(e):(lp.copy(this.direction).multiplyScalar(t).add(this.origin),lp.distanceToSquared(e))}distanceSqToSegment(e,t,i,r){dH.copy(e).add(t).multiplyScalar(.5),BM.copy(t).sub(e).normalize(),ef.copy(this.origin).sub(dH);let n,s,a,o,l=.5*e.distanceTo(t),h=-this.direction.dot(BM),u=ef.dot(this.direction),c=-ef.dot(BM),p=ef.lengthSq(),d=Math.abs(1-h*h);if(d>0)if(n=h*c-u,s=h*u-c,o=l*d,n>=0)if(s>=-o)if(s<=o){let e=1/d;n*=e,s*=e,a=n*(n+h*s+2*u)+s*(h*n+s+2*c)+p}else s=l,n=Math.max(0,-(h*s+u)),a=-n*n+s*(s+2*c)+p;else s=-l,n=Math.max(0,-(h*s+u)),a=-n*n+s*(s+2*c)+p;else s<=-o?(n=Math.max(0,-(-h*l+u)),s=n>0?-l:Math.min(Math.max(-l,-c),l),a=-n*n+s*(s+2*c)+p):s<=o?(n=0,s=Math.min(Math.max(-l,-c),l),a=s*(s+2*c)+p):(n=Math.max(0,-(h*l+u)),s=n>0?l:Math.min(Math.max(-l,-c),l),a=-n*n+s*(s+2*c)+p);else s=h>0?-l:l,n=Math.max(0,-(h*s+u)),a=-n*n+s*(s+2*c)+p;return i&&i.copy(this.direction).multiplyScalar(n).add(this.origin),r&&r.copy(BM).multiplyScalar(s).add(dH),a}intersectSphere(e,t){lp.subVectors(e.center,this.origin);let i=lp.dot(this.direction),r=lp.dot(lp)-i*i,n=e.radius*e.radius;if(r>n)return null;let s=Math.sqrt(n-r),a=i-s,o=i+s;return a<0&&o<0?null:a<0?this.at(o,t):this.at(a,t)}intersectsSphere(e){return this.distanceSqToPoint(e.center)<=e.radius*e.radius}distanceToPlane(e){let t=e.normal.dot(this.direction);if(0===t)return 0===e.distanceToPoint(this.origin)?0:null;let i=-(this.origin.dot(e.normal)+e.constant)/t;return i>=0?i:null}intersectPlane(e,t){let i=this.distanceToPlane(e);return null===i?null:this.at(i,t)}intersectsPlane(e){let t=e.distanceToPoint(this.origin);return 0===t||e.normal.dot(this.direction)*t<0}intersectBox(e,t){let i,r,n,s,a,o,l=1/this.direction.x,h=1/this.direction.y,u=1/this.direction.z,c=this.origin;return l>=0?(i=(e.min.x-c.x)*l,r=(e.max.x-c.x)*l):(i=(e.max.x-c.x)*l,r=(e.min.x-c.x)*l),h>=0?(n=(e.min.y-c.y)*h,s=(e.max.y-c.y)*h):(n=(e.max.y-c.y)*h,s=(e.min.y-c.y)*h),i>s||n>r||((n>i||isNaN(i))&&(i=n),(s=0?(a=(e.min.z-c.z)*u,o=(e.max.z-c.z)*u):(a=(e.max.z-c.z)*u,o=(e.min.z-c.z)*u),i>o||a>r)||((a>i||i!=i)&&(i=a),(o=0?i:r,t)}intersectsBox(e){return null!==this.intersectBox(e,lp)}intersectTriangle(e,t,i,r,n){fH.subVectors(t,e),kM.subVectors(i,e),mH.crossVectors(fH,kM);let s,a=this.direction.dot(mH);if(a>0){if(r)return null;s=1}else{if(!(a<0))return null;s=-1,a=-a}ef.subVectors(this.origin,e);let o=s*this.direction.dot(kM.crossVectors(ef,kM));if(o<0)return null;let l=s*this.direction.dot(fH.cross(ef));if(l<0||o+l>a)return null;let h=-s*ef.dot(mH);return h<0?null:this.at(h/a,n)}applyMatrix4(e){return this.origin.applyMatrix4(e),this.direction.transformDirection(e),this}equals(e){return e.origin.equals(this.origin)&&e.direction.equals(this.direction)}clone(){return(new this.constructor).copy(this)}},Be=class{constructor(){Be.prototype.isMatrix4=!0,this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}set(e,t,i,r,n,s,a,o,l,h,u,c,p,d,f,m){let g=this.elements;return g[0]=e,g[4]=t,g[8]=i,g[12]=r,g[1]=n,g[5]=s,g[9]=a,g[13]=o,g[2]=l,g[6]=h,g[10]=u,g[14]=c,g[3]=p,g[7]=d,g[11]=f,g[15]=m,this}identity(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this}clone(){return(new Be).fromArray(this.elements)}copy(e){let t=this.elements,i=e.elements;return t[0]=i[0],t[1]=i[1],t[2]=i[2],t[3]=i[3],t[4]=i[4],t[5]=i[5],t[6]=i[6],t[7]=i[7],t[8]=i[8],t[9]=i[9],t[10]=i[10],t[11]=i[11],t[12]=i[12],t[13]=i[13],t[14]=i[14],t[15]=i[15],this}copyPosition(e){let t=this.elements,i=e.elements;return t[12]=i[12],t[13]=i[13],t[14]=i[14],this}setFromMatrix3(e){let t=e.elements;return this.set(t[0],t[3],t[6],0,t[1],t[4],t[7],0,t[2],t[5],t[8],0,0,0,0,1),this}extractBasis(e,t,i){return e.setFromMatrixColumn(this,0),t.setFromMatrixColumn(this,1),i.setFromMatrixColumn(this,2),this}makeBasis(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(e){let t=this.elements,i=e.elements,r=1/hy.setFromMatrixColumn(e,0).length(),n=1/hy.setFromMatrixColumn(e,1).length(),s=1/hy.setFromMatrixColumn(e,2).length();return t[0]=i[0]*r,t[1]=i[1]*r,t[2]=i[2]*r,t[3]=0,t[4]=i[4]*n,t[5]=i[5]*n,t[6]=i[6]*n,t[7]=0,t[8]=i[8]*s,t[9]=i[9]*s,t[10]=i[10]*s,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromEuler(e){let t=this.elements,i=e.x,r=e.y,n=e.z,s=Math.cos(i),a=Math.sin(i),o=Math.cos(r),l=Math.sin(r),h=Math.cos(n),u=Math.sin(n);if("XYZ"===e.order){let e=s*h,i=s*u,r=a*h,n=a*u;t[0]=o*h,t[4]=-o*u,t[8]=l,t[1]=i+r*l,t[5]=e-n*l,t[9]=-a*o,t[2]=n-e*l,t[6]=r+i*l,t[10]=s*o}else if("YXZ"===e.order){let e=o*h,i=o*u,r=l*h,n=l*u;t[0]=e+n*a,t[4]=r*a-i,t[8]=s*l,t[1]=s*u,t[5]=s*h,t[9]=-a,t[2]=i*a-r,t[6]=n+e*a,t[10]=s*o}else if("ZXY"===e.order){let e=o*h,i=o*u,r=l*h,n=l*u;t[0]=e-n*a,t[4]=-s*u,t[8]=r+i*a,t[1]=i+r*a,t[5]=s*h,t[9]=n-e*a,t[2]=-s*l,t[6]=a,t[10]=s*o}else if("ZYX"===e.order){let e=s*h,i=s*u,r=a*h,n=a*u;t[0]=o*h,t[4]=r*l-i,t[8]=e*l+n,t[1]=o*u,t[5]=n*l+e,t[9]=i*l-r,t[2]=-l,t[6]=a*o,t[10]=s*o}else if("YZX"===e.order){let e=s*o,i=s*l,r=a*o,n=a*l;t[0]=o*h,t[4]=n-e*u,t[8]=r*u+i,t[1]=u,t[5]=s*h,t[9]=-a*h,t[2]=-l*h,t[6]=i*u+r,t[10]=e-n*u}else if("XZY"===e.order){let e=s*o,i=s*l,r=a*o,n=a*l;t[0]=o*h,t[4]=-u,t[8]=l*h,t[1]=e*u+n,t[5]=s*h,t[9]=i*u-r,t[2]=r*u-i,t[6]=a*h,t[10]=n*u+e}return t[3]=0,t[7]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromQuaternion(e){return this.compose($pt,e,Kpt)}lookAt(e,t,i){let r=this.elements;return Lo.subVectors(e,t),0===Lo.lengthSq()&&(Lo.z=1),Lo.normalize(),tf.crossVectors(i,Lo),0===tf.lengthSq()&&(1===Math.abs(i.z)?Lo.x+=1e-4:Lo.z+=1e-4,Lo.normalize(),tf.crossVectors(i,Lo)),tf.normalize(),GM.crossVectors(Lo,tf),r[0]=tf.x,r[4]=GM.x,r[8]=Lo.x,r[1]=tf.y,r[5]=GM.y,r[9]=Lo.y,r[2]=tf.z,r[6]=GM.z,r[10]=Lo.z,this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){let i=e.elements,r=t.elements,n=this.elements,s=i[0],a=i[4],o=i[8],l=i[12],h=i[1],u=i[5],c=i[9],p=i[13],d=i[2],f=i[6],m=i[10],g=i[14],y=i[3],v=i[7],T=i[11],x=i[15],b=r[0],_=r[4],E=r[8],w=r[12],S=r[1],I=r[5],M=r[9],A=r[13],D=r[2],O=r[6],R=r[10],C=r[14],N=r[3],P=r[7],L=r[11],F=r[15];return n[0]=s*b+a*S+o*D+l*N,n[4]=s*_+a*I+o*O+l*P,n[8]=s*E+a*M+o*R+l*L,n[12]=s*w+a*A+o*C+l*F,n[1]=h*b+u*S+c*D+p*N,n[5]=h*_+u*I+c*O+p*P,n[9]=h*E+u*M+c*R+p*L,n[13]=h*w+u*A+c*C+p*F,n[2]=d*b+f*S+m*D+g*N,n[6]=d*_+f*I+m*O+g*P,n[10]=d*E+f*M+m*R+g*L,n[14]=d*w+f*A+m*C+g*F,n[3]=y*b+v*S+T*D+x*N,n[7]=y*_+v*I+T*O+x*P,n[11]=y*E+v*M+T*R+x*L,n[15]=y*w+v*A+T*C+x*F,this}multiplyScalar(e){let 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(){let e=this.elements,t=e[0],i=e[4],r=e[8],n=e[12],s=e[1],a=e[5],o=e[9],l=e[13],h=e[2],u=e[6],c=e[10],p=e[14];return e[3]*(+n*o*u-r*l*u-n*a*c+i*l*c+r*a*p-i*o*p)+e[7]*(+t*o*p-t*l*c+n*s*c-r*s*p+r*l*h-n*o*h)+e[11]*(+t*l*u-t*a*p-n*s*u+i*s*p+n*a*h-i*l*h)+e[15]*(-r*a*h-t*o*u+t*a*c+r*s*u-i*s*c+i*o*h)}transpose(){let 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}setPosition(e,t,i){let r=this.elements;return e.isVector3?(r[12]=e.x,r[13]=e.y,r[14]=e.z):(r[12]=e,r[13]=t,r[14]=i),this}invert(){let e=this.elements,t=e[0],i=e[1],r=e[2],n=e[3],s=e[4],a=e[5],o=e[6],l=e[7],h=e[8],u=e[9],c=e[10],p=e[11],d=e[12],f=e[13],m=e[14],g=e[15],y=u*m*l-f*c*l+f*o*p-a*m*p-u*o*g+a*c*g,v=d*c*l-h*m*l-d*o*p+s*m*p+h*o*g-s*c*g,T=h*f*l-d*u*l+d*a*p-s*f*p-h*a*g+s*u*g,x=d*u*o-h*f*o-d*a*c+s*f*c+h*a*m-s*u*m,b=t*y+i*v+r*T+n*x;if(0===b)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);let _=1/b;return e[0]=y*_,e[1]=(f*c*n-u*m*n-f*r*p+i*m*p+u*r*g-i*c*g)*_,e[2]=(a*m*n-f*o*n+f*r*l-i*m*l-a*r*g+i*o*g)*_,e[3]=(u*o*n-a*c*n-u*r*l+i*c*l+a*r*p-i*o*p)*_,e[4]=v*_,e[5]=(h*m*n-d*c*n+d*r*p-t*m*p-h*r*g+t*c*g)*_,e[6]=(d*o*n-s*m*n-d*r*l+t*m*l+s*r*g-t*o*g)*_,e[7]=(s*c*n-h*o*n+h*r*l-t*c*l-s*r*p+t*o*p)*_,e[8]=T*_,e[9]=(d*u*n-h*f*n-d*i*p+t*f*p+h*i*g-t*u*g)*_,e[10]=(s*f*n-d*a*n+d*i*l-t*f*l-s*i*g+t*a*g)*_,e[11]=(h*a*n-s*u*n-h*i*l+t*u*l+s*i*p-t*a*p)*_,e[12]=x*_,e[13]=(h*f*r-d*u*r+d*i*c-t*f*c-h*i*m+t*u*m)*_,e[14]=(d*a*r-s*f*r-d*i*o+t*f*o+s*i*m-t*a*m)*_,e[15]=(s*u*r-h*a*r+h*i*o-t*u*o-s*i*c+t*a*c)*_,this}scale(e){let t=this.elements,i=e.x,r=e.y,n=e.z;return t[0]*=i,t[4]*=r,t[8]*=n,t[1]*=i,t[5]*=r,t[9]*=n,t[2]*=i,t[6]*=r,t[10]*=n,t[3]*=i,t[7]*=r,t[11]*=n,this}getMaxScaleOnAxis(){let 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],r=e[8]*e[8]+e[9]*e[9]+e[10]*e[10];return Math.sqrt(Math.max(t,i,r))}makeTranslation(e,t,i){return this.set(1,0,0,e,0,1,0,t,0,0,1,i,0,0,0,1),this}makeRotationX(e){let 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(e){let 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(e){let 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(e,t){let i=Math.cos(t),r=Math.sin(t),n=1-i,s=e.x,a=e.y,o=e.z,l=n*s,h=n*a;return this.set(l*s+i,l*a-r*o,l*o+r*a,0,l*a+r*o,h*a+i,h*o-r*s,0,l*o-r*a,h*o+r*s,n*o*o+i,0,0,0,0,1),this}makeScale(e,t,i){return this.set(e,0,0,0,0,t,0,0,0,0,i,0,0,0,0,1),this}makeShear(e,t,i,r,n,s){return this.set(1,i,n,0,e,1,s,0,t,r,1,0,0,0,0,1),this}compose(e,t,i){let r=this.elements,n=t._x,s=t._y,a=t._z,o=t._w,l=n+n,h=s+s,u=a+a,c=n*l,p=n*h,d=n*u,f=s*h,m=s*u,g=a*u,y=o*l,v=o*h,T=o*u,x=i.x,b=i.y,_=i.z;return r[0]=(1-(f+g))*x,r[1]=(p+T)*x,r[2]=(d-v)*x,r[3]=0,r[4]=(p-T)*b,r[5]=(1-(c+g))*b,r[6]=(m+y)*b,r[7]=0,r[8]=(d+v)*_,r[9]=(m-y)*_,r[10]=(1-(c+f))*_,r[11]=0,r[12]=e.x,r[13]=e.y,r[14]=e.z,r[15]=1,this}decompose(e,t,i){let r=this.elements,n=hy.set(r[0],r[1],r[2]).length(),s=hy.set(r[4],r[5],r[6]).length(),a=hy.set(r[8],r[9],r[10]).length();this.determinant()<0&&(n=-n),e.x=r[12],e.y=r[13],e.z=r[14],_c.copy(this);let o=1/n,l=1/s,h=1/a;return _c.elements[0]*=o,_c.elements[1]*=o,_c.elements[2]*=o,_c.elements[4]*=l,_c.elements[5]*=l,_c.elements[6]*=l,_c.elements[8]*=h,_c.elements[9]*=h,_c.elements[10]*=h,t.setFromRotationMatrix(_c),i.x=n,i.y=s,i.z=a,this}makePerspective(e,t,i,r,n,s){let a=this.elements,o=2*n/(t-e),l=2*n/(i-r),h=(t+e)/(t-e),u=(i+r)/(i-r),c=-(s+n)/(s-n),p=-2*s*n/(s-n);return a[0]=o,a[4]=0,a[8]=h,a[12]=0,a[1]=0,a[5]=l,a[9]=u,a[13]=0,a[2]=0,a[6]=0,a[10]=c,a[14]=p,a[3]=0,a[7]=0,a[11]=-1,a[15]=0,this}makeOrthographic(e,t,i,r,n,s){let a=this.elements,o=1/(t-e),l=1/(i-r),h=1/(s-n),u=(t+e)*o,c=(i+r)*l,p=(s+n)*h;return a[0]=2*o,a[4]=0,a[8]=0,a[12]=-u,a[1]=0,a[5]=2*l,a[9]=0,a[13]=-c,a[2]=0,a[6]=0,a[10]=-2*h,a[14]=-p,a[3]=0,a[7]=0,a[11]=0,a[15]=1,this}equals(e){let t=this.elements,i=e.elements;for(let e=0;e<16;e++)if(t[e]!==i[e])return!1;return!0}fromArray(e,t=0){for(let i=0;i<16;i++)this.elements[i]=e[i+t];return this}toArray(e=[],t=0){let 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}},hy=new A,_c=new Be,$pt=new A(0,0,0),Kpt=new A(1,1,1),tf=new A,GM=new A,Lo=new A,uce=new Be,hce=new Hr,xr=class{constructor(e=0,t=0,i=0,r=xr.DEFAULT_ORDER){this.isEuler=!0,this._x=e,this._y=t,this._z=i,this._order=r}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(e,t,i,r=this._order){return this._x=e,this._y=t,this._z=i,this._order=r,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._order)}copy(e){return this._x=e._x,this._y=e._y,this._z=e._z,this._order=e._order,this._onChangeCallback(),this}setFromRotationMatrix(e,t=this._order,i=!0){let r=e.elements,n=r[0],s=r[4],a=r[8],o=r[1],l=r[5],h=r[9],u=r[2],c=r[6],p=r[10];switch(t){case"XYZ":this._y=Math.asin(Qn(a,-1,1)),Math.abs(a)<.9999999?(this._x=Math.atan2(-h,p),this._z=Math.atan2(-s,n)):(this._x=Math.atan2(c,l),this._z=0);break;case"YXZ":this._x=Math.asin(-Qn(h,-1,1)),Math.abs(h)<.9999999?(this._y=Math.atan2(a,p),this._z=Math.atan2(o,l)):(this._y=Math.atan2(-u,n),this._z=0);break;case"ZXY":this._x=Math.asin(Qn(c,-1,1)),Math.abs(c)<.9999999?(this._y=Math.atan2(-u,p),this._z=Math.atan2(-s,l)):(this._y=0,this._z=Math.atan2(o,n));break;case"ZYX":this._y=Math.asin(-Qn(u,-1,1)),Math.abs(u)<.9999999?(this._x=Math.atan2(c,p),this._z=Math.atan2(o,n)):(this._x=0,this._z=Math.atan2(-s,l));break;case"YZX":this._z=Math.asin(Qn(o,-1,1)),Math.abs(o)<.9999999?(this._x=Math.atan2(-h,l),this._y=Math.atan2(-u,n)):(this._x=0,this._y=Math.atan2(a,p));break;case"XZY":this._z=Math.asin(-Qn(s,-1,1)),Math.abs(s)<.9999999?(this._x=Math.atan2(c,l),this._y=Math.atan2(a,n)):(this._x=Math.atan2(-h,p),this._y=0);break;default:console.warn("THREE.Euler: .setFromRotationMatrix() encountered an unknown order: "+t)}return this._order=t,!0===i&&this._onChangeCallback(),this}setFromQuaternion(e,t,i){return uce.makeRotationFromQuaternion(e),this.setFromRotationMatrix(uce,t,i)}setFromVector3(e,t=this._order){return this.set(e.x,e.y,e.z,t)}reorder(e){return hce.setFromEuler(this),this.setFromQuaternion(hce,e)}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._order===this._order}fromArray(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(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._order,e}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._order}};xr.DEFAULT_ORDER="XYZ";var Oy=class{constructor(){this.mask=1}set(e){this.mask=(1<>>0}enable(e){this.mask|=1<1){for(let e=0;e1){for(let e=0;e0&&(i=i.concat(n))}return i}getWorldPosition(e){return this.updateWorldMatrix(!0,!1),e.setFromMatrixPosition(this.matrixWorld)}getWorldQuaternion(e){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(Gb,e,Jpt),e}getWorldScale(e){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(Gb,Qpt,e),e}getWorldDirection(e){this.updateWorldMatrix(!0,!1);let t=this.matrixWorld.elements;return e.set(t[8],t[9],t[10]).normalize()}raycast(){}traverse(e){e(this);let t=this.children;for(let i=0,r=t.length;i0&&(r.userData=this.userData),r.layers=this.layers.mask,r.matrix=this.matrix.toArray(),!1===this.matrixAutoUpdate&&(r.matrixAutoUpdate=!1),this.isInstancedMesh&&(r.type="InstancedMesh",r.count=this.count,r.instanceMatrix=this.instanceMatrix.toJSON(),null!==this.instanceColor&&(r.instanceColor=this.instanceColor.toJSON())),this.isScene)this.background&&(this.background.isColor?r.background=this.background.toJSON():this.background.isTexture&&(r.background=this.background.toJSON(e).uuid)),this.environment&&this.environment.isTexture&&!0!==this.environment.isRenderTargetTexture&&(r.environment=this.environment.toJSON(e).uuid);else if(this.isMesh||this.isLine||this.isPoints){r.geometry=n(e.geometries,this.geometry);let t=this.geometry.parameters;if(void 0!==t&&void 0!==t.shapes){let i=t.shapes;if(Array.isArray(i))for(let t=0,r=i.length;t0){r.children=[];for(let t=0;t0){r.animations=[];for(let t=0;t0&&(i.geometries=t),r.length>0&&(i.materials=r),n.length>0&&(i.textures=n),a.length>0&&(i.images=a),o.length>0&&(i.shapes=o),l.length>0&&(i.skeletons=l),h.length>0&&(i.animations=h),u.length>0&&(i.nodes=u)}return i.object=r,i;function s(e){let t=[];for(let i in e){let r=e[i];delete r.metadata,t.push(r)}return t}}clone(e){return(new this.constructor).copy(this,e)}copy(e,t=!0){if(this.name=e.name,this.up.copy(e.up),this.position.copy(e.position),this.rotation.order=e.rotation.order,this.quaternion.copy(e.quaternion),this.scale.copy(e.scale),this.matrix.copy(e.matrix),this.matrixWorld.copy(e.matrixWorld),this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrixWorldNeedsUpdate=e.matrixWorldNeedsUpdate,this.matrixWorldAutoUpdate=e.matrixWorldAutoUpdate,this.layers.mask=e.layers.mask,this.visible=e.visible,this.castShadow=e.castShadow,this.receiveShadow=e.receiveShadow,this.frustumCulled=e.frustumCulled,this.renderOrder=e.renderOrder,this.userData=JSON.parse(JSON.stringify(e.userData)),!0===t)for(let t=0;t0?r.multiplyScalar(1/Math.sqrt(n)):r.set(0,0,0)}static getBarycoord(e,t,i,r,n){Sc.subVectors(r,t),up.subVectors(i,t),gH.subVectors(e,t);let s=Sc.dot(Sc),a=Sc.dot(up),o=Sc.dot(gH),l=up.dot(up),h=up.dot(gH),u=s*l-a*a;if(0===u)return n.set(-2,-1,-1);let c=1/u,p=(l*o-a*h)*c,d=(s*h-a*o)*c;return n.set(1-p-d,d,p)}static containsPoint(e,t,i,r){return this.getBarycoord(e,t,i,r,hp),hp.x>=0&&hp.y>=0&&hp.x+hp.y<=1}static getUV(e,t,i,r,n,s,a,o){return this.getBarycoord(e,t,i,r,hp),o.set(0,0),o.addScaledVector(n,hp.x),o.addScaledVector(s,hp.y),o.addScaledVector(a,hp.z),o}static isFrontFacing(e,t,i,r){return Sc.subVectors(i,t),up.subVectors(e,t),Sc.cross(up).dot(r)<0}set(e,t,i){return this.a.copy(e),this.b.copy(t),this.c.copy(i),this}setFromPointsAndIndices(e,t,i,r){return this.a.copy(e[t]),this.b.copy(e[i]),this.c.copy(e[r]),this}setFromAttributeAndIndices(e,t,i,r){return this.a.fromBufferAttribute(e,t),this.b.fromBufferAttribute(e,i),this.c.fromBufferAttribute(e,r),this}clone(){return(new this.constructor).copy(this)}copy(e){return this.a.copy(e.a),this.b.copy(e.b),this.c.copy(e.c),this}getArea(){return Sc.subVectors(this.c,this.b),up.subVectors(this.a,this.b),.5*Sc.cross(up).length()}getMidpoint(e){return e.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}getNormal(e){return hn.getNormal(this.a,this.b,this.c,e)}getPlane(e){return e.setFromCoplanarPoints(this.a,this.b,this.c)}getBarycoord(e,t){return hn.getBarycoord(e,this.a,this.b,this.c,t)}getUV(e,t,i,r,n){return hn.getUV(e,this.a,this.b,this.c,t,i,r,n)}containsPoint(e){return hn.containsPoint(e,this.a,this.b,this.c)}isFrontFacing(e){return hn.isFrontFacing(this.a,this.b,this.c,e)}intersectsBox(e){return e.intersectsTriangle(this)}closestPointToPoint(e,t){let i,r,n=this.a,s=this.b,a=this.c;dy.subVectors(s,n),fy.subVectors(a,n),vH.subVectors(e,n);let o=dy.dot(vH),l=fy.dot(vH);if(o<=0&&l<=0)return t.copy(n);yH.subVectors(e,s);let h=dy.dot(yH),u=fy.dot(yH);if(h>=0&&u<=h)return t.copy(s);let c=o*u-h*l;if(c<=0&&o>=0&&h<=0)return i=o/(o-h),t.copy(n).addScaledVector(dy,i);TH.subVectors(e,a);let p=dy.dot(TH),d=fy.dot(TH);if(d>=0&&p<=d)return t.copy(a);let f=p*l-o*d;if(f<=0&&l>=0&&d<=0)return r=l/(l-d),t.copy(n).addScaledVector(fy,r);let m=h*d-p*u;if(m<=0&&u-h>=0&&p-d>=0)return vce.subVectors(a,s),r=(u-h)/(u-h+(p-d)),t.copy(s).addScaledVector(vce,r);let g=1/(m+f+c);return i=f*g,r=c*g,t.copy(n).addScaledVector(dy,i).addScaledVector(fy,r)}equals(e){return e.a.equals(this.a)&&e.b.equals(this.b)&&e.c.equals(this.c)}},tdt=0,jr=class extends Bo{constructor(){super(),this.isMaterial=!0,Object.defineProperty(this,"id",{value:tdt++}),this.uuid=Ho(),this.name="",this.type="Material",this.blending=gg,this.side=tn,this.vertexColors=!1,this.opacity=1,this.transparent=!1,this.blendSrc=Dx,this.blendDst=FU,this.blendEquation=Sa,this.blendSrcAlpha=null,this.blendDstAlpha=null,this.blendEquationAlpha=null,this.depthFunc=MD,this.depthTest=!0,this.depthWrite=!0,this.stencilWriteMask=255,this.stencilFunc=mhe,this.stencilRef=0,this.stencilFuncMask=255,this.stencilFail=wD,this.stencilZFail=wD,this.stencilZPass=wD,this.stencilWrite=!1,this.clippingPlanes=null,this.clipIntersection=!1,this.clipShadows=!1,this.shadowSide=null,this.colorWrite=!0,this.precision=null,this.polygonOffset=!1,this.polygonOffsetFactor=0,this.polygonOffsetUnits=0,this.dithering=!1,this.alphaToCoverage=!1,this.premultipliedAlpha=!1,this.forceSinglePass=!1,this.visible=!0,this.toneMapped=!0,this.userData={},this.version=0,this._alphaTest=0}get alphaTest(){return this._alphaTest}set alphaTest(e){this._alphaTest>0!=e>0&&this.version++,this._alphaTest=e}onBuild(){}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(e){if(void 0!==e)for(let t in e){let i=e[t];if(void 0===i){console.warn("THREE.Material: '"+t+"' parameter is undefined.");continue}let r=this[t];void 0!==r?r&&r.isColor?r.set(i):r&&r.isVector3&&i&&i.isVector3?r.copy(i):this[t]=i:console.warn("THREE."+this.type+": '"+t+"' is not a property of this material.")}}toJSON(e){let t=void 0===e||"string"==typeof e;t&&(e={textures:{},images:{}});let i={metadata:{version:4.5,type:"Material",generator:"Material.toJSON"}};function r(e){let t=[];for(let i in e){let r=e[i];delete r.metadata,t.push(r)}return t}if(i.uuid=this.uuid,i.type=this.type,""!==this.name&&(i.name=this.name),this.color&&this.color.isColor&&(i.color=this.color.getHex()),void 0!==this.roughness&&(i.roughness=this.roughness),void 0!==this.metalness&&(i.metalness=this.metalness),void 0!==this.sheen&&(i.sheen=this.sheen),this.sheenColor&&this.sheenColor.isColor&&(i.sheenColor=this.sheenColor.getHex()),void 0!==this.sheenRoughness&&(i.sheenRoughness=this.sheenRoughness),this.emissive&&this.emissive.isColor&&(i.emissive=this.emissive.getHex()),this.emissiveIntensity&&1!==this.emissiveIntensity&&(i.emissiveIntensity=this.emissiveIntensity),this.specular&&this.specular.isColor&&(i.specular=this.specular.getHex()),void 0!==this.specularIntensity&&(i.specularIntensity=this.specularIntensity),this.specularColor&&this.specularColor.isColor&&(i.specularColor=this.specularColor.getHex()),void 0!==this.shininess&&(i.shininess=this.shininess),void 0!==this.clearcoat&&(i.clearcoat=this.clearcoat),void 0!==this.clearcoatRoughness&&(i.clearcoatRoughness=this.clearcoatRoughness),this.clearcoatMap&&this.clearcoatMap.isTexture&&(i.clearcoatMap=this.clearcoatMap.toJSON(e).uuid),this.clearcoatRoughnessMap&&this.clearcoatRoughnessMap.isTexture&&(i.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(e).uuid),this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture&&(i.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(e).uuid,i.clearcoatNormalScale=this.clearcoatNormalScale.toArray()),void 0!==this.iridescence&&(i.iridescence=this.iridescence),void 0!==this.iridescenceIOR&&(i.iridescenceIOR=this.iridescenceIOR),void 0!==this.iridescenceThicknessRange&&(i.iridescenceThicknessRange=this.iridescenceThicknessRange),this.iridescenceMap&&this.iridescenceMap.isTexture&&(i.iridescenceMap=this.iridescenceMap.toJSON(e).uuid),this.iridescenceThicknessMap&&this.iridescenceThicknessMap.isTexture&&(i.iridescenceThicknessMap=this.iridescenceThicknessMap.toJSON(e).uuid),this.map&&this.map.isTexture&&(i.map=this.map.toJSON(e).uuid),this.matcap&&this.matcap.isTexture&&(i.matcap=this.matcap.toJSON(e).uuid),this.alphaMap&&this.alphaMap.isTexture&&(i.alphaMap=this.alphaMap.toJSON(e).uuid),this.lightMap&&this.lightMap.isTexture&&(i.lightMap=this.lightMap.toJSON(e).uuid,i.lightMapIntensity=this.lightMapIntensity),this.aoMap&&this.aoMap.isTexture&&(i.aoMap=this.aoMap.toJSON(e).uuid,i.aoMapIntensity=this.aoMapIntensity),this.bumpMap&&this.bumpMap.isTexture&&(i.bumpMap=this.bumpMap.toJSON(e).uuid,i.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(i.normalMap=this.normalMap.toJSON(e).uuid,i.normalMapType=this.normalMapType,i.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(i.displacementMap=this.displacementMap.toJSON(e).uuid,i.displacementScale=this.displacementScale,i.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(i.roughnessMap=this.roughnessMap.toJSON(e).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(i.metalnessMap=this.metalnessMap.toJSON(e).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(i.emissiveMap=this.emissiveMap.toJSON(e).uuid),this.specularMap&&this.specularMap.isTexture&&(i.specularMap=this.specularMap.toJSON(e).uuid),this.specularIntensityMap&&this.specularIntensityMap.isTexture&&(i.specularIntensityMap=this.specularIntensityMap.toJSON(e).uuid),this.specularColorMap&&this.specularColorMap.isTexture&&(i.specularColorMap=this.specularColorMap.toJSON(e).uuid),this.envMap&&this.envMap.isTexture&&(i.envMap=this.envMap.toJSON(e).uuid,void 0!==this.combine&&(i.combine=this.combine)),void 0!==this.envMapIntensity&&(i.envMapIntensity=this.envMapIntensity),void 0!==this.reflectivity&&(i.reflectivity=this.reflectivity),void 0!==this.refractionRatio&&(i.refractionRatio=this.refractionRatio),this.gradientMap&&this.gradientMap.isTexture&&(i.gradientMap=this.gradientMap.toJSON(e).uuid),void 0!==this.transmission&&(i.transmission=this.transmission),this.transmissionMap&&this.transmissionMap.isTexture&&(i.transmissionMap=this.transmissionMap.toJSON(e).uuid),void 0!==this.thickness&&(i.thickness=this.thickness),this.thicknessMap&&this.thicknessMap.isTexture&&(i.thicknessMap=this.thicknessMap.toJSON(e).uuid),void 0!==this.attenuationDistance&&this.attenuationDistance!==1/0&&(i.attenuationDistance=this.attenuationDistance),void 0!==this.attenuationColor&&(i.attenuationColor=this.attenuationColor.getHex()),void 0!==this.size&&(i.size=this.size),null!==this.shadowSide&&(i.shadowSide=this.shadowSide),void 0!==this.sizeAttenuation&&(i.sizeAttenuation=this.sizeAttenuation),this.blending!==gg&&(i.blending=this.blending),this.side!==tn&&(i.side=this.side),this.vertexColors&&(i.vertexColors=!0),this.opacity<1&&(i.opacity=this.opacity),!0===this.transparent&&(i.transparent=this.transparent),i.depthFunc=this.depthFunc,i.depthTest=this.depthTest,i.depthWrite=this.depthWrite,i.colorWrite=this.colorWrite,i.stencilWrite=this.stencilWrite,i.stencilWriteMask=this.stencilWriteMask,i.stencilFunc=this.stencilFunc,i.stencilRef=this.stencilRef,i.stencilFuncMask=this.stencilFuncMask,i.stencilFail=this.stencilFail,i.stencilZFail=this.stencilZFail,i.stencilZPass=this.stencilZPass,void 0!==this.rotation&&0!==this.rotation&&(i.rotation=this.rotation),!0===this.polygonOffset&&(i.polygonOffset=!0),0!==this.polygonOffsetFactor&&(i.polygonOffsetFactor=this.polygonOffsetFactor),0!==this.polygonOffsetUnits&&(i.polygonOffsetUnits=this.polygonOffsetUnits),void 0!==this.linewidth&&1!==this.linewidth&&(i.linewidth=this.linewidth),void 0!==this.dashSize&&(i.dashSize=this.dashSize),void 0!==this.gapSize&&(i.gapSize=this.gapSize),void 0!==this.scale&&(i.scale=this.scale),!0===this.dithering&&(i.dithering=!0),this.alphaTest>0&&(i.alphaTest=this.alphaTest),!0===this.alphaToCoverage&&(i.alphaToCoverage=this.alphaToCoverage),!0===this.premultipliedAlpha&&(i.premultipliedAlpha=this.premultipliedAlpha),!0===this.forceSinglePass&&(i.forceSinglePass=this.forceSinglePass),!0===this.wireframe&&(i.wireframe=this.wireframe),this.wireframeLinewidth>1&&(i.wireframeLinewidth=this.wireframeLinewidth),"round"!==this.wireframeLinecap&&(i.wireframeLinecap=this.wireframeLinecap),"round"!==this.wireframeLinejoin&&(i.wireframeLinejoin=this.wireframeLinejoin),!0===this.flatShading&&(i.flatShading=this.flatShading),!1===this.visible&&(i.visible=!1),!1===this.toneMapped&&(i.toneMapped=!1),!1===this.fog&&(i.fog=!1),Object.keys(this.userData).length>0&&(i.userData=this.userData),t){let t=r(e.textures),n=r(e.images);t.length>0&&(i.textures=t),n.length>0&&(i.images=n)}return i}clone(){return(new this.constructor).copy(this)}copy(e){this.name=e.name,this.blending=e.blending,this.side=e.side,this.vertexColors=e.vertexColors,this.opacity=e.opacity,this.transparent=e.transparent,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.depthFunc=e.depthFunc,this.depthTest=e.depthTest,this.depthWrite=e.depthWrite,this.stencilWriteMask=e.stencilWriteMask,this.stencilFunc=e.stencilFunc,this.stencilRef=e.stencilRef,this.stencilFuncMask=e.stencilFuncMask,this.stencilFail=e.stencilFail,this.stencilZFail=e.stencilZFail,this.stencilZPass=e.stencilZPass,this.stencilWrite=e.stencilWrite;let t=e.clippingPlanes,i=null;if(null!==t){let e=t.length;i=new Array(e);for(let r=0;r!==e;++r)i[r]=t[r].clone()}return this.clippingPlanes=i,this.clipIntersection=e.clipIntersection,this.clipShadows=e.clipShadows,this.shadowSide=e.shadowSide,this.colorWrite=e.colorWrite,this.precision=e.precision,this.polygonOffset=e.polygonOffset,this.polygonOffsetFactor=e.polygonOffsetFactor,this.polygonOffsetUnits=e.polygonOffsetUnits,this.dithering=e.dithering,this.alphaTest=e.alphaTest,this.alphaToCoverage=e.alphaToCoverage,this.premultipliedAlpha=e.premultipliedAlpha,this.forceSinglePass=e.forceSinglePass,this.visible=e.visible,this.toneMapped=e.toneMapped,this.userData=JSON.parse(JSON.stringify(e.userData)),this}dispose(){this.dispatchEvent({type:"dispose"})}set needsUpdate(e){!0===e&&this.version++}},lr=class extends jr{constructor(e){super(),this.isMeshBasicMaterial=!0,this.type="MeshBasicMaterial",this.color=new je(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.combine=Cx,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.fog=e.fog,this}},hs=new A,zM=new le,Wt=class{constructor(e,t,i=!1){if(Array.isArray(e))throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.isBufferAttribute=!0,this.name="",this.array=e,this.itemSize=t,this.count=void 0!==e?e.length/t:0,this.normalized=i,this.usage=nx,this.updateRange={offset:0,count:-1},this.version=0}onUploadCallback(){}set needsUpdate(e){!0===e&&this.version++}setUsage(e){return this.usage=e,this}copy(e){return this.name=e.name,this.array=new e.array.constructor(e.array),this.itemSize=e.itemSize,this.count=e.count,this.normalized=e.normalized,this.usage=e.usage,this}copyAt(e,t,i){e*=this.itemSize,i*=t.itemSize;for(let r=0,n=this.itemSize;r0&&(e.userData=this.userData),void 0!==this.parameters){let t=this.parameters;for(let i in t)void 0!==t[i]&&(e[i]=t[i]);return e}e.data={attributes:{}};let t=this.index;null!==t&&(e.data.index={type:t.array.constructor.name,array:Array.prototype.slice.call(t.array)});let i=this.attributes;for(let t in i){let r=i[t];e.data.attributes[t]=r.toJSON(e.data)}let r={},n=!1;for(let t in this.morphAttributes){let i=this.morphAttributes[t],s=[];for(let t=0,r=i.length;t0&&(r[t]=s,n=!0)}n&&(e.data.morphAttributes=r,e.data.morphTargetsRelative=this.morphTargetsRelative);let s=this.groups;s.length>0&&(e.data.groups=JSON.parse(JSON.stringify(s)));let a=this.boundingSphere;return null!==a&&(e.data.boundingSphere={center:a.center.toArray(),radius:a.radius}),e}clone(){return(new this.constructor).copy(this)}copy(e){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;let t={};this.name=e.name;let i=e.index;null!==i&&this.setIndex(i.clone(t));let r=e.attributes;for(let e in r){let i=r[e];this.setAttribute(e,i.clone(t))}let n=e.morphAttributes;for(let e in n){let i=[],r=n[e];for(let e=0,n=r.length;e0){let i=e[t[0]];if(void 0!==i){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let e=0,t=i.length;ei.far?null:{distance:h,point:XM.clone(),object:e}}function $M(e,t,i,r,n,s,a,o,l){e.getVertexPosition(a,zb),e.getVertexPosition(o,jb),e.getVertexPosition(l,Wb);let h=idt(e,t,i,r,zb,jb,Wb,IH);if(h){n&&(WM.fromBufferAttribute(n,a),qM.fromBufferAttribute(n,o),YM.fromBufferAttribute(n,l),h.uv=hn.getUV(IH,zb,jb,Wb,WM,qM,YM,new le)),s&&(WM.fromBufferAttribute(s,a),qM.fromBufferAttribute(s,o),YM.fromBufferAttribute(s,l),h.uv2=hn.getUV(IH,zb,jb,Wb,WM,qM,YM,new le));let e={a:a,b:o,c:l,normal:new A,materialIndex:0};hn.getNormal(zb,jb,Wb,e.normal),h.face=e}return h}var eo=class extends lt{constructor(e=1,t=1,i=1,r=1,n=1,s=1){super(),this.type="BoxGeometry",this.parameters={width:e,height:t,depth:i,widthSegments:r,heightSegments:n,depthSegments:s};let a=this;r=Math.floor(r),n=Math.floor(n),s=Math.floor(s);let o=[],l=[],h=[],u=[],c=0,p=0;function d(e,t,i,r,n,s,d,f,m,g,y){let v=s/m,T=d/g,x=s/2,b=d/2,_=f/2,E=m+1,w=g+1,S=0,I=0,M=new A;for(let s=0;s0?1:-1,h.push(M.x,M.y,M.z),u.push(o/m),u.push(1-s/g),S+=1}}for(let e=0;e0&&(t.defines=this.defines),t.vertexShader=this.vertexShader,t.fragmentShader=this.fragmentShader;let i={};for(let e in this.extensions)!0===this.extensions[e]&&(i[e]=!0);return Object.keys(i).length>0&&(t.extensions=i),t}},bp=class extends sr{constructor(){super(),this.isCamera=!0,this.type="Camera",this.matrixWorldInverse=new Be,this.projectionMatrix=new Be,this.projectionMatrixInverse=new Be}copy(e,t){return super.copy(e,t),this.matrixWorldInverse.copy(e.matrixWorldInverse),this.projectionMatrix.copy(e.projectionMatrix),this.projectionMatrixInverse.copy(e.projectionMatrixInverse),this}getWorldDirection(e){this.updateWorldMatrix(!0,!1);let t=this.matrixWorld.elements;return e.set(-t[8],-t[9],-t[10]).normalize()}updateMatrixWorld(e){super.updateMatrixWorld(e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(e,t){super.updateWorldMatrix(e,t),this.matrixWorldInverse.copy(this.matrixWorld).invert()}clone(){return(new this.constructor).copy(this)}},Vr=class extends bp{constructor(e=50,t=1,i=.1,r=2e3){super(),this.isPerspectiveCamera=!0,this.type="PerspectiveCamera",this.fov=e,this.zoom=1,this.near=i,this.far=r,this.focus=10,this.aspect=t,this.view=null,this.filmGauge=35,this.filmOffset=0,this.updateProjectionMatrix()}copy(e,t){return super.copy(e,t),this.fov=e.fov,this.zoom=e.zoom,this.near=e.near,this.far=e.far,this.focus=e.focus,this.aspect=e.aspect,this.view=null===e.view?null:Object.assign({},e.view),this.filmGauge=e.filmGauge,this.filmOffset=e.filmOffset,this}setFocalLength(e){let t=.5*this.getFilmHeight()/e;this.fov=2*sx*Math.atan(t),this.updateProjectionMatrix()}getFocalLength(){let e=Math.tan(.5*vg*this.fov);return.5*this.getFilmHeight()/e}getEffectiveFOV(){return 2*sx*Math.atan(Math.tan(.5*vg*this.fov)/this.zoom)}getFilmWidth(){return this.filmGauge*Math.min(this.aspect,1)}getFilmHeight(){return this.filmGauge/Math.max(this.aspect,1)}setViewOffset(e,t,i,r,n,s){this.aspect=e/t,null===this.view&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=e,this.view.fullHeight=t,this.view.offsetX=i,this.view.offsetY=r,this.view.width=n,this.view.height=s,this.updateProjectionMatrix()}clearViewOffset(){null!==this.view&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){let e=this.near,t=e*Math.tan(.5*vg*this.fov)/this.zoom,i=2*t,r=this.aspect*i,n=-.5*r,s=this.view;if(null!==this.view&&this.view.enabled){let e=s.fullWidth,a=s.fullHeight;n+=s.offsetX*r/e,t-=s.offsetY*i/a,r*=s.width/e,i*=s.height/a}let a=this.filmOffset;0!==a&&(n+=e*a/this.getFilmWidth()),this.projectionMatrix.makePerspective(n,n+r,t,t-i,e,this.far),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(e){let t=super.toJSON(e);return t.object.fov=this.fov,t.object.zoom=this.zoom,t.object.near=this.near,t.object.far=this.far,t.object.focus=this.focus,t.object.aspect=this.aspect,null!==this.view&&(t.object.view=Object.assign({},this.view)),t.object.filmGauge=this.filmGauge,t.object.filmOffset=this.filmOffset,t}},vy=-90,yy=1,AD=class extends sr{constructor(e,t,i){super(),this.type="CubeCamera",this.renderTarget=i;let r=new Vr(vy,yy,e,t);r.layers=this.layers,r.up.set(0,1,0),r.lookAt(1,0,0),this.add(r);let n=new Vr(vy,yy,e,t);n.layers=this.layers,n.up.set(0,1,0),n.lookAt(-1,0,0),this.add(n);let s=new Vr(vy,yy,e,t);s.layers=this.layers,s.up.set(0,0,-1),s.lookAt(0,1,0),this.add(s);let a=new Vr(vy,yy,e,t);a.layers=this.layers,a.up.set(0,0,1),a.lookAt(0,-1,0),this.add(a);let o=new Vr(vy,yy,e,t);o.layers=this.layers,o.up.set(0,1,0),o.lookAt(0,0,1),this.add(o);let l=new Vr(vy,yy,e,t);l.layers=this.layers,l.up.set(0,1,0),l.lookAt(0,0,-1),this.add(l)}update(e,t){null===this.parent&&this.updateMatrixWorld();let i=this.renderTarget,[r,n,s,a,o,l]=this.children,h=e.getRenderTarget(),u=e.toneMapping,c=e.xr.enabled;e.toneMapping=Lu,e.xr.enabled=!1;let p=i.texture.generateMipmaps;i.texture.generateMipmaps=!1,e.setRenderTarget(i,0),e.render(t,r),e.setRenderTarget(i,1),e.render(t,n),e.setRenderTarget(i,2),e.render(t,s),e.setRenderTarget(i,3),e.render(t,a),e.setRenderTarget(i,4),e.render(t,o),i.texture.generateMipmaps=p,e.setRenderTarget(i,5),e.render(t,l),e.setRenderTarget(h),e.toneMapping=u,e.xr.enabled=c,i.texture.needsPMREMUpdate=!0}},bg=class extends Bi{constructor(e,t,i,r,n,s,a,o,l,h){super(e=void 0!==e?e:[],t=void 0!==t?t:af,i,r,n,s,a,o,l,h),this.isCubeTexture=!0,this.flipY=!1}get images(){return this.image}set images(e){this.image=e}},OD=class extends zr{constructor(e=1,t={}){super(e,e,t),this.isWebGLCubeRenderTarget=!0;let i={width:e,height:e,depth:1},r=[i,i,i,i,i,i];this.texture=new bg(r,t.mapping,t.wrapS,t.wrapT,t.magFilter,t.minFilter,t.format,t.type,t.anisotropy,t.encoding),this.texture.isRenderTargetTexture=!0,this.texture.generateMipmaps=void 0!==t.generateMipmaps&&t.generateMipmaps,this.texture.minFilter=void 0!==t.minFilter?t.minFilter:oi}fromEquirectangularTexture(e,t){this.texture.type=t.type,this.texture.encoding=t.encoding,this.texture.generateMipmaps=t.generateMipmaps,this.texture.minFilter=t.minFilter,this.texture.magFilter=t.magFilter;let i={uniforms:{tEquirect:{value:null}},vertexShader:"\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\tvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\n\t\t\t\t\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n\n\t\t\t\t}\n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvWorldDirection = transformDirection( position, modelMatrix );\n\n\t\t\t\t\t#include \n\t\t\t\t\t#include \n\n\t\t\t\t}\n\t\t\t",fragmentShader:"\n\n\t\t\t\tuniform sampler2D tEquirect;\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\t#include \n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvec3 direction = normalize( vWorldDirection );\n\n\t\t\t\t\tvec2 sampleUV = equirectUv( direction );\n\n\t\t\t\t\tgl_FragColor = texture2D( tEquirect, sampleUV );\n\n\t\t\t\t}\n\t\t\t"},r=new eo(5,5,5),n=new Yt({name:"CubemapFromEquirect",uniforms:Py(i.uniforms),vertexShader:i.vertexShader,fragmentShader:i.fragmentShader,side:zn,blending:Ui});n.uniforms.tEquirect.value=t;let s=new rt(r,n),a=t.minFilter;return t.minFilter===Ra&&(t.minFilter=oi),new AD(1,10,this).update(e,s),t.minFilter=a,s.geometry.dispose(),s.material.dispose(),this}clear(e,t,i,r){let n=e.getRenderTarget();for(let n=0;n<6;n++)e.setRenderTarget(this,n),e.clear(t,i,r);e.setRenderTarget(n)}},_H=new A,odt=new A,ldt=new Ni,bi=class{constructor(e=new A(1,0,0),t=0){this.isPlane=!0,this.normal=e,this.constant=t}set(e,t){return this.normal.copy(e),this.constant=t,this}setComponents(e,t,i,r){return this.normal.set(e,t,i),this.constant=r,this}setFromNormalAndCoplanarPoint(e,t){return this.normal.copy(e),this.constant=-t.dot(this.normal),this}setFromCoplanarPoints(e,t,i){let r=_H.subVectors(i,t).cross(odt.subVectors(e,t)).normalize();return this.setFromNormalAndCoplanarPoint(r,e),this}copy(e){return this.normal.copy(e.normal),this.constant=e.constant,this}normalize(){let e=1/this.normal.length();return this.normal.multiplyScalar(e),this.constant*=e,this}negate(){return this.constant*=-1,this.normal.negate(),this}distanceToPoint(e){return this.normal.dot(e)+this.constant}distanceToSphere(e){return this.distanceToPoint(e.center)-e.radius}projectPoint(e,t){return t.copy(this.normal).multiplyScalar(-this.distanceToPoint(e)).add(e)}intersectLine(e,t){let i=e.delta(_H),r=this.normal.dot(i);if(0===r)return 0===this.distanceToPoint(e.start)?t.copy(e.start):null;let n=-(e.start.dot(this.normal)+this.constant)/r;return n<0||n>1?null:t.copy(i).multiplyScalar(n).add(e.start)}intersectsLine(e){let t=this.distanceToPoint(e.start),i=this.distanceToPoint(e.end);return t<0&&i>0||i<0&&t>0}intersectsBox(e){return e.intersectsPlane(this)}intersectsSphere(e){return e.intersectsPlane(this)}coplanarPoint(e){return e.copy(this.normal).multiplyScalar(-this.constant)}applyMatrix4(e,t){let i=t||ldt.getNormalMatrix(e),r=this.coplanarPoint(_H).applyMatrix4(e),n=this.normal.applyMatrix3(i).normalize();return this.constant=-r.dot(n),this}translate(e){return this.constant-=e.dot(this.normal),this}equals(e){return e.normal.equals(this.normal)&&e.constant===this.constant}clone(){return(new this.constructor).copy(this)}},Ty=new Wi,KM=new A,$s=class{constructor(e=new bi,t=new bi,i=new bi,r=new bi,n=new bi,s=new bi){this.planes=[e,t,i,r,n,s]}set(e,t,i,r,n,s){let a=this.planes;return a[0].copy(e),a[1].copy(t),a[2].copy(i),a[3].copy(r),a[4].copy(n),a[5].copy(s),this}copy(e){let t=this.planes;for(let i=0;i<6;i++)t[i].copy(e.planes[i]);return this}setFromProjectionMatrix(e){let t=this.planes,i=e.elements,r=i[0],n=i[1],s=i[2],a=i[3],o=i[4],l=i[5],h=i[6],u=i[7],c=i[8],p=i[9],d=i[10],f=i[11],m=i[12],g=i[13],y=i[14],v=i[15];return t[0].setComponents(a-r,u-o,f-c,v-m).normalize(),t[1].setComponents(a+r,u+o,f+c,v+m).normalize(),t[2].setComponents(a+n,u+l,f+p,v+g).normalize(),t[3].setComponents(a-n,u-l,f-p,v-g).normalize(),t[4].setComponents(a-s,u-h,f-d,v-y).normalize(),t[5].setComponents(a+s,u+h,f+d,v+y).normalize(),this}intersectsObject(e){let t=e.geometry;return null===t.boundingSphere&&t.computeBoundingSphere(),Ty.copy(t.boundingSphere).applyMatrix4(e.matrixWorld),this.intersectsSphere(Ty)}intersectsSprite(e){return Ty.center.set(0,0,0),Ty.radius=.7071067811865476,Ty.applyMatrix4(e.matrixWorld),this.intersectsSphere(Ty)}intersectsSphere(e){let t=this.planes,i=e.center,r=-e.radius;for(let e=0;e<6;e++)if(t[e].distanceToPoint(i)0?e.max.x:e.min.x,KM.y=r.normal.y>0?e.max.y:e.min.y,KM.z=r.normal.z>0?e.max.z:e.min.z,r.distanceToPoint(KM)<0)return!1}return!0}containsPoint(e){let t=this.planes;for(let i=0;i<6;i++)if(t[i].distanceToPoint(e)<0)return!1;return!0}clone(){return(new this.constructor).copy(this)}};function Ehe(){let e=null,t=!1,i=null,r=null;function n(t,s){i(t,s),r=e.requestAnimationFrame(n)}return{start:function(){!0!==t&&null!==i&&(r=e.requestAnimationFrame(n),t=!0)},stop:function(){e.cancelAnimationFrame(r),t=!1},setAnimationLoop:function(e){i=e},setContext:function(t){e=t}}}function cdt(e,t){let i=t.isWebGL2,r=new WeakMap;return{get:function(e){return e.isInterleavedBufferAttribute&&(e=e.data),r.get(e)},remove:function(t){t.isInterleavedBufferAttribute&&(t=t.data);let i=r.get(t);i&&(e.deleteBuffer(i.buffer),r.delete(t))},update:function(t,n){if(t.isGLBufferAttribute){let e=r.get(t);return void((!e||e.version0?i:t).get(m));let g=e.xr,y=g.getSession&&g.getSession();y&&"additive"===y.environmentBlendMode&&(m=null),null===m?f(h,u):m&&m.isColor&&(f(m,1),a=!0),(e.autoClear||a)&&e.clear(e.autoClearColor,e.autoClearDepth,e.autoClearStencil),m&&(m.isCubeTexture||m.mapping===zy)?(void 0===l&&(l=new rt(new eo(1,1,1),new Yt({name:"BackgroundCubeMaterial",uniforms:Py(Rc.backgroundCube.uniforms),vertexShader:Rc.backgroundCube.vertexShader,fragmentShader:Rc.backgroundCube.fragmentShader,side:zn,depthTest:!1,depthWrite:!1,fog:!1})),l.geometry.deleteAttribute("normal"),l.geometry.deleteAttribute("uv"),l.onBeforeRender=function(e,t,i){this.matrixWorld.copyPosition(i.matrixWorld)},Object.defineProperty(l.material,"envMap",{get:function(){return this.uniforms.envMap.value}}),n.update(l)),l.material.uniforms.envMap.value=m,l.material.uniforms.flipEnvMap.value=m.isCubeTexture&&!1===m.isRenderTargetTexture?-1:1,l.material.uniforms.backgroundBlurriness.value=s.backgroundBlurriness,l.material.uniforms.backgroundIntensity.value=s.backgroundIntensity,l.material.toneMapped=m.encoding!==gr,(c!==m||p!==m.version||d!==e.toneMapping)&&(l.material.needsUpdate=!0,c=m,p=m.version,d=e.toneMapping),l.layers.enableAll(),r.unshift(l,l.geometry,l.material,0,0,null)):m&&m.isTexture&&(void 0===o&&(o=new rt(new ts(2,2),new Yt({name:"BackgroundMaterial",uniforms:Py(Rc.background.uniforms),vertexShader:Rc.background.vertexShader,fragmentShader:Rc.background.fragmentShader,side:tn,depthTest:!1,depthWrite:!1,fog:!1})),o.geometry.deleteAttribute("normal"),Object.defineProperty(o.material,"map",{get:function(){return this.uniforms.t2D.value}}),n.update(o)),o.material.uniforms.t2D.value=m,o.material.uniforms.backgroundIntensity.value=s.backgroundIntensity,o.material.toneMapped=m.encoding!==gr,!0===m.matrixAutoUpdate&&m.updateMatrix(),o.material.uniforms.uvTransform.value.copy(m.matrix),(c!==m||p!==m.version||d!==e.toneMapping)&&(o.material.needsUpdate=!0,c=m,p=m.version,d=e.toneMapping),o.layers.enableAll(),r.unshift(o,o.geometry,o.material,0,0,null))}}}function zmt(e,t,i,r){let n=e.getParameter(34921),s=r.isWebGL2?null:t.get("OES_vertex_array_object"),a=r.isWebGL2||null!==s,o={},l=d(null),h=l,u=!1;function c(t){return r.isWebGL2?e.bindVertexArray(t):s.bindVertexArrayOES(t)}function p(t){return r.isWebGL2?e.deleteVertexArray(t):s.deleteVertexArrayOES(t)}function d(e){let t=[],i=[],r=[];for(let e=0;e=0){let i=n[t],r=s[t];if(void 0===r&&("instanceMatrix"===t&&e.instanceMatrix&&(r=e.instanceMatrix),"instanceColor"===t&&e.instanceColor&&(r=e.instanceColor)),void 0===i||i.attribute!==r||r&&i.data!==r.data)return!0;a++}return h.attributesNum!==a||h.index!==r}(n,T,p,x),b&&function(e,t,i,r){let n={},s=t.attributes,a=0,o=i.getAttributes();for(let t in o)if(o[t].location>=0){let i=s[t];void 0===i&&("instanceMatrix"===t&&e.instanceMatrix&&(i=e.instanceMatrix),"instanceColor"===t&&e.instanceColor&&(i=e.instanceColor));let r={};r.attribute=i,i&&i.data&&(r.data=i.data),n[t]=r,a++}h.attributes=n,h.attributesNum=a,h.index=r}(n,T,p,x)}else{let e=!0===l.wireframe;(h.geometry!==T.id||h.program!==p.id||h.wireframe!==e)&&(h.geometry=T.id,h.program=p.id,h.wireframe=e,b=!0)}null!==x&&i.update(x,34963),(b||u)&&(u=!1,function(n,s,a,o){if(!1===r.isWebGL2&&(n.isInstancedMesh||o.isInstancedBufferGeometry)&&null===t.get("ANGLE_instanced_arrays"))return;f();let l=o.attributes,h=a.getAttributes(),u=s.defaultAttributeValues;for(let t in h){let r=h[t];if(r.location>=0){let s=l[t];if(void 0===s&&("instanceMatrix"===t&&n.instanceMatrix&&(s=n.instanceMatrix),"instanceColor"===t&&n.instanceColor&&(s=n.instanceColor)),void 0!==s){let t=s.normalized,a=s.itemSize,l=i.get(s);if(void 0===l)continue;let h=l.buffer,u=l.type,c=l.bytesPerElement;if(s.isInterleavedBufferAttribute){let i=s.data,l=i.stride,p=s.offset;if(i.isInstancedInterleavedBuffer){for(let e=0;e0&&e.getShaderPrecisionFormat(35632,36338).precision>0)return"highp";t="mediump"}return"mediump"===t&&e.getShaderPrecisionFormat(35633,36337).precision>0&&e.getShaderPrecisionFormat(35632,36337).precision>0?"mediump":"lowp"}let s="undefined"!=typeof WebGL2RenderingContext&&e instanceof WebGL2RenderingContext,a=void 0!==i.precision?i.precision:"highp",o=n(a);o!==a&&(console.warn("THREE.WebGLRenderer:",a,"not supported, using",o,"instead."),a=o);let l=s||t.has("WEBGL_draw_buffers"),h=!0===i.logarithmicDepthBuffer,u=e.getParameter(34930),c=e.getParameter(35660),p=e.getParameter(3379),d=e.getParameter(34076),f=e.getParameter(34921),m=e.getParameter(36347),g=e.getParameter(36348),y=e.getParameter(36349),v=c>0,T=s||t.has("OES_texture_float");return{isWebGL2:s,drawBuffers:l,getMaxAnisotropy:function(){if(void 0!==r)return r;if(!0===t.has("EXT_texture_filter_anisotropic")){let i=t.get("EXT_texture_filter_anisotropic");r=e.getParameter(i.MAX_TEXTURE_MAX_ANISOTROPY_EXT)}else r=0;return r},getMaxPrecision:n,precision:a,logarithmicDepthBuffer:h,maxTextures:u,maxVertexTextures:c,maxTextureSize:p,maxCubemapSize:d,maxAttributes:f,maxVertexUniforms:m,maxVaryings:g,maxFragmentUniforms:y,vertexTextures:v,floatFragmentTextures:T,floatVertexTextures:v&&T,maxSamples:s?e.getParameter(36183):0}}function qmt(e){let t=this,i=null,r=0,n=!1,s=!1,a=new bi,o=new Ni,l={value:null,needsUpdate:!1};function h(e,i,r,n){let s=null!==e?e.length:0,h=null;if(0!==s){if(h=l.value,!0!==n||null===h){let t=r+4*s,n=i.matrixWorldInverse;o.getNormalMatrix(n),(null===h||h.length0),t.numPlanes=r,t.numIntersection=0);else{let e=s?0:r,t=4*e,n=f.clippingState||null;l.value=n,n=h(c,o,t,u);for(let e=0;e!==t;++e)n[e]=i[e];f.clippingState=n,this.numIntersection=p?this.numPlanes:0,this.numPlanes+=e}}}function Ymt(e){let t=new WeakMap;function i(e,t){return t===Tg?e.mapping=af:t===rx&&(e.mapping=of),e}function r(e){let i=e.target;i.removeEventListener("dispose",r);let n=t.get(i);void 0!==n&&(t.delete(i),n.dispose())}return{get:function(n){if(n&&n.isTexture&&!1===n.isRenderTargetTexture){let s=n.mapping;if(s===Tg||s===rx){if(t.has(n)){return i(t.get(n).texture,n.mapping)}{let s=n.image;if(s&&s.height>0){let a=new OD(s.height/2);return a.fromEquirectangularTexture(e,n),t.set(n,a),n.addEventListener("dispose",r),i(a.texture,n.mapping)}return null}}}return n},dispose:function(){t=new WeakMap}}}var qi=class extends bp{constructor(e=-1,t=1,i=1,r=-1,n=.1,s=2e3){super(),this.isOrthographicCamera=!0,this.type="OrthographicCamera",this.zoom=1,this.view=null,this.left=e,this.right=t,this.top=i,this.bottom=r,this.near=n,this.far=s,this.updateProjectionMatrix()}copy(e,t){return super.copy(e,t),this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.near=e.near,this.far=e.far,this.zoom=e.zoom,this.view=null===e.view?null:Object.assign({},e.view),this}setViewOffset(e,t,i,r,n,s){null===this.view&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=e,this.view.fullHeight=t,this.view.offsetX=i,this.view.offsetY=r,this.view.width=n,this.view.height=s,this.updateProjectionMatrix()}clearViewOffset(){null!==this.view&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){let e=(this.right-this.left)/(2*this.zoom),t=(this.top-this.bottom)/(2*this.zoom),i=(this.right+this.left)/2,r=(this.top+this.bottom)/2,n=i-e,s=i+e,a=r+t,o=r-t;if(null!==this.view&&this.view.enabled){let e=(this.right-this.left)/this.view.fullWidth/this.zoom,t=(this.top-this.bottom)/this.view.fullHeight/this.zoom;n+=e*this.view.offsetX,s=n+e*this.view.width,a-=t*this.view.offsetY,o=a-t*this.view.height}this.projectionMatrix.makeOrthographic(n,s,a,o,this.near,this.far),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(e){let t=super.toJSON(e);return t.object.zoom=this.zoom,t.object.left=this.left,t.object.right=this.right,t.object.top=this.top,t.object.bottom=this.bottom,t.object.near=this.near,t.object.far=this.far,null!==this.view&&(t.object.view=Object.assign({},this.view)),t}},Ry=4,Tce=[.125,.215,.35,.446,.526,.582],pg=20,SH=new qi,Ece=new je,wH=null,hg=(1+Math.sqrt(5))/2,Ey=1/hg,bce=[new A(1,1,1),new A(-1,1,1),new A(1,1,-1),new A(-1,1,-1),new A(0,hg,Ey),new A(0,hg,-Ey),new A(Ey,0,hg),new A(-Ey,0,hg),new A(hg,Ey,0),new A(-hg,Ey,0)],xp=class{constructor(e){this._renderer=e,this._pingPongRenderTarget=null,this._lodMax=0,this._cubeSize=0,this._lodPlanes=[],this._sizeLods=[],this._sigmas=[],this._blurMaterial=null,this._cubemapMaterial=null,this._equirectMaterial=null,this._compileMaterial(this._blurMaterial)}fromScene(e,t=0,i=.1,r=100){wH=this._renderer.getRenderTarget(),this._setSize(256);let n=this._allocateTargets();return n.depthBuffer=!0,this._sceneToCubeUV(e,i,r,n),t>0&&this._blur(n,0,0,t),this._applyPMREM(n),this._cleanup(n),n}fromEquirectangular(e,t=null){return this._fromTexture(e,t)}fromCubemap(e,t=null){return this._fromTexture(e,t)}compileCubemapShader(){null===this._cubemapMaterial&&(this._cubemapMaterial=_ce(),this._compileMaterial(this._cubemapMaterial))}compileEquirectangularShader(){null===this._equirectMaterial&&(this._equirectMaterial=Ice(),this._compileMaterial(this._equirectMaterial))}dispose(){this._dispose(),null!==this._cubemapMaterial&&this._cubemapMaterial.dispose(),null!==this._equirectMaterial&&this._equirectMaterial.dispose()}_setSize(e){this._lodMax=Math.floor(Math.log2(e)),this._cubeSize=Math.pow(2,this._lodMax)}_dispose(){null!==this._blurMaterial&&this._blurMaterial.dispose(),null!==this._pingPongRenderTarget&&this._pingPongRenderTarget.dispose();for(let e=0;e2?l:0,l,l),o.setRenderTarget(r),p&&o.render(c,n),o.render(e,n)}c.geometry.dispose(),c.material.dispose(),o.toneMapping=h,o.autoClear=l,e.background=d}_textureToCubeUV(e,t){let i=this._renderer,r=e.mapping===af||e.mapping===of;r?(null===this._cubemapMaterial&&(this._cubemapMaterial=_ce()),this._cubemapMaterial.uniforms.flipEnvMap.value=!1===e.isRenderTargetTexture?-1:1):null===this._equirectMaterial&&(this._equirectMaterial=Ice());let n=r?this._cubemapMaterial:this._equirectMaterial,s=new rt(this._lodPlanes[0],n);n.uniforms.envMap.value=e;let a=this._cubeSize;JM(t,0,0,3*a,2*a),i.setRenderTarget(t),i.render(s,SH)}_applyPMREM(e){let t=this._renderer,i=t.autoClear;t.autoClear=!1;for(let t=1;tpg&&console.warn(`sigmaRadians, ${n}, is too large and will clip, as it requested ${f} samples when the maximum is set to ${pg}`);let m=[],g=0;for(let e=0;ey-Ry?r-y+Ry:0),4*(this._cubeSize-v),3*v,2*v),o.setRenderTarget(t),o.render(h,SH)}};function Xmt(e){let t=[],i=[],r=[],n=e,s=e-Ry+1+Tce.length;for(let a=0;ae-Ry?o=Tce[a-e+Ry-1]:0===a&&(o=0),r.push(o);let l=1/(s-2),h=-l,u=1+l,c=[h,h,u,h,u,u,h,h,u,u,h,u],p=6,d=6,f=3,m=2,g=1,y=new Float32Array(f*d*p),v=new Float32Array(m*d*p),T=new Float32Array(g*d*p);for(let e=0;e2?0:-1,r=[t,i,0,t+2/3,i,0,t+2/3,i+1,0,t,i,0,t+2/3,i+1,0,t,i+1,0];y.set(r,f*d*e),v.set(c,m*d*e);let n=[e,e,e,e,e,e];T.set(n,g*d*e)}let x=new lt;x.setAttribute("position",new Wt(y,f)),x.setAttribute("uv",new Wt(v,m)),x.setAttribute("faceIndex",new Wt(T,g)),t.push(x),n>Ry&&n--}return{lodPlanes:t,sizeLods:i,sigmas:r}}function xce(e,t,i){let r=new zr(e,t,i);return r.texture.mapping=zy,r.texture.name="PMREM.cubeUv",r.scissorTest=!0,r}function JM(e,t,i,r,n){e.viewport.set(t,i,r,n),e.scissor.set(t,i,r,n)}function $mt(e,t,i){let r=new Float32Array(pg),n=new A(0,1,0);return new Yt({name:"SphericalGaussianBlur",defines:{n:pg,CUBEUV_TEXEL_WIDTH:1/t,CUBEUV_TEXEL_HEIGHT:1/i,CUBEUV_MAX_MIP:`${e}.0`},uniforms:{envMap:{value:null},samples:{value:1},weights:{value:r},latitudinal:{value:!1},dTheta:{value:0},mipInt:{value:0},poleAxis:{value:n}},vertexShader:kU(),fragmentShader:"\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\t\t\tuniform int samples;\n\t\t\tuniform float weights[ n ];\n\t\t\tuniform bool latitudinal;\n\t\t\tuniform float dTheta;\n\t\t\tuniform float mipInt;\n\t\t\tuniform vec3 poleAxis;\n\n\t\t\t#define ENVMAP_TYPE_CUBE_UV\n\t\t\t#include \n\n\t\t\tvec3 getSample( float theta, vec3 axis ) {\n\n\t\t\t\tfloat cosTheta = cos( theta );\n\t\t\t\t// Rodrigues' axis-angle rotation\n\t\t\t\tvec3 sampleDirection = vOutputDirection * cosTheta\n\t\t\t\t\t+ cross( axis, vOutputDirection ) * sin( theta )\n\t\t\t\t\t+ axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta );\n\n\t\t\t\treturn bilinearCubeUV( envMap, sampleDirection, mipInt );\n\n\t\t\t}\n\n\t\t\tvoid main() {\n\n\t\t\t\tvec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection );\n\n\t\t\t\tif ( all( equal( axis, vec3( 0.0 ) ) ) ) {\n\n\t\t\t\t\taxis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x );\n\n\t\t\t\t}\n\n\t\t\t\taxis = normalize( axis );\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\t\t\t\tgl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis );\n\n\t\t\t\tfor ( int i = 1; i < n; i++ ) {\n\n\t\t\t\t\tif ( i >= samples ) {\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfloat theta = dTheta * float( i );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( theta, axis );\n\n\t\t\t\t}\n\n\t\t\t}\n\t\t",blending:Ui,depthTest:!1,depthWrite:!1})}function Ice(){return new Yt({name:"EquirectangularToCubeUV",uniforms:{envMap:{value:null}},vertexShader:kU(),fragmentShader:"\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\n\t\t\t#include \n\n\t\t\tvoid main() {\n\n\t\t\t\tvec3 outputDirection = normalize( vOutputDirection );\n\t\t\t\tvec2 uv = equirectUv( outputDirection );\n\n\t\t\t\tgl_FragColor = vec4( texture2D ( envMap, uv ).rgb, 1.0 );\n\n\t\t\t}\n\t\t",blending:Ui,depthTest:!1,depthWrite:!1})}function _ce(){return new Yt({name:"CubemapToCubeUV",uniforms:{envMap:{value:null},flipEnvMap:{value:-1}},vertexShader:kU(),fragmentShader:"\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tuniform float flipEnvMap;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform samplerCube envMap;\n\n\t\t\tvoid main() {\n\n\t\t\t\tgl_FragColor = textureCube( envMap, vec3( flipEnvMap * vOutputDirection.x, vOutputDirection.yz ) );\n\n\t\t\t}\n\t\t",blending:Ui,depthTest:!1,depthWrite:!1})}function kU(){return"\n\n\t\tprecision mediump float;\n\t\tprecision mediump int;\n\n\t\tattribute float faceIndex;\n\n\t\tvarying vec3 vOutputDirection;\n\n\t\t// RH coordinate system; PMREM face-indexing convention\n\t\tvec3 getDirection( vec2 uv, float face ) {\n\n\t\t\tuv = 2.0 * uv - 1.0;\n\n\t\t\tvec3 direction = vec3( uv, 1.0 );\n\n\t\t\tif ( face == 0.0 ) {\n\n\t\t\t\tdirection = direction.zyx; // ( 1, v, u ) pos x\n\n\t\t\t} else if ( face == 1.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xz *= -1.0; // ( -u, 1, -v ) pos y\n\n\t\t\t} else if ( face == 2.0 ) {\n\n\t\t\t\tdirection.x *= -1.0; // ( -u, v, 1 ) pos z\n\n\t\t\t} else if ( face == 3.0 ) {\n\n\t\t\t\tdirection = direction.zyx;\n\t\t\t\tdirection.xz *= -1.0; // ( -1, v, -u ) neg x\n\n\t\t\t} else if ( face == 4.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xy *= -1.0; // ( -u, -1, v ) neg y\n\n\t\t\t} else if ( face == 5.0 ) {\n\n\t\t\t\tdirection.z *= -1.0; // ( u, v, -1 ) neg z\n\n\t\t\t}\n\n\t\t\treturn direction;\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tvOutputDirection = getDirection( uv, faceIndex );\n\t\t\tgl_Position = vec4( position, 1.0 );\n\n\t\t}\n\t"}function Kmt(e){let t=new WeakMap,i=null;function r(e){let i=e.target;i.removeEventListener("dispose",r);let n=t.get(i);void 0!==n&&(t.delete(i),n.dispose())}return{get:function(n){if(n&&n.isTexture){let s=n.mapping,a=s===Tg||s===rx,o=s===af||s===of;if(a||o){if(n.isRenderTargetTexture&&!0===n.needsPMREMUpdate){n.needsPMREMUpdate=!1;let r=t.get(n);return null===i&&(i=new xp(e)),r=a?i.fromEquirectangular(n,r):i.fromCubemap(n,r),t.set(n,r),r.texture}if(t.has(n))return t.get(n).texture;{let s=n.image;if(a&&s&&s.height>0||o&&s&&function(e){let t=0,i=6;for(let r=0;rt.maxTextureSize&&(m=Math.ceil(f/t.maxTextureSize),f=t.maxTextureSize);let g=new Float32Array(f*m*4*n),y=new Ay(g,f,m,n);y.type=wa,y.needsUpdate=!0;let v=4*d;for(let e=0;e0)return e;let n=t*i,s=Sce[n];if(void 0===s&&(s=new Float32Array(n),Sce[n]=s),0!==t){r.toArray(s,0);for(let r=1,n=0;r!==t;++r)n+=i,e[r].toArray(s,n)}return s}function ys(e,t){if(e.length!==t.length)return!1;for(let i=0,r=e.length;i":" "} ${n}: ${i[e]}`)}return r.join("\n")}function Xgt(e){switch(e){case _l:return["Linear","( value )"];case gr:return["sRGB","( value )"];default:return console.warn("THREE.WebGLProgram: Unsupported encoding:",e),["Linear","( value )"]}}function Oce(e,t,i){let r=e.getShaderParameter(t,35713),n=e.getShaderInfoLog(t).trim();if(r&&""===n)return"";let s=/ERROR: 0:(\d+)/.exec(n);if(s){let r=parseInt(s[1]);return i.toUpperCase()+"\n\n"+n+"\n\n"+Ygt(e.getShaderSource(t),r)}return n}function $gt(e,t){let i=Xgt(t);return"vec4 "+e+"( vec4 value ) { return LinearTo"+i[0]+i[1]+"; }"}function Kgt(e,t){let i;switch(t){case que:i="Linear";break;case Yue:i="Reinhard";break;case Xue:i="OptimizedCineon";break;case $ue:i="ACESFilmic";break;case Kue:i="Custom";break;default:console.warn("THREE.WebGLProgram: Unsupported toneMapping:",t),i="Linear"}return"vec3 "+e+"( vec3 color ) { return "+i+"ToneMapping( color ); }"}function Zgt(e){return[e.extensionDerivatives||e.envMapCubeUVHeight||e.bumpMap||e.tangentSpaceNormalMap||e.clearcoatNormalMap||e.flatShading||"physical"===e.shaderID?"#extension GL_OES_standard_derivatives : enable":"",(e.extensionFragDepth||e.logarithmicDepthBuffer)&&e.rendererExtensionFragDepth?"#extension GL_EXT_frag_depth : enable":"",e.extensionDrawBuffers&&e.rendererExtensionDrawBuffers?"#extension GL_EXT_draw_buffers : require":"",(e.extensionShaderTextureLOD||e.envMap||e.transmission)&&e.rendererExtensionShaderTextureLod?"#extension GL_EXT_shader_texture_lod : enable":""].filter(Zb).join("\n")}function Jgt(e){let t=[];for(let i in e){let r=e[i];!1!==r&&t.push("#define "+i+" "+r)}return t.join("\n")}function Qgt(e,t){let i={},r=e.getProgramParameter(t,35721);for(let n=0;n/gm;function R4(e){return e.replace(e0t,t0t)}function t0t(e,t){let i=Xr[t];if(void 0===i)throw new Error("Can not resolve #include <"+t+">");return R4(i)}var r0t=/#pragma unroll_loop_start\s+for\s*\(\s*int\s+i\s*=\s*(\d+)\s*;\s*i\s*<\s*(\d+)\s*;\s*i\s*\+\+\s*\)\s*{([\s\S]+?)}\s+#pragma unroll_loop_end/g;function Lce(e){return e.replace(r0t,i0t)}function i0t(e,t,i,r){let n="";for(let e=parseInt(t);e0&&(n+="\n"),s=[m,g].filter(Zb).join("\n"),s.length>0&&(s+="\n")):(n=[Fce(i),"#define SHADER_NAME "+i.shaderName,g,i.instancing?"#define USE_INSTANCING":"",i.instancingColor?"#define USE_INSTANCING_COLOR":"",i.supportsVertexTextures?"#define VERTEX_TEXTURES":"",i.useFog&&i.fog?"#define USE_FOG":"",i.useFog&&i.fogExp2?"#define FOG_EXP2":"",i.map?"#define USE_MAP":"",i.envMap?"#define USE_ENVMAP":"",i.envMap?"#define "+p:"",i.lightMap?"#define USE_LIGHTMAP":"",i.aoMap?"#define USE_AOMAP":"",i.emissiveMap?"#define USE_EMISSIVEMAP":"",i.bumpMap?"#define USE_BUMPMAP":"",i.normalMap?"#define USE_NORMALMAP":"",i.normalMap&&i.objectSpaceNormalMap?"#define OBJECTSPACE_NORMALMAP":"",i.normalMap&&i.tangentSpaceNormalMap?"#define TANGENTSPACE_NORMALMAP":"",i.clearcoatMap?"#define USE_CLEARCOATMAP":"",i.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",i.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",i.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",i.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",i.displacementMap&&i.supportsVertexTextures?"#define USE_DISPLACEMENTMAP":"",i.specularMap?"#define USE_SPECULARMAP":"",i.specularIntensityMap?"#define USE_SPECULARINTENSITYMAP":"",i.specularColorMap?"#define USE_SPECULARCOLORMAP":"",i.roughnessMap?"#define USE_ROUGHNESSMAP":"",i.metalnessMap?"#define USE_METALNESSMAP":"",i.alphaMap?"#define USE_ALPHAMAP":"",i.transmission?"#define USE_TRANSMISSION":"",i.transmissionMap?"#define USE_TRANSMISSIONMAP":"",i.thicknessMap?"#define USE_THICKNESSMAP":"",i.sheenColorMap?"#define USE_SHEENCOLORMAP":"",i.sheenRoughnessMap?"#define USE_SHEENROUGHNESSMAP":"",i.vertexTangents?"#define USE_TANGENT":"",i.vertexColors?"#define USE_COLOR":"",i.vertexAlphas?"#define USE_COLOR_ALPHA":"",i.vertexUvs?"#define USE_UV":"",i.uvsVertexOnly?"#define UVS_VERTEX_ONLY":"",i.flatShading?"#define FLAT_SHADED":"",i.skinning?"#define USE_SKINNING":"",i.morphTargets?"#define USE_MORPHTARGETS":"",i.morphNormals&&!1===i.flatShading?"#define USE_MORPHNORMALS":"",i.morphColors&&i.isWebGL2?"#define USE_MORPHCOLORS":"",i.morphTargetsCount>0&&i.isWebGL2?"#define MORPHTARGETS_TEXTURE":"",i.morphTargetsCount>0&&i.isWebGL2?"#define MORPHTARGETS_TEXTURE_STRIDE "+i.morphTextureStride:"",i.morphTargetsCount>0&&i.isWebGL2?"#define MORPHTARGETS_COUNT "+i.morphTargetsCount:"",i.doubleSided?"#define DOUBLE_SIDED":"",i.flipSided?"#define FLIP_SIDED":"",i.shadowMapEnabled?"#define USE_SHADOWMAP":"",i.shadowMapEnabled?"#define "+u:"",i.sizeAttenuation?"#define USE_SIZEATTENUATION":"",i.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",i.logarithmicDepthBuffer&&i.rendererExtensionFragDepth?"#define USE_LOGDEPTHBUF_EXT":"","uniform mat4 modelMatrix;","uniform mat4 modelViewMatrix;","uniform mat4 projectionMatrix;","uniform mat4 viewMatrix;","uniform mat3 normalMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;","#ifdef USE_INSTANCING","\tattribute mat4 instanceMatrix;","#endif","#ifdef USE_INSTANCING_COLOR","\tattribute vec3 instanceColor;","#endif","attribute vec3 position;","attribute vec3 normal;","attribute vec2 uv;","#ifdef USE_TANGENT","\tattribute vec4 tangent;","#endif","#if defined( USE_COLOR_ALPHA )","\tattribute vec4 color;","#elif defined( USE_COLOR )","\tattribute vec3 color;","#endif","#if ( defined( USE_MORPHTARGETS ) && ! defined( MORPHTARGETS_TEXTURE ) )","\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","\n"].filter(Zb).join("\n"),s=[m,Fce(i),"#define SHADER_NAME "+i.shaderName,g,i.useFog&&i.fog?"#define USE_FOG":"",i.useFog&&i.fogExp2?"#define FOG_EXP2":"",i.map?"#define USE_MAP":"",i.matcap?"#define USE_MATCAP":"",i.envMap?"#define USE_ENVMAP":"",i.envMap?"#define "+c:"",i.envMap?"#define "+p:"",i.envMap?"#define "+d:"",f?"#define CUBEUV_TEXEL_WIDTH "+f.texelWidth:"",f?"#define CUBEUV_TEXEL_HEIGHT "+f.texelHeight:"",f?"#define CUBEUV_MAX_MIP "+f.maxMip+".0":"",i.lightMap?"#define USE_LIGHTMAP":"",i.aoMap?"#define USE_AOMAP":"",i.emissiveMap?"#define USE_EMISSIVEMAP":"",i.bumpMap?"#define USE_BUMPMAP":"",i.normalMap?"#define USE_NORMALMAP":"",i.normalMap&&i.objectSpaceNormalMap?"#define OBJECTSPACE_NORMALMAP":"",i.normalMap&&i.tangentSpaceNormalMap?"#define TANGENTSPACE_NORMALMAP":"",i.clearcoat?"#define USE_CLEARCOAT":"",i.clearcoatMap?"#define USE_CLEARCOATMAP":"",i.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",i.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",i.iridescence?"#define USE_IRIDESCENCE":"",i.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",i.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",i.specularMap?"#define USE_SPECULARMAP":"",i.specularIntensityMap?"#define USE_SPECULARINTENSITYMAP":"",i.specularColorMap?"#define USE_SPECULARCOLORMAP":"",i.roughnessMap?"#define USE_ROUGHNESSMAP":"",i.metalnessMap?"#define USE_METALNESSMAP":"",i.alphaMap?"#define USE_ALPHAMAP":"",i.alphaTest?"#define USE_ALPHATEST":"",i.sheen?"#define USE_SHEEN":"",i.sheenColorMap?"#define USE_SHEENCOLORMAP":"",i.sheenRoughnessMap?"#define USE_SHEENROUGHNESSMAP":"",i.transmission?"#define USE_TRANSMISSION":"",i.transmissionMap?"#define USE_TRANSMISSIONMAP":"",i.thicknessMap?"#define USE_THICKNESSMAP":"",i.decodeVideoTexture?"#define DECODE_VIDEO_TEXTURE":"",i.vertexTangents?"#define USE_TANGENT":"",i.vertexColors||i.instancingColor?"#define USE_COLOR":"",i.vertexAlphas?"#define USE_COLOR_ALPHA":"",i.vertexUvs?"#define USE_UV":"",i.uvsVertexOnly?"#define UVS_VERTEX_ONLY":"",i.gradientMap?"#define USE_GRADIENTMAP":"",i.flatShading?"#define FLAT_SHADED":"",i.doubleSided?"#define DOUBLE_SIDED":"",i.flipSided?"#define FLIP_SIDED":"",i.shadowMapEnabled?"#define USE_SHADOWMAP":"",i.shadowMapEnabled?"#define "+u:"",i.premultipliedAlpha?"#define PREMULTIPLIED_ALPHA":"",i.physicallyCorrectLights?"#define PHYSICALLY_CORRECT_LIGHTS":"",i.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",i.logarithmicDepthBuffer&&i.rendererExtensionFragDepth?"#define USE_LOGDEPTHBUF_EXT":"","uniform mat4 viewMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;",i.toneMapping!==Lu?"#define TONE_MAPPING":"",i.toneMapping!==Lu?Xr.tonemapping_pars_fragment:"",i.toneMapping!==Lu?Kgt("toneMapping",i.toneMapping):"",i.dithering?"#define DITHERING":"",i.opaque?"#define OPAQUE":"",Xr.encodings_pars_fragment,$gt("linearToOutputTexel",i.outputEncoding),i.useDepthPacking?"#define DEPTH_PACKING "+i.depthPacking:"","\n"].filter(Zb).join("\n")),l=R4(l),l=Pce(l,i),l=Nce(l,i),h=R4(h),h=Pce(h,i),h=Nce(h,i),l=Lce(l),h=Lce(h),i.isWebGL2&&!0!==i.isRawShaderMaterial&&(v="#version 300 es\n",n=["precision mediump sampler2DArray;","#define attribute in","#define varying out","#define texture2D texture"].join("\n")+"\n"+n,s=["#define varying in",i.glslVersion===p4?"":"layout(location = 0) out highp vec4 pc_fragColor;",i.glslVersion===p4?"":"#define gl_FragColor pc_fragColor","#define gl_FragDepthEXT gl_FragDepth","#define texture2D texture","#define textureCube texture","#define texture2DProj textureProj","#define texture2DLodEXT textureLod","#define texture2DProjLodEXT textureProjLod","#define textureCubeLodEXT textureLod","#define texture2DGradEXT textureGrad","#define texture2DProjGradEXT textureProjGrad","#define textureCubeGradEXT textureGrad"].join("\n")+"\n"+s);let T,x,b=v+s+h,_=Ace(a,35633,v+n+l),E=Ace(a,35632,b);if(a.attachShader(y,_),a.attachShader(y,E),void 0!==i.index0AttributeName?a.bindAttribLocation(y,0,i.index0AttributeName):!0===i.morphTargets&&a.bindAttribLocation(y,0,"position"),a.linkProgram(y),e.debug.checkShaderErrors){let e=a.getProgramInfoLog(y).trim(),t=a.getShaderInfoLog(_).trim(),i=a.getShaderInfoLog(E).trim(),r=!0,o=!0;if(!1===a.getProgramParameter(y,35714)){r=!1;let t=Oce(a,_,"vertex"),i=Oce(a,E,"fragment");console.error("THREE.WebGLProgram: Shader Error "+a.getError()+" - VALIDATE_STATUS "+a.getProgramParameter(y,35715)+"\n\nProgram Info Log: "+e+"\n"+t+"\n"+i)}else""!==e?console.warn("THREE.WebGLProgram: Program Info Log:",e):(""===t||""===i)&&(o=!1);o&&(this.diagnostics={runnable:r,programLog:e,vertexShader:{log:t,prefix:n},fragmentShader:{log:i,prefix:s}})}return a.deleteShader(_),a.deleteShader(E),this.getUniforms=function(){return void 0===T&&(T=new Dy(a,y)),T},this.getAttributes=function(){return void 0===x&&(x=Qgt(a,y)),x},this.destroy=function(){r.releaseStatesOfProgram(this),a.deleteProgram(y),this.program=void 0},this.name=i.shaderName,this.id=qgt++,this.cacheKey=t,this.usedTimes=1,this.program=y,this.vertexShader=_,this.fragmentShader=E,this}var u0t=0,M4=class{constructor(){this.shaderCache=new Map,this.materialCache=new Map}update(e){let t=e.vertexShader,i=e.fragmentShader,r=this._getShaderStage(t),n=this._getShaderStage(i),s=this._getShaderCacheForMaterial(e);return!1===s.has(r)&&(s.add(r),r.usedTimes++),!1===s.has(n)&&(s.add(n),n.usedTimes++),this}remove(e){let t=this.materialCache.get(e);for(let e of t)e.usedTimes--,0===e.usedTimes&&this.shaderCache.delete(e.code);return this.materialCache.delete(e),this}getVertexShaderID(e){return this._getShaderStage(e.vertexShader).id}getFragmentShaderID(e){return this._getShaderStage(e.fragmentShader).id}dispose(){this.shaderCache.clear(),this.materialCache.clear()}_getShaderCacheForMaterial(e){let t=this.materialCache,i=t.get(e);return void 0===i&&(i=new Set,t.set(e,i)),i}_getShaderStage(e){let t=this.shaderCache,i=t.get(e);return void 0===i&&(i=new D4(e),t.set(e,i)),i}},D4=class{constructor(e){this.id=u0t++,this.code=e,this.usedTimes=0}};function h0t(e,t,i,r,n,s,a){let o=new Oy,l=new M4,h=[],u=n.isWebGL2,c=n.logarithmicDepthBuffer,p=n.vertexTextures,d=n.precision,f={MeshDepthMaterial:"depth",MeshDistanceMaterial:"distanceRGBA",MeshNormalMaterial:"normal",MeshBasicMaterial:"basic",MeshLambertMaterial:"lambert",MeshPhongMaterial:"phong",MeshToonMaterial:"toon",MeshStandardMaterial:"physical",MeshPhysicalMaterial:"physical",MeshMatcapMaterial:"matcap",LineBasicMaterial:"basic",LineDashedMaterial:"dashed",PointsMaterial:"points",ShadowMaterial:"shadow",SpriteMaterial:"sprite"};return{getParameters:function(s,o,h,m,g){let y=m.fog,v=g.geometry,T=s.isMeshStandardMaterial?m.environment:null,x=(s.isMeshStandardMaterial?i:t).get(s.envMap||T),b=x&&x.mapping===zy?x.image.height:null,_=f[s.type];null!==s.precision&&(d=n.getMaxPrecision(s.precision),d!==s.precision&&console.warn("THREE.WebGLProgram.getParameters:",s.precision,"not supported, using",d,"instead."));let E,w,S,I,M=v.morphAttributes.position||v.morphAttributes.normal||v.morphAttributes.color,A=void 0!==M?M.length:0,D=0;if(void 0!==v.morphAttributes.position&&(D=1),void 0!==v.morphAttributes.normal&&(D=2),void 0!==v.morphAttributes.color&&(D=3),_){let e=Rc[_];E=e.vertexShader,w=e.fragmentShader}else E=s.vertexShader,w=s.fragmentShader,l.update(s),S=l.getVertexShaderID(s),I=l.getFragmentShaderID(s);let O=e.getRenderTarget(),R=s.alphaTest>0,C=s.clearcoat>0,N=s.iridescence>0;return{isWebGL2:u,shaderID:_,shaderName:s.type,vertexShader:E,fragmentShader:w,defines:s.defines,customVertexShaderID:S,customFragmentShaderID:I,isRawShaderMaterial:!0===s.isRawShaderMaterial,glslVersion:s.glslVersion,precision:d,instancing:!0===g.isInstancedMesh,instancingColor:!0===g.isInstancedMesh&&null!==g.instanceColor,supportsVertexTextures:p,outputEncoding:null===O?e.outputEncoding:!0===O.isXRRenderTarget?O.texture.encoding:_l,map:!!s.map,matcap:!!s.matcap,envMap:!!x,envMapMode:x&&x.mapping,envMapCubeUVHeight:b,lightMap:!!s.lightMap,aoMap:!!s.aoMap,emissiveMap:!!s.emissiveMap,bumpMap:!!s.bumpMap,normalMap:!!s.normalMap,objectSpaceNormalMap:s.normalMapType===fhe,tangentSpaceNormalMap:s.normalMapType===gf,decodeVideoTexture:!!s.map&&!0===s.map.isVideoTexture&&s.map.encoding===gr,clearcoat:C,clearcoatMap:C&&!!s.clearcoatMap,clearcoatRoughnessMap:C&&!!s.clearcoatRoughnessMap,clearcoatNormalMap:C&&!!s.clearcoatNormalMap,iridescence:N,iridescenceMap:N&&!!s.iridescenceMap,iridescenceThicknessMap:N&&!!s.iridescenceThicknessMap,displacementMap:!!s.displacementMap,roughnessMap:!!s.roughnessMap,metalnessMap:!!s.metalnessMap,specularMap:!!s.specularMap,specularIntensityMap:!!s.specularIntensityMap,specularColorMap:!!s.specularColorMap,opaque:!1===s.transparent&&s.blending===gg,alphaMap:!!s.alphaMap,alphaTest:R,gradientMap:!!s.gradientMap,sheen:s.sheen>0,sheenColorMap:!!s.sheenColorMap,sheenRoughnessMap:!!s.sheenRoughnessMap,transmission:s.transmission>0,transmissionMap:!!s.transmissionMap,thicknessMap:!!s.thicknessMap,combine:s.combine,vertexTangents:!!s.normalMap&&!!v.attributes.tangent,vertexColors:s.vertexColors,vertexAlphas:!0===s.vertexColors&&!!v.attributes.color&&4===v.attributes.color.itemSize,vertexUvs:!!(s.map||s.bumpMap||s.normalMap||s.specularMap||s.alphaMap||s.emissiveMap||s.roughnessMap||s.metalnessMap||s.clearcoatMap||s.clearcoatRoughnessMap||s.clearcoatNormalMap||s.iridescenceMap||s.iridescenceThicknessMap||s.displacementMap||s.transmissionMap||s.thicknessMap||s.specularIntensityMap||s.specularColorMap||s.sheenColorMap||s.sheenRoughnessMap),uvsVertexOnly:!(s.map||s.bumpMap||s.normalMap||s.specularMap||s.alphaMap||s.emissiveMap||s.roughnessMap||s.metalnessMap||s.clearcoatNormalMap||s.iridescenceMap||s.iridescenceThicknessMap||s.transmission>0||s.transmissionMap||s.thicknessMap||s.specularIntensityMap||s.specularColorMap||s.sheen>0||s.sheenColorMap||s.sheenRoughnessMap||!s.displacementMap),fog:!!y,useFog:!0===s.fog,fogExp2:y&&y.isFogExp2,flatShading:!!s.flatShading,sizeAttenuation:s.sizeAttenuation,logarithmicDepthBuffer:c,skinning:!0===g.isSkinnedMesh,morphTargets:void 0!==v.morphAttributes.position,morphNormals:void 0!==v.morphAttributes.normal,morphColors:void 0!==v.morphAttributes.color,morphTargetsCount:A,morphTextureStride:D,numDirLights:o.directional.length,numPointLights:o.point.length,numSpotLights:o.spot.length,numSpotLightMaps:o.spotLightMap.length,numRectAreaLights:o.rectArea.length,numHemiLights:o.hemi.length,numDirLightShadows:o.directionalShadowMap.length,numPointLightShadows:o.pointShadowMap.length,numSpotLightShadows:o.spotShadowMap.length,numSpotLightShadowsWithMaps:o.numSpotLightShadowsWithMaps,numClippingPlanes:a.numPlanes,numClipIntersection:a.numIntersection,dithering:s.dithering,shadowMapEnabled:e.shadowMap.enabled&&h.length>0,shadowMapType:e.shadowMap.type,toneMapping:s.toneMapped?e.toneMapping:Lu,physicallyCorrectLights:e.physicallyCorrectLights,premultipliedAlpha:s.premultipliedAlpha,doubleSided:s.side===gi,flipSided:s.side===zn,useDepthPacking:!!s.depthPacking,depthPacking:s.depthPacking||0,index0AttributeName:s.index0AttributeName,extensionDerivatives:s.extensions&&s.extensions.derivatives,extensionFragDepth:s.extensions&&s.extensions.fragDepth,extensionDrawBuffers:s.extensions&&s.extensions.drawBuffers,extensionShaderTextureLOD:s.extensions&&s.extensions.shaderTextureLOD,rendererExtensionFragDepth:u||r.has("EXT_frag_depth"),rendererExtensionDrawBuffers:u||r.has("WEBGL_draw_buffers"),rendererExtensionShaderTextureLod:u||r.has("EXT_shader_texture_lod"),customProgramCacheKey:s.customProgramCacheKey()}},getProgramCacheKey:function(t){let i=[];if(t.shaderID?i.push(t.shaderID):(i.push(t.customVertexShaderID),i.push(t.customFragmentShaderID)),void 0!==t.defines)for(let e in t.defines)i.push(e),i.push(t.defines[e]);return!1===t.isRawShaderMaterial&&(function(e,t){e.push(t.precision),e.push(t.outputEncoding),e.push(t.envMapMode),e.push(t.envMapCubeUVHeight),e.push(t.combine),e.push(t.vertexUvs),e.push(t.fogExp2),e.push(t.sizeAttenuation),e.push(t.morphTargetsCount),e.push(t.morphAttributeCount),e.push(t.numDirLights),e.push(t.numPointLights),e.push(t.numSpotLights),e.push(t.numSpotLightMaps),e.push(t.numHemiLights),e.push(t.numRectAreaLights),e.push(t.numDirLightShadows),e.push(t.numPointLightShadows),e.push(t.numSpotLightShadows),e.push(t.numSpotLightShadowsWithMaps),e.push(t.shadowMapType),e.push(t.toneMapping),e.push(t.numClippingPlanes),e.push(t.numClipIntersection),e.push(t.depthPacking)}(i,t),function(e,t){o.disableAll(),t.isWebGL2&&o.enable(0),t.supportsVertexTextures&&o.enable(1),t.instancing&&o.enable(2),t.instancingColor&&o.enable(3),t.map&&o.enable(4),t.matcap&&o.enable(5),t.envMap&&o.enable(6),t.lightMap&&o.enable(7),t.aoMap&&o.enable(8),t.emissiveMap&&o.enable(9),t.bumpMap&&o.enable(10),t.normalMap&&o.enable(11),t.objectSpaceNormalMap&&o.enable(12),t.tangentSpaceNormalMap&&o.enable(13),t.clearcoat&&o.enable(14),t.clearcoatMap&&o.enable(15),t.clearcoatRoughnessMap&&o.enable(16),t.clearcoatNormalMap&&o.enable(17),t.iridescence&&o.enable(18),t.iridescenceMap&&o.enable(19),t.iridescenceThicknessMap&&o.enable(20),t.displacementMap&&o.enable(21),t.specularMap&&o.enable(22),t.roughnessMap&&o.enable(23),t.metalnessMap&&o.enable(24),t.gradientMap&&o.enable(25),t.alphaMap&&o.enable(26),t.alphaTest&&o.enable(27),t.vertexColors&&o.enable(28),t.vertexAlphas&&o.enable(29),t.vertexUvs&&o.enable(30),t.vertexTangents&&o.enable(31),t.uvsVertexOnly&&o.enable(32),e.push(o.mask),o.disableAll(),t.fog&&o.enable(0),t.useFog&&o.enable(1),t.flatShading&&o.enable(2),t.logarithmicDepthBuffer&&o.enable(3),t.skinning&&o.enable(4),t.morphTargets&&o.enable(5),t.morphNormals&&o.enable(6),t.morphColors&&o.enable(7),t.premultipliedAlpha&&o.enable(8),t.shadowMapEnabled&&o.enable(9),t.physicallyCorrectLights&&o.enable(10),t.doubleSided&&o.enable(11),t.flipSided&&o.enable(12),t.useDepthPacking&&o.enable(13),t.dithering&&o.enable(14),t.specularIntensityMap&&o.enable(15),t.specularColorMap&&o.enable(16),t.transmission&&o.enable(17),t.transmissionMap&&o.enable(18),t.thicknessMap&&o.enable(19),t.sheen&&o.enable(20),t.sheenColorMap&&o.enable(21),t.sheenRoughnessMap&&o.enable(22),t.decodeVideoTexture&&o.enable(23),t.opaque&&o.enable(24),e.push(o.mask)}(i,t),i.push(e.outputEncoding)),i.push(t.customProgramCacheKey),i.join()},getUniforms:function(e){let t,i=f[e.type];if(i){let e=Rc[i];t=pn.clone(e.uniforms)}else t=e.uniforms;return t},acquireProgram:function(t,i){let r;for(let e=0,t=h.length;e0?r.push(u):!0===a.transparent?n.push(u):i.push(u)},unshift:function(e,t,a,o,l,h){let u=s(e,t,a,o,l,h);a.transmission>0?r.unshift(u):!0===a.transparent?n.unshift(u):i.unshift(u)},finish:function(){for(let i=t,r=e.length;i1&&i.sort(e||d0t),r.length>1&&r.sort(t||Hce),n.length>1&&n.sort(t||Hce)}}}function f0t(){let e=new WeakMap;return{get:function(t,i){let r,n=e.get(t);return void 0===n?(r=new Uce,e.set(t,[r])):i>=n.length?(r=new Uce,n.push(r)):r=n[i],r},dispose:function(){e=new WeakMap}}}function m0t(){let e={};return{get:function(t){if(void 0!==e[t.id])return e[t.id];let i;switch(t.type){case"DirectionalLight":i={direction:new A,color:new je};break;case"SpotLight":i={position:new A,direction:new A,color:new je,distance:0,coneCos:0,penumbraCos:0,decay:0};break;case"PointLight":i={position:new A,color:new je,distance:0,decay:0};break;case"HemisphereLight":i={direction:new A,skyColor:new je,groundColor:new je};break;case"RectAreaLight":i={color:new je,position:new A,halfWidth:new A,halfHeight:new A}}return e[t.id]=i,i}}}function g0t(){let e={};return{get:function(t){if(void 0!==e[t.id])return e[t.id];let i;switch(t.type){case"DirectionalLight":case"SpotLight":i={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new le};break;case"PointLight":i={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new le,shadowCameraNear:1,shadowCameraFar:1e3}}return e[t.id]=i,i}}}var v0t=0;function y0t(e,t){return(t.castShadow?2:0)-(e.castShadow?2:0)+(t.map?1:0)-(e.map?1:0)}function T0t(e,t){let i=new m0t,r=g0t(),n={version:0,hash:{directionalLength:-1,pointLength:-1,spotLength:-1,rectAreaLength:-1,hemiLength:-1,numDirectionalShadows:-1,numPointShadows:-1,numSpotShadows:-1,numSpotMaps:-1},ambient:[0,0,0],probe:[],directional:[],directionalShadow:[],directionalShadowMap:[],directionalShadowMatrix:[],spot:[],spotLightMap:[],spotShadow:[],spotShadowMap:[],spotLightMatrix:[],rectArea:[],rectAreaLTC1:null,rectAreaLTC2:null,point:[],pointShadow:[],pointShadowMap:[],pointShadowMatrix:[],hemi:[],numSpotLightShadowsWithMaps:0};for(let e=0;e<9;e++)n.probe.push(new A);let s=new A,a=new Be,o=new Be;return{setup:function(s,a){let o=0,l=0,h=0;for(let e=0;e<9;e++)n.probe[e].set(0,0,0);let u=0,c=0,p=0,d=0,f=0,m=0,g=0,y=0,v=0,T=0;s.sort(y0t);let x=!0!==a?Math.PI:1;for(let e=0,t=s.length;e0&&(t.isWebGL2||!0===e.has("OES_texture_float_linear")?(n.rectAreaLTC1=At.LTC_FLOAT_1,n.rectAreaLTC2=At.LTC_FLOAT_2):!0===e.has("OES_texture_half_float_linear")?(n.rectAreaLTC1=At.LTC_HALF_1,n.rectAreaLTC2=At.LTC_HALF_2):console.error("THREE.WebGLRenderer: Unable to use RectAreaLight. Missing WebGL extensions.")),n.ambient[0]=o,n.ambient[1]=l,n.ambient[2]=h;let b=n.hash;(b.directionalLength!==u||b.pointLength!==c||b.spotLength!==p||b.rectAreaLength!==d||b.hemiLength!==f||b.numDirectionalShadows!==m||b.numPointShadows!==g||b.numSpotShadows!==y||b.numSpotMaps!==v)&&(n.directional.length=u,n.spot.length=p,n.rectArea.length=d,n.point.length=c,n.hemi.length=f,n.directionalShadow.length=m,n.directionalShadowMap.length=m,n.pointShadow.length=g,n.pointShadowMap.length=g,n.spotShadow.length=y,n.spotShadowMap.length=y,n.directionalShadowMatrix.length=m,n.pointShadowMatrix.length=g,n.spotLightMatrix.length=y+v-T,n.spotLightMap.length=v,n.numSpotLightShadowsWithMaps=T,b.directionalLength=u,b.pointLength=c,b.spotLength=p,b.rectAreaLength=d,b.hemiLength=f,b.numDirectionalShadows=m,b.numPointShadows=g,b.numSpotShadows=y,b.numSpotMaps=v,n.version=v0t++)},setupView:function(e,t){let i=0,r=0,l=0,h=0,u=0,c=t.matrixWorldInverse;for(let t=0,p=e.length;t=a.length?(s=new Bce(e,t),a.push(s)):s=a[n],s},dispose:function(){i=new WeakMap}}}var Ip=class extends jr{constructor(e){super(),this.isMeshDepthMaterial=!0,this.type="MeshDepthMaterial",this.depthPacking=dhe,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.setValues(e)}copy(e){return super.copy(e),this.depthPacking=e.depthPacking,this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this}},ux=class extends jr{constructor(e){super(),this.isMeshDistanceMaterial=!0,this.type="MeshDistanceMaterial",this.referencePosition=new A,this.nearDistance=1,this.farDistance=1e3,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.setValues(e)}copy(e){return super.copy(e),this.referencePosition.copy(e.referencePosition),this.nearDistance=e.nearDistance,this.farDistance=e.farDistance,this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this}},b0t="void main() {\n\tgl_Position = vec4( position, 1.0 );\n}",x0t="uniform sampler2D shadow_pass;\nuniform vec2 resolution;\nuniform float radius;\n#include \nvoid main() {\n\tconst float samples = float( VSM_SAMPLES );\n\tfloat mean = 0.0;\n\tfloat squared_mean = 0.0;\n\tfloat uvStride = samples <= 1.0 ? 0.0 : 2.0 / ( samples - 1.0 );\n\tfloat uvStart = samples <= 1.0 ? 0.0 : - 1.0;\n\tfor ( float i = 0.0; i < samples; i ++ ) {\n\t\tfloat uvOffset = uvStart + i * uvStride;\n\t\t#ifdef HORIZONTAL_PASS\n\t\t\tvec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( uvOffset, 0.0 ) * radius ) / resolution ) );\n\t\t\tmean += distribution.x;\n\t\t\tsquared_mean += distribution.y * distribution.y + distribution.x * distribution.x;\n\t\t#else\n\t\t\tfloat depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, uvOffset ) * radius ) / resolution ) );\n\t\t\tmean += depth;\n\t\t\tsquared_mean += depth * depth;\n\t\t#endif\n\t}\n\tmean = mean / samples;\n\tsquared_mean = squared_mean / samples;\n\tfloat std_dev = sqrt( squared_mean - mean * mean );\n\tgl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) );\n}";function I0t(e,t,i){let r=new $s,n=new le,s=new le,a=new Gr,o=new Ip({depthPacking:Wy}),l=new ux,h={},u=i.maxTextureSize,c={[tn]:zn,[zn]:tn,[gi]:gi},p=new Yt({defines:{VSM_SAMPLES:8},uniforms:{shadow_pass:{value:null},resolution:{value:new le},radius:{value:4}},vertexShader:b0t,fragmentShader:x0t}),d=p.clone();d.defines.HORIZONTAL_PASS=1;let f=new lt;f.setAttribute("position",new Wt(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));let m=new rt(f,p),g=this;function y(i,r){let s=t.update(m);p.defines.VSM_SAMPLES!==i.blurSamples&&(p.defines.VSM_SAMPLES=i.blurSamples,d.defines.VSM_SAMPLES=i.blurSamples,p.needsUpdate=!0,d.needsUpdate=!0),null===i.mapPass&&(i.mapPass=new zr(n.x,n.y)),p.uniforms.shadow_pass.value=i.map.texture,p.uniforms.resolution.value=i.mapSize,p.uniforms.radius.value=i.radius,e.setRenderTarget(i.mapPass),e.clear(),e.renderBufferDirect(r,null,s,p,m,null),d.uniforms.shadow_pass.value=i.mapPass.texture,d.uniforms.resolution.value=i.mapSize,d.uniforms.radius.value=i.radius,e.setRenderTarget(i.map),e.clear(),e.renderBufferDirect(r,null,s,d,m,null)}function v(t,i,r,n,s,a){let u=null,p=!0===r.isPointLight?t.customDistanceMaterial:t.customDepthMaterial;if(void 0!==p)u=p;else if(u=!0===r.isPointLight?l:o,e.localClippingEnabled&&!0===i.clipShadows&&Array.isArray(i.clippingPlanes)&&0!==i.clippingPlanes.length||i.displacementMap&&0!==i.displacementScale||i.alphaMap&&i.alphaTest>0||i.map&&i.alphaTest>0){let e=u.uuid,t=i.uuid,r=h[e];void 0===r&&(r={},h[e]=r);let n=r[t];void 0===n&&(n=u.clone(),r[t]=n),u=n}return u.visible=i.visible,u.wireframe=i.wireframe,u.side=a===Sy?null!==i.shadowSide?i.shadowSide:i.side:null!==i.shadowSide?i.shadowSide:c[i.side],u.alphaMap=i.alphaMap,u.alphaTest=i.alphaTest,u.map=i.map,u.clipShadows=i.clipShadows,u.clippingPlanes=i.clippingPlanes,u.clipIntersection=i.clipIntersection,u.displacementMap=i.displacementMap,u.displacementScale=i.displacementScale,u.displacementBias=i.displacementBias,u.wireframeLinewidth=i.wireframeLinewidth,u.linewidth=i.linewidth,!0===r.isPointLight&&!0===u.isMeshDistanceMaterial&&(u.referencePosition.setFromMatrixPosition(r.matrixWorld),u.nearDistance=n,u.farDistance=s),u}function T(i,n,s,a,o){if(!1===i.visible)return;if(i.layers.test(n.layers)&&(i.isMesh||i.isLine||i.isPoints)&&(i.castShadow||i.receiveShadow&&o===Sy)&&(!i.frustumCulled||r.intersectsObject(i))){i.modelViewMatrix.multiplyMatrices(s.matrixWorldInverse,i.matrixWorld);let r=t.update(i),n=i.material;if(Array.isArray(n)){let t=r.groups;for(let l=0,h=t.length;lu||n.y>u)&&(n.x>u&&(s.x=Math.floor(u/d.x),n.x=s.x*d.x,c.mapSize.x=s.x),n.y>u&&(s.y=Math.floor(u/d.y),n.y=s.y*d.y,c.mapSize.y=s.y)),null===c.map){let e=this.type!==Sy?{minFilter:Ci,magFilter:Ci}:{};c.map=new zr(n.x,n.y,e),c.map.texture.name=h.name+".shadowMap",c.camera.updateProjectionMatrix()}e.setRenderTarget(c.map),e.clear();let f=c.getViewportCount();for(let e=0;e=1):-1!==R.indexOf("OpenGL ES")&&(O=parseFloat(/^OpenGL ES (\d)/.exec(R)[1]),D=O>=2);let C=null,N={},P=e.getParameter(3088),L=e.getParameter(2978),F=(new Gr).fromArray(P),U=(new Gr).fromArray(L);function k(t,i,r){let n=new Uint8Array(4),s=e.createTexture();e.bindTexture(t,s),e.texParameteri(t,10241,9728),e.texParameteri(t,10240,9728);for(let t=0;tr||e.height>r)&&(n=r/Math.max(e.width,e.height)),n<1||!0===t){if("undefined"!=typeof HTMLImageElement&&e instanceof HTMLImageElement||"undefined"!=typeof HTMLCanvasElement&&e instanceof HTMLCanvasElement||"undefined"!=typeof ImageBitmap&&e instanceof ImageBitmap){let r=t?CD:Math.floor,s=r(n*e.width),a=r(n*e.height);void 0===o&&(o=v(s,a));let l=i?v(s,a):o;return l.width=s,l.height=a,l.getContext("2d").drawImage(e,0,0,s,a),console.warn("THREE.WebGLRenderer: Texture has been resized from ("+e.width+"x"+e.height+") to ("+s+"x"+a+")."),l}return"data"in e&&console.warn("THREE.WebGLRenderer: Image in DataTexture is too big ("+e.width+"x"+e.height+")."),e}return e}function x(e){return d4(e.width)&&d4(e.height)}function b(e,t){return e.generateMipmaps&&t&&e.minFilter!==Ci&&e.minFilter!==oi}function _(t){e.generateMipmap(t)}function E(i,r,n,s,a=!1){if(!1===l)return r;if(null!==i){if(void 0!==e[i])return e[i];console.warn("THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '"+i+"'")}let o=r;return 6403===r&&(5126===n&&(o=33326),5131===n&&(o=33325),5121===n&&(o=33321)),33319===r&&(5126===n&&(o=33328),5131===n&&(o=33327),5121===n&&(o=33323)),6408===r&&(5126===n&&(o=34836),5131===n&&(o=34842),5121===n&&(o=s===gr&&!1===a?35907:32856),32819===n&&(o=32854),32820===n&&(o=32855)),(33325===o||33326===o||33327===o||33328===o||34842===o||34836===o)&&t.get("EXT_color_buffer_float"),o}function w(e,t,i){return!0===b(e,i)||e.isFramebufferTexture&&e.minFilter!==Ci&&e.minFilter!==oi?Math.log2(Math.max(t.width,t.height))+1:void 0!==e.mipmaps&&e.mipmaps.length>0?e.mipmaps.length:e.isCompressedTexture&&Array.isArray(e.image)?t.mipmaps.length:1}function S(e){return e===Ci||e===lf||e===mp?9728:9729}function I(e){let t=e.target;t.removeEventListener("dispose",I),function(e){let t=r.get(e);if(void 0===t.__webglInit)return;let i=e.source,n=g.get(i);if(n){let r=n[t.__cacheKey];r.usedTimes--,0===r.usedTimes&&A(e),0===Object.keys(n).length&&g.delete(i)}r.remove(e)}(t),t.isVideoTexture&&m.delete(t)}function M(t){let i=t.target;i.removeEventListener("dispose",M),function(t){let i=t.texture,n=r.get(t),s=r.get(i);if(void 0!==s.__webglTexture&&(e.deleteTexture(s.__webglTexture),a.memory.textures--),t.depthTexture&&t.depthTexture.dispose(),t.isWebGLCubeRenderTarget)for(let t=0;t<6;t++)e.deleteFramebuffer(n.__webglFramebuffer[t]),n.__webglDepthbuffer&&e.deleteRenderbuffer(n.__webglDepthbuffer[t]);else{if(e.deleteFramebuffer(n.__webglFramebuffer),n.__webglDepthbuffer&&e.deleteRenderbuffer(n.__webglDepthbuffer),n.__webglMultisampledFramebuffer&&e.deleteFramebuffer(n.__webglMultisampledFramebuffer),n.__webglColorRenderbuffer)for(let t=0;t0&&n.__version!==e.version){let i=e.image;if(null===i)console.warn("THREE.WebGLRenderer: Texture marked for update but no image data found.");else{if(!1!==i.complete)return void L(n,e,t);console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete")}}i.bindTexture(3553,n.__webglTexture,33984+t)}let R={[vn]:10497,[gn]:33071,[yp]:33648},C={[Ci]:9728,[lf]:9984,[mp]:9986,[oi]:9729,[kg]:9985,[Ra]:9987};function N(i,s,a){if(a?(e.texParameteri(i,10242,R[s.wrapS]),e.texParameteri(i,10243,R[s.wrapT]),(32879===i||35866===i)&&e.texParameteri(i,32882,R[s.wrapR]),e.texParameteri(i,10240,C[s.magFilter]),e.texParameteri(i,10241,C[s.minFilter])):(e.texParameteri(i,10242,33071),e.texParameteri(i,10243,33071),(32879===i||35866===i)&&e.texParameteri(i,32882,33071),(s.wrapS!==gn||s.wrapT!==gn)&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping."),e.texParameteri(i,10240,S(s.magFilter)),e.texParameteri(i,10241,S(s.minFilter)),s.minFilter!==Ci&&s.minFilter!==oi&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.")),!0===t.has("EXT_texture_filter_anisotropic")){let a=t.get("EXT_texture_filter_anisotropic");if(s.magFilter===Ci||s.minFilter!==mp&&s.minFilter!==Ra||s.type===wa&&!1===t.has("OES_texture_float_linear")||!1===l&&s.type===Uo&&!1===t.has("OES_texture_half_float_linear"))return;(s.anisotropy>1||r.get(s).__currentAnisotropy)&&(e.texParameterf(i,a.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(s.anisotropy,n.getMaxAnisotropy())),r.get(s).__currentAnisotropy=s.anisotropy)}}function P(t,i){let r=!1;void 0===t.__webglInit&&(t.__webglInit=!0,i.addEventListener("dispose",I));let n=i.source,s=g.get(n);void 0===s&&(s={},g.set(n,s));let o=function(e){let t=[];return t.push(e.wrapS),t.push(e.wrapT),t.push(e.wrapR||0),t.push(e.magFilter),t.push(e.minFilter),t.push(e.anisotropy),t.push(e.internalFormat),t.push(e.format),t.push(e.type),t.push(e.generateMipmaps),t.push(e.premultiplyAlpha),t.push(e.flipY),t.push(e.unpackAlignment),t.push(e.encoding),t.join()}(i);if(o!==t.__cacheKey){void 0===s[o]&&(s[o]={texture:e.createTexture(),usedTimes:0},a.memory.textures++,r=!0),s[o].usedTimes++;let n=s[t.__cacheKey];void 0!==n&&(s[t.__cacheKey].usedTimes--,0===n.usedTimes&&A(i)),t.__cacheKey=o,t.__webglTexture=s[o].texture}return r}function L(t,n,a){let o=3553;(n.isDataArrayTexture||n.isCompressedArrayTexture)&&(o=35866),n.isData3DTexture&&(o=32879);let h=P(t,n),u=n.source;i.bindTexture(o,t.__webglTexture,33984+a);let p=r.get(u);if(u.version!==p.__version||!0===h){i.activeTexture(33984+a),e.pixelStorei(37440,n.flipY),e.pixelStorei(37441,n.premultiplyAlpha),e.pixelStorei(3317,n.unpackAlignment),e.pixelStorei(37443,0);let t=function(e){return!l&&(e.wrapS!==gn||e.wrapT!==gn||e.minFilter!==Ci&&e.minFilter!==oi)}(n)&&!1===x(n.image),r=T(n.image,t,!1,c);r=G(n,r);let d=x(r)||l,f=s.convert(n.format,n.encoding),m=s.convert(n.type),g=E(n.internalFormat,f,m,n.encoding,n.isVideoTexture);N(o,n,d);let y,v=n.mipmaps,S=l&&!0!==n.isVideoTexture,I=void 0===p.__version||!0===h,M=w(n,r,d);if(n.isDepthTexture)g=6402,l?g=n.type===wa?36012:n.type===nf?33190:n.type===gp?35056:33189:n.type===wa&&console.error("WebGLRenderer: Floating point depth texture requires WebGL2."),n.format===sf&&6402===g&&n.type!==Ax&&n.type!==nf&&(console.warn("THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture."),n.type=nf,m=s.convert(n.type)),n.format===Tp&&6402===g&&(g=34041,n.type!==gp&&(console.warn("THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture."),n.type=gp,m=s.convert(n.type))),I&&(S?i.texStorage2D(3553,1,g,r.width,r.height):i.texImage2D(3553,0,g,r.width,r.height,0,f,m,null));else if(n.isDataTexture)if(v.length>0&&d){S&&I&&i.texStorage2D(3553,M,g,v[0].width,v[0].height);for(let e=0,t=v.length;e>=1,t>>=1}}else if(v.length>0&&d){S&&I&&i.texStorage2D(3553,M,g,v[0].width,v[0].height);for(let e=0,t=v.length;e=34069&&l<=34074)&&e.framebufferTexture2D(36160,o,l,r.get(a).__webglTexture,0),i.bindFramebuffer(36160,null)}function U(t,i,r){if(e.bindRenderbuffer(36161,t),i.depthBuffer&&!i.stencilBuffer){let n=33189;if(r||H(i)){let t=i.depthTexture;t&&t.isDepthTexture&&(t.type===wa?n=36012:t.type===nf&&(n=33190));let r=B(i);H(i)?d.renderbufferStorageMultisampleEXT(36161,r,n,i.width,i.height):e.renderbufferStorageMultisample(36161,r,n,i.width,i.height)}else e.renderbufferStorage(36161,n,i.width,i.height);e.framebufferRenderbuffer(36160,36096,36161,t)}else if(i.depthBuffer&&i.stencilBuffer){let n=B(i);r&&!1===H(i)?e.renderbufferStorageMultisample(36161,n,35056,i.width,i.height):H(i)?d.renderbufferStorageMultisampleEXT(36161,n,35056,i.width,i.height):e.renderbufferStorage(36161,34041,i.width,i.height),e.framebufferRenderbuffer(36160,33306,36161,t)}else{let t=!0===i.isWebGLMultipleRenderTargets?i.texture:[i.texture];for(let n=0;n0&&!0===t.has("WEBGL_multisampled_render_to_texture")&&!1!==i.__useRenderToTexture}function G(e,i){let r=e.encoding,n=e.format,s=e.type;return!0===e.isCompressedTexture||!0===e.isVideoTexture||e.format===DD||r!==_l&&(r===gr?!1===l?!0===t.has("EXT_sRGB")&&n===Bs?(e.format=DD,e.minFilter=oi,e.generateMipmaps=!1):i=ox.sRGBToLinear(i):(n!==Bs||s!==Fu)&&console.warn("THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType."):console.error("THREE.WebGLTextures: Unsupported texture encoding:",r)),i}this.allocateTextureUnit=function(){let e=D;return e>=h&&console.warn("THREE.WebGLTextures: Trying to use "+e+" texture units while this GPU supports only "+h),D+=1,e},this.resetTextureUnits=function(){D=0},this.setTexture2D=O,this.setTexture2DArray=function(e,t){let n=r.get(e);e.version>0&&n.__version!==e.version?L(n,e,t):i.bindTexture(35866,n.__webglTexture,33984+t)},this.setTexture3D=function(e,t){let n=r.get(e);e.version>0&&n.__version!==e.version?L(n,e,t):i.bindTexture(32879,n.__webglTexture,33984+t)},this.setTextureCube=function(t,n){let a=r.get(t);t.version>0&&a.__version!==t.version?function(t,n,a){if(6!==n.image.length)return;let o=P(t,n),h=n.source;i.bindTexture(34067,t.__webglTexture,33984+a);let c=r.get(h);if(h.version!==c.__version||!0===o){i.activeTexture(33984+a),e.pixelStorei(37440,n.flipY),e.pixelStorei(37441,n.premultiplyAlpha),e.pixelStorei(3317,n.unpackAlignment),e.pixelStorei(37443,0);let t=n.isCompressedTexture||n.image[0].isCompressedTexture,r=n.image[0]&&n.image[0].isDataTexture,p=[];for(let e=0;e<6;e++)p[e]=t||r?r?n.image[e].image:n.image[e]:T(n.image[e],!1,!0,u),p[e]=G(n,p[e]);let d,f=p[0],m=x(f)||l,g=s.convert(n.format,n.encoding),y=s.convert(n.type),v=E(n.internalFormat,g,y,n.encoding),S=l&&!0!==n.isVideoTexture,I=void 0===c.__version||!0===o,M=w(n,f,m);if(N(34067,n,m),t){S&&I&&i.texStorage2D(34067,M,v,f.width,f.height);for(let e=0;e<6;e++){d=p[e].mipmaps;for(let t=0;t0&&M++,i.texStorage2D(34067,M,v,p[0].width,p[0].height));for(let e=0;e<6;e++)if(r){S?i.texSubImage2D(34069+e,0,0,0,p[e].width,p[e].height,g,y,p[e].data):i.texImage2D(34069+e,0,v,p[e].width,p[e].height,0,g,y,p[e].data);for(let t=0;t0&&!1===H(t)){let r=p?o:[o];h.__webglMultisampledFramebuffer=e.createFramebuffer(),h.__webglColorRenderbuffer=[],i.bindFramebuffer(36160,h.__webglMultisampledFramebuffer);for(let i=0;i0&&!1===H(t)){let n=t.isWebGLMultipleRenderTargets?t.texture:[t.texture],s=t.width,a=t.height,o=16384,l=[],h=t.stencilBuffer?33306:36096,u=r.get(t),c=!0===t.isWebGLMultipleRenderTargets;if(c)for(let t=0;to+h?(l.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:e.handedness,target:this})):!l.inputState.pinching&&a<=o-h&&(l.inputState.pinching=!0,this.dispatchEvent({type:"pinchstart",handedness:e.handedness,target:this}))}else null!==o&&e.gripSpace&&(n=t.getPose(e.gripSpace,i),null!==n&&(o.matrix.fromArray(n.transform.matrix),o.matrix.decompose(o.position,o.rotation,o.scale),n.linearVelocity?(o.hasLinearVelocity=!0,o.linearVelocity.copy(n.linearVelocity)):o.hasLinearVelocity=!1,n.angularVelocity?(o.hasAngularVelocity=!0,o.angularVelocity.copy(n.angularVelocity)):o.hasAngularVelocity=!1));null!==a&&(r=t.getPose(e.targetRaySpace,i),null===r&&null!==n&&(r=n),null!==r&&(a.matrix.fromArray(r.transform.matrix),a.matrix.decompose(a.position,a.rotation,a.scale),r.linearVelocity?(a.hasLinearVelocity=!0,a.linearVelocity.copy(r.linearVelocity)):a.hasLinearVelocity=!1,r.angularVelocity?(a.hasAngularVelocity=!0,a.angularVelocity.copy(r.angularVelocity)):a.hasAngularVelocity=!1,this.dispatchEvent(w0t)))}return null!==a&&(a.visible=null!==r),null!==o&&(o.visible=null!==n),null!==l&&(l.visible=null!==s),this}_getHandJoint(e,t){if(void 0===e.joints[t.jointName]){let i=new ur;i.matrixAutoUpdate=!1,i.visible=!1,e.joints[t.jointName]=i,e.add(i)}return e.joints[t.jointName]}},cf=class extends Bi{constructor(e,t,i,r,n,s,a,o,l,h){if((h=void 0!==h?h:sf)!==sf&&h!==Tp)throw new Error("DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat");void 0===i&&h===sf&&(i=nf),void 0===i&&h===Tp&&(i=gp),super(null,r,n,s,a,o,h,i,l),this.isDepthTexture=!0,this.image={width:e,height:t},this.magFilter=void 0!==a?a:Ci,this.minFilter=void 0!==o?o:Ci,this.flipY=!1,this.generateMipmaps=!1}},C4=class extends Bo{constructor(e,t){super();let i=this,r=null,n=1,s=null,a="local-floor",o=1,l=null,h=null,u=null,c=null,p=null,d=null,f=t.getContextAttributes(),m=null,g=null,y=[],v=[],T=new Set,x=new Map,b=new Vr;b.layers.enable(1),b.viewport=new Gr;let _=new Vr;_.layers.enable(2),_.viewport=new Gr;let E=[b,_],w=new PD;w.layers.enable(1),w.layers.enable(2);let S=null,I=null;function M(e){let t=v.indexOf(e.inputSource);if(-1===t)return;let i=y[t];void 0!==i&&i.dispatchEvent({type:e.type,data:e.inputSource})}function D(){r.removeEventListener("select",M),r.removeEventListener("selectstart",M),r.removeEventListener("selectend",M),r.removeEventListener("squeeze",M),r.removeEventListener("squeezestart",M),r.removeEventListener("squeezeend",M),r.removeEventListener("end",D),r.removeEventListener("inputsourceschange",O);for(let e=0;e=0&&(v[r]=null,y[r].disconnect(i))}for(let t=0;t=v.length){v.push(i),r=e;break}if(null===v[e]){v[e]=i,r=e;break}}if(-1===r)break}let n=y[r];n&&n.connect(i)}}this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function(e){let t=y[e];return void 0===t&&(t=new Qb,y[e]=t),t.getTargetRaySpace()},this.getControllerGrip=function(e){let t=y[e];return void 0===t&&(t=new Qb,y[e]=t),t.getGripSpace()},this.getHand=function(e){let t=y[e];return void 0===t&&(t=new Qb,y[e]=t),t.getHandSpace()},this.setFramebufferScaleFactor=function(e){n=e,!0===i.isPresenting&&console.warn("THREE.WebXRManager: Cannot change framebuffer scale while presenting.")},this.setReferenceSpaceType=function(e){a=e,!0===i.isPresenting&&console.warn("THREE.WebXRManager: Cannot change reference space type while presenting.")},this.getReferenceSpace=function(){return l||s},this.setReferenceSpace=function(e){l=e},this.getBaseLayer=function(){return null!==c?c:p},this.getBinding=function(){return u},this.getFrame=function(){return d},this.getSession=function(){return r},this.setSession=function(h){return ht(this,null,(function*(){if(r=h,null!==r){if(m=e.getRenderTarget(),r.addEventListener("select",M),r.addEventListener("selectstart",M),r.addEventListener("selectend",M),r.addEventListener("squeeze",M),r.addEventListener("squeezestart",M),r.addEventListener("squeezeend",M),r.addEventListener("end",D),r.addEventListener("inputsourceschange",O),!0!==f.xrCompatible&&(yield t.makeXRCompatible()),void 0===r.renderState.layers||!1===e.capabilities.isWebGL2){let i={antialias:void 0!==r.renderState.layers||f.antialias,alpha:f.alpha,depth:f.depth,stencil:f.stencil,framebufferScaleFactor:n};p=new XRWebGLLayer(r,t,i),r.updateRenderState({baseLayer:p}),g=new zr(p.framebufferWidth,p.framebufferHeight,{format:Bs,type:Fu,encoding:e.outputEncoding,stencilBuffer:f.stencil})}else{let i=null,s=null,a=null;f.depth&&(a=f.stencil?35056:33190,i=f.stencil?Tp:sf,s=f.stencil?gp:nf);let o={colorFormat:32856,depthFormat:a,scaleFactor:n};u=new XRWebGLBinding(r,t),c=u.createProjectionLayer(o),r.updateRenderState({layers:[c]}),g=new zr(c.textureWidth,c.textureHeight,{format:Bs,type:Fu,depthTexture:new cf(c.textureWidth,c.textureHeight,s,void 0,void 0,void 0,void 0,void 0,void 0,i),stencilBuffer:f.stencil,encoding:e.outputEncoding,samples:f.antialias?4:0}),e.properties.get(g).__ignoreDepthValues=c.ignoreDepthValues}g.isXRRenderTarget=!0,this.setFoveation(o),l=null,s=yield r.requestReferenceSpace(a),L.setContext(r),L.start(),i.isPresenting=!0,i.dispatchEvent({type:"sessionstart"})}}))};let R=new A,C=new A;function N(e,t){null===t?e.matrixWorld.copy(e.matrix):e.matrixWorld.multiplyMatrices(t.matrixWorld,e.matrix),e.matrixWorldInverse.copy(e.matrixWorld).invert()}this.updateCamera=function(e){if(null===r)return;w.near=_.near=b.near=e.near,w.far=_.far=b.far=e.far,(S!==w.near||I!==w.far)&&(r.updateRenderState({depthNear:w.near,depthFar:w.far}),S=w.near,I=w.far);let t=e.parent,i=w.cameras;N(w,t);for(let e=0;et&&(x.set(e,e.lastChangedTime),i.dispatchEvent({type:"planechanged",data:e}))}else T.add(e),x.set(e,r.lastChangedTime),i.dispatchEvent({type:"planeadded",data:e})}d=null})),this.setAnimationLoop=function(e){P=e},this.dispose=function(){}}};function R0t(e,t){function i(i,r){i.opacity.value=r.opacity,r.color&&i.diffuse.value.copy(r.color),r.emissive&&i.emissive.value.copy(r.emissive).multiplyScalar(r.emissiveIntensity),r.map&&(i.map.value=r.map),r.alphaMap&&(i.alphaMap.value=r.alphaMap),r.bumpMap&&(i.bumpMap.value=r.bumpMap,i.bumpScale.value=r.bumpScale,r.side===zn&&(i.bumpScale.value*=-1)),r.displacementMap&&(i.displacementMap.value=r.displacementMap,i.displacementScale.value=r.displacementScale,i.displacementBias.value=r.displacementBias),r.emissiveMap&&(i.emissiveMap.value=r.emissiveMap),r.normalMap&&(i.normalMap.value=r.normalMap,i.normalScale.value.copy(r.normalScale),r.side===zn&&i.normalScale.value.negate()),r.specularMap&&(i.specularMap.value=r.specularMap),r.alphaTest>0&&(i.alphaTest.value=r.alphaTest);let n,s,a=t.get(r).envMap;if(a&&(i.envMap.value=a,i.flipEnvMap.value=a.isCubeTexture&&!1===a.isRenderTargetTexture?-1:1,i.reflectivity.value=r.reflectivity,i.ior.value=r.ior,i.refractionRatio.value=r.refractionRatio),r.lightMap){i.lightMap.value=r.lightMap;let t=!0!==e.physicallyCorrectLights?Math.PI:1;i.lightMapIntensity.value=r.lightMapIntensity*t}r.aoMap&&(i.aoMap.value=r.aoMap,i.aoMapIntensity.value=r.aoMapIntensity),r.map?n=r.map:r.specularMap?n=r.specularMap:r.displacementMap?n=r.displacementMap:r.normalMap?n=r.normalMap:r.bumpMap?n=r.bumpMap:r.roughnessMap?n=r.roughnessMap:r.metalnessMap?n=r.metalnessMap:r.alphaMap?n=r.alphaMap:r.emissiveMap?n=r.emissiveMap:r.clearcoatMap?n=r.clearcoatMap:r.clearcoatNormalMap?n=r.clearcoatNormalMap:r.clearcoatRoughnessMap?n=r.clearcoatRoughnessMap:r.iridescenceMap?n=r.iridescenceMap:r.iridescenceThicknessMap?n=r.iridescenceThicknessMap:r.specularIntensityMap?n=r.specularIntensityMap:r.specularColorMap?n=r.specularColorMap:r.transmissionMap?n=r.transmissionMap:r.thicknessMap?n=r.thicknessMap:r.sheenColorMap?n=r.sheenColorMap:r.sheenRoughnessMap&&(n=r.sheenRoughnessMap),void 0!==n&&(n.isWebGLRenderTarget&&(n=n.texture),!0===n.matrixAutoUpdate&&n.updateMatrix(),i.uvTransform.value.copy(n.matrix)),r.aoMap?s=r.aoMap:r.lightMap&&(s=r.lightMap),void 0!==s&&(s.isWebGLRenderTarget&&(s=s.texture),!0===s.matrixAutoUpdate&&s.updateMatrix(),i.uv2Transform.value.copy(s.matrix))}return{refreshFogUniforms:function(t,i){i.color.getRGB(t.fogColor.value,The(e)),i.isFog?(t.fogNear.value=i.near,t.fogFar.value=i.far):i.isFogExp2&&(t.fogDensity.value=i.density)},refreshMaterialUniforms:function(e,r,n,s,a){r.isMeshBasicMaterial||r.isMeshLambertMaterial?i(e,r):r.isMeshToonMaterial?(i(e,r),function(e,t){t.gradientMap&&(e.gradientMap.value=t.gradientMap)}(e,r)):r.isMeshPhongMaterial?(i(e,r),function(e,t){e.specular.value.copy(t.specular),e.shininess.value=Math.max(t.shininess,1e-4)}(e,r)):r.isMeshStandardMaterial?(i(e,r),function(e,i){e.roughness.value=i.roughness,e.metalness.value=i.metalness,i.roughnessMap&&(e.roughnessMap.value=i.roughnessMap),i.metalnessMap&&(e.metalnessMap.value=i.metalnessMap),t.get(i).envMap&&(e.envMapIntensity.value=i.envMapIntensity)}(e,r),r.isMeshPhysicalMaterial&&function(e,t,i){e.ior.value=t.ior,t.sheen>0&&(e.sheenColor.value.copy(t.sheenColor).multiplyScalar(t.sheen),e.sheenRoughness.value=t.sheenRoughness,t.sheenColorMap&&(e.sheenColorMap.value=t.sheenColorMap),t.sheenRoughnessMap&&(e.sheenRoughnessMap.value=t.sheenRoughnessMap)),t.clearcoat>0&&(e.clearcoat.value=t.clearcoat,e.clearcoatRoughness.value=t.clearcoatRoughness,t.clearcoatMap&&(e.clearcoatMap.value=t.clearcoatMap),t.clearcoatRoughnessMap&&(e.clearcoatRoughnessMap.value=t.clearcoatRoughnessMap),t.clearcoatNormalMap&&(e.clearcoatNormalScale.value.copy(t.clearcoatNormalScale),e.clearcoatNormalMap.value=t.clearcoatNormalMap,t.side===zn&&e.clearcoatNormalScale.value.negate())),t.iridescence>0&&(e.iridescence.value=t.iridescence,e.iridescenceIOR.value=t.iridescenceIOR,e.iridescenceThicknessMinimum.value=t.iridescenceThicknessRange[0],e.iridescenceThicknessMaximum.value=t.iridescenceThicknessRange[1],t.iridescenceMap&&(e.iridescenceMap.value=t.iridescenceMap),t.iridescenceThicknessMap&&(e.iridescenceThicknessMap.value=t.iridescenceThicknessMap)),t.transmission>0&&(e.transmission.value=t.transmission,e.transmissionSamplerMap.value=i.texture,e.transmissionSamplerSize.value.set(i.width,i.height),t.transmissionMap&&(e.transmissionMap.value=t.transmissionMap),e.thickness.value=t.thickness,t.thicknessMap&&(e.thicknessMap.value=t.thicknessMap),e.attenuationDistance.value=t.attenuationDistance,e.attenuationColor.value.copy(t.attenuationColor)),e.specularIntensity.value=t.specularIntensity,e.specularColor.value.copy(t.specularColor),t.specularIntensityMap&&(e.specularIntensityMap.value=t.specularIntensityMap),t.specularColorMap&&(e.specularColorMap.value=t.specularColorMap)}(e,r,a)):r.isMeshMatcapMaterial?(i(e,r),function(e,t){t.matcap&&(e.matcap.value=t.matcap)}(e,r)):r.isMeshDepthMaterial?i(e,r):r.isMeshDistanceMaterial?(i(e,r),function(e,t){e.referencePosition.value.copy(t.referencePosition),e.nearDistance.value=t.nearDistance,e.farDistance.value=t.farDistance}(e,r)):r.isMeshNormalMaterial?i(e,r):r.isLineBasicMaterial?(function(e,t){e.diffuse.value.copy(t.color),e.opacity.value=t.opacity}(e,r),r.isLineDashedMaterial&&function(e,t){e.dashSize.value=t.dashSize,e.totalSize.value=t.dashSize+t.gapSize,e.scale.value=t.scale}(e,r)):r.isPointsMaterial?function(e,t,i,r){let n;e.diffuse.value.copy(t.color),e.opacity.value=t.opacity,e.size.value=t.size*i,e.scale.value=.5*r,t.map&&(e.map.value=t.map),t.alphaMap&&(e.alphaMap.value=t.alphaMap),t.alphaTest>0&&(e.alphaTest.value=t.alphaTest),t.map?n=t.map:t.alphaMap&&(n=t.alphaMap),void 0!==n&&(!0===n.matrixAutoUpdate&&n.updateMatrix(),e.uvTransform.value.copy(n.matrix))}(e,r,n,s):r.isSpriteMaterial?function(e,t){let i;e.diffuse.value.copy(t.color),e.opacity.value=t.opacity,e.rotation.value=t.rotation,t.map&&(e.map.value=t.map),t.alphaMap&&(e.alphaMap.value=t.alphaMap),t.alphaTest>0&&(e.alphaTest.value=t.alphaTest),t.map?i=t.map:t.alphaMap&&(i=t.alphaMap),void 0!==i&&(!0===i.matrixAutoUpdate&&i.updateMatrix(),e.uvTransform.value.copy(i.matrix))}(e,r):r.isShadowMaterial?(e.color.value.copy(r.color),e.opacity.value=r.opacity):r.isShaderMaterial&&(r.uniformsNeedUpdate=!1)}}}function M0t(e,t,i,r){let n={},s={},a=[],o=i.isWebGL2?e.getParameter(35375):0;function l(e,t,i){let r=e.value;if(void 0===i[t]){if("number"==typeof r)i[t]=r;else{let e=Array.isArray(r)?r:[r],n=[];for(let t=0;t0){n=i%r,0!==n&&r-n-a.boundary<0&&(i+=r-n,s.__offset=i)}i+=a.storage}n=i%r,n>0&&(i+=r-n),e.__size=i,e.__cache={}}(i),p=function(t){let i=function(){for(let e=0;e0&&function(e,t,i){let r=j.isWebGL2;null===U&&(U=new zr(1,1,{generateMipmaps:!0,type:V.has("EXT_color_buffer_half_float")?Uo:Fu,minFilter:Ra,samples:r&&!0===a?4:0})),m.getDrawingBufferSize(B),r?U.setSize(B.x,B.y):U.setSize(CD(B.x),CD(B.y));let n=m.getRenderTarget();m.setRenderTarget(U),m.clear();let s=m.toneMapping;m.toneMapping=Lu,Ae(e,t,i),m.toneMapping=s,q.updateMultisampleRenderTarget(U),q.updateRenderTargetMipmap(U),m.setRenderTarget(n)}(n,t,i),r&&W.viewport(_.copy(r)),n.length>0&&Ae(n,t,i),s.length>0&&Ae(s,t,i),o.length>0&&Ae(o,t,i),W.buffers.depth.setTest(!0),W.buffers.depth.setMask(!0),W.buffers.color.setMask(!0),W.setPolygonOffset(!1)}function Ae(e,t,i){let r=!0===t.isScene?t.overrideMaterial:null;for(let n=0,s=e.length;n0?f[f.length-1]:null,d.pop(),c=d.length>0?d[d.length-1]:null},this.getActiveCubeFace=function(){return y},this.getActiveMipmapLevel=function(){return v},this.getRenderTarget=function(){return T},this.setRenderTargetTextures=function(e,t,i){X.get(e.texture).__webglTexture=t,X.get(e.depthTexture).__webglTexture=i;let r=X.get(e);r.__hasExternalTextures=!0,r.__hasExternalTextures&&(r.__autoAllocateDepthBuffer=void 0===i,r.__autoAllocateDepthBuffer||!0===V.has("WEBGL_multisampled_render_to_texture")&&(console.warn("THREE.WebGLRenderer: Render-to-texture extension was disabled because an external texture was provided"),r.__useRenderToTexture=!1))},this.setRenderTargetFramebuffer=function(e,t){let i=X.get(e);i.__webglFramebuffer=t,i.__useDefaultFramebuffer=void 0===t},this.setRenderTarget=function(e,t=0,i=0){T=e,y=t,v=i;let r=!0,n=null,s=!1,a=!1;if(e){let i=X.get(e);void 0!==i.__useDefaultFramebuffer?(W.bindFramebuffer(36160,null),r=!1):void 0===i.__webglFramebuffer?q.setupRenderTarget(e):i.__hasExternalTextures&&q.rebindTextures(e,X.get(e.texture).__webglTexture,X.get(e.depthTexture).__webglTexture);let o=e.texture;(o.isData3DTexture||o.isDataArrayTexture||o.isCompressedArrayTexture)&&(a=!0);let l=X.get(e).__webglFramebuffer;e.isWebGLCubeRenderTarget?(n=l[t],s=!0):n=j.isWebGL2&&e.samples>0&&!1===q.useMultisampledRTT(e)?X.get(e).__webglMultisampledFramebuffer:l,_.copy(e.viewport),E.copy(e.scissor),w=e.scissorTest}else _.copy(R).multiplyScalar(M).floor(),E.copy(C).multiplyScalar(M).floor(),w=N;if(W.bindFramebuffer(36160,n)&&j.drawBuffers&&r&&W.drawBuffers(e,n),W.viewport(_),W.scissor(E),W.setScissorTest(w),s){let r=X.get(e.texture);fe.framebufferTexture2D(36160,36064,34069+t,r.__webglTexture,i)}else if(a){let r=X.get(e.texture),n=t||0;fe.framebufferTextureLayer(36160,36064,r.__webglTexture,i||0,n)}x=-1},this.readRenderTargetPixels=function(e,t,i,r,n,s,a){if(!e||!e.isWebGLRenderTarget)return void console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");let o=X.get(e).__webglFramebuffer;if(e.isWebGLCubeRenderTarget&&void 0!==a&&(o=o[a]),o){W.bindFramebuffer(36160,o);try{let a=e.texture,o=a.format,l=a.type;if(o!==Bs&&ce.convert(o)!==fe.getParameter(35739))return void console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.");let h=l===Uo&&(V.has("EXT_color_buffer_half_float")||j.isWebGL2&&V.has("EXT_color_buffer_float"));if(!(l===Fu||ce.convert(l)===fe.getParameter(35738)||l===wa&&(j.isWebGL2||V.has("OES_texture_float")||V.has("WEBGL_color_buffer_float"))||h))return void console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.");t>=0&&t<=e.width-r&&i>=0&&i<=e.height-n&&fe.readPixels(t,i,r,n,ce.convert(o),ce.convert(l),s)}finally{let e=null!==T?X.get(T).__webglFramebuffer:null;W.bindFramebuffer(36160,e)}}},this.copyFramebufferToTexture=function(e,t,i=0){let r=Math.pow(2,-i),n=Math.floor(t.image.width*r),s=Math.floor(t.image.height*r);q.setTexture2D(t,0),fe.copyTexSubImage2D(3553,i,0,0,e.x,e.y,n,s),W.unbindTexture()},this.copyTextureToTexture=function(e,t,i,r=0){let n=t.image.width,s=t.image.height,a=ce.convert(i.format),o=ce.convert(i.type);q.setTexture2D(i,0),fe.pixelStorei(37440,i.flipY),fe.pixelStorei(37441,i.premultiplyAlpha),fe.pixelStorei(3317,i.unpackAlignment),t.isDataTexture?fe.texSubImage2D(3553,r,e.x,e.y,n,s,a,o,t.image.data):t.isCompressedTexture?fe.compressedTexSubImage2D(3553,r,e.x,e.y,t.mipmaps[0].width,t.mipmaps[0].height,a,t.mipmaps[0].data):fe.texSubImage2D(3553,r,e.x,e.y,a,o,t.image),0===r&&i.generateMipmaps&&fe.generateMipmap(3553),W.unbindTexture()},this.copyTextureToTexture3D=function(e,t,i,r,n=0){if(m.isWebGL1Renderer)return void console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: can only be used with WebGL2.");let s,a=e.max.x-e.min.x+1,o=e.max.y-e.min.y+1,l=e.max.z-e.min.z+1,h=ce.convert(r.format),u=ce.convert(r.type);if(r.isData3DTexture)q.setTexture3D(r,0),s=32879;else{if(!r.isDataArrayTexture)return void console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: only supports THREE.DataTexture3D and THREE.DataTexture2DArray.");q.setTexture2DArray(r,0),s=35866}fe.pixelStorei(37440,r.flipY),fe.pixelStorei(37441,r.premultiplyAlpha),fe.pixelStorei(3317,r.unpackAlignment);let c=fe.getParameter(3314),p=fe.getParameter(32878),d=fe.getParameter(3316),f=fe.getParameter(3315),g=fe.getParameter(32877),y=i.isCompressedTexture?i.mipmaps[0]:i.image;fe.pixelStorei(3314,y.width),fe.pixelStorei(32878,y.height),fe.pixelStorei(3316,e.min.x),fe.pixelStorei(3315,e.min.y),fe.pixelStorei(32877,e.min.z),i.isDataTexture||i.isData3DTexture?fe.texSubImage3D(s,n,t.x,t.y,t.z,a,o,l,h,u,y.data):i.isCompressedArrayTexture?(console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: untested support for compressed srcTexture."),fe.compressedTexSubImage3D(s,n,t.x,t.y,t.z,a,o,l,h,y.data)):fe.texSubImage3D(s,n,t.x,t.y,t.z,a,o,l,h,u,y),fe.pixelStorei(3314,c),fe.pixelStorei(32878,p),fe.pixelStorei(3316,d),fe.pixelStorei(3315,f),fe.pixelStorei(32877,g),0===n&&r.generateMipmaps&&fe.generateMipmap(s),W.unbindTexture()},this.initTexture=function(e){e.isCubeTexture?q.setTextureCube(e,0):e.isData3DTexture?q.setTexture3D(e,0):e.isDataArrayTexture||e.isCompressedArrayTexture?q.setTexture2DArray(e,0):q.setTexture2D(e,0),W.unbindTexture()},this.resetState=function(){y=0,v=0,T=null,W.reset(),pe.reset()},"undefined"!=typeof __THREE_DEVTOOLS__&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}var ND=class extends Ol{};ND.prototype.isWebGL1Renderer=!0;var by,Ny=class{constructor(e,t=25e-5){this.isFogExp2=!0,this.name="",this.color=new je(e),this.density=t}clone(){return new Ny(this.color,this.density)}toJSON(){return{type:"FogExp2",color:this.color.getHex(),density:this.density}}},Uu=class{constructor(e,t=1,i=1e3){this.isFog=!0,this.name="",this.color=new je(e),this.near=t,this.far=i}clone(){return new Uu(this.color,this.near,this.far)}toJSON(){return{type:"Fog",color:this.color.getHex(),near:this.near,far:this.far}}},Nn=class extends sr{constructor(){super(),this.isScene=!0,this.type="Scene",this.background=null,this.environment=null,this.fog=null,this.backgroundBlurriness=0,this.backgroundIntensity=1,this.overrideMaterial=null,"undefined"!=typeof __THREE_DEVTOOLS__&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}copy(e,t){return super.copy(e,t),null!==e.background&&(this.background=e.background.clone()),null!==e.environment&&(this.environment=e.environment.clone()),null!==e.fog&&(this.fog=e.fog.clone()),this.backgroundBlurriness=e.backgroundBlurriness,this.backgroundIntensity=e.backgroundIntensity,null!==e.overrideMaterial&&(this.overrideMaterial=e.overrideMaterial.clone()),this.matrixAutoUpdate=e.matrixAutoUpdate,this}toJSON(e){let t=super.toJSON(e);return null!==this.fog&&(t.object.fog=this.fog.toJSON()),this.backgroundBlurriness>0&&(t.object.backgroundBlurriness=this.backgroundBlurriness),1!==this.backgroundIntensity&&(t.object.backgroundIntensity=this.backgroundIntensity),t}get autoUpdate(){return console.warn("THREE.Scene: autoUpdate was renamed to matrixWorldAutoUpdate in r144."),this.matrixWorldAutoUpdate}set autoUpdate(e){console.warn("THREE.Scene: autoUpdate was renamed to matrixWorldAutoUpdate in r144."),this.matrixWorldAutoUpdate=e}},_p=class{constructor(e,t){this.isInterleavedBuffer=!0,this.array=e,this.stride=t,this.count=void 0!==e?e.length/t:0,this.usage=nx,this.updateRange={offset:0,count:-1},this.version=0,this.uuid=Ho()}onUploadCallback(){}set needsUpdate(e){!0===e&&this.version++}setUsage(e){return this.usage=e,this}copy(e){return this.array=new e.array.constructor(e.array),this.count=e.count,this.stride=e.stride,this.usage=e.usage,this}copyAt(e,t,i){e*=this.stride,i*=t.stride;for(let r=0,n=this.stride;re.far||t.push({distance:o,point:qb.clone(),uv:hn.getUV(qb,QM,Xb,eD,kce,MH,Gce,new le),face:null,object:this})}copy(e,t){return super.copy(e,t),void 0!==e.center&&this.center.copy(e.center),this.material=e.material,this}};function tD(e,t,i,r,n,s){_y.subVectors(e,i).addScalar(.5).multiply(r),void 0!==n?(Yb.x=s*_y.x-n*_y.y,Yb.y=n*_y.x+s*_y.y):Yb.copy(_y),e.copy(t),e.x+=Yb.x,e.y+=Yb.y,e.applyMatrix4(whe)}var rD=new A,Vce=new A,FD=class extends sr{constructor(){super(),this._currentLevel=0,this.type="LOD",Object.defineProperties(this,{levels:{enumerable:!0,value:[]},isLOD:{value:!0}}),this.autoUpdate=!0}copy(e){super.copy(e,!1);let t=e.levels;for(let e=0,i=t.length;e0){let i,r;for(i=1,r=t.length;i0){rD.setFromMatrixPosition(this.matrixWorld);let i=e.ray.origin.distanceTo(rD);this.getObjectForDistance(i).raycast(e,t)}}update(e){let t=this.levels;if(t.length>1){rD.setFromMatrixPosition(e.matrixWorld),Vce.setFromMatrixPosition(this.matrixWorld);let i,r,n=rD.distanceTo(Vce)/e.zoom;for(t[0].object.visible=!0,i=1,r=t.length;i=e))break;t[i-1].object.visible=!1,t[i].object.visible=!0}for(this._currentLevel=i-1;io)continue;c.applyMatrix4(this.matrixWorld);let s=e.ray.origin.distanceTo(c);se.far||t.push({distance:s,point:u.clone().applyMatrix4(this.matrixWorld),index:i,face:null,faceIndex:null,object:this})}}else{for(let i=Math.max(0,s.start),r=Math.min(f.count,s.start+s.count)-1;io)continue;c.applyMatrix4(this.matrixWorld);let r=e.ray.origin.distanceTo(c);re.far||t.push({distance:r,point:u.clone().applyMatrix4(this.matrixWorld),index:i,face:null,faceIndex:null,object:this})}}}updateMorphTargets(){let e=this.geometry.morphAttributes,t=Object.keys(e);if(t.length>0){let i=e[t[0]];if(void 0!==i){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let e=0,t=i.length;e0){let i=e[t[0]];if(void 0!==i){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let e=0,t=i.length;en.far)return;s.push({distance:l,distanceToRay:Math.sqrt(o),point:i,index:t,face:null,object:a})}}var O4=class extends Bi{constructor(e,t,i,r,n,s,a,o,l){super(e,t,i,r,n,s,a,o,l),this.isVideoTexture=!0,this.minFilter=void 0!==s?s:oi,this.magFilter=void 0!==n?n:oi,this.generateMipmaps=!1;let h=this;"requestVideoFrameCallback"in e&&e.requestVideoFrameCallback((function t(){h.needsUpdate=!0,e.requestVideoFrameCallback(t)}))}clone(){return new this.constructor(this.image).copy(this)}update(){let e=this.image;"requestVideoFrameCallback"in e==!1&&e.readyState>=e.HAVE_CURRENT_DATA&&(this.needsUpdate=!0)}},P4=class extends Bi{constructor(e,t,i){super({width:e,height:t}),this.isFramebufferTexture=!0,this.format=i,this.magFilter=Ci,this.minFilter=Ci,this.generateMipmaps=!1,this.needsUpdate=!0}},hx=class extends Bi{constructor(e,t,i,r,n,s,a,o,l,h,u,c){super(null,s,a,o,l,h,r,n,u,c),this.isCompressedTexture=!0,this.image={width:t,height:i},this.mipmaps=e,this.flipY=!1,this.generateMipmaps=!1}},N4=class extends hx{constructor(e,t,i,r,n,s){super(e,t,i,n,s),this.isCompressedArrayTexture=!0,this.image.depth=r,this.wrapR=gn}},L4=class extends Bi{constructor(e,t,i,r,n,s,a,o,l){super(e,t,i,r,n,s,a,o,l),this.isCanvasTexture=!0,this.needsUpdate=!0}},Ma=class{constructor(){this.type="Curve",this.arcLengthDivisions=200}getPoint(){return console.warn("THREE.Curve: .getPoint() not implemented."),null}getPointAt(e,t){let i=this.getUtoTmapping(e);return this.getPoint(i,t)}getPoints(e=5){let t=[];for(let i=0;i<=e;i++)t.push(this.getPoint(i/e));return t}getSpacedPoints(e=5){let t=[];for(let i=0;i<=e;i++)t.push(this.getPointAt(i/e));return t}getLength(){let e=this.getLengths();return e[e.length-1]}getLengths(e=this.arcLengthDivisions){if(this.cacheArcLengths&&this.cacheArcLengths.length===e+1&&!this.needsUpdate)return this.cacheArcLengths;this.needsUpdate=!1;let t,i=[],r=this.getPoint(0),n=0;i.push(0);for(let s=1;s<=e;s++)t=this.getPoint(s/e),n+=t.distanceTo(r),i.push(n),r=t;return this.cacheArcLengths=i,i}updateArcLengths(){this.needsUpdate=!0,this.getLengths()}getUtoTmapping(e,t){let i,r=this.getLengths(),n=0,s=r.length;i=t||e*r[s-1];let a,o=0,l=s-1;for(;o<=l;)if(n=Math.floor(o+(l-o)/2),a=r[n]-i,a<0)o=n+1;else{if(!(a>0)){l=n;break}l=n-1}if(n=l,r[n]===i)return n/(s-1);let h=r[n];return(n+(i-h)/(r[n+1]-h))/(s-1)}getTangent(e,t){let i=e-1e-4,r=e+1e-4;i<0&&(i=0),r>1&&(r=1);let n=this.getPoint(i),s=this.getPoint(r),a=t||(n.isVector2?new le:new A);return a.copy(s).sub(n).normalize(),a}getTangentAt(e,t){let i=this.getUtoTmapping(e);return this.getTangent(i,t)}computeFrenetFrames(e,t){let i=new A,r=[],n=[],s=[],a=new A,o=new Be;for(let t=0;t<=e;t++){let i=t/e;r[t]=this.getTangentAt(i,new A)}n[0]=new A,s[0]=new A;let l=Number.MAX_VALUE,h=Math.abs(r[0].x),u=Math.abs(r[0].y),c=Math.abs(r[0].z);h<=l&&(l=h,i.set(1,0,0)),u<=l&&(l=u,i.set(0,1,0)),c<=l&&i.set(0,0,1),a.crossVectors(r[0],i).normalize(),n[0].crossVectors(r[0],a),s[0].crossVectors(r[0],n[0]);for(let t=1;t<=e;t++){if(n[t]=n[t-1].clone(),s[t]=s[t-1].clone(),a.crossVectors(r[t-1],r[t]),a.length()>Number.EPSILON){a.normalize();let e=Math.acos(Qn(r[t-1].dot(r[t]),-1,1));n[t].applyMatrix4(o.makeRotationAxis(a,e))}s[t].crossVectors(r[t],n[t])}if(!0===t){let t=Math.acos(Qn(n[0].dot(n[e]),-1,1));t/=e,r[0].dot(a.crossVectors(n[0],n[e]))>0&&(t=-t);for(let i=1;i<=e;i++)n[i].applyMatrix4(o.makeRotationAxis(r[i],t*i)),s[i].crossVectors(r[i],n[i])}return{tangents:r,normals:n,binormals:s}}clone(){return(new this.constructor).copy(this)}copy(e){return this.arcLengthDivisions=e.arcLengthDivisions,this}toJSON(){let e={metadata:{version:4.5,type:"Curve",generator:"Curve.toJSON"}};return e.arcLengthDivisions=this.arcLengthDivisions,e.type=this.type,e}fromJSON(e){return this.arcLengthDivisions=e.arcLengthDivisions,this}},wp=class extends Ma{constructor(e=0,t=0,i=1,r=1,n=0,s=2*Math.PI,a=!1,o=0){super(),this.isEllipseCurve=!0,this.type="EllipseCurve",this.aX=e,this.aY=t,this.xRadius=i,this.yRadius=r,this.aStartAngle=n,this.aEndAngle=s,this.aClockwise=a,this.aRotation=o}getPoint(e,t){let i=t||new le,r=2*Math.PI,n=this.aEndAngle-this.aStartAngle,s=Math.abs(n)r;)n-=r;n0?0:(Math.floor(Math.abs(l)/a)+1)*a:0===h&&l===a-1&&(l=a-2,h=1),this.closed||l>0?i=s[(l-1)%a]:(oD.subVectors(s[0],s[1]).add(s[0]),i=oD);let u=s[l%a],c=s[(l+1)%a];if(this.closed||l+2r.length-2?r.length-1:s+1],u=r[s>r.length-3?r.length-1:s+2];return i.set(iue(a,o.x,l.x,h.x,u.x),iue(a,o.y,l.y,h.y,u.y)),i}copy(e){super.copy(e),this.points=[];for(let t=0,i=e.points.length;t=i){let e=r[n]-i,s=this.curves[n],a=s.getLength(),o=0===a?0:1-e/a;return s.getPointAt(o,t)}n++}return null}getLength(){let e=this.getCurveLengths();return e[e.length-1]}updateArcLengths(){this.needsUpdate=!0,this.cacheLengths=null,this.getCurveLengths()}getCurveLengths(){if(this.cacheLengths&&this.cacheLengths.length===this.curves.length)return this.cacheLengths;let e=[],t=0;for(let i=0,r=this.curves.length;i1&&!i[i.length-1].equals(i[0])&&i.push(i[0]),i}copy(e){super.copy(e),this.curves=[];for(let t=0,i=e.curves.length;t0){let e=l.getPoint(0);e.equals(this.currentPoint)||this.lineTo(e.x,e.y)}this.curves.push(l);let h=l.getPoint(1);return this.currentPoint.copy(h),this}copy(e){return super.copy(e),this.currentPoint.copy(e.currentPoint),this}toJSON(){let e=super.toJSON();return e.currentPoint=this.currentPoint.toArray(),e}fromJSON(e){return super.fromJSON(e),this.currentPoint.fromArray(e.currentPoint),this}},uf=class extends lt{constructor(e=[new le(0,-.5),new le(.5,0),new le(0,.5)],t=12,i=0,r=2*Math.PI){super(),this.type="LatheGeometry",this.parameters={points:e,segments:t,phiStart:i,phiLength:r},t=Math.floor(t),r=Qn(r,0,2*Math.PI);let n=[],s=[],a=[],o=[],l=[],h=1/t,u=new A,c=new le,p=new A,d=new A,f=new A,m=0,g=0;for(let t=0;t<=e.length-1;t++)switch(t){case 0:m=e[t+1].x-e[t].x,g=e[t+1].y-e[t].y,p.x=1*g,p.y=-m,p.z=0*g,f.copy(p),p.normalize(),o.push(p.x,p.y,p.z);break;case e.length-1:o.push(f.x,f.y,f.z);break;default:m=e[t+1].x-e[t].x,g=e[t+1].y-e[t].y,p.x=1*g,p.y=-m,p.z=0*g,d.copy(p),p.x+=f.x,p.y+=f.y,p.z+=f.z,p.normalize(),o.push(p.x,p.y,p.z),f.copy(d)}for(let n=0;n<=t;n++){let p=i+n*h*r,d=Math.sin(p),f=Math.cos(p);for(let i=0;i<=e.length-1;i++){u.x=e[i].x*d,u.y=e[i].y,u.z=e[i].x*f,s.push(u.x,u.y,u.z),c.x=n/t,c.y=i/(e.length-1),a.push(c.x,c.y);let r=o[3*i+0]*d,h=o[3*i+1],p=o[3*i+0]*f;l.push(r,h,p)}}for(let i=0;i0&&y(!0),t>0&&y(!1)),this.setIndex(h),this.setAttribute("position",new dt(u,3)),this.setAttribute("normal",new dt(c,3)),this.setAttribute("uv",new dt(p,2))}static fromJSON(e){return new Rl(e.radiusTop,e.radiusBottom,e.height,e.radialSegments,e.heightSegments,e.openEnded,e.thetaStart,e.thetaLength)}},Rg=class extends Rl{constructor(e=1,t=1,i=32,r=1,n=!1,s=0,a=2*Math.PI){super(0,e,t,i,r,n,s,a),this.type="ConeGeometry",this.parameters={radius:e,height:t,radialSegments:i,heightSegments:r,openEnded:n,thetaStart:s,thetaLength:a}}static fromJSON(e){return new Rg(e.radius,e.height,e.radialSegments,e.heightSegments,e.openEnded,e.thetaStart,e.thetaLength)}},Dc=class extends lt{constructor(e=[],t=[],i=1,r=0){super(),this.type="PolyhedronGeometry",this.parameters={vertices:e,indices:t,radius:i,detail:r};let n=[],s=[];function a(e,t,i,r){let n=r+1,s=[];for(let r=0;r<=n;r++){s[r]=[];let a=e.clone().lerp(i,r/n),o=t.clone().lerp(i,r/n),l=n-r;for(let e=0;e<=l;e++)s[r][e]=0===e&&r===n?a:a.clone().lerp(o,e/l)}for(let e=0;e.9&&a<.1&&(t<.2&&(s[e+0]+=1),i<.2&&(s[e+2]+=1),r<.2&&(s[e+4]+=1))}}()}(),this.setAttribute("position",new dt(n,3)),this.setAttribute("normal",new dt(n.slice(),3)),this.setAttribute("uv",new dt(s,2)),0===r?this.computeVertexNormals():this.normalizeNormals()}static fromJSON(e){return new Dc(e.vertices,e.indices,e.radius,e.details)}},Mg=class extends Dc{constructor(e=1,t=0){let i=(1+Math.sqrt(5))/2,r=1/i;super([-1,-1,-1,-1,-1,1,-1,1,-1,-1,1,1,1,-1,-1,1,-1,1,1,1,-1,1,1,1,0,-r,-i,0,-r,i,0,r,-i,0,r,i,-r,-i,0,-r,i,0,r,-i,0,r,i,0,-i,0,-r,i,0,-r,-i,0,r,i,0,r],[3,11,7,3,7,15,3,15,13,7,19,17,7,17,6,7,6,15,17,4,8,17,8,10,17,10,6,8,0,16,8,16,2,8,2,10,0,12,1,0,1,18,0,18,16,6,10,2,6,2,13,6,13,15,2,16,18,2,18,3,2,3,13,18,1,9,18,9,11,18,11,3,4,14,12,4,12,0,4,0,8,11,9,5,11,5,19,11,19,7,19,5,14,19,14,4,19,4,17,1,12,14,1,14,5,1,5,9],e,t),this.type="DodecahedronGeometry",this.parameters={radius:e,detail:t}}static fromJSON(e){return new Mg(e.radius,e.detail)}},lD=new A,cD=new A,PH=new A,uD=new hn,Rp=class extends lt{constructor(e=null,t=1){if(super(),this.type="EdgesGeometry",this.parameters={geometry:e,thresholdAngle:t},null!==e){let i=Math.pow(10,4),r=Math.cos(vg*t),n=e.getIndex(),s=e.getAttribute("position"),a=n?n.count:s.count,o=[0,0,0],l=["a","b","c"],h=new Array(3),u={},c=[];for(let e=0;e80*i){r=s=e[0],n=a=e[1];for(let t=i;ts&&(s=o),l>a&&(a=l);h=Math.max(s-r,a-n),h=0!==h?32767/h:0}return mx(p,d,i,r,n,h,0),d}};function Rhe(e,t,i,r,n){let s,a;if(n===rvt(e,t,i,r)>0)for(s=t;s=t;s-=r)a=nue(s,e[s],e[s+1],a);return a&&lC(a,a.next)&&(vx(a),a=a.next),a}function Dg(e,t){if(!e)return e;t||(t=e);let i,r=e;do{if(i=!1,r.steiner||!lC(r,r.next)&&0!==Pn(r.prev,r,r.next))r=r.next;else{if(vx(r),r=t=r.prev,r===r.next)break;i=!0}}while(i||r!==t);return t}function mx(e,t,i,r,n,s,a){if(!e)return;!a&&s&&K0t(e,r,n,s);let o,l,h=e;for(;e.prev!==e.next;)if(o=e.prev,l=e.next,s?V0t(e,r,n,s):G0t(e))t.push(o.i/i|0),t.push(e.i/i|0),t.push(l.i/i|0),vx(e),e=l.next,h=l.next;else if((e=l)===h){a?1===a?mx(e=z0t(Dg(e),t,i),t,i,r,n,s,2):2===a&&j0t(e,t,i,r,n,s):mx(Dg(e),t,i,r,n,s,1);break}}function G0t(e){let t=e.prev,i=e,r=e.next;if(Pn(t,i,r)>=0)return!1;let n=t.x,s=i.x,a=r.x,o=t.y,l=i.y,h=r.y,u=ns?n>a?n:a:s>a?s:a,d=o>l?o>h?o:h:l>h?l:h,f=r.next;for(;f!==t;){if(f.x>=u&&f.x<=p&&f.y>=c&&f.y<=d&&My(n,o,s,l,a,h,f.x,f.y)&&Pn(f.prev,f,f.next)>=0)return!1;f=f.next}return!0}function V0t(e,t,i,r){let n=e.prev,s=e,a=e.next;if(Pn(n,s,a)>=0)return!1;let o=n.x,l=s.x,h=a.x,u=n.y,c=s.y,p=a.y,d=ol?o>h?o:h:l>h?l:h,g=u>c?u>p?u:p:c>p?c:p,y=F4(d,f,t,i,r),v=F4(m,g,t,i,r),T=e.prevZ,x=e.nextZ;for(;T&&T.z>=y&&x&&x.z<=v;){if(T.x>=d&&T.x<=m&&T.y>=f&&T.y<=g&&T!==n&&T!==a&&My(o,u,l,c,h,p,T.x,T.y)&&Pn(T.prev,T,T.next)>=0||(T=T.prevZ,x.x>=d&&x.x<=m&&x.y>=f&&x.y<=g&&x!==n&&x!==a&&My(o,u,l,c,h,p,x.x,x.y)&&Pn(x.prev,x,x.next)>=0))return!1;x=x.nextZ}for(;T&&T.z>=y;){if(T.x>=d&&T.x<=m&&T.y>=f&&T.y<=g&&T!==n&&T!==a&&My(o,u,l,c,h,p,T.x,T.y)&&Pn(T.prev,T,T.next)>=0)return!1;T=T.prevZ}for(;x&&x.z<=v;){if(x.x>=d&&x.x<=m&&x.y>=f&&x.y<=g&&x!==n&&x!==a&&My(o,u,l,c,h,p,x.x,x.y)&&Pn(x.prev,x,x.next)>=0)return!1;x=x.nextZ}return!0}function z0t(e,t,i){let r=e;do{let n=r.prev,s=r.next.next;!lC(n,s)&&Mhe(n,r,r.next,s)&&gx(n,s)&&gx(s,n)&&(t.push(n.i/i|0),t.push(r.i/i|0),t.push(s.i/i|0),vx(r),vx(r.next),r=e=s),r=r.next}while(r!==e);return Dg(r)}function j0t(e,t,i,r,n,s){let a=e;do{let e=a.next.next;for(;e!==a.prev;){if(a.i!==e.i&&Q0t(a,e)){let o=Dhe(a,e);return a=Dg(a,a.next),o=Dg(o,o.next),mx(a,t,i,r,n,s,0),void mx(o,t,i,r,n,s,0)}e=e.next}a=a.next}while(a!==e)}function W0t(e,t,i,r){let n,s,a,o,l,h=[];for(n=0,s=t.length;n=r.next.y&&r.next.y!==r.y){let e=r.x+(a-r.y)*(r.next.x-r.x)/(r.next.y-r.y);if(e<=s&&e>n&&(n=e,i=r.x=r.x&&r.x>=h&&s!==r.x&&My(ai.x||r.x===i.x&&$0t(i,r)))&&(i=r,c=o)),r=r.next}while(r!==l);return i}function $0t(e,t){return Pn(e.prev,e,t.prev)<0&&Pn(t.next,e,e.next)<0}function K0t(e,t,i,r){let n=e;do{0===n.z&&(n.z=F4(n.x,n.y,t,i,r)),n.prevZ=n.prev,n.nextZ=n.next,n=n.next}while(n!==e);n.prevZ.nextZ=null,n.prevZ=null,Z0t(n)}function Z0t(e){let t,i,r,n,s,a,o,l,h=1;do{for(i=e,e=null,s=null,a=0;i;){for(a++,r=i,o=0,t=0;t0||l>0&&r;)0!==o&&(0===l||!r||i.z<=r.z)?(n=i,i=i.nextZ,o--):(n=r,r=r.nextZ,l--),s?s.nextZ=n:e=n,n.prevZ=s,s=n;i=r}s.nextZ=null,h*=2}while(a>1);return e}function F4(e,t,i,r,n){return(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=(e-i)*n|0)|e<<8))|e<<4))|e<<2))|e<<1))|(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=(t-r)*n|0)|t<<8))|t<<4))|t<<2))|t<<1))<<1}function J0t(e){let t=e,i=e;do{(t.x=(e-a)*(s-o)&&(e-a)*(r-o)>=(i-a)*(t-o)&&(i-a)*(s-o)>=(n-a)*(r-o)}function Q0t(e,t){return e.next.i!==t.i&&e.prev.i!==t.i&&!evt(e,t)&&(gx(e,t)&&gx(t,e)&&tvt(e,t)&&(Pn(e.prev,e,t.prev)||Pn(e,t.prev,t))||lC(e,t)&&Pn(e.prev,e,e.next)>0&&Pn(t.prev,t,t.next)>0)}function Pn(e,t,i){return(t.y-e.y)*(i.x-t.x)-(t.x-e.x)*(i.y-t.y)}function lC(e,t){return e.x===t.x&&e.y===t.y}function Mhe(e,t,i,r){let n=pD(Pn(e,t,i)),s=pD(Pn(e,t,r)),a=pD(Pn(i,r,e)),o=pD(Pn(i,r,t));return!!(n!==s&&a!==o||0===n&&hD(e,i,t)||0===s&&hD(e,r,t)||0===a&&hD(i,e,r)||0===o&&hD(i,t,r))}function hD(e,t,i){return t.x<=Math.max(e.x,i.x)&&t.x>=Math.min(e.x,i.x)&&t.y<=Math.max(e.y,i.y)&&t.y>=Math.min(e.y,i.y)}function pD(e){return e>0?1:e<0?-1:0}function evt(e,t){let i=e;do{if(i.i!==e.i&&i.next.i!==e.i&&i.i!==t.i&&i.next.i!==t.i&&Mhe(i,i.next,e,t))return!0;i=i.next}while(i!==e);return!1}function gx(e,t){return Pn(e.prev,e,e.next)<0?Pn(e,t,e.next)>=0&&Pn(e,e.prev,t)>=0:Pn(e,t,e.prev)<0||Pn(e,e.next,t)<0}function tvt(e,t){let i=e,r=!1,n=(e.x+t.x)/2,s=(e.y+t.y)/2;do{i.y>s!=i.next.y>s&&i.next.y!==i.y&&n<(i.next.x-i.x)*(s-i.y)/(i.next.y-i.y)+i.x&&(r=!r),i=i.next}while(i!==e);return r}function Dhe(e,t){let i=new H4(e.i,e.x,e.y),r=new H4(t.i,t.x,t.y),n=e.next,s=t.prev;return e.next=t,t.prev=e,i.next=n,n.prev=i,r.next=i,i.prev=r,s.next=r,r.prev=s,r}function nue(e,t,i,r){let n=new H4(e,t,i);return r?(n.next=r.next,n.prev=r,r.next.prev=n,r.next=n):(n.prev=n,n.next=n),n}function vx(e){e.next.prev=e.prev,e.prev.next=e.next,e.prevZ&&(e.prevZ.nextZ=e.nextZ),e.nextZ&&(e.nextZ.prevZ=e.prevZ)}function H4(e,t,i){this.i=e,this.x=t,this.y=i,this.prev=null,this.next=null,this.z=0,this.prevZ=null,this.nextZ=null,this.steiner=!1}function rvt(e,t,i,r){let n=0;for(let s=t,a=i-r;s2&&e[t-1].equals(e[0])&&e.pop()}function aue(e,t){for(let i=0;iNumber.EPSILON){let c=Math.sqrt(u),p=Math.sqrt(l*l+h*h),d=t.x-o/c,f=t.y+a/c,m=((i.x-h/p-d)*h-(i.y+l/p-f)*l)/(a*h-o*l);r=d+a*m-e.x,n=f+o*m-e.y;let g=r*r+n*n;if(g<=2)return new le(r,n);s=Math.sqrt(g/2)}else{let e=!1;a>Number.EPSILON?l>Number.EPSILON&&(e=!0):a<-Number.EPSILON?l<-Number.EPSILON&&(e=!0):Math.sign(o)===Math.sign(h)&&(e=!0),e?(r=-o,n=a,s=Math.sqrt(u)):(r=a,n=o,s=Math.sqrt(u/2))}return new le(r/s,n/s)}let C=[];for(let e=0,t=I.length,i=t-1,r=e+1;e=0;e--){let t=e/v,i=m*Math.cos(t*Math.PI/2),r=g*Math.sin(t*Math.PI/2)+y;for(let e=0,t=I.length;e=0;){let r=i,n=i-1;n<0&&(n=e.length-1);for(let e=0,i=p+2*v;e0)&&p.push(t,n,l),(e!==i-1||o0!=e>0&&this.version++,this._sheen=e}get clearcoat(){return this._clearcoat}set clearcoat(e){this._clearcoat>0!=e>0&&this.version++,this._clearcoat=e}get iridescence(){return this._iridescence}set iridescence(e){this._iridescence>0!=e>0&&this.version++,this._iridescence=e}get transmission(){return this._transmission}set transmission(e){this._transmission>0!=e>0&&this.version++,this._transmission=e}copy(e){return super.copy(e),this.defines={STANDARD:"",PHYSICAL:""},this.clearcoat=e.clearcoat,this.clearcoatMap=e.clearcoatMap,this.clearcoatRoughness=e.clearcoatRoughness,this.clearcoatRoughnessMap=e.clearcoatRoughnessMap,this.clearcoatNormalMap=e.clearcoatNormalMap,this.clearcoatNormalScale.copy(e.clearcoatNormalScale),this.ior=e.ior,this.iridescence=e.iridescence,this.iridescenceMap=e.iridescenceMap,this.iridescenceIOR=e.iridescenceIOR,this.iridescenceThicknessRange=[...e.iridescenceThicknessRange],this.iridescenceThicknessMap=e.iridescenceThicknessMap,this.sheen=e.sheen,this.sheenColor.copy(e.sheenColor),this.sheenColorMap=e.sheenColorMap,this.sheenRoughness=e.sheenRoughness,this.sheenRoughnessMap=e.sheenRoughnessMap,this.transmission=e.transmission,this.transmissionMap=e.transmissionMap,this.thickness=e.thickness,this.thicknessMap=e.thicknessMap,this.attenuationDistance=e.attenuationDistance,this.attenuationColor.copy(e.attenuationColor),this.specularIntensity=e.specularIntensity,this.specularIntensityMap=e.specularIntensityMap,this.specularColor.copy(e.specularColor),this.specularColorMap=e.specularColorMap,this}},Es=class extends jr{constructor(e){super(),this.isMeshPhongMaterial=!0,this.type="MeshPhongMaterial",this.color=new je(16777215),this.specular=new je(1118481),this.shininess=30,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new je(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=gf,this.normalScale=new le(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.combine=Cx,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.specular.copy(e.specular),this.shininess=e.shininess,this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.flatShading=e.flatShading,this.fog=e.fog,this}},jD=class extends jr{constructor(e){super(),this.isMeshToonMaterial=!0,this.defines={TOON:""},this.type="MeshToonMaterial",this.color=new je(16777215),this.map=null,this.gradientMap=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new je(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=gf,this.normalScale=new le(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.alphaMap=null,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.gradientMap=e.gradientMap,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.alphaMap=e.alphaMap,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.fog=e.fog,this}},pf=class extends jr{constructor(e){super(),this.isMeshNormalMaterial=!0,this.type="MeshNormalMaterial",this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=gf,this.normalScale=new le(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.flatShading=!1,this.setValues(e)}copy(e){return super.copy(e),this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.flatShading=e.flatShading,this}},io=class extends jr{constructor(e){super(),this.isMeshLambertMaterial=!0,this.type="MeshLambertMaterial",this.color=new je(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new je(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=gf,this.normalScale=new le(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.combine=Cx,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.flatShading=e.flatShading,this.fog=e.fog,this}},WD=class extends jr{constructor(e){super(),this.isMeshMatcapMaterial=!0,this.defines={MATCAP:""},this.type="MeshMatcapMaterial",this.color=new je(16777215),this.matcap=null,this.map=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=gf,this.normalScale=new le(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.alphaMap=null,this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.defines={MATCAP:""},this.color.copy(e.color),this.matcap=e.matcap,this.map=e.map,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.alphaMap=e.alphaMap,this.flatShading=e.flatShading,this.fog=e.fog,this}},Ap=class extends vr{constructor(e){super(),this.isLineDashedMaterial=!0,this.type="LineDashedMaterial",this.scale=1,this.dashSize=3,this.gapSize=1,this.setValues(e)}copy(e){return super.copy(e),this.scale=e.scale,this.dashSize=e.dashSize,this.gapSize=e.gapSize,this}};function xl(e,t,i){return zU(e)?new e.constructor(e.subarray(t,void 0!==i?i:e.length)):e.slice(t,i)}function mg(e,t,i){return!e||!i&&e.constructor===t?e:"number"==typeof t.BYTES_PER_ELEMENT?new t(e):Array.prototype.slice.call(e)}function zU(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}function Che(e){let t=e.length,i=new Array(t);for(let e=0;e!==t;++e)i[e]=e;return i.sort((function(t,i){return e[t]-e[i]})),i}function U4(e,t,i){let r=e.length,n=new e.constructor(r);for(let s=0,a=0;a!==r;++s){let r=i[s]*t;for(let i=0;i!==t;++i)n[a++]=e[r+i]}return n}function jU(e,t,i,r){let n=1,s=e[0];for(;void 0!==s&&void 0===s[r];)s=e[n++];if(void 0===s)return;let a=s[r];if(void 0!==a)if(Array.isArray(a))do{a=s[r],void 0!==a&&(t.push(s.time),i.push.apply(i,a)),s=e[n++]}while(void 0!==s);else if(void 0!==a.toArray)do{a=s[r],void 0!==a&&(t.push(s.time),a.toArray(i,i.length)),s=e[n++]}while(void 0!==s);else do{a=s[r],void 0!==a&&(t.push(s.time),i.push(a)),s=e[n++]}while(void 0!==s)}function avt(e,t,i,r,n=30){let s=e.clone();s.name=t;let a=[];for(let e=0;e=r)){l.push(t.times[e]);for(let i=0;is.tracks[e].times[0]&&(o=s.tracks[e].times[0]);for(let e=0;e=r.times[p]){let e=p*l+o,t=e+l-o;c=xl(r.values,e,t)}else{let e=r.createInterpolant(),t=o,i=l-o;e.evaluate(s),c=xl(e.resultBuffer,t,i)}"quaternion"===n&&(new Hr).fromArray(c).normalize().conjugate().toArray(c);let d=a.times.length;for(let e=0;e=n)break e;{let a=t[1];e=n)break t}s=i,i=0}}for(;i>>1;et;)--s;if(++s,0!==n||s!==r){n>=s&&(s=Math.max(s,1),n=s-1);let e=this.getValueSize();this.times=xl(i,n,s),this.values=xl(this.values,n*e,s*e)}return this}validate(){let e=!0,t=this.getValueSize();t-Math.floor(t)!=0&&(console.error("THREE.KeyframeTrack: Invalid value size in track.",this),e=!1);let i=this.times,r=this.values,n=i.length;0===n&&(console.error("THREE.KeyframeTrack: Track is empty.",this),e=!1);let s=null;for(let t=0;t!==n;t++){let r=i[t];if("number"==typeof r&&isNaN(r)){console.error("THREE.KeyframeTrack: Time is not a valid number.",this,t,r),e=!1;break}if(null!==s&&s>r){console.error("THREE.KeyframeTrack: Out of order keys.",this,t,r,s),e=!1;break}s=r}if(void 0!==r&&zU(r))for(let t=0,i=r.length;t!==i;++t){let i=r[t];if(isNaN(i)){console.error("THREE.KeyframeTrack: Value is not a valid number.",this,t,i),e=!1;break}}return e}optimize(){let e=xl(this.times),t=xl(this.values),i=this.getValueSize(),r=this.getInterpolation()===SD,n=e.length-1,s=1;for(let a=1;a0){e[s]=e[n];for(let e=n*i,r=s*i,a=0;a!==i;++a)t[r+a]=t[e+a];++s}return s!==e.length?(this.times=xl(e,0,s),this.values=xl(t,0,s*i)):(this.times=e,this.values=t),this}clone(){let e=xl(this.times,0),t=xl(this.values,0),i=new(0,this.constructor)(this.name,e,t);return i.createInterpolant=this.createInterpolant,i}};Go.prototype.TimeBufferType=Float32Array,Go.prototype.ValueBufferType=Float32Array,Go.prototype.DefaultInterpolation=Hu;var Pp=class extends Go{};Pp.prototype.ValueTypeName="bool",Pp.prototype.ValueBufferType=Array,Pp.prototype.DefaultInterpolation=Ep,Pp.prototype.InterpolantFactoryMethodLinear=void 0,Pp.prototype.InterpolantFactoryMethodSmooth=void 0;var Tx=class extends Go{};Tx.prototype.ValueTypeName="color";var Cc=class extends Go{};Cc.prototype.ValueTypeName="number";var XD=class extends Op{constructor(e,t,i,r){super(e,t,i,r)}interpolate_(e,t,i,r){let n=this.resultBuffer,s=this.sampleValues,a=this.valueSize,o=(i-t)/(r-t),l=e*a;for(let e=l+a;l!==e;l+=4)Hr.slerpFlat(n,0,s,l-a,s,l,o);return n}},Da=class extends Go{InterpolantFactoryMethodLinear(e){return new XD(this.times,this.values,this.getValueSize(),e)}};Da.prototype.ValueTypeName="quaternion",Da.prototype.DefaultInterpolation=Hu,Da.prototype.InterpolantFactoryMethodSmooth=void 0;var Np=class extends Go{};Np.prototype.ValueTypeName="string",Np.prototype.ValueBufferType=Array,Np.prototype.DefaultInterpolation=Ep,Np.prototype.InterpolantFactoryMethodLinear=void 0,Np.prototype.InterpolantFactoryMethodSmooth=void 0;var no=class extends Go{};no.prototype.ValueTypeName="vector";var so=class{constructor(e,t=-1,i,r=aC){this.name=e,this.tracks=i,this.duration=t,this.blendMode=r,this.uuid=Ho(),this.duration<0&&this.resetDuration()}static parse(e){let t=[],i=e.tracks,r=1/(e.fps||1);for(let e=0,n=i.length;e!==n;++e)t.push(uvt(i[e]).scale(r));let n=new this(e.name,e.duration,t,e.blendMode);return n.uuid=e.uuid,n}static toJSON(e){let t=[],i=e.tracks,r={name:e.name,duration:e.duration,tracks:t,uuid:e.uuid,blendMode:e.blendMode};for(let e=0,r=i.length;e!==r;++e)t.push(Go.toJSON(i[e]));return r}static CreateFromMorphTargetSequence(e,t,i,r){let n=t.length,s=[];for(let e=0;e1){let e=s[1],t=r[e];t||(r[e]=t=[]),t.push(i)}}let s=[];for(let e in r)s.push(this.CreateFromMorphTargetSequence(e,r[e],t,i));return s}static parseAnimation(e,t){if(!e)return console.error("THREE.AnimationClip: No animation in JSONLoader data."),null;let i=function(e,t,i,r,n){if(0!==i.length){let s=[],a=[];jU(i,s,a,r),0!==s.length&&n.push(new e(t,s,a))}},r=[],n=e.name||"default",s=e.fps||30,a=e.blendMode,o=e.length||-1,l=e.hierarchy||[];for(let e=0;e{t&&t(n),this.manager.itemEnd(e)}),0),n;if(void 0!==pp[e])return void pp[e].push({onLoad:t,onProgress:i,onError:r});pp[e]=[],pp[e].push({onLoad:t,onProgress:i,onError:r});let s=new Request(e,{headers:new Headers(this.requestHeader),credentials:this.withCredentials?"include":"same-origin"}),a=this.mimeType,o=this.responseType;fetch(s).then((t=>{if(200===t.status||0===t.status){if(0===t.status&&console.warn("THREE.FileLoader: HTTP Status 0 received."),"undefined"==typeof ReadableStream||void 0===t.body||void 0===t.body.getReader)return t;let i=pp[e],r=t.body.getReader(),n=t.headers.get("Content-Length")||t.headers.get("X-File-Size"),s=n?parseInt(n):0,a=0!==s,o=0,l=new ReadableStream({start(e){!function t(){r.read().then((({done:r,value:n})=>{if(r)e.close();else{o+=n.byteLength;let r=new ProgressEvent("progress",{lengthComputable:a,loaded:o,total:s});for(let e=0,t=i.length;e{switch(o){case"arraybuffer":return e.arrayBuffer();case"blob":return e.blob();case"document":return e.text().then((e=>(new DOMParser).parseFromString(e,a)));case"json":return e.json();default:if(void 0===a)return e.text();{let t=/charset="?([^;"\s]*)"?/i.exec(a),i=t&&t[1]?t[1].toLowerCase():void 0,r=new TextDecoder(i);return e.arrayBuffer().then((e=>r.decode(e)))}}})).then((t=>{Lg.add(e,t);let i=pp[e];delete pp[e];for(let e=0,r=i.length;e{let i=pp[e];if(void 0===i)throw this.manager.itemError(e),t;delete pp[e];for(let e=0,r=i.length;e{this.manager.itemEnd(e)})),this.manager.itemStart(e)}setResponseType(e){return this.responseType=e,this}setMimeType(e){return this.mimeType=e,this}},k4=class extends ci{constructor(e){super(e)}load(e,t,i,r){let n=this,s=new ui(this.manager);s.setPath(this.path),s.setRequestHeader(this.requestHeader),s.setWithCredentials(this.withCredentials),s.load(e,(function(i){try{t(n.parse(JSON.parse(i)))}catch(t){r?r(t):console.error(t),n.manager.itemError(e)}}),i,r)}parse(e){let t=[];for(let i=0;i0:r.vertexColors=e.vertexColors),void 0!==e.uniforms)for(let t in e.uniforms){let n=e.uniforms[t];switch(r.uniforms[t]={},n.type){case"t":r.uniforms[t].value=i(n.value);break;case"c":r.uniforms[t].value=(new je).setHex(n.value);break;case"v2":r.uniforms[t].value=(new le).fromArray(n.value);break;case"v3":r.uniforms[t].value=(new A).fromArray(n.value);break;case"v4":r.uniforms[t].value=(new Gr).fromArray(n.value);break;case"m3":r.uniforms[t].value=(new Ni).fromArray(n.value);break;case"m4":r.uniforms[t].value=(new Be).fromArray(n.value);break;default:r.uniforms[t].value=n.value}}if(void 0!==e.defines&&(r.defines=e.defines),void 0!==e.vertexShader&&(r.vertexShader=e.vertexShader),void 0!==e.fragmentShader&&(r.fragmentShader=e.fragmentShader),void 0!==e.glslVersion&&(r.glslVersion=e.glslVersion),void 0!==e.extensions)for(let t in e.extensions)r.extensions[t]=e.extensions[t];if(void 0!==e.size&&(r.size=e.size),void 0!==e.sizeAttenuation&&(r.sizeAttenuation=e.sizeAttenuation),void 0!==e.map&&(r.map=i(e.map)),void 0!==e.matcap&&(r.matcap=i(e.matcap)),void 0!==e.alphaMap&&(r.alphaMap=i(e.alphaMap)),void 0!==e.bumpMap&&(r.bumpMap=i(e.bumpMap)),void 0!==e.bumpScale&&(r.bumpScale=e.bumpScale),void 0!==e.normalMap&&(r.normalMap=i(e.normalMap)),void 0!==e.normalMapType&&(r.normalMapType=e.normalMapType),void 0!==e.normalScale){let t=e.normalScale;!1===Array.isArray(t)&&(t=[t,t]),r.normalScale=(new le).fromArray(t)}return void 0!==e.displacementMap&&(r.displacementMap=i(e.displacementMap)),void 0!==e.displacementScale&&(r.displacementScale=e.displacementScale),void 0!==e.displacementBias&&(r.displacementBias=e.displacementBias),void 0!==e.roughnessMap&&(r.roughnessMap=i(e.roughnessMap)),void 0!==e.metalnessMap&&(r.metalnessMap=i(e.metalnessMap)),void 0!==e.emissiveMap&&(r.emissiveMap=i(e.emissiveMap)),void 0!==e.emissiveIntensity&&(r.emissiveIntensity=e.emissiveIntensity),void 0!==e.specularMap&&(r.specularMap=i(e.specularMap)),void 0!==e.specularIntensityMap&&(r.specularIntensityMap=i(e.specularIntensityMap)),void 0!==e.specularColorMap&&(r.specularColorMap=i(e.specularColorMap)),void 0!==e.envMap&&(r.envMap=i(e.envMap)),void 0!==e.envMapIntensity&&(r.envMapIntensity=e.envMapIntensity),void 0!==e.reflectivity&&(r.reflectivity=e.reflectivity),void 0!==e.refractionRatio&&(r.refractionRatio=e.refractionRatio),void 0!==e.lightMap&&(r.lightMap=i(e.lightMap)),void 0!==e.lightMapIntensity&&(r.lightMapIntensity=e.lightMapIntensity),void 0!==e.aoMap&&(r.aoMap=i(e.aoMap)),void 0!==e.aoMapIntensity&&(r.aoMapIntensity=e.aoMapIntensity),void 0!==e.gradientMap&&(r.gradientMap=i(e.gradientMap)),void 0!==e.clearcoatMap&&(r.clearcoatMap=i(e.clearcoatMap)),void 0!==e.clearcoatRoughnessMap&&(r.clearcoatRoughnessMap=i(e.clearcoatRoughnessMap)),void 0!==e.clearcoatNormalMap&&(r.clearcoatNormalMap=i(e.clearcoatNormalMap)),void 0!==e.clearcoatNormalScale&&(r.clearcoatNormalScale=(new le).fromArray(e.clearcoatNormalScale)),void 0!==e.iridescenceMap&&(r.iridescenceMap=i(e.iridescenceMap)),void 0!==e.iridescenceThicknessMap&&(r.iridescenceThicknessMap=i(e.iridescenceThicknessMap)),void 0!==e.transmissionMap&&(r.transmissionMap=i(e.transmissionMap)),void 0!==e.thicknessMap&&(r.thicknessMap=i(e.thicknessMap)),void 0!==e.sheenColorMap&&(r.sheenColorMap=i(e.sheenColorMap)),void 0!==e.sheenRoughnessMap&&(r.sheenRoughnessMap=i(e.sheenRoughnessMap)),r}setTextures(e){return this.textures=e,this}static createMaterialFromType(e){return new{ShadowMaterial:VD,SpriteMaterial:xg,RawShaderMaterial:zD,ShaderMaterial:Yt,PointsMaterial:jn,MeshPhysicalMaterial:Ml,MeshStandardMaterial:Gu,MeshPhongMaterial:Es,MeshToonMaterial:jD,MeshNormalMaterial:pf,MeshLambertMaterial:io,MeshDepthMaterial:Ip,MeshDistanceMaterial:ux,MeshBasicMaterial:lr,MeshMatcapMaterial:WD,LineDashedMaterial:Ap,LineBasicMaterial:vr,Material:jr}[e]}},ks=class{static decodeText(e){if("undefined"!=typeof TextDecoder)return(new TextDecoder).decode(e);let t="";for(let i=0,r=e.length;i0){let r=new Lp(t);i=new Fg(r),i.setCrossOrigin(this.crossOrigin);for(let t=0,i=e.length;t0){t=new Fg(this.manager),t.setCrossOrigin(this.crossOrigin);for(let t=0,i=e.length;t0){this.source.connect(this.filters[0]);for(let e=1,t=this.filters.length;e0){this.source.disconnect(this.filters[0]);for(let e=1,t=this.filters.length;e0&&this._mixBufferRegionAdditive(i,r,this._addIndex*t,1,t);for(let e=t,n=t+t;e!==n;++e)if(i[e]!==i[e+t]){a.setValue(i,r);break}}saveOriginalState(){let e=this.binding,t=this.buffer,i=this.valueSize,r=i*this._origIndex;e.getValue(t,r);for(let e=i,n=r;e!==n;++e)t[e]=t[r+e%i];this._setIdentity(),this.cumulativeWeight=0,this.cumulativeWeightAdditive=0}restoreOriginalState(){let e=3*this.valueSize;this.binding.setValue(this.buffer,e)}_setAdditiveIdentityNumeric(){let e=this._addIndex*this.valueSize,t=e+this.valueSize;for(let i=e;i=.5)for(let r=0;r!==n;++r)e[t+r]=e[i+r]}_slerp(e,t,i,r){Hr.slerpFlat(e,t,e,t,e,i,r)}_slerpAdditive(e,t,i,r,n){let s=this._workIndex*n;Hr.multiplyQuaternionsFlat(e,s,e,t,e,i),Hr.slerpFlat(e,t,e,t,e,s,r)}_lerp(e,t,i,r,n){let s=1-r;for(let a=0;a!==n;++a){let n=t+a;e[n]=e[n]*s+e[i+a]*r}}_lerpAdditive(e,t,i,r,n){for(let s=0;s!==n;++s){let n=t+s;e[n]=e[n]+e[i+s]*r}}},WU="\\[\\]\\.:\\/",fvt=new RegExp("["+WU+"]","g"),qU="[^"+WU+"]",mvt="[^"+WU.replace("\\.","")+"]",gvt=/((?:WC+[\/:])*)/.source.replace("WC",qU),vvt=/(WCOD+)?/.source.replace("WCOD",mvt),yvt=/(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace("WC",qU),Tvt=/\.(WC+)(?:\[(.+)\])?/.source.replace("WC",qU),Evt=new RegExp("^"+gvt+vvt+yvt+Tvt+"$"),bvt=["material","materials","bones","map"],Q4=class{constructor(e,t,i){let r=i||Rr.parseTrackName(t);this._targetGroup=e,this._bindings=e.subscribe_(t,r)}getValue(e,t){this.bind();let i=this._targetGroup.nCachedObjects_,r=this._bindings[i];void 0!==r&&r.getValue(e,t)}setValue(e,t){let i=this._bindings;for(let r=this._targetGroup.nCachedObjects_,n=i.length;r!==n;++r)i[r].setValue(e,t)}bind(){let e=this._bindings;for(let t=this._targetGroup.nCachedObjects_,i=e.length;t!==i;++t)e[t].bind()}unbind(){let e=this._bindings;for(let t=this._targetGroup.nCachedObjects_,i=e.length;t!==i;++t)e[t].unbind()}},Rr=class{constructor(e,t,i){this.path=t,this.parsedPath=i||Rr.parseTrackName(t),this.node=Rr.findNode(e,this.parsedPath.nodeName)||e,this.rootNode=e,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}static create(e,t,i){return e&&e.isAnimationObjectGroup?new Rr.Composite(e,t,i):new Rr(e,t,i)}static sanitizeNodeName(e){return e.replace(/\s/g,"_").replace(fvt,"")}static parseTrackName(e){let t=Evt.exec(e);if(null===t)throw new Error("PropertyBinding: Cannot parse trackName: "+e);let i={nodeName:t[2],objectName:t[3],objectIndex:t[4],propertyName:t[5],propertyIndex:t[6]},r=i.nodeName&&i.nodeName.lastIndexOf(".");if(void 0!==r&&-1!==r){let e=i.nodeName.substring(r+1);-1!==bvt.indexOf(e)&&(i.nodeName=i.nodeName.substring(0,r),i.objectName=e)}if(null===i.propertyName||0===i.propertyName.length)throw new Error("PropertyBinding: can not parse propertyName from trackName: "+e);return i}static findNode(e,t){if(void 0===t||""===t||"."===t||-1===t||t===e.name||t===e.uuid)return e;if(e.skeleton){let i=e.skeleton.getBoneByName(t);if(void 0!==i)return i}if(e.children){let i=function(e){for(let r=0;r=n){let s=n++,h=e[s];t[h.uuid]=l,e[l]=h,t[o]=s,e[s]=a;for(let e=0,t=r;e!==t;++e){let t=i[e],r=t[s],n=t[l];t[l]=r,t[s]=n}}}this.nCachedObjects_=n}uncache(){let e=this._objects,t=this._indicesByUUID,i=this._bindings,r=i.length,n=this.nCachedObjects_,s=e.length;for(let a=0,o=arguments.length;a!==o;++a){let o=arguments[a].uuid,l=t[o];if(void 0!==l)if(delete t[o],l0&&(t[a.uuid]=l),e[l]=a,e.pop();for(let e=0,t=r;e!==t;++e){let t=i[e];t[l]=t[n],t.pop()}}}this.nCachedObjects_=n}subscribe_(e,t){let i=this._bindingsIndicesByPath,r=i[e],n=this._bindings;if(void 0!==r)return n[r];let s=this._paths,a=this._parsedPaths,o=this._objects,l=o.length,h=this.nCachedObjects_,u=new Array(l);r=n.length,i[e]=r,s.push(e),a.push(t),n.push(u);for(let i=h,r=o.length;i!==r;++i){let r=o[i];u[i]=new Rr(r,e,t)}return u}unsubscribe_(e){let t=this._bindingsIndicesByPath,i=t[e];if(void 0!==i){let r=this._paths,n=this._parsedPaths,s=this._bindings,a=s.length-1,o=s[a];t[e[a]]=i,s[i]=o,s.pop(),n[i]=n[a],n.pop(),r[i]=r[a],r.pop()}}},tU=class{constructor(e,t,i=null,r=t.blendMode){this._mixer=e,this._clip=t,this._localRoot=i,this.blendMode=r;let n=t.tracks,s=n.length,a=new Array(s),o={endingStart:dg,endingEnd:dg};for(let e=0;e!==s;++e){let t=n[e].createInterpolant(null);a[e]=t,t.settings=o}this._interpolantSettings=o,this._interpolants=a,this._propertyBindings=new Array(s),this._cacheIndex=null,this._byClipCacheIndex=null,this._timeScaleInterpolant=null,this._weightInterpolant=null,this.loop=hhe,this._loopCount=-1,this._startTime=null,this.time=0,this.timeScale=1,this._effectiveTimeScale=1,this.weight=1,this._effectiveWeight=1,this.repetitions=1/0,this.paused=!1,this.enabled=!0,this.clampWhenFinished=!1,this.zeroSlopeAtStart=!0,this.zeroSlopeAtEnd=!0}play(){return this._mixer._activateAction(this),this}stop(){return this._mixer._deactivateAction(this),this.reset()}reset(){return this.paused=!1,this.enabled=!0,this.time=0,this._loopCount=-1,this._startTime=null,this.stopFading().stopWarping()}isRunning(){return this.enabled&&!this.paused&&0!==this.timeScale&&null===this._startTime&&this._mixer._isActiveAction(this)}isScheduled(){return this._mixer._isActiveAction(this)}startAt(e){return this._startTime=e,this}setLoop(e,t){return this.loop=e,this.repetitions=t,this}setEffectiveWeight(e){return this.weight=e,this._effectiveWeight=this.enabled?e:0,this.stopFading()}getEffectiveWeight(){return this._effectiveWeight}fadeIn(e){return this._scheduleFading(e,0,1)}fadeOut(e){return this._scheduleFading(e,1,0)}crossFadeFrom(e,t,i){if(e.fadeOut(t),this.fadeIn(t),i){let i=this._clip.duration,r=e._clip.duration,n=r/i,s=i/r;e.warp(1,n,t),this.warp(s,1,t)}return this}crossFadeTo(e,t,i){return e.crossFadeFrom(this,t,i)}stopFading(){let e=this._weightInterpolant;return null!==e&&(this._weightInterpolant=null,this._mixer._takeBackControlInterpolant(e)),this}setEffectiveTimeScale(e){return this.timeScale=e,this._effectiveTimeScale=this.paused?0:e,this.stopWarping()}getEffectiveTimeScale(){return this._effectiveTimeScale}setDuration(e){return this.timeScale=this._clip.duration/e,this.stopWarping()}syncWith(e){return this.time=e.time,this.timeScale=e.timeScale,this.stopWarping()}halt(e){return this.warp(this._effectiveTimeScale,0,e)}warp(e,t,i){let r=this._mixer,n=r.time,s=this.timeScale,a=this._timeScaleInterpolant;null===a&&(a=r._lendControlInterpolant(),this._timeScaleInterpolant=a);let o=a.parameterPositions,l=a.sampleValues;return o[0]=n,o[1]=n+i,l[0]=e/s,l[1]=t/s,this}stopWarping(){let e=this._timeScaleInterpolant;return null!==e&&(this._timeScaleInterpolant=null,this._mixer._takeBackControlInterpolant(e)),this}getMixer(){return this._mixer}getClip(){return this._clip}getRoot(){return this._localRoot||this._mixer._root}_update(e,t,i,r){if(!this.enabled)return void this._updateWeight(e);let n=this._startTime;if(null!==n){let r=(e-n)*i;r<0||0===i?t=0:(this._startTime=null,t=i*r)}t*=this._updateTimeScale(e);let s=this._updateTime(t),a=this._updateWeight(e);if(a>0){let e=this._interpolants,t=this._propertyBindings;if(this.blendMode===HU)for(let i=0,r=e.length;i!==r;++i)e[i].evaluate(s),t[i].accumulateAdditive(a);else for(let i=0,n=e.length;i!==n;++i)e[i].evaluate(s),t[i].accumulate(r,a)}}_updateWeight(e){let t=0;if(this.enabled){t=this.weight;let i=this._weightInterpolant;if(null!==i){let r=i.evaluate(e)[0];t*=r,e>i.parameterPositions[1]&&(this.stopFading(),0===r&&(this.enabled=!1))}}return this._effectiveWeight=t,t}_updateTimeScale(e){let t=0;if(!this.paused){t=this.timeScale;let i=this._timeScaleInterpolant;if(null!==i){t*=i.evaluate(e)[0],e>i.parameterPositions[1]&&(this.stopWarping(),0===t?this.paused=!0:this.timeScale=t)}}return this._effectiveTimeScale=t,t}_updateTime(e){let t=this._clip.duration,i=this.loop,r=this.time+e,n=this._loopCount,s=i===phe;if(0===e)return-1===n?r:s&&1==(1&n)?t-r:r;if(i===uhe){-1===n&&(this._loopCount=0,this._setEndings(!0,!0,!1));e:{if(r>=t)r=t;else{if(!(r<0)){this.time=r;break e}r=0}this.clampWhenFinished?this.paused=!0:this.enabled=!1,this.time=r,this._mixer.dispatchEvent({type:"finished",action:this,direction:e<0?-1:1})}}else{if(-1===n&&(e>=0?(n=0,this._setEndings(!0,0===this.repetitions,s)):this._setEndings(0===this.repetitions,!0,s)),r>=t||r<0){let i=Math.floor(r/t);r-=t*i,n+=Math.abs(i);let a=this.repetitions-n;if(a<=0)this.clampWhenFinished?this.paused=!0:this.enabled=!1,r=e>0?t:0,this.time=r,this._mixer.dispatchEvent({type:"finished",action:this,direction:e>0?1:-1});else{if(1===a){let t=e<0;this._setEndings(t,!t,s)}else this._setEndings(!1,!1,s);this._loopCount=n,this.time=r,this._mixer.dispatchEvent({type:"loop",action:this,loopDelta:i})}}else this.time=r;if(s&&1==(1&n))return t-r}return r}_setEndings(e,t,i){let r=this._interpolantSettings;i?(r.endingStart=fg,r.endingEnd=fg):(r.endingStart=e?this.zeroSlopeAtStart?fg:dg:ix,r.endingEnd=t?this.zeroSlopeAtEnd?fg:dg:ix)}_scheduleFading(e,t,i){let r=this._mixer,n=r.time,s=this._weightInterpolant;null===s&&(s=r._lendControlInterpolant(),this._weightInterpolant=s);let a=s.parameterPositions,o=s.sampleValues;return a[0]=n,o[0]=t,a[1]=n+e,o[1]=i,this}},xvt=new Float32Array(1),rU=class extends Bo{constructor(e){super(),this._root=e,this._initMemoryManager(),this._accuIndex=0,this.time=0,this.timeScale=1}_bindAction(e,t){let i=e._localRoot||this._root,r=e._clip.tracks,n=r.length,s=e._propertyBindings,a=e._interpolants,o=i.uuid,l=this._bindingsByRootAndName,h=l[o];void 0===h&&(h={},l[o]=h);for(let e=0;e!==n;++e){let n=r[e],l=n.name,u=h[l];if(void 0!==u)++u.referenceCount,s[e]=u;else{if(u=s[e],void 0!==u){null===u._cacheIndex&&(++u.referenceCount,this._addInactiveBinding(u,o,l));continue}let r=t&&t._propertyBindings[e].binding.parsedPath;u=new eC(Rr.create(i,l,r),n.ValueTypeName,n.getValueSize()),++u.referenceCount,this._addInactiveBinding(u,o,l),s[e]=u}a[e].resultBuffer=u.buffer}}_activateAction(e){if(!this._isActiveAction(e)){if(null===e._cacheIndex){let t=(e._localRoot||this._root).uuid,i=e._clip.uuid,r=this._actionsByClip[i];this._bindAction(e,r&&r.knownActions[0]),this._addInactiveAction(e,i,t)}let t=e._propertyBindings;for(let e=0,i=t.length;e!==i;++e){let i=t[e];0==i.useCount++&&(this._lendBinding(i),i.saveOriginalState())}this._lendAction(e)}}_deactivateAction(e){if(this._isActiveAction(e)){let t=e._propertyBindings;for(let e=0,i=t.length;e!==i;++e){let i=t[e];0==--i.useCount&&(i.restoreOriginalState(),this._takeBackBinding(i))}this._takeBackAction(e)}}_initMemoryManager(){this._actions=[],this._nActiveActions=0,this._actionsByClip={},this._bindings=[],this._nActiveBindings=0,this._bindingsByRootAndName={},this._controlInterpolants=[],this._nActiveControlInterpolants=0;let e=this;this.stats={actions:{get total(){return e._actions.length},get inUse(){return e._nActiveActions}},bindings:{get total(){return e._bindings.length},get inUse(){return e._nActiveBindings}},controlInterpolants:{get total(){return e._controlInterpolants.length},get inUse(){return e._nActiveControlInterpolants}}}}_isActiveAction(e){let t=e._cacheIndex;return null!==t&&t=0;--t)e[t].stop();return this}update(e){e*=this.timeScale;let t=this._actions,i=this._nActiveActions,r=this.time+=e,n=Math.sign(e),s=this._accuIndex^=1;for(let a=0;a!==i;++a)t[a]._update(r,e,n,s);let a=this._bindings,o=this._nActiveBindings;for(let e=0;e!==o;++e)a[e].apply(s);return this}setTime(e){this.time=0;for(let e=0;ethis.max.x||e.ythis.max.y)}containsBox(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(e,t){return t.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y))}intersectsBox(e){return!(e.max.xthis.max.x||e.max.ythis.max.y)}clampPoint(e,t){return t.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return Eue.copy(e).clamp(this.min,this.max).sub(e).length()}intersect(e){return this.min.max(e.min),this.max.min(e.max),this}union(e){return this.min.min(e.min),this.max.max(e.max),this}translate(e){return this.min.add(e),this.max.add(e),this}equals(e){return e.min.equals(this.min)&&e.max.equals(this.max)}},bue=new A,fD=new A,Ca=class{constructor(e=new A,t=new A){this.start=e,this.end=t}set(e,t){return this.start.copy(e),this.end.copy(t),this}copy(e){return this.start.copy(e.start),this.end.copy(e.end),this}getCenter(e){return e.addVectors(this.start,this.end).multiplyScalar(.5)}delta(e){return e.subVectors(this.end,this.start)}distanceSq(){return this.start.distanceToSquared(this.end)}distance(){return this.start.distanceTo(this.end)}at(e,t){return this.delta(t).multiplyScalar(e).add(this.start)}closestPointToPointParameter(e,t){bue.subVectors(e,this.start),fD.subVectors(this.end,this.start);let i=fD.dot(fD),r=fD.dot(bue)/i;return t&&(r=Qn(r,0,1)),r}closestPointToPoint(e,t,i){let r=this.closestPointToPointParameter(e,t);return this.delta(i).multiplyScalar(r).add(this.start)}applyMatrix4(e){return this.start.applyMatrix4(e),this.end.applyMatrix4(e),this}equals(e){return e.start.equals(this.start)&&e.end.equals(this.end)}clone(){return(new this.constructor).copy(this)}},xue=new A,lU=class extends sr{constructor(e,t){super(),this.light=e,this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.color=t,this.type="SpotLightHelper";let i=new lt,r=[0,0,0,0,0,1,0,0,0,1,0,1,0,0,0,-1,0,1,0,0,0,0,1,1,0,0,0,0,-1,1];for(let e=0,t=1,i=32;e1)for(let i=0;i.99999)this.quaternion.set(0,0,0,1);else if(e.y<-.99999)this.quaternion.set(1,0,0,0);else{Rue.set(e.z,0,-e.x).normalize();let t=Math.acos(e.y);this.quaternion.setFromAxisAngle(Rue,t)}}setLength(e,t=.2*e,i=.2*t){this.line.scale.set(1,Math.max(1e-4,e-t),1),this.line.updateMatrix(),this.cone.scale.set(i,t,i),this.cone.position.y=e,this.cone.updateMatrix()}setColor(e){this.line.material.color.set(e),this.cone.material.color.set(e)}copy(e){return super.copy(e,!1),this.line.copy(e.line),this.cone.copy(e.cone),this}dispose(){this.line.geometry.dispose(),this.line.material.dispose(),this.cone.geometry.dispose(),this.cone.material.dispose()}},mU=class extends li{constructor(e=1){let t=[0,0,0,e,0,0,0,0,0,0,e,0,0,0,0,0,0,e],i=new lt;i.setAttribute("position",new dt(t,3)),i.setAttribute("color",new dt([1,0,0,1,.6,0,0,1,0,.6,1,0,0,0,1,0,.6,1],3)),super(i,new vr({vertexColors:!0,toneMapped:!1})),this.type="AxesHelper"}setColors(e,t,i){let r=new je,n=this.geometry.attributes.color.array;return r.set(e),r.toArray(n,0),r.toArray(n,3),r.set(t),r.toArray(n,6),r.toArray(n,9),r.set(i),r.toArray(n,12),r.toArray(n,15),this.geometry.attributes.color.needsUpdate=!0,this}dispose(){this.geometry.dispose(),this.material.dispose()}},Mx=class{constructor(){this.type="ShapePath",this.color=new je,this.subPaths=[],this.currentPath=null}moveTo(e,t){return this.currentPath=new ku,this.subPaths.push(this.currentPath),this.currentPath.moveTo(e,t),this}lineTo(e,t){return this.currentPath.lineTo(e,t),this}quadraticCurveTo(e,t,i,r){return this.currentPath.quadraticCurveTo(e,t,i,r),this}bezierCurveTo(e,t,i,r,n,s){return this.currentPath.bezierCurveTo(e,t,i,r,n,s),this}splineThru(e){return this.currentPath.splineThru(e),this}toShapes(e){function t(e,t){let i=t.length,r=!1;for(let n=i-1,s=0;sNumber.EPSILON){if(l<0&&(i=t[s],o=-o,a=t[n],l=-l),e.ya.y)continue;if(e.y===i.y){if(e.x===i.x)return!0}else{let t=l*(e.x-i.x)-o*(e.y-i.y);if(0===t)return!0;if(t<0)continue;r=!r}}else{if(e.y!==i.y)continue;if(a.x<=e.x&&e.x<=i.x||i.x<=e.x&&e.x<=a.x)return!0}}return r}let i=es.isClockWise,r=this.subPaths;if(0===r.length)return[];let n,s,a,o=[];if(1===r.length)return s=r[0],a=new Qa,a.curves=s.curves,o.push(a),o;let l=!i(r[0].getPoints());l=e?!l:l;let h,u,c=[],p=[],d=[],f=0;p[f]=void 0,d[f]=[];for(let t=0,a=r.length;t1){let e=!1,i=0;for(let e=0,t=p.length;e0&&!1===e&&(d=c)}for(let e=0,t=p.length;e>-t-14,r[256|e]=1024>>-t-14|32768,n[e]=-t-1,n[256|e]=-t-1):t<=15?(r[e]=t+15<<10,r[256|e]=t+15<<10|32768,n[e]=13,n[256|e]=13):t<128?(r[e]=31744,r[256|e]=64512,n[e]=24,n[256|e]=24):(r[e]=31744,r[256|e]=64512,n[e]=13,n[256|e]=13)}let s=new Uint32Array(2048),a=new Uint32Array(64),o=new Uint32Array(64);for(let e=1;e<1024;++e){let t=e<<13,i=0;for(;!(8388608&t);)t<<=1,i-=8388608;t&=-8388609,i+=947912704,s[e]=t|i}for(let e=1024;e<2048;++e)s[e]=939524096+(e-1024<<13);for(let e=1;e<31;++e)a[e]=e<<23;a[31]=1199570944,a[32]=2147483648;for(let e=33;e<63;++e)a[e]=2147483648+(e-32<<23);a[63]=3347054592;for(let e=1;e<64;++e)32!==e&&(o[e]=1024);return{floatView:t,uint32View:i,baseTable:r,shiftTable:n,mantissaTable:s,exponentTable:a,offsetTable:o}}function wvt(e){Math.abs(e)>65504&&console.warn("THREE.DataUtils.toHalfFloat(): Value out of range."),e=Qn(e,-65504,65504),dp.floatView[0]=e;let t=dp.uint32View[0],i=t>>23&511;return dp.baseTable[i]+((8388607&t)>>dp.shiftTable[i])}function Rvt(e){let t=e>>10;return dp.uint32View[0]=dp.mantissaTable[dp.offsetTable[t]+(1023&e)]+dp.exponentTable[t],dp.floatView[0]}var Yy=Object.freeze({__proto__:null,fromHalfFloat:Rvt,toHalfFloat:wvt}),gU=class extends eo{constructor(e,t,i,r,n,s){console.warn("THREE.BoxBufferGeometry has been renamed to THREE.BoxGeometry."),super(e,t,i,r,n,s)}},vU=class extends Sg{constructor(e,t,i,r){console.warn("THREE.CapsuleBufferGeometry has been renamed to THREE.CapsuleGeometry."),super(e,t,i,r)}},yU=class extends wg{constructor(e,t,i,r){console.warn("THREE.CircleBufferGeometry has been renamed to THREE.CircleGeometry."),super(e,t,i,r)}},TU=class extends Rg{constructor(e,t,i,r,n,s,a){console.warn("THREE.ConeBufferGeometry has been renamed to THREE.ConeGeometry."),super(e,t,i,r,n,s,a)}},EU=class extends Rl{constructor(e,t,i,r,n,s,a,o){console.warn("THREE.CylinderBufferGeometry has been renamed to THREE.CylinderGeometry."),super(e,t,i,r,n,s,a,o)}},bU=class extends Mg{constructor(e,t){console.warn("THREE.DodecahedronBufferGeometry has been renamed to THREE.DodecahedronGeometry."),super(e,t)}},xU=class extends Mp{constructor(e,t){console.warn("THREE.ExtrudeBufferGeometry has been renamed to THREE.ExtrudeGeometry."),super(e,t)}},IU=class extends Cg{constructor(e,t){console.warn("THREE.IcosahedronBufferGeometry has been renamed to THREE.IcosahedronGeometry."),super(e,t)}},_U=class extends uf{constructor(e,t,i,r){console.warn("THREE.LatheBufferGeometry has been renamed to THREE.LatheGeometry."),super(e,t,i,r)}},SU=class extends hf{constructor(e,t){console.warn("THREE.OctahedronBufferGeometry has been renamed to THREE.OctahedronGeometry."),super(e,t)}},wU=class extends ts{constructor(e,t,i,r){console.warn("THREE.PlaneBufferGeometry has been renamed to THREE.PlaneGeometry."),super(e,t,i,r)}},RU=class extends Dc{constructor(e,t,i,r){console.warn("THREE.PolyhedronBufferGeometry has been renamed to THREE.PolyhedronGeometry."),super(e,t,i,r)}},MU=class extends Ag{constructor(e,t,i,r,n,s){console.warn("THREE.RingBufferGeometry has been renamed to THREE.RingGeometry."),super(e,t,i,r,n,s)}},DU=class extends Dp{constructor(e,t){console.warn("THREE.ShapeBufferGeometry has been renamed to THREE.ShapeGeometry."),super(e,t)}},CU=class extends ro{constructor(e,t,i,r,n,s,a){console.warn("THREE.SphereBufferGeometry has been renamed to THREE.SphereGeometry."),super(e,t,i,r,n,s,a)}},AU=class extends Og{constructor(e,t){console.warn("THREE.TetrahedronBufferGeometry has been renamed to THREE.TetrahedronGeometry."),super(e,t)}},OU=class extends Cp{constructor(e,t,i,r,n){console.warn("THREE.TorusBufferGeometry has been renamed to THREE.TorusGeometry."),super(e,t,i,r,n)}},PU=class extends Pg{constructor(e,t,i,r,n,s){console.warn("THREE.TorusKnotBufferGeometry has been renamed to THREE.TorusKnotGeometry."),super(e,t,i,r,n,s)}},NU=class extends Ng{constructor(e,t,i,r,n){console.warn("THREE.TubeBufferGeometry has been renamed to THREE.TubeGeometry."),super(e,t,i,r,n)}};"undefined"!=typeof __THREE_DEVTOOLS__&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("register",{detail:{revision:tC}})),"undefined"!=typeof window&&(window.__THREE__?console.warn("WARNING: Multiple instances of Three.js being imported."):window.__THREE__=tC);var zu=new Wi,Ohe=new A,Phe=new A,Nhe=new A,Lhe=new A;function cC(e,t,i,r,n,s,a){if(Ohe.fromBufferAttribute(t,r).applyMatrix4(e.matrixWorld),Phe.fromBufferAttribute(t,n).applyMatrix4(e.matrixWorld),i.ray.distanceSqToSegment(Ohe,Phe,Lhe,Nhe)>s)return!1;let o=i.ray.origin.distanceTo(Lhe);return!(oi.far)&&(a.push({distance:o,point:Nhe.clone(),index:r,object:e}),!0)}Ir.prototype.raycast=function(e,t){let i=this.geometry,r=this.matrixWorld,n=e.params.Line.threshold,s=i.drawRange;if(null===i.boundingSphere&&i.computeBoundingSphere(),zu.copy(i.boundingSphere),zu.applyMatrix4(r),zu.radius+=n,!1===e.ray.intersectsSphere(zu))return;let a=n*n,o=this.isLineSegments?2:1,l=i.index,h=i.attributes.position,u=t.length;if(null!==l){let i=this.userData.batches;if(i&&i.length>0&&i[0].boundingSphere)for(let n=0;n=1))return}}else{for(let i=Math.max(0,s.start),r=Math.min(l.count,s.start+s.count)-1;i=1))return}}}else{let i=this.userData.batches;if(i&&i.length>0&&i[0].boundingSphere)for(let n=0;n=1)return}else{for(let i=Math.max(0,s.start),r=Math.min(h.count,s.start+s.count)-1;i=1)return}}};var Fhe=Math.pow(2,-24),Gg=class{constructor(){}};function Nl(e,t,i){return i.min.x=t[e],i.min.y=t[e+1],i.min.z=t[e+2],i.max.x=t[e+3],i.max.y=t[e+4],i.max.z=t[e+5],i}function YU(e){let t=-1,i=-1/0;for(let r=0;r<3;r++){let n=e[r+3]-e[r];n>i&&(i=n,t=r)}return t}function XU(e,t){t.set(e)}function $U(e,t,i){let r,n;for(let s=0;s<3;s++){let a=s+3;r=e[s],n=t[s],i[s]=rn?r:n}}function Px(e,t,i){for(let r=0;r<3;r++){let n=t[e+2*r],s=t[e+2*r+1],a=n-s,o=n+s;ai[r+3]&&(i[r+3]=o)}}function Xy(e){let t=e[3]-e[0],i=e[4]-e[1],r=e[5]-e[2];return 2*(t*i+i*r+r*t)}function Cvt(e,t){if(!e.index){let i,r=e.attributes.position.count,n=t.useSharedArrayBuffer?SharedArrayBuffer:ArrayBuffer;i=r>65535?new Uint32Array(new n(4*r)):new Uint16Array(new n(2*r)),e.setIndex(new Wt(i,1));for(let e=0;ee-t));for(let e=0;el&&(l=v),y&&tf&&(f=t);let T=e[r+2],x=e[r+3],b=T-x,_=T+x;bh&&(h=_),y&&Tm&&(m=T);let E=e[r+4],w=e[r+5],S=E-w,I=E+w;Su&&(u=I),y&&Eg&&(g=E)}r[0]=s,r[1]=a,r[2]=o,r[3]=l,r[4]=h,r[5]=u,y&&(n[0]=c,n[1]=p,n[2]=d,n[3]=f,n[4]=m,n[5]=g)}function Ovt(e,t,i,r){let n=1/0,s=1/0,a=1/0,o=-1/0,l=-1/0,h=-1/0;for(let r=6*t,u=6*(t+i);ro&&(o=t);let i=e[r+2];il&&(l=i);let u=e[r+4];uh&&(h=u)}r[0]=n,r[1]=s,r[2]=a,r[3]=o,r[4]=l,r[5]=h}function Pvt(e,t,i,r,n){let s=i,a=i+r-1,o=n.pos,l=2*n.axis;for(;;){for(;s<=a&&t[6*s+l]=o;)a--;if(!(se.candidate-t.candidate,vf=new Array(Hp).fill().map((()=>({count:0,bounds:new Float32Array(6),rightCacheBounds:new Float32Array(6),leftCacheBounds:new Float32Array(6),candidate:0}))),uC=new Float32Array(6);function Lvt(e,t,i,r,n,s){let a=-1,o=0;if(0===s)a=YU(t),-1!==a&&(o=(t[a]+t[a+3])/2);else if(1===s)a=YU(e),-1!==a&&(o=Fvt(i,r,n,a));else if(2===s){let s=Xy(e),l=1.25*n,h=6*r,u=6*(r+n);for(let e=0;e<3;e++){let r=t[e],c=(t[e+3]-r)/Hp;if(n=s.candidate?Px(r,i,s.rightCacheBounds):(Px(r,i,s.leftCacheBounds),s.count++)}}for(let i=0;i=Hp&&(n=Hp-1);let s=vf[n];s.count++,Px(t,i,s.bounds)}let t=vf[Hp-1];XU(t.bounds,t.rightCacheBounds);for(let e=Hp-2;e>=0;e--){let t=vf[e],i=vf[e+1];$U(t.bounds,i.rightCacheBounds,t.rightCacheBounds)}let p=0;for(let t=0;tm&&(m=l),h>m&&(m=h);let g=(m-d)/2,y=2*e;s[f+y+0]=d+g,s[f+y+1]=g+(Math.abs(d)+g)*Fhe,dt[e+3]&&(t[e+3]=m)}}return s}function Uvt(e,t){function i(e){p&&p(e/d)}function r(t,n,p,d=null,m=0){if(!f&&m>=l&&(f=!0,h&&(console.warn(`MeshBVH: Max depth of ${l} reached when generating BVH. Consider increasing maxDepth.`),console.warn(e))),p<=u||m>=l)return i(n+p),t.offset=n,t.count=p,t;let g=Lvt(t.boundingData,d,a,n,p,c);if(-1===g.axis)return i(n+p),t.offset=n,t.count=p,t;let y=Pvt(o,a,n,p,g);if(y===n||y===n+p)i(n+p),t.offset=n,t.count=p;else{t.splitAxis=g.axis;let e=new Gg,i=n,o=y-n;t.left=e,e.boundingData=new Float32Array(6),ZU(a,i,o,e.boundingData,s),r(e,i,o,s,m+1);let l=new Gg,h=y,u=p-o;t.right=l,l.boundingData=new Float32Array(6),ZU(a,h,u,l.boundingData,s),r(l,h,u,s,m+1)}return t}Cvt(e,t);let n=new Float32Array(6),s=new Float32Array(6),a=Hvt(e,n),o=e.index.array,l=t.maxDepth,h=t.verbose,u=t.maxLeafTris,c=t.strategy,p=t.onProgress,d=e.index.count/3,f=!1,m=[],g=Avt(e);if(1===g.length){let e=g[0],t=new Gg;t.boundingData=n,Ovt(a,e.offset,e.count,s),r(t,e.offset,e.count,s),m.push(t)}else for(let e of g){let t=new Gg;t.boundingData=new Float32Array(6),ZU(a,e.offset,e.count,t.boundingData,s),r(t,e.offset,e.count,s),m.push(t)}return m}function Bhe(e,t){let i,r,n,s=Uvt(e,t),a=[],o=t.useSharedArrayBuffer?SharedArrayBuffer:ArrayBuffer;for(let e=0;eMath.pow(2,32))throw new Error("MeshBVH: Cannot store child pointer greater than 32 bits.");return r[s+6]=i/4,i=h(i,a),r[s+7]=o,i}}}var oo=class{constructor(){this.min=1/0,this.max=-1/0}setFromPointsField(e,t){let i=1/0,r=-1/0;for(let n=0,s=e.length;nr?s:r}this.min=i,this.max=r}setFromPoints(e,t){let i=1/0,r=-1/0;for(let n=0,s=t.length;nr?a:r}this.min=i,this.max=r}isSeparated(e){return this.min>e.max||e.min>this.max}};oo.prototype.setFromBox=function(){let e=new A;return function(t,i){let r=i.min,n=i.max,s=1/0,a=-1/0;for(let i=0;i<=1;i++)for(let o=0;o<=1;o++)for(let l=0;l<=1;l++){e.x=r.x*i+n.x*(1-i),e.y=r.y*o+n.y*(1-o),e.z=r.z*l+n.z*(1-l);let h=t.dot(e);s=Math.min(h,s),a=Math.max(h,a)}this.min=s,this.max=a}}();var sjt=function(){let e=new oo;return function(t,i){let r=t.points,n=t.satAxes,s=t.satBounds,a=i.points,o=i.satAxes,l=i.satBounds;for(let t=0;t<3;t++){let i=s[t],r=n[t];if(e.setFromPoints(r,a),i.isSeparated(e))return!1}for(let t=0;t<3;t++){let i=l[t],n=o[t];if(e.setFromPoints(n,r),i.isSeparated(e))return!1}}}(),Bvt=function(){let e=new A,t=new A,i=new A;return function(r,n,s){let a=r.start,o=e,l=n.start,h=t;i.subVectors(a,l),e.subVectors(r.end,r.start),t.subVectors(n.end,n.start);let u,c,p=i.dot(h),d=h.dot(o),f=h.dot(h),m=i.dot(o),g=o.dot(o)*f-d*d;u=0!==g?(p*d-m*f)/g:0,c=(p+u*d)/f,s.x=u,s.y=c}}(),Nx=function(){let e=new le,t=new A,i=new A;return function(r,n,s,a){Bvt(r,n,e);let o=e.x,l=e.y;if(o>=0&&o<=1&&l>=0&&l<=1)return r.at(o,s),void n.at(l,a);if(o>=0&&o<=1)return l<0?n.at(0,a):n.at(1,a),void r.closestPointToPoint(a,!0,s);if(l>=0&&l<=1)return o<0?r.at(0,s):r.at(1,s),void n.closestPointToPoint(s,!0,a);{let e,h;e=o<0?r.start:r.end,h=l<0?n.start:n.end;let u=t,c=i;return r.closestPointToPoint(h,!0,t),n.closestPointToPoint(e,!0,i),u.distanceToSquared(h)<=c.distanceToSquared(e)?(s.copy(u),void a.copy(h)):(s.copy(e),void a.copy(c))}}}(),khe=function(){let e=new A,t=new A,i=new bi,r=new Ca;return function(n,s){let{radius:a,center:o}=n,{a:l,b:h,c:u}=s;if(r.start=l,r.end=h,r.closestPointToPoint(o,!0,e).distanceTo(o)<=a||(r.start=l,r.end=u,r.closestPointToPoint(o,!0,e).distanceTo(o)<=a)||(r.start=h,r.end=u,r.closestPointToPoint(o,!0,e).distanceTo(o)<=a))return!0;let c=s.getPlane(i);if(Math.abs(c.distanceToPoint(o))<=a){let e=c.projectPoint(o,t);if(s.containsPoint(e))return!0}return!1}}(),kvt=1e-15;function $y(e){return Math.abs(e)new A)),this.satBounds=new Array(4).fill().map((()=>new oo)),this.points=[this.a,this.b,this.c],this.sphere=new Wi,this.plane=new bi,this.needsUpdate=!0}intersectsSphere(e){return khe(e,this)}update(){let e=this.a,t=this.b,i=this.c,r=this.points,n=this.satAxes,s=this.satBounds,a=n[0],o=s[0];this.getNormal(a),o.setFromPoints(a,r);let l=n[1],h=s[1];l.subVectors(e,t),h.setFromPoints(l,r);let u=n[2],c=s[2];u.subVectors(t,i),c.setFromPoints(u,r);let p=n[3],d=s[3];p.subVectors(i,e),d.setFromPoints(p,r),this.sphere.setFromPoints(this.points),this.plane.setFromNormalAndCoplanarPoint(a,e),this.needsUpdate=!1}};lo.prototype.closestPointToSegment=function(){let e=new A,t=new A,i=new Ca;return function(r,n=null,s=null){let a,{start:o,end:l}=r,h=this.points,u=1/0;for(let o=0;o<3;o++){let l=(o+1)%3;i.start.copy(h[o]),i.end.copy(h[l]),Nx(i,r,e,t),a=e.distanceToSquared(t),a1-1e-10){let e=this.satBounds,a=this.satAxes;i[0]=p.a,i[1]=p.b,i[2]=p.c;for(let t=0;t<4;t++){let n=e[t],s=a[t];if(r.setFromPoints(s,i),n.isSeparated(r))return!1}let o=p.satBounds,l=p.satAxes;t[0]=this.a,t[1]=this.b,t[2]=this.c;for(let e=0;e<4;e++){let i=o[e],n=l[e];if(r.setFromPoints(n,t),i.isSeparated(r))return!1}for(let e=0;e<4;e++){let o=a[e];for(let e=0;e<4;e++){let a=l[e];if(s.crossVectors(o,a),r.setFromPoints(s,t),n.setFromPoints(s,i),r.isSeparated(n))return!1}}return d&&(f||console.warn("ExtendedTriangle.intersectsTriangle: Triangles are coplanar which does not support an output edge. Setting edge to 0, 0, 0."),d.start.set(0,0,0),d.end.set(0,0,0)),!0}{let e=this.points,t=!1,i=0;for(let r=0;r<3;r++){let n=e[r],s=e[(r+1)%3];h.start.copy(n),h.end.copy(s),h.delta(a);let o=t?u.start:u.end,l=$y(g.distanceToPoint(n));if($y(g.normal.dot(a))&&l){u.copy(h),i=2;break}if((g.intersectLine(h,o)||l)&&!$y(o.distanceTo(s))){if(i++,t)break;t=!0}}if(1===i&&p.containsPoint(u.end))return d&&(d.start.copy(u.end),d.end.copy(u.end)),!0;if(2!==i)return!1;let r=p.points,n=!1,s=0;for(let e=0;e<3;e++){let t=r[e],i=r[(e+1)%3];h.start.copy(t),h.end.copy(i),h.delta(o);let a=n?c.start:c.end,l=$y(m.distanceToPoint(t));if($y(m.normal.dot(o))&&l){c.copy(h),s=2;break}if((m.intersectLine(h,a)||l)&&!$y(a.distanceTo(i))){if(s++,n)break;n=!0}}if(1===s&&this.containsPoint(c.end))return d&&(d.start.copy(c.end),d.end.copy(c.end)),!0;if(2!==s)return!1;if(u.delta(a),c.delta(o),a.dot(o)<0){let e=c.start;c.start=c.end,c.end=e}let f=u.start.dot(a),y=u.end.dot(a),v=c.start.dot(a),T=c.end.dot(a);return(f===T||v===y||y0?d.start.copy(u.start):d.start.copy(c.start),l.subVectors(u.end,c.end),l.dot(a)<0?d.end.copy(u.end):d.end.copy(c.end)),!0)}}}(),lo.prototype.distanceToPoint=function(){let e=new A;return function(t){return this.closestPointToPoint(t,e),t.distanceTo(e)}}(),lo.prototype.distanceToTriangle=function(){let e=new A,t=new A,i=["a","b","c"],r=new Ca,n=new Ca;return function(s,a=null,o=null){let l=a||o?r:null;if(this.intersectsTriangle(s,l))return(a||o)&&(a&&l.getCenter(a),o&&l.getCenter(o)),0;let h=1/0;for(let t=0;t<3;t++){let r,n=i[t],l=s[n];this.closestPointToPoint(l,e),r=l.distanceToSquared(e),rnew A)),this.satAxes=new Array(3).fill().map((()=>new A)),this.satBounds=new Array(3).fill().map((()=>new oo)),this.alignedSatBounds=new Array(3).fill().map((()=>new oo)),this.needsUpdate=!1,e&&this.min.copy(e),t&&this.max.copy(t),i&&this.matrix.copy(i)}set(e,t,i){this.min.copy(e),this.max.copy(t),this.matrix.copy(i),this.needsUpdate=!0}copy(e){this.min.copy(e.min),this.max.copy(e.max),this.matrix.copy(e.matrix),this.needsUpdate=!0}};co.prototype.update=function(){let e=this.matrix,t=this.min,i=this.max,r=this.points;for(let n=0;n<=1;n++)for(let s=0;s<=1;s++)for(let a=0;a<=1;a++){let o=r[1*n|2*s|4*a];o.x=n?i.x:t.x,o.y=s?i.y:t.y,o.z=a?i.z:t.z,o.applyMatrix4(e)}let n=this.satBounds,s=this.satAxes,a=r[0];for(let e=0;e<3;e++){let t=s[e],i=n[e],o=r[1<new Ca)),i=new Array(12).fill().map((()=>new Ca)),r=new A,n=new A;return function(s,a=0,o=null,l=null){if(this.needsUpdate&&this.update(),this.intersectsBox(s))return(o||l)&&(s.getCenter(n),this.closestPointToPoint(n,r),s.closestPointToPoint(r,n),o&&o.copy(r),l&&l.copy(n)),0;let h=a*a,u=s.min,c=s.max,p=this.points,d=1/0;for(let e=0;e<8;e++){let t=p[e];n.copy(t).clamp(u,c);let i=t.distanceToSquared(n);if(ii.far)?null:e}function Ll(e,t,i,r){let n=e.a,s=e.b,a=e.c,o=t,l=t+1,h=t+2;i&&(o=i.getX(t),l=i.getX(t+1),h=i.getX(t+2)),n.x=r.getX(o),n.y=r.getY(o),n.z=r.getZ(o),s.x=r.getX(l),s.y=r.getY(l),s.z=r.getZ(l),a.x=r.getX(h),a.y=r.getY(h),a.z=r.getZ(h)}function tB(e,t,i,r,n,s,a){let o=i.index,l=i.attributes.position;for(let i=e,h=t+e;i=0;u?(n=Jy(e),a=Qy(e,o)):(n=Qy(e,o),a=Jy(e));let c=TC(n,s,r,gC)?yC(n,t,i,r):null;if(c){let e=c.point[h];if(u?e<=s[a+l]:e>=s[a+l+3])return c}let p=TC(a,s,r,gC)?yC(a,t,i,r):null;return c&&p?c.distance<=p.distance?c:p:c||p||null}}var Xhe=function(){let e,t,i=[],r=new Ky((()=>new Mt));return function(...s){e=r.getPrimitive(),t=r.getPrimitive(),i.push(e,t);let a=n(...s);r.releasePrimitive(e),r.releasePrimitive(t),i.pop(),i.pop();let o=i.length;return o>0&&(t=i[o-1],e=i[o-2]),a};function n(i,r,s,a,o=null,l=0,h=0){function u(e){let t=2*e,i=yf,r=Tf;for(;!Up(t,i);)t=2*(e=Jy(e));return Vg(e,r)}function c(e){let t=2*e,i=yf,r=Tf;for(;!Up(t,i);)t=2*(e=Qy(e,r));return Vg(e,r)+Zy(t,i)}let p=2*i,d=tT,f=yf,m=Tf;if(Up(p,f)){let t=Vg(i,m),r=Zy(p,f);return Nl(i,d,e),a(t,r,!1,h,l+i,e)}{let p,g,y,v,T=Jy(i),x=Qy(i,m),b=T,_=x;if(o&&(y=e,v=t,Nl(b,d,y),Nl(_,d,v),p=o(y),g=o(v),gn.intersectsBox(e),intersectsTriangle:e=>{e.a.applyMatrix4(h),e.b.applyMatrix4(h),e.c.applyMatrix4(h),e.needsUpdate=!0;for(let i=3*y,r=3*(v+y);inew lo)),Pc=class{static serialize(e,t={}){if(t.isBufferGeometry)return console.warn("MeshBVH.serialize: The arguments for the function have changed. See documentation for new signature."),Pc.serialize(arguments[0],{cloneBuffers:void 0===arguments[2]||arguments[2]});t=Br({cloneBuffers:!0},t);let i,r=e.geometry,n=e._roots,s=r.getIndex();return i=t.cloneBuffers?{roots:n.map((e=>e.slice())),index:s.array.slice()}:{roots:n,index:s.array},i}static deserialize(e,t,i={}){if("boolean"==typeof i)return console.warn("MeshBVH.deserialize: The arguments for the function have changed. See documentation for new signature."),Pc.deserialize(arguments[0],arguments[1],{setIndex:void 0===arguments[2]||arguments[2]});i=Br({setIndex:!0},i);let{index:r,roots:n}=e,s=new Pc(t,Cn(Br({},i),{[iB]:!0}));if(s._roots=n,i.setIndex){let i=t.getIndex();if(null===i){let i=new Wt(e.index,1,!1);t.setIndex(i)}else i.array!==r&&(i.array.set(r),i.needsUpdate=!0)}return s}constructor(e,t={}){if(!e.isBufferGeometry)throw new Error("MeshBVH: Only BufferGeometries are supported.");if(e.index&&e.index.isInterleavedBufferAttribute)throw new Error("MeshBVH: InterleavedBufferAttribute is not supported for the index attribute.");if((t=Object.assign({strategy:0,maxDepth:40,maxLeafTris:10,verbose:!0,useSharedArrayBuffer:!1,setBoundingBox:!0,onProgress:null,[iB]:!1},t)).useSharedArrayBuffer&&"undefined"==typeof SharedArrayBuffer)throw new Error("MeshBVH: SharedArrayBuffer is not available.");this._roots=null,t[iB]||(this._roots=Bhe(e,t),!e.boundingBox&&t.setBoundingBox&&(e.boundingBox=this.getBoundingBox(new Mt))),this.geometry=e}refit(e=null){e&&Array.isArray(e)&&(e=new Set(e));let t,i,r,n,s=this.geometry,a=s.index.array,o=s.attributes.position,l=0,h=this._roots;for(let e=0,s=h.length;ec&&(c=i),rp&&(p=r),nd&&(d=n)}return(n[t+0]!==s||n[t+1]!==l||n[t+2]!==u||n[t+3]!==c||n[t+4]!==p||n[t+5]!==d)&&(n[t+0]=s,n[t+1]=l,n[t+2]=u,n[t+3]=c,n[t+4]=p,n[t+5]=d,!0)}{let r=t+8,a=i[t+6],o=r+s,h=a+s,c=l,p=!1,d=!1;e?c||(p=e.has(o),d=e.has(h),c=!p&&!d):(p=!0,d=!0);let f=c||d,m=!1;(c||p)&&(m=u(r,s,c));let g=!1;f&&(g=u(a,s,c));let y=m||g;if(y)for(let e=0;e<3;e++){let i=r+e,s=a+e,o=n[i],l=n[i+3],h=n[s],u=n[s+3];n[t+e]=ou?l:u}return y}}}traverse(e,t=0){let i=this._roots[t],r=new Uint32Array(i),n=new Uint16Array(i);!function t(s,a=0){let o=2*s,l=65535===n[o+15];if(l){let t=r[s+6],h=n[o+14];e(a,l,new Float32Array(i,4*s,6),t,h)}else{let n=s+8,o=r[s+6],h=r[s+7];e(a,l,new Float32Array(i,4*s,6),h)||(t(n,a+1),t(o,a+1))}}(0)}raycast(e,t=tn){let i=this._roots,r=this.geometry,n=[],s=t.isMaterial,a=Array.isArray(t),o=r.groups,l=s?t.side:t;for(let s=0,h=i.length;s{let s=3*i;return e(t,s,s+1,s+2,r,n)}}e={boundsTraverseOrder:i,intersectsBounds:e,intersectsTriangle:t,intersectsRange:null},console.warn("MeshBVH: Shapecast function signature has changed and now takes an object of callbacks as a second argument. See docs for new signature.")}let n=ju.getPrimitive(),{boundsTraverseOrder:s,intersectsBounds:a,intersectsRange:o,intersectsTriangle:l}=e;if(o&&l){let e=o;o=(t,i,s,a,o)=>!!e(t,i,s,a,o)||tB(t,i,r,l,s,a,n)}else o||(o=l?(e,t,i,s)=>tB(e,t,r,l,i,s,n):(e,t,i)=>i);let h=!1,u=0;for(let e of this._roots){if(rT(e),h=Xhe(0,r,a,o,s,u),Lx(),h)break;u+=e.byteLength}return ju.releasePrimitive(n),h}bvhcast(e,t,i){let{intersectsRanges:r,intersectsTriangles:n}=i,s=this.geometry.index,a=this.geometry.attributes.position,o=e.geometry.index,l=e.geometry.attributes.position;iT.copy(t).invert();let h=ju.getPrimitive(),u=ju.getPrimitive();if(n){let e=function(e,i,r,c,p,d,f,m){for(let g=r,y=r+c;gsB.intersectsBox(e),intersectsRange:(t,i,n,s,a,o)=>(nB.copy(o),nB.applyMatrix4(iT),e.shapecast({intersectsBounds:e=>nB.intersectsBox(e),intersectsRange:(e,n,o,l,h)=>r(t,i,e,n,s,a,l,h)}))});return ju.releasePrimitive(h),ju.releasePrimitive(u),c}intersectsBox(e,t){return zg.set(e.min,e.max,t),zg.needsUpdate=!0,this.shapecast({intersectsBounds:e=>zg.intersectsBox(e),intersectsTriangle:e=>zg.intersectsTriangle(e)})}intersectsSphere(e){return this.shapecast({intersectsBounds:t=>e.intersectsBox(t),intersectsTriangle:t=>t.intersectsSphere(e)})}closestPointToGeometry(e,t,i={},r={},n=0,s=1/0){e.boundingBox||e.computeBoundingBox(),zg.set(e.boundingBox.min,e.boundingBox.max,t),zg.needsUpdate=!0;let a=this.geometry,o=a.attributes.position,l=a.index,h=e.attributes.position,u=e.index,c=ju.getPrimitive(),p=ju.getPrimitive(),d=EC,f=Wvt,m=null,g=null;r&&(m=qvt,g=Yvt);let y=1/0,v=null,T=null;return iT.copy(t).invert(),Fx.matrix.copy(iT),this.shapecast({boundsTraverseOrder:e=>zg.distanceToBox(e),intersectsBounds:(e,t,i)=>i{if(e.boundsTree)return e.boundsTree.shapecast({boundsTraverseOrder:e=>Fx.distanceToBox(e),intersectsBounds:(e,t,i)=>i{for(let a=3*e,x=3*(e+s);a(Hx.copy(e).clamp(t.min,t.max),Hx.distanceToSquared(e)),intersectsBounds:(e,t,i)=>i{t.closestPointToPoint(e,Hx);let r=e.distanceToSquared(Hx);return r{Nl(0,new Float32Array(t),Khe),e.union(Khe)})),e}},aB=new ko,Zhe=new Be,Xvt=rt.prototype.raycast;function oB(e,t){if(this.geometry.boundsTree){if(void 0===this.material)return;Zhe.copy(this.matrixWorld).invert(),aB.copy(e.ray).applyMatrix4(Zhe);let i=this.geometry.boundsTree;if(!0===e.firstHitOnly){let r=eB(i.raycastFirst(aB,this.material),this,e);r&&t.push(r)}else{let r=i.raycast(aB,this.material);for(let i=0,n=r.length;ii.far?null:{distance:h,point:RC.clone(),object:e}}function MC(e,t,i,r,n,s,a,o,l,h,u,c){Ef.fromBufferAttribute(n,h),bf.fromBufferAttribute(n,u),xf.fromBufferAttribute(n,c);let p=e.morphTargetInfluences;if(s&&p){bC.set(0,0,0),xC.set(0,0,0),IC.set(0,0,0);for(let e=0,t=s.length;e=1)return}}else{for(let i=Math.max(0,d.start),n=Math.min(a.count,d.start+d.count);i=1)return}}else if(void 0!==o)if(Array.isArray(r))for(let i=0,n=p.length;i=1)return}}else{for(let i=Math.max(0,d.start),n=Math.min(o.count,d.start+d.count);i=1)return}}},rt.prototype.raycast=oB;var DC=new Wi,CC=new A;function Qhe(e,t,i,r,n,s){let a=r.ray.distanceSqToPoint(e);if(ar.far)return;n.push({distance:o,distanceToRay:Math.sqrt(a),point:i,index:t,face:null,object:s})}}nn.prototype.raycast=function(e,t){let i=this.geometry,r=this.matrixWorld,n=e.params.Points.threshold,s=i.drawRange;if(null===i.boundingSphere&&i.computeBoundingSphere(),DC.copy(i.boundingSphere),DC.applyMatrix4(r),DC.radius+=n,!1===e.ray.intersectsSphere(DC))return;let a=n*n,o=i.index,l=i.attributes.position,h=t.length;if(null!==o){for(let i=Math.max(0,s.start),n=Math.min(o.count,s.start+s.count);i=1)return}}else{for(let i=Math.max(0,s.start),n=Math.min(l.count,s.start+s.count);i=1)return}};var dB=class{constructor(){this.id=0,this.object=null,this.z=0,this.renderOrder=0}},Ux=class{constructor(){this.id=0,this.v1=new If,this.v2=new If,this.v3=new If,this.normalModel=new A,this.vertexNormalsModel=[new A,new A,new A],this.vertexNormalsLength=0,this.color=new je,this.material=null,this.uvs=[new le,new le,new le],this.z=0,this.renderOrder=0}},If=class{constructor(){this.position=new A,this.positionWorld=new A,this.positionScreen=new Gr,this.visible=!0}copy(e){this.positionWorld.copy(e.positionWorld),this.positionScreen.copy(e.positionScreen)}},Bx=class{constructor(){this.id=0,this.v1=new If,this.v2=new If,this.vertexColors=[new je,new je],this.material=null,this.z=0,this.renderOrder=0}},kx=class{constructor(){this.id=0,this.object=null,this.x=0,this.y=0,this.z=0,this.rotation=0,this.scale=new le,this.material=null,this.renderOrder=0}},AC=class{constructor(){let e,t,i,r,n,s,a,o,l,h,u,c=0,p=0,d=0,f=0,m=0,g={objects:[],lights:[],elements:[]},y=new A,v=new Gr,T=new Mt(new A(-1,-1,-1),new A(1,1,1)),x=new Mt,b=new Array(3),_=new Be,E=new Be,w=new Be,S=new $s,I=[],M=[],D=[],O=[],R=[];let C=new function(){let e=[],t=[],s=[],l=null,h=new Ni;function c(e){let t=e.position,i=e.positionWorld,r=e.positionScreen;i.copy(t).applyMatrix4(u),r.copy(i).applyMatrix4(E);let n=1/r.w;r.x*=n,r.y*=n,r.z*=n,e.visible=r.x>=-1&&r.x<=1&&r.y>=-1&&r.y<=1&&r.z>=-1&&r.z<=1}function d(e,t,i){return!0===e.visible||!0===t.visible||!0===i.visible||(b[0]=e.positionScreen,b[1]=t.positionScreen,b[2]=i.positionScreen,T.intersectsBox(x.setFromPoints(b)))}function m(e,t,i){return(i.positionScreen.x-e.positionScreen.x)*(t.positionScreen.y-e.positionScreen.y)-(i.positionScreen.y-e.positionScreen.y)*(t.positionScreen.x-e.positionScreen.x)<0}return{setObject:function(i){l=i,h.getNormalMatrix(l.matrixWorld),e.length=0,t.length=0,s.length=0},projectVertex:c,checkTriangleVisibility:d,checkBackfaceCulling:m,pushVertex:function(e,t,n){i=function(){if(r===p){let e=new If;return M.push(e),p++,r++,e}return M[r++]}(),i.position.set(e,t,n),c(i)},pushNormal:function(t,i,r){e.push(t,i,r)},pushColor:function(e,i,r){t.push(e,i,r)},pushUv:function(e,t){s.push(e,t)},pushLine:function(e,i){let r=M[e],n=M[i];r.positionScreen.copy(r.position).applyMatrix4(w),n.positionScreen.copy(n.position).applyMatrix4(w),!0===function(e,t){let i=0,r=1,n=e.z+e.w,s=t.z+t.w,a=-e.z+e.w,o=-t.z+t.w;return n>=0&&s>=0&&a>=0&&o>=0||!(n<0&&s<0||a<0&&o<0)&&(n<0?i=Math.max(i,n/(n-s)):s<0&&(r=Math.min(r,n/(n-s))),a<0?i=Math.max(i,a/(a-o)):o<0&&(r=Math.min(r,a/(a-o))),!(r=-1&&e.z<=1&&(l=function(){if(h===m){let e=new kx;return R.push(e),m++,h++,e}return R[h++]}(),l.id=t.id,l.x=e.x*r,l.y=e.y*r,l.z=e.z,l.renderOrder=t.renderOrder,l.object=t,l.rotation=t.rotation,l.scale.x=t.scale.x*Math.abs(l.x-(e.x+i.projectionMatrix.elements[0])/(e.w+i.projectionMatrix.elements[12])),l.scale.y=t.scale.y*Math.abs(l.y-(e.y+i.projectionMatrix.elements[5])/(e.w+i.projectionMatrix.elements[13])),l.material=t.material,g.elements.push(l))}function F(){if(s===d){let e=new Ux;return D.push(e),d++,s++,e}return D[s++]}function U(e,t){return e.renderOrder!==t.renderOrder?e.renderOrder-t.renderOrder:e.z!==t.z?t.z-e.z:e.id!==t.id?e.id-t.id:0}this.projectScene=function(e,i,n,a){s=0,o=0,h=0,g.elements.length=0,!0===e.matrixWorldAutoUpdate&&e.updateMatrixWorld(),null===i.parent&&!0===i.matrixWorldAutoUpdate&&i.updateMatrixWorld(),_.copy(i.matrixWorldInverse),E.multiplyMatrices(i.projectionMatrix,_),S.setFromProjectionMatrix(E),t=0,g.objects.length=0,g.lights.length=0,N(e),!0===n&&g.objects.sort(U);let l=g.objects;for(let e=0,t=l.length;e0)for(let n=0;n0)for(let r=0;r0;)L.removeChild(L.childNodes[0])}function U(e){return null!==g?e.toFixed(g):e}function k(e,t,i){let r=t.scale.x*s,n=t.scale.y*a;i.isPointsMaterial&&(r*=i.size,n*=i.size);let o="M"+U(e.x-.5*r)+","+U(e.y-.5*n)+"h"+U(r)+"v"+U(n)+"h"+U(-r)+"z",l="";(i.isSpriteMaterial||i.isPointsMaterial)&&(l="fill:"+i.color.getStyle()+";fill-opacity:"+i.opacity),z(l,o)}function B(e,t,i){let r="M"+U(e.positionScreen.x)+","+U(e.positionScreen.y)+"L"+U(t.positionScreen.x)+","+U(t.positionScreen.y);if(i.isLineBasicMaterial){let e="fill:none;stroke:"+i.color.getStyle()+";stroke-opacity:"+i.opacity+";stroke-width:"+i.linewidth+";stroke-linecap:"+i.linecap;i.isLineDashedMaterial&&(e=e+";stroke-dasharray:"+i.dashSize+","+i.gapSize),z(e,r)}}function H(e,t,r,n,s){v.info.render.vertices+=3,v.info.render.faces++;let a="M"+U(e.positionScreen.x)+","+U(e.positionScreen.y)+"L"+U(t.positionScreen.x)+","+U(t.positionScreen.y)+"L"+U(r.positionScreen.x)+","+U(r.positionScreen.y)+"z",o="";s.isMeshBasicMaterial?(b.copy(s.color),s.vertexColors&&b.multiply(n.color)):s.isMeshLambertMaterial||s.isMeshPhongMaterial||s.isMeshStandardMaterial?(_.copy(s.color),s.vertexColors&&_.multiply(n.color),b.copy(E),M.copy(e.positionWorld).add(t.positionWorld).add(r.positionWorld).divideScalar(3),function(e,t,i,r){for(let n=0,s=e.length;n1||l.positionScreen.z<-1||l.positionScreen.z>1||h.positionScreen.z<-1||h.positionScreen.z>1)continue;o.positionScreen.x*=s,o.positionScreen.y*=-a,l.positionScreen.x*=s,l.positionScreen.y*=-a,h.positionScreen.x*=s,h.positionScreen.y*=-a,this.overdraw>0&&(G(o.positionScreen,l.positionScreen,this.overdraw),G(l.positionScreen,h.positionScreen,this.overdraw),G(h.positionScreen,o.positionScreen,this.overdraw)),x.setFromPoints([o.positionScreen,l.positionScreen,h.positionScreen]),!0===T.intersectsBox(x)&&H(o,l,h,i,r)}}V(),r.traverseVisible((function(e){if(e.isSVGObject){if(I.setFromMatrixPosition(e.matrixWorld),I.applyMatrix4(C),I.z<-1||I.z>1)return;let t=I.x*s,i=-I.y*a,r=e.node;r.setAttribute("transform",`translate(${t}, ${i}) rotate(${e.rotation.z})`),L.appendChild(r)}}))}}};function Kvt(e){let t={};return t.r=(e>>16&255)/255,t.g=(e>>8&255)/255,t.b=(255&e)/255,t}var aT=class extends sr{constructor(e=document.createElement("div")){super(),this.isCSS2DObject=!0,this.element=e,this.element.style.position="absolute",this.element.style.userSelect="none",this.element.setAttribute("draggable",!1),this.addEventListener("removed",(function(){this.traverse((function(e){e.element instanceof Element&&null!==e.element.parentNode&&e.element.parentNode.removeChild(e.element)}))}))}copy(e,t){return super.copy(e,t),this.element=e.element.cloneNode(!0),this}},sT=new A,rpe=new Be,ipe=new Be,npe=new A,spe=new A,_f=class{constructor(e={}){let t,i,r,n,s=this,a={objects:new WeakMap},o=void 0!==e.element?e.element:document.createElement("div");function l(e,t,i){if(e.isCSS2DObject){sT.setFromMatrixPosition(e.matrixWorld),sT.applyMatrix4(ipe);let l=!0===e.visible&&sT.z>=-1&&sT.z<=1&&!0===e.layers.test(i.layers);if(e.element.style.display=!0===l?"":"none",!0===l){e.onBeforeRender(s,t,i);let a=e.element;a.style.transform="translate(-50%,-50%) translate("+(sT.x*r+r)+"px,"+(-sT.y*n+n)+"px)",a.parentNode!==o&&o.appendChild(a),e.onAfterRender(s,t,i)}let u={distanceToCameraSquared:h(i,e)};a.objects.set(e,u)}for(let r=0,n=e.children.length;r{this.cancelReject=t}));this.promise=Promise.race([t,e])}cancel(){this.cancelReject&&this.cancelReject({type:"cancel"})}},Zvt=kn(ope(),1),ne=Zvt;ne.setLevel("warn");var lpe=e=>{try{ne.setLevel(e)}catch(e){ne.setLevel("error"),ne.error(e)}},fB=class{static isTouchScreenDevice(){return"ontouchstart"in window}static printDeviceInfo(){let e=navigator.userAgent,t=/(?:Android)/.test(e),i=/(?:Firefox)/.test(e),r=/(?:Chrome|CriOS)/.test(e),n=/(?:iPad|PlayBook)/.test(e)||t&&!/(?:Mobile)/.test(e)||i&&/(?:Tablet)/.test(e),s=/(?:iPhone)/.test(e)&&!n,a=!s&&!t,o=fB.isTouchScreenDevice();t&&ne.debug("[DI] is android"),i&&ne.debug("[DI] is fireFox"),r&&ne.debug("[DI] is chrome"),n&&ne.debug("[DI] is tablet"),s&&ne.debug("[DI] is iPhone"),a&&ne.debug("[DI] is PC"),o&&ne.debug("[DI] is touch device")}static creatReactNativeCanvas(e){let t=e.drawingBufferWidth||e.width||0,i=e.drawingBufferHeight||e.height||0;return{style:{},width:t,height:i,clientWidth:Math.ceil(t/(window.devicePixelRatio||1)),clientHeight:Math.ceil(i/(window.devicePixelRatio||1)),addEventListener:()=>{},removeEventListener:()=>{}}}},xi=fB;xi.isBrowser="undefined"!=typeof document,xi.isNode="undefined"!=typeof process&&"[object process]"===Object.prototype.toString.call(process);var NC=class extends sr{constructor(e){super(),this.isSVGObject=!0,this.node=e}},cpe="#7fffbf",upe=10,hpe=14,Jvt=2.5,ppe=(e=>(e.Dot="Dot",e.Square="Square",e.Triangle="Triangle",e.Cross="Cross",e.Perpendicular="Perpendicular",e))(ppe||{}),lT=class{static createSVGObject(e){return new NC(e)}static createPointMarker(e=upe){return lT.createSnapIcon("Dot",cpe,e,"#ffffff","2")}static createSnapIcon(e,t="none",i=upe,r=cpe,n="2"){let s=document.createElementNS("http://www.w3.org/2000/svg","path"),a=i,o="";switch(e){case"Dot":a=i/3,o=`\n M ${-a}, 0\n a ${a}, ${a} 0 1, 0 ${2*a}, 0\n a ${a}, ${a} 0 1, 0 -${2*a}, 0\n `;break;case"Square":a=i/1.2,o=`\n M ${-a/2}, ${-a/2}\n h ${a}\n v ${a}\n h ${-a}\n z\n `;break;case"Triangle":a=i/2,o=`\n M 0, ${-a}\n L ${-.87*a}, ${a/2}\n L ${.87*a}, ${a/2}\n z\n `;break;case"Cross":a=i/1.2,o=`\n M ${-a/2}, ${-a/2}\n L ${a/2}, ${a/2}\n M ${a/2}, ${-a/2}\n L ${-a/2}, ${a/2}\n `;break;case"Perpendicular":a=i,o=`\n M 0, 0\n L ${-a/2}, 0\n M 0, 0\n L 0, ${a/2}\n M ${a/2}, ${a/2}\n L ${-a/2}, ${a/2}\n M ${-a/2}, ${a/2}\n L ${-a/2}, ${-a/2}\n `}s.setAttribute("d",o);let l=`fill: ${t}; stroke: ${r}; stroke-width: ${n};`;return s.setAttribute("style",l),this.createSVGObject(s)}static createLine(e=6,t="#fff000",i=Jvt){let r=document.createElementNS("http://www.w3.org/2000/svg","line");r.setAttribute("x1",""+-e),r.setAttribute("y1","0"),r.setAttribute("x2",`${e}`),r.setAttribute("y2","0");let n=`stroke: ${t}; stroke-width: ${i};`;return r.setAttribute("style",n),this.createSVGObject(r)}static createLabel(e,t="#ffffff",i=hpe,r=hpe/2){let n=document.createElementNS("http://www.w3.org/2000/svg","text");n.innerHTML=e,n.setAttribute("x","0"),n.setAttribute("y",`${r}`);let s=`font-size: ${i}; text-anchor: middle; fill: ${t};`;return n.setAttribute("style",s),this.createSVGObject(n)}},_t=class{static isFullScreen(){return!(!document.fullscreenElement&&!document.mozFullScreenElement)}static fullScreen(e=document.documentElement){(e.requestFullscreen||e.mozRequestFullScreen||e.webkitRequestFullscreen||e.msRequestFullscreen).call(e)}static exitFullscreen(){(document.exitFullscreen||document.mozCancelFullscreen||document.webkitExitFullscreen||document.msExitFullscreen).call(document)}static displayPointMarker(e,t,i=1e3,r=10){let n=lT.createPointMarker(r);return n.position.set(t.x,t.y,t.z),e.add(n),i&&setTimeout((()=>{e.remove(n)}),i),n}static joinStrings(...e){return e.join("")}static numberToString(e){let t=2;return Math.abs(e)<1e-6?t=2:Math.abs(e)<1e-5?t=7:Math.abs(e)<1e-4?t=6:Math.abs(e)<.001?t=5:Math.abs(e)<.01?t=4:Math.abs(e)<.1&&(t=3),e.toFixed(t)}static hexToBase64(e){return btoa((e.match(/\w{2}/g)||[]).map((function(e){return String.fromCharCode(parseInt(e,16))})).join(""))}static vectorToString(e){return e instanceof A?`(${this.numberToString(e.x)}, ${this.numberToString(e.y)}, ${this.numberToString(e.z)})`:`(${this.numberToString(e.x)}, ${this.numberToString(e.y)})`}static arrayToVector2(e){return e?e instanceof le?e:Array.isArray(e)&&e.length>=2?new le(e[0],e[1]):void 0:e}static arrayToVector3(e){return e?e instanceof A?e:Array.isArray(e)&&e.length>=2?new A(e[0],e[1],e.length>2?e[2]:0):void 0:e}static arrayToEuler(e){return e?e instanceof xr?e:Array.isArray(e)&&e.length>=3?new xr(e[0],e[1],e[2]):void 0:e}static arrayOrObjectToVector3(e){if(!e)return e;if(e instanceof A)return e;if(e instanceof le)return new A(e.x,e.y,0);if(Array.isArray(e)&&e.length>=2)return new A(e[0],e[1],e[2]||0);let t=e;return null!=t.x&&null!=t.y?new A(t.x,t.y,t.z||0):void 0}static isVectorValid(e){let t=e&&!isNaN(e.x)&&!isNaN(e.y)&&isFinite(e.x)&&isFinite(e.y);return t&&e instanceof A&&(t=!isNaN(e.z)&&isFinite(e.z)),t}static isBoxValid(e){return e&&!e.isEmpty()&&this.isVectorValid(e.min)&&this.isVectorValid(e.max)}static isMatrixValid(e){let t=e&&e.elements;if(!t||t.length<16)return!1;for(let e=0;e<16;++e){let i=t[e];if(Number.isNaN(i))return!1}return!0}static guid(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(e=>{let t=16*Math.random()|0;return("x"==e?t:3&t|8).toString(16)}))}static expandBoxByScale(e,t){let i=new A;e.getCenter(i);let r=(e.max.x-e.min.x)*t,n=(e.max.y-e.min.y)*t,s=(e.max.z-e.min.z)*t,a=new A(i.x-r/2,i.y-n/2,i.z-s/2),o=new A(i.x+r/2,i.y+n/2,i.z+s/2);e.set(a,o)}static expandBoxByMinSize(e,t){let i=new A;e.getCenter(i);let r=e.max.x-e.min.x,n=e.max.y-e.min.y,s=e.max.z-e.min.z;r{i.onload=function(){e(i)}}))}static renderingContextToImage(e,t,i="image/png",r=.8){if(t){let n=Math.max(t.min.x,0),s=Math.max(t.min.y,0),a=Math.max(t.max.x-n,0),o=Math.max(t.max.y-s,0),l=e.getImageData(n,s,a,o),h=document.createElement("canvas");return h.width=a,h.height=o,h.getContext("2d").putImageData(l,0,0),h.toDataURL(i,r)}return e.canvas.toDataURL(i,r)}static printMemory(e){if(xi.isBrowser){let t=performance.memory;if(!t)return void ne.warn("[CommonUtils] performance.memory is not available in this browser");let i=(t.jsHeapSizeLimit/1048576).toFixed(2),r=(t.totalJSHeapSize/1048576).toFixed(2),n=(t.usedJSHeapSize/1048576).toFixed(2);ne.info(`[CommonUtils] ${e}. jsHeapSizeLimit: ${i}M , totalJSHeapSize: ${r}M , usedJSHeapSize: ${n}M `)}}static printGpuInfo(e){if(xi.isBrowser){let t=e.getExtension("webgl_debug_renderer_info"),i=e.getParameter(t.UNMASKED_RENDERER_WEBGL);ne.info("[CommonUtils] gpu:",i)}}},LC=(e,t,i)=>{let{default:r,active:n}=t;i?(e.remove(r),e.add(n||r)):(n&&e.remove(n),e.add(r))},Ai=class{static getScreenPointByEvent(e,t){let i=new le,{left:r,top:n}=t.getBoundingClientRect();return i.x=e.clientX-r,i.y=e.clientY-n,i}static getScreenPointByTouchEvent(e,t){let i=new le,{left:r,top:n}=t.getBoundingClientRect();return i.x=e.touches[0].clientX-r,i.y=e.touches[0].clientY-n,i}static worldPosition2ScreenPoint(e,t,i){let{clientWidth:r,clientHeight:n}=i,s=e.clone(),a=new le;return s.project(t),a.x=Math.round((.5+s.x/2)*r),a.y=Math.round((.5-s.y/2)*n),a}static screenPoint2worldPosition(e,t,i){let r=Ai.screenPoint2NdcPoint(e,t,i);return new A(r.x,r.y,1).unproject(t)}static screenPoint2NdcPoint(e,t,i){let{clientWidth:r,clientHeight:n}=i,s=new le;return s.x=e.x/r*2-1,s.y=-e.y/n*2+1,s}},wf=class{static createCSS2DObject(e){let t=new aT(e);return e.dataset.objectId=t.id.toString(),t}static createDefaultHotpoint(e=12){let t=document.createElement("div"),i=t.style;return i.width=`${e}px`,i.height=`${e}px`,i.opacity="0.8",i.cursor="pointer",i.top=-e/2+"px",i.left=-e/2+"px",i.backgroundColor="#ffffff",i.border="2px solid #00DAB7",i.borderRadius="50%",this.createCSS2DObject(t)}static createHotpoint(e){if(e){let t=document.createElement("div"),i=t.style;return i.top="0px",i.left="0px",t.innerHTML=e,this.createCSS2DObject(t)}return this.createDefaultHotpoint()}static createLabel(e,t=""){let i=document.createElement("div");if(i.innerHTML=e,t)i.classList.add(t);else{let e=i.style;e.padding="5px 9px",e.color="#ffffffdd",e.fontSize="12px",e.position="absolute",e.backgroundColor="rgba(0, 0, 0, 0.3)",e.borderRadius="12px",e.cursor="pointer",e.top="0px",e.left="0px"}return this.createCSS2DObject(i)}static tryFindObjectId(e){if(null!=e.dataset.objectId)return parseInt(e.dataset.objectId);let t=e.parentElement;return!t||t instanceof HTMLBodyElement?void 0:this.tryFindObjectId(t)}},cT={unit:"file",decimalPrecision:99,camera:{near:.1,far:3e4},mouse:{sensitivity:3},keyboard:{sensitivity:3}},dpe={"Precision from file":99,"0(1)":0,"0.1(1/2)":1,"0.01(1/4)":2,"0.001(1/8)":3,"0.0001(1/16)":4,"0.00001(1/32)":5,"0.000001(1/64)":6},Wu=(e,t)=>e.toFixed(t===dpe["Precision from file"]?2:t),Cs=class{constructor(){this.map=new Map}addEventListener(e,t){let i=this.map.get(e);i||(i=new Set,this.map.set(e,i)),i.add(t)}dispatchEvent(e,t={}){let i=this.map.get(e);i&&[...i].forEach((e=>e(t)))}hasEventListener(e){return!!this.map.get(e)}removeEventListener(e,t){if(!e)return void this.map.clear();if(!t)return void this.map.delete(e);let i=this.map.get(e);i&&i.delete(t)}clearEventListeners(e){this.map.delete(e)}clearAllEventListener(){this.map.clear()}},Zs=class{parse(e,t={}){if(t=Object.assign({decodeSpeed:5,encodeSpeed:5,encoderMethod:Zs.MESH_EDGEBREAKER_ENCODING,quantization:[16,8,8,8,8],exportUvs:!0,exportNormals:!0,exportColor:!1},t),void 0===DracoEncoderModule)throw new Error("THREE.DRACOExporter: required the draco_encoder to work.");let i,r,n=e.geometry,s=DracoEncoderModule(),a=new s.Encoder;if(!0===e.isMesh){i=new s.MeshBuilder,r=new s.Mesh;let e=n.getAttribute("position");i.AddFloatAttributeToMesh(r,s.POSITION,e.count,e.itemSize,e.array);let a=n.getIndex();if(null!==a)i.AddFacesToMesh(r,a.count/3,a.array);else{let t=new(e.count>65535?Uint32Array:Uint16Array)(e.count);for(let e=0;e4?i=e.array[n*e.itemSize+t]:(0===t?i=e.getX(n):1===t?i=e.getY(n):2===t?i=e.getZ(n):3===t&&(i=e.getW(n)),!0===e.normalized&&(i=_r.normalize(i,e.array))),r.min[t]=Math.min(r.min[t],i),r.max[t]=Math.max(r.max[t],i)}return r}function Tpe(e){return 4*Math.ceil(e/4)}function mB(e,t=0){let i=Tpe(e.byteLength);if(i!==e.byteLength){let r=new Uint8Array(i);if(r.set(new Uint8Array(e)),0!==t)for(let n=e.byteLength;ne.toBlob(i,t)));let i;return"image/jpeg"===t?i=.92:"image/webp"===t&&(i=.8),e.convertToBlob({type:t,quality:i})}var gB=class{constructor(){this.plugins=[],this.options={},this.pending=[],this.buffers=[],this.byteOffset=0,this.buffers=[],this.nodeMap=new Map,this.skins=[],this.extensionsUsed={},this.uids=new Map,this.uid=0,this.json={asset:{version:"2.0",generator:"THREE.GLTFExporter"}},this.cache={meshes:new Map,attributes:new Map,attributesNormalized:new Map,materials:new Map,textures:new Map,images:new Map}}setPlugins(e){this.plugins=e}write(e,t){return ht(this,arguments,(function*(e,t,i={}){this.options=Object.assign({binary:!1,trs:!1,onlyVisible:!0,maxTextureSize:1/0,animations:[],includeCustomExtensions:!1},i),this.options.animations.length>0&&(this.options.trs=!0),this.processInput(e),yield Promise.all(this.pending);let r=this,n=r.buffers,s=r.json;i=r.options;let a=r.extensionsUsed,o=new Blob(n,{type:"application/octet-stream"}),l=Object.keys(a);if(l.length>0&&(s.extensionsUsed=l),s.buffers&&s.buffers.length>0&&(s.buffers[0].byteLength=o.size),!0===i.binary){let e=new FileReader;e.readAsArrayBuffer(o),e.onloadend=function(){let i=mB(e.result),r=new DataView(new ArrayBuffer(gpe));r.setUint32(0,i.byteLength,!0),r.setUint32(4,iyt,!0);let n=mB(nyt(JSON.stringify(s)),32),a=new DataView(new ArrayBuffer(gpe));a.setUint32(0,n.byteLength,!0),a.setUint32(4,ryt,!0);let o=new ArrayBuffer(mpe),l=new DataView(o);l.setUint32(0,eyt,!0),l.setUint32(4,tyt,!0);let h=mpe+a.byteLength+n.byteLength+r.byteLength+i.byteLength;l.setUint32(8,h,!0);let u=new Blob([o,a,n,r,i],{type:"application/octet-stream"}),c=new FileReader;c.readAsArrayBuffer(u),c.onloadend=function(){t(c.result)}}}else if(s.buffers&&s.buffers.length>0){let e=new FileReader;e.readAsDataURL(o),e.onloadend=function(){let i=e.result;s.buffers[0].uri=i,t(s)}}else t(s)}))}serializeUserData(e,t){if(0===Object.keys(e.userData).length)return;let i=this.options,r=this.extensionsUsed;try{let n=JSON.parse(JSON.stringify(e.userData));if(i.includeCustomExtensions&&n.gltfExtensions){void 0===t.extensions&&(t.extensions={});for(let e in n.gltfExtensions)t.extensions[e]=n.gltfExtensions[e],r[e]=!0;delete n.gltfExtensions}Object.keys(n).length>0&&(t.extras=n)}catch(t){console.warn("THREE.GLTFExporter: userData of '"+e.name+"' won't be serialized because of JSON.stringify error - "+t.message)}}getUID(e,t=!1){if(!1===this.uids.has(e)){let t=new Map;t.set(!0,this.uid++),t.set(!1,this.uid++),this.uids.set(e,t)}return this.uids.get(e).get(t)}isNormalizedNormalAttribute(e){if(this.cache.attributesNormalized.has(e))return!1;let t=new A;for(let i=0,r=e.count;i5e-4)return!1;return!0}createNormalizedNormalAttribute(e){let t=this.cache;if(t.attributesNormalized.has(e))return t.attributesNormalized.get(e);let i=e.clone(),r=new A;for(let e=0,t=i.count;e4?r=e.array[n*e.itemSize+i]:(0===i?r=e.getX(n):1===i?r=e.getY(n):2===i?r=e.getZ(n):3===i&&(r=e.getW(n)),!0===e.normalized&&(r=_r.normalize(r,e.array))),t===sn.FLOAT?l.setFloat32(h,r,!0):t===sn.UNSIGNED_INT?l.setUint32(h,r,!0):t===sn.UNSIGNED_SHORT?l.setUint16(h,r,!0):t===sn.UNSIGNED_BYTE&&l.setUint8(h,r),h+=s}let u={buffer:this.processBuffer(l.buffer),byteOffset:this.byteOffset,byteLength:o};return void 0!==n&&(u.target=n),n===sn.ARRAY_BUFFER&&(u.byteStride=e.itemSize*s),this.byteOffset+=o,a.bufferViews.push(u),{id:a.bufferViews.length-1,byteLength:0}}processBufferViewImage(e){let t=this,i=t.json;return i.bufferViews||(i.bufferViews=[]),new Promise((function(r){let n=new FileReader;n.readAsArrayBuffer(e),n.onloadend=function(){let e=mB(n.result),s={buffer:t.processBuffer(e),byteOffset:t.byteOffset,byteLength:e.byteLength};t.byteOffset+=e.byteLength,r(i.bufferViews.push(s)-1)}}))}processAccessor(e,t,i,r){let n,s=this.json;if(e.array.constructor===Float32Array)n=sn.FLOAT;else if(e.array.constructor===Uint32Array)n=sn.UNSIGNED_INT;else if(e.array.constructor===Uint16Array)n=sn.UNSIGNED_SHORT;else{if(e.array.constructor!==Uint8Array)throw new Error("THREE.GLTFExporter: Unsupported bufferAttribute component type.");n=sn.UNSIGNED_BYTE}if(void 0===i&&(i=0),void 0===r&&(r=e.count),0===r)return null;let a,o=ayt(e,i,r);void 0!==t&&(a=e===t.index?sn.ELEMENT_ARRAY_BUFFER:sn.ARRAY_BUFFER);let l=this.processBufferView(e,n,i,r,a),h={bufferView:l.id,byteOffset:l.byteOffset,componentType:n,count:r,max:o.max,min:o.min,type:{1:"SCALAR",2:"VEC2",3:"VEC3",4:"VEC4",16:"MAT4"}[e.itemSize]};return!0===e.normalized&&(h.normalized=!0),s.accessors||(s.accessors=[]),s.accessors.push(h)-1}processImage(e,t,i,r="image/png"){if(null!==e){let n=this,s=n.cache,a=n.json,o=n.options,l=n.pending;s.images.has(e)||s.images.set(e,{});let h=s.images.get(e),u=r+":flipY/"+i.toString();if(void 0!==h[u])return h[u];a.images||(a.images=[]);let c={mimeType:r},p=vpe();p.width=Math.min(e.width,o.maxTextureSize),p.height=Math.min(e.height,o.maxTextureSize);let d=p.getContext("2d");if(!0===i&&(d.translate(0,p.height),d.scale(1,-1)),void 0!==e.data){t!==Bs&&console.error("GLTFExporter: Only RGBAFormat is supported."),(e.width>o.maxTextureSize||e.height>o.maxTextureSize)&&console.warn("GLTFExporter: Image size is bigger than maxTextureSize",e);let i=new Uint8ClampedArray(e.height*e.width*4);for(let t=0;tn.processBufferViewImage(e))).then((e=>{c.bufferView=e}))):void 0!==p.toDataURL?c.uri=p.toDataURL(r):l.push(ype(p,r).then((e=>(new FileReader).readAsDataURL(e))).then((e=>{c.uri=e})));let f=a.images.push(c)-1;return h[u]=f,f}throw new Error("THREE.GLTFExporter: No valid image data found. Unable to process texture.")}processSampler(e){let t=this.json;t.samplers||(t.samplers=[]);let i={magFilter:Vo[e.magFilter],minFilter:Vo[e.minFilter],wrapS:Vo[e.wrapS],wrapT:Vo[e.wrapT]};return t.samplers.push(i)-1}processTexture(e){let t=this.cache,i=this.json;if(t.textures.has(e))return t.textures.get(e);i.textures||(i.textures=[]);let r=e.userData.mimeType;"image/webp"===r&&(r="image/png");let n={sampler:this.processSampler(e),source:this.processImage(e.image,e.format,e.flipY,r)};e.name&&(n.name=e.name),this._invokeAll((function(t){t.writeTexture&&t.writeTexture(e,n)}));let s=i.textures.push(n)-1;return t.textures.set(e,s),s}processMaterial(e){let t=this.cache,i=this.json;if(t.materials.has(e))return t.materials.get(e);if(e.isShaderMaterial)return console.warn("GLTFExporter: THREE.ShaderMaterial not supported."),null;i.materials||(i.materials=[]);let r={pbrMetallicRoughness:{}};!0!==e.isMeshStandardMaterial&&!0!==e.isMeshBasicMaterial&&console.warn("GLTFExporter: Use MeshStandardMaterial or MeshBasicMaterial for best results.");let n=e.color.toArray().concat([e.opacity]);if(Gx(n,[1,1,1,1])||(r.pbrMetallicRoughness.baseColorFactor=n),e.isMeshStandardMaterial?(r.pbrMetallicRoughness.metallicFactor=e.metalness,r.pbrMetallicRoughness.roughnessFactor=e.roughness):(r.pbrMetallicRoughness.metallicFactor=.5,r.pbrMetallicRoughness.roughnessFactor=.5),e.metalnessMap||e.roughnessMap){let t=this.buildMetalRoughTexture(e.metalnessMap,e.roughnessMap),i={index:this.processTexture(t)};this.applyTextureTransform(i,t),r.pbrMetallicRoughness.metallicRoughnessTexture=i}if(e.map){let t={index:this.processTexture(e.map)};this.applyTextureTransform(t,e.map),r.pbrMetallicRoughness.baseColorTexture=t}if(e.emissive){let t=e.emissive.clone().multiplyScalar(e.emissiveIntensity),i=Math.max(t.r,t.g,t.b);if(i>1&&(t.multiplyScalar(1/i),console.warn("THREE.GLTFExporter: Some emissive components exceed 1; emissive has been limited")),i>0&&(r.emissiveFactor=t.toArray()),e.emissiveMap){let t={index:this.processTexture(e.emissiveMap)};this.applyTextureTransform(t,e.emissiveMap),r.emissiveTexture=t}}if(e.normalMap){let t={index:this.processTexture(e.normalMap)};e.normalScale&&1!==e.normalScale.x&&(t.scale=e.normalScale.x),this.applyTextureTransform(t,e.normalMap),r.normalTexture=t}if(e.aoMap){let t={index:this.processTexture(e.aoMap),texCoord:1};1!==e.aoMapIntensity&&(t.strength=e.aoMapIntensity),this.applyTextureTransform(t,e.aoMap),r.occlusionTexture=t}e.transparent?r.alphaMode="BLEND":e.alphaTest>0&&(r.alphaMode="MASK",r.alphaCutoff=e.alphaTest),e.side===gi&&(r.doubleSided=!0),""!==e.name&&(r.name=e.name),this.serializeUserData(e,r),this._invokeAll((function(t){t.writeMaterial&&t.writeMaterial(e,r)}));let s=i.materials.push(r)-1;return t.materials.set(e,s),s}processMesh(e){let t=this.cache,i=this.json,r=[e.geometry.uuid];if(Array.isArray(e.material))for(let t=0,i=e.material.length;t0){let i=[],r=[],n={};if(void 0!==e.morphTargetDictionary)for(let t in e.morphTargetDictionary)n[e.morphTargetDictionary[t]]=t;for(let s=0;s0&&(o.extras={},o.extras.targetNames=r)}let f=Array.isArray(e.material);if(f&&0===a.groups.length)return null;let m=f?e.material:[e.material],g=f?a.groups:[{materialIndex:0,start:void 0,count:void 0}];for(let e=0,i=g.length;e0&&(i.targets=u),null!==a.index){let r=this.getUID(a.index);(void 0!==g[e].start||void 0!==g[e].count)&&(r+=":"+g[e].start+":"+g[e].count),t.attributes.has(r)?i.indices=t.attributes.get(r):(i.indices=this.processAccessor(a.index,a,g[e].start,g[e].count),t.attributes.set(r,i.indices)),null===i.indices&&delete i.indices}let r=this.processMaterial(m[g[e].materialIndex]);null!==r&&(i.material=r),h.push(i)}o.primitives=h,i.meshes||(i.meshes=[]),this._invokeAll((function(t){t.writeMesh&&t.writeMesh(e,o)}));let y=i.meshes.push(o)-1;return t.meshes.set(n,y),y}processCamera(e){let t=this.json;t.cameras||(t.cameras=[]);let i=e.isOrthographicCamera,r={type:i?"orthographic":"perspective"};return i?r.orthographic={xmag:2*e.right,ymag:2*e.top,zfar:e.far<=0?.001:e.far,znear:e.near<0?0:e.near}:r.perspective={aspectRatio:e.aspect,yfov:_r.degToRad(e.fov),zfar:e.far<=0?.001:e.far,znear:e.near<0?0:e.near},""!==e.name&&(r.name=e.type),t.cameras.push(r)-1}processAnimation(e,t){let i=this.json,r=this.nodeMap;i.animations||(i.animations=[]);let n=(e=uT.Utils.mergeMorphTargetTracks(e.clone(),t)).tracks,s=[],a=[];for(let e=0;e0){let t=[];for(let r=0,n=e.children.length;r0&&(n.children=t)}this._invokeAll((function(t){t.writeNode&&t.writeNode(e,n)}));let s=t.nodes.push(n)-1;return r.set(e,s),s}processScene(e){let t=this.json,i=this.options;t.scenes||(t.scenes=[],t.scene=0);let r={};""!==e.name&&(r.name=e.name),t.scenes.push(r);let n=[];for(let t=0,r=e.children.length;t0&&(r.nodes=n),this.serializeUserData(e,r)}processObjects(e){let t=new Nn;t.name="AuxScene";for(let i=0;i0&&this.processObjects(i);for(let e=0;e0&&(s.range=e.distance)):e.isSpotLight&&(s.type="spot",e.distance>0&&(s.range=e.distance),s.spot={},s.spot.innerConeAngle=(e.penumbra-1)*e.angle*-1,s.spot.outerConeAngle=e.angle),void 0!==e.decay&&2!==e.decay&&console.warn("THREE.GLTFExporter: Light decay may be lost. glTF is physically-based, and expects light.decay=2."),e.target&&(e.target.parent!==e||0!==e.target.position.x||0!==e.target.position.y||-1!==e.target.position.z)&&console.warn("THREE.GLTFExporter: Light direction may be lost. For best results, make light.target a child of the light with position 0,0,-1."),n[this.name]||(r.extensions=r.extensions||{},r.extensions[this.name]={lights:[]},n[this.name]=!0);let a=r.extensions[this.name].lights;a.push(s),t.extensions=t.extensions||{},t.extensions[this.name]={light:a.length-1}}},yB=class{constructor(e){this.writer=e,this.name="KHR_materials_unlit"}writeMaterial(e,t){if(!e.isMeshBasicMaterial)return;let i=this.writer.extensionsUsed;t.extensions=t.extensions||{},t.extensions[this.name]={},i[this.name]=!0,t.pbrMetallicRoughness.metallicFactor=0,t.pbrMetallicRoughness.roughnessFactor=.9}},TB=class{constructor(e){this.writer=e,this.name="KHR_materials_clearcoat"}writeMaterial(e,t){if(!e.isMeshPhysicalMaterial||0===e.clearcoat)return;let i=this.writer,r=i.extensionsUsed,n={};if(n.clearcoatFactor=e.clearcoat,e.clearcoatMap){let t={index:i.processTexture(e.clearcoatMap)};i.applyTextureTransform(t,e.clearcoatMap),n.clearcoatTexture=t}if(n.clearcoatRoughnessFactor=e.clearcoatRoughness,e.clearcoatRoughnessMap){let t={index:i.processTexture(e.clearcoatRoughnessMap)};i.applyTextureTransform(t,e.clearcoatRoughnessMap),n.clearcoatRoughnessTexture=t}if(e.clearcoatNormalMap){let t={index:i.processTexture(e.clearcoatNormalMap)};i.applyTextureTransform(t,e.clearcoatNormalMap),n.clearcoatNormalTexture=t}t.extensions=t.extensions||{},t.extensions[this.name]=n,r[this.name]=!0}},EB=class{constructor(e){this.writer=e,this.name="KHR_materials_iridescence"}writeMaterial(e,t){if(!e.isMeshPhysicalMaterial||0===e.iridescence)return;let i=this.writer,r=i.extensionsUsed,n={};if(n.iridescenceFactor=e.iridescence,e.iridescenceMap){let t={index:i.processTexture(e.iridescenceMap)};i.applyTextureTransform(t,e.iridescenceMap),n.iridescenceTexture=t}if(n.iridescenceIor=e.iridescenceIOR,n.iridescenceThicknessMinimum=e.iridescenceThicknessRange[0],n.iridescenceThicknessMaximum=e.iridescenceThicknessRange[1],e.iridescenceThicknessMap){let t={index:i.processTexture(e.iridescenceThicknessMap)};i.applyTextureTransform(t,e.iridescenceThicknessMap),n.iridescenceThicknessTexture=t}t.extensions=t.extensions||{},t.extensions[this.name]=n,r[this.name]=!0}},bB=class{constructor(e){this.writer=e,this.name="KHR_materials_transmission"}writeMaterial(e,t){if(!e.isMeshPhysicalMaterial||0===e.transmission)return;let i=this.writer,r=i.extensionsUsed,n={};if(n.transmissionFactor=e.transmission,e.transmissionMap){let t={index:i.processTexture(e.transmissionMap)};i.applyTextureTransform(t,e.transmissionMap),n.transmissionTexture=t}t.extensions=t.extensions||{},t.extensions[this.name]=n,r[this.name]=!0}},xB=class{constructor(e){this.writer=e,this.name="KHR_materials_volume"}writeMaterial(e,t){if(!e.isMeshPhysicalMaterial||0===e.transmission)return;let i=this.writer,r=i.extensionsUsed,n={};if(n.thicknessFactor=e.thickness,e.thicknessMap){let t={index:i.processTexture(e.thicknessMap)};i.applyTextureTransform(t,e.thicknessMap),n.thicknessTexture=t}n.attenuationDistance=e.attenuationDistance,n.attenuationColor=e.attenuationColor.toArray(),t.extensions=t.extensions||{},t.extensions[this.name]=n,r[this.name]=!0}},IB=class{constructor(e){this.writer=e,this.name="KHR_materials_ior"}writeMaterial(e,t){if(!e.isMeshPhysicalMaterial||1.5===e.ior)return;let i=this.writer.extensionsUsed,r={};r.ior=e.ior,t.extensions=t.extensions||{},t.extensions[this.name]=r,i[this.name]=!0}},_B=class{constructor(e){this.writer=e,this.name="KHR_materials_specular"}writeMaterial(e,t){if(!e.isMeshPhysicalMaterial||1===e.specularIntensity&&e.specularColor.equals(Qvt)&&!e.specularIntensityMap&&!e.specularColorTexture)return;let i=this.writer,r=i.extensionsUsed,n={};if(e.specularIntensityMap){let t={index:i.processTexture(e.specularIntensityMap)};i.applyTextureTransform(t,e.specularIntensityMap),n.specularTexture=t}if(e.specularColorMap){let t={index:i.processTexture(e.specularColorMap)};i.applyTextureTransform(t,e.specularColorMap),n.specularColorTexture=t}n.specularFactor=e.specularIntensity,n.specularColorFactor=e.specularColor.toArray(),t.extensions=t.extensions||{},t.extensions[this.name]=n,r[this.name]=!0}};uT.Utils={insertKeyframe:function(e,t){let i,r=e.getValueSize(),n=new e.TimeBufferType(e.times.length+1),s=new e.ValueBufferType(e.values.length+r),a=e.createInterpolant(new e.ValueBufferType(r));if(0===e.times.length){n[0]=t;for(let e=0;ee.times[e.times.length-1]){if(Math.abs(e.times[e.times.length-1]-t)<.001)return e.times.length-1;n[n.length-1]=t,n.set(e.times,0),s.set(e.values,0),s.set(a.evaluate(t),e.values.length),i=n.length-1}else for(let o=0;ot){n.set(e.times.slice(0,o+1),0),n[o+1]=t,n.set(e.times.slice(o+1),o+2),s.set(e.values.slice(0,(o+1)*r),0),s.set(a.evaluate(t),(o+1)*r),s.set(e.values.slice((o+1)*r),(o+2)*r),i=o+1;break}}return e.times=n,e.values=s,i},mergeMorphTargetTracks:function(e,t){let i=[],r={},n=e.tracks;for(let e=0;e{if(i.binary){t=_n.addExtention(t,_n.EXTENSION_GLB);let i=e;_n.saveArrayBuffer(i,t)}else t=_n.addExtention(t,_n.EXTENSION_GLTF),_n.saveJson(e,t)}),(e=>console.log(e)),i)}static exportToObj(e,t){if(!e||!t)throw new Error("Invalid input or filename!");t=_n.addExtention(t,_n.EXTENSION_OBJ);let i=(new FC).parse(e);_n.saveString(i,t)}static exportToDraco(e,t,i={}){if(!e||!t)throw new Error("Invalid input or filename!");t=_n.addExtention(t,_n.EXTENSION_DRACO);let r=new Zs;i=Object.assign({},{encodeSpeed:5},i);let n=r.parse(e,i);_n.saveArrayBuffer(n,t)}static exportToThreeJsJson(e,t){let i=e.toJSON();t.toLowerCase().endsWith(_n.EXTENSION_JSON)||(t+=_n.EXTENSION_JSON),_n.saveJson(i,t)}static save(e,t){let i=_n.downloadLink;i||(i=document.createElement("a"),i.style.display="none",document.body.appendChild(i),_n.downloadLink=i),i.href=URL.createObjectURL(e),i.download=t,i.click()}static saveArrayBuffer(e,t){_n.save(new Blob([e],{type:"application/octet-stream"}),t)}static saveJson(e,t){_n.saveJsonString(JSON.stringify(e),t)}static saveJsonString(e,t){_n.save(new Blob([e],{type:"application/json"}),t)}static saveString(e,t){_n.save(new Blob([e],{type:"text/csv"}),t)}static addExtention(e,t){return e.toLowerCase().endsWith(t.toLowerCase())||(e+=t),e}},jg=_n;jg.EXTENSION_GLTF=".gltf",jg.EXTENSION_GLB=".glb",jg.EXTENSION_OBJ=".obj",jg.EXTENSION_DRACO=".drc",jg.EXTENSION_JSON=".json";var HC=class{constructor(){this.prevTime=(performance||Date).now(),this.beginTime=(performance||Date).now(),this.frames=0,this.fps=Number.NaN}begin(){this.beginTime=(performance||Date).now()}end(){this.frames++;let e=(performance||Date).now();return e>=this.prevTime+1e3&&(this.fps=Math.round(1e3*this.frames/(e-this.prevTime)),this.frames=0,this.prevTime=e),e}update(){this.beginTime=this.end()}},SB=1e-15,ar=class{static roundNumber(e,t){return Math.round(e*Math.pow(10,t))/Math.pow(10,t)}static floorNumber(e,t){return Math.floor(e*Math.pow(10,t))/Math.pow(10,t)}static areNumbersEqual(e,t,i=1e-7){return Math.abs(e-t)e[0]===t[0]&&e[1]===t[1],MB=e=>Array.isArray(e)&&e.length,xpe=(e,t=0,i=!1)=>{let r,n;if(MB(e)&&"number"==typeof e[0][0]){let t=0,s=e;for(r=0,n=s.length;r0||i&&t<0)&&s.reverse()}else for(r=0,n=e.length;r0);if(0===t&&MB(e)&&MB(e[0])&&"number"==typeof e[0][0][0]){let t=e[0].slice(0,1)[0];e[0].pop(),e[0].push([t[0],t[1]])}return e},UC=class{constructor(e,t=5){if(this.distance=0,this.arcSegments=t,!Vx(e))throw new Error("Offset requires at least one coodinate to work with");this.edges=[],Vx(e)&&"number"==typeof e[0]?this.vertices=e:(this.vertices=xpe(e),this.processContour(this.vertices,this.edges))}processContour(e,t){let i,r;if(Vx(e[0])&&"number"==typeof e[0][0])for(r=e.length,bpe(e[0],e[r-1])&&(r-=1),i=0;ih?l-h:l+o-h,c=(a?-u:o-u)/s;e.push(r);for(let r=1;r0?this.margin(this.distance):this.padding(-this.distance)}offsetSegment(e,t,i,r){let n=[i.offset(i.inNormal[0]*r,i.inNormal[1]*r),i.inverseOffset(i.outNormal[0]*r,i.outNormal[1]*r)],s=[];for(let i=0,a=2;i0&&e.push(i)}e.length>0&&(t=1===e.length?e[0]:(0,Wg.union)(e[0],...e.slice(1)))}else t=1===this.vertices.length?this.offsetPoint(e):this.offsetContour(this.vertices,this.edges);return t}offsetContour(e,t){let i=[],r=0,n=0;if(Vx(e[0])&&"number"==typeof e[0][0]){for(r=0,n=e.length-1;r0&&(i=1===i.length?[i[0]]:(0,Wg.union)(i[0],i.slice(1)))}else{let s=[];for(r=0,n=t.length;r0&&s.push(i)}s.length>0&&(i=1===s.length?s[0]:(0,Wg.union)(s[0],...s.slice(1)))}return i}offsetPoint(e){this.setDistance(e);let t=2*this.arcSegments,i=[],r=this.vertices,n=this.distance,s=0;t%2==0&&t++;for(let e=0;e{let i=e.attributes[t];if(i instanceof to){let r=i.clone();e.attributes[t]=r}}))}static isPointInPolygon(e,t,i=!1){let r=e.x,n=e.y,s=!1,a=t.length;for(let e=0,o=a-1;en!=u>n;i&&(c=l>=n!=u>=n),c&&r<(h-a)*(n-l)/(u-l)+a&&(s=!s)}return s}static caculateGeometryCenter(e){if(!e.hasAttribute("position"))return null;let t=e.getAttribute("position");if(0===t.count)return null;let i=new A,r=t.itemSize,n=t.array,s=[0,0,0];for(let e=0;e0&&i<0||r<0&&i>0)return!1;i=r}}return!0}static areLineSegmentsIntersecting(e,t){let{start:i,end:r}=e,{start:n,end:s}=t,a=n.clone().sub(i),o=r.clone().sub(i),l=s.clone().sub(i),h=a.cross(o).dot(l.cross(o)),u=i.clone().sub(n),c=s.clone().sub(n),p=r.clone().sub(n),d=u.cross(c).dot(p.cross(c));return h<0&&d<0}static getLineSegmentsIntersectingPoint(e,t){let{start:i,end:r}=e,{start:n,end:s}=t,a=Spe.subVectors(r,i).normalize(),o=wpe.subVectors(s,n).normalize();if(1===a.dot(o))return null;let l=Rpe.subVectors(n,i),h=a.clone().cross(o),u=l.clone().cross(o),c=l.clone().dot(h);if(c>=1e-5||c<=-1e-5)return null;let p=h.lengthSq();if(ar.areNumbersEqual(0,p))return;let d=u.clone().dot(h)/p,f=i.clone().add(a.multiplyScalar(d));return f.equals(i)||f.equals(r)?null:f}static isPointOnLineSegment(e,t,i=.001){let{start:r,end:n}=t,s=Spe.subVectors(r,n).length(),a=wpe.subVectors(e,r).length(),o=Rpe.subVectors(e,n).length();return Math.abs(s-(a+o))<=i}static isPointOnLineSegments(e,t,i=.001){let r=!1;for(let n=0;n{i?t.add(e):(t.x+=e.x,t.y+=e.y)})),t.divideScalar(e.length);let r=!1;if(kt.shouldRebasePositionOnRTC(t)){r=!0;for(let r=0;rDB||Math.abs(e.y)>DB||e instanceof A&&Math.abs(e.z)>DB}static calculateSurfaceArea(e){let t=0,i=e.getAttribute("position"),r=e.index;if(r)for(let e=0;e2&&(s=t?2*n:2*n-2);let a=new r(s),o=0;for(let e=0;e0&&e{let i=e.geometry.attributes.position.array;return e.localToWorld(new A(i[3*t],i[3*t+1],i[3*t+2]))};e.updateWorldMatrix(!0,!1);let a=(null==(i=e.geometry.getIndex())?void 0:i.array)||[],o=null!=(r=a[t])?r:t,l=null!=(n=a[t+1])?n:t+1;return[s(o),s(l)]}static arePolygonsIntersect(e,t){if(0===e.length||0===t.length||(Ipe.setFromPoints(e),_pe.setFromPoints(t),!Ipe.intersectsBox(_pe)))return!1;for(let i=0;i1-n)return;let o=t.y-e.y,l=e.x-t.x,h=o*e.x+l*e.y,u=r.y-i.y,c=i.x-r.x,p=u*i.x+c*i.y,d=o*c-u*l;return Math.abs(d){r.push([e.x,e.y])}));try{i=new UC(r).setArcSegments(2).offsetLine(t/2)}catch(e){return}if(!i||0===i.length)return;i=i[0];let n=[],s=[];for(let e=0;e{n.push(new le(e[0],e[1]))})),es.isClockWise(n)||n.reverse();else{let t=[];i[e].forEach((e=>{t.push(new le(e[0],e[1]))})),es.isClockWise(t)&&t.reverse(),s.push(t)}let a=es.triangulateShape(n,s),o=[];for(let e=0;en.push(...e)));let l=(new lt).setFromPoints(n);return l.setIndex(o),l}static releaseGeometryManually(e){e.index=null,e.attributes={}}static getAdjacentNonRepeatPoints(e,t=1e-7){let i=[],r=e.length;for(let n=0;n(e.ObjectsBoxSection="ObjectsBoxSection",e.PickPlaneSection="PickPlaneSection",e.AxisPlaneSection="AxisPlaneSection",e))(hT||{}),Js=class{static createGroundGrid(e,t,i){e=e||this.DEFAULT_WIDTH,t=t||this.DEFAULT_WIDTH_SEGS;let r=new Sx(e,t);i?r.position.set(i.x,i.y,i.z):r.position.y=0;let n=r.material;return Array.isArray(n)||(n.opacity=this.DEFAULT_MAT_PARAMS.opacity,n.transparent=this.DEFAULT_MAT_PARAMS.transparent),r.name=this.GROUND_GRID_NAME,r.layers.set(11),r.matrixAutoUpdate=!1,r.updateMatrix(),r}static createGrassGround(e,t,i,r,n){return ht(this,null,(function*(){return t=t||this.DEFAULT_WIDTH,i=i||this.DEFAULT_HEIGHT,new Promise((s=>{(new bs).load(e||"images/terrain/grass.jpg",(e=>{e.wrapS=e.wrapT=vn,e.repeat.set(r||this.DEFAULT_WIDTH_SEGS/5,n||this.DEFAULT_HEIGHT_SETS/5),e.anisotropy=16,e.encoding=gr;let a=new io({map:e});a.side=tn;let o=new rt(new ts(t,i),a);return o.rotation.x=-Math.PI/2,o.position.y=0,o.receiveShadow=!0,o.name=this.GRASS_GROUND_NAME,o.layers.set(11),o.matrixAutoUpdate=!1,o.updateMatrix(),s(o)}))}))}))}};Js.GROUND_GRID_NAME="GROUND_GRID",Js.GRASS_GROUND_NAME="GRASS_GROUND",Js.DEFAULT_WIDTH=1e3,Js.DEFAULT_HEIGHT=1e3,Js.DEFAULT_WIDTH_SEGS=100,Js.DEFAULT_HEIGHT_SETS=100,Js.DEFAULT_MAT_PARAMS={color:12829635,transparent:!0,opacity:.5,wireframeLinewidth:.5};var Dpe={NavCube:{front:"Front",back:"Back",top:"Top",bottom:"Bottom",left:"Left",right:"Right"},ContextMenu:{viewFitAll:"View Fit All",hideAll:"Hide All",showAll:"Show All",xRayAll:"X-Ray",xRayNone:"X-Ray None",selectNone:"Select None",resetView:"Reset View",viewFitEntity:"View Fit",hideEntity:"Hide",hideOthers:"Hide Others",xRayEntity:"X-Ray",xRayOthers:"X-Ray Others",select:"Select",deselect:"Undo Select",showSectionPlane:"Show Section Plane",showSectionBox:"Show Section Box",showAxisSection:"Show Axis Section",hideSectionPlane:"Hide Section Plane",hideSectionBox:"Hide Section Box",hideAxisSection:"Hide Axis Section",undoSection:"Undo Section"},ProgressBar:{Loading:"Loading",Comparing:"Comparing"},Toolbar:{homeView:"Home",orthoView:"Ortho View",measurement:"Measure",distanceMeasurement:"Distance",areaMeasurement:"Area",angleMeasurement:"Angle",coordinateMeasurement:"Coordinate",clearMeasurement:"Clear",markup:"Markup",markupArrow:"Arrow",markupRect:"Rect",markupCloudRect:"CloudRect",markupPolyLine:"PolyLine",markupCloudLine:"CloudLine",markupEllipse:"Ellipse",markupCircle:"Circle",markupDot:"Dot",markupText:"Text",markupX:"X",markupStroke:"Stroke Style",markupLineWidth:"Line Width",markupLineWidth2:"Line Width 2",markupLineWidth5:"Line Width 5",markupLineWidth10:"Line Width 10",markupFontSize:"Font Size",markupFontSize14:"14",markupFontSize18:"18",markupFontSize24:"24",clearMarkup:"Clear Markup",quitMarkup:"Quit markup",section:"Section",axisSection:"Axis Section",pickSectionPlane:"Pick Section Plane",sectionBox:"Section Box",bimTree:"BIM Tree",viewpoint:"Viewpoint",annotation:"Annotation",property:"Property",settings:"Settings",compared:"Compared",quitCompare:"Quit compare",fullscreen:"Full Screen",layers:"Layers",zoomToRectangle:"Zoom",screenshot:"Screenshot"},Tooltip:{measure:"Pick a point to continue, pressing ESC to exit",areaMeasurement:"Pick a point to continue, pressing ESC to exit, right click to finish",section:"Click to pick a section plane",boxSelect:"Box select an area"},PopPanel:{reset:"Reset"}},Cpe={NavCube:{front:"前",back:"后",top:"上",bottom:"下",left:"左",right:"右"},ContextMenu:{viewFitAll:"缩放视口到所有模型",hideAll:"全部隐藏",showAll:"全部显示",xRayAll:"全部应用 X 光模式",xRayNone:"清除 X 光模式",selectNone:"清空选择",resetView:"重置视图",viewFitEntity:"缩放视口到实体",hideEntity:"隐藏",hideOthers:"隐藏其他 (隔离)",xRayEntity:"应用 X 光模式",xRayOthers:"对其他实体应用 X 光模式",select:"选择",deselect:"取消选择",showSectionPlane:"显示剖切面",showSectionBox:"显示剖切盒",showAxisSection:"显示轴向剖切",hideSectionPlane:"隐藏剖切面",hideSectionBox:"隐藏剖切盒",hideAxisSection:"隐藏轴向剖切",undoSection:"取消剖切"},ProgressBar:{Loading:"正在加载",Comparing:"正在对比"},Toolbar:{homeView:"主视图",orthoView:"正交视图",measurement:"测量",distanceMeasurement:"距离测量",areaMeasurement:"面积测量",angleMeasurement:"角度测量",coordinateMeasurement:"坐标测量",clearMeasurement:"清除测量",markup:"批注",markupArrow:"箭头",markupRect:"矩形框",markupCloudRect:"云线框",markupPolyLine:"多段线",markupCloudLine:"云线",markupEllipse:"椭圆",markupCircle:"圆",markupDot:"点",markupText:"文字",markupX:"叉号",markupStroke:"画笔颜色",markupLineWidth:"线宽",markupLineWidth2:"线宽 2",markupLineWidth5:"线宽 5",markupLineWidth10:"线宽 10",markupFontSize:"字号",markupFontSize14:"14",markupFontSize18:"18",markupFontSize24:"24",clearMarkup:"清除批注",quitMarkup:"退出批注",section:"剖切",axisSection:"轴向剖切",pickSectionPlane:"面剖切",sectionBox:"剖切盒",bimTree:"BIM树",viewpoint:"视点",annotation:"批注",property:"属性",settings:"设置",compared:"图纸对比",quitCompare:"退出图纸对比",fullscreen:"全屏",layers:"图层",zoomToRectangle:"框选放大",screenshot:"截屏"},Tooltip:{measure:"点击继续测量, ESC 取消测量",areaMeasurement:"点击继续测量, ESC 取消测量,右键完成测量",section:"点击确定剖切面",boxSelect:"框选一个区域"},PopPanel:{reset:"重置"}},As=class{static materialEquals(e,t){if(e===t)return!0;if(e.type!==t.type)return!1;if(e instanceof jr&&t instanceof jr){let i=e,r=t;return e.alphaTest===t.alphaTest&&e.opacity===t.opacity&&e.side===t.side&&e.visible===t.visible&&e.name===t.name&&e.transparent===t.transparent&&this.colorEquals(i.color,r.color)&&this.colorEquals(i.emissive,r.emissive)&&i.roughness===r.roughness&&i.metalness===r.metalness&&i.alphaMap===r.alphaMap&&i.uniforms===r.uniforms&&i.defines===r.defines&&i.vertexShader===r.vertexShader&&i.fragmentShader===r.fragmentShader&&i.clippingPlanes===r.clippingPlanes&&i.map===r.map&&i.clipIntersection===r.clipIntersection}return!1}static materialsEquals(e,t){if(e===t)return!0;if(Array.isArray(e)&&Array.isArray(t)&&e.length===t.length){for(let i=0;i0){let e=[];return i.forEach((i=>{e.push(this.clonedHighlightMaterial(i,t))})),e}if(i instanceof jr)return this.clonedHighlightMaterial(i,t);console.warn(`[MaterialUtils] Invalid material: ${i}`)}static clonedHighlightMaterial(e,t={}){var i;let{depthTest:r,highlightColor:n=new je(583902),opacity:s=.7}=t,a=e.clone();return a instanceof Gu||a instanceof Es?(a.emissive.set(n),a.color.set(n)):a instanceof lr||a instanceof io||a instanceof vr||a instanceof Ap?a.color.set(n):a instanceof Yt?null==(i=a.uniforms.u_color)||i.value.set(n):a instanceof xg?a.color.set(n):console.warn("[MaterialUtils] Unsupported Material:",a.type),a.opacity=s,a.transparent=!0,void 0!==r&&(a.depthTest=!1,a.side=gi),a}static cloneMaterial(e){if(!e)return e;if(Array.isArray(e)){let t=[];return e.forEach((e=>{t.push(e.clone())})),t}return e.clone()}static getMaterialColor(e){let t=new je(16777215);return e instanceof jn||e instanceof vr||e instanceof lr?t=e.color:e instanceof Yt&&e.uniforms.u_color&&(t=e.uniforms.u_color.value),t}static setMaterialColor(e,t){e instanceof jn||e instanceof vr||e instanceof lr?e.color=t:e instanceof Yt&&e.uniforms.u_color&&(e.uniforms.u_color.value=t)}static cloneMaterials(e){let t=new Map;e.traverse((e=>{e.material&&(e.material=(e=>{let i;return Array.isArray(e)?(i=[],e.forEach((e=>{if(t.has(e))i.push(t.get(e));else{let r=e.clone();t.set(e,r),i.push(r)}}))):e&&(t.has(e)?i=t.get(e):(i=e.clone(),t.set(e,i))),i})(e.material))}))}};function zo(e,t=!1){let i=null!==e[0].index,r=new Set(Object.keys(e[0].attributes)),n=new Set(Object.keys(e[0].morphAttributes)),s={},a={},o=e[0].morphTargetsRelative,l=new lt,h=0;for(let u=0;ut in r?Sc(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,Zi=(r,t)=>{for(var e in t||(t={}))Ec.call(t,e)&&Eo(r,e,t[e]);if(Ao)for(var e of Ao(t))Cc.call(t,e)&&Eo(r,e,t[e]);return r},Co=(r,t)=>Tc(r,Ac(t));var ro="149";var Pc=0,Po=1,Rc=2;var Wa=1,Lc=2,Ni=3,Ue=0,he=1,We=2;var pn=0,ri=1,Ro=2,Lo=3,Io=4,Ic=5,ni=100,Dc=101,Nc=102,Do=103,No=104,Fc=200,zc=201,Oc=202,Bc=203,qa=204,Xa=205,Uc=206,kc=207,Vc=208,Gc=209,Hc=210,Wc=0,qc=1,Xc=2,Er=3,Yc=4,Zc=5,Jc=6,$c=7,Ya=0,Kc=1,jc=2,nn=0,Qc=1,tl=2,el=3,nl=4,il=5,Za=300,ci=301,li=302,Cr=303,Pr=304,Ls=306,Rr=1e3,Oe=1001,Lr=1002,ce=1003,Fo=1004;var Zs=1005;var Re=1006,sl=1007;var Oi=1008;var Dn=1009,rl=1010,ol=1011,Ja=1012,al=1013,Pn=1014,Rn=1015,Bi=1016,cl=1017,ll=1018,oi=1020,hl=1021,Be=1023,ul=1024,fl=1025,Ln=1026,hi=1027,dl=1028,pl=1029,ml=1030,gl=1031,xl=1033,Js=33776,$s=33777,Ks=33778,js=33779,zo=35840,Oo=35841,Bo=35842,Uo=35843,_l=36196,ko=37492,Vo=37496,Go=37808,Ho=37809,Wo=37810,qo=37811,Xo=37812,Yo=37813,Zo=37814,Jo=37815,$o=37816,Ko=37817,jo=37818,Qo=37819,ta=37820,ea=37821,Qs=36492,yl=36283,na=36284,ia=36285,sa=36286;var xs=2300,_s=2301,tr=2302,ra=2400,oa=2401,aa=2402;var Nn=3e3,Ot=3001,vl=3200,Ml=3201,bl=0,wl=1;var Ge="srgb",Ui="srgb-linear";var er=7680;var Sl=519,ca=35044;var la="300 es",Ir=1035,mn=class{addEventListener(t,e){this._listeners===void 0&&(this._listeners={});let n=this._listeners;n[t]===void 0&&(n[t]=[]),n[t].indexOf(e)===-1&&n[t].push(e)}hasEventListener(t,e){if(this._listeners===void 0)return!1;let n=this._listeners;return n[t]!==void 0&&n[t].indexOf(e)!==-1}removeEventListener(t,e){if(this._listeners===void 0)return;let i=this._listeners[t];if(i!==void 0){let s=i.indexOf(e);s!==-1&&i.splice(s,1)}}dispatchEvent(t){if(this._listeners===void 0)return;let n=this._listeners[t.type];if(n!==void 0){t.target=this;let i=n.slice(0);for(let s=0,a=i.length;s>8&255]+ne[r>>16&255]+ne[r>>24&255]+"-"+ne[t&255]+ne[t>>8&255]+"-"+ne[t>>16&15|64]+ne[t>>24&255]+"-"+ne[e&63|128]+ne[e>>8&255]+"-"+ne[e>>16&255]+ne[e>>24&255]+ne[n&255]+ne[n>>8&255]+ne[n>>16&255]+ne[n>>24&255]).toLowerCase()}function de(r,t,e){return Math.max(t,Math.min(e,r))}function Tl(r,t){return(r%t+t)%t}function ir(r,t,e){return(1-e)*r+e*t}function ua(r){return(r&r-1)===0&&r!==0}function Dr(r){return Math.pow(2,Math.floor(Math.log(r)/Math.LN2))}function Ji(r,t){switch(t.constructor){case Float32Array:return r;case Uint16Array:return r/65535;case Uint8Array:return r/255;case Int16Array:return Math.max(r/32767,-1);case Int8Array:return Math.max(r/127,-1);default:throw new Error("Invalid component type.")}}function Me(r,t){switch(t.constructor){case Float32Array:return r;case Uint16Array:return Math.round(r*65535);case Uint8Array:return Math.round(r*255);case Int16Array:return Math.round(r*32767);case Int8Array:return Math.round(r*127);default:throw new Error("Invalid component type.")}}var At=class{constructor(t=0,e=0){At.prototype.isVector2=!0,this.x=t,this.y=e}get width(){return this.x}set width(t){this.x=t}get height(){return this.y}set height(t){this.y=t}set(t,e){return this.x=t,this.y=e,this}setScalar(t){return this.x=t,this.y=t,this}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setComponent(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;default:throw new Error("index is out of range: "+t)}return this}getComponent(t){switch(t){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+t)}}clone(){return new this.constructor(this.x,this.y)}copy(t){return this.x=t.x,this.y=t.y,this}add(t){return this.x+=t.x,this.y+=t.y,this}addScalar(t){return this.x+=t,this.y+=t,this}addVectors(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this}addScaledVector(t,e){return this.x+=t.x*e,this.y+=t.y*e,this}sub(t){return this.x-=t.x,this.y-=t.y,this}subScalar(t){return this.x-=t,this.y-=t,this}subVectors(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this}multiply(t){return this.x*=t.x,this.y*=t.y,this}multiplyScalar(t){return this.x*=t,this.y*=t,this}divide(t){return this.x/=t.x,this.y/=t.y,this}divideScalar(t){return this.multiplyScalar(1/t)}applyMatrix3(t){let e=this.x,n=this.y,i=t.elements;return this.x=i[0]*e+i[3]*n+i[6],this.y=i[1]*e+i[4]*n+i[7],this}min(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this}max(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this}clamp(t,e){return this.x=Math.max(t.x,Math.min(e.x,this.x)),this.y=Math.max(t.y,Math.min(e.y,this.y)),this}clampScalar(t,e){return this.x=Math.max(t,Math.min(e,this.x)),this.y=Math.max(t,Math.min(e,this.y)),this}clampLength(t,e){let n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(t,Math.min(e,n)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}roundToZero(){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(){return this.x=-this.x,this.y=-this.y,this}dot(t){return this.x*t.x+this.y*t.y}cross(t){return this.x*t.y-this.y*t.x}lengthSq(){return this.x*this.x+this.y*this.y}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)}normalize(){return this.divideScalar(this.length()||1)}angle(){return Math.atan2(-this.y,-this.x)+Math.PI}distanceTo(t){return Math.sqrt(this.distanceToSquared(t))}distanceToSquared(t){let e=this.x-t.x,n=this.y-t.y;return e*e+n*n}manhattanDistanceTo(t){return Math.abs(this.x-t.x)+Math.abs(this.y-t.y)}setLength(t){return this.normalize().multiplyScalar(t)}lerp(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this}lerpVectors(t,e,n){return this.x=t.x+(e.x-t.x)*n,this.y=t.y+(e.y-t.y)*n,this}equals(t){return t.x===this.x&&t.y===this.y}fromArray(t,e=0){return this.x=t[e],this.y=t[e+1],this}toArray(t=[],e=0){return t[e]=this.x,t[e+1]=this.y,t}fromBufferAttribute(t,e){return this.x=t.getX(e),this.y=t.getY(e),this}rotateAround(t,e){let n=Math.cos(e),i=Math.sin(e),s=this.x-t.x,a=this.y-t.y;return this.x=s*n-a*i+t.x,this.y=s*i+a*n+t.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y}},le=class{constructor(){le.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1]}set(t,e,n,i,s,a,o,c,l){let h=this.elements;return h[0]=t,h[1]=i,h[2]=o,h[3]=e,h[4]=s,h[5]=c,h[6]=n,h[7]=a,h[8]=l,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(t){let e=this.elements,n=t.elements;return e[0]=n[0],e[1]=n[1],e[2]=n[2],e[3]=n[3],e[4]=n[4],e[5]=n[5],e[6]=n[6],e[7]=n[7],e[8]=n[8],this}extractBasis(t,e,n){return t.setFromMatrix3Column(this,0),e.setFromMatrix3Column(this,1),n.setFromMatrix3Column(this,2),this}setFromMatrix4(t){let e=t.elements;return this.set(e[0],e[4],e[8],e[1],e[5],e[9],e[2],e[6],e[10]),this}multiply(t){return this.multiplyMatrices(this,t)}premultiply(t){return this.multiplyMatrices(t,this)}multiplyMatrices(t,e){let n=t.elements,i=e.elements,s=this.elements,a=n[0],o=n[3],c=n[6],l=n[1],h=n[4],f=n[7],u=n[2],m=n[5],x=n[8],p=i[0],d=i[3],g=i[6],M=i[1],_=i[4],v=i[7],b=i[2],A=i[5],C=i[8];return s[0]=a*p+o*M+c*b,s[3]=a*d+o*_+c*A,s[6]=a*g+o*v+c*C,s[1]=l*p+h*M+f*b,s[4]=l*d+h*_+f*A,s[7]=l*g+h*v+f*C,s[2]=u*p+m*M+x*b,s[5]=u*d+m*_+x*A,s[8]=u*g+m*v+x*C,this}multiplyScalar(t){let e=this.elements;return e[0]*=t,e[3]*=t,e[6]*=t,e[1]*=t,e[4]*=t,e[7]*=t,e[2]*=t,e[5]*=t,e[8]*=t,this}determinant(){let t=this.elements,e=t[0],n=t[1],i=t[2],s=t[3],a=t[4],o=t[5],c=t[6],l=t[7],h=t[8];return e*a*h-e*o*l-n*s*h+n*o*c+i*s*l-i*a*c}invert(){let t=this.elements,e=t[0],n=t[1],i=t[2],s=t[3],a=t[4],o=t[5],c=t[6],l=t[7],h=t[8],f=h*a-o*l,u=o*c-h*s,m=l*s-a*c,x=e*f+n*u+i*m;if(x===0)return this.set(0,0,0,0,0,0,0,0,0);let p=1/x;return t[0]=f*p,t[1]=(i*l-h*n)*p,t[2]=(o*n-i*a)*p,t[3]=u*p,t[4]=(h*e-i*c)*p,t[5]=(i*s-o*e)*p,t[6]=m*p,t[7]=(n*c-l*e)*p,t[8]=(a*e-n*s)*p,this}transpose(){let t,e=this.elements;return t=e[1],e[1]=e[3],e[3]=t,t=e[2],e[2]=e[6],e[6]=t,t=e[5],e[5]=e[7],e[7]=t,this}getNormalMatrix(t){return this.setFromMatrix4(t).invert().transpose()}transposeIntoArray(t){let e=this.elements;return t[0]=e[0],t[1]=e[3],t[2]=e[6],t[3]=e[1],t[4]=e[4],t[5]=e[7],t[6]=e[2],t[7]=e[5],t[8]=e[8],this}setUvTransform(t,e,n,i,s,a,o){let c=Math.cos(s),l=Math.sin(s);return this.set(n*c,n*l,-n*(c*a+l*o)+a+t,-i*l,i*c,-i*(-l*a+c*o)+o+e,0,0,1),this}scale(t,e){return this.premultiply(sr.makeScale(t,e)),this}rotate(t){return this.premultiply(sr.makeRotation(-t)),this}translate(t,e){return this.premultiply(sr.makeTranslation(t,e)),this}makeTranslation(t,e){return this.set(1,0,t,0,1,e,0,0,1),this}makeRotation(t){let e=Math.cos(t),n=Math.sin(t);return this.set(e,-n,0,n,e,0,0,0,1),this}makeScale(t,e){return this.set(t,0,0,0,e,0,0,0,1),this}equals(t){let e=this.elements,n=t.elements;for(let i=0;i<9;i++)if(e[i]!==n[i])return!1;return!0}fromArray(t,e=0){for(let n=0;n<9;n++)this.elements[n]=t[n+e];return this}toArray(t=[],e=0){let n=this.elements;return t[e]=n[0],t[e+1]=n[1],t[e+2]=n[2],t[e+3]=n[3],t[e+4]=n[4],t[e+5]=n[5],t[e+6]=n[6],t[e+7]=n[7],t[e+8]=n[8],t}clone(){return new this.constructor().fromArray(this.elements)}},sr=new le;function $a(r){for(let t=r.length-1;t>=0;--t)if(r[t]>=65535)return!0;return!1}function ys(r){return document.createElementNS("http://www.w3.org/1999/xhtml",r)}function In(r){return r<.04045?r*.0773993808:Math.pow(r*.9478672986+.0521327014,2.4)}function gs(r){return r<.0031308?r*12.92:1.055*Math.pow(r,.41666)-.055}var rr={[Ge]:{[Ui]:In},[Ui]:{[Ge]:gs}},oe={legacyMode:!0,get workingColorSpace(){return Ui},set workingColorSpace(r){console.warn("THREE.ColorManagement: .workingColorSpace is readonly.")},convert:function(r,t,e){if(this.legacyMode||t===e||!t||!e)return r;if(rr[t]&&rr[t][e]!==void 0){let n=rr[t][e];return r.r=n(r.r),r.g=n(r.g),r.b=n(r.b),r}throw new Error("Unsupported color space conversion.")},fromWorkingColorSpace:function(r,t){return this.convert(r,this.workingColorSpace,t)},toWorkingColorSpace:function(r,t){return this.convert(r,t,this.workingColorSpace)}},Ka={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074},qt={r:0,g:0,b:0},Ne={h:0,s:0,l:0},$i={h:0,s:0,l:0};function or(r,t,e){return e<0&&(e+=1),e>1&&(e-=1),e<1/6?r+(t-r)*6*e:e<1/2?t:e<2/3?r+(t-r)*6*(2/3-e):r}function Ki(r,t){return t.r=r.r,t.g=r.g,t.b=r.b,t}var Bt=class{constructor(t,e,n){return this.isColor=!0,this.r=1,this.g=1,this.b=1,e===void 0&&n===void 0?this.set(t):this.setRGB(t,e,n)}set(t){return t&&t.isColor?this.copy(t):typeof t=="number"?this.setHex(t):typeof t=="string"&&this.setStyle(t),this}setScalar(t){return this.r=t,this.g=t,this.b=t,this}setHex(t,e=Ge){return t=Math.floor(t),this.r=(t>>16&255)/255,this.g=(t>>8&255)/255,this.b=(t&255)/255,oe.toWorkingColorSpace(this,e),this}setRGB(t,e,n,i=oe.workingColorSpace){return this.r=t,this.g=e,this.b=n,oe.toWorkingColorSpace(this,i),this}setHSL(t,e,n,i=oe.workingColorSpace){if(t=Tl(t,1),e=de(e,0,1),n=de(n,0,1),e===0)this.r=this.g=this.b=n;else{let s=n<=.5?n*(1+e):n+e-n*e,a=2*n-s;this.r=or(a,s,t+1/3),this.g=or(a,s,t),this.b=or(a,s,t-1/3)}return oe.toWorkingColorSpace(this,i),this}setStyle(t,e=Ge){function n(s){s!==void 0&&parseFloat(s)<1&&console.warn("THREE.Color: Alpha component of "+t+" will be ignored.")}let i;if(i=/^((?:rgb|hsl)a?)\\(([^\\)]*)\\)/.exec(t)){let s,a=i[1],o=i[2];switch(a){case"rgb":case"rgba":if(s=/^\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec(o))return this.r=Math.min(255,parseInt(s[1],10))/255,this.g=Math.min(255,parseInt(s[2],10))/255,this.b=Math.min(255,parseInt(s[3],10))/255,oe.toWorkingColorSpace(this,e),n(s[4]),this;if(s=/^\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec(o))return this.r=Math.min(100,parseInt(s[1],10))/100,this.g=Math.min(100,parseInt(s[2],10))/100,this.b=Math.min(100,parseInt(s[3],10))/100,oe.toWorkingColorSpace(this,e),n(s[4]),this;break;case"hsl":case"hsla":if(s=/^\\s*(\\d*\\.?\\d+)\\s*,\\s*(\\d*\\.?\\d+)\\%\\s*,\\s*(\\d*\\.?\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec(o)){let c=parseFloat(s[1])/360,l=parseFloat(s[2])/100,h=parseFloat(s[3])/100;return n(s[4]),this.setHSL(c,l,h,e)}break}}else if(i=/^\\#([A-Fa-f\\d]+)$/.exec(t)){let s=i[1],a=s.length;if(a===3)return this.r=parseInt(s.charAt(0)+s.charAt(0),16)/255,this.g=parseInt(s.charAt(1)+s.charAt(1),16)/255,this.b=parseInt(s.charAt(2)+s.charAt(2),16)/255,oe.toWorkingColorSpace(this,e),this;if(a===6)return this.r=parseInt(s.charAt(0)+s.charAt(1),16)/255,this.g=parseInt(s.charAt(2)+s.charAt(3),16)/255,this.b=parseInt(s.charAt(4)+s.charAt(5),16)/255,oe.toWorkingColorSpace(this,e),this}return t&&t.length>0?this.setColorName(t,e):this}setColorName(t,e=Ge){let n=Ka[t.toLowerCase()];return n!==void 0?this.setHex(n,e):console.warn("THREE.Color: Unknown color "+t),this}clone(){return new this.constructor(this.r,this.g,this.b)}copy(t){return this.r=t.r,this.g=t.g,this.b=t.b,this}copySRGBToLinear(t){return this.r=In(t.r),this.g=In(t.g),this.b=In(t.b),this}copyLinearToSRGB(t){return this.r=gs(t.r),this.g=gs(t.g),this.b=gs(t.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(t=Ge){return oe.fromWorkingColorSpace(Ki(this,qt),t),de(qt.r*255,0,255)<<16^de(qt.g*255,0,255)<<8^de(qt.b*255,0,255)<<0}getHexString(t=Ge){return("000000"+this.getHex(t).toString(16)).slice(-6)}getHSL(t,e=oe.workingColorSpace){oe.fromWorkingColorSpace(Ki(this,qt),e);let n=qt.r,i=qt.g,s=qt.b,a=Math.max(n,i,s),o=Math.min(n,i,s),c,l,h=(o+a)/2;if(o===a)c=0,l=0;else{let f=a-o;switch(l=h<=.5?f/(a+o):f/(2-a-o),a){case n:c=(i-s)/f+(i2048||e.height>2048?(console.warn("THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons",t),e.toDataURL("image/jpeg",.6)):e.toDataURL("image/png")}static sRGBToLinear(t){if(typeof HTMLImageElement!="undefined"&&t instanceof HTMLImageElement||typeof HTMLCanvasElement!="undefined"&&t instanceof HTMLCanvasElement||typeof ImageBitmap!="undefined"&&t instanceof ImageBitmap){let e=ys("canvas");e.width=t.width,e.height=t.height;let n=e.getContext("2d");n.drawImage(t,0,0,t.width,t.height);let i=n.getImageData(0,0,t.width,t.height),s=i.data;for(let a=0;a0&&(n.userData=this.userData),e||(t.textures[this.uuid]=n),n}dispose(){this.dispatchEvent({type:"dispose"})}transformUv(t){if(this.mapping!==Za)return t;if(t.applyMatrix3(this.matrix),t.x<0||t.x>1)switch(this.wrapS){case Rr:t.x=t.x-Math.floor(t.x);break;case Oe:t.x=t.x<0?0:1;break;case Lr:Math.abs(Math.floor(t.x)%2)===1?t.x=Math.ceil(t.x)-t.x:t.x=t.x-Math.floor(t.x);break}if(t.y<0||t.y>1)switch(this.wrapT){case Rr:t.y=t.y-Math.floor(t.y);break;case Oe:t.y=t.y<0?0:1;break;case Lr:Math.abs(Math.floor(t.y)%2)===1?t.y=Math.ceil(t.y)-t.y:t.y=t.y-Math.floor(t.y);break}return this.flipY&&(t.y=1-t.y),t}set needsUpdate(t){t===!0&&(this.version++,this.source.needsUpdate=!0)}};ue.DEFAULT_IMAGE=null;ue.DEFAULT_MAPPING=Za;ue.DEFAULT_ANISOTROPY=1;var Xt=class{constructor(t=0,e=0,n=0,i=1){Xt.prototype.isVector4=!0,this.x=t,this.y=e,this.z=n,this.w=i}get width(){return this.z}set width(t){this.z=t}get height(){return this.w}set height(t){this.w=t}set(t,e,n,i){return this.x=t,this.y=e,this.z=n,this.w=i,this}setScalar(t){return this.x=t,this.y=t,this.z=t,this.w=t,this}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setZ(t){return this.z=t,this}setW(t){return this.w=t,this}setComponent(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;case 2:this.z=e;break;case 3:this.w=e;break;default:throw new Error("index is out of range: "+t)}return this}getComponent(t){switch(t){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: "+t)}}clone(){return new this.constructor(this.x,this.y,this.z,this.w)}copy(t){return this.x=t.x,this.y=t.y,this.z=t.z,this.w=t.w!==void 0?t.w:1,this}add(t){return this.x+=t.x,this.y+=t.y,this.z+=t.z,this.w+=t.w,this}addScalar(t){return this.x+=t,this.y+=t,this.z+=t,this.w+=t,this}addVectors(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this.z=t.z+e.z,this.w=t.w+e.w,this}addScaledVector(t,e){return this.x+=t.x*e,this.y+=t.y*e,this.z+=t.z*e,this.w+=t.w*e,this}sub(t){return this.x-=t.x,this.y-=t.y,this.z-=t.z,this.w-=t.w,this}subScalar(t){return this.x-=t,this.y-=t,this.z-=t,this.w-=t,this}subVectors(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this.z=t.z-e.z,this.w=t.w-e.w,this}multiply(t){return this.x*=t.x,this.y*=t.y,this.z*=t.z,this.w*=t.w,this}multiplyScalar(t){return this.x*=t,this.y*=t,this.z*=t,this.w*=t,this}applyMatrix4(t){let e=this.x,n=this.y,i=this.z,s=this.w,a=t.elements;return this.x=a[0]*e+a[4]*n+a[8]*i+a[12]*s,this.y=a[1]*e+a[5]*n+a[9]*i+a[13]*s,this.z=a[2]*e+a[6]*n+a[10]*i+a[14]*s,this.w=a[3]*e+a[7]*n+a[11]*i+a[15]*s,this}divideScalar(t){return this.multiplyScalar(1/t)}setAxisAngleFromQuaternion(t){this.w=2*Math.acos(t.w);let e=Math.sqrt(1-t.w*t.w);return e<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=t.x/e,this.y=t.y/e,this.z=t.z/e),this}setAxisAngleFromRotationMatrix(t){let e,n,i,s,c=t.elements,l=c[0],h=c[4],f=c[8],u=c[1],m=c[5],x=c[9],p=c[2],d=c[6],g=c[10];if(Math.abs(h-u)<.01&&Math.abs(f-p)<.01&&Math.abs(x-d)<.01){if(Math.abs(h+u)<.1&&Math.abs(f+p)<.1&&Math.abs(x+d)<.1&&Math.abs(l+m+g-3)<.1)return this.set(1,0,0,0),this;e=Math.PI;let _=(l+1)/2,v=(m+1)/2,b=(g+1)/2,A=(h+u)/4,C=(f+p)/4,y=(x+d)/4;return _>v&&_>b?_<.01?(n=0,i=.707106781,s=.707106781):(n=Math.sqrt(_),i=A/n,s=C/n):v>b?v<.01?(n=.707106781,i=0,s=.707106781):(i=Math.sqrt(v),n=A/i,s=y/i):b<.01?(n=.707106781,i=.707106781,s=0):(s=Math.sqrt(b),n=C/s,i=y/s),this.set(n,i,s,e),this}let M=Math.sqrt((d-x)*(d-x)+(f-p)*(f-p)+(u-h)*(u-h));return Math.abs(M)<.001&&(M=1),this.x=(d-x)/M,this.y=(f-p)/M,this.z=(u-h)/M,this.w=Math.acos((l+m+g-1)/2),this}min(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this.z=Math.min(this.z,t.z),this.w=Math.min(this.w,t.w),this}max(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this.z=Math.max(this.z,t.z),this.w=Math.max(this.w,t.w),this}clamp(t,e){return this.x=Math.max(t.x,Math.min(e.x,this.x)),this.y=Math.max(t.y,Math.min(e.y,this.y)),this.z=Math.max(t.z,Math.min(e.z,this.z)),this.w=Math.max(t.w,Math.min(e.w,this.w)),this}clampScalar(t,e){return this.x=Math.max(t,Math.min(e,this.x)),this.y=Math.max(t,Math.min(e,this.y)),this.z=Math.max(t,Math.min(e,this.z)),this.w=Math.max(t,Math.min(e,this.w)),this}clampLength(t,e){let n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(t,Math.min(e,n)))}floor(){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(){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(){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(){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(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this.w=-this.w,this}dot(t){return this.x*t.x+this.y*t.y+this.z*t.z+this.w*t.w}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)}normalize(){return this.divideScalar(this.length()||1)}setLength(t){return this.normalize().multiplyScalar(t)}lerp(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.w+=(t.w-this.w)*e,this}lerpVectors(t,e,n){return this.x=t.x+(e.x-t.x)*n,this.y=t.y+(e.y-t.y)*n,this.z=t.z+(e.z-t.z)*n,this.w=t.w+(e.w-t.w)*n,this}equals(t){return t.x===this.x&&t.y===this.y&&t.z===this.z&&t.w===this.w}fromArray(t,e=0){return this.x=t[e],this.y=t[e+1],this.z=t[e+2],this.w=t[e+3],this}toArray(t=[],e=0){return t[e]=this.x,t[e+1]=this.y,t[e+2]=this.z,t[e+3]=this.w,t}fromBufferAttribute(t,e){return this.x=t.getX(e),this.y=t.getY(e),this.z=t.getZ(e),this.w=t.getW(e),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this.w=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z,yield this.w}},rn=class extends mn{constructor(t=1,e=1,n={}){super(),this.isWebGLRenderTarget=!0,this.width=t,this.height=e,this.depth=1,this.scissor=new Xt(0,0,t,e),this.scissorTest=!1,this.viewport=new Xt(0,0,t,e);let i={width:t,height:e,depth:1};this.texture=new ue(i,n.mapping,n.wrapS,n.wrapT,n.magFilter,n.minFilter,n.format,n.type,n.anisotropy,n.encoding),this.texture.isRenderTargetTexture=!0,this.texture.flipY=!1,this.texture.generateMipmaps=n.generateMipmaps!==void 0?n.generateMipmaps:!1,this.texture.internalFormat=n.internalFormat!==void 0?n.internalFormat:null,this.texture.minFilter=n.minFilter!==void 0?n.minFilter:Re,this.depthBuffer=n.depthBuffer!==void 0?n.depthBuffer:!0,this.stencilBuffer=n.stencilBuffer!==void 0?n.stencilBuffer:!1,this.depthTexture=n.depthTexture!==void 0?n.depthTexture:null,this.samples=n.samples!==void 0?n.samples:0}setSize(t,e,n=1){(this.width!==t||this.height!==e||this.depth!==n)&&(this.width=t,this.height=e,this.depth=n,this.texture.image.width=t,this.texture.image.height=e,this.texture.image.depth=n,this.dispose()),this.viewport.set(0,0,t,e),this.scissor.set(0,0,t,e)}clone(){return new this.constructor().copy(this)}copy(t){this.width=t.width,this.height=t.height,this.depth=t.depth,this.viewport.copy(t.viewport),this.texture=t.texture.clone(),this.texture.isRenderTargetTexture=!0;let e=Object.assign({},t.texture.image);return this.texture.source=new Ms(e),this.depthBuffer=t.depthBuffer,this.stencilBuffer=t.stencilBuffer,t.depthTexture!==null&&(this.depthTexture=t.depthTexture.clone()),this.samples=t.samples,this}dispose(){this.dispatchEvent({type:"dispose"})}},bs=class extends ue{constructor(t=null,e=1,n=1,i=1){super(null),this.isDataArrayTexture=!0,this.image={data:t,width:e,height:n,depth:i},this.magFilter=ce,this.minFilter=ce,this.wrapR=Oe,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}};var Nr=class extends ue{constructor(t=null,e=1,n=1,i=1){super(null),this.isData3DTexture=!0,this.image={data:t,width:e,height:n,depth:i},this.magFilter=ce,this.minFilter=ce,this.wrapR=Oe,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}};var gn=class{constructor(t=0,e=0,n=0,i=1){this.isQuaternion=!0,this._x=t,this._y=e,this._z=n,this._w=i}static slerpFlat(t,e,n,i,s,a,o){let c=n[i+0],l=n[i+1],h=n[i+2],f=n[i+3],u=s[a+0],m=s[a+1],x=s[a+2],p=s[a+3];if(o===0){t[e+0]=c,t[e+1]=l,t[e+2]=h,t[e+3]=f;return}if(o===1){t[e+0]=u,t[e+1]=m,t[e+2]=x,t[e+3]=p;return}if(f!==p||c!==u||l!==m||h!==x){let d=1-o,g=c*u+l*m+h*x+f*p,M=g>=0?1:-1,_=1-g*g;if(_>Number.EPSILON){let b=Math.sqrt(_),A=Math.atan2(b,g*M);d=Math.sin(d*A)/b,o=Math.sin(o*A)/b}let v=o*M;if(c=c*d+u*v,l=l*d+m*v,h=h*d+x*v,f=f*d+p*v,d===1-o){let b=1/Math.sqrt(c*c+l*l+h*h+f*f);c*=b,l*=b,h*=b,f*=b}}t[e]=c,t[e+1]=l,t[e+2]=h,t[e+3]=f}static multiplyQuaternionsFlat(t,e,n,i,s,a){let o=n[i],c=n[i+1],l=n[i+2],h=n[i+3],f=s[a],u=s[a+1],m=s[a+2],x=s[a+3];return t[e]=o*x+h*f+c*m-l*u,t[e+1]=c*x+h*u+l*f-o*m,t[e+2]=l*x+h*m+o*u-c*f,t[e+3]=h*x-o*f-c*u-l*m,t}get x(){return this._x}set x(t){this._x=t,this._onChangeCallback()}get y(){return this._y}set y(t){this._y=t,this._onChangeCallback()}get z(){return this._z}set z(t){this._z=t,this._onChangeCallback()}get w(){return this._w}set w(t){this._w=t,this._onChangeCallback()}set(t,e,n,i){return this._x=t,this._y=e,this._z=n,this._w=i,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._w)}copy(t){return this._x=t.x,this._y=t.y,this._z=t.z,this._w=t.w,this._onChangeCallback(),this}setFromEuler(t,e){let n=t._x,i=t._y,s=t._z,a=t._order,o=Math.cos,c=Math.sin,l=o(n/2),h=o(i/2),f=o(s/2),u=c(n/2),m=c(i/2),x=c(s/2);switch(a){case"XYZ":this._x=u*h*f+l*m*x,this._y=l*m*f-u*h*x,this._z=l*h*x+u*m*f,this._w=l*h*f-u*m*x;break;case"YXZ":this._x=u*h*f+l*m*x,this._y=l*m*f-u*h*x,this._z=l*h*x-u*m*f,this._w=l*h*f+u*m*x;break;case"ZXY":this._x=u*h*f-l*m*x,this._y=l*m*f+u*h*x,this._z=l*h*x+u*m*f,this._w=l*h*f-u*m*x;break;case"ZYX":this._x=u*h*f-l*m*x,this._y=l*m*f+u*h*x,this._z=l*h*x-u*m*f,this._w=l*h*f+u*m*x;break;case"YZX":this._x=u*h*f+l*m*x,this._y=l*m*f+u*h*x,this._z=l*h*x-u*m*f,this._w=l*h*f-u*m*x;break;case"XZY":this._x=u*h*f-l*m*x,this._y=l*m*f-u*h*x,this._z=l*h*x+u*m*f,this._w=l*h*f+u*m*x;break;default:console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: "+a)}return e!==!1&&this._onChangeCallback(),this}setFromAxisAngle(t,e){let n=e/2,i=Math.sin(n);return this._x=t.x*i,this._y=t.y*i,this._z=t.z*i,this._w=Math.cos(n),this._onChangeCallback(),this}setFromRotationMatrix(t){let e=t.elements,n=e[0],i=e[4],s=e[8],a=e[1],o=e[5],c=e[9],l=e[2],h=e[6],f=e[10],u=n+o+f;if(u>0){let m=.5/Math.sqrt(u+1);this._w=.25/m,this._x=(h-c)*m,this._y=(s-l)*m,this._z=(a-i)*m}else if(n>o&&n>f){let m=2*Math.sqrt(1+n-o-f);this._w=(h-c)/m,this._x=.25*m,this._y=(i+a)/m,this._z=(s+l)/m}else if(o>f){let m=2*Math.sqrt(1+o-n-f);this._w=(s-l)/m,this._x=(i+a)/m,this._y=.25*m,this._z=(c+h)/m}else{let m=2*Math.sqrt(1+f-n-o);this._w=(a-i)/m,this._x=(s+l)/m,this._y=(c+h)/m,this._z=.25*m}return this._onChangeCallback(),this}setFromUnitVectors(t,e){let n=t.dot(e)+1;return nMath.abs(t.z)?(this._x=-t.y,this._y=t.x,this._z=0,this._w=n):(this._x=0,this._y=-t.z,this._z=t.y,this._w=n)):(this._x=t.y*e.z-t.z*e.y,this._y=t.z*e.x-t.x*e.z,this._z=t.x*e.y-t.y*e.x,this._w=n),this.normalize()}angleTo(t){return 2*Math.acos(Math.abs(de(this.dot(t),-1,1)))}rotateTowards(t,e){let n=this.angleTo(t);if(n===0)return this;let i=Math.min(1,e/n);return this.slerp(t,i),this}identity(){return this.set(0,0,0,1)}invert(){return this.conjugate()}conjugate(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this}dot(t){return this._x*t._x+this._y*t._y+this._z*t._z+this._w*t._w}lengthSq(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}length(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)}normalize(){let t=this.length();return t===0?(this._x=0,this._y=0,this._z=0,this._w=1):(t=1/t,this._x=this._x*t,this._y=this._y*t,this._z=this._z*t,this._w=this._w*t),this._onChangeCallback(),this}multiply(t){return this.multiplyQuaternions(this,t)}premultiply(t){return this.multiplyQuaternions(t,this)}multiplyQuaternions(t,e){let n=t._x,i=t._y,s=t._z,a=t._w,o=e._x,c=e._y,l=e._z,h=e._w;return this._x=n*h+a*o+i*l-s*c,this._y=i*h+a*c+s*o-n*l,this._z=s*h+a*l+n*c-i*o,this._w=a*h-n*o-i*c-s*l,this._onChangeCallback(),this}slerp(t,e){if(e===0)return this;if(e===1)return this.copy(t);let n=this._x,i=this._y,s=this._z,a=this._w,o=a*t._w+n*t._x+i*t._y+s*t._z;if(o<0?(this._w=-t._w,this._x=-t._x,this._y=-t._y,this._z=-t._z,o=-o):this.copy(t),o>=1)return this._w=a,this._x=n,this._y=i,this._z=s,this;let c=1-o*o;if(c<=Number.EPSILON){let m=1-e;return this._w=m*a+e*this._w,this._x=m*n+e*this._x,this._y=m*i+e*this._y,this._z=m*s+e*this._z,this.normalize(),this._onChangeCallback(),this}let l=Math.sqrt(c),h=Math.atan2(l,o),f=Math.sin((1-e)*h)/l,u=Math.sin(e*h)/l;return this._w=a*f+this._w*u,this._x=n*f+this._x*u,this._y=i*f+this._y*u,this._z=s*f+this._z*u,this._onChangeCallback(),this}slerpQuaternions(t,e,n){return this.copy(t).slerp(e,n)}random(){let t=Math.random(),e=Math.sqrt(1-t),n=Math.sqrt(t),i=2*Math.PI*Math.random(),s=2*Math.PI*Math.random();return this.set(e*Math.cos(i),n*Math.sin(s),n*Math.cos(s),e*Math.sin(i))}equals(t){return t._x===this._x&&t._y===this._y&&t._z===this._z&&t._w===this._w}fromArray(t,e=0){return this._x=t[e],this._y=t[e+1],this._z=t[e+2],this._w=t[e+3],this._onChangeCallback(),this}toArray(t=[],e=0){return t[e]=this._x,t[e+1]=this._y,t[e+2]=this._z,t[e+3]=this._w,t}fromBufferAttribute(t,e){return this._x=t.getX(e),this._y=t.getY(e),this._z=t.getZ(e),this._w=t.getW(e),this}_onChange(t){return this._onChangeCallback=t,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}},R=class{constructor(t=0,e=0,n=0){R.prototype.isVector3=!0,this.x=t,this.y=e,this.z=n}set(t,e,n){return n===void 0&&(n=this.z),this.x=t,this.y=e,this.z=n,this}setScalar(t){return this.x=t,this.y=t,this.z=t,this}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setZ(t){return this.z=t,this}setComponent(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)}return this}getComponent(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(){return new this.constructor(this.x,this.y,this.z)}copy(t){return this.x=t.x,this.y=t.y,this.z=t.z,this}add(t){return this.x+=t.x,this.y+=t.y,this.z+=t.z,this}addScalar(t){return this.x+=t,this.y+=t,this.z+=t,this}addVectors(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this.z=t.z+e.z,this}addScaledVector(t,e){return this.x+=t.x*e,this.y+=t.y*e,this.z+=t.z*e,this}sub(t){return this.x-=t.x,this.y-=t.y,this.z-=t.z,this}subScalar(t){return this.x-=t,this.y-=t,this.z-=t,this}subVectors(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this.z=t.z-e.z,this}multiply(t){return this.x*=t.x,this.y*=t.y,this.z*=t.z,this}multiplyScalar(t){return this.x*=t,this.y*=t,this.z*=t,this}multiplyVectors(t,e){return this.x=t.x*e.x,this.y=t.y*e.y,this.z=t.z*e.z,this}applyEuler(t){return this.applyQuaternion(fa.setFromEuler(t))}applyAxisAngle(t,e){return this.applyQuaternion(fa.setFromAxisAngle(t,e))}applyMatrix3(t){let e=this.x,n=this.y,i=this.z,s=t.elements;return this.x=s[0]*e+s[3]*n+s[6]*i,this.y=s[1]*e+s[4]*n+s[7]*i,this.z=s[2]*e+s[5]*n+s[8]*i,this}applyNormalMatrix(t){return this.applyMatrix3(t).normalize()}applyMatrix4(t){let e=this.x,n=this.y,i=this.z,s=t.elements,a=1/(s[3]*e+s[7]*n+s[11]*i+s[15]);return this.x=(s[0]*e+s[4]*n+s[8]*i+s[12])*a,this.y=(s[1]*e+s[5]*n+s[9]*i+s[13])*a,this.z=(s[2]*e+s[6]*n+s[10]*i+s[14])*a,this}applyQuaternion(t){let e=this.x,n=this.y,i=this.z,s=t.x,a=t.y,o=t.z,c=t.w,l=c*e+a*i-o*n,h=c*n+o*e-s*i,f=c*i+s*n-a*e,u=-s*e-a*n-o*i;return this.x=l*c+u*-s+h*-o-f*-a,this.y=h*c+u*-a+f*-s-l*-o,this.z=f*c+u*-o+l*-a-h*-s,this}project(t){return this.applyMatrix4(t.matrixWorldInverse).applyMatrix4(t.projectionMatrix)}unproject(t){return this.applyMatrix4(t.projectionMatrixInverse).applyMatrix4(t.matrixWorld)}transformDirection(t){let e=this.x,n=this.y,i=this.z,s=t.elements;return this.x=s[0]*e+s[4]*n+s[8]*i,this.y=s[1]*e+s[5]*n+s[9]*i,this.z=s[2]*e+s[6]*n+s[10]*i,this.normalize()}divide(t){return this.x/=t.x,this.y/=t.y,this.z/=t.z,this}divideScalar(t){return this.multiplyScalar(1/t)}min(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this.z=Math.min(this.z,t.z),this}max(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this.z=Math.max(this.z,t.z),this}clamp(t,e){return this.x=Math.max(t.x,Math.min(e.x,this.x)),this.y=Math.max(t.y,Math.min(e.y,this.y)),this.z=Math.max(t.z,Math.min(e.z,this.z)),this}clampScalar(t,e){return this.x=Math.max(t,Math.min(e,this.x)),this.y=Math.max(t,Math.min(e,this.y)),this.z=Math.max(t,Math.min(e,this.z)),this}clampLength(t,e){let n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(t,Math.min(e,n)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}roundToZero(){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(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(t){return this.x*t.x+this.y*t.y+this.z*t.z}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(t){return this.normalize().multiplyScalar(t)}lerp(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(t,e,n){return this.x=t.x+(e.x-t.x)*n,this.y=t.y+(e.y-t.y)*n,this.z=t.z+(e.z-t.z)*n,this}cross(t){return this.crossVectors(this,t)}crossVectors(t,e){let n=t.x,i=t.y,s=t.z,a=e.x,o=e.y,c=e.z;return this.x=i*c-s*o,this.y=s*a-n*c,this.z=n*o-i*a,this}projectOnVector(t){let e=t.lengthSq();if(e===0)return this.set(0,0,0);let n=t.dot(this)/e;return this.copy(t).multiplyScalar(n)}projectOnPlane(t){return cr.copy(this).projectOnVector(t),this.sub(cr)}reflect(t){return this.sub(cr.copy(t).multiplyScalar(2*this.dot(t)))}angleTo(t){let e=Math.sqrt(this.lengthSq()*t.lengthSq());if(e===0)return Math.PI/2;let n=this.dot(t)/e;return Math.acos(de(n,-1,1))}distanceTo(t){return Math.sqrt(this.distanceToSquared(t))}distanceToSquared(t){let e=this.x-t.x,n=this.y-t.y,i=this.z-t.z;return e*e+n*n+i*i}manhattanDistanceTo(t){return Math.abs(this.x-t.x)+Math.abs(this.y-t.y)+Math.abs(this.z-t.z)}setFromSpherical(t){return this.setFromSphericalCoords(t.radius,t.phi,t.theta)}setFromSphericalCoords(t,e,n){let i=Math.sin(e)*t;return this.x=i*Math.sin(n),this.y=Math.cos(e)*t,this.z=i*Math.cos(n),this}setFromCylindrical(t){return this.setFromCylindricalCoords(t.radius,t.theta,t.y)}setFromCylindricalCoords(t,e,n){return this.x=t*Math.sin(e),this.y=n,this.z=t*Math.cos(e),this}setFromMatrixPosition(t){let e=t.elements;return this.x=e[12],this.y=e[13],this.z=e[14],this}setFromMatrixScale(t){let e=this.setFromMatrixColumn(t,0).length(),n=this.setFromMatrixColumn(t,1).length(),i=this.setFromMatrixColumn(t,2).length();return this.x=e,this.y=n,this.z=i,this}setFromMatrixColumn(t,e){return this.fromArray(t.elements,e*4)}setFromMatrix3Column(t,e){return this.fromArray(t.elements,e*3)}setFromEuler(t){return this.x=t._x,this.y=t._y,this.z=t._z,this}equals(t){return t.x===this.x&&t.y===this.y&&t.z===this.z}fromArray(t,e=0){return this.x=t[e],this.y=t[e+1],this.z=t[e+2],this}toArray(t=[],e=0){return t[e]=this.x,t[e+1]=this.y,t[e+2]=this.z,t}fromBufferAttribute(t,e){return this.x=t.getX(e),this.y=t.getY(e),this.z=t.getZ(e),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){let t=(Math.random()-.5)*2,e=Math.random()*Math.PI*2,n=Math.sqrt(1-t**2);return this.x=n*Math.cos(e),this.y=n*Math.sin(e),this.z=t,this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}},cr=new R,fa=new gn,fe=class{constructor(t=new R(1/0,1/0,1/0),e=new R(-1/0,-1/0,-1/0)){this.isBox3=!0,this.min=t,this.max=e}set(t,e){return this.min.copy(t),this.max.copy(e),this}setFromArray(t){let e=1/0,n=1/0,i=1/0,s=-1/0,a=-1/0,o=-1/0;for(let c=0,l=t.length;cs&&(s=h),f>a&&(a=f),u>o&&(o=u)}return this.min.set(e,n,i),this.max.set(s,a,o),this}setFromBufferAttribute(t){let e=1/0,n=1/0,i=1/0,s=-1/0,a=-1/0,o=-1/0;for(let c=0,l=t.count;cs&&(s=h),f>a&&(a=f),u>o&&(o=u)}return this.min.set(e,n,i),this.max.set(s,a,o),this}setFromPoints(t){this.makeEmpty();for(let e=0,n=t.length;ethis.max.x||t.ythis.max.y||t.zthis.max.z)}containsBox(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(t,e){return e.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))}intersectsBox(t){return!(t.max.xthis.max.x||t.max.ythis.max.y||t.max.zthis.max.z)}intersectsSphere(t){return this.clampPoint(t.center,Sn),Sn.distanceToSquared(t.center)<=t.radius*t.radius}intersectsPlane(t){let e,n;return t.normal.x>0?(e=t.normal.x*this.min.x,n=t.normal.x*this.max.x):(e=t.normal.x*this.max.x,n=t.normal.x*this.min.x),t.normal.y>0?(e+=t.normal.y*this.min.y,n+=t.normal.y*this.max.y):(e+=t.normal.y*this.max.y,n+=t.normal.y*this.min.y),t.normal.z>0?(e+=t.normal.z*this.min.z,n+=t.normal.z*this.max.z):(e+=t.normal.z*this.max.z,n+=t.normal.z*this.min.z),e<=-t.constant&&n>=-t.constant}intersectsTriangle(t){if(this.isEmpty())return!1;this.getCenter(Ei),ji.subVectors(this.max,Ei),Hn.subVectors(t.a,Ei),Wn.subVectors(t.b,Ei),qn.subVectors(t.c,Ei),ln.subVectors(Wn,Hn),hn.subVectors(qn,Wn),Tn.subVectors(Hn,qn);let e=[0,-ln.z,ln.y,0,-hn.z,hn.y,0,-Tn.z,Tn.y,ln.z,0,-ln.x,hn.z,0,-hn.x,Tn.z,0,-Tn.x,-ln.y,ln.x,0,-hn.y,hn.x,0,-Tn.y,Tn.x,0];return!hr(e,Hn,Wn,qn,ji)||(e=[1,0,0,0,1,0,0,0,1],!hr(e,Hn,Wn,qn,ji))?!1:(Qi.crossVectors(ln,hn),e=[Qi.x,Qi.y,Qi.z],hr(e,Hn,Wn,qn,ji))}clampPoint(t,e){return e.copy(t).clamp(this.min,this.max)}distanceToPoint(t){return Sn.copy(t).clamp(this.min,this.max).sub(t).length()}getBoundingSphere(t){return this.getCenter(t.center),t.radius=this.getSize(Sn).length()*.5,t}intersect(t){return this.min.max(t.min),this.max.min(t.max),this.isEmpty()&&this.makeEmpty(),this}union(t){return this.min.min(t.min),this.max.max(t.max),this}applyMatrix4(t){return this.isEmpty()?this:(Ke[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(t),Ke[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(t),Ke[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(t),Ke[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(t),Ke[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(t),Ke[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(t),Ke[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(t),Ke[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(t),this.setFromPoints(Ke),this)}translate(t){return this.min.add(t),this.max.add(t),this}equals(t){return t.min.equals(this.min)&&t.max.equals(this.max)}},Ke=[new R,new R,new R,new R,new R,new R,new R,new R],Sn=new R,lr=new fe,Hn=new R,Wn=new R,qn=new R,ln=new R,hn=new R,Tn=new R,Ei=new R,ji=new R,Qi=new R,An=new R;function hr(r,t,e,n,i){for(let s=0,a=r.length-3;s<=a;s+=3){An.fromArray(r,s);let o=i.x*Math.abs(An.x)+i.y*Math.abs(An.y)+i.z*Math.abs(An.z),c=t.dot(An),l=e.dot(An),h=n.dot(An);if(Math.max(-Math.max(c,l,h),Math.min(c,l,h))>o)return!1}return!0}var El=new fe,Ci=new R,ur=new R,Fn=class{constructor(t=new R,e=-1){this.center=t,this.radius=e}set(t,e){return this.center.copy(t),this.radius=e,this}setFromPoints(t,e){let n=this.center;e!==void 0?n.copy(e):El.setFromPoints(t).getCenter(n);let i=0;for(let s=0,a=t.length;sthis.radius*this.radius&&(e.sub(this.center).normalize(),e.multiplyScalar(this.radius).add(this.center)),e}getBoundingBox(t){return this.isEmpty()?(t.makeEmpty(),t):(t.set(this.center,this.center),t.expandByScalar(this.radius),t)}applyMatrix4(t){return this.center.applyMatrix4(t),this.radius=this.radius*t.getMaxScaleOnAxis(),this}translate(t){return this.center.add(t),this}expandByPoint(t){if(this.isEmpty())return this.center.copy(t),this.radius=0,this;Ci.subVectors(t,this.center);let e=Ci.lengthSq();if(e>this.radius*this.radius){let n=Math.sqrt(e),i=(n-this.radius)*.5;this.center.addScaledVector(Ci,i/n),this.radius+=i}return this}union(t){return t.isEmpty()?this:this.isEmpty()?(this.copy(t),this):(this.center.equals(t.center)===!0?this.radius=Math.max(this.radius,t.radius):(ur.subVectors(t.center,this.center).setLength(t.radius),this.expandByPoint(Ci.copy(t.center).add(ur)),this.expandByPoint(Ci.copy(t.center).sub(ur))),this)}equals(t){return t.center.equals(this.center)&&t.radius===this.radius}clone(){return new this.constructor().copy(this)}},je=new R,fr=new R,ts=new R,un=new R,dr=new R,es=new R,pr=new R,Fr=class{constructor(t=new R,e=new R(0,0,-1)){this.origin=t,this.direction=e}set(t,e){return this.origin.copy(t),this.direction.copy(e),this}copy(t){return this.origin.copy(t.origin),this.direction.copy(t.direction),this}at(t,e){return e.copy(this.direction).multiplyScalar(t).add(this.origin)}lookAt(t){return this.direction.copy(t).sub(this.origin).normalize(),this}recast(t){return this.origin.copy(this.at(t,je)),this}closestPointToPoint(t,e){e.subVectors(t,this.origin);let n=e.dot(this.direction);return n<0?e.copy(this.origin):e.copy(this.direction).multiplyScalar(n).add(this.origin)}distanceToPoint(t){return Math.sqrt(this.distanceSqToPoint(t))}distanceSqToPoint(t){let e=je.subVectors(t,this.origin).dot(this.direction);return e<0?this.origin.distanceToSquared(t):(je.copy(this.direction).multiplyScalar(e).add(this.origin),je.distanceToSquared(t))}distanceSqToSegment(t,e,n,i){fr.copy(t).add(e).multiplyScalar(.5),ts.copy(e).sub(t).normalize(),un.copy(this.origin).sub(fr);let s=t.distanceTo(e)*.5,a=-this.direction.dot(ts),o=un.dot(this.direction),c=-un.dot(ts),l=un.lengthSq(),h=Math.abs(1-a*a),f,u,m,x;if(h>0)if(f=a*c-o,u=a*o-c,x=s*h,f>=0)if(u>=-x)if(u<=x){let p=1/h;f*=p,u*=p,m=f*(f+a*u+2*o)+u*(a*f+u+2*c)+l}else u=s,f=Math.max(0,-(a*u+o)),m=-f*f+u*(u+2*c)+l;else u=-s,f=Math.max(0,-(a*u+o)),m=-f*f+u*(u+2*c)+l;else u<=-x?(f=Math.max(0,-(-a*s+o)),u=f>0?-s:Math.min(Math.max(-s,-c),s),m=-f*f+u*(u+2*c)+l):u<=x?(f=0,u=Math.min(Math.max(-s,-c),s),m=u*(u+2*c)+l):(f=Math.max(0,-(a*s+o)),u=f>0?s:Math.min(Math.max(-s,-c),s),m=-f*f+u*(u+2*c)+l);else u=a>0?-s:s,f=Math.max(0,-(a*u+o)),m=-f*f+u*(u+2*c)+l;return n&&n.copy(this.direction).multiplyScalar(f).add(this.origin),i&&i.copy(ts).multiplyScalar(u).add(fr),m}intersectSphere(t,e){je.subVectors(t.center,this.origin);let n=je.dot(this.direction),i=je.dot(je)-n*n,s=t.radius*t.radius;if(i>s)return null;let a=Math.sqrt(s-i),o=n-a,c=n+a;return o<0&&c<0?null:o<0?this.at(c,e):this.at(o,e)}intersectsSphere(t){return this.distanceSqToPoint(t.center)<=t.radius*t.radius}distanceToPlane(t){let e=t.normal.dot(this.direction);if(e===0)return t.distanceToPoint(this.origin)===0?0:null;let n=-(this.origin.dot(t.normal)+t.constant)/e;return n>=0?n:null}intersectPlane(t,e){let n=this.distanceToPlane(t);return n===null?null:this.at(n,e)}intersectsPlane(t){let e=t.distanceToPoint(this.origin);return e===0||t.normal.dot(this.direction)*e<0}intersectBox(t,e){let n,i,s,a,o,c,l=1/this.direction.x,h=1/this.direction.y,f=1/this.direction.z,u=this.origin;return l>=0?(n=(t.min.x-u.x)*l,i=(t.max.x-u.x)*l):(n=(t.max.x-u.x)*l,i=(t.min.x-u.x)*l),h>=0?(s=(t.min.y-u.y)*h,a=(t.max.y-u.y)*h):(s=(t.max.y-u.y)*h,a=(t.min.y-u.y)*h),n>a||s>i||((s>n||isNaN(n))&&(n=s),(a=0?(o=(t.min.z-u.z)*f,c=(t.max.z-u.z)*f):(o=(t.max.z-u.z)*f,c=(t.min.z-u.z)*f),n>c||o>i)||((o>n||n!==n)&&(n=o),(c=0?n:i,e)}intersectsBox(t){return this.intersectBox(t,je)!==null}intersectTriangle(t,e,n,i,s){dr.subVectors(e,t),es.subVectors(n,t),pr.crossVectors(dr,es);let a=this.direction.dot(pr),o;if(a>0){if(i)return null;o=1}else if(a<0)o=-1,a=-a;else return null;un.subVectors(this.origin,t);let c=o*this.direction.dot(es.crossVectors(un,es));if(c<0)return null;let l=o*this.direction.dot(dr.cross(un));if(l<0||c+l>a)return null;let h=-o*un.dot(pr);return h<0?null:this.at(h/a,s)}applyMatrix4(t){return this.origin.applyMatrix4(t),this.direction.transformDirection(t),this}equals(t){return t.origin.equals(this.origin)&&t.direction.equals(this.direction)}clone(){return new this.constructor().copy(this)}},zt=class{constructor(){zt.prototype.isMatrix4=!0,this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}set(t,e,n,i,s,a,o,c,l,h,f,u,m,x,p,d){let g=this.elements;return g[0]=t,g[4]=e,g[8]=n,g[12]=i,g[1]=s,g[5]=a,g[9]=o,g[13]=c,g[2]=l,g[6]=h,g[10]=f,g[14]=u,g[3]=m,g[7]=x,g[11]=p,g[15]=d,this}identity(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this}clone(){return new zt().fromArray(this.elements)}copy(t){let e=this.elements,n=t.elements;return e[0]=n[0],e[1]=n[1],e[2]=n[2],e[3]=n[3],e[4]=n[4],e[5]=n[5],e[6]=n[6],e[7]=n[7],e[8]=n[8],e[9]=n[9],e[10]=n[10],e[11]=n[11],e[12]=n[12],e[13]=n[13],e[14]=n[14],e[15]=n[15],this}copyPosition(t){let e=this.elements,n=t.elements;return e[12]=n[12],e[13]=n[13],e[14]=n[14],this}setFromMatrix3(t){let e=t.elements;return this.set(e[0],e[3],e[6],0,e[1],e[4],e[7],0,e[2],e[5],e[8],0,0,0,0,1),this}extractBasis(t,e,n){return t.setFromMatrixColumn(this,0),e.setFromMatrixColumn(this,1),n.setFromMatrixColumn(this,2),this}makeBasis(t,e,n){return this.set(t.x,e.x,n.x,0,t.y,e.y,n.y,0,t.z,e.z,n.z,0,0,0,0,1),this}extractRotation(t){let e=this.elements,n=t.elements,i=1/Xn.setFromMatrixColumn(t,0).length(),s=1/Xn.setFromMatrixColumn(t,1).length(),a=1/Xn.setFromMatrixColumn(t,2).length();return e[0]=n[0]*i,e[1]=n[1]*i,e[2]=n[2]*i,e[3]=0,e[4]=n[4]*s,e[5]=n[5]*s,e[6]=n[6]*s,e[7]=0,e[8]=n[8]*a,e[9]=n[9]*a,e[10]=n[10]*a,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,this}makeRotationFromEuler(t){let e=this.elements,n=t.x,i=t.y,s=t.z,a=Math.cos(n),o=Math.sin(n),c=Math.cos(i),l=Math.sin(i),h=Math.cos(s),f=Math.sin(s);if(t.order==="XYZ"){let u=a*h,m=a*f,x=o*h,p=o*f;e[0]=c*h,e[4]=-c*f,e[8]=l,e[1]=m+x*l,e[5]=u-p*l,e[9]=-o*c,e[2]=p-u*l,e[6]=x+m*l,e[10]=a*c}else if(t.order==="YXZ"){let u=c*h,m=c*f,x=l*h,p=l*f;e[0]=u+p*o,e[4]=x*o-m,e[8]=a*l,e[1]=a*f,e[5]=a*h,e[9]=-o,e[2]=m*o-x,e[6]=p+u*o,e[10]=a*c}else if(t.order==="ZXY"){let u=c*h,m=c*f,x=l*h,p=l*f;e[0]=u-p*o,e[4]=-a*f,e[8]=x+m*o,e[1]=m+x*o,e[5]=a*h,e[9]=p-u*o,e[2]=-a*l,e[6]=o,e[10]=a*c}else if(t.order==="ZYX"){let u=a*h,m=a*f,x=o*h,p=o*f;e[0]=c*h,e[4]=x*l-m,e[8]=u*l+p,e[1]=c*f,e[5]=p*l+u,e[9]=m*l-x,e[2]=-l,e[6]=o*c,e[10]=a*c}else if(t.order==="YZX"){let u=a*c,m=a*l,x=o*c,p=o*l;e[0]=c*h,e[4]=p-u*f,e[8]=x*f+m,e[1]=f,e[5]=a*h,e[9]=-o*h,e[2]=-l*h,e[6]=m*f+x,e[10]=u-p*f}else if(t.order==="XZY"){let u=a*c,m=a*l,x=o*c,p=o*l;e[0]=c*h,e[4]=-f,e[8]=l*h,e[1]=u*f+p,e[5]=a*h,e[9]=m*f-x,e[2]=x*f-m,e[6]=o*h,e[10]=p*f+u}return e[3]=0,e[7]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,this}makeRotationFromQuaternion(t){return this.compose(Cl,t,Pl)}lookAt(t,e,n){let i=this.elements;return be.subVectors(t,e),be.lengthSq()===0&&(be.z=1),be.normalize(),fn.crossVectors(n,be),fn.lengthSq()===0&&(Math.abs(n.z)===1?be.x+=1e-4:be.z+=1e-4,be.normalize(),fn.crossVectors(n,be)),fn.normalize(),ns.crossVectors(be,fn),i[0]=fn.x,i[4]=ns.x,i[8]=be.x,i[1]=fn.y,i[5]=ns.y,i[9]=be.y,i[2]=fn.z,i[6]=ns.z,i[10]=be.z,this}multiply(t){return this.multiplyMatrices(this,t)}premultiply(t){return this.multiplyMatrices(t,this)}multiplyMatrices(t,e){let n=t.elements,i=e.elements,s=this.elements,a=n[0],o=n[4],c=n[8],l=n[12],h=n[1],f=n[5],u=n[9],m=n[13],x=n[2],p=n[6],d=n[10],g=n[14],M=n[3],_=n[7],v=n[11],b=n[15],A=i[0],C=i[4],y=i[8],S=i[12],P=i[1],O=i[5],B=i[9],D=i[13],I=i[2],k=i[6],Y=i[10],Z=i[14],H=i[3],$=i[7],J=i[11],dt=i[15];return s[0]=a*A+o*P+c*I+l*H,s[4]=a*C+o*O+c*k+l*$,s[8]=a*y+o*B+c*Y+l*J,s[12]=a*S+o*D+c*Z+l*dt,s[1]=h*A+f*P+u*I+m*H,s[5]=h*C+f*O+u*k+m*$,s[9]=h*y+f*B+u*Y+m*J,s[13]=h*S+f*D+u*Z+m*dt,s[2]=x*A+p*P+d*I+g*H,s[6]=x*C+p*O+d*k+g*$,s[10]=x*y+p*B+d*Y+g*J,s[14]=x*S+p*D+d*Z+g*dt,s[3]=M*A+_*P+v*I+b*H,s[7]=M*C+_*O+v*k+b*$,s[11]=M*y+_*B+v*Y+b*J,s[15]=M*S+_*D+v*Z+b*dt,this}multiplyScalar(t){let 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(){let t=this.elements,e=t[0],n=t[4],i=t[8],s=t[12],a=t[1],o=t[5],c=t[9],l=t[13],h=t[2],f=t[6],u=t[10],m=t[14],x=t[3],p=t[7],d=t[11],g=t[15];return x*(+s*c*f-i*l*f-s*o*u+n*l*u+i*o*m-n*c*m)+p*(+e*c*m-e*l*u+s*a*u-i*a*m+i*l*h-s*c*h)+d*(+e*l*f-e*o*m-s*a*f+n*a*m+s*o*h-n*l*h)+g*(-i*o*h-e*c*f+e*o*u+i*a*f-n*a*u+n*c*h)}transpose(){let t=this.elements,e;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}setPosition(t,e,n){let i=this.elements;return t.isVector3?(i[12]=t.x,i[13]=t.y,i[14]=t.z):(i[12]=t,i[13]=e,i[14]=n),this}invert(){let t=this.elements,e=t[0],n=t[1],i=t[2],s=t[3],a=t[4],o=t[5],c=t[6],l=t[7],h=t[8],f=t[9],u=t[10],m=t[11],x=t[12],p=t[13],d=t[14],g=t[15],M=f*d*l-p*u*l+p*c*m-o*d*m-f*c*g+o*u*g,_=x*u*l-h*d*l-x*c*m+a*d*m+h*c*g-a*u*g,v=h*p*l-x*f*l+x*o*m-a*p*m-h*o*g+a*f*g,b=x*f*c-h*p*c-x*o*u+a*p*u+h*o*d-a*f*d,A=e*M+n*_+i*v+s*b;if(A===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);let C=1/A;return t[0]=M*C,t[1]=(p*u*s-f*d*s-p*i*m+n*d*m+f*i*g-n*u*g)*C,t[2]=(o*d*s-p*c*s+p*i*l-n*d*l-o*i*g+n*c*g)*C,t[3]=(f*c*s-o*u*s-f*i*l+n*u*l+o*i*m-n*c*m)*C,t[4]=_*C,t[5]=(h*d*s-x*u*s+x*i*m-e*d*m-h*i*g+e*u*g)*C,t[6]=(x*c*s-a*d*s-x*i*l+e*d*l+a*i*g-e*c*g)*C,t[7]=(a*u*s-h*c*s+h*i*l-e*u*l-a*i*m+e*c*m)*C,t[8]=v*C,t[9]=(x*f*s-h*p*s-x*n*m+e*p*m+h*n*g-e*f*g)*C,t[10]=(a*p*s-x*o*s+x*n*l-e*p*l-a*n*g+e*o*g)*C,t[11]=(h*o*s-a*f*s-h*n*l+e*f*l+a*n*m-e*o*m)*C,t[12]=b*C,t[13]=(h*p*i-x*f*i+x*n*u-e*p*u-h*n*d+e*f*d)*C,t[14]=(x*o*i-a*p*i-x*n*c+e*p*c+a*n*d-e*o*d)*C,t[15]=(a*f*i-h*o*i+h*n*c-e*f*c-a*n*u+e*o*u)*C,this}scale(t){let e=this.elements,n=t.x,i=t.y,s=t.z;return e[0]*=n,e[4]*=i,e[8]*=s,e[1]*=n,e[5]*=i,e[9]*=s,e[2]*=n,e[6]*=i,e[10]*=s,e[3]*=n,e[7]*=i,e[11]*=s,this}getMaxScaleOnAxis(){let t=this.elements,e=t[0]*t[0]+t[1]*t[1]+t[2]*t[2],n=t[4]*t[4]+t[5]*t[5]+t[6]*t[6],i=t[8]*t[8]+t[9]*t[9]+t[10]*t[10];return Math.sqrt(Math.max(e,n,i))}makeTranslation(t,e,n){return this.set(1,0,0,t,0,1,0,e,0,0,1,n,0,0,0,1),this}makeRotationX(t){let e=Math.cos(t),n=Math.sin(t);return this.set(1,0,0,0,0,e,-n,0,0,n,e,0,0,0,0,1),this}makeRotationY(t){let e=Math.cos(t),n=Math.sin(t);return this.set(e,0,n,0,0,1,0,0,-n,0,e,0,0,0,0,1),this}makeRotationZ(t){let e=Math.cos(t),n=Math.sin(t);return this.set(e,-n,0,0,n,e,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(t,e){let n=Math.cos(e),i=Math.sin(e),s=1-n,a=t.x,o=t.y,c=t.z,l=s*a,h=s*o;return this.set(l*a+n,l*o-i*c,l*c+i*o,0,l*o+i*c,h*o+n,h*c-i*a,0,l*c-i*o,h*c+i*a,s*c*c+n,0,0,0,0,1),this}makeScale(t,e,n){return this.set(t,0,0,0,0,e,0,0,0,0,n,0,0,0,0,1),this}makeShear(t,e,n,i,s,a){return this.set(1,n,s,0,t,1,a,0,e,i,1,0,0,0,0,1),this}compose(t,e,n){let i=this.elements,s=e._x,a=e._y,o=e._z,c=e._w,l=s+s,h=a+a,f=o+o,u=s*l,m=s*h,x=s*f,p=a*h,d=a*f,g=o*f,M=c*l,_=c*h,v=c*f,b=n.x,A=n.y,C=n.z;return i[0]=(1-(p+g))*b,i[1]=(m+v)*b,i[2]=(x-_)*b,i[3]=0,i[4]=(m-v)*A,i[5]=(1-(u+g))*A,i[6]=(d+M)*A,i[7]=0,i[8]=(x+_)*C,i[9]=(d-M)*C,i[10]=(1-(u+p))*C,i[11]=0,i[12]=t.x,i[13]=t.y,i[14]=t.z,i[15]=1,this}decompose(t,e,n){let i=this.elements,s=Xn.set(i[0],i[1],i[2]).length(),a=Xn.set(i[4],i[5],i[6]).length(),o=Xn.set(i[8],i[9],i[10]).length();this.determinant()<0&&(s=-s),t.x=i[12],t.y=i[13],t.z=i[14],Fe.copy(this);let l=1/s,h=1/a,f=1/o;return Fe.elements[0]*=l,Fe.elements[1]*=l,Fe.elements[2]*=l,Fe.elements[4]*=h,Fe.elements[5]*=h,Fe.elements[6]*=h,Fe.elements[8]*=f,Fe.elements[9]*=f,Fe.elements[10]*=f,e.setFromRotationMatrix(Fe),n.x=s,n.y=a,n.z=o,this}makePerspective(t,e,n,i,s,a){let o=this.elements,c=2*s/(e-t),l=2*s/(n-i),h=(e+t)/(e-t),f=(n+i)/(n-i),u=-(a+s)/(a-s),m=-2*a*s/(a-s);return o[0]=c,o[4]=0,o[8]=h,o[12]=0,o[1]=0,o[5]=l,o[9]=f,o[13]=0,o[2]=0,o[6]=0,o[10]=u,o[14]=m,o[3]=0,o[7]=0,o[11]=-1,o[15]=0,this}makeOrthographic(t,e,n,i,s,a){let o=this.elements,c=1/(e-t),l=1/(n-i),h=1/(a-s),f=(e+t)*c,u=(n+i)*l,m=(a+s)*h;return o[0]=2*c,o[4]=0,o[8]=0,o[12]=-f,o[1]=0,o[5]=2*l,o[9]=0,o[13]=-u,o[2]=0,o[6]=0,o[10]=-2*h,o[14]=-m,o[3]=0,o[7]=0,o[11]=0,o[15]=1,this}equals(t){let e=this.elements,n=t.elements;for(let i=0;i<16;i++)if(e[i]!==n[i])return!1;return!0}fromArray(t,e=0){for(let n=0;n<16;n++)this.elements[n]=t[n+e];return this}toArray(t=[],e=0){let n=this.elements;return t[e]=n[0],t[e+1]=n[1],t[e+2]=n[2],t[e+3]=n[3],t[e+4]=n[4],t[e+5]=n[5],t[e+6]=n[6],t[e+7]=n[7],t[e+8]=n[8],t[e+9]=n[9],t[e+10]=n[10],t[e+11]=n[11],t[e+12]=n[12],t[e+13]=n[13],t[e+14]=n[14],t[e+15]=n[15],t}},Xn=new R,Fe=new zt,Cl=new R(0,0,0),Pl=new R(1,1,1),fn=new R,ns=new R,be=new R,da=new zt,pa=new gn,ui=class{constructor(t=0,e=0,n=0,i=ui.DEFAULT_ORDER){this.isEuler=!0,this._x=t,this._y=e,this._z=n,this._order=i}get x(){return this._x}set x(t){this._x=t,this._onChangeCallback()}get y(){return this._y}set y(t){this._y=t,this._onChangeCallback()}get z(){return this._z}set z(t){this._z=t,this._onChangeCallback()}get order(){return this._order}set order(t){this._order=t,this._onChangeCallback()}set(t,e,n,i=this._order){return this._x=t,this._y=e,this._z=n,this._order=i,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._order)}copy(t){return this._x=t._x,this._y=t._y,this._z=t._z,this._order=t._order,this._onChangeCallback(),this}setFromRotationMatrix(t,e=this._order,n=!0){let i=t.elements,s=i[0],a=i[4],o=i[8],c=i[1],l=i[5],h=i[9],f=i[2],u=i[6],m=i[10];switch(e){case"XYZ":this._y=Math.asin(de(o,-1,1)),Math.abs(o)<.9999999?(this._x=Math.atan2(-h,m),this._z=Math.atan2(-a,s)):(this._x=Math.atan2(u,l),this._z=0);break;case"YXZ":this._x=Math.asin(-de(h,-1,1)),Math.abs(h)<.9999999?(this._y=Math.atan2(o,m),this._z=Math.atan2(c,l)):(this._y=Math.atan2(-f,s),this._z=0);break;case"ZXY":this._x=Math.asin(de(u,-1,1)),Math.abs(u)<.9999999?(this._y=Math.atan2(-f,m),this._z=Math.atan2(-a,l)):(this._y=0,this._z=Math.atan2(c,s));break;case"ZYX":this._y=Math.asin(-de(f,-1,1)),Math.abs(f)<.9999999?(this._x=Math.atan2(u,m),this._z=Math.atan2(c,s)):(this._x=0,this._z=Math.atan2(-a,l));break;case"YZX":this._z=Math.asin(de(c,-1,1)),Math.abs(c)<.9999999?(this._x=Math.atan2(-h,l),this._y=Math.atan2(-f,s)):(this._x=0,this._y=Math.atan2(o,m));break;case"XZY":this._z=Math.asin(-de(a,-1,1)),Math.abs(a)<.9999999?(this._x=Math.atan2(u,l),this._y=Math.atan2(o,s)):(this._x=Math.atan2(-h,m),this._y=0);break;default:console.warn("THREE.Euler: .setFromRotationMatrix() encountered an unknown order: "+e)}return this._order=e,n===!0&&this._onChangeCallback(),this}setFromQuaternion(t,e,n){return da.makeRotationFromQuaternion(t),this.setFromRotationMatrix(da,e,n)}setFromVector3(t,e=this._order){return this.set(t.x,t.y,t.z,e)}reorder(t){return pa.setFromEuler(this),this.setFromQuaternion(pa,t)}equals(t){return t._x===this._x&&t._y===this._y&&t._z===this._z&&t._order===this._order}fromArray(t){return this._x=t[0],this._y=t[1],this._z=t[2],t[3]!==void 0&&(this._order=t[3]),this._onChangeCallback(),this}toArray(t=[],e=0){return t[e]=this._x,t[e+1]=this._y,t[e+2]=this._z,t[e+3]=this._order,t}_onChange(t){return this._onChangeCallback=t,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._order}};ui.DEFAULT_ORDER="XYZ";var ws=class{constructor(){this.mask=1}set(t){this.mask=(1<>>0}enable(t){this.mask|=1<1){for(let e=0;e1){for(let n=0;n0&&(n=n.concat(a))}return n}getWorldPosition(t){return this.updateWorldMatrix(!0,!1),t.setFromMatrixPosition(this.matrixWorld)}getWorldQuaternion(t){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(Pi,t,Ll),t}getWorldScale(t){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(Pi,Il,t),t}getWorldDirection(t){this.updateWorldMatrix(!0,!1);let e=this.matrixWorld.elements;return t.set(e[8],e[9],e[10]).normalize()}raycast(){}traverse(t){t(this);let e=this.children;for(let n=0,i=e.length;n0&&(i.userData=this.userData),i.layers=this.layers.mask,i.matrix=this.matrix.toArray(),this.matrixAutoUpdate===!1&&(i.matrixAutoUpdate=!1),this.isInstancedMesh&&(i.type="InstancedMesh",i.count=this.count,i.instanceMatrix=this.instanceMatrix.toJSON(),this.instanceColor!==null&&(i.instanceColor=this.instanceColor.toJSON()));function s(o,c){return o[c.uuid]===void 0&&(o[c.uuid]=c.toJSON(t)),c.uuid}if(this.isScene)this.background&&(this.background.isColor?i.background=this.background.toJSON():this.background.isTexture&&(i.background=this.background.toJSON(t).uuid)),this.environment&&this.environment.isTexture&&this.environment.isRenderTargetTexture!==!0&&(i.environment=this.environment.toJSON(t).uuid);else if(this.isMesh||this.isLine||this.isPoints){i.geometry=s(t.geometries,this.geometry);let o=this.geometry.parameters;if(o!==void 0&&o.shapes!==void 0){let c=o.shapes;if(Array.isArray(c))for(let l=0,h=c.length;l0){i.children=[];for(let o=0;o0){i.animations=[];for(let o=0;o0&&(n.geometries=o),c.length>0&&(n.materials=c),l.length>0&&(n.textures=l),h.length>0&&(n.images=h),f.length>0&&(n.shapes=f),u.length>0&&(n.skeletons=u),m.length>0&&(n.animations=m),x.length>0&&(n.nodes=x)}return n.object=i,n;function a(o){let c=[];for(let l in o){let h=o[l];delete h.metadata,c.push(h)}return c}}clone(t){return new this.constructor().copy(this,t)}copy(t,e=!0){if(this.name=t.name,this.up.copy(t.up),this.position.copy(t.position),this.rotation.order=t.rotation.order,this.quaternion.copy(t.quaternion),this.scale.copy(t.scale),this.matrix.copy(t.matrix),this.matrixWorld.copy(t.matrixWorld),this.matrixAutoUpdate=t.matrixAutoUpdate,this.matrixWorldNeedsUpdate=t.matrixWorldNeedsUpdate,this.matrixWorldAutoUpdate=t.matrixWorldAutoUpdate,this.layers.mask=t.layers.mask,this.visible=t.visible,this.castShadow=t.castShadow,this.receiveShadow=t.receiveShadow,this.frustumCulled=t.frustumCulled,this.renderOrder=t.renderOrder,this.userData=JSON.parse(JSON.stringify(t.userData)),e===!0)for(let n=0;n0?i.multiplyScalar(1/Math.sqrt(s)):i.set(0,0,0)}static getBarycoord(t,e,n,i,s){ze.subVectors(i,e),tn.subVectors(n,e),mr.subVectors(t,e);let a=ze.dot(ze),o=ze.dot(tn),c=ze.dot(mr),l=tn.dot(tn),h=tn.dot(mr),f=a*l-o*o;if(f===0)return s.set(-2,-1,-1);let u=1/f,m=(l*c-o*h)*u,x=(a*h-o*c)*u;return s.set(1-m-x,x,m)}static containsPoint(t,e,n,i){return this.getBarycoord(t,e,n,i,en),en.x>=0&&en.y>=0&&en.x+en.y<=1}static getUV(t,e,n,i,s,a,o,c){return this.getBarycoord(t,e,n,i,en),c.set(0,0),c.addScaledVector(s,en.x),c.addScaledVector(a,en.y),c.addScaledVector(o,en.z),c}static isFrontFacing(t,e,n,i){return ze.subVectors(n,e),tn.subVectors(t,e),ze.cross(tn).dot(i)<0}set(t,e,n){return this.a.copy(t),this.b.copy(e),this.c.copy(n),this}setFromPointsAndIndices(t,e,n,i){return this.a.copy(t[e]),this.b.copy(t[n]),this.c.copy(t[i]),this}setFromAttributeAndIndices(t,e,n,i){return this.a.fromBufferAttribute(t,e),this.b.fromBufferAttribute(t,n),this.c.fromBufferAttribute(t,i),this}clone(){return new this.constructor().copy(this)}copy(t){return this.a.copy(t.a),this.b.copy(t.b),this.c.copy(t.c),this}getArea(){return ze.subVectors(this.c,this.b),tn.subVectors(this.a,this.b),ze.cross(tn).length()*.5}getMidpoint(t){return t.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}getNormal(t){return ie.getNormal(this.a,this.b,this.c,t)}getPlane(t){return t.setFromCoplanarPoints(this.a,this.b,this.c)}getBarycoord(t,e){return ie.getBarycoord(t,this.a,this.b,this.c,e)}getUV(t,e,n,i,s){return ie.getUV(t,this.a,this.b,this.c,e,n,i,s)}containsPoint(t){return ie.containsPoint(t,this.a,this.b,this.c)}isFrontFacing(t){return ie.isFrontFacing(this.a,this.b,this.c,t)}intersectsBox(t){return t.intersectsTriangle(this)}closestPointToPoint(t,e){let n=this.a,i=this.b,s=this.c,a,o;Zn.subVectors(i,n),Jn.subVectors(s,n),gr.subVectors(t,n);let c=Zn.dot(gr),l=Jn.dot(gr);if(c<=0&&l<=0)return e.copy(n);xr.subVectors(t,i);let h=Zn.dot(xr),f=Jn.dot(xr);if(h>=0&&f<=h)return e.copy(i);let u=c*f-h*l;if(u<=0&&c>=0&&h<=0)return a=c/(c-h),e.copy(n).addScaledVector(Zn,a);_r.subVectors(t,s);let m=Zn.dot(_r),x=Jn.dot(_r);if(x>=0&&m<=x)return e.copy(s);let p=m*l-c*x;if(p<=0&&l>=0&&x<=0)return o=l/(l-x),e.copy(n).addScaledVector(Jn,o);let d=h*x-m*f;if(d<=0&&f-h>=0&&m-x>=0)return va.subVectors(s,i),o=(f-h)/(f-h+(m-x)),e.copy(i).addScaledVector(va,o);let g=1/(d+p+u);return a=p*g,o=u*g,e.copy(n).addScaledVector(Zn,a).addScaledVector(Jn,o)}equals(t){return t.a.equals(this.a)&&t.b.equals(this.b)&&t.c.equals(this.c)}},Nl=0,fi=class extends mn{constructor(){super(),this.isMaterial=!0,Object.defineProperty(this,"id",{value:Nl++}),this.uuid=Gi(),this.name="",this.type="Material",this.blending=ri,this.side=Ue,this.vertexColors=!1,this.opacity=1,this.transparent=!1,this.blendSrc=qa,this.blendDst=Xa,this.blendEquation=ni,this.blendSrcAlpha=null,this.blendDstAlpha=null,this.blendEquationAlpha=null,this.depthFunc=Er,this.depthTest=!0,this.depthWrite=!0,this.stencilWriteMask=255,this.stencilFunc=Sl,this.stencilRef=0,this.stencilFuncMask=255,this.stencilFail=er,this.stencilZFail=er,this.stencilZPass=er,this.stencilWrite=!1,this.clippingPlanes=null,this.clipIntersection=!1,this.clipShadows=!1,this.shadowSide=null,this.colorWrite=!0,this.precision=null,this.polygonOffset=!1,this.polygonOffsetFactor=0,this.polygonOffsetUnits=0,this.dithering=!1,this.alphaToCoverage=!1,this.premultipliedAlpha=!1,this.forceSinglePass=!1,this.visible=!0,this.toneMapped=!0,this.userData={},this.version=0,this._alphaTest=0}get alphaTest(){return this._alphaTest}set alphaTest(t){this._alphaTest>0!=t>0&&this.version++,this._alphaTest=t}onBuild(){}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(t){if(t!==void 0)for(let e in t){let n=t[e];if(n===void 0){console.warn("THREE.Material: \'"+e+"\' parameter is undefined.");continue}let i=this[e];if(i===void 0){console.warn("THREE."+this.type+": \'"+e+"\' is not a property of this material.");continue}i&&i.isColor?i.set(n):i&&i.isVector3&&n&&n.isVector3?i.copy(n):this[e]=n}}toJSON(t){let e=t===void 0||typeof t=="string";e&&(t={textures:{},images:{}});let n={metadata:{version:4.5,type:"Material",generator:"Material.toJSON"}};n.uuid=this.uuid,n.type=this.type,this.name!==""&&(n.name=this.name),this.color&&this.color.isColor&&(n.color=this.color.getHex()),this.roughness!==void 0&&(n.roughness=this.roughness),this.metalness!==void 0&&(n.metalness=this.metalness),this.sheen!==void 0&&(n.sheen=this.sheen),this.sheenColor&&this.sheenColor.isColor&&(n.sheenColor=this.sheenColor.getHex()),this.sheenRoughness!==void 0&&(n.sheenRoughness=this.sheenRoughness),this.emissive&&this.emissive.isColor&&(n.emissive=this.emissive.getHex()),this.emissiveIntensity&&this.emissiveIntensity!==1&&(n.emissiveIntensity=this.emissiveIntensity),this.specular&&this.specular.isColor&&(n.specular=this.specular.getHex()),this.specularIntensity!==void 0&&(n.specularIntensity=this.specularIntensity),this.specularColor&&this.specularColor.isColor&&(n.specularColor=this.specularColor.getHex()),this.shininess!==void 0&&(n.shininess=this.shininess),this.clearcoat!==void 0&&(n.clearcoat=this.clearcoat),this.clearcoatRoughness!==void 0&&(n.clearcoatRoughness=this.clearcoatRoughness),this.clearcoatMap&&this.clearcoatMap.isTexture&&(n.clearcoatMap=this.clearcoatMap.toJSON(t).uuid),this.clearcoatRoughnessMap&&this.clearcoatRoughnessMap.isTexture&&(n.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(t).uuid),this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture&&(n.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(t).uuid,n.clearcoatNormalScale=this.clearcoatNormalScale.toArray()),this.iridescence!==void 0&&(n.iridescence=this.iridescence),this.iridescenceIOR!==void 0&&(n.iridescenceIOR=this.iridescenceIOR),this.iridescenceThicknessRange!==void 0&&(n.iridescenceThicknessRange=this.iridescenceThicknessRange),this.iridescenceMap&&this.iridescenceMap.isTexture&&(n.iridescenceMap=this.iridescenceMap.toJSON(t).uuid),this.iridescenceThicknessMap&&this.iridescenceThicknessMap.isTexture&&(n.iridescenceThicknessMap=this.iridescenceThicknessMap.toJSON(t).uuid),this.map&&this.map.isTexture&&(n.map=this.map.toJSON(t).uuid),this.matcap&&this.matcap.isTexture&&(n.matcap=this.matcap.toJSON(t).uuid),this.alphaMap&&this.alphaMap.isTexture&&(n.alphaMap=this.alphaMap.toJSON(t).uuid),this.lightMap&&this.lightMap.isTexture&&(n.lightMap=this.lightMap.toJSON(t).uuid,n.lightMapIntensity=this.lightMapIntensity),this.aoMap&&this.aoMap.isTexture&&(n.aoMap=this.aoMap.toJSON(t).uuid,n.aoMapIntensity=this.aoMapIntensity),this.bumpMap&&this.bumpMap.isTexture&&(n.bumpMap=this.bumpMap.toJSON(t).uuid,n.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(n.normalMap=this.normalMap.toJSON(t).uuid,n.normalMapType=this.normalMapType,n.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(n.displacementMap=this.displacementMap.toJSON(t).uuid,n.displacementScale=this.displacementScale,n.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(n.roughnessMap=this.roughnessMap.toJSON(t).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(n.metalnessMap=this.metalnessMap.toJSON(t).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(n.emissiveMap=this.emissiveMap.toJSON(t).uuid),this.specularMap&&this.specularMap.isTexture&&(n.specularMap=this.specularMap.toJSON(t).uuid),this.specularIntensityMap&&this.specularIntensityMap.isTexture&&(n.specularIntensityMap=this.specularIntensityMap.toJSON(t).uuid),this.specularColorMap&&this.specularColorMap.isTexture&&(n.specularColorMap=this.specularColorMap.toJSON(t).uuid),this.envMap&&this.envMap.isTexture&&(n.envMap=this.envMap.toJSON(t).uuid,this.combine!==void 0&&(n.combine=this.combine)),this.envMapIntensity!==void 0&&(n.envMapIntensity=this.envMapIntensity),this.reflectivity!==void 0&&(n.reflectivity=this.reflectivity),this.refractionRatio!==void 0&&(n.refractionRatio=this.refractionRatio),this.gradientMap&&this.gradientMap.isTexture&&(n.gradientMap=this.gradientMap.toJSON(t).uuid),this.transmission!==void 0&&(n.transmission=this.transmission),this.transmissionMap&&this.transmissionMap.isTexture&&(n.transmissionMap=this.transmissionMap.toJSON(t).uuid),this.thickness!==void 0&&(n.thickness=this.thickness),this.thicknessMap&&this.thicknessMap.isTexture&&(n.thicknessMap=this.thicknessMap.toJSON(t).uuid),this.attenuationDistance!==void 0&&this.attenuationDistance!==1/0&&(n.attenuationDistance=this.attenuationDistance),this.attenuationColor!==void 0&&(n.attenuationColor=this.attenuationColor.getHex()),this.size!==void 0&&(n.size=this.size),this.shadowSide!==null&&(n.shadowSide=this.shadowSide),this.sizeAttenuation!==void 0&&(n.sizeAttenuation=this.sizeAttenuation),this.blending!==ri&&(n.blending=this.blending),this.side!==Ue&&(n.side=this.side),this.vertexColors&&(n.vertexColors=!0),this.opacity<1&&(n.opacity=this.opacity),this.transparent===!0&&(n.transparent=this.transparent),n.depthFunc=this.depthFunc,n.depthTest=this.depthTest,n.depthWrite=this.depthWrite,n.colorWrite=this.colorWrite,n.stencilWrite=this.stencilWrite,n.stencilWriteMask=this.stencilWriteMask,n.stencilFunc=this.stencilFunc,n.stencilRef=this.stencilRef,n.stencilFuncMask=this.stencilFuncMask,n.stencilFail=this.stencilFail,n.stencilZFail=this.stencilZFail,n.stencilZPass=this.stencilZPass,this.rotation!==void 0&&this.rotation!==0&&(n.rotation=this.rotation),this.polygonOffset===!0&&(n.polygonOffset=!0),this.polygonOffsetFactor!==0&&(n.polygonOffsetFactor=this.polygonOffsetFactor),this.polygonOffsetUnits!==0&&(n.polygonOffsetUnits=this.polygonOffsetUnits),this.linewidth!==void 0&&this.linewidth!==1&&(n.linewidth=this.linewidth),this.dashSize!==void 0&&(n.dashSize=this.dashSize),this.gapSize!==void 0&&(n.gapSize=this.gapSize),this.scale!==void 0&&(n.scale=this.scale),this.dithering===!0&&(n.dithering=!0),this.alphaTest>0&&(n.alphaTest=this.alphaTest),this.alphaToCoverage===!0&&(n.alphaToCoverage=this.alphaToCoverage),this.premultipliedAlpha===!0&&(n.premultipliedAlpha=this.premultipliedAlpha),this.forceSinglePass===!0&&(n.forceSinglePass=this.forceSinglePass),this.wireframe===!0&&(n.wireframe=this.wireframe),this.wireframeLinewidth>1&&(n.wireframeLinewidth=this.wireframeLinewidth),this.wireframeLinecap!=="round"&&(n.wireframeLinecap=this.wireframeLinecap),this.wireframeLinejoin!=="round"&&(n.wireframeLinejoin=this.wireframeLinejoin),this.flatShading===!0&&(n.flatShading=this.flatShading),this.visible===!1&&(n.visible=!1),this.toneMapped===!1&&(n.toneMapped=!1),this.fog===!1&&(n.fog=!1),Object.keys(this.userData).length>0&&(n.userData=this.userData);function i(s){let a=[];for(let o in s){let c=s[o];delete c.metadata,a.push(c)}return a}if(e){let s=i(t.textures),a=i(t.images);s.length>0&&(n.textures=s),a.length>0&&(n.images=a)}return n}clone(){return new this.constructor().copy(this)}copy(t){this.name=t.name,this.blending=t.blending,this.side=t.side,this.vertexColors=t.vertexColors,this.opacity=t.opacity,this.transparent=t.transparent,this.blendSrc=t.blendSrc,this.blendDst=t.blendDst,this.blendEquation=t.blendEquation,this.blendSrcAlpha=t.blendSrcAlpha,this.blendDstAlpha=t.blendDstAlpha,this.blendEquationAlpha=t.blendEquationAlpha,this.depthFunc=t.depthFunc,this.depthTest=t.depthTest,this.depthWrite=t.depthWrite,this.stencilWriteMask=t.stencilWriteMask,this.stencilFunc=t.stencilFunc,this.stencilRef=t.stencilRef,this.stencilFuncMask=t.stencilFuncMask,this.stencilFail=t.stencilFail,this.stencilZFail=t.stencilZFail,this.stencilZPass=t.stencilZPass,this.stencilWrite=t.stencilWrite;let e=t.clippingPlanes,n=null;if(e!==null){let i=e.length;n=new Array(i);for(let s=0;s!==i;++s)n[s]=e[s].clone()}return this.clippingPlanes=n,this.clipIntersection=t.clipIntersection,this.clipShadows=t.clipShadows,this.shadowSide=t.shadowSide,this.colorWrite=t.colorWrite,this.precision=t.precision,this.polygonOffset=t.polygonOffset,this.polygonOffsetFactor=t.polygonOffsetFactor,this.polygonOffsetUnits=t.polygonOffsetUnits,this.dithering=t.dithering,this.alphaTest=t.alphaTest,this.alphaToCoverage=t.alphaToCoverage,this.premultipliedAlpha=t.premultipliedAlpha,this.forceSinglePass=t.forceSinglePass,this.visible=t.visible,this.toneMapped=t.toneMapped,this.userData=JSON.parse(JSON.stringify(t.userData)),this}dispose(){this.dispatchEvent({type:"dispose"})}set needsUpdate(t){t===!0&&this.version++}},Ss=class extends fi{constructor(t){super(),this.isMeshBasicMaterial=!0,this.type="MeshBasicMaterial",this.color=new Bt(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.combine=Ya,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(t)}copy(t){return super.copy(t),this.color.copy(t.color),this.map=t.map,this.lightMap=t.lightMap,this.lightMapIntensity=t.lightMapIntensity,this.aoMap=t.aoMap,this.aoMapIntensity=t.aoMapIntensity,this.specularMap=t.specularMap,this.alphaMap=t.alphaMap,this.envMap=t.envMap,this.combine=t.combine,this.reflectivity=t.reflectivity,this.refractionRatio=t.refractionRatio,this.wireframe=t.wireframe,this.wireframeLinewidth=t.wireframeLinewidth,this.wireframeLinecap=t.wireframeLinecap,this.wireframeLinejoin=t.wireframeLinejoin,this.fog=t.fog,this}},Ht=new R,ss=new At,Yt=class{constructor(t,e,n=!1){if(Array.isArray(t))throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.isBufferAttribute=!0,this.name="",this.array=t,this.itemSize=e,this.count=t!==void 0?t.length/e:0,this.normalized=n,this.usage=ca,this.updateRange={offset:0,count:-1},this.version=0}onUploadCallback(){}set needsUpdate(t){t===!0&&this.version++}setUsage(t){return this.usage=t,this}copy(t){return this.name=t.name,this.array=new t.array.constructor(t.array),this.itemSize=t.itemSize,this.count=t.count,this.normalized=t.normalized,this.usage=t.usage,this}copyAt(t,e,n){t*=this.itemSize,n*=e.itemSize;for(let i=0,s=this.itemSize;i0&&(t.userData=this.userData),this.parameters!==void 0){let c=this.parameters;for(let l in c)c[l]!==void 0&&(t[l]=c[l]);return t}t.data={attributes:{}};let e=this.index;e!==null&&(t.data.index={type:e.array.constructor.name,array:Array.prototype.slice.call(e.array)});let n=this.attributes;for(let c in n){let l=n[c];t.data.attributes[c]=l.toJSON(t.data)}let i={},s=!1;for(let c in this.morphAttributes){let l=this.morphAttributes[c],h=[];for(let f=0,u=l.length;f0&&(i[c]=h,s=!0)}s&&(t.data.morphAttributes=i,t.data.morphTargetsRelative=this.morphTargetsRelative);let a=this.groups;a.length>0&&(t.data.groups=JSON.parse(JSON.stringify(a)));let o=this.boundingSphere;return o!==null&&(t.data.boundingSphere={center:o.center.toArray(),radius:o.radius}),t}clone(){return new this.constructor().copy(this)}copy(t){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;let e={};this.name=t.name;let n=t.index;n!==null&&this.setIndex(n.clone(e));let i=t.attributes;for(let l in i){let h=i[l];this.setAttribute(l,h.clone(e))}let s=t.morphAttributes;for(let l in s){let h=[],f=s[l];for(let u=0,m=f.length;u0){let i=e[n[0]];if(i!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let s=0,a=i.length;se.far?null:{distance:l,point:ls.clone(),object:r}}function hs(r,t,e,n,i,s,a,o,c){r.getVertexPosition(a,Li),r.getVertexPosition(o,Ii),r.getVertexPosition(c,Di);let l=zl(r,t,e,n,Li,Ii,Di,br);if(l){i&&(os.fromBufferAttribute(i,a),as.fromBufferAttribute(i,o),cs.fromBufferAttribute(i,c),l.uv=ie.getUV(br,Li,Ii,Di,os,as,cs,new At)),s&&(os.fromBufferAttribute(s,a),as.fromBufferAttribute(s,o),cs.fromBufferAttribute(s,c),l.uv2=ie.getUV(br,Li,Ii,Di,os,as,cs,new At));let h={a,b:o,c,normal:new R,materialIndex:0};ie.getNormal(Li,Ii,Di,h.normal),l.face=h}return l}var zn=class extends ke{constructor(t=1,e=1,n=1,i=1,s=1,a=1){super(),this.type="BoxGeometry",this.parameters={width:t,height:e,depth:n,widthSegments:i,heightSegments:s,depthSegments:a};let o=this;i=Math.floor(i),s=Math.floor(s),a=Math.floor(a);let c=[],l=[],h=[],f=[],u=0,m=0;x("z","y","x",-1,-1,n,e,t,a,s,0),x("z","y","x",1,-1,n,e,-t,a,s,1),x("x","z","y",1,1,t,n,e,i,a,2),x("x","z","y",1,-1,t,n,-e,i,a,3),x("x","y","z",1,-1,t,e,n,i,s,4),x("x","y","z",-1,-1,t,e,-n,i,s,5),this.setIndex(c),this.setAttribute("position",new sn(l,3)),this.setAttribute("normal",new sn(h,3)),this.setAttribute("uv",new sn(f,2));function x(p,d,g,M,_,v,b,A,C,y,S){let P=v/C,O=b/y,B=v/2,D=b/2,I=A/2,k=C+1,Y=y+1,Z=0,H=0,$=new R;for(let J=0;J0?1:-1,h.push($.x,$.y,$.z),f.push(z/C),f.push(1-J/y),Z+=1}}for(let J=0;J0&&(e.defines=this.defines),e.vertexShader=this.vertexShader,e.fragmentShader=this.fragmentShader;let n={};for(let i in this.extensions)this.extensions[i]===!0&&(n[i]=!0);return Object.keys(n).length>0&&(e.extensions=n),e}},Es=class extends pe{constructor(){super(),this.isCamera=!0,this.type="Camera",this.matrixWorldInverse=new zt,this.projectionMatrix=new zt,this.projectionMatrixInverse=new zt}copy(t,e){return super.copy(t,e),this.matrixWorldInverse.copy(t.matrixWorldInverse),this.projectionMatrix.copy(t.projectionMatrix),this.projectionMatrixInverse.copy(t.projectionMatrixInverse),this}getWorldDirection(t){this.updateWorldMatrix(!0,!1);let e=this.matrixWorld.elements;return t.set(-e[8],-e[9],-e[10]).normalize()}updateMatrixWorld(t){super.updateMatrixWorld(t),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(t,e){super.updateWorldMatrix(t,e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}clone(){return new this.constructor().copy(this)}},Se=class extends Es{constructor(t=50,e=1,n=.1,i=2e3){super(),this.isPerspectiveCamera=!0,this.type="PerspectiveCamera",this.fov=t,this.zoom=1,this.near=n,this.far=i,this.focus=10,this.aspect=e,this.view=null,this.filmGauge=35,this.filmOffset=0,this.updateProjectionMatrix()}copy(t,e){return super.copy(t,e),this.fov=t.fov,this.zoom=t.zoom,this.near=t.near,this.far=t.far,this.focus=t.focus,this.aspect=t.aspect,this.view=t.view===null?null:Object.assign({},t.view),this.filmGauge=t.filmGauge,this.filmOffset=t.filmOffset,this}setFocalLength(t){let e=.5*this.getFilmHeight()/t;this.fov=ha*2*Math.atan(e),this.updateProjectionMatrix()}getFocalLength(){let t=Math.tan(nr*.5*this.fov);return .5*this.getFilmHeight()/t}getEffectiveFOV(){return ha*2*Math.atan(Math.tan(nr*.5*this.fov)/this.zoom)}getFilmWidth(){return this.filmGauge*Math.min(this.aspect,1)}getFilmHeight(){return this.filmGauge/Math.max(this.aspect,1)}setViewOffset(t,e,n,i,s,a){this.aspect=t/e,this.view===null&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=t,this.view.fullHeight=e,this.view.offsetX=n,this.view.offsetY=i,this.view.width=s,this.view.height=a,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){let t=this.near,e=t*Math.tan(nr*.5*this.fov)/this.zoom,n=2*e,i=this.aspect*n,s=-.5*i,a=this.view;if(this.view!==null&&this.view.enabled){let c=a.fullWidth,l=a.fullHeight;s+=a.offsetX*i/c,e-=a.offsetY*n/l,i*=a.width/c,n*=a.height/l}let o=this.filmOffset;o!==0&&(s+=t*o/this.getFilmWidth()),this.projectionMatrix.makePerspective(s,s+i,e,e-n,t,this.far),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(t){let e=super.toJSON(t);return e.object.fov=this.fov,e.object.zoom=this.zoom,e.object.near=this.near,e.object.far=this.far,e.object.focus=this.focus,e.object.aspect=this.aspect,this.view!==null&&(e.object.view=Object.assign({},this.view)),e.object.filmGauge=this.filmGauge,e.object.filmOffset=this.filmOffset,e}},jn=-90,Qn=1,zr=class extends pe{constructor(t,e,n){super(),this.type="CubeCamera",this.renderTarget=n;let i=new Se(jn,Qn,t,e);i.layers=this.layers,i.up.set(0,1,0),i.lookAt(1,0,0),this.add(i);let s=new Se(jn,Qn,t,e);s.layers=this.layers,s.up.set(0,1,0),s.lookAt(-1,0,0),this.add(s);let a=new Se(jn,Qn,t,e);a.layers=this.layers,a.up.set(0,0,-1),a.lookAt(0,1,0),this.add(a);let o=new Se(jn,Qn,t,e);o.layers=this.layers,o.up.set(0,0,1),o.lookAt(0,-1,0),this.add(o);let c=new Se(jn,Qn,t,e);c.layers=this.layers,c.up.set(0,1,0),c.lookAt(0,0,1),this.add(c);let l=new Se(jn,Qn,t,e);l.layers=this.layers,l.up.set(0,1,0),l.lookAt(0,0,-1),this.add(l)}update(t,e){this.parent===null&&this.updateMatrixWorld();let n=this.renderTarget,[i,s,a,o,c,l]=this.children,h=t.getRenderTarget(),f=t.toneMapping,u=t.xr.enabled;t.toneMapping=nn,t.xr.enabled=!1;let m=n.texture.generateMipmaps;n.texture.generateMipmaps=!1,t.setRenderTarget(n,0),t.render(e,i),t.setRenderTarget(n,1),t.render(e,s),t.setRenderTarget(n,2),t.render(e,a),t.setRenderTarget(n,3),t.render(e,o),t.setRenderTarget(n,4),t.render(e,c),n.texture.generateMipmaps=m,t.setRenderTarget(n,5),t.render(e,l),t.setRenderTarget(h),t.toneMapping=f,t.xr.enabled=u,n.texture.needsPMREMUpdate=!0}},Cs=class extends ue{constructor(t,e,n,i,s,a,o,c,l,h){t=t!==void 0?t:[],e=e!==void 0?e:ci,super(t,e,n,i,s,a,o,c,l,h),this.isCubeTexture=!0,this.flipY=!1}get images(){return this.image}set images(t){this.image=t}},Or=class extends rn{constructor(t=1,e={}){super(t,t,e),this.isWebGLCubeRenderTarget=!0;let n={width:t,height:t,depth:1},i=[n,n,n,n,n,n];this.texture=new Cs(i,e.mapping,e.wrapS,e.wrapT,e.magFilter,e.minFilter,e.format,e.type,e.anisotropy,e.encoding),this.texture.isRenderTargetTexture=!0,this.texture.generateMipmaps=e.generateMipmaps!==void 0?e.generateMipmaps:!1,this.texture.minFilter=e.minFilter!==void 0?e.minFilter:Re}fromEquirectangularTexture(t,e){this.texture.type=e.type,this.texture.encoding=e.encoding,this.texture.generateMipmaps=e.generateMipmaps,this.texture.minFilter=e.minFilter,this.texture.magFilter=e.magFilter;let n={uniforms:{tEquirect:{value:null}},vertexShader:`\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\tvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\n\t\t\t\t\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n\n\t\t\t\t}\n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvWorldDirection = transformDirection( position, modelMatrix );\n\n\t\t\t\t\t#include \n\t\t\t\t\t#include \n\n\t\t\t\t}\n\t\t\t`,fragmentShader:`\n\n\t\t\t\tuniform sampler2D tEquirect;\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\t#include \n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvec3 direction = normalize( vWorldDirection );\n\n\t\t\t\t\tvec2 sampleUV = equirectUv( direction );\n\n\t\t\t\t\tgl_FragColor = texture2D( tEquirect, sampleUV );\n\n\t\t\t\t}\n\t\t\t`},i=new zn(5,5,5),s=new on({name:"CubemapFromEquirect",uniforms:di(n.uniforms),vertexShader:n.vertexShader,fragmentShader:n.fragmentShader,side:he,blending:pn});s.uniforms.tEquirect.value=e;let a=new qe(i,s),o=e.minFilter;return e.minFilter===Oi&&(e.minFilter=Re),new zr(1,10,this).update(t,a),e.minFilter=o,a.geometry.dispose(),a.material.dispose(),this}clear(t,e,n,i){let s=t.getRenderTarget();for(let a=0;a<6;a++)t.setRenderTarget(this,a),t.clear(e,n,i);t.setRenderTarget(s)}},wr=new R,Vl=new R,Gl=new le,Te=class{constructor(t=new R(1,0,0),e=0){this.isPlane=!0,this.normal=t,this.constant=e}set(t,e){return this.normal.copy(t),this.constant=e,this}setComponents(t,e,n,i){return this.normal.set(t,e,n),this.constant=i,this}setFromNormalAndCoplanarPoint(t,e){return this.normal.copy(t),this.constant=-e.dot(this.normal),this}setFromCoplanarPoints(t,e,n){let i=wr.subVectors(n,e).cross(Vl.subVectors(t,e)).normalize();return this.setFromNormalAndCoplanarPoint(i,t),this}copy(t){return this.normal.copy(t.normal),this.constant=t.constant,this}normalize(){let t=1/this.normal.length();return this.normal.multiplyScalar(t),this.constant*=t,this}negate(){return this.constant*=-1,this.normal.negate(),this}distanceToPoint(t){return this.normal.dot(t)+this.constant}distanceToSphere(t){return this.distanceToPoint(t.center)-t.radius}projectPoint(t,e){return e.copy(this.normal).multiplyScalar(-this.distanceToPoint(t)).add(t)}intersectLine(t,e){let n=t.delta(wr),i=this.normal.dot(n);if(i===0)return this.distanceToPoint(t.start)===0?e.copy(t.start):null;let s=-(t.start.dot(this.normal)+this.constant)/i;return s<0||s>1?null:e.copy(n).multiplyScalar(s).add(t.start)}intersectsLine(t){let e=this.distanceToPoint(t.start),n=this.distanceToPoint(t.end);return e<0&&n>0||n<0&&e>0}intersectsBox(t){return t.intersectsPlane(this)}intersectsSphere(t){return t.intersectsPlane(this)}coplanarPoint(t){return t.copy(this.normal).multiplyScalar(-this.constant)}applyMatrix4(t,e){let n=e||Gl.getNormalMatrix(t),i=this.coplanarPoint(wr).applyMatrix4(t),s=this.normal.applyMatrix3(n).normalize();return this.constant=-i.dot(s),this}translate(t){return this.constant-=t.dot(this.normal),this}equals(t){return t.normal.equals(this.normal)&&t.constant===this.constant}clone(){return new this.constructor().copy(this)}},ti=new Fn,us=new R,Ps=class{constructor(t=new Te,e=new Te,n=new Te,i=new Te,s=new Te,a=new Te){this.planes=[t,e,n,i,s,a]}set(t,e,n,i,s,a){let o=this.planes;return o[0].copy(t),o[1].copy(e),o[2].copy(n),o[3].copy(i),o[4].copy(s),o[5].copy(a),this}copy(t){let e=this.planes;for(let n=0;n<6;n++)e[n].copy(t.planes[n]);return this}setFromProjectionMatrix(t){let e=this.planes,n=t.elements,i=n[0],s=n[1],a=n[2],o=n[3],c=n[4],l=n[5],h=n[6],f=n[7],u=n[8],m=n[9],x=n[10],p=n[11],d=n[12],g=n[13],M=n[14],_=n[15];return e[0].setComponents(o-i,f-c,p-u,_-d).normalize(),e[1].setComponents(o+i,f+c,p+u,_+d).normalize(),e[2].setComponents(o+s,f+l,p+m,_+g).normalize(),e[3].setComponents(o-s,f-l,p-m,_-g).normalize(),e[4].setComponents(o-a,f-h,p-x,_-M).normalize(),e[5].setComponents(o+a,f+h,p+x,_+M).normalize(),this}intersectsObject(t){let e=t.geometry;return e.boundingSphere===null&&e.computeBoundingSphere(),ti.copy(e.boundingSphere).applyMatrix4(t.matrixWorld),this.intersectsSphere(ti)}intersectsSprite(t){return ti.center.set(0,0,0),ti.radius=.7071067811865476,ti.applyMatrix4(t.matrixWorld),this.intersectsSphere(ti)}intersectsSphere(t){let e=this.planes,n=t.center,i=-t.radius;for(let s=0;s<6;s++)if(e[s].distanceToPoint(n)0?t.max.x:t.min.x,us.y=i.normal.y>0?t.max.y:t.min.y,us.z=i.normal.z>0?t.max.z:t.min.z,i.distanceToPoint(us)<0)return!1}return!0}containsPoint(t){let e=this.planes;for(let n=0;n<6;n++)if(e[n].distanceToPoint(t)<0)return!1;return!0}clone(){return new this.constructor().copy(this)}};function Qa(){let r=null,t=!1,e=null,n=null;function i(s,a){e(s,a),n=r.requestAnimationFrame(i)}return{start:function(){t!==!0&&e!==null&&(n=r.requestAnimationFrame(i),t=!0)},stop:function(){r.cancelAnimationFrame(n),t=!1},setAnimationLoop:function(s){e=s},setContext:function(s){r=s}}}function Hl(r,t){let e=t.isWebGL2,n=new WeakMap;function i(l,h){let f=l.array,u=l.usage,m=r.createBuffer();r.bindBuffer(h,m),r.bufferData(h,f,u),l.onUploadCallback();let x;if(f instanceof Float32Array)x=5126;else if(f instanceof Uint16Array)if(l.isFloat16BufferAttribute)if(e)x=5131;else throw new Error("THREE.WebGLAttributes: Usage of Float16BufferAttribute requires WebGL2.");else x=5123;else if(f instanceof Int16Array)x=5122;else if(f instanceof Uint32Array)x=5125;else if(f instanceof Int32Array)x=5124;else if(f instanceof Int8Array)x=5120;else if(f instanceof Uint8Array)x=5121;else if(f instanceof Uint8ClampedArray)x=5121;else throw new Error("THREE.WebGLAttributes: Unsupported buffer data format: "+f);return{buffer:m,type:x,bytesPerElement:f.BYTES_PER_ELEMENT,version:l.version}}function s(l,h,f){let u=h.array,m=h.updateRange;r.bindBuffer(f,l),m.count===-1?r.bufferSubData(f,0,u):(e?r.bufferSubData(f,m.offset*u.BYTES_PER_ELEMENT,u,m.offset,m.count):r.bufferSubData(f,m.offset*u.BYTES_PER_ELEMENT,u.subarray(m.offset,m.offset+m.count)),m.count=-1),h.onUploadCallback()}function a(l){return l.isInterleavedBufferAttribute&&(l=l.data),n.get(l)}function o(l){l.isInterleavedBufferAttribute&&(l=l.data);let h=n.get(l);h&&(r.deleteBuffer(h.buffer),n.delete(l))}function c(l,h){if(l.isGLBufferAttribute){let u=n.get(l);(!u||u.version 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v;\n\treturn cross( v1, v2 ) * theta_sintheta;\n}\nvec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) {\n\tvec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ];\n\tvec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ];\n\tvec3 lightNormal = cross( v1, v2 );\n\tif( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 );\n\tvec3 T1, T2;\n\tT1 = normalize( V - N * dot( V, N ) );\n\tT2 = - cross( N, T1 );\n\tmat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) );\n\tvec3 coords[ 4 ];\n\tcoords[ 0 ] = mat * ( rectCoords[ 0 ] - P );\n\tcoords[ 1 ] = mat * ( rectCoords[ 1 ] - P );\n\tcoords[ 2 ] = mat * ( rectCoords[ 2 ] - P );\n\tcoords[ 3 ] = mat * ( rectCoords[ 3 ] - P );\n\tcoords[ 0 ] = normalize( coords[ 0 ] );\n\tcoords[ 1 ] = normalize( coords[ 1 ] );\n\tcoords[ 2 ] = normalize( coords[ 2 ] );\n\tcoords[ 3 ] = normalize( coords[ 3 ] );\n\tvec3 vectorFormFactor = vec3( 0.0 );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );\n\tfloat result = LTC_ClippedSphereFormFactor( vectorFormFactor );\n\treturn vec3( result );\n}\nfloat G_BlinnPhong_Implicit( ) {\n\treturn 0.25;\n}\nfloat D_BlinnPhong( const in float shininess, const in float dotNH ) {\n\treturn RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess );\n}\nvec3 BRDF_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float shininess ) {\n\tvec3 halfDir = normalize( lightDir + viewDir );\n\tfloat dotNH = saturate( dot( normal, halfDir ) );\n\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\n\tvec3 F = F_Schlick( specularColor, 1.0, dotVH );\n\tfloat G = G_BlinnPhong_Implicit( );\n\tfloat D = D_BlinnPhong( shininess, dotNH );\n\treturn F * ( G * D );\n}\n#if defined( USE_SHEEN )\nfloat D_Charlie( float roughness, float dotNH ) {\n\tfloat alpha = pow2( roughness );\n\tfloat invAlpha = 1.0 / alpha;\n\tfloat cos2h = dotNH * dotNH;\n\tfloat sin2h = max( 1.0 - cos2h, 0.0078125 );\n\treturn ( 2.0 + invAlpha ) * pow( sin2h, invAlpha * 0.5 ) / ( 2.0 * PI );\n}\nfloat V_Neubelt( float dotNV, float dotNL ) {\n\treturn saturate( 1.0 / ( 4.0 * ( dotNL + dotNV - dotNL * dotNV ) ) );\n}\nvec3 BRDF_Sheen( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, vec3 sheenColor, const in float sheenRoughness ) {\n\tvec3 halfDir = normalize( lightDir + viewDir );\n\tfloat dotNL = saturate( dot( normal, lightDir ) );\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\tfloat dotNH = saturate( dot( normal, halfDir ) );\n\tfloat D = D_Charlie( sheenRoughness, dotNH );\n\tfloat V = V_Neubelt( dotNV, dotNL );\n\treturn sheenColor * ( D * V );\n}\n#endif`,Ql=`#ifdef USE_IRIDESCENCE\n\tconst mat3 XYZ_TO_REC709 = mat3(\n\t\t 3.2404542, -0.9692660, 0.0556434,\n\t\t-1.5371385, 1.8760108, -0.2040259,\n\t\t-0.4985314, 0.0415560, 1.0572252\n\t);\n\tvec3 Fresnel0ToIor( vec3 fresnel0 ) {\n\t\tvec3 sqrtF0 = sqrt( fresnel0 );\n\t\treturn ( vec3( 1.0 ) + sqrtF0 ) / ( vec3( 1.0 ) - sqrtF0 );\n\t}\n\tvec3 IorToFresnel0( vec3 transmittedIor, float incidentIor ) {\n\t\treturn pow2( ( transmittedIor - vec3( incidentIor ) ) / ( transmittedIor + vec3( incidentIor ) ) );\n\t}\n\tfloat IorToFresnel0( float transmittedIor, float incidentIor ) {\n\t\treturn pow2( ( transmittedIor - incidentIor ) / ( transmittedIor + incidentIor ));\n\t}\n\tvec3 evalSensitivity( float OPD, vec3 shift ) {\n\t\tfloat phase = 2.0 * PI * OPD * 1.0e-9;\n\t\tvec3 val = vec3( 5.4856e-13, 4.4201e-13, 5.2481e-13 );\n\t\tvec3 pos = vec3( 1.6810e+06, 1.7953e+06, 2.2084e+06 );\n\t\tvec3 var = vec3( 4.3278e+09, 9.3046e+09, 6.6121e+09 );\n\t\tvec3 xyz = val * sqrt( 2.0 * PI * var ) * cos( pos * phase + shift ) * exp( - pow2( phase ) * var );\n\t\txyz.x += 9.7470e-14 * sqrt( 2.0 * PI * 4.5282e+09 ) * cos( 2.2399e+06 * phase + shift[ 0 ] ) * exp( - 4.5282e+09 * pow2( phase ) );\n\t\txyz /= 1.0685e-7;\n\t\tvec3 rgb = XYZ_TO_REC709 * xyz;\n\t\treturn rgb;\n\t}\n\tvec3 evalIridescence( float outsideIOR, float eta2, float cosTheta1, float thinFilmThickness, vec3 baseF0 ) {\n\t\tvec3 I;\n\t\tfloat iridescenceIOR = mix( outsideIOR, eta2, smoothstep( 0.0, 0.03, thinFilmThickness ) );\n\t\tfloat sinTheta2Sq = pow2( outsideIOR / iridescenceIOR ) * ( 1.0 - pow2( cosTheta1 ) );\n\t\tfloat cosTheta2Sq = 1.0 - sinTheta2Sq;\n\t\tif ( cosTheta2Sq < 0.0 ) {\n\t\t\t return vec3( 1.0 );\n\t\t}\n\t\tfloat cosTheta2 = sqrt( cosTheta2Sq );\n\t\tfloat R0 = IorToFresnel0( iridescenceIOR, outsideIOR );\n\t\tfloat R12 = F_Schlick( R0, 1.0, cosTheta1 );\n\t\tfloat R21 = R12;\n\t\tfloat T121 = 1.0 - R12;\n\t\tfloat phi12 = 0.0;\n\t\tif ( iridescenceIOR < outsideIOR ) phi12 = PI;\n\t\tfloat phi21 = PI - phi12;\n\t\tvec3 baseIOR = Fresnel0ToIor( clamp( baseF0, 0.0, 0.9999 ) );\t\tvec3 R1 = IorToFresnel0( baseIOR, iridescenceIOR );\n\t\tvec3 R23 = F_Schlick( R1, 1.0, cosTheta2 );\n\t\tvec3 phi23 = vec3( 0.0 );\n\t\tif ( baseIOR[ 0 ] < iridescenceIOR ) phi23[ 0 ] = PI;\n\t\tif ( baseIOR[ 1 ] < iridescenceIOR ) phi23[ 1 ] = PI;\n\t\tif ( baseIOR[ 2 ] < iridescenceIOR ) phi23[ 2 ] = PI;\n\t\tfloat OPD = 2.0 * iridescenceIOR * thinFilmThickness * cosTheta2;\n\t\tvec3 phi = vec3( phi21 ) + phi23;\n\t\tvec3 R123 = clamp( R12 * R23, 1e-5, 0.9999 );\n\t\tvec3 r123 = sqrt( R123 );\n\t\tvec3 Rs = pow2( T121 ) * R23 / ( vec3( 1.0 ) - R123 );\n\t\tvec3 C0 = R12 + Rs;\n\t\tI = C0;\n\t\tvec3 Cm = Rs - T121;\n\t\tfor ( int m = 1; m <= 2; ++ m ) {\n\t\t\tCm *= r123;\n\t\t\tvec3 Sm = 2.0 * evalSensitivity( float( m ) * OPD, float( m ) * phi );\n\t\t\tI += Cm * Sm;\n\t\t}\n\t\treturn max( I, vec3( 0.0 ) );\n\t}\n#endif`,th=`#ifdef USE_BUMPMAP\n\tuniform sampler2D bumpMap;\n\tuniform float bumpScale;\n\tvec2 dHdxy_fwd() {\n\t\tvec2 dSTdx = dFdx( vUv );\n\t\tvec2 dSTdy = dFdy( vUv );\n\t\tfloat Hll = bumpScale * texture2D( bumpMap, vUv ).x;\n\t\tfloat dBx = bumpScale * texture2D( bumpMap, vUv + dSTdx ).x - Hll;\n\t\tfloat dBy = bumpScale * texture2D( bumpMap, vUv + dSTdy ).x - Hll;\n\t\treturn vec2( dBx, dBy );\n\t}\n\tvec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy, float faceDirection ) {\n\t\tvec3 vSigmaX = dFdx( surf_pos.xyz );\n\t\tvec3 vSigmaY = dFdy( surf_pos.xyz );\n\t\tvec3 vN = surf_norm;\n\t\tvec3 R1 = cross( vSigmaY, vN );\n\t\tvec3 R2 = cross( vN, vSigmaX );\n\t\tfloat fDet = dot( vSigmaX, R1 ) * faceDirection;\n\t\tvec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );\n\t\treturn normalize( abs( fDet ) * surf_norm - vGrad );\n\t}\n#endif`,eh=`#if NUM_CLIPPING_PLANES > 0\n\tvec4 plane;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\n\t\tplane = clippingPlanes[ i ];\n\t\tif ( dot( vClipPosition, plane.xyz ) > plane.w ) discard;\n\t}\n\t#pragma unroll_loop_end\n\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\n\t\tbool clipped = true;\n\t\t#pragma unroll_loop_start\n\t\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\n\t\t\tplane = clippingPlanes[ i ];\n\t\t\tclipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped;\n\t\t}\n\t\t#pragma unroll_loop_end\n\t\tif ( clipped ) discard;\n\t#endif\n#endif`,nh=`#if NUM_CLIPPING_PLANES > 0\n\tvarying vec3 vClipPosition;\n\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\n#endif`,ih=`#if NUM_CLIPPING_PLANES > 0\n\tvarying vec3 vClipPosition;\n#endif`,sh=`#if NUM_CLIPPING_PLANES > 0\n\tvClipPosition = - mvPosition.xyz;\n#endif`,rh=`#if defined( USE_COLOR_ALPHA )\n\tdiffuseColor *= vColor;\n#elif defined( USE_COLOR )\n\tdiffuseColor.rgb *= vColor;\n#endif`,oh=`#if defined( USE_COLOR_ALPHA )\n\tvarying vec4 vColor;\n#elif defined( USE_COLOR )\n\tvarying vec3 vColor;\n#endif`,ah=`#if defined( USE_COLOR_ALPHA )\n\tvarying vec4 vColor;\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\n\tvarying vec3 vColor;\n#endif`,ch=`#if defined( USE_COLOR_ALPHA )\n\tvColor = vec4( 1.0 );\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\n\tvColor = vec3( 1.0 );\n#endif\n#ifdef USE_COLOR\n\tvColor *= color;\n#endif\n#ifdef USE_INSTANCING_COLOR\n\tvColor.xyz *= instanceColor.xyz;\n#endif`,lh=`#define PI 3.141592653589793\n#define PI2 6.283185307179586\n#define PI_HALF 1.5707963267948966\n#define RECIPROCAL_PI 0.3183098861837907\n#define RECIPROCAL_PI2 0.15915494309189535\n#define EPSILON 1e-6\n#ifndef saturate\n#define saturate( a ) clamp( a, 0.0, 1.0 )\n#endif\n#define whiteComplement( a ) ( 1.0 - saturate( a ) )\nfloat pow2( const in float x ) { return x*x; }\nvec3 pow2( const in vec3 x ) { return x*x; }\nfloat pow3( const in float x ) { return x*x*x; }\nfloat pow4( const in float x ) { float x2 = x*x; return x2*x2; }\nfloat max3( const in vec3 v ) { return max( max( v.x, v.y ), v.z ); }\nfloat average( const in vec3 v ) { return dot( v, vec3( 0.3333333 ) ); }\nhighp float rand( const in vec2 uv ) {\n\tconst highp float a = 12.9898, b = 78.233, c = 43758.5453;\n\thighp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );\n\treturn fract( sin( sn ) * c );\n}\n#ifdef HIGH_PRECISION\n\tfloat precisionSafeLength( vec3 v ) { return length( v ); }\n#else\n\tfloat precisionSafeLength( vec3 v ) {\n\t\tfloat maxComponent = max3( abs( v ) );\n\t\treturn length( v / maxComponent ) * maxComponent;\n\t}\n#endif\nstruct IncidentLight {\n\tvec3 color;\n\tvec3 direction;\n\tbool visible;\n};\nstruct ReflectedLight {\n\tvec3 directDiffuse;\n\tvec3 directSpecular;\n\tvec3 indirectDiffuse;\n\tvec3 indirectSpecular;\n};\nstruct GeometricContext {\n\tvec3 position;\n\tvec3 normal;\n\tvec3 viewDir;\n#ifdef USE_CLEARCOAT\n\tvec3 clearcoatNormal;\n#endif\n};\nvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n}\nvec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {\n\treturn normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\n}\nmat3 transposeMat3( const in mat3 m ) {\n\tmat3 tmp;\n\ttmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x );\n\ttmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y );\n\ttmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z );\n\treturn tmp;\n}\nfloat luminance( const in vec3 rgb ) {\n\tconst vec3 weights = vec3( 0.2126729, 0.7151522, 0.0721750 );\n\treturn dot( weights, rgb );\n}\nbool isPerspectiveMatrix( mat4 m ) {\n\treturn m[ 2 ][ 3 ] == - 1.0;\n}\nvec2 equirectUv( in vec3 dir ) {\n\tfloat u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5;\n\tfloat v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\n\treturn vec2( u, v );\n}`,hh=`#ifdef ENVMAP_TYPE_CUBE_UV\n\t#define cubeUV_minMipLevel 4.0\n\t#define cubeUV_minTileSize 16.0\n\tfloat getFace( vec3 direction ) {\n\t\tvec3 absDirection = abs( direction );\n\t\tfloat face = - 1.0;\n\t\tif ( absDirection.x > absDirection.z ) {\n\t\t\tif ( absDirection.x > absDirection.y )\n\t\t\t\tface = direction.x > 0.0 ? 0.0 : 3.0;\n\t\t\telse\n\t\t\t\tface = direction.y > 0.0 ? 1.0 : 4.0;\n\t\t} else {\n\t\t\tif ( absDirection.z > absDirection.y )\n\t\t\t\tface = direction.z > 0.0 ? 2.0 : 5.0;\n\t\t\telse\n\t\t\t\tface = direction.y > 0.0 ? 1.0 : 4.0;\n\t\t}\n\t\treturn face;\n\t}\n\tvec2 getUV( vec3 direction, float face ) {\n\t\tvec2 uv;\n\t\tif ( face == 0.0 ) {\n\t\t\tuv = vec2( direction.z, direction.y ) / abs( direction.x );\n\t\t} else if ( face == 1.0 ) {\n\t\t\tuv = vec2( - direction.x, - direction.z ) / abs( direction.y );\n\t\t} else if ( face == 2.0 ) {\n\t\t\tuv = vec2( - direction.x, direction.y ) / abs( direction.z );\n\t\t} else if ( face == 3.0 ) {\n\t\t\tuv = vec2( - direction.z, direction.y ) / abs( direction.x );\n\t\t} else if ( face == 4.0 ) {\n\t\t\tuv = vec2( - direction.x, direction.z ) / abs( direction.y );\n\t\t} else {\n\t\t\tuv = vec2( direction.x, direction.y ) / abs( direction.z );\n\t\t}\n\t\treturn 0.5 * ( uv + 1.0 );\n\t}\n\tvec3 bilinearCubeUV( sampler2D envMap, vec3 direction, float mipInt ) {\n\t\tfloat face = getFace( direction );\n\t\tfloat filterInt = max( cubeUV_minMipLevel - mipInt, 0.0 );\n\t\tmipInt = max( mipInt, cubeUV_minMipLevel );\n\t\tfloat faceSize = exp2( mipInt );\n\t\thighp vec2 uv = getUV( direction, face ) * ( faceSize - 2.0 ) + 1.0;\n\t\tif ( face > 2.0 ) {\n\t\t\tuv.y += faceSize;\n\t\t\tface -= 3.0;\n\t\t}\n\t\tuv.x += face * faceSize;\n\t\tuv.x += filterInt * 3.0 * cubeUV_minTileSize;\n\t\tuv.y += 4.0 * ( exp2( CUBEUV_MAX_MIP ) - faceSize );\n\t\tuv.x *= CUBEUV_TEXEL_WIDTH;\n\t\tuv.y *= CUBEUV_TEXEL_HEIGHT;\n\t\t#ifdef texture2DGradEXT\n\t\t\treturn texture2DGradEXT( envMap, uv, vec2( 0.0 ), vec2( 0.0 ) ).rgb;\n\t\t#else\n\t\t\treturn texture2D( envMap, uv ).rgb;\n\t\t#endif\n\t}\n\t#define cubeUV_r0 1.0\n\t#define cubeUV_v0 0.339\n\t#define cubeUV_m0 - 2.0\n\t#define cubeUV_r1 0.8\n\t#define cubeUV_v1 0.276\n\t#define cubeUV_m1 - 1.0\n\t#define cubeUV_r4 0.4\n\t#define cubeUV_v4 0.046\n\t#define cubeUV_m4 2.0\n\t#define cubeUV_r5 0.305\n\t#define cubeUV_v5 0.016\n\t#define cubeUV_m5 3.0\n\t#define cubeUV_r6 0.21\n\t#define cubeUV_v6 0.0038\n\t#define cubeUV_m6 4.0\n\tfloat roughnessToMip( float roughness ) {\n\t\tfloat mip = 0.0;\n\t\tif ( roughness >= cubeUV_r1 ) {\n\t\t\tmip = ( cubeUV_r0 - roughness ) * ( cubeUV_m1 - cubeUV_m0 ) / ( cubeUV_r0 - cubeUV_r1 ) + cubeUV_m0;\n\t\t} else if ( roughness >= cubeUV_r4 ) {\n\t\t\tmip = ( cubeUV_r1 - roughness ) * ( cubeUV_m4 - cubeUV_m1 ) / ( cubeUV_r1 - cubeUV_r4 ) + cubeUV_m1;\n\t\t} else if ( roughness >= cubeUV_r5 ) {\n\t\t\tmip = ( cubeUV_r4 - roughness ) * ( cubeUV_m5 - cubeUV_m4 ) / ( cubeUV_r4 - cubeUV_r5 ) + cubeUV_m4;\n\t\t} else if ( roughness >= cubeUV_r6 ) {\n\t\t\tmip = ( cubeUV_r5 - roughness ) * ( cubeUV_m6 - cubeUV_m5 ) / ( cubeUV_r5 - cubeUV_r6 ) + cubeUV_m5;\n\t\t} else {\n\t\t\tmip = - 2.0 * log2( 1.16 * roughness );\t\t}\n\t\treturn mip;\n\t}\n\tvec4 textureCubeUV( sampler2D envMap, vec3 sampleDir, float roughness ) {\n\t\tfloat mip = clamp( roughnessToMip( roughness ), cubeUV_m0, CUBEUV_MAX_MIP );\n\t\tfloat mipF = fract( mip );\n\t\tfloat mipInt = floor( mip );\n\t\tvec3 color0 = bilinearCubeUV( envMap, sampleDir, mipInt );\n\t\tif ( mipF == 0.0 ) {\n\t\t\treturn vec4( color0, 1.0 );\n\t\t} else {\n\t\t\tvec3 color1 = bilinearCubeUV( envMap, sampleDir, mipInt + 1.0 );\n\t\t\treturn vec4( mix( color0, color1, mipF ), 1.0 );\n\t\t}\n\t}\n#endif`,uh=`vec3 transformedNormal = objectNormal;\n#ifdef USE_INSTANCING\n\tmat3 m = mat3( instanceMatrix );\n\ttransformedNormal /= vec3( dot( m[ 0 ], m[ 0 ] ), dot( m[ 1 ], m[ 1 ] ), dot( m[ 2 ], m[ 2 ] ) );\n\ttransformedNormal = m * transformedNormal;\n#endif\ntransformedNormal = normalMatrix * transformedNormal;\n#ifdef FLIP_SIDED\n\ttransformedNormal = - transformedNormal;\n#endif\n#ifdef USE_TANGENT\n\tvec3 transformedTangent = ( modelViewMatrix * vec4( objectTangent, 0.0 ) ).xyz;\n\t#ifdef FLIP_SIDED\n\t\ttransformedTangent = - transformedTangent;\n\t#endif\n#endif`,fh=`#ifdef USE_DISPLACEMENTMAP\n\tuniform sampler2D displacementMap;\n\tuniform float displacementScale;\n\tuniform float displacementBias;\n#endif`,dh=`#ifdef USE_DISPLACEMENTMAP\n\ttransformed += normalize( objectNormal ) * ( texture2D( displacementMap, vUv ).x * displacementScale + displacementBias );\n#endif`,ph=`#ifdef USE_EMISSIVEMAP\n\tvec4 emissiveColor = texture2D( emissiveMap, vUv );\n\ttotalEmissiveRadiance *= emissiveColor.rgb;\n#endif`,mh=`#ifdef USE_EMISSIVEMAP\n\tuniform sampler2D emissiveMap;\n#endif`,gh="gl_FragColor = linearToOutputTexel( gl_FragColor );",xh=`vec4 LinearToLinear( in vec4 value ) {\n\treturn value;\n}\nvec4 LinearTosRGB( in vec4 value ) {\n\treturn vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a );\n}`,_h=`#ifdef USE_ENVMAP\n\t#ifdef ENV_WORLDPOS\n\t\tvec3 cameraToFrag;\n\t\tif ( isOrthographic ) {\n\t\t\tcameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\n\t\t} else {\n\t\t\tcameraToFrag = normalize( vWorldPosition - cameraPosition );\n\t\t}\n\t\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvec3 reflectVec = reflect( cameraToFrag, worldNormal );\n\t\t#else\n\t\t\tvec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio );\n\t\t#endif\n\t#else\n\t\tvec3 reflectVec = vReflect;\n\t#endif\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tvec4 envColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\n\t#else\n\t\tvec4 envColor = vec4( 0.0 );\n\t#endif\n\t#ifdef ENVMAP_BLENDING_MULTIPLY\n\t\toutgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );\n\t#elif defined( ENVMAP_BLENDING_MIX )\n\t\toutgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );\n\t#elif defined( ENVMAP_BLENDING_ADD )\n\t\toutgoingLight += envColor.xyz * specularStrength * reflectivity;\n\t#endif\n#endif`,yh=`#ifdef USE_ENVMAP\n\tuniform float envMapIntensity;\n\tuniform float flipEnvMap;\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tuniform samplerCube envMap;\n\t#else\n\t\tuniform sampler2D envMap;\n\t#endif\n\t\n#endif`,vh=`#ifdef USE_ENVMAP\n\tuniform float reflectivity;\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT )\n\t\t#define ENV_WORLDPOS\n\t#endif\n\t#ifdef ENV_WORLDPOS\n\t\tvarying vec3 vWorldPosition;\n\t\tuniform float refractionRatio;\n\t#else\n\t\tvarying vec3 vReflect;\n\t#endif\n#endif`,Mh=`#ifdef USE_ENVMAP\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT )\n\t\t#define ENV_WORLDPOS\n\t#endif\n\t#ifdef ENV_WORLDPOS\n\t\t\n\t\tvarying vec3 vWorldPosition;\n\t#else\n\t\tvarying vec3 vReflect;\n\t\tuniform float refractionRatio;\n\t#endif\n#endif`,bh=`#ifdef USE_ENVMAP\n\t#ifdef ENV_WORLDPOS\n\t\tvWorldPosition = worldPosition.xyz;\n\t#else\n\t\tvec3 cameraToVertex;\n\t\tif ( isOrthographic ) {\n\t\t\tcameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\n\t\t} else {\n\t\t\tcameraToVertex = normalize( worldPosition.xyz - cameraPosition );\n\t\t}\n\t\tvec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvReflect = reflect( cameraToVertex, worldNormal );\n\t\t#else\n\t\t\tvReflect = refract( cameraToVertex, worldNormal, refractionRatio );\n\t\t#endif\n\t#endif\n#endif`,wh=`#ifdef USE_FOG\n\tvFogDepth = - mvPosition.z;\n#endif`,Sh=`#ifdef USE_FOG\n\tvarying float vFogDepth;\n#endif`,Th=`#ifdef USE_FOG\n\t#ifdef FOG_EXP2\n\t\tfloat fogFactor = 1.0 - exp( - fogDensity * fogDensity * vFogDepth * vFogDepth );\n\t#else\n\t\tfloat fogFactor = smoothstep( fogNear, fogFar, vFogDepth );\n\t#endif\n\tgl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );\n#endif`,Ah=`#ifdef USE_FOG\n\tuniform vec3 fogColor;\n\tvarying float vFogDepth;\n\t#ifdef FOG_EXP2\n\t\tuniform float fogDensity;\n\t#else\n\t\tuniform float fogNear;\n\t\tuniform float fogFar;\n\t#endif\n#endif`,Eh=`#ifdef USE_GRADIENTMAP\n\tuniform sampler2D gradientMap;\n#endif\nvec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {\n\tfloat dotNL = dot( normal, lightDirection );\n\tvec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );\n\t#ifdef USE_GRADIENTMAP\n\t\treturn vec3( texture2D( gradientMap, coord ).r );\n\t#else\n\t\tvec2 fw = fwidth( coord ) * 0.5;\n\t\treturn mix( vec3( 0.7 ), vec3( 1.0 ), smoothstep( 0.7 - fw.x, 0.7 + fw.x, coord.x ) );\n\t#endif\n}`,Ch=`#ifdef USE_LIGHTMAP\n\tvec4 lightMapTexel = texture2D( lightMap, vUv2 );\n\tvec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;\n\treflectedLight.indirectDiffuse += lightMapIrradiance;\n#endif`,Ph=`#ifdef USE_LIGHTMAP\n\tuniform sampler2D lightMap;\n\tuniform float lightMapIntensity;\n#endif`,Rh=`LambertMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;\nmaterial.specularStrength = specularStrength;`,Lh=`varying vec3 vViewPosition;\nstruct LambertMaterial {\n\tvec3 diffuseColor;\n\tfloat specularStrength;\n};\nvoid RE_Direct_Lambert( const in IncidentLight directLight, const in GeometricContext geometry, const in LambertMaterial material, inout ReflectedLight reflectedLight ) {\n\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\n\tvec3 irradiance = dotNL * directLight.color;\n\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectDiffuse_Lambert( const in vec3 irradiance, const in GeometricContext geometry, const in LambertMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\n#define RE_Direct\t\t\t\tRE_Direct_Lambert\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_Lambert`,Ih=`uniform bool receiveShadow;\nuniform vec3 ambientLightColor;\nuniform vec3 lightProbe[ 9 ];\nvec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {\n\tfloat x = normal.x, y = normal.y, z = normal.z;\n\tvec3 result = shCoefficients[ 0 ] * 0.886227;\n\tresult += shCoefficients[ 1 ] * 2.0 * 0.511664 * y;\n\tresult += shCoefficients[ 2 ] * 2.0 * 0.511664 * z;\n\tresult += shCoefficients[ 3 ] * 2.0 * 0.511664 * x;\n\tresult += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y;\n\tresult += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z;\n\tresult += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 );\n\tresult += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z;\n\tresult += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y );\n\treturn result;\n}\nvec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in vec3 normal ) {\n\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n\tvec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe );\n\treturn irradiance;\n}\nvec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {\n\tvec3 irradiance = ambientLightColor;\n\treturn irradiance;\n}\nfloat getDistanceAttenuation( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {\n\t#if defined ( PHYSICALLY_CORRECT_LIGHTS )\n\t\tfloat distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );\n\t\tif ( cutoffDistance > 0.0 ) {\n\t\t\tdistanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\n\t\t}\n\t\treturn distanceFalloff;\n\t#else\n\t\tif ( cutoffDistance > 0.0 && decayExponent > 0.0 ) {\n\t\t\treturn pow( saturate( - lightDistance / cutoffDistance + 1.0 ), decayExponent );\n\t\t}\n\t\treturn 1.0;\n\t#endif\n}\nfloat getSpotAttenuation( const in float coneCosine, const in float penumbraCosine, const in float angleCosine ) {\n\treturn smoothstep( coneCosine, penumbraCosine, angleCosine );\n}\n#if NUM_DIR_LIGHTS > 0\n\tstruct DirectionalLight {\n\t\tvec3 direction;\n\t\tvec3 color;\n\t};\n\tuniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];\n\tvoid getDirectionalLightInfo( const in DirectionalLight directionalLight, const in GeometricContext geometry, out IncidentLight light ) {\n\t\tlight.color = directionalLight.color;\n\t\tlight.direction = directionalLight.direction;\n\t\tlight.visible = true;\n\t}\n#endif\n#if NUM_POINT_LIGHTS > 0\n\tstruct PointLight {\n\t\tvec3 position;\n\t\tvec3 color;\n\t\tfloat distance;\n\t\tfloat decay;\n\t};\n\tuniform PointLight pointLights[ NUM_POINT_LIGHTS ];\n\tvoid getPointLightInfo( const in PointLight pointLight, const in GeometricContext geometry, out IncidentLight light ) {\n\t\tvec3 lVector = pointLight.position - geometry.position;\n\t\tlight.direction = normalize( lVector );\n\t\tfloat lightDistance = length( lVector );\n\t\tlight.color = pointLight.color;\n\t\tlight.color *= getDistanceAttenuation( lightDistance, pointLight.distance, pointLight.decay );\n\t\tlight.visible = ( light.color != vec3( 0.0 ) );\n\t}\n#endif\n#if NUM_SPOT_LIGHTS > 0\n\tstruct SpotLight {\n\t\tvec3 position;\n\t\tvec3 direction;\n\t\tvec3 color;\n\t\tfloat distance;\n\t\tfloat decay;\n\t\tfloat coneCos;\n\t\tfloat penumbraCos;\n\t};\n\tuniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];\n\tvoid getSpotLightInfo( const in SpotLight spotLight, const in GeometricContext geometry, out IncidentLight light ) {\n\t\tvec3 lVector = spotLight.position - geometry.position;\n\t\tlight.direction = normalize( lVector );\n\t\tfloat angleCos = dot( light.direction, spotLight.direction );\n\t\tfloat spotAttenuation = getSpotAttenuation( spotLight.coneCos, spotLight.penumbraCos, angleCos );\n\t\tif ( spotAttenuation > 0.0 ) {\n\t\t\tfloat lightDistance = length( lVector );\n\t\t\tlight.color = spotLight.color * spotAttenuation;\n\t\t\tlight.color *= getDistanceAttenuation( lightDistance, spotLight.distance, spotLight.decay );\n\t\t\tlight.visible = ( light.color != vec3( 0.0 ) );\n\t\t} else {\n\t\t\tlight.color = vec3( 0.0 );\n\t\t\tlight.visible = false;\n\t\t}\n\t}\n#endif\n#if NUM_RECT_AREA_LIGHTS > 0\n\tstruct RectAreaLight {\n\t\tvec3 color;\n\t\tvec3 position;\n\t\tvec3 halfWidth;\n\t\tvec3 halfHeight;\n\t};\n\tuniform sampler2D ltc_1;\tuniform sampler2D ltc_2;\n\tuniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ];\n#endif\n#if NUM_HEMI_LIGHTS > 0\n\tstruct HemisphereLight {\n\t\tvec3 direction;\n\t\tvec3 skyColor;\n\t\tvec3 groundColor;\n\t};\n\tuniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];\n\tvec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in vec3 normal ) {\n\t\tfloat dotNL = dot( normal, hemiLight.direction );\n\t\tfloat hemiDiffuseWeight = 0.5 * dotNL + 0.5;\n\t\tvec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );\n\t\treturn irradiance;\n\t}\n#endif`,Dh=`#if defined( USE_ENVMAP )\n\tvec3 getIBLIrradiance( const in vec3 normal ) {\n\t\t#if defined( ENVMAP_TYPE_CUBE_UV )\n\t\t\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n\t\t\tvec4 envMapColor = textureCubeUV( envMap, worldNormal, 1.0 );\n\t\t\treturn PI * envMapColor.rgb * envMapIntensity;\n\t\t#else\n\t\t\treturn vec3( 0.0 );\n\t\t#endif\n\t}\n\tvec3 getIBLRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness ) {\n\t\t#if defined( ENVMAP_TYPE_CUBE_UV )\n\t\t\tvec3 reflectVec = reflect( - viewDir, normal );\n\t\t\treflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );\n\t\t\treflectVec = inverseTransformDirection( reflectVec, viewMatrix );\n\t\t\tvec4 envMapColor = textureCubeUV( envMap, reflectVec, roughness );\n\t\t\treturn envMapColor.rgb * envMapIntensity;\n\t\t#else\n\t\t\treturn vec3( 0.0 );\n\t\t#endif\n\t}\n#endif`,Nh=`ToonMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;`,Fh=`varying vec3 vViewPosition;\nstruct ToonMaterial {\n\tvec3 diffuseColor;\n};\nvoid RE_Direct_Toon( const in IncidentLight directLight, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\n\tvec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color;\n\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\n#define RE_Direct\t\t\t\tRE_Direct_Toon\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_Toon`,zh=`BlinnPhongMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;\nmaterial.specularColor = specular;\nmaterial.specularShininess = shininess;\nmaterial.specularStrength = specularStrength;`,Oh=`varying vec3 vViewPosition;\nstruct BlinnPhongMaterial {\n\tvec3 diffuseColor;\n\tvec3 specularColor;\n\tfloat specularShininess;\n\tfloat specularStrength;\n};\nvoid RE_Direct_BlinnPhong( const in IncidentLight directLight, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\n\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\n\tvec3 irradiance = dotNL * directLight.color;\n\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n\treflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularShininess ) * material.specularStrength;\n}\nvoid RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\n#define RE_Direct\t\t\t\tRE_Direct_BlinnPhong\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_BlinnPhong`,Bh=`PhysicalMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\nvec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );\nfloat geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );\nmaterial.roughness = max( roughnessFactor, 0.0525 );material.roughness += geometryRoughness;\nmaterial.roughness = min( material.roughness, 1.0 );\n#ifdef IOR\n\tmaterial.ior = ior;\n\t#ifdef SPECULAR\n\t\tfloat specularIntensityFactor = specularIntensity;\n\t\tvec3 specularColorFactor = specularColor;\n\t\t#ifdef USE_SPECULARINTENSITYMAP\n\t\t\tspecularIntensityFactor *= texture2D( specularIntensityMap, vUv ).a;\n\t\t#endif\n\t\t#ifdef USE_SPECULARCOLORMAP\n\t\t\tspecularColorFactor *= texture2D( specularColorMap, vUv ).rgb;\n\t\t#endif\n\t\tmaterial.specularF90 = mix( specularIntensityFactor, 1.0, metalnessFactor );\n\t#else\n\t\tfloat specularIntensityFactor = 1.0;\n\t\tvec3 specularColorFactor = vec3( 1.0 );\n\t\tmaterial.specularF90 = 1.0;\n\t#endif\n\tmaterial.specularColor = mix( min( pow2( ( material.ior - 1.0 ) / ( material.ior + 1.0 ) ) * specularColorFactor, vec3( 1.0 ) ) * specularIntensityFactor, diffuseColor.rgb, metalnessFactor );\n#else\n\tmaterial.specularColor = mix( vec3( 0.04 ), diffuseColor.rgb, metalnessFactor );\n\tmaterial.specularF90 = 1.0;\n#endif\n#ifdef USE_CLEARCOAT\n\tmaterial.clearcoat = clearcoat;\n\tmaterial.clearcoatRoughness = clearcoatRoughness;\n\tmaterial.clearcoatF0 = vec3( 0.04 );\n\tmaterial.clearcoatF90 = 1.0;\n\t#ifdef USE_CLEARCOATMAP\n\t\tmaterial.clearcoat *= texture2D( clearcoatMap, vUv ).x;\n\t#endif\n\t#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n\t\tmaterial.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vUv ).y;\n\t#endif\n\tmaterial.clearcoat = saturate( material.clearcoat );\tmaterial.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 );\n\tmaterial.clearcoatRoughness += geometryRoughness;\n\tmaterial.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 );\n#endif\n#ifdef USE_IRIDESCENCE\n\tmaterial.iridescence = iridescence;\n\tmaterial.iridescenceIOR = iridescenceIOR;\n\t#ifdef USE_IRIDESCENCEMAP\n\t\tmaterial.iridescence *= texture2D( iridescenceMap, vUv ).r;\n\t#endif\n\t#ifdef USE_IRIDESCENCE_THICKNESSMAP\n\t\tmaterial.iridescenceThickness = (iridescenceThicknessMaximum - iridescenceThicknessMinimum) * texture2D( iridescenceThicknessMap, vUv ).g + iridescenceThicknessMinimum;\n\t#else\n\t\tmaterial.iridescenceThickness = iridescenceThicknessMaximum;\n\t#endif\n#endif\n#ifdef USE_SHEEN\n\tmaterial.sheenColor = sheenColor;\n\t#ifdef USE_SHEENCOLORMAP\n\t\tmaterial.sheenColor *= texture2D( sheenColorMap, vUv ).rgb;\n\t#endif\n\tmaterial.sheenRoughness = clamp( sheenRoughness, 0.07, 1.0 );\n\t#ifdef USE_SHEENROUGHNESSMAP\n\t\tmaterial.sheenRoughness *= texture2D( sheenRoughnessMap, vUv ).a;\n\t#endif\n#endif`,Uh=`struct PhysicalMaterial {\n\tvec3 diffuseColor;\n\tfloat roughness;\n\tvec3 specularColor;\n\tfloat specularF90;\n\t#ifdef USE_CLEARCOAT\n\t\tfloat clearcoat;\n\t\tfloat clearcoatRoughness;\n\t\tvec3 clearcoatF0;\n\t\tfloat clearcoatF90;\n\t#endif\n\t#ifdef USE_IRIDESCENCE\n\t\tfloat iridescence;\n\t\tfloat iridescenceIOR;\n\t\tfloat iridescenceThickness;\n\t\tvec3 iridescenceFresnel;\n\t\tvec3 iridescenceF0;\n\t#endif\n\t#ifdef USE_SHEEN\n\t\tvec3 sheenColor;\n\t\tfloat sheenRoughness;\n\t#endif\n\t#ifdef IOR\n\t\tfloat ior;\n\t#endif\n\t#ifdef USE_TRANSMISSION\n\t\tfloat transmission;\n\t\tfloat transmissionAlpha;\n\t\tfloat thickness;\n\t\tfloat attenuationDistance;\n\t\tvec3 attenuationColor;\n\t#endif\n};\nvec3 clearcoatSpecular = vec3( 0.0 );\nvec3 sheenSpecular = vec3( 0.0 );\nfloat IBLSheenBRDF( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\tfloat r2 = roughness * roughness;\n\tfloat a = roughness < 0.25 ? -339.2 * r2 + 161.4 * roughness - 25.9 : -8.48 * r2 + 14.3 * roughness - 9.95;\n\tfloat b = roughness < 0.25 ? 44.0 * r2 - 23.7 * roughness + 3.26 : 1.97 * r2 - 3.27 * roughness + 0.72;\n\tfloat DG = exp( a * dotNV + b ) + ( roughness < 0.25 ? 0.0 : 0.1 * ( roughness - 0.25 ) );\n\treturn saturate( DG * RECIPROCAL_PI );\n}\nvec2 DFGApprox( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\tconst vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 );\n\tconst vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 );\n\tvec4 r = roughness * c0 + c1;\n\tfloat a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y;\n\tvec2 fab = vec2( - 1.04, 1.04 ) * a004 + r.zw;\n\treturn fab;\n}\nvec3 EnvironmentBRDF( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness ) {\n\tvec2 fab = DFGApprox( normal, viewDir, roughness );\n\treturn specularColor * fab.x + specularF90 * fab.y;\n}\n#ifdef USE_IRIDESCENCE\nvoid computeMultiscatteringIridescence( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float iridescence, const in vec3 iridescenceF0, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\n#else\nvoid computeMultiscattering( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\n#endif\n\tvec2 fab = DFGApprox( normal, viewDir, roughness );\n\t#ifdef USE_IRIDESCENCE\n\t\tvec3 Fr = mix( specularColor, iridescenceF0, iridescence );\n\t#else\n\t\tvec3 Fr = specularColor;\n\t#endif\n\tvec3 FssEss = Fr * fab.x + specularF90 * fab.y;\n\tfloat Ess = fab.x + fab.y;\n\tfloat Ems = 1.0 - Ess;\n\tvec3 Favg = Fr + ( 1.0 - Fr ) * 0.047619;\tvec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg );\n\tsingleScatter += FssEss;\n\tmultiScatter += Fms * Ems;\n}\n#if NUM_RECT_AREA_LIGHTS > 0\n\tvoid RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\t\tvec3 normal = geometry.normal;\n\t\tvec3 viewDir = geometry.viewDir;\n\t\tvec3 position = geometry.position;\n\t\tvec3 lightPos = rectAreaLight.position;\n\t\tvec3 halfWidth = rectAreaLight.halfWidth;\n\t\tvec3 halfHeight = rectAreaLight.halfHeight;\n\t\tvec3 lightColor = rectAreaLight.color;\n\t\tfloat roughness = material.roughness;\n\t\tvec3 rectCoords[ 4 ];\n\t\trectCoords[ 0 ] = lightPos + halfWidth - halfHeight;\t\trectCoords[ 1 ] = lightPos - halfWidth - halfHeight;\n\t\trectCoords[ 2 ] = lightPos - halfWidth + halfHeight;\n\t\trectCoords[ 3 ] = lightPos + halfWidth + halfHeight;\n\t\tvec2 uv = LTC_Uv( normal, viewDir, roughness );\n\t\tvec4 t1 = texture2D( ltc_1, uv );\n\t\tvec4 t2 = texture2D( ltc_2, uv );\n\t\tmat3 mInv = mat3(\n\t\t\tvec3( t1.x, 0, t1.y ),\n\t\t\tvec3( 0, 1, 0 ),\n\t\t\tvec3( t1.z, 0, t1.w )\n\t\t);\n\t\tvec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y );\n\t\treflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords );\n\t\treflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords );\n\t}\n#endif\nvoid RE_Direct_Physical( const in IncidentLight directLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\n\tvec3 irradiance = dotNL * directLight.color;\n\t#ifdef USE_CLEARCOAT\n\t\tfloat dotNLcc = saturate( dot( geometry.clearcoatNormal, directLight.direction ) );\n\t\tvec3 ccIrradiance = dotNLcc * directLight.color;\n\t\tclearcoatSpecular += ccIrradiance * BRDF_GGX( directLight.direction, geometry.viewDir, geometry.clearcoatNormal, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );\n\t#endif\n\t#ifdef USE_SHEEN\n\t\tsheenSpecular += irradiance * BRDF_Sheen( directLight.direction, geometry.viewDir, geometry.normal, material.sheenColor, material.sheenRoughness );\n\t#endif\n\t#ifdef USE_IRIDESCENCE\n\t\treflectedLight.directSpecular += irradiance * BRDF_GGX_Iridescence( directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularF90, material.iridescence, material.iridescenceFresnel, material.roughness );\n\t#else\n\t\treflectedLight.directSpecular += irradiance * BRDF_GGX( directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularF90, material.roughness );\n\t#endif\n\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {\n\t#ifdef USE_CLEARCOAT\n\t\tclearcoatSpecular += clearcoatRadiance * EnvironmentBRDF( geometry.clearcoatNormal, geometry.viewDir, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );\n\t#endif\n\t#ifdef USE_SHEEN\n\t\tsheenSpecular += irradiance * material.sheenColor * IBLSheenBRDF( geometry.normal, geometry.viewDir, material.sheenRoughness );\n\t#endif\n\tvec3 singleScattering = vec3( 0.0 );\n\tvec3 multiScattering = vec3( 0.0 );\n\tvec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;\n\t#ifdef USE_IRIDESCENCE\n\t\tcomputeMultiscatteringIridescence( geometry.normal, geometry.viewDir, material.specularColor, material.specularF90, material.iridescence, material.iridescenceFresnel, material.roughness, singleScattering, multiScattering );\n\t#else\n\t\tcomputeMultiscattering( geometry.normal, geometry.viewDir, material.specularColor, material.specularF90, material.roughness, singleScattering, multiScattering );\n\t#endif\n\tvec3 totalScattering = singleScattering + multiScattering;\n\tvec3 diffuse = material.diffuseColor * ( 1.0 - max( max( totalScattering.r, totalScattering.g ), totalScattering.b ) );\n\treflectedLight.indirectSpecular += radiance * singleScattering;\n\treflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance;\n\treflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance;\n}\n#define RE_Direct\t\t\t\tRE_Direct_Physical\n#define RE_Direct_RectArea\t\tRE_Direct_RectArea_Physical\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_Physical\n#define RE_IndirectSpecular\t\tRE_IndirectSpecular_Physical\nfloat computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) {\n\treturn saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion );\n}`,kh=`\nGeometricContext geometry;\ngeometry.position = - vViewPosition;\ngeometry.normal = normal;\ngeometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition );\n#ifdef USE_CLEARCOAT\n\tgeometry.clearcoatNormal = clearcoatNormal;\n#endif\n#ifdef USE_IRIDESCENCE\n\tfloat dotNVi = saturate( dot( normal, geometry.viewDir ) );\n\tif ( material.iridescenceThickness == 0.0 ) {\n\t\tmaterial.iridescence = 0.0;\n\t} else {\n\t\tmaterial.iridescence = saturate( material.iridescence );\n\t}\n\tif ( material.iridescence > 0.0 ) {\n\t\tmaterial.iridescenceFresnel = evalIridescence( 1.0, material.iridescenceIOR, dotNVi, material.iridescenceThickness, material.specularColor );\n\t\tmaterial.iridescenceF0 = Schlick_to_F0( material.iridescenceFresnel, 1.0, dotNVi );\n\t}\n#endif\nIncidentLight directLight;\n#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\n\tPointLight pointLight;\n\t#if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0\n\tPointLightShadow pointLightShadow;\n\t#endif\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tpointLight = pointLights[ i ];\n\t\tgetPointLightInfo( pointLight, geometry, directLight );\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS )\n\t\tpointLightShadow = pointLightShadows[ i ];\n\t\tdirectLight.color *= ( directLight.visible && receiveShadow ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\n\tSpotLight spotLight;\n\tvec4 spotColor;\n\tvec3 spotLightCoord;\n\tbool inSpotLightMap;\n\t#if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0\n\tSpotLightShadow spotLightShadow;\n\t#endif\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tspotLight = spotLights[ i ];\n\t\tgetSpotLightInfo( spotLight, geometry, directLight );\n\t\t#if ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS )\n\t\t#define SPOT_LIGHT_MAP_INDEX UNROLLED_LOOP_INDEX\n\t\t#elif ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\n\t\t#define SPOT_LIGHT_MAP_INDEX NUM_SPOT_LIGHT_MAPS\n\t\t#else\n\t\t#define SPOT_LIGHT_MAP_INDEX ( UNROLLED_LOOP_INDEX - NUM_SPOT_LIGHT_SHADOWS + NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS )\n\t\t#endif\n\t\t#if ( SPOT_LIGHT_MAP_INDEX < NUM_SPOT_LIGHT_MAPS )\n\t\t\tspotLightCoord = vSpotLightCoord[ i ].xyz / vSpotLightCoord[ i ].w;\n\t\t\tinSpotLightMap = all( lessThan( abs( spotLightCoord * 2. - 1. ), vec3( 1.0 ) ) );\n\t\t\tspotColor = texture2D( spotLightMap[ SPOT_LIGHT_MAP_INDEX ], spotLightCoord.xy );\n\t\t\tdirectLight.color = inSpotLightMap ? directLight.color * spotColor.rgb : directLight.color;\n\t\t#endif\n\t\t#undef SPOT_LIGHT_MAP_INDEX\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\n\t\tspotLightShadow = spotLightShadows[ i ];\n\t\tdirectLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotLightCoord[ i ] ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\n\tDirectionalLight directionalLight;\n\t#if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0\n\tDirectionalLightShadow directionalLightShadow;\n\t#endif\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tdirectionalLight = directionalLights[ i ];\n\t\tgetDirectionalLightInfo( directionalLight, geometry, directLight );\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS )\n\t\tdirectionalLightShadow = directionalLightShadows[ i ];\n\t\tdirectLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\n\tRectAreaLight rectAreaLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {\n\t\trectAreaLight = rectAreaLights[ i ];\n\t\tRE_Direct_RectArea( rectAreaLight, geometry, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if defined( RE_IndirectDiffuse )\n\tvec3 iblIrradiance = vec3( 0.0 );\n\tvec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\n\tirradiance += getLightProbeIrradiance( lightProbe, geometry.normal );\n\t#if ( NUM_HEMI_LIGHTS > 0 )\n\t\t#pragma unroll_loop_start\n\t\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\n\t\t\tirradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry.normal );\n\t\t}\n\t\t#pragma unroll_loop_end\n\t#endif\n#endif\n#if defined( RE_IndirectSpecular )\n\tvec3 radiance = vec3( 0.0 );\n\tvec3 clearcoatRadiance = vec3( 0.0 );\n#endif`,Vh=`#if defined( RE_IndirectDiffuse )\n\t#ifdef USE_LIGHTMAP\n\t\tvec4 lightMapTexel = texture2D( lightMap, vUv2 );\n\t\tvec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;\n\t\tirradiance += lightMapIrradiance;\n\t#endif\n\t#if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV )\n\t\tiblIrradiance += getIBLIrradiance( geometry.normal );\n\t#endif\n#endif\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\n\tradiance += getIBLRadiance( geometry.viewDir, geometry.normal, material.roughness );\n\t#ifdef USE_CLEARCOAT\n\t\tclearcoatRadiance += getIBLRadiance( geometry.viewDir, geometry.clearcoatNormal, material.clearcoatRoughness );\n\t#endif\n#endif`,Gh=`#if defined( RE_IndirectDiffuse )\n\tRE_IndirectDiffuse( irradiance, geometry, material, reflectedLight );\n#endif\n#if defined( RE_IndirectSpecular )\n\tRE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometry, material, reflectedLight );\n#endif`,Hh=`#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\n\tgl_FragDepthEXT = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\n#endif`,Wh=`#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\n\tuniform float logDepthBufFC;\n\tvarying float vFragDepth;\n\tvarying float vIsPerspective;\n#endif`,qh=`#ifdef USE_LOGDEPTHBUF\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tvarying float vFragDepth;\n\t\tvarying float vIsPerspective;\n\t#else\n\t\tuniform float logDepthBufFC;\n\t#endif\n#endif`,Xh=`#ifdef USE_LOGDEPTHBUF\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tvFragDepth = 1.0 + gl_Position.w;\n\t\tvIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) );\n\t#else\n\t\tif ( isPerspectiveMatrix( projectionMatrix ) ) {\n\t\t\tgl_Position.z = log2( max( EPSILON, gl_Position.w + 1.0 ) ) * logDepthBufFC - 1.0;\n\t\t\tgl_Position.z *= gl_Position.w;\n\t\t}\n\t#endif\n#endif`,Yh=`#ifdef USE_MAP\n\tvec4 sampledDiffuseColor = texture2D( map, vUv );\n\t#ifdef DECODE_VIDEO_TEXTURE\n\t\tsampledDiffuseColor = vec4( mix( pow( sampledDiffuseColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), sampledDiffuseColor.rgb * 0.0773993808, vec3( lessThanEqual( sampledDiffuseColor.rgb, vec3( 0.04045 ) ) ) ), sampledDiffuseColor.w );\n\t#endif\n\tdiffuseColor *= sampledDiffuseColor;\n#endif`,Zh=`#ifdef USE_MAP\n\tuniform sampler2D map;\n#endif`,Jh=`#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\n\tvec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;\n#endif\n#ifdef USE_MAP\n\tdiffuseColor *= texture2D( map, uv );\n#endif\n#ifdef USE_ALPHAMAP\n\tdiffuseColor.a *= texture2D( alphaMap, uv ).g;\n#endif`,$h=`#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\n\tuniform mat3 uvTransform;\n#endif\n#ifdef USE_MAP\n\tuniform sampler2D map;\n#endif\n#ifdef USE_ALPHAMAP\n\tuniform sampler2D alphaMap;\n#endif`,Kh=`float metalnessFactor = metalness;\n#ifdef USE_METALNESSMAP\n\tvec4 texelMetalness = texture2D( metalnessMap, vUv );\n\tmetalnessFactor *= texelMetalness.b;\n#endif`,jh=`#ifdef USE_METALNESSMAP\n\tuniform sampler2D metalnessMap;\n#endif`,Qh=`#if defined( USE_MORPHCOLORS ) && defined( MORPHTARGETS_TEXTURE )\n\tvColor *= morphTargetBaseInfluence;\n\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\n\t\t#if defined( USE_COLOR_ALPHA )\n\t\t\tif ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ) * morphTargetInfluences[ i ];\n\t\t#elif defined( USE_COLOR )\n\t\t\tif ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ).rgb * morphTargetInfluences[ i ];\n\t\t#endif\n\t}\n#endif`,tu=`#ifdef USE_MORPHNORMALS\n\tobjectNormal *= morphTargetBaseInfluence;\n\t#ifdef MORPHTARGETS_TEXTURE\n\t\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\n\t\t\tif ( morphTargetInfluences[ i ] != 0.0 ) objectNormal += getMorph( gl_VertexID, i, 1 ).xyz * morphTargetInfluences[ i ];\n\t\t}\n\t#else\n\t\tobjectNormal += morphNormal0 * morphTargetInfluences[ 0 ];\n\t\tobjectNormal += morphNormal1 * morphTargetInfluences[ 1 ];\n\t\tobjectNormal += morphNormal2 * morphTargetInfluences[ 2 ];\n\t\tobjectNormal += morphNormal3 * morphTargetInfluences[ 3 ];\n\t#endif\n#endif`,eu=`#ifdef USE_MORPHTARGETS\n\tuniform float morphTargetBaseInfluence;\n\t#ifdef MORPHTARGETS_TEXTURE\n\t\tuniform float morphTargetInfluences[ MORPHTARGETS_COUNT ];\n\t\tuniform sampler2DArray morphTargetsTexture;\n\t\tuniform ivec2 morphTargetsTextureSize;\n\t\tvec4 getMorph( const in int vertexIndex, const in int morphTargetIndex, const in int offset ) {\n\t\t\tint texelIndex = vertexIndex * MORPHTARGETS_TEXTURE_STRIDE + offset;\n\t\t\tint y = texelIndex / morphTargetsTextureSize.x;\n\t\t\tint x = texelIndex - y * morphTargetsTextureSize.x;\n\t\t\tivec3 morphUV = ivec3( x, y, morphTargetIndex );\n\t\t\treturn texelFetch( morphTargetsTexture, morphUV, 0 );\n\t\t}\n\t#else\n\t\t#ifndef USE_MORPHNORMALS\n\t\t\tuniform float morphTargetInfluences[ 8 ];\n\t\t#else\n\t\t\tuniform float morphTargetInfluences[ 4 ];\n\t\t#endif\n\t#endif\n#endif`,nu=`#ifdef USE_MORPHTARGETS\n\ttransformed *= morphTargetBaseInfluence;\n\t#ifdef MORPHTARGETS_TEXTURE\n\t\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\n\t\t\tif ( morphTargetInfluences[ i ] != 0.0 ) transformed += getMorph( gl_VertexID, i, 0 ).xyz * morphTargetInfluences[ i ];\n\t\t}\n\t#else\n\t\ttransformed += morphTarget0 * morphTargetInfluences[ 0 ];\n\t\ttransformed += morphTarget1 * morphTargetInfluences[ 1 ];\n\t\ttransformed += morphTarget2 * morphTargetInfluences[ 2 ];\n\t\ttransformed += morphTarget3 * morphTargetInfluences[ 3 ];\n\t\t#ifndef USE_MORPHNORMALS\n\t\t\ttransformed += morphTarget4 * morphTargetInfluences[ 4 ];\n\t\t\ttransformed += morphTarget5 * morphTargetInfluences[ 5 ];\n\t\t\ttransformed += morphTarget6 * morphTargetInfluences[ 6 ];\n\t\t\ttransformed += morphTarget7 * morphTargetInfluences[ 7 ];\n\t\t#endif\n\t#endif\n#endif`,iu=`float faceDirection = gl_FrontFacing ? 1.0 : - 1.0;\n#ifdef FLAT_SHADED\n\tvec3 fdx = dFdx( vViewPosition );\n\tvec3 fdy = dFdy( vViewPosition );\n\tvec3 normal = normalize( cross( fdx, fdy ) );\n#else\n\tvec3 normal = normalize( vNormal );\n\t#ifdef DOUBLE_SIDED\n\t\tnormal = normal * faceDirection;\n\t#endif\n\t#ifdef USE_TANGENT\n\t\tvec3 tangent = normalize( vTangent );\n\t\tvec3 bitangent = normalize( vBitangent );\n\t\t#ifdef DOUBLE_SIDED\n\t\t\ttangent = tangent * faceDirection;\n\t\t\tbitangent = bitangent * faceDirection;\n\t\t#endif\n\t\t#if defined( TANGENTSPACE_NORMALMAP ) || defined( USE_CLEARCOAT_NORMALMAP )\n\t\t\tmat3 vTBN = mat3( tangent, bitangent, normal );\n\t\t#endif\n\t#endif\n#endif\nvec3 geometryNormal = normal;`,su=`#ifdef OBJECTSPACE_NORMALMAP\n\tnormal = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\n\t#ifdef FLIP_SIDED\n\t\tnormal = - normal;\n\t#endif\n\t#ifdef DOUBLE_SIDED\n\t\tnormal = normal * faceDirection;\n\t#endif\n\tnormal = normalize( normalMatrix * normal );\n#elif defined( TANGENTSPACE_NORMALMAP )\n\tvec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\n\tmapN.xy *= normalScale;\n\t#ifdef USE_TANGENT\n\t\tnormal = normalize( vTBN * mapN );\n\t#else\n\t\tnormal = perturbNormal2Arb( - vViewPosition, normal, mapN, faceDirection );\n\t#endif\n#elif defined( USE_BUMPMAP )\n\tnormal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection );\n#endif`,ru=`#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif`,ou=`#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif`,au=`#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n\t#ifdef USE_TANGENT\n\t\tvTangent = normalize( transformedTangent );\n\t\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\n\t#endif\n#endif`,cu=`#ifdef USE_NORMALMAP\n\tuniform sampler2D normalMap;\n\tuniform vec2 normalScale;\n#endif\n#ifdef OBJECTSPACE_NORMALMAP\n\tuniform mat3 normalMatrix;\n#endif\n#if ! defined ( USE_TANGENT ) && ( defined ( TANGENTSPACE_NORMALMAP ) || defined ( USE_CLEARCOAT_NORMALMAP ) )\n\tvec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm, vec3 mapN, float faceDirection ) {\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\t\tvec3 N = surf_norm;\n\t\tvec3 q1perp = cross( q1, N );\n\t\tvec3 q0perp = cross( N, q0 );\n\t\tvec3 T = q1perp * st0.x + q0perp * st1.x;\n\t\tvec3 B = q1perp * st0.y + q0perp * st1.y;\n\t\tfloat det = max( dot( T, T ), dot( B, B ) );\n\t\tfloat scale = ( det == 0.0 ) ? 0.0 : faceDirection * inversesqrt( det );\n\t\treturn normalize( T * ( mapN.x * scale ) + B * ( mapN.y * scale ) + N * mapN.z );\n\t}\n#endif`,lu=`#ifdef USE_CLEARCOAT\n\tvec3 clearcoatNormal = geometryNormal;\n#endif`,hu=`#ifdef USE_CLEARCOAT_NORMALMAP\n\tvec3 clearcoatMapN = texture2D( clearcoatNormalMap, vUv ).xyz * 2.0 - 1.0;\n\tclearcoatMapN.xy *= clearcoatNormalScale;\n\t#ifdef USE_TANGENT\n\t\tclearcoatNormal = normalize( vTBN * clearcoatMapN );\n\t#else\n\t\tclearcoatNormal = perturbNormal2Arb( - vViewPosition, clearcoatNormal, clearcoatMapN, faceDirection );\n\t#endif\n#endif`,uu=`#ifdef USE_CLEARCOATMAP\n\tuniform sampler2D clearcoatMap;\n#endif\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n\tuniform sampler2D clearcoatRoughnessMap;\n#endif\n#ifdef USE_CLEARCOAT_NORMALMAP\n\tuniform sampler2D clearcoatNormalMap;\n\tuniform vec2 clearcoatNormalScale;\n#endif`,fu=`#ifdef USE_IRIDESCENCEMAP\n\tuniform sampler2D iridescenceMap;\n#endif\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\n\tuniform sampler2D iridescenceThicknessMap;\n#endif`,du=`#ifdef OPAQUE\ndiffuseColor.a = 1.0;\n#endif\n#ifdef USE_TRANSMISSION\ndiffuseColor.a *= material.transmissionAlpha + 0.1;\n#endif\ngl_FragColor = vec4( outgoingLight, diffuseColor.a );`,pu=`vec3 packNormalToRGB( const in vec3 normal ) {\n\treturn normalize( normal ) * 0.5 + 0.5;\n}\nvec3 unpackRGBToNormal( const in vec3 rgb ) {\n\treturn 2.0 * rgb.xyz - 1.0;\n}\nconst float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;\nconst vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\nconst vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. );\nconst float ShiftRight8 = 1. / 256.;\nvec4 packDepthToRGBA( const in float v ) {\n\tvec4 r = vec4( fract( v * PackFactors ), v );\n\tr.yzw -= r.xyz * ShiftRight8;\treturn r * PackUpscale;\n}\nfloat unpackRGBAToDepth( const in vec4 v ) {\n\treturn dot( v, UnpackFactors );\n}\nvec2 packDepthToRG( in highp float v ) {\n\treturn packDepthToRGBA( v ).yx;\n}\nfloat unpackRGToDepth( const in highp vec2 v ) {\n\treturn unpackRGBAToDepth( vec4( v.xy, 0.0, 0.0 ) );\n}\nvec4 pack2HalfToRGBA( vec2 v ) {\n\tvec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ) );\n\treturn vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w );\n}\nvec2 unpackRGBATo2Half( vec4 v ) {\n\treturn vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) );\n}\nfloat viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) {\n\treturn ( viewZ + near ) / ( near - far );\n}\nfloat orthographicDepthToViewZ( const in float linearClipZ, const in float near, const in float far ) {\n\treturn linearClipZ * ( near - far ) - near;\n}\nfloat viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) {\n\treturn ( ( near + viewZ ) * far ) / ( ( far - near ) * viewZ );\n}\nfloat perspectiveDepthToViewZ( const in float invClipZ, const in float near, const in float far ) {\n\treturn ( near * far ) / ( ( far - near ) * invClipZ - far );\n}`,mu=`#ifdef PREMULTIPLIED_ALPHA\n\tgl_FragColor.rgb *= gl_FragColor.a;\n#endif`,gu=`vec4 mvPosition = vec4( transformed, 1.0 );\n#ifdef USE_INSTANCING\n\tmvPosition = instanceMatrix * mvPosition;\n#endif\nmvPosition = modelViewMatrix * mvPosition;\ngl_Position = projectionMatrix * mvPosition;`,xu=`#ifdef DITHERING\n\tgl_FragColor.rgb = dithering( gl_FragColor.rgb );\n#endif`,_u=`#ifdef DITHERING\n\tvec3 dithering( vec3 color ) {\n\t\tfloat grid_position = rand( gl_FragCoord.xy );\n\t\tvec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 );\n\t\tdither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position );\n\t\treturn color + dither_shift_RGB;\n\t}\n#endif`,yu=`float roughnessFactor = roughness;\n#ifdef USE_ROUGHNESSMAP\n\tvec4 texelRoughness = texture2D( roughnessMap, vUv );\n\troughnessFactor *= texelRoughness.g;\n#endif`,vu=`#ifdef USE_ROUGHNESSMAP\n\tuniform sampler2D roughnessMap;\n#endif`,Mu=`#if NUM_SPOT_LIGHT_COORDS > 0\n varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ];\n#endif\n#if NUM_SPOT_LIGHT_MAPS > 0\n uniform sampler2D spotLightMap[ NUM_SPOT_LIGHT_MAPS ];\n#endif\n#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\t\tuniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tstruct DirectionalLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\t\tuniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ];\n\t\tstruct SpotLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\t\tuniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tstruct PointLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t\tfloat shadowCameraNear;\n\t\t\tfloat shadowCameraFar;\n\t\t};\n\t\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\n\t#endif\n\tfloat texture2DCompare( sampler2D depths, vec2 uv, float compare ) {\n\t\treturn step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) );\n\t}\n\tvec2 texture2DDistribution( sampler2D shadow, vec2 uv ) {\n\t\treturn unpackRGBATo2Half( texture2D( shadow, uv ) );\n\t}\n\tfloat VSMShadow (sampler2D shadow, vec2 uv, float compare ){\n\t\tfloat occlusion = 1.0;\n\t\tvec2 distribution = texture2DDistribution( shadow, uv );\n\t\tfloat hard_shadow = step( compare , distribution.x );\n\t\tif (hard_shadow != 1.0 ) {\n\t\t\tfloat distance = compare - distribution.x ;\n\t\t\tfloat variance = max( 0.00000, distribution.y * distribution.y );\n\t\t\tfloat softness_probability = variance / (variance + distance * distance );\t\t\tsoftness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 );\t\t\tocclusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 );\n\t\t}\n\t\treturn occlusion;\n\t}\n\tfloat getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) {\n\t\tfloat shadow = 1.0;\n\t\tshadowCoord.xyz /= shadowCoord.w;\n\t\tshadowCoord.z += shadowBias;\n\t\tbool inFrustum = shadowCoord.x >= 0.0 && shadowCoord.x <= 1.0 && shadowCoord.y >= 0.0 && shadowCoord.y <= 1.0;\n\t\tbool frustumTest = inFrustum && shadowCoord.z <= 1.0;\n\t\tif ( frustumTest ) {\n\t\t#if defined( SHADOWMAP_TYPE_PCF )\n\t\t\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\n\t\t\tfloat dx0 = - texelSize.x * shadowRadius;\n\t\t\tfloat dy0 = - texelSize.y * shadowRadius;\n\t\t\tfloat dx1 = + texelSize.x * shadowRadius;\n\t\t\tfloat dy1 = + texelSize.y * shadowRadius;\n\t\t\tfloat dx2 = dx0 / 2.0;\n\t\t\tfloat dy2 = dy0 / 2.0;\n\t\t\tfloat dx3 = dx1 / 2.0;\n\t\t\tfloat dy3 = dy1 / 2.0;\n\t\t\tshadow = (\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy2 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy2 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy2 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy3 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy3 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy3 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\n\t\t\t) * ( 1.0 / 17.0 );\n\t\t#elif defined( SHADOWMAP_TYPE_PCF_SOFT )\n\t\t\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\n\t\t\tfloat dx = texelSize.x;\n\t\t\tfloat dy = texelSize.y;\n\t\t\tvec2 uv = shadowCoord.xy;\n\t\t\tvec2 f = fract( uv * shadowMapSize + 0.5 );\n\t\t\tuv -= f * texelSize;\n\t\t\tshadow = (\n\t\t\t\ttexture2DCompare( shadowMap, uv, shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, uv + vec2( dx, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, uv + vec2( 0.0, dy ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, uv + texelSize, shadowCoord.z ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, 0.0 ), shadowCoord.z ),\n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 0.0 ), shadowCoord.z ),\n\t\t\t\t\t f.x ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, dy ), shadowCoord.z ),\n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, dy ), shadowCoord.z ),\n\t\t\t\t\t f.x ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( 0.0, -dy ), shadowCoord.z ),\n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 0.0, 2.0 * dy ), shadowCoord.z ),\n\t\t\t\t\t f.y ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( dx, -dy ), shadowCoord.z ),\n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( dx, 2.0 * dy ), shadowCoord.z ),\n\t\t\t\t\t f.y ) +\n\t\t\t\tmix( mix( texture2DCompare( shadowMap, uv + vec2( -dx, -dy ), shadowCoord.z ),\n\t\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ),\n\t\t\t\t\t\t f.x ),\n\t\t\t\t\t mix( texture2DCompare( shadowMap, uv + vec2( -dx, 2.0 * dy ), shadowCoord.z ),\n\t\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ),\n\t\t\t\t\t\t f.x ),\n\t\t\t\t\t f.y )\n\t\t\t) * ( 1.0 / 9.0 );\n\t\t#elif defined( SHADOWMAP_TYPE_VSM )\n\t\t\tshadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z );\n\t\t#else\n\t\t\tshadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z );\n\t\t#endif\n\t\t}\n\t\treturn shadow;\n\t}\n\tvec2 cubeToUV( vec3 v, float texelSizeY ) {\n\t\tvec3 absV = abs( v );\n\t\tfloat scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) );\n\t\tabsV *= scaleToCube;\n\t\tv *= scaleToCube * ( 1.0 - 2.0 * texelSizeY );\n\t\tvec2 planar = v.xy;\n\t\tfloat almostATexel = 1.5 * texelSizeY;\n\t\tfloat almostOne = 1.0 - almostATexel;\n\t\tif ( absV.z >= almostOne ) {\n\t\t\tif ( v.z > 0.0 )\n\t\t\t\tplanar.x = 4.0 - v.x;\n\t\t} else if ( absV.x >= almostOne ) {\n\t\t\tfloat signX = sign( v.x );\n\t\t\tplanar.x = v.z * signX + 2.0 * signX;\n\t\t} else if ( absV.y >= almostOne ) {\n\t\t\tfloat signY = sign( v.y );\n\t\t\tplanar.x = v.x + 2.0 * signY + 2.0;\n\t\t\tplanar.y = v.z * signY - 2.0;\n\t\t}\n\t\treturn vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 );\n\t}\n\tfloat getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {\n\t\tvec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );\n\t\tvec3 lightToPosition = shadowCoord.xyz;\n\t\tfloat dp = ( length( lightToPosition ) - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear );\t\tdp += shadowBias;\n\t\tvec3 bd3D = normalize( lightToPosition );\n\t\t#if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM )\n\t\t\tvec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y;\n\t\t\treturn (\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp )\n\t\t\t) * ( 1.0 / 9.0 );\n\t\t#else\n\t\t\treturn texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp );\n\t\t#endif\n\t}\n#endif`,bu=`#if NUM_SPOT_LIGHT_COORDS > 0\n uniform mat4 spotLightMatrix[ NUM_SPOT_LIGHT_COORDS ];\n varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ];\n#endif\n#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\t\tuniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tstruct DirectionalLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\t\tstruct SpotLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\t\tuniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tstruct PointLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t\tfloat shadowCameraNear;\n\t\t\tfloat shadowCameraFar;\n\t\t};\n\t\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\n\t#endif\n#endif`,wu=`#if ( defined( USE_SHADOWMAP ) && ( NUM_DIR_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0 ) ) || ( NUM_SPOT_LIGHT_COORDS > 0 )\n\tvec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\n\tvec4 shadowWorldPosition;\n#endif\n#if defined( USE_SHADOWMAP )\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\t\t#pragma unroll_loop_start\n\t\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\n\t\t\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 );\n\t\t\tvDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition;\n\t\t}\n\t\t#pragma unroll_loop_end\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\t\t#pragma unroll_loop_start\n\t\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\n\t\t\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 );\n\t\t\tvPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition;\n\t\t}\n\t\t#pragma unroll_loop_end\n\t#endif\n#endif\n#if NUM_SPOT_LIGHT_COORDS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_SPOT_LIGHT_COORDS; i ++ ) {\n\t\tshadowWorldPosition = worldPosition;\n\t\t#if ( defined( USE_SHADOWMAP ) && UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\n\t\t\tshadowWorldPosition.xyz += shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias;\n\t\t#endif\n\t\tvSpotLightCoord[ i ] = spotLightMatrix[ i ] * shadowWorldPosition;\n\t}\n\t#pragma unroll_loop_end\n#endif`,Su=`float getShadowMask() {\n\tfloat shadow = 1.0;\n\t#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\tDirectionalLightShadow directionalLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\n\t\tdirectionalLight = directionalLightShadows[ i ];\n\t\tshadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\tSpotLightShadow spotLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\n\t\tspotLight = spotLightShadows[ i ];\n\t\tshadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotLightCoord[ i ] ) : 1.0;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\tPointLightShadow pointLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\n\t\tpointLight = pointLightShadows[ i ];\n\t\tshadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n\t#endif\n\treturn shadow;\n}`,Tu=`#ifdef USE_SKINNING\n\tmat4 boneMatX = getBoneMatrix( skinIndex.x );\n\tmat4 boneMatY = getBoneMatrix( skinIndex.y );\n\tmat4 boneMatZ = getBoneMatrix( skinIndex.z );\n\tmat4 boneMatW = getBoneMatrix( skinIndex.w );\n#endif`,Au=`#ifdef USE_SKINNING\n\tuniform mat4 bindMatrix;\n\tuniform mat4 bindMatrixInverse;\n\tuniform highp sampler2D boneTexture;\n\tuniform int boneTextureSize;\n\tmat4 getBoneMatrix( const in float i ) {\n\t\tfloat j = i * 4.0;\n\t\tfloat x = mod( j, float( boneTextureSize ) );\n\t\tfloat y = floor( j / float( boneTextureSize ) );\n\t\tfloat dx = 1.0 / float( boneTextureSize );\n\t\tfloat dy = 1.0 / float( boneTextureSize );\n\t\ty = dy * ( y + 0.5 );\n\t\tvec4 v1 = texture2D( boneTexture, vec2( dx * ( x + 0.5 ), y ) );\n\t\tvec4 v2 = texture2D( boneTexture, vec2( dx * ( x + 1.5 ), y ) );\n\t\tvec4 v3 = texture2D( boneTexture, vec2( dx * ( x + 2.5 ), y ) );\n\t\tvec4 v4 = texture2D( boneTexture, vec2( dx * ( x + 3.5 ), y ) );\n\t\tmat4 bone = mat4( v1, v2, v3, v4 );\n\t\treturn bone;\n\t}\n#endif`,Eu=`#ifdef USE_SKINNING\n\tvec4 skinVertex = bindMatrix * vec4( transformed, 1.0 );\n\tvec4 skinned = vec4( 0.0 );\n\tskinned += boneMatX * skinVertex * skinWeight.x;\n\tskinned += boneMatY * skinVertex * skinWeight.y;\n\tskinned += boneMatZ * skinVertex * skinWeight.z;\n\tskinned += boneMatW * skinVertex * skinWeight.w;\n\ttransformed = ( bindMatrixInverse * skinned ).xyz;\n#endif`,Cu=`#ifdef USE_SKINNING\n\tmat4 skinMatrix = mat4( 0.0 );\n\tskinMatrix += skinWeight.x * boneMatX;\n\tskinMatrix += skinWeight.y * boneMatY;\n\tskinMatrix += skinWeight.z * boneMatZ;\n\tskinMatrix += skinWeight.w * boneMatW;\n\tskinMatrix = bindMatrixInverse * skinMatrix * bindMatrix;\n\tobjectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz;\n\t#ifdef USE_TANGENT\n\t\tobjectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz;\n\t#endif\n#endif`,Pu=`float specularStrength;\n#ifdef USE_SPECULARMAP\n\tvec4 texelSpecular = texture2D( specularMap, vUv );\n\tspecularStrength = texelSpecular.r;\n#else\n\tspecularStrength = 1.0;\n#endif`,Ru=`#ifdef USE_SPECULARMAP\n\tuniform sampler2D specularMap;\n#endif`,Lu=`#if defined( TONE_MAPPING )\n\tgl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\n#endif`,Iu=`#ifndef saturate\n#define saturate( a ) clamp( a, 0.0, 1.0 )\n#endif\nuniform float toneMappingExposure;\nvec3 LinearToneMapping( vec3 color ) {\n\treturn toneMappingExposure * color;\n}\nvec3 ReinhardToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\treturn saturate( color / ( vec3( 1.0 ) + color ) );\n}\nvec3 OptimizedCineonToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\tcolor = max( vec3( 0.0 ), color - 0.004 );\n\treturn pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );\n}\nvec3 RRTAndODTFit( vec3 v ) {\n\tvec3 a = v * ( v + 0.0245786 ) - 0.000090537;\n\tvec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081;\n\treturn a / b;\n}\nvec3 ACESFilmicToneMapping( vec3 color ) {\n\tconst mat3 ACESInputMat = mat3(\n\t\tvec3( 0.59719, 0.07600, 0.02840 ),\t\tvec3( 0.35458, 0.90834, 0.13383 ),\n\t\tvec3( 0.04823, 0.01566, 0.83777 )\n\t);\n\tconst mat3 ACESOutputMat = mat3(\n\t\tvec3( 1.60475, -0.10208, -0.00327 ),\t\tvec3( -0.53108, 1.10813, -0.07276 ),\n\t\tvec3( -0.07367, -0.00605, 1.07602 )\n\t);\n\tcolor *= toneMappingExposure / 0.6;\n\tcolor = ACESInputMat * color;\n\tcolor = RRTAndODTFit( color );\n\tcolor = ACESOutputMat * color;\n\treturn saturate( color );\n}\nvec3 CustomToneMapping( vec3 color ) { return color; }`,Du=`#ifdef USE_TRANSMISSION\n\tmaterial.transmission = transmission;\n\tmaterial.transmissionAlpha = 1.0;\n\tmaterial.thickness = thickness;\n\tmaterial.attenuationDistance = attenuationDistance;\n\tmaterial.attenuationColor = attenuationColor;\n\t#ifdef USE_TRANSMISSIONMAP\n\t\tmaterial.transmission *= texture2D( transmissionMap, vUv ).r;\n\t#endif\n\t#ifdef USE_THICKNESSMAP\n\t\tmaterial.thickness *= texture2D( thicknessMap, vUv ).g;\n\t#endif\n\tvec3 pos = vWorldPosition;\n\tvec3 v = normalize( cameraPosition - pos );\n\tvec3 n = inverseTransformDirection( normal, viewMatrix );\n\tvec4 transmission = getIBLVolumeRefraction(\n\t\tn, v, material.roughness, material.diffuseColor, material.specularColor, material.specularF90,\n\t\tpos, modelMatrix, viewMatrix, projectionMatrix, material.ior, material.thickness,\n\t\tmaterial.attenuationColor, material.attenuationDistance );\n\tmaterial.transmissionAlpha = mix( material.transmissionAlpha, transmission.a, material.transmission );\n\ttotalDiffuse = mix( totalDiffuse, transmission.rgb, material.transmission );\n#endif`,Nu=`#ifdef USE_TRANSMISSION\n\tuniform float transmission;\n\tuniform float thickness;\n\tuniform float attenuationDistance;\n\tuniform vec3 attenuationColor;\n\t#ifdef USE_TRANSMISSIONMAP\n\t\tuniform sampler2D transmissionMap;\n\t#endif\n\t#ifdef USE_THICKNESSMAP\n\t\tuniform sampler2D thicknessMap;\n\t#endif\n\tuniform vec2 transmissionSamplerSize;\n\tuniform sampler2D transmissionSamplerMap;\n\tuniform mat4 modelMatrix;\n\tuniform mat4 projectionMatrix;\n\tvarying vec3 vWorldPosition;\n\tvec3 getVolumeTransmissionRay( const in vec3 n, const in vec3 v, const in float thickness, const in float ior, const in mat4 modelMatrix ) {\n\t\tvec3 refractionVector = refract( - v, normalize( n ), 1.0 / ior );\n\t\tvec3 modelScale;\n\t\tmodelScale.x = length( vec3( modelMatrix[ 0 ].xyz ) );\n\t\tmodelScale.y = length( vec3( modelMatrix[ 1 ].xyz ) );\n\t\tmodelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) );\n\t\treturn normalize( refractionVector ) * thickness * modelScale;\n\t}\n\tfloat applyIorToRoughness( const in float roughness, const in float ior ) {\n\t\treturn roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 );\n\t}\n\tvec4 getTransmissionSample( const in vec2 fragCoord, const in float roughness, const in float ior ) {\n\t\tfloat framebufferLod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior );\n\t\t#ifdef texture2DLodEXT\n\t\t\treturn texture2DLodEXT( transmissionSamplerMap, fragCoord.xy, framebufferLod );\n\t\t#else\n\t\t\treturn texture2D( transmissionSamplerMap, fragCoord.xy, framebufferLod );\n\t\t#endif\n\t}\n\tvec3 applyVolumeAttenuation( const in vec3 radiance, const in float transmissionDistance, const in vec3 attenuationColor, const in float attenuationDistance ) {\n\t\tif ( isinf( attenuationDistance ) ) {\n\t\t\treturn radiance;\n\t\t} else {\n\t\t\tvec3 attenuationCoefficient = -log( attenuationColor ) / attenuationDistance;\n\t\t\tvec3 transmittance = exp( - attenuationCoefficient * transmissionDistance );\t\t\treturn transmittance * radiance;\n\t\t}\n\t}\n\tvec4 getIBLVolumeRefraction( const in vec3 n, const in vec3 v, const in float roughness, const in vec3 diffuseColor,\n\t\tconst in vec3 specularColor, const in float specularF90, const in vec3 position, const in mat4 modelMatrix,\n\t\tconst in mat4 viewMatrix, const in mat4 projMatrix, const in float ior, const in float thickness,\n\t\tconst in vec3 attenuationColor, const in float attenuationDistance ) {\n\t\tvec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix );\n\t\tvec3 refractedRayExit = position + transmissionRay;\n\t\tvec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 );\n\t\tvec2 refractionCoords = ndcPos.xy / ndcPos.w;\n\t\trefractionCoords += 1.0;\n\t\trefractionCoords /= 2.0;\n\t\tvec4 transmittedLight = getTransmissionSample( refractionCoords, roughness, ior );\n\t\tvec3 attenuatedColor = applyVolumeAttenuation( transmittedLight.rgb, length( transmissionRay ), attenuationColor, attenuationDistance );\n\t\tvec3 F = EnvironmentBRDF( n, v, specularColor, specularF90, roughness );\n\t\treturn vec4( ( 1.0 - F ) * attenuatedColor * diffuseColor, transmittedLight.a );\n\t}\n#endif`,Fu=`#if ( defined( USE_UV ) && ! defined( UVS_VERTEX_ONLY ) )\n\tvarying vec2 vUv;\n#endif`,zu=`#ifdef USE_UV\n\t#ifdef UVS_VERTEX_ONLY\n\t\tvec2 vUv;\n\t#else\n\t\tvarying vec2 vUv;\n\t#endif\n\tuniform mat3 uvTransform;\n#endif`,Ou=`#ifdef USE_UV\n\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n#endif`,Bu=`#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tvarying vec2 vUv2;\n#endif`,Uu=`#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tattribute vec2 uv2;\n\tvarying vec2 vUv2;\n\tuniform mat3 uv2Transform;\n#endif`,ku=`#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tvUv2 = ( uv2Transform * vec3( uv2, 1 ) ).xy;\n#endif`,Vu=`#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION ) || NUM_SPOT_LIGHT_COORDS > 0\n\tvec4 worldPosition = vec4( transformed, 1.0 );\n\t#ifdef USE_INSTANCING\n\t\tworldPosition = instanceMatrix * worldPosition;\n\t#endif\n\tworldPosition = modelMatrix * worldPosition;\n#endif`,Gu=`varying vec2 vUv;\nuniform mat3 uvTransform;\nvoid main() {\n\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n\tgl_Position = vec4( position.xy, 1.0, 1.0 );\n}`,Hu=`uniform sampler2D t2D;\nuniform float backgroundIntensity;\nvarying vec2 vUv;\nvoid main() {\n\tvec4 texColor = texture2D( t2D, vUv );\n\t#ifdef DECODE_VIDEO_TEXTURE\n\t\ttexColor = vec4( mix( pow( texColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), texColor.rgb * 0.0773993808, vec3( lessThanEqual( texColor.rgb, vec3( 0.04045 ) ) ) ), texColor.w );\n\t#endif\n\ttexColor.rgb *= backgroundIntensity;\n\tgl_FragColor = texColor;\n\t#include \n\t#include \n}`,Wu=`varying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include \n\t#include \n\tgl_Position.z = gl_Position.w;\n}`,qu=`#ifdef ENVMAP_TYPE_CUBE\n\tuniform samplerCube envMap;\n#elif defined( ENVMAP_TYPE_CUBE_UV )\n\tuniform sampler2D envMap;\n#endif\nuniform float flipEnvMap;\nuniform float backgroundBlurriness;\nuniform float backgroundIntensity;\nvarying vec3 vWorldDirection;\n#include \nvoid main() {\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tvec4 texColor = textureCube( envMap, vec3( flipEnvMap * vWorldDirection.x, vWorldDirection.yz ) );\n\t#elif defined( ENVMAP_TYPE_CUBE_UV )\n\t\tvec4 texColor = textureCubeUV( envMap, vWorldDirection, backgroundBlurriness );\n\t#else\n\t\tvec4 texColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\t#endif\n\ttexColor.rgb *= backgroundIntensity;\n\tgl_FragColor = texColor;\n\t#include \n\t#include \n}`,Xu=`varying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include \n\t#include \n\tgl_Position.z = gl_Position.w;\n}`,Yu=`uniform samplerCube tCube;\nuniform float tFlip;\nuniform float opacity;\nvarying vec3 vWorldDirection;\nvoid main() {\n\tvec4 texColor = textureCube( tCube, vec3( tFlip * vWorldDirection.x, vWorldDirection.yz ) );\n\tgl_FragColor = texColor;\n\tgl_FragColor.a *= opacity;\n\t#include \n\t#include \n}`,Zu=`#include \n#include \n#include \n#include \n#include \n#include \n#include \nvarying vec2 vHighPrecisionZW;\nvoid main() {\n\t#include \n\t#include \n\t#ifdef USE_DISPLACEMENTMAP\n\t\t#include \n\t\t#include \n\t\t#include \n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvHighPrecisionZW = gl_Position.zw;\n}`,Ju=`#if DEPTH_PACKING == 3200\n\tuniform float opacity;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvarying vec2 vHighPrecisionZW;\nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( 1.0 );\n\t#if DEPTH_PACKING == 3200\n\t\tdiffuseColor.a = opacity;\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\tfloat fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5;\n\t#if DEPTH_PACKING == 3200\n\t\tgl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );\n\t#elif DEPTH_PACKING == 3201\n\t\tgl_FragColor = packDepthToRGBA( fragCoordZ );\n\t#endif\n}`,$u=`#define DISTANCE\nvarying vec3 vWorldPosition;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#ifdef USE_DISPLACEMENTMAP\n\t\t#include \n\t\t#include \n\t\t#include \n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvWorldPosition = worldPosition.xyz;\n}`,Ku=`#define DISTANCE\nuniform vec3 referencePosition;\nuniform float nearDistance;\nuniform float farDistance;\nvarying vec3 vWorldPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main () {\n\t#include \n\tvec4 diffuseColor = vec4( 1.0 );\n\t#include \n\t#include \n\t#include \n\tfloat dist = length( vWorldPosition - referencePosition );\n\tdist = ( dist - nearDistance ) / ( farDistance - nearDistance );\n\tdist = saturate( dist );\n\tgl_FragColor = packDepthToRGBA( dist );\n}`,ju=`varying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include \n\t#include \n}`,Qu=`uniform sampler2D tEquirect;\nvarying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvec3 direction = normalize( vWorldDirection );\n\tvec2 sampleUV = equirectUv( direction );\n\tgl_FragColor = texture2D( tEquirect, sampleUV );\n\t#include \n\t#include \n}`,tf=`uniform float scale;\nattribute float lineDistance;\nvarying float vLineDistance;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\tvLineDistance = scale * lineDistance;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}`,ef=`uniform vec3 diffuse;\nuniform float opacity;\nuniform float dashSize;\nuniform float totalSize;\nvarying float vLineDistance;\n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tif ( mod( vLineDistance, totalSize ) > dashSize ) {\n\t\tdiscard;\n\t}\n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\toutgoingLight = diffuseColor.rgb;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}`,nf=`#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#if defined ( USE_ENVMAP ) || defined ( USE_SKINNING )\n\t\t#include \n\t\t#include \n\t\t#include \n\t\t#include \n\t\t#include \n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}`,sf=`uniform vec3 diffuse;\nuniform float opacity;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\t#ifdef USE_LIGHTMAP\n\t\tvec4 lightMapTexel = texture2D( lightMap, vUv2 );\n\t\treflectedLight.indirectDiffuse += lightMapTexel.rgb * lightMapIntensity * RECIPROCAL_PI;\n\t#else\n\t\treflectedLight.indirectDiffuse += vec3( 1.0 );\n\t#endif\n\t#include \n\treflectedLight.indirectDiffuse *= diffuseColor.rgb;\n\tvec3 outgoingLight = reflectedLight.indirectDiffuse;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}`,rf=`#define LAMBERT\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n\t#include \n\t#include \n\t#include \n\t#include \n}`,of=`#define LAMBERT\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}`,af=`#define MATCAP\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n}`,cf=`#define MATCAP\nuniform vec3 diffuse;\nuniform float opacity;\nuniform sampler2D matcap;\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 viewDir = normalize( vViewPosition );\n\tvec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );\n\tvec3 y = cross( viewDir, x );\n\tvec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5;\n\t#ifdef USE_MATCAP\n\t\tvec4 matcapColor = texture2D( matcap, uv );\n\t#else\n\t\tvec4 matcapColor = vec4( vec3( mix( 0.2, 0.8, uv.y ) ), 1.0 );\n\t#endif\n\tvec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}`,lf=`#define NORMAL\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\n\tvarying vec3 vViewPosition;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\n\tvViewPosition = - mvPosition.xyz;\n#endif\n}`,hf=`#define NORMAL\nuniform float opacity;\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\n\tvarying vec3 vViewPosition;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\tgl_FragColor = vec4( packNormalToRGB( normal ), opacity );\n\t#ifdef OPAQUE\n\t\tgl_FragColor.a = 1.0;\n\t#endif\n}`,uf=`#define PHONG\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n\t#include \n\t#include \n\t#include \n\t#include \n}`,ff=`#define PHONG\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform vec3 specular;\nuniform float shininess;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}`,df=`#define STANDARD\nvarying vec3 vViewPosition;\n#ifdef USE_TRANSMISSION\n\tvarying vec3 vWorldPosition;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n\t#include \n\t#include \n\t#include \n#ifdef USE_TRANSMISSION\n\tvWorldPosition = worldPosition.xyz;\n#endif\n}`,pf=`#define STANDARD\n#ifdef PHYSICAL\n\t#define IOR\n\t#define SPECULAR\n#endif\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float roughness;\nuniform float metalness;\nuniform float opacity;\n#ifdef IOR\n\tuniform float ior;\n#endif\n#ifdef SPECULAR\n\tuniform float specularIntensity;\n\tuniform vec3 specularColor;\n\t#ifdef USE_SPECULARINTENSITYMAP\n\t\tuniform sampler2D specularIntensityMap;\n\t#endif\n\t#ifdef USE_SPECULARCOLORMAP\n\t\tuniform sampler2D specularColorMap;\n\t#endif\n#endif\n#ifdef USE_CLEARCOAT\n\tuniform float clearcoat;\n\tuniform float clearcoatRoughness;\n#endif\n#ifdef USE_IRIDESCENCE\n\tuniform float iridescence;\n\tuniform float iridescenceIOR;\n\tuniform float iridescenceThicknessMinimum;\n\tuniform float iridescenceThicknessMaximum;\n#endif\n#ifdef USE_SHEEN\n\tuniform vec3 sheenColor;\n\tuniform float sheenRoughness;\n\t#ifdef USE_SHEENCOLORMAP\n\t\tuniform sampler2D sheenColorMap;\n\t#endif\n\t#ifdef USE_SHEENROUGHNESSMAP\n\t\tuniform sampler2D sheenRoughnessMap;\n\t#endif\n#endif\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse;\n\tvec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular;\n\t#include \n\tvec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance;\n\t#ifdef USE_SHEEN\n\t\tfloat sheenEnergyComp = 1.0 - 0.157 * max3( material.sheenColor );\n\t\toutgoingLight = outgoingLight * sheenEnergyComp + sheenSpecular;\n\t#endif\n\t#ifdef USE_CLEARCOAT\n\t\tfloat dotNVcc = saturate( dot( geometry.clearcoatNormal, geometry.viewDir ) );\n\t\tvec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc );\n\t\toutgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + clearcoatSpecular * material.clearcoat;\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}`,mf=`#define TOON\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n\t#include \n\t#include \n\t#include \n}`,gf=`#define TOON\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}`,xf=`uniform float size;\nuniform float scale;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tgl_PointSize = size;\n\t#ifdef USE_SIZEATTENUATION\n\t\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\n\t\tif ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z );\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n}`,_f=`uniform vec3 diffuse;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\toutgoingLight = diffuseColor.rgb;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}`,yf=`#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}`,vf=`uniform vec3 color;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\tgl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );\n\t#include \n\t#include \n\t#include \n}`,Mf=`uniform float rotation;\nuniform vec2 center;\n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );\n\tvec2 scale;\n\tscale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) );\n\tscale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) );\n\t#ifndef USE_SIZEATTENUATION\n\t\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\n\t\tif ( isPerspective ) scale *= - mvPosition.z;\n\t#endif\n\tvec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale;\n\tvec2 rotatedPosition;\n\trotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;\n\trotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;\n\tmvPosition.xy += rotatedPosition;\n\tgl_Position = projectionMatrix * mvPosition;\n\t#include \n\t#include \n\t#include \n}`,bf=`uniform vec3 diffuse;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\toutgoingLight = diffuseColor.rgb;\n\t#include \n\t#include \n\t#include \n\t#include \n}`,wt={alphamap_fragment:Wl,alphamap_pars_fragment:ql,alphatest_fragment:Xl,alphatest_pars_fragment:Yl,aomap_fragment:Zl,aomap_pars_fragment:Jl,begin_vertex:$l,beginnormal_vertex:Kl,bsdfs:jl,iridescence_fragment:Ql,bumpmap_pars_fragment:th,clipping_planes_fragment:eh,clipping_planes_pars_fragment:nh,clipping_planes_pars_vertex:ih,clipping_planes_vertex:sh,color_fragment:rh,color_pars_fragment:oh,color_pars_vertex:ah,color_vertex:ch,common:lh,cube_uv_reflection_fragment:hh,defaultnormal_vertex:uh,displacementmap_pars_vertex:fh,displacementmap_vertex:dh,emissivemap_fragment:ph,emissivemap_pars_fragment:mh,encodings_fragment:gh,encodings_pars_fragment:xh,envmap_fragment:_h,envmap_common_pars_fragment:yh,envmap_pars_fragment:vh,envmap_pars_vertex:Mh,envmap_physical_pars_fragment:Dh,envmap_vertex:bh,fog_vertex:wh,fog_pars_vertex:Sh,fog_fragment:Th,fog_pars_fragment:Ah,gradientmap_pars_fragment:Eh,lightmap_fragment:Ch,lightmap_pars_fragment:Ph,lights_lambert_fragment:Rh,lights_lambert_pars_fragment:Lh,lights_pars_begin:Ih,lights_toon_fragment:Nh,lights_toon_pars_fragment:Fh,lights_phong_fragment:zh,lights_phong_pars_fragment:Oh,lights_physical_fragment:Bh,lights_physical_pars_fragment:Uh,lights_fragment_begin:kh,lights_fragment_maps:Vh,lights_fragment_end:Gh,logdepthbuf_fragment:Hh,logdepthbuf_pars_fragment:Wh,logdepthbuf_pars_vertex:qh,logdepthbuf_vertex:Xh,map_fragment:Yh,map_pars_fragment:Zh,map_particle_fragment:Jh,map_particle_pars_fragment:$h,metalnessmap_fragment:Kh,metalnessmap_pars_fragment:jh,morphcolor_vertex:Qh,morphnormal_vertex:tu,morphtarget_pars_vertex:eu,morphtarget_vertex:nu,normal_fragment_begin:iu,normal_fragment_maps:su,normal_pars_fragment:ru,normal_pars_vertex:ou,normal_vertex:au,normalmap_pars_fragment:cu,clearcoat_normal_fragment_begin:lu,clearcoat_normal_fragment_maps:hu,clearcoat_pars_fragment:uu,iridescence_pars_fragment:fu,output_fragment:du,packing:pu,premultiplied_alpha_fragment:mu,project_vertex:gu,dithering_fragment:xu,dithering_pars_fragment:_u,roughnessmap_fragment:yu,roughnessmap_pars_fragment:vu,shadowmap_pars_fragment:Mu,shadowmap_pars_vertex:bu,shadowmap_vertex:wu,shadowmask_pars_fragment:Su,skinbase_vertex:Tu,skinning_pars_vertex:Au,skinning_vertex:Eu,skinnormal_vertex:Cu,specularmap_fragment:Pu,specularmap_pars_fragment:Ru,tonemapping_fragment:Lu,tonemapping_pars_fragment:Iu,transmission_fragment:Du,transmission_pars_fragment:Nu,uv_pars_fragment:Fu,uv_pars_vertex:zu,uv_vertex:Ou,uv2_pars_fragment:Bu,uv2_pars_vertex:Uu,uv2_vertex:ku,worldpos_vertex:Vu,background_vert:Gu,background_frag:Hu,backgroundCube_vert:Wu,backgroundCube_frag:qu,cube_vert:Xu,cube_frag:Yu,depth_vert:Zu,depth_frag:Ju,distanceRGBA_vert:$u,distanceRGBA_frag:Ku,equirect_vert:ju,equirect_frag:Qu,linedashed_vert:tf,linedashed_frag:ef,meshbasic_vert:nf,meshbasic_frag:sf,meshlambert_vert:rf,meshlambert_frag:of,meshmatcap_vert:af,meshmatcap_frag:cf,meshnormal_vert:lf,meshnormal_frag:hf,meshphong_vert:uf,meshphong_frag:ff,meshphysical_vert:df,meshphysical_frag:pf,meshtoon_vert:mf,meshtoon_frag:gf,points_vert:xf,points_frag:_f,shadow_vert:yf,shadow_frag:vf,sprite_vert:Mf,sprite_frag:bf},et={common:{diffuse:{value:new Bt(16777215)},opacity:{value:1},map:{value:null},uvTransform:{value:new le},uv2Transform:{value:new le},alphaMap:{value:null},alphaTest:{value:0}},specularmap:{specularMap:{value:null}},envmap:{envMap:{value:null},flipEnvMap:{value:-1},reflectivity:{value:1},ior:{value:1.5},refractionRatio:{value:.98}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1}},emissivemap:{emissiveMap:{value:null}},bumpmap:{bumpMap:{value:null},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalScale:{value:new At(1,1)}},displacementmap:{displacementMap:{value:null},displacementScale:{value:1},displacementBias:{value:0}},roughnessmap:{roughnessMap:{value:null}},metalnessmap:{metalnessMap:{value:null}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new Bt(16777215)}},lights:{ambientLightColor:{value:[]},lightProbe:{value:[]},directionalLights:{value:[],properties:{direction:{},color:{}}},directionalLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},directionalShadowMap:{value:[]},directionalShadowMatrix:{value:[]},spotLights:{value:[],properties:{color:{},position:{},direction:{},distance:{},coneCos:{},penumbraCos:{},decay:{}}},spotLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},spotLightMap:{value:[]},spotShadowMap:{value:[]},spotLightMatrix:{value:[]},pointLights:{value:[],properties:{color:{},position:{},decay:{},distance:{}}},pointLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{},shadowCameraNear:{},shadowCameraFar:{}}},pointShadowMap:{value:[]},pointShadowMatrix:{value:[]},hemisphereLights:{value:[],properties:{direction:{},skyColor:{},groundColor:{}}},rectAreaLights:{value:[],properties:{color:{},position:{},width:{},height:{}}},ltc_1:{value:null},ltc_2:{value:null}},points:{diffuse:{value:new Bt(16777215)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},alphaTest:{value:0},uvTransform:{value:new le}},sprite:{diffuse:{value:new Bt(16777215)},opacity:{value:1},center:{value:new At(.5,.5)},rotation:{value:0},map:{value:null},alphaMap:{value:null},alphaTest:{value:0},uvTransform:{value:new le}}},He={basic:{uniforms:ae([et.common,et.specularmap,et.envmap,et.aomap,et.lightmap,et.fog]),vertexShader:wt.meshbasic_vert,fragmentShader:wt.meshbasic_frag},lambert:{uniforms:ae([et.common,et.specularmap,et.envmap,et.aomap,et.lightmap,et.emissivemap,et.bumpmap,et.normalmap,et.displacementmap,et.fog,et.lights,{emissive:{value:new Bt(0)}}]),vertexShader:wt.meshlambert_vert,fragmentShader:wt.meshlambert_frag},phong:{uniforms:ae([et.common,et.specularmap,et.envmap,et.aomap,et.lightmap,et.emissivemap,et.bumpmap,et.normalmap,et.displacementmap,et.fog,et.lights,{emissive:{value:new Bt(0)},specular:{value:new Bt(1118481)},shininess:{value:30}}]),vertexShader:wt.meshphong_vert,fragmentShader:wt.meshphong_frag},standard:{uniforms:ae([et.common,et.envmap,et.aomap,et.lightmap,et.emissivemap,et.bumpmap,et.normalmap,et.displacementmap,et.roughnessmap,et.metalnessmap,et.fog,et.lights,{emissive:{value:new Bt(0)},roughness:{value:1},metalness:{value:0},envMapIntensity:{value:1}}]),vertexShader:wt.meshphysical_vert,fragmentShader:wt.meshphysical_frag},toon:{uniforms:ae([et.common,et.aomap,et.lightmap,et.emissivemap,et.bumpmap,et.normalmap,et.displacementmap,et.gradientmap,et.fog,et.lights,{emissive:{value:new Bt(0)}}]),vertexShader:wt.meshtoon_vert,fragmentShader:wt.meshtoon_frag},matcap:{uniforms:ae([et.common,et.bumpmap,et.normalmap,et.displacementmap,et.fog,{matcap:{value:null}}]),vertexShader:wt.meshmatcap_vert,fragmentShader:wt.meshmatcap_frag},points:{uniforms:ae([et.points,et.fog]),vertexShader:wt.points_vert,fragmentShader:wt.points_frag},dashed:{uniforms:ae([et.common,et.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:wt.linedashed_vert,fragmentShader:wt.linedashed_frag},depth:{uniforms:ae([et.common,et.displacementmap]),vertexShader:wt.depth_vert,fragmentShader:wt.depth_frag},normal:{uniforms:ae([et.common,et.bumpmap,et.normalmap,et.displacementmap,{opacity:{value:1}}]),vertexShader:wt.meshnormal_vert,fragmentShader:wt.meshnormal_frag},sprite:{uniforms:ae([et.sprite,et.fog]),vertexShader:wt.sprite_vert,fragmentShader:wt.sprite_frag},background:{uniforms:{uvTransform:{value:new le},t2D:{value:null},backgroundIntensity:{value:1}},vertexShader:wt.background_vert,fragmentShader:wt.background_frag},backgroundCube:{uniforms:{envMap:{value:null},flipEnvMap:{value:-1},backgroundBlurriness:{value:0},backgroundIntensity:{value:1}},vertexShader:wt.backgroundCube_vert,fragmentShader:wt.backgroundCube_frag},cube:{uniforms:{tCube:{value:null},tFlip:{value:-1},opacity:{value:1}},vertexShader:wt.cube_vert,fragmentShader:wt.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:wt.equirect_vert,fragmentShader:wt.equirect_frag},distanceRGBA:{uniforms:ae([et.common,et.displacementmap,{referencePosition:{value:new R},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:wt.distanceRGBA_vert,fragmentShader:wt.distanceRGBA_frag},shadow:{uniforms:ae([et.lights,et.fog,{color:{value:new Bt(0)},opacity:{value:1}}]),vertexShader:wt.shadow_vert,fragmentShader:wt.shadow_frag}};He.physical={uniforms:ae([He.standard.uniforms,{clearcoat:{value:0},clearcoatMap:{value:null},clearcoatRoughness:{value:0},clearcoatRoughnessMap:{value:null},clearcoatNormalScale:{value:new At(1,1)},clearcoatNormalMap:{value:null},iridescence:{value:0},iridescenceMap:{value:null},iridescenceIOR:{value:1.3},iridescenceThicknessMinimum:{value:100},iridescenceThicknessMaximum:{value:400},iridescenceThicknessMap:{value:null},sheen:{value:0},sheenColor:{value:new Bt(0)},sheenColorMap:{value:null},sheenRoughness:{value:1},sheenRoughnessMap:{value:null},transmission:{value:0},transmissionMap:{value:null},transmissionSamplerSize:{value:new At},transmissionSamplerMap:{value:null},thickness:{value:0},thicknessMap:{value:null},attenuationDistance:{value:0},attenuationColor:{value:new Bt(0)},specularIntensity:{value:1},specularIntensityMap:{value:null},specularColor:{value:new Bt(1,1,1)},specularColorMap:{value:null}}]),vertexShader:wt.meshphysical_vert,fragmentShader:wt.meshphysical_frag};var fs={r:0,b:0,g:0};function wf(r,t,e,n,i,s,a){let o=new Bt(0),c=s===!0?0:1,l,h,f=null,u=0,m=null;function x(d,g){let M=!1,_=g.isScene===!0?g.background:null;_&&_.isTexture&&(_=(g.backgroundBlurriness>0?e:t).get(_));let v=r.xr,b=v.getSession&&v.getSession();b&&b.environmentBlendMode==="additive"&&(_=null),_===null?p(o,c):_&&_.isColor&&(p(_,1),M=!0),(r.autoClear||M)&&r.clear(r.autoClearColor,r.autoClearDepth,r.autoClearStencil),_&&(_.isCubeTexture||_.mapping===Ls)?(h===void 0&&(h=new qe(new zn(1,1,1),new on({name:"BackgroundCubeMaterial",uniforms:di(He.backgroundCube.uniforms),vertexShader:He.backgroundCube.vertexShader,fragmentShader:He.backgroundCube.fragmentShader,side:he,depthTest:!1,depthWrite:!1,fog:!1})),h.geometry.deleteAttribute("normal"),h.geometry.deleteAttribute("uv"),h.onBeforeRender=function(A,C,y){this.matrixWorld.copyPosition(y.matrixWorld)},Object.defineProperty(h.material,"envMap",{get:function(){return this.uniforms.envMap.value}}),i.update(h)),h.material.uniforms.envMap.value=_,h.material.uniforms.flipEnvMap.value=_.isCubeTexture&&_.isRenderTargetTexture===!1?-1:1,h.material.uniforms.backgroundBlurriness.value=g.backgroundBlurriness,h.material.uniforms.backgroundIntensity.value=g.backgroundIntensity,h.material.toneMapped=_.encoding!==Ot,(f!==_||u!==_.version||m!==r.toneMapping)&&(h.material.needsUpdate=!0,f=_,u=_.version,m=r.toneMapping),h.layers.enableAll(),d.unshift(h,h.geometry,h.material,0,0,null)):_&&_.isTexture&&(l===void 0&&(l=new qe(new ki(2,2),new on({name:"BackgroundMaterial",uniforms:di(He.background.uniforms),vertexShader:He.background.vertexShader,fragmentShader:He.background.fragmentShader,side:Ue,depthTest:!1,depthWrite:!1,fog:!1})),l.geometry.deleteAttribute("normal"),Object.defineProperty(l.material,"map",{get:function(){return this.uniforms.t2D.value}}),i.update(l)),l.material.uniforms.t2D.value=_,l.material.uniforms.backgroundIntensity.value=g.backgroundIntensity,l.material.toneMapped=_.encoding!==Ot,_.matrixAutoUpdate===!0&&_.updateMatrix(),l.material.uniforms.uvTransform.value.copy(_.matrix),(f!==_||u!==_.version||m!==r.toneMapping)&&(l.material.needsUpdate=!0,f=_,u=_.version,m=r.toneMapping),l.layers.enableAll(),d.unshift(l,l.geometry,l.material,0,0,null))}function p(d,g){d.getRGB(fs,ja(r)),n.buffers.color.setClear(fs.r,fs.g,fs.b,g,a)}return{getClearColor:function(){return o},setClearColor:function(d,g=1){o.set(d),c=g,p(o,c)},getClearAlpha:function(){return c},setClearAlpha:function(d){c=d,p(o,c)},render:x}}function Sf(r,t,e,n){let i=r.getParameter(34921),s=n.isWebGL2?null:t.get("OES_vertex_array_object"),a=n.isWebGL2||s!==null,o={},c=d(null),l=c,h=!1;function f(I,k,Y,Z,H){let $=!1;if(a){let J=p(Z,Y,k);l!==J&&(l=J,m(l.object)),$=g(I,Z,Y,H),$&&M(I,Z,Y,H)}else{let J=k.wireframe===!0;(l.geometry!==Z.id||l.program!==Y.id||l.wireframe!==J)&&(l.geometry=Z.id,l.program=Y.id,l.wireframe=J,$=!0)}H!==null&&e.update(H,34963),($||h)&&(h=!1,y(I,k,Y,Z),H!==null&&r.bindBuffer(34963,e.get(H).buffer))}function u(){return n.isWebGL2?r.createVertexArray():s.createVertexArrayOES()}function m(I){return n.isWebGL2?r.bindVertexArray(I):s.bindVertexArrayOES(I)}function x(I){return n.isWebGL2?r.deleteVertexArray(I):s.deleteVertexArrayOES(I)}function p(I,k,Y){let Z=Y.wireframe===!0,H=o[I.id];H===void 0&&(H={},o[I.id]=H);let $=H[k.id];$===void 0&&($={},H[k.id]=$);let J=$[Z];return J===void 0&&(J=d(u()),$[Z]=J),J}function d(I){let k=[],Y=[],Z=[];for(let H=0;H=0){let nt=H[z],it=$[z];if(it===void 0&&(z==="instanceMatrix"&&I.instanceMatrix&&(it=I.instanceMatrix),z==="instanceColor"&&I.instanceColor&&(it=I.instanceColor)),nt===void 0||nt.attribute!==it||it&&nt.data!==it.data)return!0;J++}return l.attributesNum!==J||l.index!==Z}function M(I,k,Y,Z){let H={},$=k.attributes,J=0,dt=Y.getAttributes();for(let z in dt)if(dt[z].location>=0){let nt=$[z];nt===void 0&&(z==="instanceMatrix"&&I.instanceMatrix&&(nt=I.instanceMatrix),z==="instanceColor"&&I.instanceColor&&(nt=I.instanceColor));let it={};it.attribute=nt,nt&&nt.data&&(it.data=nt.data),H[z]=it,J++}l.attributes=H,l.attributesNum=J,l.index=Z}function _(){let I=l.newAttributes;for(let k=0,Y=I.length;k=0){let K=H[dt];if(K===void 0&&(dt==="instanceMatrix"&&I.instanceMatrix&&(K=I.instanceMatrix),dt==="instanceColor"&&I.instanceColor&&(K=I.instanceColor)),K!==void 0){let nt=K.normalized,it=K.itemSize,U=e.get(K);if(U===void 0)continue;let Mt=U.buffer,ht=U.type,ut=U.bytesPerElement;if(K.isInterleavedBufferAttribute){let at=K.data,Ft=at.stride,bt=K.offset;if(at.isInstancedInterleavedBuffer){for(let _t=0;_t0&&r.getShaderPrecisionFormat(35632,36338).precision>0)return"highp";C="mediump"}return C==="mediump"&&r.getShaderPrecisionFormat(35633,36337).precision>0&&r.getShaderPrecisionFormat(35632,36337).precision>0?"mediump":"lowp"}let a=typeof WebGL2RenderingContext!="undefined"&&r instanceof WebGL2RenderingContext,o=e.precision!==void 0?e.precision:"highp",c=s(o);c!==o&&(console.warn("THREE.WebGLRenderer:",o,"not supported, using",c,"instead."),o=c);let l=a||t.has("WEBGL_draw_buffers"),h=e.logarithmicDepthBuffer===!0,f=r.getParameter(34930),u=r.getParameter(35660),m=r.getParameter(3379),x=r.getParameter(34076),p=r.getParameter(34921),d=r.getParameter(36347),g=r.getParameter(36348),M=r.getParameter(36349),_=u>0,v=a||t.has("OES_texture_float"),b=_&&v,A=a?r.getParameter(36183):0;return{isWebGL2:a,drawBuffers:l,getMaxAnisotropy:i,getMaxPrecision:s,precision:o,logarithmicDepthBuffer:h,maxTextures:f,maxVertexTextures:u,maxTextureSize:m,maxCubemapSize:x,maxAttributes:p,maxVertexUniforms:d,maxVaryings:g,maxFragmentUniforms:M,vertexTextures:_,floatFragmentTextures:v,floatVertexTextures:b,maxSamples:A}}function Ef(r){let t=this,e=null,n=0,i=!1,s=!1,a=new Te,o=new le,c={value:null,needsUpdate:!1};this.uniform=c,this.numPlanes=0,this.numIntersection=0,this.init=function(f,u){let m=f.length!==0||u||n!==0||i;return i=u,n=f.length,m},this.beginShadows=function(){s=!0,h(null)},this.endShadows=function(){s=!1},this.setGlobalState=function(f,u){e=h(f,u,0)},this.setState=function(f,u,m){let x=f.clippingPlanes,p=f.clipIntersection,d=f.clipShadows,g=r.get(f);if(!i||x===null||x.length===0||s&&!d)s?h(null):l();else{let M=s?0:n,_=M*4,v=g.clippingState||null;c.value=v,v=h(x,u,_,m);for(let b=0;b!==_;++b)v[b]=e[b];g.clippingState=v,this.numIntersection=p?this.numPlanes:0,this.numPlanes+=M}};function l(){c.value!==e&&(c.value=e,c.needsUpdate=n>0),t.numPlanes=n,t.numIntersection=0}function h(f,u,m,x){let p=f!==null?f.length:0,d=null;if(p!==0){if(d=c.value,x!==!0||d===null){let g=m+p*4,M=u.matrixWorldInverse;o.getNormalMatrix(M),(d===null||d.length0){let l=new Or(c.height/2);return l.fromEquirectangularTexture(r,a),t.set(a,l),a.addEventListener("dispose",i),e(l.texture,a.mapping)}else return null}}return a}function i(a){let o=a.target;o.removeEventListener("dispose",i);let c=t.get(o);c!==void 0&&(t.delete(o),c.dispose())}function s(){t=new WeakMap}return{get:n,dispose:s}}var Br=class extends Es{constructor(t=-1,e=1,n=1,i=-1,s=.1,a=2e3){super(),this.isOrthographicCamera=!0,this.type="OrthographicCamera",this.zoom=1,this.view=null,this.left=t,this.right=e,this.top=n,this.bottom=i,this.near=s,this.far=a,this.updateProjectionMatrix()}copy(t,e){return super.copy(t,e),this.left=t.left,this.right=t.right,this.top=t.top,this.bottom=t.bottom,this.near=t.near,this.far=t.far,this.zoom=t.zoom,this.view=t.view===null?null:Object.assign({},t.view),this}setViewOffset(t,e,n,i,s,a){this.view===null&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=t,this.view.fullHeight=e,this.view.offsetX=n,this.view.offsetY=i,this.view.width=s,this.view.height=a,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){let t=(this.right-this.left)/(2*this.zoom),e=(this.top-this.bottom)/(2*this.zoom),n=(this.right+this.left)/2,i=(this.top+this.bottom)/2,s=n-t,a=n+t,o=i+e,c=i-e;if(this.view!==null&&this.view.enabled){let l=(this.right-this.left)/this.view.fullWidth/this.zoom,h=(this.top-this.bottom)/this.view.fullHeight/this.zoom;s+=l*this.view.offsetX,a=s+l*this.view.width,o-=h*this.view.offsetY,c=o-h*this.view.height}this.projectionMatrix.makeOrthographic(s,a,o,c,this.near,this.far),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(t){let e=super.toJSON(t);return e.object.zoom=this.zoom,e.object.left=this.left,e.object.right=this.right,e.object.top=this.top,e.object.bottom=this.bottom,e.object.near=this.near,e.object.far=this.far,this.view!==null&&(e.object.view=Object.assign({},this.view)),e}},ii=4,ba=[.125,.215,.35,.446,.526,.582],Cn=20,Sr=new Br,wa=new Bt,Tr=null,En=(1+Math.sqrt(5))/2,ei=1/En,Sa=[new R(1,1,1),new R(-1,1,1),new R(1,1,-1),new R(-1,1,-1),new R(0,En,ei),new R(0,En,-ei),new R(ei,0,En),new R(-ei,0,En),new R(En,ei,0),new R(-En,ei,0)],Rs=class{constructor(t){this._renderer=t,this._pingPongRenderTarget=null,this._lodMax=0,this._cubeSize=0,this._lodPlanes=[],this._sizeLods=[],this._sigmas=[],this._blurMaterial=null,this._cubemapMaterial=null,this._equirectMaterial=null,this._compileMaterial(this._blurMaterial)}fromScene(t,e=0,n=.1,i=100){Tr=this._renderer.getRenderTarget(),this._setSize(256);let s=this._allocateTargets();return s.depthBuffer=!0,this._sceneToCubeUV(t,n,i,s),e>0&&this._blur(s,0,0,e),this._applyPMREM(s),this._cleanup(s),s}fromEquirectangular(t,e=null){return this._fromTexture(t,e)}fromCubemap(t,e=null){return this._fromTexture(t,e)}compileCubemapShader(){this._cubemapMaterial===null&&(this._cubemapMaterial=Ea(),this._compileMaterial(this._cubemapMaterial))}compileEquirectangularShader(){this._equirectMaterial===null&&(this._equirectMaterial=Aa(),this._compileMaterial(this._equirectMaterial))}dispose(){this._dispose(),this._cubemapMaterial!==null&&this._cubemapMaterial.dispose(),this._equirectMaterial!==null&&this._equirectMaterial.dispose()}_setSize(t){this._lodMax=Math.floor(Math.log2(t)),this._cubeSize=Math.pow(2,this._lodMax)}_dispose(){this._blurMaterial!==null&&this._blurMaterial.dispose(),this._pingPongRenderTarget!==null&&this._pingPongRenderTarget.dispose();for(let t=0;t2?_:0,_,_),h.setRenderTarget(i),p&&h.render(x,o),h.render(t,o)}x.geometry.dispose(),x.material.dispose(),h.toneMapping=u,h.autoClear=f,t.background=d}_textureToCubeUV(t,e){let n=this._renderer,i=t.mapping===ci||t.mapping===li;i?(this._cubemapMaterial===null&&(this._cubemapMaterial=Ea()),this._cubemapMaterial.uniforms.flipEnvMap.value=t.isRenderTargetTexture===!1?-1:1):this._equirectMaterial===null&&(this._equirectMaterial=Aa());let s=i?this._cubemapMaterial:this._equirectMaterial,a=new qe(this._lodPlanes[0],s),o=s.uniforms;o.envMap.value=t;let c=this._cubeSize;ds(e,0,0,3*c,2*c),n.setRenderTarget(e),n.render(a,Sr)}_applyPMREM(t){let e=this._renderer,n=e.autoClear;e.autoClear=!1;for(let i=1;iCn&&console.warn(`sigmaRadians, ${s}, is too large and will clip, as it requested ${d} samples when the maximum is set to ${Cn}`);let g=[],M=0;for(let C=0;C_-ii?i-_+ii:0),A=4*(this._cubeSize-v);ds(e,b,A,3*v,2*v),c.setRenderTarget(e),c.render(f,Sr)}};function Pf(r){let t=[],e=[],n=[],i=r,s=r-ii+1+ba.length;for(let a=0;ar-ii?c=ba[a-r+ii-1]:a===0&&(c=0),n.push(c);let l=1/(o-2),h=-l,f=1+l,u=[h,h,f,h,f,f,h,h,f,f,h,f],m=6,x=6,p=3,d=2,g=1,M=new Float32Array(p*x*m),_=new Float32Array(d*x*m),v=new Float32Array(g*x*m);for(let A=0;A2?0:-1,S=[C,y,0,C+2/3,y,0,C+2/3,y+1,0,C,y,0,C+2/3,y+1,0,C,y+1,0];M.set(S,p*x*A),_.set(u,d*x*A);let P=[A,A,A,A,A,A];v.set(P,g*x*A)}let b=new ke;b.setAttribute("position",new Yt(M,p)),b.setAttribute("uv",new Yt(_,d)),b.setAttribute("faceIndex",new Yt(v,g)),t.push(b),i>ii&&i--}return{lodPlanes:t,sizeLods:e,sigmas:n}}function Ta(r,t,e){let n=new rn(r,t,e);return n.texture.mapping=Ls,n.texture.name="PMREM.cubeUv",n.scissorTest=!0,n}function ds(r,t,e,n,i){r.viewport.set(t,e,n,i),r.scissor.set(t,e,n,i)}function Rf(r,t,e){let n=new Float32Array(Cn),i=new R(0,1,0);return new on({name:"SphericalGaussianBlur",defines:{n:Cn,CUBEUV_TEXEL_WIDTH:1/t,CUBEUV_TEXEL_HEIGHT:1/e,CUBEUV_MAX_MIP:`${r}.0`},uniforms:{envMap:{value:null},samples:{value:1},weights:{value:n},latitudinal:{value:!1},dTheta:{value:0},mipInt:{value:0},poleAxis:{value:i}},vertexShader:oo(),fragmentShader:`\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\t\t\tuniform int samples;\n\t\t\tuniform float weights[ n ];\n\t\t\tuniform bool latitudinal;\n\t\t\tuniform float dTheta;\n\t\t\tuniform float mipInt;\n\t\t\tuniform vec3 poleAxis;\n\n\t\t\t#define ENVMAP_TYPE_CUBE_UV\n\t\t\t#include \n\n\t\t\tvec3 getSample( float theta, vec3 axis ) {\n\n\t\t\t\tfloat cosTheta = cos( theta );\n\t\t\t\t// Rodrigues\' axis-angle rotation\n\t\t\t\tvec3 sampleDirection = vOutputDirection * cosTheta\n\t\t\t\t\t+ cross( axis, vOutputDirection ) * sin( theta )\n\t\t\t\t\t+ axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta );\n\n\t\t\t\treturn bilinearCubeUV( envMap, sampleDirection, mipInt );\n\n\t\t\t}\n\n\t\t\tvoid main() {\n\n\t\t\t\tvec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection );\n\n\t\t\t\tif ( all( equal( axis, vec3( 0.0 ) ) ) ) {\n\n\t\t\t\t\taxis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x );\n\n\t\t\t\t}\n\n\t\t\t\taxis = normalize( axis );\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\t\t\t\tgl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis );\n\n\t\t\t\tfor ( int i = 1; i < n; i++ ) {\n\n\t\t\t\t\tif ( i >= samples ) {\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfloat theta = dTheta * float( i );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( theta, axis );\n\n\t\t\t\t}\n\n\t\t\t}\n\t\t`,blending:pn,depthTest:!1,depthWrite:!1})}function Aa(){return new on({name:"EquirectangularToCubeUV",uniforms:{envMap:{value:null}},vertexShader:oo(),fragmentShader:`\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\n\t\t\t#include \n\n\t\t\tvoid main() {\n\n\t\t\t\tvec3 outputDirection = normalize( vOutputDirection );\n\t\t\t\tvec2 uv = equirectUv( outputDirection );\n\n\t\t\t\tgl_FragColor = vec4( texture2D ( envMap, uv ).rgb, 1.0 );\n\n\t\t\t}\n\t\t`,blending:pn,depthTest:!1,depthWrite:!1})}function Ea(){return new on({name:"CubemapToCubeUV",uniforms:{envMap:{value:null},flipEnvMap:{value:-1}},vertexShader:oo(),fragmentShader:`\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tuniform float flipEnvMap;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform samplerCube envMap;\n\n\t\t\tvoid main() {\n\n\t\t\t\tgl_FragColor = textureCube( envMap, vec3( flipEnvMap * vOutputDirection.x, vOutputDirection.yz ) );\n\n\t\t\t}\n\t\t`,blending:pn,depthTest:!1,depthWrite:!1})}function oo(){return`\n\n\t\tprecision mediump float;\n\t\tprecision mediump int;\n\n\t\tattribute float faceIndex;\n\n\t\tvarying vec3 vOutputDirection;\n\n\t\t// RH coordinate system; PMREM face-indexing convention\n\t\tvec3 getDirection( vec2 uv, float face ) {\n\n\t\t\tuv = 2.0 * uv - 1.0;\n\n\t\t\tvec3 direction = vec3( uv, 1.0 );\n\n\t\t\tif ( face == 0.0 ) {\n\n\t\t\t\tdirection = direction.zyx; // ( 1, v, u ) pos x\n\n\t\t\t} else if ( face == 1.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xz *= -1.0; // ( -u, 1, -v ) pos y\n\n\t\t\t} else if ( face == 2.0 ) {\n\n\t\t\t\tdirection.x *= -1.0; // ( -u, v, 1 ) pos z\n\n\t\t\t} else if ( face == 3.0 ) {\n\n\t\t\t\tdirection = direction.zyx;\n\t\t\t\tdirection.xz *= -1.0; // ( -1, v, -u ) neg x\n\n\t\t\t} else if ( face == 4.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xy *= -1.0; // ( -u, -1, v ) neg y\n\n\t\t\t} else if ( face == 5.0 ) {\n\n\t\t\t\tdirection.z *= -1.0; // ( u, v, -1 ) neg z\n\n\t\t\t}\n\n\t\t\treturn direction;\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tvOutputDirection = getDirection( uv, faceIndex );\n\t\t\tgl_Position = vec4( position, 1.0 );\n\n\t\t}\n\t`}function Lf(r){let t=new WeakMap,e=null;function n(o){if(o&&o.isTexture){let c=o.mapping,l=c===Cr||c===Pr,h=c===ci||c===li;if(l||h)if(o.isRenderTargetTexture&&o.needsPMREMUpdate===!0){o.needsPMREMUpdate=!1;let f=t.get(o);return e===null&&(e=new Rs(r)),f=l?e.fromEquirectangular(o,f):e.fromCubemap(o,f),t.set(o,f),f.texture}else{if(t.has(o))return t.get(o).texture;{let f=o.image;if(l&&f&&f.height>0||h&&f&&i(f)){e===null&&(e=new Rs(r));let u=l?e.fromEquirectangular(o):e.fromCubemap(o);return t.set(o,u),o.addEventListener("dispose",s),u.texture}else return null}}}return o}function i(o){let c=0,l=6;for(let h=0;ht.maxTextureSize&&(O=Math.ceil(P/t.maxTextureSize),P=t.maxTextureSize);let B=new Float32Array(P*O*4*p),D=new bs(B,P,O,p);D.type=Rn,D.needsUpdate=!0;let I=S*4;for(let Y=0;Y0)return r;let i=t*e,s=Ca[i];if(s===void 0&&(s=new Float32Array(i),Ca[i]=s),t!==0){n.toArray(s,0);for(let a=1,o=0;a!==t;++a)o+=e,r[a].toArray(s,o)}return s}function Zt(r,t){if(r.length!==t.length)return!1;for(let e=0,n=r.length;e":" "} ${o}: ${e[a]}`)}return n.join(`\n`)}function Pd(r){switch(r){case Nn:return["Linear","( value )"];case Ot:return["sRGB","( value )"];default:return console.warn("THREE.WebGLProgram: Unsupported encoding:",r),["Linear","( value )"]}}function Fa(r,t,e){let n=r.getShaderParameter(t,35713),i=r.getShaderInfoLog(t).trim();if(n&&i==="")return"";let s=/ERROR: 0:(\\d+)/.exec(i);if(s){let a=parseInt(s[1]);return e.toUpperCase()+`\n\n`+i+`\n\n`+Cd(r.getShaderSource(t),a)}else return i}function Rd(r,t){let e=Pd(t);return"vec4 "+r+"( vec4 value ) { return LinearTo"+e[0]+e[1]+"; }"}function Ld(r,t){let e;switch(t){case Qc:e="Linear";break;case tl:e="Reinhard";break;case el:e="OptimizedCineon";break;case nl:e="ACESFilmic";break;case il:e="Custom";break;default:console.warn("THREE.WebGLProgram: Unsupported toneMapping:",t),e="Linear"}return"vec3 "+r+"( vec3 color ) { return "+e+"ToneMapping( color ); }"}function Id(r){return[r.extensionDerivatives||r.envMapCubeUVHeight||r.bumpMap||r.tangentSpaceNormalMap||r.clearcoatNormalMap||r.flatShading||r.shaderID==="physical"?"#extension GL_OES_standard_derivatives : enable":"",(r.extensionFragDepth||r.logarithmicDepthBuffer)&&r.rendererExtensionFragDepth?"#extension GL_EXT_frag_depth : enable":"",r.extensionDrawBuffers&&r.rendererExtensionDrawBuffers?"#extension GL_EXT_draw_buffers : require":"",(r.extensionShaderTextureLOD||r.envMap||r.transmission)&&r.rendererExtensionShaderTextureLod?"#extension GL_EXT_shader_texture_lod : enable":""].filter(Fi).join(`\n`)}function Dd(r){let t=[];for(let e in r){let n=r[e];n!==!1&&t.push("#define "+e+" "+n)}return t.join(`\n`)}function Nd(r,t){let e={},n=r.getProgramParameter(t,35721);for(let i=0;i/gm;function Gr(r){return r.replace(Fd,zd)}function zd(r,t){let e=wt[t];if(e===void 0)throw new Error("Can not resolve #include <"+t+">");return Gr(e)}var Od=/#pragma unroll_loop_start\\s+for\\s*\\(\\s*int\\s+i\\s*=\\s*(\\d+)\\s*;\\s*i\\s*<\\s*(\\d+)\\s*;\\s*i\\s*\\+\\+\\s*\\)\\s*{([\\s\\S]+?)}\\s+#pragma unroll_loop_end/g;function Ba(r){return r.replace(Od,Bd)}function Bd(r,t,e,n){let i="";for(let s=parseInt(t);s0&&(d+=`\n`),g=[m,x].filter(Fi).join(`\n`),g.length>0&&(g+=`\n`)):(d=[Ua(e),"#define SHADER_NAME "+e.shaderName,x,e.instancing?"#define USE_INSTANCING":"",e.instancingColor?"#define USE_INSTANCING_COLOR":"",e.supportsVertexTextures?"#define VERTEX_TEXTURES":"",e.useFog&&e.fog?"#define USE_FOG":"",e.useFog&&e.fogExp2?"#define FOG_EXP2":"",e.map?"#define USE_MAP":"",e.envMap?"#define USE_ENVMAP":"",e.envMap?"#define "+h:"",e.lightMap?"#define USE_LIGHTMAP":"",e.aoMap?"#define USE_AOMAP":"",e.emissiveMap?"#define USE_EMISSIVEMAP":"",e.bumpMap?"#define USE_BUMPMAP":"",e.normalMap?"#define USE_NORMALMAP":"",e.normalMap&&e.objectSpaceNormalMap?"#define OBJECTSPACE_NORMALMAP":"",e.normalMap&&e.tangentSpaceNormalMap?"#define TANGENTSPACE_NORMALMAP":"",e.clearcoatMap?"#define USE_CLEARCOATMAP":"",e.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",e.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",e.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",e.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",e.displacementMap&&e.supportsVertexTextures?"#define USE_DISPLACEMENTMAP":"",e.specularMap?"#define USE_SPECULARMAP":"",e.specularIntensityMap?"#define USE_SPECULARINTENSITYMAP":"",e.specularColorMap?"#define USE_SPECULARCOLORMAP":"",e.roughnessMap?"#define USE_ROUGHNESSMAP":"",e.metalnessMap?"#define USE_METALNESSMAP":"",e.alphaMap?"#define USE_ALPHAMAP":"",e.transmission?"#define USE_TRANSMISSION":"",e.transmissionMap?"#define USE_TRANSMISSIONMAP":"",e.thicknessMap?"#define USE_THICKNESSMAP":"",e.sheenColorMap?"#define USE_SHEENCOLORMAP":"",e.sheenRoughnessMap?"#define USE_SHEENROUGHNESSMAP":"",e.vertexTangents?"#define USE_TANGENT":"",e.vertexColors?"#define USE_COLOR":"",e.vertexAlphas?"#define USE_COLOR_ALPHA":"",e.vertexUvs?"#define USE_UV":"",e.uvsVertexOnly?"#define UVS_VERTEX_ONLY":"",e.flatShading?"#define FLAT_SHADED":"",e.skinning?"#define USE_SKINNING":"",e.morphTargets?"#define USE_MORPHTARGETS":"",e.morphNormals&&e.flatShading===!1?"#define USE_MORPHNORMALS":"",e.morphColors&&e.isWebGL2?"#define USE_MORPHCOLORS":"",e.morphTargetsCount>0&&e.isWebGL2?"#define MORPHTARGETS_TEXTURE":"",e.morphTargetsCount>0&&e.isWebGL2?"#define MORPHTARGETS_TEXTURE_STRIDE "+e.morphTextureStride:"",e.morphTargetsCount>0&&e.isWebGL2?"#define MORPHTARGETS_COUNT "+e.morphTargetsCount:"",e.doubleSided?"#define DOUBLE_SIDED":"",e.flipSided?"#define FLIP_SIDED":"",e.shadowMapEnabled?"#define USE_SHADOWMAP":"",e.shadowMapEnabled?"#define "+c:"",e.sizeAttenuation?"#define USE_SIZEATTENUATION":"",e.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",e.logarithmicDepthBuffer&&e.rendererExtensionFragDepth?"#define USE_LOGDEPTHBUF_EXT":"","uniform mat4 modelMatrix;","uniform mat4 modelViewMatrix;","uniform mat4 projectionMatrix;","uniform mat4 viewMatrix;","uniform mat3 normalMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;","#ifdef USE_INSTANCING","\tattribute mat4 instanceMatrix;","#endif","#ifdef USE_INSTANCING_COLOR","\tattribute vec3 instanceColor;","#endif","attribute vec3 position;","attribute vec3 normal;","attribute vec2 uv;","#ifdef USE_TANGENT","\tattribute vec4 tangent;","#endif","#if defined( USE_COLOR_ALPHA )","\tattribute vec4 color;","#elif defined( USE_COLOR )","\tattribute vec3 color;","#endif","#if ( defined( USE_MORPHTARGETS ) && ! defined( MORPHTARGETS_TEXTURE ) )","\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",`\n`].filter(Fi).join(`\n`),g=[m,Ua(e),"#define SHADER_NAME "+e.shaderName,x,e.useFog&&e.fog?"#define USE_FOG":"",e.useFog&&e.fogExp2?"#define FOG_EXP2":"",e.map?"#define USE_MAP":"",e.matcap?"#define USE_MATCAP":"",e.envMap?"#define USE_ENVMAP":"",e.envMap?"#define "+l:"",e.envMap?"#define "+h:"",e.envMap?"#define "+f:"",u?"#define CUBEUV_TEXEL_WIDTH "+u.texelWidth:"",u?"#define CUBEUV_TEXEL_HEIGHT "+u.texelHeight:"",u?"#define CUBEUV_MAX_MIP "+u.maxMip+".0":"",e.lightMap?"#define USE_LIGHTMAP":"",e.aoMap?"#define USE_AOMAP":"",e.emissiveMap?"#define USE_EMISSIVEMAP":"",e.bumpMap?"#define USE_BUMPMAP":"",e.normalMap?"#define USE_NORMALMAP":"",e.normalMap&&e.objectSpaceNormalMap?"#define OBJECTSPACE_NORMALMAP":"",e.normalMap&&e.tangentSpaceNormalMap?"#define TANGENTSPACE_NORMALMAP":"",e.clearcoat?"#define USE_CLEARCOAT":"",e.clearcoatMap?"#define USE_CLEARCOATMAP":"",e.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",e.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",e.iridescence?"#define USE_IRIDESCENCE":"",e.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",e.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",e.specularMap?"#define USE_SPECULARMAP":"",e.specularIntensityMap?"#define USE_SPECULARINTENSITYMAP":"",e.specularColorMap?"#define USE_SPECULARCOLORMAP":"",e.roughnessMap?"#define USE_ROUGHNESSMAP":"",e.metalnessMap?"#define USE_METALNESSMAP":"",e.alphaMap?"#define USE_ALPHAMAP":"",e.alphaTest?"#define USE_ALPHATEST":"",e.sheen?"#define USE_SHEEN":"",e.sheenColorMap?"#define USE_SHEENCOLORMAP":"",e.sheenRoughnessMap?"#define USE_SHEENROUGHNESSMAP":"",e.transmission?"#define USE_TRANSMISSION":"",e.transmissionMap?"#define USE_TRANSMISSIONMAP":"",e.thicknessMap?"#define USE_THICKNESSMAP":"",e.decodeVideoTexture?"#define DECODE_VIDEO_TEXTURE":"",e.vertexTangents?"#define USE_TANGENT":"",e.vertexColors||e.instancingColor?"#define USE_COLOR":"",e.vertexAlphas?"#define USE_COLOR_ALPHA":"",e.vertexUvs?"#define USE_UV":"",e.uvsVertexOnly?"#define UVS_VERTEX_ONLY":"",e.gradientMap?"#define USE_GRADIENTMAP":"",e.flatShading?"#define FLAT_SHADED":"",e.doubleSided?"#define DOUBLE_SIDED":"",e.flipSided?"#define FLIP_SIDED":"",e.shadowMapEnabled?"#define USE_SHADOWMAP":"",e.shadowMapEnabled?"#define "+c:"",e.premultipliedAlpha?"#define PREMULTIPLIED_ALPHA":"",e.physicallyCorrectLights?"#define PHYSICALLY_CORRECT_LIGHTS":"",e.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",e.logarithmicDepthBuffer&&e.rendererExtensionFragDepth?"#define USE_LOGDEPTHBUF_EXT":"","uniform mat4 viewMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;",e.toneMapping!==nn?"#define TONE_MAPPING":"",e.toneMapping!==nn?wt.tonemapping_pars_fragment:"",e.toneMapping!==nn?Ld("toneMapping",e.toneMapping):"",e.dithering?"#define DITHERING":"",e.opaque?"#define OPAQUE":"",wt.encodings_pars_fragment,Rd("linearToOutputTexel",e.outputEncoding),e.useDepthPacking?"#define DEPTH_PACKING "+e.depthPacking:"",`\n`].filter(Fi).join(`\n`)),a=Gr(a),a=za(a,e),a=Oa(a,e),o=Gr(o),o=za(o,e),o=Oa(o,e),a=Ba(a),o=Ba(o),e.isWebGL2&&e.isRawShaderMaterial!==!0&&(M=`#version 300 es\n`,d=["precision mediump sampler2DArray;","#define attribute in","#define varying out","#define texture2D texture"].join(`\n`)+`\n`+d,g=["#define varying in",e.glslVersion===la?"":"layout(location = 0) out highp vec4 pc_fragColor;",e.glslVersion===la?"":"#define gl_FragColor pc_fragColor","#define gl_FragDepthEXT gl_FragDepth","#define texture2D texture","#define textureCube texture","#define texture2DProj textureProj","#define texture2DLodEXT textureLod","#define texture2DProjLodEXT textureProjLod","#define textureCubeLodEXT textureLod","#define texture2DGradEXT textureGrad","#define texture2DProjGradEXT textureProjGrad","#define textureCubeGradEXT textureGrad"].join(`\n`)+`\n`+g);let _=M+d+a,v=M+g+o,b=Na(i,35633,_),A=Na(i,35632,v);if(i.attachShader(p,b),i.attachShader(p,A),e.index0AttributeName!==void 0?i.bindAttribLocation(p,0,e.index0AttributeName):e.morphTargets===!0&&i.bindAttribLocation(p,0,"position"),i.linkProgram(p),r.debug.checkShaderErrors){let S=i.getProgramInfoLog(p).trim(),P=i.getShaderInfoLog(b).trim(),O=i.getShaderInfoLog(A).trim(),B=!0,D=!0;if(i.getProgramParameter(p,35714)===!1){B=!1;let I=Fa(i,b,"vertex"),k=Fa(i,A,"fragment");console.error("THREE.WebGLProgram: Shader Error "+i.getError()+" - VALIDATE_STATUS "+i.getProgramParameter(p,35715)+`\n\nProgram Info Log: `+S+`\n`+I+`\n`+k)}else S!==""?console.warn("THREE.WebGLProgram: Program Info Log:",S):(P===""||O==="")&&(D=!1);D&&(this.diagnostics={runnable:B,programLog:S,vertexShader:{log:P,prefix:d},fragmentShader:{log:O,prefix:g}})}i.deleteShader(b),i.deleteShader(A);let C;this.getUniforms=function(){return C===void 0&&(C=new ai(i,p)),C};let y;return this.getAttributes=function(){return y===void 0&&(y=Nd(i,p)),y},this.destroy=function(){n.releaseStatesOfProgram(this),i.deleteProgram(p),this.program=void 0},this.name=e.shaderName,this.id=Ed++,this.cacheKey=t,this.usedTimes=1,this.program=p,this.vertexShader=b,this.fragmentShader=A,this}var qd=0,Hr=class{constructor(){this.shaderCache=new Map,this.materialCache=new Map}update(t){let e=t.vertexShader,n=t.fragmentShader,i=this._getShaderStage(e),s=this._getShaderStage(n),a=this._getShaderCacheForMaterial(t);return a.has(i)===!1&&(a.add(i),i.usedTimes++),a.has(s)===!1&&(a.add(s),s.usedTimes++),this}remove(t){let e=this.materialCache.get(t);for(let n of e)n.usedTimes--,n.usedTimes===0&&this.shaderCache.delete(n.code);return this.materialCache.delete(t),this}getVertexShaderID(t){return this._getShaderStage(t.vertexShader).id}getFragmentShaderID(t){return this._getShaderStage(t.fragmentShader).id}dispose(){this.shaderCache.clear(),this.materialCache.clear()}_getShaderCacheForMaterial(t){let e=this.materialCache,n=e.get(t);return n===void 0&&(n=new Set,e.set(t,n)),n}_getShaderStage(t){let e=this.shaderCache,n=e.get(t);return n===void 0&&(n=new Wr(t),e.set(t,n)),n}},Wr=class{constructor(t){this.id=qd++,this.code=t,this.usedTimes=0}};function Xd(r,t,e,n,i,s,a){let o=new ws,c=new Hr,l=[],h=i.isWebGL2,f=i.logarithmicDepthBuffer,u=i.vertexTextures,m=i.precision,x={MeshDepthMaterial:"depth",MeshDistanceMaterial:"distanceRGBA",MeshNormalMaterial:"normal",MeshBasicMaterial:"basic",MeshLambertMaterial:"lambert",MeshPhongMaterial:"phong",MeshToonMaterial:"toon",MeshStandardMaterial:"physical",MeshPhysicalMaterial:"physical",MeshMatcapMaterial:"matcap",LineBasicMaterial:"basic",LineDashedMaterial:"dashed",PointsMaterial:"points",ShadowMaterial:"shadow",SpriteMaterial:"sprite"};function p(y,S,P,O,B){let D=O.fog,I=B.geometry,k=y.isMeshStandardMaterial?O.environment:null,Y=(y.isMeshStandardMaterial?e:t).get(y.envMap||k),Z=Y&&Y.mapping===Ls?Y.image.height:null,H=x[y.type];y.precision!==null&&(m=i.getMaxPrecision(y.precision),m!==y.precision&&console.warn("THREE.WebGLProgram.getParameters:",y.precision,"not supported, using",m,"instead."));let $=I.morphAttributes.position||I.morphAttributes.normal||I.morphAttributes.color,J=$!==void 0?$.length:0,dt=0;I.morphAttributes.position!==void 0&&(dt=1),I.morphAttributes.normal!==void 0&&(dt=2),I.morphAttributes.color!==void 0&&(dt=3);let z,K,nt,it;if(H){let Ft=He[H];z=Ft.vertexShader,K=Ft.fragmentShader}else z=y.vertexShader,K=y.fragmentShader,c.update(y),nt=c.getVertexShaderID(y),it=c.getFragmentShaderID(y);let U=r.getRenderTarget(),Mt=y.alphaTest>0,ht=y.clearcoat>0,ut=y.iridescence>0;return{isWebGL2:h,shaderID:H,shaderName:y.type,vertexShader:z,fragmentShader:K,defines:y.defines,customVertexShaderID:nt,customFragmentShaderID:it,isRawShaderMaterial:y.isRawShaderMaterial===!0,glslVersion:y.glslVersion,precision:m,instancing:B.isInstancedMesh===!0,instancingColor:B.isInstancedMesh===!0&&B.instanceColor!==null,supportsVertexTextures:u,outputEncoding:U===null?r.outputEncoding:U.isXRRenderTarget===!0?U.texture.encoding:Nn,map:!!y.map,matcap:!!y.matcap,envMap:!!Y,envMapMode:Y&&Y.mapping,envMapCubeUVHeight:Z,lightMap:!!y.lightMap,aoMap:!!y.aoMap,emissiveMap:!!y.emissiveMap,bumpMap:!!y.bumpMap,normalMap:!!y.normalMap,objectSpaceNormalMap:y.normalMapType===wl,tangentSpaceNormalMap:y.normalMapType===bl,decodeVideoTexture:!!y.map&&y.map.isVideoTexture===!0&&y.map.encoding===Ot,clearcoat:ht,clearcoatMap:ht&&!!y.clearcoatMap,clearcoatRoughnessMap:ht&&!!y.clearcoatRoughnessMap,clearcoatNormalMap:ht&&!!y.clearcoatNormalMap,iridescence:ut,iridescenceMap:ut&&!!y.iridescenceMap,iridescenceThicknessMap:ut&&!!y.iridescenceThicknessMap,displacementMap:!!y.displacementMap,roughnessMap:!!y.roughnessMap,metalnessMap:!!y.metalnessMap,specularMap:!!y.specularMap,specularIntensityMap:!!y.specularIntensityMap,specularColorMap:!!y.specularColorMap,opaque:y.transparent===!1&&y.blending===ri,alphaMap:!!y.alphaMap,alphaTest:Mt,gradientMap:!!y.gradientMap,sheen:y.sheen>0,sheenColorMap:!!y.sheenColorMap,sheenRoughnessMap:!!y.sheenRoughnessMap,transmission:y.transmission>0,transmissionMap:!!y.transmissionMap,thicknessMap:!!y.thicknessMap,combine:y.combine,vertexTangents:!!y.normalMap&&!!I.attributes.tangent,vertexColors:y.vertexColors,vertexAlphas:y.vertexColors===!0&&!!I.attributes.color&&I.attributes.color.itemSize===4,vertexUvs:!!y.map||!!y.bumpMap||!!y.normalMap||!!y.specularMap||!!y.alphaMap||!!y.emissiveMap||!!y.roughnessMap||!!y.metalnessMap||!!y.clearcoatMap||!!y.clearcoatRoughnessMap||!!y.clearcoatNormalMap||!!y.iridescenceMap||!!y.iridescenceThicknessMap||!!y.displacementMap||!!y.transmissionMap||!!y.thicknessMap||!!y.specularIntensityMap||!!y.specularColorMap||!!y.sheenColorMap||!!y.sheenRoughnessMap,uvsVertexOnly:!(y.map||y.bumpMap||y.normalMap||y.specularMap||y.alphaMap||y.emissiveMap||y.roughnessMap||y.metalnessMap||y.clearcoatNormalMap||y.iridescenceMap||y.iridescenceThicknessMap||y.transmission>0||y.transmissionMap||y.thicknessMap||y.specularIntensityMap||y.specularColorMap||y.sheen>0||y.sheenColorMap||y.sheenRoughnessMap)&&!!y.displacementMap,fog:!!D,useFog:y.fog===!0,fogExp2:D&&D.isFogExp2,flatShading:!!y.flatShading,sizeAttenuation:y.sizeAttenuation,logarithmicDepthBuffer:f,skinning:B.isSkinnedMesh===!0,morphTargets:I.morphAttributes.position!==void 0,morphNormals:I.morphAttributes.normal!==void 0,morphColors:I.morphAttributes.color!==void 0,morphTargetsCount:J,morphTextureStride:dt,numDirLights:S.directional.length,numPointLights:S.point.length,numSpotLights:S.spot.length,numSpotLightMaps:S.spotLightMap.length,numRectAreaLights:S.rectArea.length,numHemiLights:S.hemi.length,numDirLightShadows:S.directionalShadowMap.length,numPointLightShadows:S.pointShadowMap.length,numSpotLightShadows:S.spotShadowMap.length,numSpotLightShadowsWithMaps:S.numSpotLightShadowsWithMaps,numClippingPlanes:a.numPlanes,numClipIntersection:a.numIntersection,dithering:y.dithering,shadowMapEnabled:r.shadowMap.enabled&&P.length>0,shadowMapType:r.shadowMap.type,toneMapping:y.toneMapped?r.toneMapping:nn,physicallyCorrectLights:r.physicallyCorrectLights,premultipliedAlpha:y.premultipliedAlpha,doubleSided:y.side===We,flipSided:y.side===he,useDepthPacking:!!y.depthPacking,depthPacking:y.depthPacking||0,index0AttributeName:y.index0AttributeName,extensionDerivatives:y.extensions&&y.extensions.derivatives,extensionFragDepth:y.extensions&&y.extensions.fragDepth,extensionDrawBuffers:y.extensions&&y.extensions.drawBuffers,extensionShaderTextureLOD:y.extensions&&y.extensions.shaderTextureLOD,rendererExtensionFragDepth:h||n.has("EXT_frag_depth"),rendererExtensionDrawBuffers:h||n.has("WEBGL_draw_buffers"),rendererExtensionShaderTextureLod:h||n.has("EXT_shader_texture_lod"),customProgramCacheKey:y.customProgramCacheKey()}}function d(y){let S=[];if(y.shaderID?S.push(y.shaderID):(S.push(y.customVertexShaderID),S.push(y.customFragmentShaderID)),y.defines!==void 0)for(let P in y.defines)S.push(P),S.push(y.defines[P]);return y.isRawShaderMaterial===!1&&(g(S,y),M(S,y),S.push(r.outputEncoding)),S.push(y.customProgramCacheKey),S.join()}function g(y,S){y.push(S.precision),y.push(S.outputEncoding),y.push(S.envMapMode),y.push(S.envMapCubeUVHeight),y.push(S.combine),y.push(S.vertexUvs),y.push(S.fogExp2),y.push(S.sizeAttenuation),y.push(S.morphTargetsCount),y.push(S.morphAttributeCount),y.push(S.numDirLights),y.push(S.numPointLights),y.push(S.numSpotLights),y.push(S.numSpotLightMaps),y.push(S.numHemiLights),y.push(S.numRectAreaLights),y.push(S.numDirLightShadows),y.push(S.numPointLightShadows),y.push(S.numSpotLightShadows),y.push(S.numSpotLightShadowsWithMaps),y.push(S.shadowMapType),y.push(S.toneMapping),y.push(S.numClippingPlanes),y.push(S.numClipIntersection),y.push(S.depthPacking)}function M(y,S){o.disableAll(),S.isWebGL2&&o.enable(0),S.supportsVertexTextures&&o.enable(1),S.instancing&&o.enable(2),S.instancingColor&&o.enable(3),S.map&&o.enable(4),S.matcap&&o.enable(5),S.envMap&&o.enable(6),S.lightMap&&o.enable(7),S.aoMap&&o.enable(8),S.emissiveMap&&o.enable(9),S.bumpMap&&o.enable(10),S.normalMap&&o.enable(11),S.objectSpaceNormalMap&&o.enable(12),S.tangentSpaceNormalMap&&o.enable(13),S.clearcoat&&o.enable(14),S.clearcoatMap&&o.enable(15),S.clearcoatRoughnessMap&&o.enable(16),S.clearcoatNormalMap&&o.enable(17),S.iridescence&&o.enable(18),S.iridescenceMap&&o.enable(19),S.iridescenceThicknessMap&&o.enable(20),S.displacementMap&&o.enable(21),S.specularMap&&o.enable(22),S.roughnessMap&&o.enable(23),S.metalnessMap&&o.enable(24),S.gradientMap&&o.enable(25),S.alphaMap&&o.enable(26),S.alphaTest&&o.enable(27),S.vertexColors&&o.enable(28),S.vertexAlphas&&o.enable(29),S.vertexUvs&&o.enable(30),S.vertexTangents&&o.enable(31),S.uvsVertexOnly&&o.enable(32),y.push(o.mask),o.disableAll(),S.fog&&o.enable(0),S.useFog&&o.enable(1),S.flatShading&&o.enable(2),S.logarithmicDepthBuffer&&o.enable(3),S.skinning&&o.enable(4),S.morphTargets&&o.enable(5),S.morphNormals&&o.enable(6),S.morphColors&&o.enable(7),S.premultipliedAlpha&&o.enable(8),S.shadowMapEnabled&&o.enable(9),S.physicallyCorrectLights&&o.enable(10),S.doubleSided&&o.enable(11),S.flipSided&&o.enable(12),S.useDepthPacking&&o.enable(13),S.dithering&&o.enable(14),S.specularIntensityMap&&o.enable(15),S.specularColorMap&&o.enable(16),S.transmission&&o.enable(17),S.transmissionMap&&o.enable(18),S.thicknessMap&&o.enable(19),S.sheen&&o.enable(20),S.sheenColorMap&&o.enable(21),S.sheenRoughnessMap&&o.enable(22),S.decodeVideoTexture&&o.enable(23),S.opaque&&o.enable(24),y.push(o.mask)}function _(y){let S=x[y.type],P;if(S){let O=He[S];P=Bl.clone(O.uniforms)}else P=y.uniforms;return P}function v(y,S){let P;for(let O=0,B=l.length;O0?n.push(g):m.transparent===!0?i.push(g):e.push(g)}function c(f,u,m,x,p,d){let g=a(f,u,m,x,p,d);m.transmission>0?n.unshift(g):m.transparent===!0?i.unshift(g):e.unshift(g)}function l(f,u){e.length>1&&e.sort(f||Zd),n.length>1&&n.sort(u||ka),i.length>1&&i.sort(u||ka)}function h(){for(let f=t,u=r.length;f=s.length?(a=new Va,s.push(a)):a=s[i],a}function e(){r=new WeakMap}return{get:t,dispose:e}}function $d(){let r={};return{get:function(t){if(r[t.id]!==void 0)return r[t.id];let e;switch(t.type){case"DirectionalLight":e={direction:new R,color:new Bt};break;case"SpotLight":e={position:new R,direction:new R,color:new Bt,distance:0,coneCos:0,penumbraCos:0,decay:0};break;case"PointLight":e={position:new R,color:new Bt,distance:0,decay:0};break;case"HemisphereLight":e={direction:new R,skyColor:new Bt,groundColor:new Bt};break;case"RectAreaLight":e={color:new Bt,position:new R,halfWidth:new R,halfHeight:new R};break}return r[t.id]=e,e}}}function Kd(){let r={};return{get:function(t){if(r[t.id]!==void 0)return r[t.id];let e;switch(t.type){case"DirectionalLight":e={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new At};break;case"SpotLight":e={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new At};break;case"PointLight":e={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new At,shadowCameraNear:1,shadowCameraFar:1e3};break}return r[t.id]=e,e}}}var jd=0;function Qd(r,t){return(t.castShadow?2:0)-(r.castShadow?2:0)+(t.map?1:0)-(r.map?1:0)}function tp(r,t){let e=new $d,n=Kd(),i={version:0,hash:{directionalLength:-1,pointLength:-1,spotLength:-1,rectAreaLength:-1,hemiLength:-1,numDirectionalShadows:-1,numPointShadows:-1,numSpotShadows:-1,numSpotMaps:-1},ambient:[0,0,0],probe:[],directional:[],directionalShadow:[],directionalShadowMap:[],directionalShadowMatrix:[],spot:[],spotLightMap:[],spotShadow:[],spotShadowMap:[],spotLightMatrix:[],rectArea:[],rectAreaLTC1:null,rectAreaLTC2:null,point:[],pointShadow:[],pointShadowMap:[],pointShadowMatrix:[],hemi:[],numSpotLightShadowsWithMaps:0};for(let h=0;h<9;h++)i.probe.push(new R);let s=new R,a=new zt,o=new zt;function c(h,f){let u=0,m=0,x=0;for(let O=0;O<9;O++)i.probe[O].set(0,0,0);let p=0,d=0,g=0,M=0,_=0,v=0,b=0,A=0,C=0,y=0;h.sort(Qd);let S=f!==!0?Math.PI:1;for(let O=0,B=h.length;O0&&(t.isWebGL2||r.has("OES_texture_float_linear")===!0?(i.rectAreaLTC1=et.LTC_FLOAT_1,i.rectAreaLTC2=et.LTC_FLOAT_2):r.has("OES_texture_half_float_linear")===!0?(i.rectAreaLTC1=et.LTC_HALF_1,i.rectAreaLTC2=et.LTC_HALF_2):console.error("THREE.WebGLRenderer: Unable to use RectAreaLight. Missing WebGL extensions.")),i.ambient[0]=u,i.ambient[1]=m,i.ambient[2]=x;let P=i.hash;(P.directionalLength!==p||P.pointLength!==d||P.spotLength!==g||P.rectAreaLength!==M||P.hemiLength!==_||P.numDirectionalShadows!==v||P.numPointShadows!==b||P.numSpotShadows!==A||P.numSpotMaps!==C)&&(i.directional.length=p,i.spot.length=g,i.rectArea.length=M,i.point.length=d,i.hemi.length=_,i.directionalShadow.length=v,i.directionalShadowMap.length=v,i.pointShadow.length=b,i.pointShadowMap.length=b,i.spotShadow.length=A,i.spotShadowMap.length=A,i.directionalShadowMatrix.length=v,i.pointShadowMatrix.length=b,i.spotLightMatrix.length=A+C-y,i.spotLightMap.length=C,i.numSpotLightShadowsWithMaps=y,P.directionalLength=p,P.pointLength=d,P.spotLength=g,P.rectAreaLength=M,P.hemiLength=_,P.numDirectionalShadows=v,P.numPointShadows=b,P.numSpotShadows=A,P.numSpotMaps=C,i.version=jd++)}function l(h,f){let u=0,m=0,x=0,p=0,d=0,g=f.matrixWorldInverse;for(let M=0,_=h.length;M<_;M++){let v=h[M];if(v.isDirectionalLight){let b=i.directional[u];b.direction.setFromMatrixPosition(v.matrixWorld),s.setFromMatrixPosition(v.target.matrixWorld),b.direction.sub(s),b.direction.transformDirection(g),u++}else if(v.isSpotLight){let b=i.spot[x];b.position.setFromMatrixPosition(v.matrixWorld),b.position.applyMatrix4(g),b.direction.setFromMatrixPosition(v.matrixWorld),s.setFromMatrixPosition(v.target.matrixWorld),b.direction.sub(s),b.direction.transformDirection(g),x++}else if(v.isRectAreaLight){let b=i.rectArea[p];b.position.setFromMatrixPosition(v.matrixWorld),b.position.applyMatrix4(g),o.identity(),a.copy(v.matrixWorld),a.premultiply(g),o.extractRotation(a),b.halfWidth.set(v.width*.5,0,0),b.halfHeight.set(0,v.height*.5,0),b.halfWidth.applyMatrix4(o),b.halfHeight.applyMatrix4(o),p++}else if(v.isPointLight){let b=i.point[m];b.position.setFromMatrixPosition(v.matrixWorld),b.position.applyMatrix4(g),m++}else if(v.isHemisphereLight){let b=i.hemi[d];b.direction.setFromMatrixPosition(v.matrixWorld),b.direction.transformDirection(g),d++}}}return{setup:c,setupView:l,state:i}}function Ga(r,t){let e=new tp(r,t),n=[],i=[];function s(){n.length=0,i.length=0}function a(f){n.push(f)}function o(f){i.push(f)}function c(f){e.setup(n,f)}function l(f){e.setupView(n,f)}return{init:s,state:{lightsArray:n,shadowsArray:i,lights:e},setupLights:c,setupLightsView:l,pushLight:a,pushShadow:o}}function ep(r,t){let e=new WeakMap;function n(s,a=0){let o=e.get(s),c;return o===void 0?(c=new Ga(r,t),e.set(s,[c])):a>=o.length?(c=new Ga(r,t),o.push(c)):c=o[a],c}function i(){e=new WeakMap}return{get:n,dispose:i}}var qr=class extends fi{constructor(t){super(),this.isMeshDepthMaterial=!0,this.type="MeshDepthMaterial",this.depthPacking=vl,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.setValues(t)}copy(t){return super.copy(t),this.depthPacking=t.depthPacking,this.map=t.map,this.alphaMap=t.alphaMap,this.displacementMap=t.displacementMap,this.displacementScale=t.displacementScale,this.displacementBias=t.displacementBias,this.wireframe=t.wireframe,this.wireframeLinewidth=t.wireframeLinewidth,this}},Xr=class extends fi{constructor(t){super(),this.isMeshDistanceMaterial=!0,this.type="MeshDistanceMaterial",this.referencePosition=new R,this.nearDistance=1,this.farDistance=1e3,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.setValues(t)}copy(t){return super.copy(t),this.referencePosition.copy(t.referencePosition),this.nearDistance=t.nearDistance,this.farDistance=t.farDistance,this.map=t.map,this.alphaMap=t.alphaMap,this.displacementMap=t.displacementMap,this.displacementScale=t.displacementScale,this.displacementBias=t.displacementBias,this}},np=`void main() {\n\tgl_Position = vec4( position, 1.0 );\n}`,ip=`uniform sampler2D shadow_pass;\nuniform vec2 resolution;\nuniform float radius;\n#include \nvoid main() {\n\tconst float samples = float( VSM_SAMPLES );\n\tfloat mean = 0.0;\n\tfloat squared_mean = 0.0;\n\tfloat uvStride = samples <= 1.0 ? 0.0 : 2.0 / ( samples - 1.0 );\n\tfloat uvStart = samples <= 1.0 ? 0.0 : - 1.0;\n\tfor ( float i = 0.0; i < samples; i ++ ) {\n\t\tfloat uvOffset = uvStart + i * uvStride;\n\t\t#ifdef HORIZONTAL_PASS\n\t\t\tvec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( uvOffset, 0.0 ) * radius ) / resolution ) );\n\t\t\tmean += distribution.x;\n\t\t\tsquared_mean += distribution.y * distribution.y + distribution.x * distribution.x;\n\t\t#else\n\t\t\tfloat depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, uvOffset ) * radius ) / resolution ) );\n\t\t\tmean += depth;\n\t\t\tsquared_mean += depth * depth;\n\t\t#endif\n\t}\n\tmean = mean / samples;\n\tsquared_mean = squared_mean / samples;\n\tfloat std_dev = sqrt( squared_mean - mean * mean );\n\tgl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) );\n}`;function sp(r,t,e){let n=new Ps,i=new At,s=new At,a=new Xt,o=new qr({depthPacking:Ml}),c=new Xr,l={},h=e.maxTextureSize,f={[Ue]:he,[he]:Ue,[We]:We},u=new on({defines:{VSM_SAMPLES:8},uniforms:{shadow_pass:{value:null},resolution:{value:new At},radius:{value:4}},vertexShader:np,fragmentShader:ip}),m=u.clone();m.defines.HORIZONTAL_PASS=1;let x=new ke;x.setAttribute("position",new Yt(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));let p=new qe(x,u),d=this;this.enabled=!1,this.autoUpdate=!0,this.needsUpdate=!1,this.type=Wa,this.render=function(v,b,A){if(d.enabled===!1||d.autoUpdate===!1&&d.needsUpdate===!1||v.length===0)return;let C=r.getRenderTarget(),y=r.getActiveCubeFace(),S=r.getActiveMipmapLevel(),P=r.state;P.setBlending(pn),P.buffers.color.setClear(1,1,1,1),P.buffers.depth.setTest(!0),P.setScissorTest(!1);for(let O=0,B=v.length;Oh||i.y>h)&&(i.x>h&&(s.x=Math.floor(h/k.x),i.x=s.x*k.x,I.mapSize.x=s.x),i.y>h&&(s.y=Math.floor(h/k.y),i.y=s.y*k.y,I.mapSize.y=s.y)),I.map===null){let Z=this.type!==Ni?{minFilter:ce,magFilter:ce}:{};I.map=new rn(i.x,i.y,Z),I.map.texture.name=D.name+".shadowMap",I.camera.updateProjectionMatrix()}r.setRenderTarget(I.map),r.clear();let Y=I.getViewportCount();for(let Z=0;Z0||b.map&&b.alphaTest>0){let B=P.uuid,D=b.uuid,I=l[B];I===void 0&&(I={},l[B]=I);let k=I[D];k===void 0&&(k=P.clone(),I[D]=k),P=k}return P.visible=b.visible,P.wireframe=b.wireframe,S===Ni?P.side=b.shadowSide!==null?b.shadowSide:b.side:P.side=b.shadowSide!==null?b.shadowSide:f[b.side],P.alphaMap=b.alphaMap,P.alphaTest=b.alphaTest,P.map=b.map,P.clipShadows=b.clipShadows,P.clippingPlanes=b.clippingPlanes,P.clipIntersection=b.clipIntersection,P.displacementMap=b.displacementMap,P.displacementScale=b.displacementScale,P.displacementBias=b.displacementBias,P.wireframeLinewidth=b.wireframeLinewidth,P.linewidth=b.linewidth,A.isPointLight===!0&&P.isMeshDistanceMaterial===!0&&(P.referencePosition.setFromMatrixPosition(A.matrixWorld),P.nearDistance=C,P.farDistance=y),P}function _(v,b,A,C,y){if(v.visible===!1)return;if(v.layers.test(b.layers)&&(v.isMesh||v.isLine||v.isPoints)&&(v.castShadow||v.receiveShadow&&y===Ni)&&(!v.frustumCulled||n.intersectsObject(v))){v.modelViewMatrix.multiplyMatrices(A.matrixWorldInverse,v.matrixWorld);let O=t.update(v),B=v.material;if(Array.isArray(B)){let D=O.groups;for(let I=0,k=D.length;I=1):H.indexOf("OpenGL ES")!==-1&&(Z=parseFloat(/^OpenGL ES (\\d)/.exec(H)[1]),Y=Z>=2);let $=null,J={},dt=r.getParameter(3088),z=r.getParameter(2978),K=new Xt().fromArray(dt),nt=new Xt().fromArray(z);function it(L,V,j){let ot=new Uint8Array(4),lt=r.createTexture();r.bindTexture(L,lt),r.texParameteri(L,10241,9728),r.texParameteri(L,10240,9728);for(let It=0;ItQ||E.height>Q)&&(tt=Q/Math.max(E.width,E.height)),tt<1||w===!0)if(typeof HTMLImageElement!="undefined"&&E instanceof HTMLImageElement||typeof HTMLCanvasElement!="undefined"&&E instanceof HTMLCanvasElement||typeof ImageBitmap!="undefined"&&E instanceof ImageBitmap){let st=w?Dr:Math.floor,yt=st(tt*E.width),rt=st(tt*E.height);p===void 0&&(p=M(yt,rt));let X=W?M(yt,rt):p;return X.width=yt,X.height=rt,X.getContext("2d").drawImage(E,0,0,yt,rt),console.warn("THREE.WebGLRenderer: Texture has been resized from ("+E.width+"x"+E.height+") to ("+yt+"x"+rt+")."),X}else return"data"in E&&console.warn("THREE.WebGLRenderer: Image in DataTexture is too big ("+E.width+"x"+E.height+")."),E;return E}function v(E){return ua(E.width)&&ua(E.height)}function b(E){return o?!1:E.wrapS!==Oe||E.wrapT!==Oe||E.minFilter!==ce&&E.minFilter!==Re}function A(E,w){return E.generateMipmaps&&w&&E.minFilter!==ce&&E.minFilter!==Re}function C(E){r.generateMipmap(E)}function y(E,w,W,Q,tt=!1){if(o===!1)return w;if(E!==null){if(r[E]!==void 0)return r[E];console.warn("THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format \'"+E+"\'")}let st=w;return w===6403&&(W===5126&&(st=33326),W===5131&&(st=33325),W===5121&&(st=33321)),w===33319&&(W===5126&&(st=33328),W===5131&&(st=33327),W===5121&&(st=33323)),w===6408&&(W===5126&&(st=34836),W===5131&&(st=34842),W===5121&&(st=Q===Ot&&tt===!1?35907:32856),W===32819&&(st=32854),W===32820&&(st=32855)),(st===33325||st===33326||st===33327||st===33328||st===34842||st===34836)&&t.get("EXT_color_buffer_float"),st}function S(E,w,W){return A(E,W)===!0||E.isFramebufferTexture&&E.minFilter!==ce&&E.minFilter!==Re?Math.log2(Math.max(w.width,w.height))+1:E.mipmaps!==void 0&&E.mipmaps.length>0?E.mipmaps.length:E.isCompressedTexture&&Array.isArray(E.image)?w.mipmaps.length:1}function P(E){return E===ce||E===Fo||E===Zs?9728:9729}function O(E){let w=E.target;w.removeEventListener("dispose",O),D(w),w.isVideoTexture&&x.delete(w)}function B(E){let w=E.target;w.removeEventListener("dispose",B),k(w)}function D(E){let w=n.get(E);if(w.__webglInit===void 0)return;let W=E.source,Q=d.get(W);if(Q){let tt=Q[w.__cacheKey];tt.usedTimes--,tt.usedTimes===0&&I(E),Object.keys(Q).length===0&&d.delete(W)}n.remove(E)}function I(E){let w=n.get(E);r.deleteTexture(w.__webglTexture);let W=E.source,Q=d.get(W);delete Q[w.__cacheKey],a.memory.textures--}function k(E){let w=E.texture,W=n.get(E),Q=n.get(w);if(Q.__webglTexture!==void 0&&(r.deleteTexture(Q.__webglTexture),a.memory.textures--),E.depthTexture&&E.depthTexture.dispose(),E.isWebGLCubeRenderTarget)for(let tt=0;tt<6;tt++)r.deleteFramebuffer(W.__webglFramebuffer[tt]),W.__webglDepthbuffer&&r.deleteRenderbuffer(W.__webglDepthbuffer[tt]);else{if(r.deleteFramebuffer(W.__webglFramebuffer),W.__webglDepthbuffer&&r.deleteRenderbuffer(W.__webglDepthbuffer),W.__webglMultisampledFramebuffer&&r.deleteFramebuffer(W.__webglMultisampledFramebuffer),W.__webglColorRenderbuffer)for(let tt=0;tt=c&&console.warn("THREE.WebGLTextures: Trying to use "+E+" texture units while this GPU supports only "+c),Y+=1,E}function $(E){let w=[];return w.push(E.wrapS),w.push(E.wrapT),w.push(E.wrapR||0),w.push(E.magFilter),w.push(E.minFilter),w.push(E.anisotropy),w.push(E.internalFormat),w.push(E.format),w.push(E.type),w.push(E.generateMipmaps),w.push(E.premultiplyAlpha),w.push(E.flipY),w.push(E.unpackAlignment),w.push(E.encoding),w.join()}function J(E,w){let W=n.get(E);if(E.isVideoTexture&&Ze(E),E.isRenderTargetTexture===!1&&E.version>0&&W.__version!==E.version){let Q=E.image;if(Q===null)console.warn("THREE.WebGLRenderer: Texture marked for update but no image data found.");else if(Q.complete===!1)console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete");else{ht(W,E,w);return}}e.bindTexture(3553,W.__webglTexture,33984+w)}function dt(E,w){let W=n.get(E);if(E.version>0&&W.__version!==E.version){ht(W,E,w);return}e.bindTexture(35866,W.__webglTexture,33984+w)}function z(E,w){let W=n.get(E);if(E.version>0&&W.__version!==E.version){ht(W,E,w);return}e.bindTexture(32879,W.__webglTexture,33984+w)}function K(E,w){let W=n.get(E);if(E.version>0&&W.__version!==E.version){ut(W,E,w);return}e.bindTexture(34067,W.__webglTexture,33984+w)}let nt={[Rr]:10497,[Oe]:33071,[Lr]:33648},it={[ce]:9728,[Fo]:9984,[Zs]:9986,[Re]:9729,[sl]:9985,[Oi]:9987};function U(E,w,W){if(W?(r.texParameteri(E,10242,nt[w.wrapS]),r.texParameteri(E,10243,nt[w.wrapT]),(E===32879||E===35866)&&r.texParameteri(E,32882,nt[w.wrapR]),r.texParameteri(E,10240,it[w.magFilter]),r.texParameteri(E,10241,it[w.minFilter])):(r.texParameteri(E,10242,33071),r.texParameteri(E,10243,33071),(E===32879||E===35866)&&r.texParameteri(E,32882,33071),(w.wrapS!==Oe||w.wrapT!==Oe)&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping."),r.texParameteri(E,10240,P(w.magFilter)),r.texParameteri(E,10241,P(w.minFilter)),w.minFilter!==ce&&w.minFilter!==Re&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.")),t.has("EXT_texture_filter_anisotropic")===!0){let Q=t.get("EXT_texture_filter_anisotropic");if(w.magFilter===ce||w.minFilter!==Zs&&w.minFilter!==Oi||w.type===Rn&&t.has("OES_texture_float_linear")===!1||o===!1&&w.type===Bi&&t.has("OES_texture_half_float_linear")===!1)return;(w.anisotropy>1||n.get(w).__currentAnisotropy)&&(r.texParameterf(E,Q.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(w.anisotropy,i.getMaxAnisotropy())),n.get(w).__currentAnisotropy=w.anisotropy)}}function Mt(E,w){let W=!1;E.__webglInit===void 0&&(E.__webglInit=!0,w.addEventListener("dispose",O));let Q=w.source,tt=d.get(Q);tt===void 0&&(tt={},d.set(Q,tt));let st=$(w);if(st!==E.__cacheKey){tt[st]===void 0&&(tt[st]={texture:r.createTexture(),usedTimes:0},a.memory.textures++,W=!0),tt[st].usedTimes++;let yt=tt[E.__cacheKey];yt!==void 0&&(tt[E.__cacheKey].usedTimes--,yt.usedTimes===0&&I(w)),E.__cacheKey=st,E.__webglTexture=tt[st].texture}return W}function ht(E,w,W){let Q=3553;(w.isDataArrayTexture||w.isCompressedArrayTexture)&&(Q=35866),w.isData3DTexture&&(Q=32879);let tt=Mt(E,w),st=w.source;e.bindTexture(Q,E.__webglTexture,33984+W);let yt=n.get(st);if(st.version!==yt.__version||tt===!0){e.activeTexture(33984+W),r.pixelStorei(37440,w.flipY),r.pixelStorei(37441,w.premultiplyAlpha),r.pixelStorei(3317,w.unpackAlignment),r.pixelStorei(37443,0);let rt=b(w)&&v(w.image)===!1,X=_(w.image,rt,!1,h);X=De(w,X);let mt=v(X)||o,xt=s.convert(w.format,w.encoding),ct=s.convert(w.type),gt=y(w.internalFormat,xt,ct,w.encoding,w.isVideoTexture);U(Q,w,mt);let ft,Rt=w.mipmaps,Ut=o&&w.isVideoTexture!==!0,$t=yt.__version===void 0||tt===!0,L=S(w,X,mt);if(w.isDepthTexture)gt=6402,o?w.type===Rn?gt=36012:w.type===Pn?gt=33190:w.type===oi?gt=35056:gt=33189:w.type===Rn&&console.error("WebGLRenderer: Floating point depth texture requires WebGL2."),w.format===Ln&>===6402&&w.type!==Ja&&w.type!==Pn&&(console.warn("THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture."),w.type=Pn,ct=s.convert(w.type)),w.format===hi&>===6402&&(gt=34041,w.type!==oi&&(console.warn("THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture."),w.type=oi,ct=s.convert(w.type))),$t&&(Ut?e.texStorage2D(3553,1,gt,X.width,X.height):e.texImage2D(3553,0,gt,X.width,X.height,0,xt,ct,null));else if(w.isDataTexture)if(Rt.length>0&&mt){Ut&&$t&&e.texStorage2D(3553,L,gt,Rt[0].width,Rt[0].height);for(let V=0,j=Rt.length;V>=1,j>>=1}}else if(Rt.length>0&&mt){Ut&&$t&&e.texStorage2D(3553,L,gt,Rt[0].width,Rt[0].height);for(let V=0,j=Rt.length;V0&&$t++,e.texStorage2D(34067,$t,ft,X[0].width,X[0].height));for(let V=0;V<6;V++)if(rt){Rt?e.texSubImage2D(34069+V,0,0,0,X[V].width,X[V].height,ct,gt,X[V].data):e.texImage2D(34069+V,0,ft,X[V].width,X[V].height,0,ct,gt,X[V].data);for(let j=0;j=34069&&tt<=34074)&&r.framebufferTexture2D(36160,Q,tt,n.get(W).__webglTexture,0),e.bindFramebuffer(36160,null)}function Ft(E,w,W){if(r.bindRenderbuffer(36161,E),w.depthBuffer&&!w.stencilBuffer){let Q=33189;if(W||Nt(w)){let tt=w.depthTexture;tt&&tt.isDepthTexture&&(tt.type===Rn?Q=36012:tt.type===Pn&&(Q=33190));let st=Wt(w);Nt(w)?u.renderbufferStorageMultisampleEXT(36161,st,Q,w.width,w.height):r.renderbufferStorageMultisample(36161,st,Q,w.width,w.height)}else r.renderbufferStorage(36161,Q,w.width,w.height);r.framebufferRenderbuffer(36160,36096,36161,E)}else if(w.depthBuffer&&w.stencilBuffer){let Q=Wt(w);W&&Nt(w)===!1?r.renderbufferStorageMultisample(36161,Q,35056,w.width,w.height):Nt(w)?u.renderbufferStorageMultisampleEXT(36161,Q,35056,w.width,w.height):r.renderbufferStorage(36161,34041,w.width,w.height),r.framebufferRenderbuffer(36160,33306,36161,E)}else{let Q=w.isWebGLMultipleRenderTargets===!0?w.texture:[w.texture];for(let tt=0;tt0&&Nt(E)===!1){let rt=st?w:[w];W.__webglMultisampledFramebuffer=r.createFramebuffer(),W.__webglColorRenderbuffer=[],e.bindFramebuffer(36160,W.__webglMultisampledFramebuffer);for(let X=0;X0&&Nt(E)===!1){let w=E.isWebGLMultipleRenderTargets?E.texture:[E.texture],W=E.width,Q=E.height,tt=16384,st=[],yt=E.stencilBuffer?33306:36096,rt=n.get(E),X=E.isWebGLMultipleRenderTargets===!0;if(X)for(let mt=0;mt0&&t.has("WEBGL_multisampled_render_to_texture")===!0&&w.__useRenderToTexture!==!1}function Ze(E){let w=a.render.frame;x.get(E)!==w&&(x.set(E,w),E.update())}function De(E,w){let W=E.encoding,Q=E.format,tt=E.type;return E.isCompressedTexture===!0||E.isVideoTexture===!0||E.format===Ir||W!==Nn&&(W===Ot?o===!1?t.has("EXT_sRGB")===!0&&Q===Be?(E.format=Ir,E.minFilter=Re,E.generateMipmaps=!1):w=vs.sRGBToLinear(w):(Q!==Be||tt!==Dn)&&console.warn("THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType."):console.error("THREE.WebGLTextures: Unsupported texture encoding:",W)),w}this.allocateTextureUnit=H,this.resetTextureUnits=Z,this.setTexture2D=J,this.setTexture2DArray=dt,this.setTexture3D=z,this.setTextureCube=K,this.rebindTextures=se,this.setupRenderTarget=Ae,this.updateRenderTargetMipmap=te,this.updateMultisampleRenderTarget=Ee,this.setupDepthRenderbuffer=_t,this.setupFrameBufferTexture=at,this.useMultisampledRTT=Nt}function ap(r,t,e){let n=e.isWebGL2;function i(s,a=null){let o;if(s===Dn)return 5121;if(s===cl)return 32819;if(s===ll)return 32820;if(s===rl)return 5120;if(s===ol)return 5122;if(s===Ja)return 5123;if(s===al)return 5124;if(s===Pn)return 5125;if(s===Rn)return 5126;if(s===Bi)return n?5131:(o=t.get("OES_texture_half_float"),o!==null?o.HALF_FLOAT_OES:null);if(s===hl)return 6406;if(s===Be)return 6408;if(s===ul)return 6409;if(s===fl)return 6410;if(s===Ln)return 6402;if(s===hi)return 34041;if(s===Ir)return o=t.get("EXT_sRGB"),o!==null?o.SRGB_ALPHA_EXT:null;if(s===dl)return 6403;if(s===pl)return 36244;if(s===ml)return 33319;if(s===gl)return 33320;if(s===xl)return 36249;if(s===Js||s===$s||s===Ks||s===js)if(a===Ot)if(o=t.get("WEBGL_compressed_texture_s3tc_srgb"),o!==null){if(s===Js)return o.COMPRESSED_SRGB_S3TC_DXT1_EXT;if(s===$s)return o.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;if(s===Ks)return o.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;if(s===js)return o.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT}else return null;else if(o=t.get("WEBGL_compressed_texture_s3tc"),o!==null){if(s===Js)return o.COMPRESSED_RGB_S3TC_DXT1_EXT;if(s===$s)return o.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(s===Ks)return o.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(s===js)return o.COMPRESSED_RGBA_S3TC_DXT5_EXT}else return null;if(s===zo||s===Oo||s===Bo||s===Uo)if(o=t.get("WEBGL_compressed_texture_pvrtc"),o!==null){if(s===zo)return o.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(s===Oo)return o.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(s===Bo)return o.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(s===Uo)return o.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}else return null;if(s===_l)return o=t.get("WEBGL_compressed_texture_etc1"),o!==null?o.COMPRESSED_RGB_ETC1_WEBGL:null;if(s===ko||s===Vo)if(o=t.get("WEBGL_compressed_texture_etc"),o!==null){if(s===ko)return a===Ot?o.COMPRESSED_SRGB8_ETC2:o.COMPRESSED_RGB8_ETC2;if(s===Vo)return a===Ot?o.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:o.COMPRESSED_RGBA8_ETC2_EAC}else return null;if(s===Go||s===Ho||s===Wo||s===qo||s===Xo||s===Yo||s===Zo||s===Jo||s===$o||s===Ko||s===jo||s===Qo||s===ta||s===ea)if(o=t.get("WEBGL_compressed_texture_astc"),o!==null){if(s===Go)return a===Ot?o.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:o.COMPRESSED_RGBA_ASTC_4x4_KHR;if(s===Ho)return a===Ot?o.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:o.COMPRESSED_RGBA_ASTC_5x4_KHR;if(s===Wo)return a===Ot?o.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:o.COMPRESSED_RGBA_ASTC_5x5_KHR;if(s===qo)return a===Ot?o.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:o.COMPRESSED_RGBA_ASTC_6x5_KHR;if(s===Xo)return a===Ot?o.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:o.COMPRESSED_RGBA_ASTC_6x6_KHR;if(s===Yo)return a===Ot?o.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:o.COMPRESSED_RGBA_ASTC_8x5_KHR;if(s===Zo)return a===Ot?o.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:o.COMPRESSED_RGBA_ASTC_8x6_KHR;if(s===Jo)return a===Ot?o.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:o.COMPRESSED_RGBA_ASTC_8x8_KHR;if(s===$o)return a===Ot?o.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:o.COMPRESSED_RGBA_ASTC_10x5_KHR;if(s===Ko)return a===Ot?o.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:o.COMPRESSED_RGBA_ASTC_10x6_KHR;if(s===jo)return a===Ot?o.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:o.COMPRESSED_RGBA_ASTC_10x8_KHR;if(s===Qo)return a===Ot?o.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:o.COMPRESSED_RGBA_ASTC_10x10_KHR;if(s===ta)return a===Ot?o.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:o.COMPRESSED_RGBA_ASTC_12x10_KHR;if(s===ea)return a===Ot?o.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:o.COMPRESSED_RGBA_ASTC_12x12_KHR}else return null;if(s===Qs)if(o=t.get("EXT_texture_compression_bptc"),o!==null){if(s===Qs)return a===Ot?o.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT:o.COMPRESSED_RGBA_BPTC_UNORM_EXT}else return null;if(s===yl||s===na||s===ia||s===sa)if(o=t.get("EXT_texture_compression_rgtc"),o!==null){if(s===Qs)return o.COMPRESSED_RED_RGTC1_EXT;if(s===na)return o.COMPRESSED_SIGNED_RED_RGTC1_EXT;if(s===ia)return o.COMPRESSED_RED_GREEN_RGTC2_EXT;if(s===sa)return o.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT}else return null;return s===oi?n?34042:(o=t.get("WEBGL_depth_texture"),o!==null?o.UNSIGNED_INT_24_8_WEBGL:null):r[s]!==void 0?r[s]:null}return{convert:i}}var Yr=class extends Se{constructor(t=[]){super(),this.isArrayCamera=!0,this.cameras=t}},si=class extends pe{constructor(){super(),this.isGroup=!0,this.type="Group"}},cp={type:"move"},zi=class{constructor(){this._targetRay=null,this._grip=null,this._hand=null}getHandSpace(){return this._hand===null&&(this._hand=new si,this._hand.matrixAutoUpdate=!1,this._hand.visible=!1,this._hand.joints={},this._hand.inputState={pinching:!1}),this._hand}getTargetRaySpace(){return this._targetRay===null&&(this._targetRay=new si,this._targetRay.matrixAutoUpdate=!1,this._targetRay.visible=!1,this._targetRay.hasLinearVelocity=!1,this._targetRay.linearVelocity=new R,this._targetRay.hasAngularVelocity=!1,this._targetRay.angularVelocity=new R),this._targetRay}getGripSpace(){return this._grip===null&&(this._grip=new si,this._grip.matrixAutoUpdate=!1,this._grip.visible=!1,this._grip.hasLinearVelocity=!1,this._grip.linearVelocity=new R,this._grip.hasAngularVelocity=!1,this._grip.angularVelocity=new R),this._grip}dispatchEvent(t){return this._targetRay!==null&&this._targetRay.dispatchEvent(t),this._grip!==null&&this._grip.dispatchEvent(t),this._hand!==null&&this._hand.dispatchEvent(t),this}connect(t){if(t&&t.hand){let e=this._hand;if(e)for(let n of t.hand.values())this._getHandJoint(e,n)}return this.dispatchEvent({type:"connected",data:t}),this}disconnect(t){return this.dispatchEvent({type:"disconnected",data:t}),this._targetRay!==null&&(this._targetRay.visible=!1),this._grip!==null&&(this._grip.visible=!1),this._hand!==null&&(this._hand.visible=!1),this}update(t,e,n){let i=null,s=null,a=null,o=this._targetRay,c=this._grip,l=this._hand;if(t&&e.session.visibilityState!=="visible-blurred"){if(l&&t.hand){a=!0;for(let p of t.hand.values()){let d=e.getJointPose(p,n),g=this._getHandJoint(l,p);d!==null&&(g.matrix.fromArray(d.transform.matrix),g.matrix.decompose(g.position,g.rotation,g.scale),g.jointRadius=d.radius),g.visible=d!==null}let h=l.joints["index-finger-tip"],f=l.joints["thumb-tip"],u=h.position.distanceTo(f.position),m=.02,x=.005;l.inputState.pinching&&u>m+x?(l.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:t.handedness,target:this})):!l.inputState.pinching&&u<=m-x&&(l.inputState.pinching=!0,this.dispatchEvent({type:"pinchstart",handedness:t.handedness,target:this}))}else c!==null&&t.gripSpace&&(s=e.getPose(t.gripSpace,n),s!==null&&(c.matrix.fromArray(s.transform.matrix),c.matrix.decompose(c.position,c.rotation,c.scale),s.linearVelocity?(c.hasLinearVelocity=!0,c.linearVelocity.copy(s.linearVelocity)):c.hasLinearVelocity=!1,s.angularVelocity?(c.hasAngularVelocity=!0,c.angularVelocity.copy(s.angularVelocity)):c.hasAngularVelocity=!1));o!==null&&(i=e.getPose(t.targetRaySpace,n),i===null&&s!==null&&(i=s),i!==null&&(o.matrix.fromArray(i.transform.matrix),o.matrix.decompose(o.position,o.rotation,o.scale),i.linearVelocity?(o.hasLinearVelocity=!0,o.linearVelocity.copy(i.linearVelocity)):o.hasLinearVelocity=!1,i.angularVelocity?(o.hasAngularVelocity=!0,o.angularVelocity.copy(i.angularVelocity)):o.hasAngularVelocity=!1,this.dispatchEvent(cp)))}return o!==null&&(o.visible=i!==null),c!==null&&(c.visible=s!==null),l!==null&&(l.visible=a!==null),this}_getHandJoint(t,e){if(t.joints[e.jointName]===void 0){let n=new si;n.matrixAutoUpdate=!1,n.visible=!1,t.joints[e.jointName]=n,t.add(n)}return t.joints[e.jointName]}},Zr=class extends ue{constructor(t,e,n,i,s,a,o,c,l,h){if(h=h!==void 0?h:Ln,h!==Ln&&h!==hi)throw new Error("DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat");n===void 0&&h===Ln&&(n=Pn),n===void 0&&h===hi&&(n=oi),super(null,i,s,a,o,c,h,n,l),this.isDepthTexture=!0,this.image={width:t,height:e},this.magFilter=o!==void 0?o:ce,this.minFilter=c!==void 0?c:ce,this.flipY=!1,this.generateMipmaps=!1}},Jr=class extends mn{constructor(t,e){super();let n=this,i=null,s=1,a=null,o="local-floor",c=1,l=null,h=null,f=null,u=null,m=null,x=null,p=e.getContextAttributes(),d=null,g=null,M=[],_=[],v=new Set,b=new Map,A=new Se;A.layers.enable(1),A.viewport=new Xt;let C=new Se;C.layers.enable(2),C.viewport=new Xt;let y=[A,C],S=new Yr;S.layers.enable(1),S.layers.enable(2);let P=null,O=null;this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function(z){let K=M[z];return K===void 0&&(K=new zi,M[z]=K),K.getTargetRaySpace()},this.getControllerGrip=function(z){let K=M[z];return K===void 0&&(K=new zi,M[z]=K),K.getGripSpace()},this.getHand=function(z){let K=M[z];return K===void 0&&(K=new zi,M[z]=K),K.getHandSpace()};function B(z){let K=_.indexOf(z.inputSource);if(K===-1)return;let nt=M[K];nt!==void 0&&nt.dispatchEvent({type:z.type,data:z.inputSource})}function D(){i.removeEventListener("select",B),i.removeEventListener("selectstart",B),i.removeEventListener("selectend",B),i.removeEventListener("squeeze",B),i.removeEventListener("squeezestart",B),i.removeEventListener("squeezeend",B),i.removeEventListener("end",D),i.removeEventListener("inputsourceschange",I);for(let z=0;z=0&&(_[it]=null,M[it].disconnect(nt))}for(let K=0;K=_.length){_.push(nt),it=Mt;break}else if(_[Mt]===null){_[Mt]=nt,it=Mt;break}if(it===-1)break}let U=M[it];U&&U.connect(nt)}}let k=new R,Y=new R;function Z(z,K,nt){k.setFromMatrixPosition(K.matrixWorld),Y.setFromMatrixPosition(nt.matrixWorld);let it=k.distanceTo(Y),U=K.projectionMatrix.elements,Mt=nt.projectionMatrix.elements,ht=U[14]/(U[10]-1),ut=U[14]/(U[10]+1),at=(U[9]+1)/U[5],Ft=(U[9]-1)/U[5],bt=(U[8]-1)/U[0],_t=(Mt[8]+1)/Mt[0],se=ht*bt,Ae=ht*_t,te=it/(-bt+_t),Ee=te*-bt;K.matrixWorld.decompose(z.position,z.quaternion,z.scale),z.translateX(Ee),z.translateZ(te),z.matrixWorld.compose(z.position,z.quaternion,z.scale),z.matrixWorldInverse.copy(z.matrixWorld).invert();let Wt=ht+te,Nt=ut+te,Ze=se-Ee,De=Ae+(it-Ee),E=at*ut/Nt*Wt,w=Ft*ut/Nt*Wt;z.projectionMatrix.makePerspective(Ze,De,E,w,Wt,Nt)}function H(z,K){K===null?z.matrixWorld.copy(z.matrix):z.matrixWorld.multiplyMatrices(K.matrixWorld,z.matrix),z.matrixWorldInverse.copy(z.matrixWorld).invert()}this.updateCamera=function(z){if(i===null)return;S.near=C.near=A.near=z.near,S.far=C.far=A.far=z.far,(P!==S.near||O!==S.far)&&(i.updateRenderState({depthNear:S.near,depthFar:S.far}),P=S.near,O=S.far);let K=z.parent,nt=S.cameras;H(S,K);for(let U=0;UU&&(b.set(it,it.lastChangedTime),n.dispatchEvent({type:"planechanged",data:it}))}}x=null}let dt=new Qa;dt.setAnimationLoop(J),this.setAnimationLoop=function(z){$=z},this.dispose=function(){}}};function lp(r,t){function e(p,d){d.color.getRGB(p.fogColor.value,ja(r)),d.isFog?(p.fogNear.value=d.near,p.fogFar.value=d.far):d.isFogExp2&&(p.fogDensity.value=d.density)}function n(p,d,g,M,_){d.isMeshBasicMaterial||d.isMeshLambertMaterial?i(p,d):d.isMeshToonMaterial?(i(p,d),h(p,d)):d.isMeshPhongMaterial?(i(p,d),l(p,d)):d.isMeshStandardMaterial?(i(p,d),f(p,d),d.isMeshPhysicalMaterial&&u(p,d,_)):d.isMeshMatcapMaterial?(i(p,d),m(p,d)):d.isMeshDepthMaterial?i(p,d):d.isMeshDistanceMaterial?(i(p,d),x(p,d)):d.isMeshNormalMaterial?i(p,d):d.isLineBasicMaterial?(s(p,d),d.isLineDashedMaterial&&a(p,d)):d.isPointsMaterial?o(p,d,g,M):d.isSpriteMaterial?c(p,d):d.isShadowMaterial?(p.color.value.copy(d.color),p.opacity.value=d.opacity):d.isShaderMaterial&&(d.uniformsNeedUpdate=!1)}function i(p,d){p.opacity.value=d.opacity,d.color&&p.diffuse.value.copy(d.color),d.emissive&&p.emissive.value.copy(d.emissive).multiplyScalar(d.emissiveIntensity),d.map&&(p.map.value=d.map),d.alphaMap&&(p.alphaMap.value=d.alphaMap),d.bumpMap&&(p.bumpMap.value=d.bumpMap,p.bumpScale.value=d.bumpScale,d.side===he&&(p.bumpScale.value*=-1)),d.displacementMap&&(p.displacementMap.value=d.displacementMap,p.displacementScale.value=d.displacementScale,p.displacementBias.value=d.displacementBias),d.emissiveMap&&(p.emissiveMap.value=d.emissiveMap),d.normalMap&&(p.normalMap.value=d.normalMap,p.normalScale.value.copy(d.normalScale),d.side===he&&p.normalScale.value.negate()),d.specularMap&&(p.specularMap.value=d.specularMap),d.alphaTest>0&&(p.alphaTest.value=d.alphaTest);let g=t.get(d).envMap;if(g&&(p.envMap.value=g,p.flipEnvMap.value=g.isCubeTexture&&g.isRenderTargetTexture===!1?-1:1,p.reflectivity.value=d.reflectivity,p.ior.value=d.ior,p.refractionRatio.value=d.refractionRatio),d.lightMap){p.lightMap.value=d.lightMap;let v=r.physicallyCorrectLights!==!0?Math.PI:1;p.lightMapIntensity.value=d.lightMapIntensity*v}d.aoMap&&(p.aoMap.value=d.aoMap,p.aoMapIntensity.value=d.aoMapIntensity);let M;d.map?M=d.map:d.specularMap?M=d.specularMap:d.displacementMap?M=d.displacementMap:d.normalMap?M=d.normalMap:d.bumpMap?M=d.bumpMap:d.roughnessMap?M=d.roughnessMap:d.metalnessMap?M=d.metalnessMap:d.alphaMap?M=d.alphaMap:d.emissiveMap?M=d.emissiveMap:d.clearcoatMap?M=d.clearcoatMap:d.clearcoatNormalMap?M=d.clearcoatNormalMap:d.clearcoatRoughnessMap?M=d.clearcoatRoughnessMap:d.iridescenceMap?M=d.iridescenceMap:d.iridescenceThicknessMap?M=d.iridescenceThicknessMap:d.specularIntensityMap?M=d.specularIntensityMap:d.specularColorMap?M=d.specularColorMap:d.transmissionMap?M=d.transmissionMap:d.thicknessMap?M=d.thicknessMap:d.sheenColorMap?M=d.sheenColorMap:d.sheenRoughnessMap&&(M=d.sheenRoughnessMap),M!==void 0&&(M.isWebGLRenderTarget&&(M=M.texture),M.matrixAutoUpdate===!0&&M.updateMatrix(),p.uvTransform.value.copy(M.matrix));let _;d.aoMap?_=d.aoMap:d.lightMap&&(_=d.lightMap),_!==void 0&&(_.isWebGLRenderTarget&&(_=_.texture),_.matrixAutoUpdate===!0&&_.updateMatrix(),p.uv2Transform.value.copy(_.matrix))}function s(p,d){p.diffuse.value.copy(d.color),p.opacity.value=d.opacity}function a(p,d){p.dashSize.value=d.dashSize,p.totalSize.value=d.dashSize+d.gapSize,p.scale.value=d.scale}function o(p,d,g,M){p.diffuse.value.copy(d.color),p.opacity.value=d.opacity,p.size.value=d.size*g,p.scale.value=M*.5,d.map&&(p.map.value=d.map),d.alphaMap&&(p.alphaMap.value=d.alphaMap),d.alphaTest>0&&(p.alphaTest.value=d.alphaTest);let _;d.map?_=d.map:d.alphaMap&&(_=d.alphaMap),_!==void 0&&(_.matrixAutoUpdate===!0&&_.updateMatrix(),p.uvTransform.value.copy(_.matrix))}function c(p,d){p.diffuse.value.copy(d.color),p.opacity.value=d.opacity,p.rotation.value=d.rotation,d.map&&(p.map.value=d.map),d.alphaMap&&(p.alphaMap.value=d.alphaMap),d.alphaTest>0&&(p.alphaTest.value=d.alphaTest);let g;d.map?g=d.map:d.alphaMap&&(g=d.alphaMap),g!==void 0&&(g.matrixAutoUpdate===!0&&g.updateMatrix(),p.uvTransform.value.copy(g.matrix))}function l(p,d){p.specular.value.copy(d.specular),p.shininess.value=Math.max(d.shininess,1e-4)}function h(p,d){d.gradientMap&&(p.gradientMap.value=d.gradientMap)}function f(p,d){p.roughness.value=d.roughness,p.metalness.value=d.metalness,d.roughnessMap&&(p.roughnessMap.value=d.roughnessMap),d.metalnessMap&&(p.metalnessMap.value=d.metalnessMap),t.get(d).envMap&&(p.envMapIntensity.value=d.envMapIntensity)}function u(p,d,g){p.ior.value=d.ior,d.sheen>0&&(p.sheenColor.value.copy(d.sheenColor).multiplyScalar(d.sheen),p.sheenRoughness.value=d.sheenRoughness,d.sheenColorMap&&(p.sheenColorMap.value=d.sheenColorMap),d.sheenRoughnessMap&&(p.sheenRoughnessMap.value=d.sheenRoughnessMap)),d.clearcoat>0&&(p.clearcoat.value=d.clearcoat,p.clearcoatRoughness.value=d.clearcoatRoughness,d.clearcoatMap&&(p.clearcoatMap.value=d.clearcoatMap),d.clearcoatRoughnessMap&&(p.clearcoatRoughnessMap.value=d.clearcoatRoughnessMap),d.clearcoatNormalMap&&(p.clearcoatNormalScale.value.copy(d.clearcoatNormalScale),p.clearcoatNormalMap.value=d.clearcoatNormalMap,d.side===he&&p.clearcoatNormalScale.value.negate())),d.iridescence>0&&(p.iridescence.value=d.iridescence,p.iridescenceIOR.value=d.iridescenceIOR,p.iridescenceThicknessMinimum.value=d.iridescenceThicknessRange[0],p.iridescenceThicknessMaximum.value=d.iridescenceThicknessRange[1],d.iridescenceMap&&(p.iridescenceMap.value=d.iridescenceMap),d.iridescenceThicknessMap&&(p.iridescenceThicknessMap.value=d.iridescenceThicknessMap)),d.transmission>0&&(p.transmission.value=d.transmission,p.transmissionSamplerMap.value=g.texture,p.transmissionSamplerSize.value.set(g.width,g.height),d.transmissionMap&&(p.transmissionMap.value=d.transmissionMap),p.thickness.value=d.thickness,d.thicknessMap&&(p.thicknessMap.value=d.thicknessMap),p.attenuationDistance.value=d.attenuationDistance,p.attenuationColor.value.copy(d.attenuationColor)),p.specularIntensity.value=d.specularIntensity,p.specularColor.value.copy(d.specularColor),d.specularIntensityMap&&(p.specularIntensityMap.value=d.specularIntensityMap),d.specularColorMap&&(p.specularColorMap.value=d.specularColorMap)}function m(p,d){d.matcap&&(p.matcap.value=d.matcap)}function x(p,d){p.referencePosition.value.copy(d.referencePosition),p.nearDistance.value=d.nearDistance,p.farDistance.value=d.farDistance}return{refreshFogUniforms:e,refreshMaterialUniforms:n}}function hp(r,t,e,n){let i={},s={},a=[],o=e.isWebGL2?r.getParameter(35375):0;function c(M,_){let v=_.program;n.uniformBlockBinding(M,v)}function l(M,_){let v=i[M.id];v===void 0&&(x(M),v=h(M),i[M.id]=v,M.addEventListener("dispose",d));let b=_.program;n.updateUBOMapping(M,b);let A=t.render.frame;s[M.id]!==A&&(u(M),s[M.id]=A)}function h(M){let _=f();M.__bindingPointIndex=_;let v=r.createBuffer(),b=M.__size,A=M.usage;return r.bindBuffer(35345,v),r.bufferData(35345,b,A),r.bindBuffer(35345,null),r.bindBufferBase(35345,_,v),v}function f(){for(let M=0;M0){A=v%b;let B=b-A;A!==0&&B-P.boundary<0&&(v+=b-A,S.__offset=v)}v+=P.storage}return A=v%b,A>0&&(v+=b-A),M.__size=v,M.__cache={},this}function p(M){let _={boundary:0,storage:0};return typeof M=="number"?(_.boundary=4,_.storage=4):M.isVector2?(_.boundary=8,_.storage=8):M.isVector3||M.isColor?(_.boundary=16,_.storage=12):M.isVector4?(_.boundary=16,_.storage=16):M.isMatrix3?(_.boundary=48,_.storage=48):M.isMatrix4?(_.boundary=64,_.storage=64):M.isTexture?console.warn("THREE.WebGLRenderer: Texture samplers can not be part of an uniforms group."):console.warn("THREE.WebGLRenderer: Unsupported uniform value type.",M),_}function d(M){let _=M.target;_.removeEventListener("dispose",d);let v=a.indexOf(_.__bindingPointIndex);a.splice(v,1),r.deleteBuffer(i[_.id]),delete i[_.id],delete s[_.id]}function g(){for(let M in i)r.deleteBuffer(i[M]);a=[],i={},s={}}return{bind:c,update:l,dispose:g}}function up(){let r=ys("canvas");return r.style.display="block",r}function fp(r={}){this.isWebGLRenderer=!0;let t=r.canvas!==void 0?r.canvas:up(),e=r.context!==void 0?r.context:null,n=r.depth!==void 0?r.depth:!0,i=r.stencil!==void 0?r.stencil:!0,s=r.antialias!==void 0?r.antialias:!1,a=r.premultipliedAlpha!==void 0?r.premultipliedAlpha:!0,o=r.preserveDrawingBuffer!==void 0?r.preserveDrawingBuffer:!1,c=r.powerPreference!==void 0?r.powerPreference:"default",l=r.failIfMajorPerformanceCaveat!==void 0?r.failIfMajorPerformanceCaveat:!1,h;e!==null?h=e.getContextAttributes().alpha:h=r.alpha!==void 0?r.alpha:!1;let f=null,u=null,m=[],x=[];this.domElement=t,this.debug={checkShaderErrors:!0},this.autoClear=!0,this.autoClearColor=!0,this.autoClearDepth=!0,this.autoClearStencil=!0,this.sortObjects=!0,this.clippingPlanes=[],this.localClippingEnabled=!1,this.outputEncoding=Nn,this.physicallyCorrectLights=!1,this.toneMapping=nn,this.toneMappingExposure=1;let p=this,d=!1,g=0,M=0,_=null,v=-1,b=null,A=new Xt,C=new Xt,y=null,S=t.width,P=t.height,O=1,B=null,D=null,I=new Xt(0,0,S,P),k=new Xt(0,0,S,P),Y=!1,Z=new Ps,H=!1,$=!1,J=null,dt=new zt,z=new At,K=new R,nt={background:null,fog:null,environment:null,overrideMaterial:null,isScene:!0};function it(){return _===null?O:1}let U=e;function Mt(T,F){for(let G=0;G0?u=x[x.length-1]:u=null,m.pop(),m.length>0?f=m[m.length-1]:f=null};function Kt(T,F,G,N){if(T.visible===!1)return;if(T.layers.test(F.layers)){if(T.isGroup)G=T.renderOrder;else if(T.isLOD)T.autoUpdate===!0&&T.update(F);else if(T.isLight)u.pushLight(T),T.castShadow&&u.pushShadow(T);else if(T.isSprite){if(!T.frustumCulled||Z.intersectsSprite(T)){N&&K.setFromMatrixPosition(T.matrixWorld).applyMatrix4(dt);let vt=Wt.update(T),St=T.material;St.visible&&f.push(T,vt,St,G,K.z,null)}}else if((T.isMesh||T.isLine||T.isPoints)&&(T.isSkinnedMesh&&T.skeleton.frame!==Ft.render.frame&&(T.skeleton.update(),T.skeleton.frame=Ft.render.frame),!T.frustumCulled||Z.intersectsObject(T))){N&&K.setFromMatrixPosition(T.matrixWorld).applyMatrix4(dt);let vt=Wt.update(T),St=T.material;if(Array.isArray(St)){let Tt=vt.groups;for(let Lt=0,Et=Tt.length;Lt0&&vn(q,F,G),N&&at.viewport(A.copy(N)),q.length>0&&kt(q,F,G),pt.length>0&&kt(pt,F,G),vt.length>0&&kt(vt,F,G),at.buffers.depth.setTest(!0),at.buffers.depth.setMask(!0),at.buffers.color.setMask(!0),at.setPolygonOffset(!1)}function vn(T,F,G){let N=ut.isWebGL2;J===null&&(J=new rn(1,1,{generateMipmaps:!0,type:ht.has("EXT_color_buffer_half_float")?Bi:Dn,minFilter:Oi,samples:N&&s===!0?4:0})),p.getDrawingBufferSize(z),N?J.setSize(z.x,z.y):J.setSize(Dr(z.x),Dr(z.y));let q=p.getRenderTarget();p.setRenderTarget(J),p.clear();let pt=p.toneMapping;p.toneMapping=nn,kt(T,F,G),p.toneMapping=pt,_t.updateMultisampleRenderTarget(J),_t.updateRenderTargetMipmap(J),p.setRenderTarget(q)}function kt(T,F,G){let N=F.isScene===!0?F.overrideMaterial:null;for(let q=0,pt=T.length;q0&&_t.useMultisampledRTT(T)===!1?q=bt.get(T).__webglMultisampledFramebuffer:q=Et,A.copy(T.viewport),C.copy(T.scissor),y=T.scissorTest}else A.copy(I).multiplyScalar(O).floor(),C.copy(k).multiplyScalar(O).floor(),y=Y;if(at.bindFramebuffer(36160,q)&&ut.drawBuffers&&N&&at.drawBuffers(T,q),at.viewport(A),at.scissor(C),at.setScissorTest(y),pt){let Tt=bt.get(T.texture);U.framebufferTexture2D(36160,36064,34069+F,Tt.__webglTexture,G)}else if(vt){let Tt=bt.get(T.texture),Lt=F||0;U.framebufferTextureLayer(36160,36064,Tt.__webglTexture,G||0,Lt)}v=-1},this.readRenderTargetPixels=function(T,F,G,N,q,pt,vt){if(!(T&&T.isWebGLRenderTarget)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");return}let St=bt.get(T).__webglFramebuffer;if(T.isWebGLCubeRenderTarget&&vt!==void 0&&(St=St[vt]),St){at.bindFramebuffer(36160,St);try{let Tt=T.texture,Lt=Tt.format,Et=Tt.type;if(Lt!==Be&&rt.convert(Lt)!==U.getParameter(35739)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.");return}let Ct=Et===Bi&&(ht.has("EXT_color_buffer_half_float")||ut.isWebGL2&&ht.has("EXT_color_buffer_float"));if(Et!==Dn&&rt.convert(Et)!==U.getParameter(35738)&&!(Et===Rn&&(ut.isWebGL2||ht.has("OES_texture_float")||ht.has("WEBGL_color_buffer_float")))&&!Ct){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.");return}F>=0&&F<=T.width-N&&G>=0&&G<=T.height-q&&U.readPixels(F,G,N,q,rt.convert(Lt),rt.convert(Et),pt)}finally{let Tt=_!==null?bt.get(_).__webglFramebuffer:null;at.bindFramebuffer(36160,Tt)}}},this.copyFramebufferToTexture=function(T,F,G=0){let N=Math.pow(2,-G),q=Math.floor(F.image.width*N),pt=Math.floor(F.image.height*N);_t.setTexture2D(F,0),U.copyTexSubImage2D(3553,G,0,0,T.x,T.y,q,pt),at.unbindTexture()},this.copyTextureToTexture=function(T,F,G,N=0){let q=F.image.width,pt=F.image.height,vt=rt.convert(G.format),St=rt.convert(G.type);_t.setTexture2D(G,0),U.pixelStorei(37440,G.flipY),U.pixelStorei(37441,G.premultiplyAlpha),U.pixelStorei(3317,G.unpackAlignment),F.isDataTexture?U.texSubImage2D(3553,N,T.x,T.y,q,pt,vt,St,F.image.data):F.isCompressedTexture?U.compressedTexSubImage2D(3553,N,T.x,T.y,F.mipmaps[0].width,F.mipmaps[0].height,vt,F.mipmaps[0].data):U.texSubImage2D(3553,N,T.x,T.y,vt,St,F.image),N===0&&G.generateMipmaps&&U.generateMipmap(3553),at.unbindTexture()},this.copyTextureToTexture3D=function(T,F,G,N,q=0){if(p.isWebGL1Renderer){console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: can only be used with WebGL2.");return}let pt=T.max.x-T.min.x+1,vt=T.max.y-T.min.y+1,St=T.max.z-T.min.z+1,Tt=rt.convert(N.format),Lt=rt.convert(N.type),Et;if(N.isData3DTexture)_t.setTexture3D(N,0),Et=32879;else if(N.isDataArrayTexture)_t.setTexture2DArray(N,0),Et=35866;else{console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: only supports THREE.DataTexture3D and THREE.DataTexture2DArray.");return}U.pixelStorei(37440,N.flipY),U.pixelStorei(37441,N.premultiplyAlpha),U.pixelStorei(3317,N.unpackAlignment);let Ct=U.getParameter(3314),Vt=U.getParameter(32878),ye=U.getParameter(3316),$e=U.getParameter(3315),Mn=U.getParameter(32877),Gt=G.isCompressedTexture?G.mipmaps[0]:G.image;U.pixelStorei(3314,Gt.width),U.pixelStorei(32878,Gt.height),U.pixelStorei(3316,T.min.x),U.pixelStorei(3315,T.min.y),U.pixelStorei(32877,T.min.z),G.isDataTexture||G.isData3DTexture?U.texSubImage3D(Et,q,F.x,F.y,F.z,pt,vt,St,Tt,Lt,Gt.data):G.isCompressedArrayTexture?(console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: untested support for compressed srcTexture."),U.compressedTexSubImage3D(Et,q,F.x,F.y,F.z,pt,vt,St,Tt,Gt.data)):U.texSubImage3D(Et,q,F.x,F.y,F.z,pt,vt,St,Tt,Lt,Gt),U.pixelStorei(3314,Ct),U.pixelStorei(32878,Vt),U.pixelStorei(3316,ye),U.pixelStorei(3315,$e),U.pixelStorei(32877,Mn),q===0&&N.generateMipmaps&&U.generateMipmap(Et),at.unbindTexture()},this.initTexture=function(T){T.isCubeTexture?_t.setTextureCube(T,0):T.isData3DTexture?_t.setTexture3D(T,0):T.isDataArrayTexture||T.isCompressedArrayTexture?_t.setTexture2DArray(T,0):_t.setTexture2D(T,0),at.unbindTexture()},this.resetState=function(){g=0,M=0,_=null,at.reset(),X.reset()},typeof __THREE_DEVTOOLS__!="undefined"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}var $r=class extends fp{};$r.prototype.isWebGL1Renderer=!0;function dn(r,t,e){return sc(r)?new r.constructor(r.subarray(t,e!==void 0?e:r.length)):r.slice(t,e)}function ps(r,t,e){return!r||!e&&r.constructor===t?r:typeof t.BYTES_PER_ELEMENT=="number"?new t(r):Array.prototype.slice.call(r)}function sc(r){return ArrayBuffer.isView(r)&&!(r instanceof DataView)}var pi=class{constructor(t,e,n,i){this.parameterPositions=t,this._cachedIndex=0,this.resultBuffer=i!==void 0?i:new e.constructor(n),this.sampleValues=e,this.valueSize=n,this.settings=null,this.DefaultSettings_={}}evaluate(t){let e=this.parameterPositions,n=this._cachedIndex,i=e[n],s=e[n-1];n:{t:{let a;e:{i:if(!(t=s)){let o=e[1];t=s)break t}a=n,n=0;break e}break n}for(;n>>1;te;)--a;if(++a,s!==0||a!==i){s>=a&&(a=Math.max(a,1),s=a-1);let o=this.getValueSize();this.times=dn(n,s,a),this.values=dn(this.values,s*o,a*o)}return this}validate(){let t=!0,e=this.getValueSize();e-Math.floor(e)!==0&&(console.error("THREE.KeyframeTrack: Invalid value size in track.",this),t=!1);let n=this.times,i=this.values,s=n.length;s===0&&(console.error("THREE.KeyframeTrack: Track is empty.",this),t=!1);let a=null;for(let o=0;o!==s;o++){let c=n[o];if(typeof c=="number"&&isNaN(c)){console.error("THREE.KeyframeTrack: Time is not a valid number.",this,o,c),t=!1;break}if(a!==null&&a>c){console.error("THREE.KeyframeTrack: Out of order keys.",this,o,c,a),t=!1;break}a=c}if(i!==void 0&&sc(i))for(let o=0,c=i.length;o!==c;++o){let l=i[o];if(isNaN(l)){console.error("THREE.KeyframeTrack: Value is not a valid number.",this,o,l),t=!1;break}}return t}optimize(){let t=dn(this.times),e=dn(this.values),n=this.getValueSize(),i=this.getInterpolation()===tr,s=t.length-1,a=1;for(let o=1;o0){t[a]=t[s];for(let o=s*n,c=a*n,l=0;l!==n;++l)e[c+l]=e[o+l];++a}return a!==t.length?(this.times=dn(t,0,a),this.values=dn(e,0,a*n)):(this.times=t,this.values=e),this}clone(){let t=dn(this.times,0),e=dn(this.values,0),n=this.constructor,i=new n(this.name,t,e);return i.createInterpolant=this.createInterpolant,i}};Ve.prototype.TimeBufferType=Float32Array;Ve.prototype.ValueBufferType=Float32Array;Ve.prototype.DefaultInterpolation=_s;var On=class extends Ve{};On.prototype.ValueTypeName="bool";On.prototype.ValueBufferType=Array;On.prototype.DefaultInterpolation=xs;On.prototype.InterpolantFactoryMethodLinear=void 0;On.prototype.InterpolantFactoryMethodSmooth=void 0;var to=class extends Ve{};to.prototype.ValueTypeName="color";var eo=class extends Ve{};eo.prototype.ValueTypeName="number";var no=class extends pi{constructor(t,e,n,i){super(t,e,n,i)}interpolate_(t,e,n,i){let s=this.resultBuffer,a=this.sampleValues,o=this.valueSize,c=(n-e)/(i-e),l=t*o;for(let h=l+o;l!==h;l+=4)gn.slerpFlat(s,0,a,l-o,a,l,c);return s}},Vi=class extends Ve{InterpolantFactoryMethodLinear(t){return new no(this.times,this.values,this.getValueSize(),t)}};Vi.prototype.ValueTypeName="quaternion";Vi.prototype.DefaultInterpolation=_s;Vi.prototype.InterpolantFactoryMethodSmooth=void 0;var Bn=class extends Ve{};Bn.prototype.ValueTypeName="string";Bn.prototype.ValueBufferType=Array;Bn.prototype.DefaultInterpolation=xs;Bn.prototype.InterpolantFactoryMethodLinear=void 0;Bn.prototype.InterpolantFactoryMethodSmooth=void 0;var io=class extends Ve{};io.prototype.ValueTypeName="vector";var ao="\\\\[\\\\]\\\\.:\\\\/",dp=new RegExp("["+ao+"]","g"),co="[^"+ao+"]",pp="[^"+ao.replace("\\\\.","")+"]",mp=/((?:WC+[\\/:])*)/.source.replace("WC",co),gp=/(WCOD+)?/.source.replace("WCOD",pp),xp=/(?:\\.(WC+)(?:\\[(.+)\\])?)?/.source.replace("WC",co),_p=/\\.(WC+)(?:\\[(.+)\\])?/.source.replace("WC",co),yp=new RegExp("^"+mp+gp+xp+_p+"$"),vp=["material","materials","bones","map"],so=class{constructor(t,e,n){let i=n||Dt.parseTrackName(e);this._targetGroup=t,this._bindings=t.subscribe_(e,i)}getValue(t,e){this.bind();let n=this._targetGroup.nCachedObjects_,i=this._bindings[n];i!==void 0&&i.getValue(t,e)}setValue(t,e){let n=this._bindings;for(let i=this._targetGroup.nCachedObjects_,s=n.length;i!==s;++i)n[i].setValue(t,e)}bind(){let t=this._bindings;for(let e=this._targetGroup.nCachedObjects_,n=t.length;e!==n;++e)t[e].bind()}unbind(){let t=this._bindings;for(let e=this._targetGroup.nCachedObjects_,n=t.length;e!==n;++e)t[e].unbind()}},Dt=class{constructor(t,e,n){this.path=e,this.parsedPath=n||Dt.parseTrackName(e),this.node=Dt.findNode(t,this.parsedPath.nodeName)||t,this.rootNode=t,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}static create(t,e,n){return t&&t.isAnimationObjectGroup?new Dt.Composite(t,e,n):new Dt(t,e,n)}static sanitizeNodeName(t){return t.replace(/\\s/g,"_").replace(dp,"")}static parseTrackName(t){let e=yp.exec(t);if(e===null)throw new Error("PropertyBinding: Cannot parse trackName: "+t);let n={nodeName:e[2],objectName:e[3],objectIndex:e[4],propertyName:e[5],propertyIndex:e[6]},i=n.nodeName&&n.nodeName.lastIndexOf(".");if(i!==void 0&&i!==-1){let s=n.nodeName.substring(i+1);vp.indexOf(s)!==-1&&(n.nodeName=n.nodeName.substring(0,i),n.objectName=s)}if(n.propertyName===null||n.propertyName.length===0)throw new Error("PropertyBinding: can not parse propertyName from trackName: "+t);return n}static findNode(t,e){if(e===void 0||e===""||e==="."||e===-1||e===t.name||e===t.uuid)return t;if(t.skeleton){let n=t.skeleton.getBoneByName(e);if(n!==void 0)return n}if(t.children){let n=function(s){for(let a=0;ae&&(e=i,t=n)}return t}function ho(r,t){t.set(r)}function uo(r,t,e){let n,i;for(let s=0;s<3;s++){let a=s+3;n=r[s],i=t[s],e[s]=ni?n:i}}function Hi(r,t,e){for(let n=0;n<3;n++){let i=t[r+2*n],s=t[r+2*n+1],a=i-s,o=i+s;ae[n+3]&&(e[n+3]=o)}}function gi(r){let t=r[3]-r[0],e=r[4]-r[1],n=r[5]-r[2];return 2*(t*e+e*n+n*t)}function wp(r,t){if(!r.index){let e=r.attributes.position.count,n=t.useSharedArrayBuffer?SharedArrayBuffer:ArrayBuffer,i;e>65535?i=new Uint32Array(new n(4*e)):i=new Uint16Array(new n(2*e)),r.setIndex(new Yt(i,1));for(let s=0;si-s);for(let i=0;ic&&(c=C),g&&vx&&(x=v);let y=r[M+2],S=r[M+3],P=y-S,O=y+S;Pl&&(l=O),g&&yp&&(p=y);let B=r[M+4],D=r[M+5],I=B-D,k=B+D;Ih&&(h=k),g&&Bd&&(d=B)}n[0]=s,n[1]=a,n[2]=o,n[3]=c,n[4]=l,n[5]=h,g&&(i[0]=f,i[1]=u,i[2]=m,i[3]=x,i[4]=p,i[5]=d)}function Tp(r,t,e,n){let i=1/0,s=1/0,a=1/0,o=-1/0,c=-1/0,l=-1/0;for(let h=t*6,f=(t+e)*6;ho&&(o=u);let m=r[h+2];mc&&(c=m);let x=r[h+4];xl&&(l=x)}n[0]=i,n[1]=s,n[2]=a,n[3]=o,n[4]=c,n[5]=l}function Ap(r,t,e,n,i){let s=e,a=e+n-1,o=i.pos,c=i.axis*2;for(;;){for(;s<=a&&t[s*6+c]=o;)a--;if(sr.candidate-t.candidate,xn=new Array(an).fill().map(()=>({count:0,bounds:new Float32Array(6),rightCacheBounds:new Float32Array(6),leftCacheBounds:new Float32Array(6),candidate:0})),Ds=new Float32Array(6);function Cp(r,t,e,n,i,s){let a=-1,o=0;if(s===0)a=lo(t),a!==-1&&(o=(t[a]+t[a+3])/2);else if(s===1)a=lo(r),a!==-1&&(o=Pp(e,n,i,a));else if(s===2){let c=gi(r),l=1.25*i,h=n*6,f=(n+i)*6;for(let u=0;u<3;u++){let m=t[u],d=(t[u+3]-m)/an;if(i=C.candidate?Hi(v,e,C.rightCacheBounds):(Hi(v,e,C.leftCacheBounds),C.count++)}}for(let v=0;v<_;v++){let b=g[v],A=b.count,C=i-b.count,y=b.leftCacheBounds,S=b.rightCacheBounds,P=0;A!==0&&(P=gi(y)/c);let O=0;C!==0&&(O=gi(S)/c);let B=1+1.25*(P*A+O*C);B=an&&(A=an-1);let C=xn[A];C.count++,Hi(_,e,C.bounds)}let g=xn[an-1];ho(g.bounds,g.rightCacheBounds);for(let _=an-2;_>=0;_--){let v=xn[_],b=xn[_+1];uo(v.bounds,b.rightCacheBounds,v.rightCacheBounds)}let M=0;for(let _=0;_A&&(A=_),v>A&&(A=v);let C=(A-b)/2,y=g*2;s[m+y+0]=b+C,s[m+y+1]=C+(Math.abs(b)+C)*rc,bt[g+3]&&(t[g+3]=A)}}return s}function Lp(r,t){function e(g){u&&u(g/m)}function n(g,M,_,v=null,b=0){if(!x&&b>=c&&(x=!0,l&&(console.warn(`MeshBVH: Max depth of ${c} reached when generating BVH. Consider increasing maxDepth.`),console.warn(r))),_<=h||b>=c)return e(M+_),g.offset=M,g.count=_,g;let A=Cp(g.boundingData,v,a,M,_,f);if(A.axis===-1)return e(M+_),g.offset=M,g.count=_,g;let C=Ap(o,a,M,_,A);if(C===M||C===M+_)e(M+_),g.offset=M,g.count=_;else{g.splitAxis=A.axis;let y=new Un,S=M,P=C-M;g.left=y,y.boundingData=new Float32Array(6),po(a,S,P,y.boundingData,s),n(y,S,P,s,b+1);let O=new Un,B=C,D=_-P;g.right=O,O.boundingData=new Float32Array(6),po(a,B,D,O.boundingData,s),n(O,B,D,s,b+1)}return g}wp(r,t);let i=new Float32Array(6),s=new Float32Array(6),a=Rp(r,i),o=r.index.array,c=t.maxDepth,l=t.verbose,h=t.maxLeafTris,f=t.strategy,u=t.onProgress,m=r.index.count/3,x=!1,p=[],d=Sp(r);if(d.length===1){let g=d[0],M=new Un;M.boundingData=i,Tp(a,g.offset,g.count,s),n(M,g.offset,g.count,s),p.push(M)}else for(let g of d){let M=new Un;M.boundingData=new Float32Array(6),po(a,g.offset,g.count,M.boundingData,s),n(M,g.offset,g.count,s),p.push(M)}return p}function cc(r,t){let e=Lp(r,t),n,i,s,a=[],o=t.useSharedArrayBuffer?SharedArrayBuffer:ArrayBuffer;for(let h=0;hMath.pow(2,32))throw new Error("MeshBVH: Cannot store child pointer greater than 32 bits.");return i[u+6]=_/4,_=l(_,g),i[u+7]=M,_}}}var ge=class{constructor(){this.min=1/0,this.max=-1/0}setFromPointsField(t,e){let n=1/0,i=-1/0;for(let s=0,a=t.length;si?c:i}this.min=n,this.max=i}setFromPoints(t,e){let n=1/0,i=-1/0;for(let s=0,a=e.length;si?c:i}this.min=n,this.max=i}isSeparated(t){return this.min>t.max||t.min>this.max}};ge.prototype.setFromBox=function(){let r=new R;return function(e,n){let i=n.min,s=n.max,a=1/0,o=-1/0;for(let c=0;c<=1;c++)for(let l=0;l<=1;l++)for(let h=0;h<=1;h++){r.x=i.x*c+s.x*(1-c),r.y=i.y*l+s.y*(1-l),r.z=i.z*h+s.z*(1-h);let f=e.dot(r);a=Math.min(f,a),o=Math.max(f,o)}this.min=a,this.max=o}}();var Qp=function(){let r=new ge;return function(e,n){let i=e.points,s=e.satAxes,a=e.satBounds,o=n.points,c=n.satAxes,l=n.satBounds;for(let h=0;h<3;h++){let f=a[h],u=s[h];if(r.setFromPoints(u,o),f.isSeparated(r))return!1}for(let h=0;h<3;h++){let f=l[h],u=c[h];if(r.setFromPoints(u,i),f.isSeparated(r))return!1}}}();var Ip=function(){let r=new R,t=new R,e=new R;return function(i,s,a){let o=i.start,c=r,l=s.start,h=t;e.subVectors(o,l),r.subVectors(i.end,i.start),t.subVectors(s.end,s.start);let f=e.dot(h),u=h.dot(c),m=h.dot(h),x=e.dot(c),d=c.dot(c)*m-u*u,g,M;d!==0?g=(f*u-x*m)/d:g=0,M=(f+g*u)/m,a.x=g,a.y=M}}(),Wi=function(){let r=new At,t=new R,e=new R;return function(i,s,a,o){Ip(i,s,r);let c=r.x,l=r.y;if(c>=0&&c<=1&&l>=0&&l<=1){i.at(c,a),s.at(l,o);return}else if(c>=0&&c<=1){l<0?s.at(0,o):s.at(1,o),i.closestPointToPoint(o,!0,a);return}else if(l>=0&&l<=1){c<0?i.at(0,a):i.at(1,a),s.closestPointToPoint(a,!0,o);return}else{let h;c<0?h=i.start:h=i.end;let f;l<0?f=s.start:f=s.end;let u=t,m=e;if(i.closestPointToPoint(f,!0,t),s.closestPointToPoint(h,!0,e),u.distanceToSquared(f)<=m.distanceToSquared(h)){a.copy(u),o.copy(f);return}else{a.copy(h),o.copy(m);return}}}}(),lc=function(){let r=new R,t=new R,e=new Te,n=new me;return function(s,a){let{radius:o,center:c}=s,{a:l,b:h,c:f}=a;if(n.start=l,n.end=h,n.closestPointToPoint(c,!0,r).distanceTo(c)<=o||(n.start=l,n.end=f,n.closestPointToPoint(c,!0,r).distanceTo(c)<=o)||(n.start=h,n.end=f,n.closestPointToPoint(c,!0,r).distanceTo(c)<=o))return!0;let p=a.getPlane(e);if(Math.abs(p.distanceToPoint(c))<=o){let g=p.projectPoint(c,t);if(a.containsPoint(g))return!0}return!1}}();var Dp=1e-15;function xi(r){return Math.abs(r)new R),this.satBounds=new Array(4).fill().map(()=>new ge),this.points=[this.a,this.b,this.c],this.sphere=new Fn,this.plane=new Te,this.needsUpdate=!0}intersectsSphere(t){return lc(t,this)}update(){let t=this.a,e=this.b,n=this.c,i=this.points,s=this.satAxes,a=this.satBounds,o=s[0],c=a[0];this.getNormal(o),c.setFromPoints(o,i);let l=s[1],h=a[1];l.subVectors(t,e),h.setFromPoints(l,i);let f=s[2],u=a[2];f.subVectors(e,n),u.setFromPoints(f,i);let m=s[3],x=a[3];m.subVectors(n,t),x.setFromPoints(m,i),this.sphere.setFromPoints(this.points),this.plane.setFromNormalAndCoplanarPoint(o,t),this.needsUpdate=!1}};xe.prototype.closestPointToSegment=function(){let r=new R,t=new R,e=new me;return function(i,s=null,a=null){let{start:o,end:c}=i,l=this.points,h,f=1/0;for(let u=0;u<3;u++){let m=(u+1)%3;e.start.copy(l[u]),e.end.copy(l[m]),Wi(e,i,r,t),h=r.distanceToSquared(t),h1-1e-10){let M=this.satBounds,_=this.satAxes;e[0]=m.a,e[1]=m.b,e[2]=m.c;for(let A=0;A<4;A++){let C=M[A],y=_[A];if(n.setFromPoints(y,e),C.isSeparated(n))return!1}let v=m.satBounds,b=m.satAxes;t[0]=this.a,t[1]=this.b,t[2]=this.c;for(let A=0;A<4;A++){let C=v[A],y=b[A];if(n.setFromPoints(y,t),C.isSeparated(n))return!1}for(let A=0;A<4;A++){let C=_[A];for(let y=0;y<4;y++){let S=b[y];if(s.crossVectors(C,S),n.setFromPoints(s,t),i.setFromPoints(s,e),n.isSeparated(i))return!1}}return x&&(p||console.warn("ExtendedTriangle.intersectsTriangle: Triangles are coplanar which does not support an output edge. Setting edge to 0, 0, 0."),x.start.set(0,0,0),x.end.set(0,0,0)),!0}else{let M=this.points,_=!1,v=0;for(let I=0;I<3;I++){let k=M[I],Y=M[(I+1)%3];l.start.copy(k),l.end.copy(Y),l.delta(a);let Z=_?h.start:h.end,H=xi(g.distanceToPoint(k));if(xi(g.normal.dot(a))&&H){h.copy(l),v=2;break}if((g.intersectLine(l,Z)||H)&&!xi(Z.distanceTo(Y))){if(v++,_)break;_=!0}}if(v===1&&m.containsPoint(h.end))return x&&(x.start.copy(h.end),x.end.copy(h.end)),!0;if(v!==2)return!1;let b=m.points,A=!1,C=0;for(let I=0;I<3;I++){let k=b[I],Y=b[(I+1)%3];l.start.copy(k),l.end.copy(Y),l.delta(o);let Z=A?f.start:f.end,H=xi(d.distanceToPoint(k));if(xi(d.normal.dot(o))&&H){f.copy(l),C=2;break}if((d.intersectLine(l,Z)||H)&&!xi(Z.distanceTo(Y))){if(C++,A)break;A=!0}}if(C===1&&this.containsPoint(f.end))return x&&(x.start.copy(f.end),x.end.copy(f.end)),!0;if(C!==2)return!1;if(h.delta(a),f.delta(o),a.dot(o)<0){let I=f.start;f.start=f.end,f.end=I}let y=h.start.dot(a),S=h.end.dot(a),P=f.start.dot(a),O=f.end.dot(a),B=S0?x.start.copy(h.start):x.start.copy(f.start),c.subVectors(h.end,f.end),c.dot(a)<0?x.end.copy(h.end):x.end.copy(f.end)),!0)}}}();xe.prototype.distanceToPoint=function(){let r=new R;return function(e){return this.closestPointToPoint(e,r),e.distanceTo(r)}}();xe.prototype.distanceToTriangle=function(){let r=new R,t=new R,e=["a","b","c"],n=new me,i=new me;return function(a,o=null,c=null){let l=o||c?n:null;if(this.intersectsTriangle(a,l))return(o||c)&&(o&&l.getCenter(o),c&&l.getCenter(c)),0;let h=1/0;for(let f=0;f<3;f++){let u,m=e[f],x=a[m];this.closestPointToPoint(x,r),u=x.distanceToSquared(r),unew R),this.satAxes=new Array(3).fill().map(()=>new R),this.satBounds=new Array(3).fill().map(()=>new ge),this.alignedSatBounds=new Array(3).fill().map(()=>new ge),this.needsUpdate=!1,t&&this.min.copy(t),e&&this.max.copy(e),n&&this.matrix.copy(n)}set(t,e,n){this.min.copy(t),this.max.copy(e),this.matrix.copy(n),this.needsUpdate=!0}copy(t){this.min.copy(t.min),this.max.copy(t.max),this.matrix.copy(t.matrix),this.needsUpdate=!0}};_e.prototype.update=function(){return function(){let t=this.matrix,e=this.min,n=this.max,i=this.points;for(let l=0;l<=1;l++)for(let h=0;h<=1;h++)for(let f=0;f<=1;f++){let u=1*l|2*h|4*f,m=i[u];m.x=l?n.x:e.x,m.y=h?n.y:e.y,m.z=f?n.z:e.z,m.applyMatrix4(t)}let s=this.satBounds,a=this.satAxes,o=i[0];for(let l=0;l<3;l++){let h=a[l],f=s[l],u=1<new me),e=new Array(12).fill().map(()=>new me),n=new R,i=new R;return function(a,o=0,c=null,l=null){if(this.needsUpdate&&this.update(),this.intersectsBox(a))return(c||l)&&(a.getCenter(i),this.closestPointToPoint(i,n),a.closestPointToPoint(n,i),c&&c.copy(n),l&&l.copy(i)),0;let h=o*o,f=a.min,u=a.max,m=this.points,x=1/0;for(let d=0;d<8;d++){let g=m[d];i.copy(g).clamp(f,u);let M=g.distanceToSquared(i);if(M=0,m,x;u?(m=vi(r),x=Mi(r,o)):(m=Mi(r,o),x=vi(r));let d=Gs(m,s,n,Us)?Vs(m,t,e,n):null;if(d){let _=d.point[h];if(u?_<=s[x+l]:_>=s[x+l+3])return d}let M=Gs(x,s,n,Us)?Vs(x,t,e,n):null;return d&&M?d.distance<=M.distance?d:M:d||M||null}}var xc=function(){let r,t,e=[],n=new _i(()=>new fe);return function(...a){r=n.getPrimitive(),t=n.getPrimitive(),e.push(r,t);let o=i(...a);n.releasePrimitive(r),n.releasePrimitive(t),e.pop(),e.pop();let c=e.length;return c>0&&(t=e[c-1],r=e[c-2]),o};function i(s,a,o,c,l=null,h=0,f=0){function u(_){let v=_*2,b=_n,A=yn;for(;!cn(v,b);)_=vi(_),v=_*2;return kn(_,A)}function m(_){let v=_*2,b=_n,A=yn;for(;!cn(v,b);)_=Mi(_,A),v=_*2;return kn(_,A)+yi(v,b)}let x=s*2,p=wi,d=_n,g=yn;if(cn(x,d)){let _=kn(s,g),v=yi(x,d);return Le(s,p,r),c(_,v,!1,f,h+s,r)}else{let _=vi(s),v=Mi(s,g),b=_,A=v,C,y,S,P;if(l&&(S=r,P=t,Le(b,p,S),Le(A,p,P),C=l(S),y=l(P),yi.intersectsBox(y),intersectsTriangle:y=>{y.a.applyMatrix4(l),y.b.applyMatrix4(l),y.c.applyMatrix4(l),y.needsUpdate=!0;for(let S=b*3,P=(A+b)*3;Snew xe),Ye=class{static serialize(t,e={}){if(e.isBufferGeometry)return console.warn("MeshBVH.serialize: The arguments for the function have changed. See documentation for new signature."),Ye.serialize(arguments[0],{cloneBuffers:arguments[2]===void 0?!0:arguments[2]});e=Zi({cloneBuffers:!0},e);let n=t.geometry,i=t._roots,s=n.getIndex(),a;return e.cloneBuffers?a={roots:i.map(o=>o.slice()),index:s.array.slice()}:a={roots:i,index:s.array},a}static deserialize(t,e,n={}){if(typeof n=="boolean")return console.warn("MeshBVH.deserialize: The arguments for the function have changed. See documentation for new signature."),Ye.deserialize(arguments[0],arguments[1],{setIndex:arguments[2]===void 0?!0:arguments[2]});n=Zi({setIndex:!0},n);let{index:i,roots:s}=t,a=new Ye(e,Co(Zi({},n),{[yo]:!0}));if(a._roots=s,n.setIndex){let o=e.getIndex();if(o===null){let c=new Yt(t.index,1,!1);e.setIndex(c)}else o.array!==i&&(o.array.set(i),o.needsUpdate=!0)}return a}constructor(t,e={}){if(t.isBufferGeometry){if(t.index&&t.index.isInterleavedBufferAttribute)throw new Error("MeshBVH: InterleavedBufferAttribute is not supported for the index attribute.")}else throw new Error("MeshBVH: Only BufferGeometries are supported.");if(e=Object.assign({strategy:0,maxDepth:40,maxLeafTris:10,verbose:!0,useSharedArrayBuffer:!1,setBoundingBox:!0,onProgress:null,[yo]:!1},e),e.useSharedArrayBuffer&&typeof SharedArrayBuffer=="undefined")throw new Error("MeshBVH: SharedArrayBuffer is not available.");this._roots=null,e[yo]||(this._roots=cc(t,e),!t.boundingBox&&e.setBoundingBox&&(t.boundingBox=this.getBoundingBox(new fe))),this.geometry=t}refit(t=null){t&&Array.isArray(t)&&(t=new Set(t));let e=this.geometry,n=e.index.array,i=e.attributes.position,s,a,o,c,l=0,h=this._roots;for(let u=0,m=h.length;uA&&(A=B),DC&&(C=D),Iy&&(y=I)}return c[u+0]!==_||c[u+1]!==v||c[u+2]!==b||c[u+3]!==A||c[u+4]!==C||c[u+5]!==y?(c[u+0]=_,c[u+1]=v,c[u+2]=b,c[u+3]=A,c[u+4]=C,c[u+5]=y,!0):!1}else{let g=u+8,M=a[u+6],_=g+m,v=M+m,b=x,A=!1,C=!1;t?b||(A=t.has(_),C=t.has(v),b=!A&&!C):(A=!0,C=!0);let y=b||A,S=b||C,P=!1;y&&(P=f(g,m,b));let O=!1;S&&(O=f(M,m,b));let B=P||O;if(B)for(let D=0;D<3;D++){let I=g+D,k=M+D,Y=c[I],Z=c[I+3],H=c[k],$=c[k+3];c[u+D]=Y$?Z:$}return B}}}traverse(t,e=0){let n=this._roots[e],i=new Uint32Array(n),s=new Uint16Array(n);a(0);function a(o,c=0){let l=o*2,h=s[l+15]===65535;if(h){let f=i[o+6],u=s[l+14];t(c,h,new Float32Array(n,o*4,6),f,u)}else{let f=o+32/4,u=i[o+6],m=i[o+7];t(c,h,new Float32Array(n,o*4,6),m)||(a(f,c+1),a(u,c+1))}}}raycast(t,e=Ue){let n=this._roots,i=this.geometry,s=[],a=e.isMaterial,o=Array.isArray(e),c=i.groups,l=a?e.side:e;for(let h=0,f=n.length;h{let g=x*3;return u(m,g,g+1,g+2,p,d)}}t={boundsTraverseOrder:n,intersectsBounds:t,intersectsTriangle:e,intersectsRange:null},console.warn("MeshBVH: Shapecast function signature has changed and now takes an object of callbacks as a second argument. See docs for new signature.")}let s=Xe.getPrimitive(),{boundsTraverseOrder:a,intersectsBounds:o,intersectsRange:c,intersectsTriangle:l}=t;if(c&&l){let u=c;c=(m,x,p,d,g)=>u(m,x,p,d,g)?!0:xo(m,x,i,l,p,d,s)}else c||(l?c=(u,m,x,p)=>xo(u,m,i,l,x,p,s):c=(u,m,x)=>x);let h=!1,f=0;for(let u of this._roots){if(Si(u),h=xc(0,i,o,c,a,f),qi(),h)break;f+=u.byteLength}return Xe.releasePrimitive(s),h}bvhcast(t,e,n){let{intersectsRanges:i,intersectsTriangles:s}=n,a=this.geometry.index,o=this.geometry.attributes.position,c=t.geometry.index,l=t.geometry.attributes.position;Ti.copy(e).invert();let h=Xe.getPrimitive(),f=Xe.getPrimitive();if(s){let m=function(x,p,d,g,M,_,v,b){for(let A=d,C=d+g;AMo.intersectsBox(m),intersectsRange:(m,x,p,d,g,M)=>(vo.copy(M),vo.applyMatrix4(Ti),t.shapecast({intersectsBounds:_=>vo.intersectsBox(_),intersectsRange:(_,v,b,A,C)=>i(m,x,_,v,d,g,A,C)}))});return Xe.releasePrimitive(h),Xe.releasePrimitive(f),u}intersectsBox(t,e){return Vn.set(t.min,t.max,e),Vn.needsUpdate=!0,this.shapecast({intersectsBounds:n=>Vn.intersectsBox(n),intersectsTriangle:n=>Vn.intersectsTriangle(n)})}intersectsSphere(t){return this.shapecast({intersectsBounds:e=>t.intersectsBox(e),intersectsTriangle:e=>e.intersectsSphere(t)})}closestPointToGeometry(t,e,n={},i={},s=0,a=1/0){t.boundingBox||t.computeBoundingBox(),Vn.set(t.boundingBox.min,t.boundingBox.max,e),Vn.needsUpdate=!0;let o=this.geometry,c=o.attributes.position,l=o.index,h=t.attributes.position,f=t.index,u=Xe.getPrimitive(),m=Xe.getPrimitive(),x=Hs,p=Bp,d=null,g=null;i&&(d=Up,g=kp);let M=1/0,_=null,v=null;return Ti.copy(e).invert(),Xi.matrix.copy(Ti),this.shapecast({boundsTraverseOrder:b=>Vn.distanceToBox(b),intersectsBounds:(b,A,C)=>C{if(t.boundsTree)return t.boundsTree.shapecast({boundsTraverseOrder:C=>Xi.distanceToBox(C),intersectsBounds:(C,y,S)=>S{for(let S=C*3,P=(C+y)*3;S(Yi.copy(t).clamp(h.min,h.max),Yi.distanceToSquared(t)),intersectsBounds:(h,f,u)=>u{h.closestPointToPoint(t,Yi);let u=t.distanceToSquared(Yi);return u{Le(0,new Float32Array(n),yc),t.union(yc)}),t}};var bo=self;bo.addEventListener("message",async function({data:r}){let t=performance.now();function e(o){let c=performance.now();(c-t>=10||o===1)&&(postMessage({error:void 0,serialized:void 0,position:void 0,progress:o}),t=c)}let{id:n,index:i,position:s,options:a}=r;try{let o=new ke;if(o.setAttribute("position",new Yt(s,3,!1)),i&&o.setIndex(new Yt(i,1,!1)),a.includedProgressCallback&&(a.onProgress=e),a.groups){let h=a.groups;for(let f in h){let u=h[f];o.addGroup(u.start,u.count,u.materialIndex)}}let c=new Ye(o,a),l=Ye.serialize(c,{cloneBuffers:!1});bo.postMessage({id:n,error:void 0,serialized:l,position:s,progress:1},[l.index.buffer,s.buffer,...l.roots])}catch(o){bo.postMessage({id:n,error:o,serialized:void 0,position:void 0,progress:1})}});\n/*! Bundled license information:\n\nthree/build/three.module.js:\n (**\n * @license\n * Copyright 2010-2023 Three.js Authors\n * SPDX-License-Identifier: MIT\n *)\n*/\n')}var BC=class{constructor(){this.running=!1,this.worker=new NB,this.worker.onerror=e=>{throw e.message?new Error(`[GenerateMeshBVHWorker] Could not create Web Worker with error "${e.message}"`):new Error("[GenerateMeshBVHWorker] Could not create Web Worker.")}}isRunning(){return this.running}generate(e,t={}){if(this.running)return void ne.warn("[GenerateMeshBVHWorker] Already running job.");if(!this.worker)return void ne.warn("[GenerateMeshBVHWorker] Worker has been disposed.");let{worker:i}=this;this.running=!0;let r=new Map;e.forEach((e=>{r.set(e.id,e)}));let n=0;return new Promise(((e,s)=>{let a=()=>{++n===r.size&&(this.running=!1,i.onmessage=null,e())};i.onerror=e=>{ne.warn(`[GenerateMeshBVHWorker] ${e.message}`),s(new Error(`[GenerateMeshBVHWorker] ${e.message}`)),this.running=!1},i.onmessage=e=>{this.running=!1;let{data:i}=e;if(i.error)ne.warn(i.error),a();else if(i.serialized){let{serialized:e,position:n,id:s}=i,o=r.get(s),l=Pc.deserialize(e,o,{setIndex:!1}),h=Object.assign({setBoundingBox:!0},t);if(h.transferred&&(o.attributes.position.array=n),o.index)t.saveOriginalIndex&&!o.userData.originalIndex&&(o.userData.originalIndex=o.index.array),ne.debug("before update, index:",o.index.array),o.index.array=e.index;else{let t=new Wt(e.index,1,!1);o.setIndex(t)}o.index&&(ne.debug("after update, index:",o.index.array),o.index.needsUpdate=!0),h.setBoundingBox&&!o.boundingBox&&(o.boundingBox=l.getBoundingBox(new Mt)),o.boundsTree=l,a()}else t.onProgress&&t.onProgress(i.progress)};for(let e of r){let r=e[0],n=e[1],s=n.index?n.index.array:void 0,o=n.attributes.position,l=o.array;if(o.isInterleavedBufferAttribute||s&&s.isInterleavedBufferAttribute){ne.warn("[GenerateMeshBVHWorker] InterleavedBufferAttribute are not supported for the geometry attributes."),a();continue}let h=[];t.transferred&&(h.push(l),s&&(h.push(s),t.saveOriginalIndex&&(n.userData.originalIndex=s.slice()))),i.postMessage({id:r,index:s,position:l,options:Cn(Br({},t),{onProgress:null,includedProgressCallback:Boolean(t.onProgress),groups:[...n.groups]})},h.length>0?h.map((e=>e.buffer)):[])}}))}dispose(){this.worker.terminate(),this.worker=void 0}};function LB(){return zx('var vr="149";var co=0,Pr=1,ho=2;var Ga=1,uo=2,li=3,nn=0,ye=1,tn=2;var en=0,Gn=1,Rr=2,Lr=3,Ir=4,fo=5,Bn=100,po=101,mo=102,Dr=103,Nr=104,go=200,_o=201,xo=202,yo=203,Ha=204,Wa=205,vo=206,Mo=207,bo=208,wo=209,So=210,To=0,Ao=1,Eo=2,Gs=3,Co=4,Po=5,Ro=6,Lo=7,Xa=0,Io=1,Do=2,We=0,No=1,Fo=2,zo=3,Oo=4,Uo=5,qa=300,Xn=301,qn=302,Hs=303,Ws=304,ns=306,Xs=1e3,Pe=1001,qs=1002,ae=1003,Fr=1004;var us=1005;var Se=1006,Bo=1007;var pi=1008;var yn=1009,ko=1010,Vo=1011,Ya=1012,Go=1013,mn=1014,gn=1015,mi=1016,Ho=1017,Wo=1018,Hn=1020,Xo=1021,Re=1023,qo=1024,Yo=1025,_n=1026,Yn=1027,Zo=1028,Jo=1029,$o=1030,Ko=1031,jo=1033,ds=33776,fs=33777,ps=33778,ms=33779,zr=35840,Or=35841,Ur=35842,Br=35843,Qo=36196,kr=37492,Vr=37496,Gr=37808,Hr=37809,Wr=37810,Xr=37811,qr=37812,Yr=37813,Zr=37814,Jr=37815,$r=37816,Kr=37817,jr=37818,Qr=37819,ta=37820,ea=37821,gs=36492,tl=36283,na=36284,ia=36285,sa=36286;var ki=2300,Vi=2301,_s=2302,ra=2400,aa=2401,oa=2402;var vn=3e3,zt=3001,el=3200,nl=3201,il=0,sl=1;var Ie="srgb",gi="srgb-linear";var xs=7680;var rl=519,la=35044;var ca="300 es",Ys=1035,sn=class{addEventListener(t,e){this._listeners===void 0&&(this._listeners={});let n=this._listeners;n[t]===void 0&&(n[t]=[]),n[t].indexOf(e)===-1&&n[t].push(e)}hasEventListener(t,e){if(this._listeners===void 0)return!1;let n=this._listeners;return n[t]!==void 0&&n[t].indexOf(e)!==-1}removeEventListener(t,e){if(this._listeners===void 0)return;let i=this._listeners[t];if(i!==void 0){let s=i.indexOf(e);s!==-1&&i.splice(s,1)}}dispatchEvent(t){if(this._listeners===void 0)return;let n=this._listeners[t.type];if(n!==void 0){t.target=this;let i=n.slice(0);for(let s=0,o=i.length;s>8&255]+ee[r>>16&255]+ee[r>>24&255]+"-"+ee[t&255]+ee[t>>8&255]+"-"+ee[t>>16&15|64]+ee[t>>24&255]+"-"+ee[e&63|128]+ee[e>>8&255]+"-"+ee[e>>16&255]+ee[e>>24&255]+ee[n&255]+ee[n>>8&255]+ee[n>>16&255]+ee[n>>24&255]).toLowerCase()}function ue(r,t,e){return Math.max(t,Math.min(e,r))}function Mr(r,t){return(r%t+t)%t}function al(r,t,e,n,i){return n+(r-t)*(i-n)/(e-t)}function ol(r,t,e){return r!==t?(e-r)/(t-r):0}function di(r,t,e){return(1-e)*r+e*t}function ll(r,t,e,n){return di(r,t,1-Math.exp(-e*n))}function cl(r,t=1){return t-Math.abs(Mr(r,t*2)-t)}function hl(r,t,e){return r<=t?0:r>=e?1:(r=(r-t)/(e-t),r*r*(3-2*r))}function ul(r,t,e){return r<=t?0:r>=e?1:(r=(r-t)/(e-t),r*r*r*(r*(r*6-15)+10))}function dl(r,t){return r+Math.floor(Math.random()*(t-r+1))}function fl(r,t){return r+Math.random()*(t-r)}function pl(r){return r*(.5-Math.random())}function ml(r){r!==void 0&&(ha=r);let t=ha+=1831565813;return t=Math.imul(t^t>>>15,t|1),t^=t+Math.imul(t^t>>>7,t|61),((t^t>>>14)>>>0)/4294967296}function gl(r){return r*ui}function _l(r){return r*Gi}function Zs(r){return(r&r-1)===0&&r!==0}function xl(r){return Math.pow(2,Math.ceil(Math.log(r)/Math.LN2))}function Hi(r){return Math.pow(2,Math.floor(Math.log(r)/Math.LN2))}function yl(r,t,e,n,i){let s=Math.cos,o=Math.sin,a=s(e/2),c=o(e/2),l=s((t+n)/2),h=o((t+n)/2),f=s((t-n)/2),u=o((t-n)/2),m=s((n-t)/2),_=o((n-t)/2);switch(i){case"XYX":r.set(a*h,c*f,c*u,a*l);break;case"YZY":r.set(c*u,a*h,c*f,a*l);break;case"ZXZ":r.set(c*f,c*u,a*h,a*l);break;case"XZX":r.set(a*h,c*_,c*m,a*l);break;case"YXY":r.set(c*m,a*h,c*_,a*l);break;case"ZYZ":r.set(c*_,c*m,a*h,a*l);break;default:console.warn("THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: "+i)}}function ci(r,t){switch(t.constructor){case Float32Array:return r;case Uint16Array:return r/65535;case Uint8Array:return r/255;case Int16Array:return Math.max(r/32767,-1);case Int8Array:return Math.max(r/127,-1);default:throw new Error("Invalid component type.")}}function he(r,t){switch(t.constructor){case Float32Array:return r;case Uint16Array:return Math.round(r*65535);case Uint8Array:return Math.round(r*255);case Int16Array:return Math.round(r*32767);case Int8Array:return Math.round(r*127);default:throw new Error("Invalid component type.")}}var Za=Object.freeze({__proto__:null,DEG2RAD:ui,RAD2DEG:Gi,ceilPowerOfTwo:xl,clamp:ue,damp:ll,degToRad:gl,denormalize:ci,euclideanModulo:Mr,floorPowerOfTwo:Hi,generateUUID:jn,inverseLerp:ol,isPowerOfTwo:Zs,lerp:di,mapLinear:al,normalize:he,pingpong:cl,radToDeg:_l,randFloat:fl,randFloatSpread:pl,randInt:dl,seededRandom:ml,setQuaternionFromProperEuler:yl,smootherstep:ul,smoothstep:hl}),Nt=class{constructor(t=0,e=0){Nt.prototype.isVector2=!0,this.x=t,this.y=e}get width(){return this.x}set width(t){this.x=t}get height(){return this.y}set height(t){this.y=t}set(t,e){return this.x=t,this.y=e,this}setScalar(t){return this.x=t,this.y=t,this}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setComponent(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;default:throw new Error("index is out of range: "+t)}return this}getComponent(t){switch(t){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+t)}}clone(){return new this.constructor(this.x,this.y)}copy(t){return this.x=t.x,this.y=t.y,this}add(t){return this.x+=t.x,this.y+=t.y,this}addScalar(t){return this.x+=t,this.y+=t,this}addVectors(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this}addScaledVector(t,e){return this.x+=t.x*e,this.y+=t.y*e,this}sub(t){return this.x-=t.x,this.y-=t.y,this}subScalar(t){return this.x-=t,this.y-=t,this}subVectors(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this}multiply(t){return this.x*=t.x,this.y*=t.y,this}multiplyScalar(t){return this.x*=t,this.y*=t,this}divide(t){return this.x/=t.x,this.y/=t.y,this}divideScalar(t){return this.multiplyScalar(1/t)}applyMatrix3(t){let e=this.x,n=this.y,i=t.elements;return this.x=i[0]*e+i[3]*n+i[6],this.y=i[1]*e+i[4]*n+i[7],this}min(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this}max(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this}clamp(t,e){return this.x=Math.max(t.x,Math.min(e.x,this.x)),this.y=Math.max(t.y,Math.min(e.y,this.y)),this}clampScalar(t,e){return this.x=Math.max(t,Math.min(e,this.x)),this.y=Math.max(t,Math.min(e,this.y)),this}clampLength(t,e){let n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(t,Math.min(e,n)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}roundToZero(){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(){return this.x=-this.x,this.y=-this.y,this}dot(t){return this.x*t.x+this.y*t.y}cross(t){return this.x*t.y-this.y*t.x}lengthSq(){return this.x*this.x+this.y*this.y}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)}normalize(){return this.divideScalar(this.length()||1)}angle(){return Math.atan2(-this.y,-this.x)+Math.PI}distanceTo(t){return Math.sqrt(this.distanceToSquared(t))}distanceToSquared(t){let e=this.x-t.x,n=this.y-t.y;return e*e+n*n}manhattanDistanceTo(t){return Math.abs(this.x-t.x)+Math.abs(this.y-t.y)}setLength(t){return this.normalize().multiplyScalar(t)}lerp(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this}lerpVectors(t,e,n){return this.x=t.x+(e.x-t.x)*n,this.y=t.y+(e.y-t.y)*n,this}equals(t){return t.x===this.x&&t.y===this.y}fromArray(t,e=0){return this.x=t[e],this.y=t[e+1],this}toArray(t=[],e=0){return t[e]=this.x,t[e+1]=this.y,t}fromBufferAttribute(t,e){return this.x=t.getX(e),this.y=t.getY(e),this}rotateAround(t,e){let n=Math.cos(e),i=Math.sin(e),s=this.x-t.x,o=this.y-t.y;return this.x=s*n-o*i+t.x,this.y=s*i+o*n+t.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y}},oe=class{constructor(){oe.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1]}set(t,e,n,i,s,o,a,c,l){let h=this.elements;return h[0]=t,h[1]=i,h[2]=a,h[3]=e,h[4]=s,h[5]=c,h[6]=n,h[7]=o,h[8]=l,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(t){let e=this.elements,n=t.elements;return e[0]=n[0],e[1]=n[1],e[2]=n[2],e[3]=n[3],e[4]=n[4],e[5]=n[5],e[6]=n[6],e[7]=n[7],e[8]=n[8],this}extractBasis(t,e,n){return t.setFromMatrix3Column(this,0),e.setFromMatrix3Column(this,1),n.setFromMatrix3Column(this,2),this}setFromMatrix4(t){let e=t.elements;return this.set(e[0],e[4],e[8],e[1],e[5],e[9],e[2],e[6],e[10]),this}multiply(t){return this.multiplyMatrices(this,t)}premultiply(t){return this.multiplyMatrices(t,this)}multiplyMatrices(t,e){let n=t.elements,i=e.elements,s=this.elements,o=n[0],a=n[3],c=n[6],l=n[1],h=n[4],f=n[7],u=n[2],m=n[5],_=n[8],p=i[0],d=i[3],v=i[6],T=i[1],b=i[4],M=i[7],A=i[2],C=i[5],I=i[8];return s[0]=o*p+a*T+c*A,s[3]=o*d+a*b+c*C,s[6]=o*v+a*M+c*I,s[1]=l*p+h*T+f*A,s[4]=l*d+h*b+f*C,s[7]=l*v+h*M+f*I,s[2]=u*p+m*T+_*A,s[5]=u*d+m*b+_*C,s[8]=u*v+m*M+_*I,this}multiplyScalar(t){let e=this.elements;return e[0]*=t,e[3]*=t,e[6]*=t,e[1]*=t,e[4]*=t,e[7]*=t,e[2]*=t,e[5]*=t,e[8]*=t,this}determinant(){let t=this.elements,e=t[0],n=t[1],i=t[2],s=t[3],o=t[4],a=t[5],c=t[6],l=t[7],h=t[8];return e*o*h-e*a*l-n*s*h+n*a*c+i*s*l-i*o*c}invert(){let t=this.elements,e=t[0],n=t[1],i=t[2],s=t[3],o=t[4],a=t[5],c=t[6],l=t[7],h=t[8],f=h*o-a*l,u=a*c-h*s,m=l*s-o*c,_=e*f+n*u+i*m;if(_===0)return this.set(0,0,0,0,0,0,0,0,0);let p=1/_;return t[0]=f*p,t[1]=(i*l-h*n)*p,t[2]=(a*n-i*o)*p,t[3]=u*p,t[4]=(h*e-i*c)*p,t[5]=(i*s-a*e)*p,t[6]=m*p,t[7]=(n*c-l*e)*p,t[8]=(o*e-n*s)*p,this}transpose(){let t,e=this.elements;return t=e[1],e[1]=e[3],e[3]=t,t=e[2],e[2]=e[6],e[6]=t,t=e[5],e[5]=e[7],e[7]=t,this}getNormalMatrix(t){return this.setFromMatrix4(t).invert().transpose()}transposeIntoArray(t){let e=this.elements;return t[0]=e[0],t[1]=e[3],t[2]=e[6],t[3]=e[1],t[4]=e[4],t[5]=e[7],t[6]=e[2],t[7]=e[5],t[8]=e[8],this}setUvTransform(t,e,n,i,s,o,a){let c=Math.cos(s),l=Math.sin(s);return this.set(n*c,n*l,-n*(c*o+l*a)+o+t,-i*l,i*c,-i*(-l*o+c*a)+a+e,0,0,1),this}scale(t,e){return this.premultiply(ys.makeScale(t,e)),this}rotate(t){return this.premultiply(ys.makeRotation(-t)),this}translate(t,e){return this.premultiply(ys.makeTranslation(t,e)),this}makeTranslation(t,e){return this.set(1,0,t,0,1,e,0,0,1),this}makeRotation(t){let e=Math.cos(t),n=Math.sin(t);return this.set(e,-n,0,n,e,0,0,0,1),this}makeScale(t,e){return this.set(t,0,0,0,e,0,0,0,1),this}equals(t){let e=this.elements,n=t.elements;for(let i=0;i<9;i++)if(e[i]!==n[i])return!1;return!0}fromArray(t,e=0){for(let n=0;n<9;n++)this.elements[n]=t[n+e];return this}toArray(t=[],e=0){let n=this.elements;return t[e]=n[0],t[e+1]=n[1],t[e+2]=n[2],t[e+3]=n[3],t[e+4]=n[4],t[e+5]=n[5],t[e+6]=n[6],t[e+7]=n[7],t[e+8]=n[8],t}clone(){return new this.constructor().fromArray(this.elements)}},ys=new oe;function Ja(r){for(let t=r.length-1;t>=0;--t)if(r[t]>=65535)return!0;return!1}function Wi(r){return document.createElementNS("http://www.w3.org/1999/xhtml",r)}function xn(r){return r<.04045?r*.0773993808:Math.pow(r*.9478672986+.0521327014,2.4)}function Bi(r){return r<.0031308?r*12.92:1.055*Math.pow(r,.41666)-.055}var vs={[Ie]:{[gi]:xn},[gi]:{[Ie]:Bi}},se={legacyMode:!0,get workingColorSpace(){return gi},set workingColorSpace(r){console.warn("THREE.ColorManagement: .workingColorSpace is readonly.")},convert:function(r,t,e){if(this.legacyMode||t===e||!t||!e)return r;if(vs[t]&&vs[t][e]!==void 0){let n=vs[t][e];return r.r=n(r.r),r.g=n(r.g),r.b=n(r.b),r}throw new Error("Unsupported color space conversion.")},fromWorkingColorSpace:function(r,t){return this.convert(r,this.workingColorSpace,t)},toWorkingColorSpace:function(r,t){return this.convert(r,t,this.workingColorSpace)}},$a={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074},Wt={r:0,g:0,b:0},Ae={h:0,s:0,l:0},vi={h:0,s:0,l:0};function Ms(r,t,e){return e<0&&(e+=1),e>1&&(e-=1),e<1/6?r+(t-r)*6*e:e<1/2?t:e<2/3?r+(t-r)*6*(2/3-e):r}function Mi(r,t){return t.r=r.r,t.g=r.g,t.b=r.b,t}var Ot=class{constructor(t,e,n){return this.isColor=!0,this.r=1,this.g=1,this.b=1,e===void 0&&n===void 0?this.set(t):this.setRGB(t,e,n)}set(t){return t&&t.isColor?this.copy(t):typeof t=="number"?this.setHex(t):typeof t=="string"&&this.setStyle(t),this}setScalar(t){return this.r=t,this.g=t,this.b=t,this}setHex(t,e=Ie){return t=Math.floor(t),this.r=(t>>16&255)/255,this.g=(t>>8&255)/255,this.b=(t&255)/255,se.toWorkingColorSpace(this,e),this}setRGB(t,e,n,i=se.workingColorSpace){return this.r=t,this.g=e,this.b=n,se.toWorkingColorSpace(this,i),this}setHSL(t,e,n,i=se.workingColorSpace){if(t=Mr(t,1),e=ue(e,0,1),n=ue(n,0,1),e===0)this.r=this.g=this.b=n;else{let s=n<=.5?n*(1+e):n+e-n*e,o=2*n-s;this.r=Ms(o,s,t+1/3),this.g=Ms(o,s,t),this.b=Ms(o,s,t-1/3)}return se.toWorkingColorSpace(this,i),this}setStyle(t,e=Ie){function n(s){s!==void 0&&parseFloat(s)<1&&console.warn("THREE.Color: Alpha component of "+t+" will be ignored.")}let i;if(i=/^((?:rgb|hsl)a?)\\(([^\\)]*)\\)/.exec(t)){let s,o=i[1],a=i[2];switch(o){case"rgb":case"rgba":if(s=/^\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec(a))return this.r=Math.min(255,parseInt(s[1],10))/255,this.g=Math.min(255,parseInt(s[2],10))/255,this.b=Math.min(255,parseInt(s[3],10))/255,se.toWorkingColorSpace(this,e),n(s[4]),this;if(s=/^\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec(a))return this.r=Math.min(100,parseInt(s[1],10))/100,this.g=Math.min(100,parseInt(s[2],10))/100,this.b=Math.min(100,parseInt(s[3],10))/100,se.toWorkingColorSpace(this,e),n(s[4]),this;break;case"hsl":case"hsla":if(s=/^\\s*(\\d*\\.?\\d+)\\s*,\\s*(\\d*\\.?\\d+)\\%\\s*,\\s*(\\d*\\.?\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec(a)){let c=parseFloat(s[1])/360,l=parseFloat(s[2])/100,h=parseFloat(s[3])/100;return n(s[4]),this.setHSL(c,l,h,e)}break}}else if(i=/^\\#([A-Fa-f\\d]+)$/.exec(t)){let s=i[1],o=s.length;if(o===3)return this.r=parseInt(s.charAt(0)+s.charAt(0),16)/255,this.g=parseInt(s.charAt(1)+s.charAt(1),16)/255,this.b=parseInt(s.charAt(2)+s.charAt(2),16)/255,se.toWorkingColorSpace(this,e),this;if(o===6)return this.r=parseInt(s.charAt(0)+s.charAt(1),16)/255,this.g=parseInt(s.charAt(2)+s.charAt(3),16)/255,this.b=parseInt(s.charAt(4)+s.charAt(5),16)/255,se.toWorkingColorSpace(this,e),this}return t&&t.length>0?this.setColorName(t,e):this}setColorName(t,e=Ie){let n=$a[t.toLowerCase()];return n!==void 0?this.setHex(n,e):console.warn("THREE.Color: Unknown color "+t),this}clone(){return new this.constructor(this.r,this.g,this.b)}copy(t){return this.r=t.r,this.g=t.g,this.b=t.b,this}copySRGBToLinear(t){return this.r=xn(t.r),this.g=xn(t.g),this.b=xn(t.b),this}copyLinearToSRGB(t){return this.r=Bi(t.r),this.g=Bi(t.g),this.b=Bi(t.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(t=Ie){return se.fromWorkingColorSpace(Mi(this,Wt),t),ue(Wt.r*255,0,255)<<16^ue(Wt.g*255,0,255)<<8^ue(Wt.b*255,0,255)<<0}getHexString(t=Ie){return("000000"+this.getHex(t).toString(16)).slice(-6)}getHSL(t,e=se.workingColorSpace){se.fromWorkingColorSpace(Mi(this,Wt),e);let n=Wt.r,i=Wt.g,s=Wt.b,o=Math.max(n,i,s),a=Math.min(n,i,s),c,l,h=(a+o)/2;if(a===o)c=0,l=0;else{let f=o-a;switch(l=h<=.5?f/(o+a):f/(2-o-a),o){case n:c=(i-s)/f+(i2048||e.height>2048?(console.warn("THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons",t),e.toDataURL("image/jpeg",.6)):e.toDataURL("image/png")}static sRGBToLinear(t){if(typeof HTMLImageElement!="undefined"&&t instanceof HTMLImageElement||typeof HTMLCanvasElement!="undefined"&&t instanceof HTMLCanvasElement||typeof ImageBitmap!="undefined"&&t instanceof ImageBitmap){let e=Wi("canvas");e.width=t.width,e.height=t.height;let n=e.getContext("2d");n.drawImage(t,0,0,t.width,t.height);let i=n.getImageData(0,0,t.width,t.height),s=i.data;for(let o=0;o0&&(n.userData=this.userData),e||(t.textures[this.uuid]=n),n}dispose(){this.dispatchEvent({type:"dispose"})}transformUv(t){if(this.mapping!==qa)return t;if(t.applyMatrix3(this.matrix),t.x<0||t.x>1)switch(this.wrapS){case Xs:t.x=t.x-Math.floor(t.x);break;case Pe:t.x=t.x<0?0:1;break;case qs:Math.abs(Math.floor(t.x)%2)===1?t.x=Math.ceil(t.x)-t.x:t.x=t.x-Math.floor(t.x);break}if(t.y<0||t.y>1)switch(this.wrapT){case Xs:t.y=t.y-Math.floor(t.y);break;case Pe:t.y=t.y<0?0:1;break;case qs:Math.abs(Math.floor(t.y)%2)===1?t.y=Math.ceil(t.y)-t.y:t.y=t.y-Math.floor(t.y);break}return this.flipY&&(t.y=1-t.y),t}set needsUpdate(t){t===!0&&(this.version++,this.source.needsUpdate=!0)}};le.DEFAULT_IMAGE=null;le.DEFAULT_MAPPING=qa;le.DEFAULT_ANISOTROPY=1;var Xt=class{constructor(t=0,e=0,n=0,i=1){Xt.prototype.isVector4=!0,this.x=t,this.y=e,this.z=n,this.w=i}get width(){return this.z}set width(t){this.z=t}get height(){return this.w}set height(t){this.w=t}set(t,e,n,i){return this.x=t,this.y=e,this.z=n,this.w=i,this}setScalar(t){return this.x=t,this.y=t,this.z=t,this.w=t,this}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setZ(t){return this.z=t,this}setW(t){return this.w=t,this}setComponent(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;case 2:this.z=e;break;case 3:this.w=e;break;default:throw new Error("index is out of range: "+t)}return this}getComponent(t){switch(t){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: "+t)}}clone(){return new this.constructor(this.x,this.y,this.z,this.w)}copy(t){return this.x=t.x,this.y=t.y,this.z=t.z,this.w=t.w!==void 0?t.w:1,this}add(t){return this.x+=t.x,this.y+=t.y,this.z+=t.z,this.w+=t.w,this}addScalar(t){return this.x+=t,this.y+=t,this.z+=t,this.w+=t,this}addVectors(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this.z=t.z+e.z,this.w=t.w+e.w,this}addScaledVector(t,e){return this.x+=t.x*e,this.y+=t.y*e,this.z+=t.z*e,this.w+=t.w*e,this}sub(t){return this.x-=t.x,this.y-=t.y,this.z-=t.z,this.w-=t.w,this}subScalar(t){return this.x-=t,this.y-=t,this.z-=t,this.w-=t,this}subVectors(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this.z=t.z-e.z,this.w=t.w-e.w,this}multiply(t){return this.x*=t.x,this.y*=t.y,this.z*=t.z,this.w*=t.w,this}multiplyScalar(t){return this.x*=t,this.y*=t,this.z*=t,this.w*=t,this}applyMatrix4(t){let e=this.x,n=this.y,i=this.z,s=this.w,o=t.elements;return this.x=o[0]*e+o[4]*n+o[8]*i+o[12]*s,this.y=o[1]*e+o[5]*n+o[9]*i+o[13]*s,this.z=o[2]*e+o[6]*n+o[10]*i+o[14]*s,this.w=o[3]*e+o[7]*n+o[11]*i+o[15]*s,this}divideScalar(t){return this.multiplyScalar(1/t)}setAxisAngleFromQuaternion(t){this.w=2*Math.acos(t.w);let e=Math.sqrt(1-t.w*t.w);return e<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=t.x/e,this.y=t.y/e,this.z=t.z/e),this}setAxisAngleFromRotationMatrix(t){let e,n,i,s,c=t.elements,l=c[0],h=c[4],f=c[8],u=c[1],m=c[5],_=c[9],p=c[2],d=c[6],v=c[10];if(Math.abs(h-u)<.01&&Math.abs(f-p)<.01&&Math.abs(_-d)<.01){if(Math.abs(h+u)<.1&&Math.abs(f+p)<.1&&Math.abs(_+d)<.1&&Math.abs(l+m+v-3)<.1)return this.set(1,0,0,0),this;e=Math.PI;let b=(l+1)/2,M=(m+1)/2,A=(v+1)/2,C=(h+u)/4,I=(f+p)/4,x=(_+d)/4;return b>M&&b>A?b<.01?(n=0,i=.707106781,s=.707106781):(n=Math.sqrt(b),i=C/n,s=I/n):M>A?M<.01?(n=.707106781,i=0,s=.707106781):(i=Math.sqrt(M),n=C/i,s=x/i):A<.01?(n=.707106781,i=.707106781,s=0):(s=Math.sqrt(A),n=I/s,i=x/s),this.set(n,i,s,e),this}let T=Math.sqrt((d-_)*(d-_)+(f-p)*(f-p)+(u-h)*(u-h));return Math.abs(T)<.001&&(T=1),this.x=(d-_)/T,this.y=(f-p)/T,this.z=(u-h)/T,this.w=Math.acos((l+m+v-1)/2),this}min(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this.z=Math.min(this.z,t.z),this.w=Math.min(this.w,t.w),this}max(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this.z=Math.max(this.z,t.z),this.w=Math.max(this.w,t.w),this}clamp(t,e){return this.x=Math.max(t.x,Math.min(e.x,this.x)),this.y=Math.max(t.y,Math.min(e.y,this.y)),this.z=Math.max(t.z,Math.min(e.z,this.z)),this.w=Math.max(t.w,Math.min(e.w,this.w)),this}clampScalar(t,e){return this.x=Math.max(t,Math.min(e,this.x)),this.y=Math.max(t,Math.min(e,this.y)),this.z=Math.max(t,Math.min(e,this.z)),this.w=Math.max(t,Math.min(e,this.w)),this}clampLength(t,e){let n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(t,Math.min(e,n)))}floor(){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(){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(){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(){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(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this.w=-this.w,this}dot(t){return this.x*t.x+this.y*t.y+this.z*t.z+this.w*t.w}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)}normalize(){return this.divideScalar(this.length()||1)}setLength(t){return this.normalize().multiplyScalar(t)}lerp(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.w+=(t.w-this.w)*e,this}lerpVectors(t,e,n){return this.x=t.x+(e.x-t.x)*n,this.y=t.y+(e.y-t.y)*n,this.z=t.z+(e.z-t.z)*n,this.w=t.w+(e.w-t.w)*n,this}equals(t){return t.x===this.x&&t.y===this.y&&t.z===this.z&&t.w===this.w}fromArray(t,e=0){return this.x=t[e],this.y=t[e+1],this.z=t[e+2],this.w=t[e+3],this}toArray(t=[],e=0){return t[e]=this.x,t[e+1]=this.y,t[e+2]=this.z,t[e+3]=this.w,t}fromBufferAttribute(t,e){return this.x=t.getX(e),this.y=t.getY(e),this.z=t.getZ(e),this.w=t.getW(e),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this.w=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z,yield this.w}},qe=class extends sn{constructor(t=1,e=1,n={}){super(),this.isWebGLRenderTarget=!0,this.width=t,this.height=e,this.depth=1,this.scissor=new Xt(0,0,t,e),this.scissorTest=!1,this.viewport=new Xt(0,0,t,e);let i={width:t,height:e,depth:1};this.texture=new le(i,n.mapping,n.wrapS,n.wrapT,n.magFilter,n.minFilter,n.format,n.type,n.anisotropy,n.encoding),this.texture.isRenderTargetTexture=!0,this.texture.flipY=!1,this.texture.generateMipmaps=n.generateMipmaps!==void 0?n.generateMipmaps:!1,this.texture.internalFormat=n.internalFormat!==void 0?n.internalFormat:null,this.texture.minFilter=n.minFilter!==void 0?n.minFilter:Se,this.depthBuffer=n.depthBuffer!==void 0?n.depthBuffer:!0,this.stencilBuffer=n.stencilBuffer!==void 0?n.stencilBuffer:!1,this.depthTexture=n.depthTexture!==void 0?n.depthTexture:null,this.samples=n.samples!==void 0?n.samples:0}setSize(t,e,n=1){(this.width!==t||this.height!==e||this.depth!==n)&&(this.width=t,this.height=e,this.depth=n,this.texture.image.width=t,this.texture.image.height=e,this.texture.image.depth=n,this.dispose()),this.viewport.set(0,0,t,e),this.scissor.set(0,0,t,e)}clone(){return new this.constructor().copy(this)}copy(t){this.width=t.width,this.height=t.height,this.depth=t.depth,this.viewport.copy(t.viewport),this.texture=t.texture.clone(),this.texture.isRenderTargetTexture=!0;let e=Object.assign({},t.texture.image);return this.texture.source=new qi(e),this.depthBuffer=t.depthBuffer,this.stencilBuffer=t.stencilBuffer,t.depthTexture!==null&&(this.depthTexture=t.depthTexture.clone()),this.samples=t.samples,this}dispose(){this.dispatchEvent({type:"dispose"})}},Yi=class extends le{constructor(t=null,e=1,n=1,i=1){super(null),this.isDataArrayTexture=!0,this.image={data:t,width:e,height:n,depth:i},this.magFilter=ae,this.minFilter=ae,this.wrapR=Pe,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}};var Js=class extends le{constructor(t=null,e=1,n=1,i=1){super(null),this.isData3DTexture=!0,this.image={data:t,width:e,height:n,depth:i},this.magFilter=ae,this.minFilter=ae,this.wrapR=Pe,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}};var rn=class{constructor(t=0,e=0,n=0,i=1){this.isQuaternion=!0,this._x=t,this._y=e,this._z=n,this._w=i}static slerpFlat(t,e,n,i,s,o,a){let c=n[i+0],l=n[i+1],h=n[i+2],f=n[i+3],u=s[o+0],m=s[o+1],_=s[o+2],p=s[o+3];if(a===0){t[e+0]=c,t[e+1]=l,t[e+2]=h,t[e+3]=f;return}if(a===1){t[e+0]=u,t[e+1]=m,t[e+2]=_,t[e+3]=p;return}if(f!==p||c!==u||l!==m||h!==_){let d=1-a,v=c*u+l*m+h*_+f*p,T=v>=0?1:-1,b=1-v*v;if(b>Number.EPSILON){let A=Math.sqrt(b),C=Math.atan2(A,v*T);d=Math.sin(d*C)/A,a=Math.sin(a*C)/A}let M=a*T;if(c=c*d+u*M,l=l*d+m*M,h=h*d+_*M,f=f*d+p*M,d===1-a){let A=1/Math.sqrt(c*c+l*l+h*h+f*f);c*=A,l*=A,h*=A,f*=A}}t[e]=c,t[e+1]=l,t[e+2]=h,t[e+3]=f}static multiplyQuaternionsFlat(t,e,n,i,s,o){let a=n[i],c=n[i+1],l=n[i+2],h=n[i+3],f=s[o],u=s[o+1],m=s[o+2],_=s[o+3];return t[e]=a*_+h*f+c*m-l*u,t[e+1]=c*_+h*u+l*f-a*m,t[e+2]=l*_+h*m+a*u-c*f,t[e+3]=h*_-a*f-c*u-l*m,t}get x(){return this._x}set x(t){this._x=t,this._onChangeCallback()}get y(){return this._y}set y(t){this._y=t,this._onChangeCallback()}get z(){return this._z}set z(t){this._z=t,this._onChangeCallback()}get w(){return this._w}set w(t){this._w=t,this._onChangeCallback()}set(t,e,n,i){return this._x=t,this._y=e,this._z=n,this._w=i,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._w)}copy(t){return this._x=t.x,this._y=t.y,this._z=t.z,this._w=t.w,this._onChangeCallback(),this}setFromEuler(t,e){let n=t._x,i=t._y,s=t._z,o=t._order,a=Math.cos,c=Math.sin,l=a(n/2),h=a(i/2),f=a(s/2),u=c(n/2),m=c(i/2),_=c(s/2);switch(o){case"XYZ":this._x=u*h*f+l*m*_,this._y=l*m*f-u*h*_,this._z=l*h*_+u*m*f,this._w=l*h*f-u*m*_;break;case"YXZ":this._x=u*h*f+l*m*_,this._y=l*m*f-u*h*_,this._z=l*h*_-u*m*f,this._w=l*h*f+u*m*_;break;case"ZXY":this._x=u*h*f-l*m*_,this._y=l*m*f+u*h*_,this._z=l*h*_+u*m*f,this._w=l*h*f-u*m*_;break;case"ZYX":this._x=u*h*f-l*m*_,this._y=l*m*f+u*h*_,this._z=l*h*_-u*m*f,this._w=l*h*f+u*m*_;break;case"YZX":this._x=u*h*f+l*m*_,this._y=l*m*f+u*h*_,this._z=l*h*_-u*m*f,this._w=l*h*f-u*m*_;break;case"XZY":this._x=u*h*f-l*m*_,this._y=l*m*f-u*h*_,this._z=l*h*_+u*m*f,this._w=l*h*f+u*m*_;break;default:console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: "+o)}return e!==!1&&this._onChangeCallback(),this}setFromAxisAngle(t,e){let n=e/2,i=Math.sin(n);return this._x=t.x*i,this._y=t.y*i,this._z=t.z*i,this._w=Math.cos(n),this._onChangeCallback(),this}setFromRotationMatrix(t){let e=t.elements,n=e[0],i=e[4],s=e[8],o=e[1],a=e[5],c=e[9],l=e[2],h=e[6],f=e[10],u=n+a+f;if(u>0){let m=.5/Math.sqrt(u+1);this._w=.25/m,this._x=(h-c)*m,this._y=(s-l)*m,this._z=(o-i)*m}else if(n>a&&n>f){let m=2*Math.sqrt(1+n-a-f);this._w=(h-c)/m,this._x=.25*m,this._y=(i+o)/m,this._z=(s+l)/m}else if(a>f){let m=2*Math.sqrt(1+a-n-f);this._w=(s-l)/m,this._x=(i+o)/m,this._y=.25*m,this._z=(c+h)/m}else{let m=2*Math.sqrt(1+f-n-a);this._w=(o-i)/m,this._x=(s+l)/m,this._y=(c+h)/m,this._z=.25*m}return this._onChangeCallback(),this}setFromUnitVectors(t,e){let n=t.dot(e)+1;return nMath.abs(t.z)?(this._x=-t.y,this._y=t.x,this._z=0,this._w=n):(this._x=0,this._y=-t.z,this._z=t.y,this._w=n)):(this._x=t.y*e.z-t.z*e.y,this._y=t.z*e.x-t.x*e.z,this._z=t.x*e.y-t.y*e.x,this._w=n),this.normalize()}angleTo(t){return 2*Math.acos(Math.abs(ue(this.dot(t),-1,1)))}rotateTowards(t,e){let n=this.angleTo(t);if(n===0)return this;let i=Math.min(1,e/n);return this.slerp(t,i),this}identity(){return this.set(0,0,0,1)}invert(){return this.conjugate()}conjugate(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this}dot(t){return this._x*t._x+this._y*t._y+this._z*t._z+this._w*t._w}lengthSq(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}length(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)}normalize(){let t=this.length();return t===0?(this._x=0,this._y=0,this._z=0,this._w=1):(t=1/t,this._x=this._x*t,this._y=this._y*t,this._z=this._z*t,this._w=this._w*t),this._onChangeCallback(),this}multiply(t){return this.multiplyQuaternions(this,t)}premultiply(t){return this.multiplyQuaternions(t,this)}multiplyQuaternions(t,e){let n=t._x,i=t._y,s=t._z,o=t._w,a=e._x,c=e._y,l=e._z,h=e._w;return this._x=n*h+o*a+i*l-s*c,this._y=i*h+o*c+s*a-n*l,this._z=s*h+o*l+n*c-i*a,this._w=o*h-n*a-i*c-s*l,this._onChangeCallback(),this}slerp(t,e){if(e===0)return this;if(e===1)return this.copy(t);let n=this._x,i=this._y,s=this._z,o=this._w,a=o*t._w+n*t._x+i*t._y+s*t._z;if(a<0?(this._w=-t._w,this._x=-t._x,this._y=-t._y,this._z=-t._z,a=-a):this.copy(t),a>=1)return this._w=o,this._x=n,this._y=i,this._z=s,this;let c=1-a*a;if(c<=Number.EPSILON){let m=1-e;return this._w=m*o+e*this._w,this._x=m*n+e*this._x,this._y=m*i+e*this._y,this._z=m*s+e*this._z,this.normalize(),this._onChangeCallback(),this}let l=Math.sqrt(c),h=Math.atan2(l,a),f=Math.sin((1-e)*h)/l,u=Math.sin(e*h)/l;return this._w=o*f+this._w*u,this._x=n*f+this._x*u,this._y=i*f+this._y*u,this._z=s*f+this._z*u,this._onChangeCallback(),this}slerpQuaternions(t,e,n){return this.copy(t).slerp(e,n)}random(){let t=Math.random(),e=Math.sqrt(1-t),n=Math.sqrt(t),i=2*Math.PI*Math.random(),s=2*Math.PI*Math.random();return this.set(e*Math.cos(i),n*Math.sin(s),n*Math.cos(s),e*Math.sin(i))}equals(t){return t._x===this._x&&t._y===this._y&&t._z===this._z&&t._w===this._w}fromArray(t,e=0){return this._x=t[e],this._y=t[e+1],this._z=t[e+2],this._w=t[e+3],this._onChangeCallback(),this}toArray(t=[],e=0){return t[e]=this._x,t[e+1]=this._y,t[e+2]=this._z,t[e+3]=this._w,t}fromBufferAttribute(t,e){return this._x=t.getX(e),this._y=t.getY(e),this._z=t.getZ(e),this._w=t.getW(e),this}_onChange(t){return this._onChangeCallback=t,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}},N=class{constructor(t=0,e=0,n=0){N.prototype.isVector3=!0,this.x=t,this.y=e,this.z=n}set(t,e,n){return n===void 0&&(n=this.z),this.x=t,this.y=e,this.z=n,this}setScalar(t){return this.x=t,this.y=t,this.z=t,this}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setZ(t){return this.z=t,this}setComponent(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)}return this}getComponent(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(){return new this.constructor(this.x,this.y,this.z)}copy(t){return this.x=t.x,this.y=t.y,this.z=t.z,this}add(t){return this.x+=t.x,this.y+=t.y,this.z+=t.z,this}addScalar(t){return this.x+=t,this.y+=t,this.z+=t,this}addVectors(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this.z=t.z+e.z,this}addScaledVector(t,e){return this.x+=t.x*e,this.y+=t.y*e,this.z+=t.z*e,this}sub(t){return this.x-=t.x,this.y-=t.y,this.z-=t.z,this}subScalar(t){return this.x-=t,this.y-=t,this.z-=t,this}subVectors(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this.z=t.z-e.z,this}multiply(t){return this.x*=t.x,this.y*=t.y,this.z*=t.z,this}multiplyScalar(t){return this.x*=t,this.y*=t,this.z*=t,this}multiplyVectors(t,e){return this.x=t.x*e.x,this.y=t.y*e.y,this.z=t.z*e.z,this}applyEuler(t){return this.applyQuaternion(ua.setFromEuler(t))}applyAxisAngle(t,e){return this.applyQuaternion(ua.setFromAxisAngle(t,e))}applyMatrix3(t){let e=this.x,n=this.y,i=this.z,s=t.elements;return this.x=s[0]*e+s[3]*n+s[6]*i,this.y=s[1]*e+s[4]*n+s[7]*i,this.z=s[2]*e+s[5]*n+s[8]*i,this}applyNormalMatrix(t){return this.applyMatrix3(t).normalize()}applyMatrix4(t){let e=this.x,n=this.y,i=this.z,s=t.elements,o=1/(s[3]*e+s[7]*n+s[11]*i+s[15]);return this.x=(s[0]*e+s[4]*n+s[8]*i+s[12])*o,this.y=(s[1]*e+s[5]*n+s[9]*i+s[13])*o,this.z=(s[2]*e+s[6]*n+s[10]*i+s[14])*o,this}applyQuaternion(t){let e=this.x,n=this.y,i=this.z,s=t.x,o=t.y,a=t.z,c=t.w,l=c*e+o*i-a*n,h=c*n+a*e-s*i,f=c*i+s*n-o*e,u=-s*e-o*n-a*i;return this.x=l*c+u*-s+h*-a-f*-o,this.y=h*c+u*-o+f*-s-l*-a,this.z=f*c+u*-a+l*-o-h*-s,this}project(t){return this.applyMatrix4(t.matrixWorldInverse).applyMatrix4(t.projectionMatrix)}unproject(t){return this.applyMatrix4(t.projectionMatrixInverse).applyMatrix4(t.matrixWorld)}transformDirection(t){let e=this.x,n=this.y,i=this.z,s=t.elements;return this.x=s[0]*e+s[4]*n+s[8]*i,this.y=s[1]*e+s[5]*n+s[9]*i,this.z=s[2]*e+s[6]*n+s[10]*i,this.normalize()}divide(t){return this.x/=t.x,this.y/=t.y,this.z/=t.z,this}divideScalar(t){return this.multiplyScalar(1/t)}min(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this.z=Math.min(this.z,t.z),this}max(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this.z=Math.max(this.z,t.z),this}clamp(t,e){return this.x=Math.max(t.x,Math.min(e.x,this.x)),this.y=Math.max(t.y,Math.min(e.y,this.y)),this.z=Math.max(t.z,Math.min(e.z,this.z)),this}clampScalar(t,e){return this.x=Math.max(t,Math.min(e,this.x)),this.y=Math.max(t,Math.min(e,this.y)),this.z=Math.max(t,Math.min(e,this.z)),this}clampLength(t,e){let n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(t,Math.min(e,n)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}roundToZero(){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(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(t){return this.x*t.x+this.y*t.y+this.z*t.z}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(t){return this.normalize().multiplyScalar(t)}lerp(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(t,e,n){return this.x=t.x+(e.x-t.x)*n,this.y=t.y+(e.y-t.y)*n,this.z=t.z+(e.z-t.z)*n,this}cross(t){return this.crossVectors(this,t)}crossVectors(t,e){let n=t.x,i=t.y,s=t.z,o=e.x,a=e.y,c=e.z;return this.x=i*c-s*a,this.y=s*o-n*c,this.z=n*a-i*o,this}projectOnVector(t){let e=t.lengthSq();if(e===0)return this.set(0,0,0);let n=t.dot(this)/e;return this.copy(t).multiplyScalar(n)}projectOnPlane(t){return ws.copy(this).projectOnVector(t),this.sub(ws)}reflect(t){return this.sub(ws.copy(t).multiplyScalar(2*this.dot(t)))}angleTo(t){let e=Math.sqrt(this.lengthSq()*t.lengthSq());if(e===0)return Math.PI/2;let n=this.dot(t)/e;return Math.acos(ue(n,-1,1))}distanceTo(t){return Math.sqrt(this.distanceToSquared(t))}distanceToSquared(t){let e=this.x-t.x,n=this.y-t.y,i=this.z-t.z;return e*e+n*n+i*i}manhattanDistanceTo(t){return Math.abs(this.x-t.x)+Math.abs(this.y-t.y)+Math.abs(this.z-t.z)}setFromSpherical(t){return this.setFromSphericalCoords(t.radius,t.phi,t.theta)}setFromSphericalCoords(t,e,n){let i=Math.sin(e)*t;return this.x=i*Math.sin(n),this.y=Math.cos(e)*t,this.z=i*Math.cos(n),this}setFromCylindrical(t){return this.setFromCylindricalCoords(t.radius,t.theta,t.y)}setFromCylindricalCoords(t,e,n){return this.x=t*Math.sin(e),this.y=n,this.z=t*Math.cos(e),this}setFromMatrixPosition(t){let e=t.elements;return this.x=e[12],this.y=e[13],this.z=e[14],this}setFromMatrixScale(t){let e=this.setFromMatrixColumn(t,0).length(),n=this.setFromMatrixColumn(t,1).length(),i=this.setFromMatrixColumn(t,2).length();return this.x=e,this.y=n,this.z=i,this}setFromMatrixColumn(t,e){return this.fromArray(t.elements,e*4)}setFromMatrix3Column(t,e){return this.fromArray(t.elements,e*3)}setFromEuler(t){return this.x=t._x,this.y=t._y,this.z=t._z,this}equals(t){return t.x===this.x&&t.y===this.y&&t.z===this.z}fromArray(t,e=0){return this.x=t[e],this.y=t[e+1],this.z=t[e+2],this}toArray(t=[],e=0){return t[e]=this.x,t[e+1]=this.y,t[e+2]=this.z,t}fromBufferAttribute(t,e){return this.x=t.getX(e),this.y=t.getY(e),this.z=t.getZ(e),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){let t=(Math.random()-.5)*2,e=Math.random()*Math.PI*2,n=Math.sqrt(1-t**2);return this.x=n*Math.cos(e),this.y=n*Math.sin(e),this.z=t,this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}},ws=new N,ua=new rn,Mn=class{constructor(t=new N(1/0,1/0,1/0),e=new N(-1/0,-1/0,-1/0)){this.isBox3=!0,this.min=t,this.max=e}set(t,e){return this.min.copy(t),this.max.copy(e),this}setFromArray(t){let e=1/0,n=1/0,i=1/0,s=-1/0,o=-1/0,a=-1/0;for(let c=0,l=t.length;cs&&(s=h),f>o&&(o=f),u>a&&(a=u)}return this.min.set(e,n,i),this.max.set(s,o,a),this}setFromBufferAttribute(t){let e=1/0,n=1/0,i=1/0,s=-1/0,o=-1/0,a=-1/0;for(let c=0,l=t.count;cs&&(s=h),f>o&&(o=f),u>a&&(a=u)}return this.min.set(e,n,i),this.max.set(s,o,a),this}setFromPoints(t){this.makeEmpty();for(let e=0,n=t.length;ethis.max.x||t.ythis.max.y||t.zthis.max.z)}containsBox(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(t,e){return e.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))}intersectsBox(t){return!(t.max.xthis.max.x||t.max.ythis.max.y||t.max.zthis.max.z)}intersectsSphere(t){return this.clampPoint(t.center,hn),hn.distanceToSquared(t.center)<=t.radius*t.radius}intersectsPlane(t){let e,n;return t.normal.x>0?(e=t.normal.x*this.min.x,n=t.normal.x*this.max.x):(e=t.normal.x*this.max.x,n=t.normal.x*this.min.x),t.normal.y>0?(e+=t.normal.y*this.min.y,n+=t.normal.y*this.max.y):(e+=t.normal.y*this.max.y,n+=t.normal.y*this.min.y),t.normal.z>0?(e+=t.normal.z*this.min.z,n+=t.normal.z*this.max.z):(e+=t.normal.z*this.max.z,n+=t.normal.z*this.min.z),e<=-t.constant&&n>=-t.constant}intersectsTriangle(t){if(this.isEmpty())return!1;this.getCenter(ei),bi.subVectors(this.max,ei),An.subVectors(t.a,ei),En.subVectors(t.b,ei),Cn.subVectors(t.c,ei),Je.subVectors(En,An),$e.subVectors(Cn,En),un.subVectors(An,Cn);let e=[0,-Je.z,Je.y,0,-$e.z,$e.y,0,-un.z,un.y,Je.z,0,-Je.x,$e.z,0,-$e.x,un.z,0,-un.x,-Je.y,Je.x,0,-$e.y,$e.x,0,-un.y,un.x,0];return!Ts(e,An,En,Cn,bi)||(e=[1,0,0,0,1,0,0,0,1],!Ts(e,An,En,Cn,bi))?!1:(wi.crossVectors(Je,$e),e=[wi.x,wi.y,wi.z],Ts(e,An,En,Cn,bi))}clampPoint(t,e){return e.copy(t).clamp(this.min,this.max)}distanceToPoint(t){return hn.copy(t).clamp(this.min,this.max).sub(t).length()}getBoundingSphere(t){return this.getCenter(t.center),t.radius=this.getSize(hn).length()*.5,t}intersect(t){return this.min.max(t.min),this.max.min(t.max),this.isEmpty()&&this.makeEmpty(),this}union(t){return this.min.min(t.min),this.max.max(t.max),this}applyMatrix4(t){return this.isEmpty()?this:(Ue[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(t),Ue[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(t),Ue[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(t),Ue[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(t),Ue[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(t),Ue[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(t),Ue[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(t),Ue[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(t),this.setFromPoints(Ue),this)}translate(t){return this.min.add(t),this.max.add(t),this}equals(t){return t.min.equals(this.min)&&t.max.equals(this.max)}},Ue=[new N,new N,new N,new N,new N,new N,new N,new N],hn=new N,Ss=new Mn,An=new N,En=new N,Cn=new N,Je=new N,$e=new N,un=new N,ei=new N,bi=new N,wi=new N,dn=new N;function Ts(r,t,e,n,i){for(let s=0,o=r.length-3;s<=o;s+=3){dn.fromArray(r,s);let a=i.x*Math.abs(dn.x)+i.y*Math.abs(dn.y)+i.z*Math.abs(dn.z),c=t.dot(dn),l=e.dot(dn),h=n.dot(dn);if(Math.max(-Math.max(c,l,h),Math.min(c,l,h))>a)return!1}return!0}var Ml=new Mn,ni=new N,As=new N,_i=class{constructor(t=new N,e=-1){this.center=t,this.radius=e}set(t,e){return this.center.copy(t),this.radius=e,this}setFromPoints(t,e){let n=this.center;e!==void 0?n.copy(e):Ml.setFromPoints(t).getCenter(n);let i=0;for(let s=0,o=t.length;sthis.radius*this.radius&&(e.sub(this.center).normalize(),e.multiplyScalar(this.radius).add(this.center)),e}getBoundingBox(t){return this.isEmpty()?(t.makeEmpty(),t):(t.set(this.center,this.center),t.expandByScalar(this.radius),t)}applyMatrix4(t){return this.center.applyMatrix4(t),this.radius=this.radius*t.getMaxScaleOnAxis(),this}translate(t){return this.center.add(t),this}expandByPoint(t){if(this.isEmpty())return this.center.copy(t),this.radius=0,this;ni.subVectors(t,this.center);let e=ni.lengthSq();if(e>this.radius*this.radius){let n=Math.sqrt(e),i=(n-this.radius)*.5;this.center.addScaledVector(ni,i/n),this.radius+=i}return this}union(t){return t.isEmpty()?this:this.isEmpty()?(this.copy(t),this):(this.center.equals(t.center)===!0?this.radius=Math.max(this.radius,t.radius):(As.subVectors(t.center,this.center).setLength(t.radius),this.expandByPoint(ni.copy(t.center).add(As)),this.expandByPoint(ni.copy(t.center).sub(As))),this)}equals(t){return t.center.equals(this.center)&&t.radius===this.radius}clone(){return new this.constructor().copy(this)}},Be=new N,Es=new N,Si=new N,Ke=new N,Cs=new N,Ti=new N,Ps=new N,$s=class{constructor(t=new N,e=new N(0,0,-1)){this.origin=t,this.direction=e}set(t,e){return this.origin.copy(t),this.direction.copy(e),this}copy(t){return this.origin.copy(t.origin),this.direction.copy(t.direction),this}at(t,e){return e.copy(this.direction).multiplyScalar(t).add(this.origin)}lookAt(t){return this.direction.copy(t).sub(this.origin).normalize(),this}recast(t){return this.origin.copy(this.at(t,Be)),this}closestPointToPoint(t,e){e.subVectors(t,this.origin);let n=e.dot(this.direction);return n<0?e.copy(this.origin):e.copy(this.direction).multiplyScalar(n).add(this.origin)}distanceToPoint(t){return Math.sqrt(this.distanceSqToPoint(t))}distanceSqToPoint(t){let e=Be.subVectors(t,this.origin).dot(this.direction);return e<0?this.origin.distanceToSquared(t):(Be.copy(this.direction).multiplyScalar(e).add(this.origin),Be.distanceToSquared(t))}distanceSqToSegment(t,e,n,i){Es.copy(t).add(e).multiplyScalar(.5),Si.copy(e).sub(t).normalize(),Ke.copy(this.origin).sub(Es);let s=t.distanceTo(e)*.5,o=-this.direction.dot(Si),a=Ke.dot(this.direction),c=-Ke.dot(Si),l=Ke.lengthSq(),h=Math.abs(1-o*o),f,u,m,_;if(h>0)if(f=o*c-a,u=o*a-c,_=s*h,f>=0)if(u>=-_)if(u<=_){let p=1/h;f*=p,u*=p,m=f*(f+o*u+2*a)+u*(o*f+u+2*c)+l}else u=s,f=Math.max(0,-(o*u+a)),m=-f*f+u*(u+2*c)+l;else u=-s,f=Math.max(0,-(o*u+a)),m=-f*f+u*(u+2*c)+l;else u<=-_?(f=Math.max(0,-(-o*s+a)),u=f>0?-s:Math.min(Math.max(-s,-c),s),m=-f*f+u*(u+2*c)+l):u<=_?(f=0,u=Math.min(Math.max(-s,-c),s),m=u*(u+2*c)+l):(f=Math.max(0,-(o*s+a)),u=f>0?s:Math.min(Math.max(-s,-c),s),m=-f*f+u*(u+2*c)+l);else u=o>0?-s:s,f=Math.max(0,-(o*u+a)),m=-f*f+u*(u+2*c)+l;return n&&n.copy(this.direction).multiplyScalar(f).add(this.origin),i&&i.copy(Si).multiplyScalar(u).add(Es),m}intersectSphere(t,e){Be.subVectors(t.center,this.origin);let n=Be.dot(this.direction),i=Be.dot(Be)-n*n,s=t.radius*t.radius;if(i>s)return null;let o=Math.sqrt(s-i),a=n-o,c=n+o;return a<0&&c<0?null:a<0?this.at(c,e):this.at(a,e)}intersectsSphere(t){return this.distanceSqToPoint(t.center)<=t.radius*t.radius}distanceToPlane(t){let e=t.normal.dot(this.direction);if(e===0)return t.distanceToPoint(this.origin)===0?0:null;let n=-(this.origin.dot(t.normal)+t.constant)/e;return n>=0?n:null}intersectPlane(t,e){let n=this.distanceToPlane(t);return n===null?null:this.at(n,e)}intersectsPlane(t){let e=t.distanceToPoint(this.origin);return e===0||t.normal.dot(this.direction)*e<0}intersectBox(t,e){let n,i,s,o,a,c,l=1/this.direction.x,h=1/this.direction.y,f=1/this.direction.z,u=this.origin;return l>=0?(n=(t.min.x-u.x)*l,i=(t.max.x-u.x)*l):(n=(t.max.x-u.x)*l,i=(t.min.x-u.x)*l),h>=0?(s=(t.min.y-u.y)*h,o=(t.max.y-u.y)*h):(s=(t.max.y-u.y)*h,o=(t.min.y-u.y)*h),n>o||s>i||((s>n||isNaN(n))&&(n=s),(o=0?(a=(t.min.z-u.z)*f,c=(t.max.z-u.z)*f):(a=(t.max.z-u.z)*f,c=(t.min.z-u.z)*f),n>c||a>i)||((a>n||n!==n)&&(n=a),(c=0?n:i,e)}intersectsBox(t){return this.intersectBox(t,Be)!==null}intersectTriangle(t,e,n,i,s){Cs.subVectors(e,t),Ti.subVectors(n,t),Ps.crossVectors(Cs,Ti);let o=this.direction.dot(Ps),a;if(o>0){if(i)return null;a=1}else if(o<0)a=-1,o=-o;else return null;Ke.subVectors(this.origin,t);let c=a*this.direction.dot(Ti.crossVectors(Ke,Ti));if(c<0)return null;let l=a*this.direction.dot(Cs.cross(Ke));if(l<0||c+l>o)return null;let h=-a*Ke.dot(Ps);return h<0?null:this.at(h/o,s)}applyMatrix4(t){return this.origin.applyMatrix4(t),this.direction.transformDirection(t),this}equals(t){return t.origin.equals(this.origin)&&t.direction.equals(this.direction)}clone(){return new this.constructor().copy(this)}},qt=class{constructor(){qt.prototype.isMatrix4=!0,this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}set(t,e,n,i,s,o,a,c,l,h,f,u,m,_,p,d){let v=this.elements;return v[0]=t,v[4]=e,v[8]=n,v[12]=i,v[1]=s,v[5]=o,v[9]=a,v[13]=c,v[2]=l,v[6]=h,v[10]=f,v[14]=u,v[3]=m,v[7]=_,v[11]=p,v[15]=d,this}identity(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this}clone(){return new qt().fromArray(this.elements)}copy(t){let e=this.elements,n=t.elements;return e[0]=n[0],e[1]=n[1],e[2]=n[2],e[3]=n[3],e[4]=n[4],e[5]=n[5],e[6]=n[6],e[7]=n[7],e[8]=n[8],e[9]=n[9],e[10]=n[10],e[11]=n[11],e[12]=n[12],e[13]=n[13],e[14]=n[14],e[15]=n[15],this}copyPosition(t){let e=this.elements,n=t.elements;return e[12]=n[12],e[13]=n[13],e[14]=n[14],this}setFromMatrix3(t){let e=t.elements;return this.set(e[0],e[3],e[6],0,e[1],e[4],e[7],0,e[2],e[5],e[8],0,0,0,0,1),this}extractBasis(t,e,n){return t.setFromMatrixColumn(this,0),e.setFromMatrixColumn(this,1),n.setFromMatrixColumn(this,2),this}makeBasis(t,e,n){return this.set(t.x,e.x,n.x,0,t.y,e.y,n.y,0,t.z,e.z,n.z,0,0,0,0,1),this}extractRotation(t){let e=this.elements,n=t.elements,i=1/Pn.setFromMatrixColumn(t,0).length(),s=1/Pn.setFromMatrixColumn(t,1).length(),o=1/Pn.setFromMatrixColumn(t,2).length();return e[0]=n[0]*i,e[1]=n[1]*i,e[2]=n[2]*i,e[3]=0,e[4]=n[4]*s,e[5]=n[5]*s,e[6]=n[6]*s,e[7]=0,e[8]=n[8]*o,e[9]=n[9]*o,e[10]=n[10]*o,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,this}makeRotationFromEuler(t){let e=this.elements,n=t.x,i=t.y,s=t.z,o=Math.cos(n),a=Math.sin(n),c=Math.cos(i),l=Math.sin(i),h=Math.cos(s),f=Math.sin(s);if(t.order==="XYZ"){let u=o*h,m=o*f,_=a*h,p=a*f;e[0]=c*h,e[4]=-c*f,e[8]=l,e[1]=m+_*l,e[5]=u-p*l,e[9]=-a*c,e[2]=p-u*l,e[6]=_+m*l,e[10]=o*c}else if(t.order==="YXZ"){let u=c*h,m=c*f,_=l*h,p=l*f;e[0]=u+p*a,e[4]=_*a-m,e[8]=o*l,e[1]=o*f,e[5]=o*h,e[9]=-a,e[2]=m*a-_,e[6]=p+u*a,e[10]=o*c}else if(t.order==="ZXY"){let u=c*h,m=c*f,_=l*h,p=l*f;e[0]=u-p*a,e[4]=-o*f,e[8]=_+m*a,e[1]=m+_*a,e[5]=o*h,e[9]=p-u*a,e[2]=-o*l,e[6]=a,e[10]=o*c}else if(t.order==="ZYX"){let u=o*h,m=o*f,_=a*h,p=a*f;e[0]=c*h,e[4]=_*l-m,e[8]=u*l+p,e[1]=c*f,e[5]=p*l+u,e[9]=m*l-_,e[2]=-l,e[6]=a*c,e[10]=o*c}else if(t.order==="YZX"){let u=o*c,m=o*l,_=a*c,p=a*l;e[0]=c*h,e[4]=p-u*f,e[8]=_*f+m,e[1]=f,e[5]=o*h,e[9]=-a*h,e[2]=-l*h,e[6]=m*f+_,e[10]=u-p*f}else if(t.order==="XZY"){let u=o*c,m=o*l,_=a*c,p=a*l;e[0]=c*h,e[4]=-f,e[8]=l*h,e[1]=u*f+p,e[5]=o*h,e[9]=m*f-_,e[2]=_*f-m,e[6]=a*h,e[10]=p*f+u}return e[3]=0,e[7]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,this}makeRotationFromQuaternion(t){return this.compose(bl,t,wl)}lookAt(t,e,n){let i=this.elements;return me.subVectors(t,e),me.lengthSq()===0&&(me.z=1),me.normalize(),je.crossVectors(n,me),je.lengthSq()===0&&(Math.abs(n.z)===1?me.x+=1e-4:me.z+=1e-4,me.normalize(),je.crossVectors(n,me)),je.normalize(),Ai.crossVectors(me,je),i[0]=je.x,i[4]=Ai.x,i[8]=me.x,i[1]=je.y,i[5]=Ai.y,i[9]=me.y,i[2]=je.z,i[6]=Ai.z,i[10]=me.z,this}multiply(t){return this.multiplyMatrices(this,t)}premultiply(t){return this.multiplyMatrices(t,this)}multiplyMatrices(t,e){let n=t.elements,i=e.elements,s=this.elements,o=n[0],a=n[4],c=n[8],l=n[12],h=n[1],f=n[5],u=n[9],m=n[13],_=n[2],p=n[6],d=n[10],v=n[14],T=n[3],b=n[7],M=n[11],A=n[15],C=i[0],I=i[4],x=i[8],S=i[12],L=i[1],X=i[5],q=i[9],z=i[13],R=i[2],G=i[6],Y=i[10],j=i[14],W=i[3],Q=i[7],Z=i[11],ft=i[15];return s[0]=o*C+a*L+c*R+l*W,s[4]=o*I+a*X+c*G+l*Q,s[8]=o*x+a*q+c*Y+l*Z,s[12]=o*S+a*z+c*j+l*ft,s[1]=h*C+f*L+u*R+m*W,s[5]=h*I+f*X+u*G+m*Q,s[9]=h*x+f*q+u*Y+m*Z,s[13]=h*S+f*z+u*j+m*ft,s[2]=_*C+p*L+d*R+v*W,s[6]=_*I+p*X+d*G+v*Q,s[10]=_*x+p*q+d*Y+v*Z,s[14]=_*S+p*z+d*j+v*ft,s[3]=T*C+b*L+M*R+A*W,s[7]=T*I+b*X+M*G+A*Q,s[11]=T*x+b*q+M*Y+A*Z,s[15]=T*S+b*z+M*j+A*ft,this}multiplyScalar(t){let 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(){let t=this.elements,e=t[0],n=t[4],i=t[8],s=t[12],o=t[1],a=t[5],c=t[9],l=t[13],h=t[2],f=t[6],u=t[10],m=t[14],_=t[3],p=t[7],d=t[11],v=t[15];return _*(+s*c*f-i*l*f-s*a*u+n*l*u+i*a*m-n*c*m)+p*(+e*c*m-e*l*u+s*o*u-i*o*m+i*l*h-s*c*h)+d*(+e*l*f-e*a*m-s*o*f+n*o*m+s*a*h-n*l*h)+v*(-i*a*h-e*c*f+e*a*u+i*o*f-n*o*u+n*c*h)}transpose(){let t=this.elements,e;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}setPosition(t,e,n){let i=this.elements;return t.isVector3?(i[12]=t.x,i[13]=t.y,i[14]=t.z):(i[12]=t,i[13]=e,i[14]=n),this}invert(){let t=this.elements,e=t[0],n=t[1],i=t[2],s=t[3],o=t[4],a=t[5],c=t[6],l=t[7],h=t[8],f=t[9],u=t[10],m=t[11],_=t[12],p=t[13],d=t[14],v=t[15],T=f*d*l-p*u*l+p*c*m-a*d*m-f*c*v+a*u*v,b=_*u*l-h*d*l-_*c*m+o*d*m+h*c*v-o*u*v,M=h*p*l-_*f*l+_*a*m-o*p*m-h*a*v+o*f*v,A=_*f*c-h*p*c-_*a*u+o*p*u+h*a*d-o*f*d,C=e*T+n*b+i*M+s*A;if(C===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);let I=1/C;return t[0]=T*I,t[1]=(p*u*s-f*d*s-p*i*m+n*d*m+f*i*v-n*u*v)*I,t[2]=(a*d*s-p*c*s+p*i*l-n*d*l-a*i*v+n*c*v)*I,t[3]=(f*c*s-a*u*s-f*i*l+n*u*l+a*i*m-n*c*m)*I,t[4]=b*I,t[5]=(h*d*s-_*u*s+_*i*m-e*d*m-h*i*v+e*u*v)*I,t[6]=(_*c*s-o*d*s-_*i*l+e*d*l+o*i*v-e*c*v)*I,t[7]=(o*u*s-h*c*s+h*i*l-e*u*l-o*i*m+e*c*m)*I,t[8]=M*I,t[9]=(_*f*s-h*p*s-_*n*m+e*p*m+h*n*v-e*f*v)*I,t[10]=(o*p*s-_*a*s+_*n*l-e*p*l-o*n*v+e*a*v)*I,t[11]=(h*a*s-o*f*s-h*n*l+e*f*l+o*n*m-e*a*m)*I,t[12]=A*I,t[13]=(h*p*i-_*f*i+_*n*u-e*p*u-h*n*d+e*f*d)*I,t[14]=(_*a*i-o*p*i-_*n*c+e*p*c+o*n*d-e*a*d)*I,t[15]=(o*f*i-h*a*i+h*n*c-e*f*c-o*n*u+e*a*u)*I,this}scale(t){let e=this.elements,n=t.x,i=t.y,s=t.z;return e[0]*=n,e[4]*=i,e[8]*=s,e[1]*=n,e[5]*=i,e[9]*=s,e[2]*=n,e[6]*=i,e[10]*=s,e[3]*=n,e[7]*=i,e[11]*=s,this}getMaxScaleOnAxis(){let t=this.elements,e=t[0]*t[0]+t[1]*t[1]+t[2]*t[2],n=t[4]*t[4]+t[5]*t[5]+t[6]*t[6],i=t[8]*t[8]+t[9]*t[9]+t[10]*t[10];return Math.sqrt(Math.max(e,n,i))}makeTranslation(t,e,n){return this.set(1,0,0,t,0,1,0,e,0,0,1,n,0,0,0,1),this}makeRotationX(t){let e=Math.cos(t),n=Math.sin(t);return this.set(1,0,0,0,0,e,-n,0,0,n,e,0,0,0,0,1),this}makeRotationY(t){let e=Math.cos(t),n=Math.sin(t);return this.set(e,0,n,0,0,1,0,0,-n,0,e,0,0,0,0,1),this}makeRotationZ(t){let e=Math.cos(t),n=Math.sin(t);return this.set(e,-n,0,0,n,e,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(t,e){let n=Math.cos(e),i=Math.sin(e),s=1-n,o=t.x,a=t.y,c=t.z,l=s*o,h=s*a;return this.set(l*o+n,l*a-i*c,l*c+i*a,0,l*a+i*c,h*a+n,h*c-i*o,0,l*c-i*a,h*c+i*o,s*c*c+n,0,0,0,0,1),this}makeScale(t,e,n){return this.set(t,0,0,0,0,e,0,0,0,0,n,0,0,0,0,1),this}makeShear(t,e,n,i,s,o){return this.set(1,n,s,0,t,1,o,0,e,i,1,0,0,0,0,1),this}compose(t,e,n){let i=this.elements,s=e._x,o=e._y,a=e._z,c=e._w,l=s+s,h=o+o,f=a+a,u=s*l,m=s*h,_=s*f,p=o*h,d=o*f,v=a*f,T=c*l,b=c*h,M=c*f,A=n.x,C=n.y,I=n.z;return i[0]=(1-(p+v))*A,i[1]=(m+M)*A,i[2]=(_-b)*A,i[3]=0,i[4]=(m-M)*C,i[5]=(1-(u+v))*C,i[6]=(d+T)*C,i[7]=0,i[8]=(_+b)*I,i[9]=(d-T)*I,i[10]=(1-(u+p))*I,i[11]=0,i[12]=t.x,i[13]=t.y,i[14]=t.z,i[15]=1,this}decompose(t,e,n){let i=this.elements,s=Pn.set(i[0],i[1],i[2]).length(),o=Pn.set(i[4],i[5],i[6]).length(),a=Pn.set(i[8],i[9],i[10]).length();this.determinant()<0&&(s=-s),t.x=i[12],t.y=i[13],t.z=i[14],Ee.copy(this);let l=1/s,h=1/o,f=1/a;return Ee.elements[0]*=l,Ee.elements[1]*=l,Ee.elements[2]*=l,Ee.elements[4]*=h,Ee.elements[5]*=h,Ee.elements[6]*=h,Ee.elements[8]*=f,Ee.elements[9]*=f,Ee.elements[10]*=f,e.setFromRotationMatrix(Ee),n.x=s,n.y=o,n.z=a,this}makePerspective(t,e,n,i,s,o){let a=this.elements,c=2*s/(e-t),l=2*s/(n-i),h=(e+t)/(e-t),f=(n+i)/(n-i),u=-(o+s)/(o-s),m=-2*o*s/(o-s);return a[0]=c,a[4]=0,a[8]=h,a[12]=0,a[1]=0,a[5]=l,a[9]=f,a[13]=0,a[2]=0,a[6]=0,a[10]=u,a[14]=m,a[3]=0,a[7]=0,a[11]=-1,a[15]=0,this}makeOrthographic(t,e,n,i,s,o){let a=this.elements,c=1/(e-t),l=1/(n-i),h=1/(o-s),f=(e+t)*c,u=(n+i)*l,m=(o+s)*h;return a[0]=2*c,a[4]=0,a[8]=0,a[12]=-f,a[1]=0,a[5]=2*l,a[9]=0,a[13]=-u,a[2]=0,a[6]=0,a[10]=-2*h,a[14]=-m,a[3]=0,a[7]=0,a[11]=0,a[15]=1,this}equals(t){let e=this.elements,n=t.elements;for(let i=0;i<16;i++)if(e[i]!==n[i])return!1;return!0}fromArray(t,e=0){for(let n=0;n<16;n++)this.elements[n]=t[n+e];return this}toArray(t=[],e=0){let n=this.elements;return t[e]=n[0],t[e+1]=n[1],t[e+2]=n[2],t[e+3]=n[3],t[e+4]=n[4],t[e+5]=n[5],t[e+6]=n[6],t[e+7]=n[7],t[e+8]=n[8],t[e+9]=n[9],t[e+10]=n[10],t[e+11]=n[11],t[e+12]=n[12],t[e+13]=n[13],t[e+14]=n[14],t[e+15]=n[15],t}},Pn=new N,Ee=new qt,bl=new N(0,0,0),wl=new N(1,1,1),je=new N,Ai=new N,me=new N,da=new qt,fa=new rn,Zn=class{constructor(t=0,e=0,n=0,i=Zn.DEFAULT_ORDER){this.isEuler=!0,this._x=t,this._y=e,this._z=n,this._order=i}get x(){return this._x}set x(t){this._x=t,this._onChangeCallback()}get y(){return this._y}set y(t){this._y=t,this._onChangeCallback()}get z(){return this._z}set z(t){this._z=t,this._onChangeCallback()}get order(){return this._order}set order(t){this._order=t,this._onChangeCallback()}set(t,e,n,i=this._order){return this._x=t,this._y=e,this._z=n,this._order=i,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._order)}copy(t){return this._x=t._x,this._y=t._y,this._z=t._z,this._order=t._order,this._onChangeCallback(),this}setFromRotationMatrix(t,e=this._order,n=!0){let i=t.elements,s=i[0],o=i[4],a=i[8],c=i[1],l=i[5],h=i[9],f=i[2],u=i[6],m=i[10];switch(e){case"XYZ":this._y=Math.asin(ue(a,-1,1)),Math.abs(a)<.9999999?(this._x=Math.atan2(-h,m),this._z=Math.atan2(-o,s)):(this._x=Math.atan2(u,l),this._z=0);break;case"YXZ":this._x=Math.asin(-ue(h,-1,1)),Math.abs(h)<.9999999?(this._y=Math.atan2(a,m),this._z=Math.atan2(c,l)):(this._y=Math.atan2(-f,s),this._z=0);break;case"ZXY":this._x=Math.asin(ue(u,-1,1)),Math.abs(u)<.9999999?(this._y=Math.atan2(-f,m),this._z=Math.atan2(-o,l)):(this._y=0,this._z=Math.atan2(c,s));break;case"ZYX":this._y=Math.asin(-ue(f,-1,1)),Math.abs(f)<.9999999?(this._x=Math.atan2(u,m),this._z=Math.atan2(c,s)):(this._x=0,this._z=Math.atan2(-o,l));break;case"YZX":this._z=Math.asin(ue(c,-1,1)),Math.abs(c)<.9999999?(this._x=Math.atan2(-h,l),this._y=Math.atan2(-f,s)):(this._x=0,this._y=Math.atan2(a,m));break;case"XZY":this._z=Math.asin(-ue(o,-1,1)),Math.abs(o)<.9999999?(this._x=Math.atan2(u,l),this._y=Math.atan2(a,s)):(this._x=Math.atan2(-h,m),this._y=0);break;default:console.warn("THREE.Euler: .setFromRotationMatrix() encountered an unknown order: "+e)}return this._order=e,n===!0&&this._onChangeCallback(),this}setFromQuaternion(t,e,n){return da.makeRotationFromQuaternion(t),this.setFromRotationMatrix(da,e,n)}setFromVector3(t,e=this._order){return this.set(t.x,t.y,t.z,e)}reorder(t){return fa.setFromEuler(this),this.setFromQuaternion(fa,t)}equals(t){return t._x===this._x&&t._y===this._y&&t._z===this._z&&t._order===this._order}fromArray(t){return this._x=t[0],this._y=t[1],this._z=t[2],t[3]!==void 0&&(this._order=t[3]),this._onChangeCallback(),this}toArray(t=[],e=0){return t[e]=this._x,t[e+1]=this._y,t[e+2]=this._z,t[e+3]=this._order,t}_onChange(t){return this._onChangeCallback=t,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._order}};Zn.DEFAULT_ORDER="XYZ";var Zi=class{constructor(){this.mask=1}set(t){this.mask=(1<>>0}enable(t){this.mask|=1<1){for(let e=0;e1){for(let n=0;n0&&(n=n.concat(o))}return n}getWorldPosition(t){return this.updateWorldMatrix(!0,!1),t.setFromMatrixPosition(this.matrixWorld)}getWorldQuaternion(t){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(ii,t,Tl),t}getWorldScale(t){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(ii,Al,t),t}getWorldDirection(t){this.updateWorldMatrix(!0,!1);let e=this.matrixWorld.elements;return t.set(e[8],e[9],e[10]).normalize()}raycast(){}traverse(t){t(this);let e=this.children;for(let n=0,i=e.length;n0&&(i.userData=this.userData),i.layers=this.layers.mask,i.matrix=this.matrix.toArray(),this.matrixAutoUpdate===!1&&(i.matrixAutoUpdate=!1),this.isInstancedMesh&&(i.type="InstancedMesh",i.count=this.count,i.instanceMatrix=this.instanceMatrix.toJSON(),this.instanceColor!==null&&(i.instanceColor=this.instanceColor.toJSON()));function s(a,c){return a[c.uuid]===void 0&&(a[c.uuid]=c.toJSON(t)),c.uuid}if(this.isScene)this.background&&(this.background.isColor?i.background=this.background.toJSON():this.background.isTexture&&(i.background=this.background.toJSON(t).uuid)),this.environment&&this.environment.isTexture&&this.environment.isRenderTargetTexture!==!0&&(i.environment=this.environment.toJSON(t).uuid);else if(this.isMesh||this.isLine||this.isPoints){i.geometry=s(t.geometries,this.geometry);let a=this.geometry.parameters;if(a!==void 0&&a.shapes!==void 0){let c=a.shapes;if(Array.isArray(c))for(let l=0,h=c.length;l0){i.children=[];for(let a=0;a0){i.animations=[];for(let a=0;a0&&(n.geometries=a),c.length>0&&(n.materials=c),l.length>0&&(n.textures=l),h.length>0&&(n.images=h),f.length>0&&(n.shapes=f),u.length>0&&(n.skeletons=u),m.length>0&&(n.animations=m),_.length>0&&(n.nodes=_)}return n.object=i,n;function o(a){let c=[];for(let l in a){let h=a[l];delete h.metadata,c.push(h)}return c}}clone(t){return new this.constructor().copy(this,t)}copy(t,e=!0){if(this.name=t.name,this.up.copy(t.up),this.position.copy(t.position),this.rotation.order=t.rotation.order,this.quaternion.copy(t.quaternion),this.scale.copy(t.scale),this.matrix.copy(t.matrix),this.matrixWorld.copy(t.matrixWorld),this.matrixAutoUpdate=t.matrixAutoUpdate,this.matrixWorldNeedsUpdate=t.matrixWorldNeedsUpdate,this.matrixWorldAutoUpdate=t.matrixWorldAutoUpdate,this.layers.mask=t.layers.mask,this.visible=t.visible,this.castShadow=t.castShadow,this.receiveShadow=t.receiveShadow,this.frustumCulled=t.frustumCulled,this.renderOrder=t.renderOrder,this.userData=JSON.parse(JSON.stringify(t.userData)),e===!0)for(let n=0;n0?i.multiplyScalar(1/Math.sqrt(s)):i.set(0,0,0)}static getBarycoord(t,e,n,i,s){Ce.subVectors(i,e),Ve.subVectors(n,e),Rs.subVectors(t,e);let o=Ce.dot(Ce),a=Ce.dot(Ve),c=Ce.dot(Rs),l=Ve.dot(Ve),h=Ve.dot(Rs),f=o*l-a*a;if(f===0)return s.set(-2,-1,-1);let u=1/f,m=(l*c-a*h)*u,_=(o*h-a*c)*u;return s.set(1-m-_,_,m)}static containsPoint(t,e,n,i){return this.getBarycoord(t,e,n,i,Ge),Ge.x>=0&&Ge.y>=0&&Ge.x+Ge.y<=1}static getUV(t,e,n,i,s,o,a,c){return this.getBarycoord(t,e,n,i,Ge),c.set(0,0),c.addScaledVector(s,Ge.x),c.addScaledVector(o,Ge.y),c.addScaledVector(a,Ge.z),c}static isFrontFacing(t,e,n,i){return Ce.subVectors(n,e),Ve.subVectors(t,e),Ce.cross(Ve).dot(i)<0}set(t,e,n){return this.a.copy(t),this.b.copy(e),this.c.copy(n),this}setFromPointsAndIndices(t,e,n,i){return this.a.copy(t[e]),this.b.copy(t[n]),this.c.copy(t[i]),this}setFromAttributeAndIndices(t,e,n,i){return this.a.fromBufferAttribute(t,e),this.b.fromBufferAttribute(t,n),this.c.fromBufferAttribute(t,i),this}clone(){return new this.constructor().copy(this)}copy(t){return this.a.copy(t.a),this.b.copy(t.b),this.c.copy(t.c),this}getArea(){return Ce.subVectors(this.c,this.b),Ve.subVectors(this.a,this.b),Ce.cross(Ve).length()*.5}getMidpoint(t){return t.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}getNormal(t){return xe.getNormal(this.a,this.b,this.c,t)}getPlane(t){return t.setFromCoplanarPoints(this.a,this.b,this.c)}getBarycoord(t,e){return xe.getBarycoord(t,this.a,this.b,this.c,e)}getUV(t,e,n,i,s){return xe.getUV(t,this.a,this.b,this.c,e,n,i,s)}containsPoint(t){return xe.containsPoint(t,this.a,this.b,this.c)}isFrontFacing(t){return xe.isFrontFacing(this.a,this.b,this.c,t)}intersectsBox(t){return t.intersectsTriangle(this)}closestPointToPoint(t,e){let n=this.a,i=this.b,s=this.c,o,a;Ln.subVectors(i,n),In.subVectors(s,n),Ls.subVectors(t,n);let c=Ln.dot(Ls),l=In.dot(Ls);if(c<=0&&l<=0)return e.copy(n);Is.subVectors(t,i);let h=Ln.dot(Is),f=In.dot(Is);if(h>=0&&f<=h)return e.copy(i);let u=c*f-h*l;if(u<=0&&c>=0&&h<=0)return o=c/(c-h),e.copy(n).addScaledVector(Ln,o);Ds.subVectors(t,s);let m=Ln.dot(Ds),_=In.dot(Ds);if(_>=0&&m<=_)return e.copy(s);let p=m*l-c*_;if(p<=0&&l>=0&&_<=0)return a=l/(l-_),e.copy(n).addScaledVector(In,a);let d=h*_-m*f;if(d<=0&&f-h>=0&&m-_>=0)return ya.subVectors(s,i),a=(f-h)/(f-h+(m-_)),e.copy(i).addScaledVector(ya,a);let v=1/(d+p+u);return o=p*v,a=u*v,e.copy(n).addScaledVector(Ln,o).addScaledVector(In,a)}equals(t){return t.a.equals(this.a)&&t.b.equals(this.b)&&t.c.equals(this.c)}},Cl=0,Jn=class extends sn{constructor(){super(),this.isMaterial=!0,Object.defineProperty(this,"id",{value:Cl++}),this.uuid=jn(),this.name="",this.type="Material",this.blending=Gn,this.side=nn,this.vertexColors=!1,this.opacity=1,this.transparent=!1,this.blendSrc=Ha,this.blendDst=Wa,this.blendEquation=Bn,this.blendSrcAlpha=null,this.blendDstAlpha=null,this.blendEquationAlpha=null,this.depthFunc=Gs,this.depthTest=!0,this.depthWrite=!0,this.stencilWriteMask=255,this.stencilFunc=rl,this.stencilRef=0,this.stencilFuncMask=255,this.stencilFail=xs,this.stencilZFail=xs,this.stencilZPass=xs,this.stencilWrite=!1,this.clippingPlanes=null,this.clipIntersection=!1,this.clipShadows=!1,this.shadowSide=null,this.colorWrite=!0,this.precision=null,this.polygonOffset=!1,this.polygonOffsetFactor=0,this.polygonOffsetUnits=0,this.dithering=!1,this.alphaToCoverage=!1,this.premultipliedAlpha=!1,this.forceSinglePass=!1,this.visible=!0,this.toneMapped=!0,this.userData={},this.version=0,this._alphaTest=0}get alphaTest(){return this._alphaTest}set alphaTest(t){this._alphaTest>0!=t>0&&this.version++,this._alphaTest=t}onBuild(){}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(t){if(t!==void 0)for(let e in t){let n=t[e];if(n===void 0){console.warn("THREE.Material: \'"+e+"\' parameter is undefined.");continue}let i=this[e];if(i===void 0){console.warn("THREE."+this.type+": \'"+e+"\' is not a property of this material.");continue}i&&i.isColor?i.set(n):i&&i.isVector3&&n&&n.isVector3?i.copy(n):this[e]=n}}toJSON(t){let e=t===void 0||typeof t=="string";e&&(t={textures:{},images:{}});let n={metadata:{version:4.5,type:"Material",generator:"Material.toJSON"}};n.uuid=this.uuid,n.type=this.type,this.name!==""&&(n.name=this.name),this.color&&this.color.isColor&&(n.color=this.color.getHex()),this.roughness!==void 0&&(n.roughness=this.roughness),this.metalness!==void 0&&(n.metalness=this.metalness),this.sheen!==void 0&&(n.sheen=this.sheen),this.sheenColor&&this.sheenColor.isColor&&(n.sheenColor=this.sheenColor.getHex()),this.sheenRoughness!==void 0&&(n.sheenRoughness=this.sheenRoughness),this.emissive&&this.emissive.isColor&&(n.emissive=this.emissive.getHex()),this.emissiveIntensity&&this.emissiveIntensity!==1&&(n.emissiveIntensity=this.emissiveIntensity),this.specular&&this.specular.isColor&&(n.specular=this.specular.getHex()),this.specularIntensity!==void 0&&(n.specularIntensity=this.specularIntensity),this.specularColor&&this.specularColor.isColor&&(n.specularColor=this.specularColor.getHex()),this.shininess!==void 0&&(n.shininess=this.shininess),this.clearcoat!==void 0&&(n.clearcoat=this.clearcoat),this.clearcoatRoughness!==void 0&&(n.clearcoatRoughness=this.clearcoatRoughness),this.clearcoatMap&&this.clearcoatMap.isTexture&&(n.clearcoatMap=this.clearcoatMap.toJSON(t).uuid),this.clearcoatRoughnessMap&&this.clearcoatRoughnessMap.isTexture&&(n.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(t).uuid),this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture&&(n.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(t).uuid,n.clearcoatNormalScale=this.clearcoatNormalScale.toArray()),this.iridescence!==void 0&&(n.iridescence=this.iridescence),this.iridescenceIOR!==void 0&&(n.iridescenceIOR=this.iridescenceIOR),this.iridescenceThicknessRange!==void 0&&(n.iridescenceThicknessRange=this.iridescenceThicknessRange),this.iridescenceMap&&this.iridescenceMap.isTexture&&(n.iridescenceMap=this.iridescenceMap.toJSON(t).uuid),this.iridescenceThicknessMap&&this.iridescenceThicknessMap.isTexture&&(n.iridescenceThicknessMap=this.iridescenceThicknessMap.toJSON(t).uuid),this.map&&this.map.isTexture&&(n.map=this.map.toJSON(t).uuid),this.matcap&&this.matcap.isTexture&&(n.matcap=this.matcap.toJSON(t).uuid),this.alphaMap&&this.alphaMap.isTexture&&(n.alphaMap=this.alphaMap.toJSON(t).uuid),this.lightMap&&this.lightMap.isTexture&&(n.lightMap=this.lightMap.toJSON(t).uuid,n.lightMapIntensity=this.lightMapIntensity),this.aoMap&&this.aoMap.isTexture&&(n.aoMap=this.aoMap.toJSON(t).uuid,n.aoMapIntensity=this.aoMapIntensity),this.bumpMap&&this.bumpMap.isTexture&&(n.bumpMap=this.bumpMap.toJSON(t).uuid,n.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(n.normalMap=this.normalMap.toJSON(t).uuid,n.normalMapType=this.normalMapType,n.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(n.displacementMap=this.displacementMap.toJSON(t).uuid,n.displacementScale=this.displacementScale,n.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(n.roughnessMap=this.roughnessMap.toJSON(t).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(n.metalnessMap=this.metalnessMap.toJSON(t).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(n.emissiveMap=this.emissiveMap.toJSON(t).uuid),this.specularMap&&this.specularMap.isTexture&&(n.specularMap=this.specularMap.toJSON(t).uuid),this.specularIntensityMap&&this.specularIntensityMap.isTexture&&(n.specularIntensityMap=this.specularIntensityMap.toJSON(t).uuid),this.specularColorMap&&this.specularColorMap.isTexture&&(n.specularColorMap=this.specularColorMap.toJSON(t).uuid),this.envMap&&this.envMap.isTexture&&(n.envMap=this.envMap.toJSON(t).uuid,this.combine!==void 0&&(n.combine=this.combine)),this.envMapIntensity!==void 0&&(n.envMapIntensity=this.envMapIntensity),this.reflectivity!==void 0&&(n.reflectivity=this.reflectivity),this.refractionRatio!==void 0&&(n.refractionRatio=this.refractionRatio),this.gradientMap&&this.gradientMap.isTexture&&(n.gradientMap=this.gradientMap.toJSON(t).uuid),this.transmission!==void 0&&(n.transmission=this.transmission),this.transmissionMap&&this.transmissionMap.isTexture&&(n.transmissionMap=this.transmissionMap.toJSON(t).uuid),this.thickness!==void 0&&(n.thickness=this.thickness),this.thicknessMap&&this.thicknessMap.isTexture&&(n.thicknessMap=this.thicknessMap.toJSON(t).uuid),this.attenuationDistance!==void 0&&this.attenuationDistance!==1/0&&(n.attenuationDistance=this.attenuationDistance),this.attenuationColor!==void 0&&(n.attenuationColor=this.attenuationColor.getHex()),this.size!==void 0&&(n.size=this.size),this.shadowSide!==null&&(n.shadowSide=this.shadowSide),this.sizeAttenuation!==void 0&&(n.sizeAttenuation=this.sizeAttenuation),this.blending!==Gn&&(n.blending=this.blending),this.side!==nn&&(n.side=this.side),this.vertexColors&&(n.vertexColors=!0),this.opacity<1&&(n.opacity=this.opacity),this.transparent===!0&&(n.transparent=this.transparent),n.depthFunc=this.depthFunc,n.depthTest=this.depthTest,n.depthWrite=this.depthWrite,n.colorWrite=this.colorWrite,n.stencilWrite=this.stencilWrite,n.stencilWriteMask=this.stencilWriteMask,n.stencilFunc=this.stencilFunc,n.stencilRef=this.stencilRef,n.stencilFuncMask=this.stencilFuncMask,n.stencilFail=this.stencilFail,n.stencilZFail=this.stencilZFail,n.stencilZPass=this.stencilZPass,this.rotation!==void 0&&this.rotation!==0&&(n.rotation=this.rotation),this.polygonOffset===!0&&(n.polygonOffset=!0),this.polygonOffsetFactor!==0&&(n.polygonOffsetFactor=this.polygonOffsetFactor),this.polygonOffsetUnits!==0&&(n.polygonOffsetUnits=this.polygonOffsetUnits),this.linewidth!==void 0&&this.linewidth!==1&&(n.linewidth=this.linewidth),this.dashSize!==void 0&&(n.dashSize=this.dashSize),this.gapSize!==void 0&&(n.gapSize=this.gapSize),this.scale!==void 0&&(n.scale=this.scale),this.dithering===!0&&(n.dithering=!0),this.alphaTest>0&&(n.alphaTest=this.alphaTest),this.alphaToCoverage===!0&&(n.alphaToCoverage=this.alphaToCoverage),this.premultipliedAlpha===!0&&(n.premultipliedAlpha=this.premultipliedAlpha),this.forceSinglePass===!0&&(n.forceSinglePass=this.forceSinglePass),this.wireframe===!0&&(n.wireframe=this.wireframe),this.wireframeLinewidth>1&&(n.wireframeLinewidth=this.wireframeLinewidth),this.wireframeLinecap!=="round"&&(n.wireframeLinecap=this.wireframeLinecap),this.wireframeLinejoin!=="round"&&(n.wireframeLinejoin=this.wireframeLinejoin),this.flatShading===!0&&(n.flatShading=this.flatShading),this.visible===!1&&(n.visible=!1),this.toneMapped===!1&&(n.toneMapped=!1),this.fog===!1&&(n.fog=!1),Object.keys(this.userData).length>0&&(n.userData=this.userData);function i(s){let o=[];for(let a in s){let c=s[a];delete c.metadata,o.push(c)}return o}if(e){let s=i(t.textures),o=i(t.images);s.length>0&&(n.textures=s),o.length>0&&(n.images=o)}return n}clone(){return new this.constructor().copy(this)}copy(t){this.name=t.name,this.blending=t.blending,this.side=t.side,this.vertexColors=t.vertexColors,this.opacity=t.opacity,this.transparent=t.transparent,this.blendSrc=t.blendSrc,this.blendDst=t.blendDst,this.blendEquation=t.blendEquation,this.blendSrcAlpha=t.blendSrcAlpha,this.blendDstAlpha=t.blendDstAlpha,this.blendEquationAlpha=t.blendEquationAlpha,this.depthFunc=t.depthFunc,this.depthTest=t.depthTest,this.depthWrite=t.depthWrite,this.stencilWriteMask=t.stencilWriteMask,this.stencilFunc=t.stencilFunc,this.stencilRef=t.stencilRef,this.stencilFuncMask=t.stencilFuncMask,this.stencilFail=t.stencilFail,this.stencilZFail=t.stencilZFail,this.stencilZPass=t.stencilZPass,this.stencilWrite=t.stencilWrite;let e=t.clippingPlanes,n=null;if(e!==null){let i=e.length;n=new Array(i);for(let s=0;s!==i;++s)n[s]=e[s].clone()}return this.clippingPlanes=n,this.clipIntersection=t.clipIntersection,this.clipShadows=t.clipShadows,this.shadowSide=t.shadowSide,this.colorWrite=t.colorWrite,this.precision=t.precision,this.polygonOffset=t.polygonOffset,this.polygonOffsetFactor=t.polygonOffsetFactor,this.polygonOffsetUnits=t.polygonOffsetUnits,this.dithering=t.dithering,this.alphaTest=t.alphaTest,this.alphaToCoverage=t.alphaToCoverage,this.premultipliedAlpha=t.premultipliedAlpha,this.forceSinglePass=t.forceSinglePass,this.visible=t.visible,this.toneMapped=t.toneMapped,this.userData=JSON.parse(JSON.stringify(t.userData)),this}dispose(){this.dispatchEvent({type:"dispose"})}set needsUpdate(t){t===!0&&this.version++}},Ji=class extends Jn{constructor(t){super(),this.isMeshBasicMaterial=!0,this.type="MeshBasicMaterial",this.color=new Ot(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.combine=Xa,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(t)}copy(t){return super.copy(t),this.color.copy(t.color),this.map=t.map,this.lightMap=t.lightMap,this.lightMapIntensity=t.lightMapIntensity,this.aoMap=t.aoMap,this.aoMapIntensity=t.aoMapIntensity,this.specularMap=t.specularMap,this.alphaMap=t.alphaMap,this.envMap=t.envMap,this.combine=t.combine,this.reflectivity=t.reflectivity,this.refractionRatio=t.refractionRatio,this.wireframe=t.wireframe,this.wireframeLinewidth=t.wireframeLinewidth,this.wireframeLinecap=t.wireframeLinecap,this.wireframeLinejoin=t.wireframeLinejoin,this.fog=t.fog,this}},Gt=new N,Ci=new Nt,ce=class{constructor(t,e,n=!1){if(Array.isArray(t))throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.isBufferAttribute=!0,this.name="",this.array=t,this.itemSize=e,this.count=t!==void 0?t.length/e:0,this.normalized=n,this.usage=la,this.updateRange={offset:0,count:-1},this.version=0}onUploadCallback(){}set needsUpdate(t){t===!0&&this.version++}setUsage(t){return this.usage=t,this}copy(t){return this.name=t.name,this.array=new t.array.constructor(t.array),this.itemSize=t.itemSize,this.count=t.count,this.normalized=t.normalized,this.usage=t.usage,this}copyAt(t,e,n){t*=this.itemSize,n*=e.itemSize;for(let i=0,s=this.itemSize;i0&&(t.userData=this.userData),this.parameters!==void 0){let c=this.parameters;for(let l in c)c[l]!==void 0&&(t[l]=c[l]);return t}t.data={attributes:{}};let e=this.index;e!==null&&(t.data.index={type:e.array.constructor.name,array:Array.prototype.slice.call(e.array)});let n=this.attributes;for(let c in n){let l=n[c];t.data.attributes[c]=l.toJSON(t.data)}let i={},s=!1;for(let c in this.morphAttributes){let l=this.morphAttributes[c],h=[];for(let f=0,u=l.length;f0&&(i[c]=h,s=!0)}s&&(t.data.morphAttributes=i,t.data.morphTargetsRelative=this.morphTargetsRelative);let o=this.groups;o.length>0&&(t.data.groups=JSON.parse(JSON.stringify(o)));let a=this.boundingSphere;return a!==null&&(t.data.boundingSphere={center:a.center.toArray(),radius:a.radius}),t}clone(){return new this.constructor().copy(this)}copy(t){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;let e={};this.name=t.name;let n=t.index;n!==null&&this.setIndex(n.clone(e));let i=t.attributes;for(let l in i){let h=i[l];this.setAttribute(l,h.clone(e))}let s=t.morphAttributes;for(let l in s){let h=[],f=s[l];for(let u=0,m=f.length;u0){let i=e[n[0]];if(i!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let s=0,o=i.length;se.far?null:{distance:l,point:Di.clone(),object:r}}function Ni(r,t,e,n,i,s,o,a,c){r.getVertexPosition(o,ri),r.getVertexPosition(a,ai),r.getVertexPosition(c,oi);let l=Rl(r,t,e,n,ri,ai,oi,Os);if(l){i&&(Ri.fromBufferAttribute(i,o),Li.fromBufferAttribute(i,a),Ii.fromBufferAttribute(i,c),l.uv=xe.getUV(Os,ri,ai,oi,Ri,Li,Ii,new Nt)),s&&(Ri.fromBufferAttribute(s,o),Li.fromBufferAttribute(s,a),Ii.fromBufferAttribute(s,c),l.uv2=xe.getUV(Os,ri,ai,oi,Ri,Li,Ii,new Nt));let h={a:o,b:a,c,normal:new N,materialIndex:0};xe.getNormal(ri,ai,oi,h.normal),l.face=h}return l}var bn=class extends Ye{constructor(t=1,e=1,n=1,i=1,s=1,o=1){super(),this.type="BoxGeometry",this.parameters={width:t,height:e,depth:n,widthSegments:i,heightSegments:s,depthSegments:o};let a=this;i=Math.floor(i),s=Math.floor(s),o=Math.floor(o);let c=[],l=[],h=[],f=[],u=0,m=0;_("z","y","x",-1,-1,n,e,t,o,s,0),_("z","y","x",1,-1,n,e,-t,o,s,1),_("x","z","y",1,1,t,n,e,i,o,2),_("x","z","y",1,-1,t,n,-e,i,o,3),_("x","y","z",1,-1,t,e,n,i,s,4),_("x","y","z",-1,-1,t,e,-n,i,s,5),this.setIndex(c),this.setAttribute("position",new Xe(l,3)),this.setAttribute("normal",new Xe(h,3)),this.setAttribute("uv",new Xe(f,2));function _(p,d,v,T,b,M,A,C,I,x,S){let L=M/I,X=A/x,q=M/2,z=A/2,R=C/2,G=I+1,Y=x+1,j=0,W=0,Q=new N;for(let Z=0;Z0?1:-1,h.push(Q.x,Q.y,Q.z),f.push(F/I),f.push(1-Z/x),j+=1}}for(let Z=0;Z0&&(e.defines=this.defines),e.vertexShader=this.vertexShader,e.fragmentShader=this.fragmentShader;let n={};for(let i in this.extensions)this.extensions[i]===!0&&(n[i]=!0);return Object.keys(n).length>0&&(e.extensions=n),e}},ji=class extends de{constructor(){super(),this.isCamera=!0,this.type="Camera",this.matrixWorldInverse=new qt,this.projectionMatrix=new qt,this.projectionMatrixInverse=new qt}copy(t,e){return super.copy(t,e),this.matrixWorldInverse.copy(t.matrixWorldInverse),this.projectionMatrix.copy(t.projectionMatrix),this.projectionMatrixInverse.copy(t.projectionMatrixInverse),this}getWorldDirection(t){this.updateWorldMatrix(!0,!1);let e=this.matrixWorld.elements;return t.set(-e[8],-e[9],-e[10]).normalize()}updateMatrixWorld(t){super.updateMatrixWorld(t),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(t,e){super.updateWorldMatrix(t,e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}clone(){return new this.constructor().copy(this)}},_e=class extends ji{constructor(t=50,e=1,n=.1,i=2e3){super(),this.isPerspectiveCamera=!0,this.type="PerspectiveCamera",this.fov=t,this.zoom=1,this.near=n,this.far=i,this.focus=10,this.aspect=e,this.view=null,this.filmGauge=35,this.filmOffset=0,this.updateProjectionMatrix()}copy(t,e){return super.copy(t,e),this.fov=t.fov,this.zoom=t.zoom,this.near=t.near,this.far=t.far,this.focus=t.focus,this.aspect=t.aspect,this.view=t.view===null?null:Object.assign({},t.view),this.filmGauge=t.filmGauge,this.filmOffset=t.filmOffset,this}setFocalLength(t){let e=.5*this.getFilmHeight()/t;this.fov=Gi*2*Math.atan(e),this.updateProjectionMatrix()}getFocalLength(){let t=Math.tan(ui*.5*this.fov);return .5*this.getFilmHeight()/t}getEffectiveFOV(){return Gi*2*Math.atan(Math.tan(ui*.5*this.fov)/this.zoom)}getFilmWidth(){return this.filmGauge*Math.min(this.aspect,1)}getFilmHeight(){return this.filmGauge/Math.max(this.aspect,1)}setViewOffset(t,e,n,i,s,o){this.aspect=t/e,this.view===null&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=t,this.view.fullHeight=e,this.view.offsetX=n,this.view.offsetY=i,this.view.width=s,this.view.height=o,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){let t=this.near,e=t*Math.tan(ui*.5*this.fov)/this.zoom,n=2*e,i=this.aspect*n,s=-.5*i,o=this.view;if(this.view!==null&&this.view.enabled){let c=o.fullWidth,l=o.fullHeight;s+=o.offsetX*i/c,e-=o.offsetY*n/l,i*=o.width/c,n*=o.height/l}let a=this.filmOffset;a!==0&&(s+=t*a/this.getFilmWidth()),this.projectionMatrix.makePerspective(s,s+i,e,e-n,t,this.far),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(t){let e=super.toJSON(t);return e.object.fov=this.fov,e.object.zoom=this.zoom,e.object.near=this.near,e.object.far=this.far,e.object.focus=this.focus,e.object.aspect=this.aspect,this.view!==null&&(e.object.view=Object.assign({},this.view)),e.object.filmGauge=this.filmGauge,e.object.filmOffset=this.filmOffset,e}},Fn=-90,zn=1,Ks=class extends de{constructor(t,e,n){super(),this.type="CubeCamera",this.renderTarget=n;let i=new _e(Fn,zn,t,e);i.layers=this.layers,i.up.set(0,1,0),i.lookAt(1,0,0),this.add(i);let s=new _e(Fn,zn,t,e);s.layers=this.layers,s.up.set(0,1,0),s.lookAt(-1,0,0),this.add(s);let o=new _e(Fn,zn,t,e);o.layers=this.layers,o.up.set(0,0,-1),o.lookAt(0,1,0),this.add(o);let a=new _e(Fn,zn,t,e);a.layers=this.layers,a.up.set(0,0,1),a.lookAt(0,-1,0),this.add(a);let c=new _e(Fn,zn,t,e);c.layers=this.layers,c.up.set(0,1,0),c.lookAt(0,0,1),this.add(c);let l=new _e(Fn,zn,t,e);l.layers=this.layers,l.up.set(0,1,0),l.lookAt(0,0,-1),this.add(l)}update(t,e){this.parent===null&&this.updateMatrixWorld();let n=this.renderTarget,[i,s,o,a,c,l]=this.children,h=t.getRenderTarget(),f=t.toneMapping,u=t.xr.enabled;t.toneMapping=We,t.xr.enabled=!1;let m=n.texture.generateMipmaps;n.texture.generateMipmaps=!1,t.setRenderTarget(n,0),t.render(e,i),t.setRenderTarget(n,1),t.render(e,s),t.setRenderTarget(n,2),t.render(e,o),t.setRenderTarget(n,3),t.render(e,a),t.setRenderTarget(n,4),t.render(e,c),n.texture.generateMipmaps=m,t.setRenderTarget(n,5),t.render(e,l),t.setRenderTarget(h),t.toneMapping=f,t.xr.enabled=u,n.texture.needsPMREMUpdate=!0}},Qi=class extends le{constructor(t,e,n,i,s,o,a,c,l,h){t=t!==void 0?t:[],e=e!==void 0?e:Xn,super(t,e,n,i,s,o,a,c,l,h),this.isCubeTexture=!0,this.flipY=!1}get images(){return this.image}set images(t){this.image=t}},js=class extends qe{constructor(t=1,e={}){super(t,t,e),this.isWebGLCubeRenderTarget=!0;let n={width:t,height:t,depth:1},i=[n,n,n,n,n,n];this.texture=new Qi(i,e.mapping,e.wrapS,e.wrapT,e.magFilter,e.minFilter,e.format,e.type,e.anisotropy,e.encoding),this.texture.isRenderTargetTexture=!0,this.texture.generateMipmaps=e.generateMipmaps!==void 0?e.generateMipmaps:!1,this.texture.minFilter=e.minFilter!==void 0?e.minFilter:Se}fromEquirectangularTexture(t,e){this.texture.type=e.type,this.texture.encoding=e.encoding,this.texture.generateMipmaps=e.generateMipmaps,this.texture.minFilter=e.minFilter,this.texture.magFilter=e.magFilter;let n={uniforms:{tEquirect:{value:null}},vertexShader:`\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\tvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\n\t\t\t\t\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n\n\t\t\t\t}\n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvWorldDirection = transformDirection( position, modelMatrix );\n\n\t\t\t\t\t#include \n\t\t\t\t\t#include \n\n\t\t\t\t}\n\t\t\t`,fragmentShader:`\n\n\t\t\t\tuniform sampler2D tEquirect;\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\t#include \n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvec3 direction = normalize( vWorldDirection );\n\n\t\t\t\t\tvec2 sampleUV = equirectUv( direction );\n\n\t\t\t\t\tgl_FragColor = texture2D( tEquirect, sampleUV );\n\n\t\t\t\t}\n\t\t\t`},i=new bn(5,5,5),s=new Ze({name:"CubemapFromEquirect",uniforms:$n(n.uniforms),vertexShader:n.vertexShader,fragmentShader:n.fragmentShader,side:ye,blending:en});s.uniforms.tEquirect.value=e;let o=new Ne(i,s),a=e.minFilter;return e.minFilter===pi&&(e.minFilter=Se),new Ks(1,10,this).update(t,o),e.minFilter=a,o.geometry.dispose(),o.material.dispose(),this}clear(t,e,n,i){let s=t.getRenderTarget();for(let o=0;o<6;o++)t.setRenderTarget(this,o),t.clear(e,n,i);t.setRenderTarget(s)}},Us=new N,Fl=new N,zl=new oe,He=class{constructor(t=new N(1,0,0),e=0){this.isPlane=!0,this.normal=t,this.constant=e}set(t,e){return this.normal.copy(t),this.constant=e,this}setComponents(t,e,n,i){return this.normal.set(t,e,n),this.constant=i,this}setFromNormalAndCoplanarPoint(t,e){return this.normal.copy(t),this.constant=-e.dot(this.normal),this}setFromCoplanarPoints(t,e,n){let i=Us.subVectors(n,e).cross(Fl.subVectors(t,e)).normalize();return this.setFromNormalAndCoplanarPoint(i,t),this}copy(t){return this.normal.copy(t.normal),this.constant=t.constant,this}normalize(){let t=1/this.normal.length();return this.normal.multiplyScalar(t),this.constant*=t,this}negate(){return this.constant*=-1,this.normal.negate(),this}distanceToPoint(t){return this.normal.dot(t)+this.constant}distanceToSphere(t){return this.distanceToPoint(t.center)-t.radius}projectPoint(t,e){return e.copy(this.normal).multiplyScalar(-this.distanceToPoint(t)).add(t)}intersectLine(t,e){let n=t.delta(Us),i=this.normal.dot(n);if(i===0)return this.distanceToPoint(t.start)===0?e.copy(t.start):null;let s=-(t.start.dot(this.normal)+this.constant)/i;return s<0||s>1?null:e.copy(n).multiplyScalar(s).add(t.start)}intersectsLine(t){let e=this.distanceToPoint(t.start),n=this.distanceToPoint(t.end);return e<0&&n>0||n<0&&e>0}intersectsBox(t){return t.intersectsPlane(this)}intersectsSphere(t){return t.intersectsPlane(this)}coplanarPoint(t){return t.copy(this.normal).multiplyScalar(-this.constant)}applyMatrix4(t,e){let n=e||zl.getNormalMatrix(t),i=this.coplanarPoint(Us).applyMatrix4(t),s=this.normal.applyMatrix3(n).normalize();return this.constant=-i.dot(s),this}translate(t){return this.constant-=t.dot(this.normal),this}equals(t){return t.normal.equals(this.normal)&&t.constant===this.constant}clone(){return new this.constructor().copy(this)}},On=new _i,Fi=new N,ts=class{constructor(t=new He,e=new He,n=new He,i=new He,s=new He,o=new He){this.planes=[t,e,n,i,s,o]}set(t,e,n,i,s,o){let a=this.planes;return a[0].copy(t),a[1].copy(e),a[2].copy(n),a[3].copy(i),a[4].copy(s),a[5].copy(o),this}copy(t){let e=this.planes;for(let n=0;n<6;n++)e[n].copy(t.planes[n]);return this}setFromProjectionMatrix(t){let e=this.planes,n=t.elements,i=n[0],s=n[1],o=n[2],a=n[3],c=n[4],l=n[5],h=n[6],f=n[7],u=n[8],m=n[9],_=n[10],p=n[11],d=n[12],v=n[13],T=n[14],b=n[15];return e[0].setComponents(a-i,f-c,p-u,b-d).normalize(),e[1].setComponents(a+i,f+c,p+u,b+d).normalize(),e[2].setComponents(a+s,f+l,p+m,b+v).normalize(),e[3].setComponents(a-s,f-l,p-m,b-v).normalize(),e[4].setComponents(a-o,f-h,p-_,b-T).normalize(),e[5].setComponents(a+o,f+h,p+_,b+T).normalize(),this}intersectsObject(t){let e=t.geometry;return e.boundingSphere===null&&e.computeBoundingSphere(),On.copy(e.boundingSphere).applyMatrix4(t.matrixWorld),this.intersectsSphere(On)}intersectsSprite(t){return On.center.set(0,0,0),On.radius=.7071067811865476,On.applyMatrix4(t.matrixWorld),this.intersectsSphere(On)}intersectsSphere(t){let e=this.planes,n=t.center,i=-t.radius;for(let s=0;s<6;s++)if(e[s].distanceToPoint(n)0?t.max.x:t.min.x,Fi.y=i.normal.y>0?t.max.y:t.min.y,Fi.z=i.normal.z>0?t.max.z:t.min.z,i.distanceToPoint(Fi)<0)return!1}return!0}containsPoint(t){let e=this.planes;for(let n=0;n<6;n++)if(e[n].distanceToPoint(t)<0)return!1;return!0}clone(){return new this.constructor().copy(this)}};function ja(){let r=null,t=!1,e=null,n=null;function i(s,o){e(s,o),n=r.requestAnimationFrame(i)}return{start:function(){t!==!0&&e!==null&&(n=r.requestAnimationFrame(i),t=!0)},stop:function(){r.cancelAnimationFrame(n),t=!1},setAnimationLoop:function(s){e=s},setContext:function(s){r=s}}}function Ol(r,t){let e=t.isWebGL2,n=new WeakMap;function i(l,h){let f=l.array,u=l.usage,m=r.createBuffer();r.bindBuffer(h,m),r.bufferData(h,f,u),l.onUploadCallback();let _;if(f instanceof Float32Array)_=5126;else if(f instanceof Uint16Array)if(l.isFloat16BufferAttribute)if(e)_=5131;else throw new Error("THREE.WebGLAttributes: Usage of Float16BufferAttribute requires WebGL2.");else _=5123;else if(f instanceof Int16Array)_=5122;else if(f instanceof Uint32Array)_=5125;else if(f instanceof Int32Array)_=5124;else if(f instanceof Int8Array)_=5120;else if(f instanceof Uint8Array)_=5121;else if(f instanceof Uint8ClampedArray)_=5121;else throw new Error("THREE.WebGLAttributes: Unsupported buffer data format: "+f);return{buffer:m,type:_,bytesPerElement:f.BYTES_PER_ELEMENT,version:l.version}}function s(l,h,f){let u=h.array,m=h.updateRange;r.bindBuffer(f,l),m.count===-1?r.bufferSubData(f,0,u):(e?r.bufferSubData(f,m.offset*u.BYTES_PER_ELEMENT,u,m.offset,m.count):r.bufferSubData(f,m.offset*u.BYTES_PER_ELEMENT,u.subarray(m.offset,m.offset+m.count)),m.count=-1),h.onUploadCallback()}function o(l){return l.isInterleavedBufferAttribute&&(l=l.data),n.get(l)}function a(l){l.isInterleavedBufferAttribute&&(l=l.data);let h=n.get(l);h&&(r.deleteBuffer(h.buffer),n.delete(l))}function c(l,h){if(l.isGLBufferAttribute){let u=n.get(l);(!u||u.version 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v;\n\treturn cross( v1, v2 ) * theta_sintheta;\n}\nvec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) {\n\tvec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ];\n\tvec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ];\n\tvec3 lightNormal = cross( v1, v2 );\n\tif( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 );\n\tvec3 T1, T2;\n\tT1 = normalize( V - N * dot( V, N ) );\n\tT2 = - cross( N, T1 );\n\tmat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) );\n\tvec3 coords[ 4 ];\n\tcoords[ 0 ] = mat * ( rectCoords[ 0 ] - P );\n\tcoords[ 1 ] = mat * ( rectCoords[ 1 ] - P );\n\tcoords[ 2 ] = mat * ( rectCoords[ 2 ] - P );\n\tcoords[ 3 ] = mat * ( rectCoords[ 3 ] - P );\n\tcoords[ 0 ] = normalize( coords[ 0 ] );\n\tcoords[ 1 ] = normalize( coords[ 1 ] );\n\tcoords[ 2 ] = normalize( coords[ 2 ] );\n\tcoords[ 3 ] = normalize( coords[ 3 ] );\n\tvec3 vectorFormFactor = vec3( 0.0 );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );\n\tfloat result = LTC_ClippedSphereFormFactor( vectorFormFactor );\n\treturn vec3( result );\n}\nfloat G_BlinnPhong_Implicit( ) {\n\treturn 0.25;\n}\nfloat D_BlinnPhong( const in float shininess, const in float dotNH ) {\n\treturn RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess );\n}\nvec3 BRDF_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float shininess ) {\n\tvec3 halfDir = normalize( lightDir + viewDir );\n\tfloat dotNH = saturate( dot( normal, halfDir ) );\n\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\n\tvec3 F = F_Schlick( specularColor, 1.0, dotVH );\n\tfloat G = G_BlinnPhong_Implicit( );\n\tfloat D = D_BlinnPhong( shininess, dotNH );\n\treturn F * ( G * D );\n}\n#if defined( USE_SHEEN )\nfloat D_Charlie( float roughness, float dotNH ) {\n\tfloat alpha = pow2( roughness );\n\tfloat invAlpha = 1.0 / alpha;\n\tfloat cos2h = dotNH * dotNH;\n\tfloat sin2h = max( 1.0 - cos2h, 0.0078125 );\n\treturn ( 2.0 + invAlpha ) * pow( sin2h, invAlpha * 0.5 ) / ( 2.0 * PI );\n}\nfloat V_Neubelt( float dotNV, float dotNL ) {\n\treturn saturate( 1.0 / ( 4.0 * ( dotNL + dotNV - dotNL * dotNV ) ) );\n}\nvec3 BRDF_Sheen( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, vec3 sheenColor, const in float sheenRoughness ) {\n\tvec3 halfDir = normalize( lightDir + viewDir );\n\tfloat dotNL = saturate( dot( normal, lightDir ) );\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\tfloat dotNH = saturate( dot( normal, halfDir ) );\n\tfloat D = D_Charlie( sheenRoughness, dotNH );\n\tfloat V = V_Neubelt( dotNV, dotNL );\n\treturn sheenColor * ( D * V );\n}\n#endif`,Yl=`#ifdef USE_IRIDESCENCE\n\tconst mat3 XYZ_TO_REC709 = mat3(\n\t\t 3.2404542, -0.9692660, 0.0556434,\n\t\t-1.5371385, 1.8760108, -0.2040259,\n\t\t-0.4985314, 0.0415560, 1.0572252\n\t);\n\tvec3 Fresnel0ToIor( vec3 fresnel0 ) {\n\t\tvec3 sqrtF0 = sqrt( fresnel0 );\n\t\treturn ( vec3( 1.0 ) + sqrtF0 ) / ( vec3( 1.0 ) - sqrtF0 );\n\t}\n\tvec3 IorToFresnel0( vec3 transmittedIor, float incidentIor ) {\n\t\treturn pow2( ( transmittedIor - vec3( incidentIor ) ) / ( transmittedIor + vec3( incidentIor ) ) );\n\t}\n\tfloat IorToFresnel0( float transmittedIor, float incidentIor ) {\n\t\treturn pow2( ( transmittedIor - incidentIor ) / ( transmittedIor + incidentIor ));\n\t}\n\tvec3 evalSensitivity( float OPD, vec3 shift ) {\n\t\tfloat phase = 2.0 * PI * OPD * 1.0e-9;\n\t\tvec3 val = vec3( 5.4856e-13, 4.4201e-13, 5.2481e-13 );\n\t\tvec3 pos = vec3( 1.6810e+06, 1.7953e+06, 2.2084e+06 );\n\t\tvec3 var = vec3( 4.3278e+09, 9.3046e+09, 6.6121e+09 );\n\t\tvec3 xyz = val * sqrt( 2.0 * PI * var ) * cos( pos * phase + shift ) * exp( - pow2( phase ) * var );\n\t\txyz.x += 9.7470e-14 * sqrt( 2.0 * PI * 4.5282e+09 ) * cos( 2.2399e+06 * phase + shift[ 0 ] ) * exp( - 4.5282e+09 * pow2( phase ) );\n\t\txyz /= 1.0685e-7;\n\t\tvec3 rgb = XYZ_TO_REC709 * xyz;\n\t\treturn rgb;\n\t}\n\tvec3 evalIridescence( float outsideIOR, float eta2, float cosTheta1, float thinFilmThickness, vec3 baseF0 ) {\n\t\tvec3 I;\n\t\tfloat iridescenceIOR = mix( outsideIOR, eta2, smoothstep( 0.0, 0.03, thinFilmThickness ) );\n\t\tfloat sinTheta2Sq = pow2( outsideIOR / iridescenceIOR ) * ( 1.0 - pow2( cosTheta1 ) );\n\t\tfloat cosTheta2Sq = 1.0 - sinTheta2Sq;\n\t\tif ( cosTheta2Sq < 0.0 ) {\n\t\t\t return vec3( 1.0 );\n\t\t}\n\t\tfloat cosTheta2 = sqrt( cosTheta2Sq );\n\t\tfloat R0 = IorToFresnel0( iridescenceIOR, outsideIOR );\n\t\tfloat R12 = F_Schlick( R0, 1.0, cosTheta1 );\n\t\tfloat R21 = R12;\n\t\tfloat T121 = 1.0 - R12;\n\t\tfloat phi12 = 0.0;\n\t\tif ( iridescenceIOR < outsideIOR ) phi12 = PI;\n\t\tfloat phi21 = PI - phi12;\n\t\tvec3 baseIOR = Fresnel0ToIor( clamp( baseF0, 0.0, 0.9999 ) );\t\tvec3 R1 = IorToFresnel0( baseIOR, iridescenceIOR );\n\t\tvec3 R23 = F_Schlick( R1, 1.0, cosTheta2 );\n\t\tvec3 phi23 = vec3( 0.0 );\n\t\tif ( baseIOR[ 0 ] < iridescenceIOR ) phi23[ 0 ] = PI;\n\t\tif ( baseIOR[ 1 ] < iridescenceIOR ) phi23[ 1 ] = PI;\n\t\tif ( baseIOR[ 2 ] < iridescenceIOR ) phi23[ 2 ] = PI;\n\t\tfloat OPD = 2.0 * iridescenceIOR * thinFilmThickness * cosTheta2;\n\t\tvec3 phi = vec3( phi21 ) + phi23;\n\t\tvec3 R123 = clamp( R12 * R23, 1e-5, 0.9999 );\n\t\tvec3 r123 = sqrt( R123 );\n\t\tvec3 Rs = pow2( T121 ) * R23 / ( vec3( 1.0 ) - R123 );\n\t\tvec3 C0 = R12 + Rs;\n\t\tI = C0;\n\t\tvec3 Cm = Rs - T121;\n\t\tfor ( int m = 1; m <= 2; ++ m ) {\n\t\t\tCm *= r123;\n\t\t\tvec3 Sm = 2.0 * evalSensitivity( float( m ) * OPD, float( m ) * phi );\n\t\t\tI += Cm * Sm;\n\t\t}\n\t\treturn max( I, vec3( 0.0 ) );\n\t}\n#endif`,Zl=`#ifdef USE_BUMPMAP\n\tuniform sampler2D bumpMap;\n\tuniform float bumpScale;\n\tvec2 dHdxy_fwd() {\n\t\tvec2 dSTdx = dFdx( vUv );\n\t\tvec2 dSTdy = dFdy( vUv );\n\t\tfloat Hll = bumpScale * texture2D( bumpMap, vUv ).x;\n\t\tfloat dBx = bumpScale * texture2D( bumpMap, vUv + dSTdx ).x - Hll;\n\t\tfloat dBy = bumpScale * texture2D( bumpMap, vUv + dSTdy ).x - Hll;\n\t\treturn vec2( dBx, dBy );\n\t}\n\tvec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy, float faceDirection ) {\n\t\tvec3 vSigmaX = dFdx( surf_pos.xyz );\n\t\tvec3 vSigmaY = dFdy( surf_pos.xyz );\n\t\tvec3 vN = surf_norm;\n\t\tvec3 R1 = cross( vSigmaY, vN );\n\t\tvec3 R2 = cross( vN, vSigmaX );\n\t\tfloat fDet = dot( vSigmaX, R1 ) * faceDirection;\n\t\tvec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );\n\t\treturn normalize( abs( fDet ) * surf_norm - vGrad );\n\t}\n#endif`,Jl=`#if NUM_CLIPPING_PLANES > 0\n\tvec4 plane;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\n\t\tplane = clippingPlanes[ i ];\n\t\tif ( dot( vClipPosition, plane.xyz ) > plane.w ) discard;\n\t}\n\t#pragma unroll_loop_end\n\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\n\t\tbool clipped = true;\n\t\t#pragma unroll_loop_start\n\t\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\n\t\t\tplane = clippingPlanes[ i ];\n\t\t\tclipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped;\n\t\t}\n\t\t#pragma unroll_loop_end\n\t\tif ( clipped ) discard;\n\t#endif\n#endif`,$l=`#if NUM_CLIPPING_PLANES > 0\n\tvarying vec3 vClipPosition;\n\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\n#endif`,Kl=`#if NUM_CLIPPING_PLANES > 0\n\tvarying vec3 vClipPosition;\n#endif`,jl=`#if NUM_CLIPPING_PLANES > 0\n\tvClipPosition = - mvPosition.xyz;\n#endif`,Ql=`#if defined( USE_COLOR_ALPHA )\n\tdiffuseColor *= vColor;\n#elif defined( USE_COLOR )\n\tdiffuseColor.rgb *= vColor;\n#endif`,tc=`#if defined( USE_COLOR_ALPHA )\n\tvarying vec4 vColor;\n#elif defined( USE_COLOR )\n\tvarying vec3 vColor;\n#endif`,ec=`#if defined( USE_COLOR_ALPHA )\n\tvarying vec4 vColor;\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\n\tvarying vec3 vColor;\n#endif`,nc=`#if defined( USE_COLOR_ALPHA )\n\tvColor = vec4( 1.0 );\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\n\tvColor = vec3( 1.0 );\n#endif\n#ifdef USE_COLOR\n\tvColor *= color;\n#endif\n#ifdef USE_INSTANCING_COLOR\n\tvColor.xyz *= instanceColor.xyz;\n#endif`,ic=`#define PI 3.141592653589793\n#define PI2 6.283185307179586\n#define PI_HALF 1.5707963267948966\n#define RECIPROCAL_PI 0.3183098861837907\n#define RECIPROCAL_PI2 0.15915494309189535\n#define EPSILON 1e-6\n#ifndef saturate\n#define saturate( a ) clamp( a, 0.0, 1.0 )\n#endif\n#define whiteComplement( a ) ( 1.0 - saturate( a ) )\nfloat pow2( const in float x ) { return x*x; }\nvec3 pow2( const in vec3 x ) { return x*x; }\nfloat pow3( const in float x ) { return x*x*x; }\nfloat pow4( const in float x ) { float x2 = x*x; return x2*x2; }\nfloat max3( const in vec3 v ) { return max( max( v.x, v.y ), v.z ); }\nfloat average( const in vec3 v ) { return dot( v, vec3( 0.3333333 ) ); }\nhighp float rand( const in vec2 uv ) {\n\tconst highp float a = 12.9898, b = 78.233, c = 43758.5453;\n\thighp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );\n\treturn fract( sin( sn ) * c );\n}\n#ifdef HIGH_PRECISION\n\tfloat precisionSafeLength( vec3 v ) { return length( v ); }\n#else\n\tfloat precisionSafeLength( vec3 v ) {\n\t\tfloat maxComponent = max3( abs( v ) );\n\t\treturn length( v / maxComponent ) * maxComponent;\n\t}\n#endif\nstruct IncidentLight {\n\tvec3 color;\n\tvec3 direction;\n\tbool visible;\n};\nstruct ReflectedLight {\n\tvec3 directDiffuse;\n\tvec3 directSpecular;\n\tvec3 indirectDiffuse;\n\tvec3 indirectSpecular;\n};\nstruct GeometricContext {\n\tvec3 position;\n\tvec3 normal;\n\tvec3 viewDir;\n#ifdef USE_CLEARCOAT\n\tvec3 clearcoatNormal;\n#endif\n};\nvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n}\nvec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {\n\treturn normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\n}\nmat3 transposeMat3( const in mat3 m ) {\n\tmat3 tmp;\n\ttmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x );\n\ttmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y );\n\ttmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z );\n\treturn tmp;\n}\nfloat luminance( const in vec3 rgb ) {\n\tconst vec3 weights = vec3( 0.2126729, 0.7151522, 0.0721750 );\n\treturn dot( weights, rgb );\n}\nbool isPerspectiveMatrix( mat4 m ) {\n\treturn m[ 2 ][ 3 ] == - 1.0;\n}\nvec2 equirectUv( in vec3 dir ) {\n\tfloat u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5;\n\tfloat v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\n\treturn vec2( u, v );\n}`,sc=`#ifdef ENVMAP_TYPE_CUBE_UV\n\t#define cubeUV_minMipLevel 4.0\n\t#define cubeUV_minTileSize 16.0\n\tfloat getFace( vec3 direction ) {\n\t\tvec3 absDirection = abs( direction );\n\t\tfloat face = - 1.0;\n\t\tif ( absDirection.x > absDirection.z ) {\n\t\t\tif ( absDirection.x > absDirection.y )\n\t\t\t\tface = direction.x > 0.0 ? 0.0 : 3.0;\n\t\t\telse\n\t\t\t\tface = direction.y > 0.0 ? 1.0 : 4.0;\n\t\t} else {\n\t\t\tif ( absDirection.z > absDirection.y )\n\t\t\t\tface = direction.z > 0.0 ? 2.0 : 5.0;\n\t\t\telse\n\t\t\t\tface = direction.y > 0.0 ? 1.0 : 4.0;\n\t\t}\n\t\treturn face;\n\t}\n\tvec2 getUV( vec3 direction, float face ) {\n\t\tvec2 uv;\n\t\tif ( face == 0.0 ) {\n\t\t\tuv = vec2( direction.z, direction.y ) / abs( direction.x );\n\t\t} else if ( face == 1.0 ) {\n\t\t\tuv = vec2( - direction.x, - direction.z ) / abs( direction.y );\n\t\t} else if ( face == 2.0 ) {\n\t\t\tuv = vec2( - direction.x, direction.y ) / abs( direction.z );\n\t\t} else if ( face == 3.0 ) {\n\t\t\tuv = vec2( - direction.z, direction.y ) / abs( direction.x );\n\t\t} else if ( face == 4.0 ) {\n\t\t\tuv = vec2( - direction.x, direction.z ) / abs( direction.y );\n\t\t} else {\n\t\t\tuv = vec2( direction.x, direction.y ) / abs( direction.z );\n\t\t}\n\t\treturn 0.5 * ( uv + 1.0 );\n\t}\n\tvec3 bilinearCubeUV( sampler2D envMap, vec3 direction, float mipInt ) {\n\t\tfloat face = getFace( direction );\n\t\tfloat filterInt = max( cubeUV_minMipLevel - mipInt, 0.0 );\n\t\tmipInt = max( mipInt, cubeUV_minMipLevel );\n\t\tfloat faceSize = exp2( mipInt );\n\t\thighp vec2 uv = getUV( direction, face ) * ( faceSize - 2.0 ) + 1.0;\n\t\tif ( face > 2.0 ) {\n\t\t\tuv.y += faceSize;\n\t\t\tface -= 3.0;\n\t\t}\n\t\tuv.x += face * faceSize;\n\t\tuv.x += filterInt * 3.0 * cubeUV_minTileSize;\n\t\tuv.y += 4.0 * ( exp2( CUBEUV_MAX_MIP ) - faceSize );\n\t\tuv.x *= CUBEUV_TEXEL_WIDTH;\n\t\tuv.y *= CUBEUV_TEXEL_HEIGHT;\n\t\t#ifdef texture2DGradEXT\n\t\t\treturn texture2DGradEXT( envMap, uv, vec2( 0.0 ), vec2( 0.0 ) ).rgb;\n\t\t#else\n\t\t\treturn texture2D( envMap, uv ).rgb;\n\t\t#endif\n\t}\n\t#define cubeUV_r0 1.0\n\t#define cubeUV_v0 0.339\n\t#define cubeUV_m0 - 2.0\n\t#define cubeUV_r1 0.8\n\t#define cubeUV_v1 0.276\n\t#define cubeUV_m1 - 1.0\n\t#define cubeUV_r4 0.4\n\t#define cubeUV_v4 0.046\n\t#define cubeUV_m4 2.0\n\t#define cubeUV_r5 0.305\n\t#define cubeUV_v5 0.016\n\t#define cubeUV_m5 3.0\n\t#define cubeUV_r6 0.21\n\t#define cubeUV_v6 0.0038\n\t#define cubeUV_m6 4.0\n\tfloat roughnessToMip( float roughness ) {\n\t\tfloat mip = 0.0;\n\t\tif ( roughness >= cubeUV_r1 ) {\n\t\t\tmip = ( cubeUV_r0 - roughness ) * ( cubeUV_m1 - cubeUV_m0 ) / ( cubeUV_r0 - cubeUV_r1 ) + cubeUV_m0;\n\t\t} else if ( roughness >= cubeUV_r4 ) {\n\t\t\tmip = ( cubeUV_r1 - roughness ) * ( cubeUV_m4 - cubeUV_m1 ) / ( cubeUV_r1 - cubeUV_r4 ) + cubeUV_m1;\n\t\t} else if ( roughness >= cubeUV_r5 ) {\n\t\t\tmip = ( cubeUV_r4 - roughness ) * ( cubeUV_m5 - cubeUV_m4 ) / ( cubeUV_r4 - cubeUV_r5 ) + cubeUV_m4;\n\t\t} else if ( roughness >= cubeUV_r6 ) {\n\t\t\tmip = ( cubeUV_r5 - roughness ) * ( cubeUV_m6 - cubeUV_m5 ) / ( cubeUV_r5 - cubeUV_r6 ) + cubeUV_m5;\n\t\t} else {\n\t\t\tmip = - 2.0 * log2( 1.16 * roughness );\t\t}\n\t\treturn mip;\n\t}\n\tvec4 textureCubeUV( sampler2D envMap, vec3 sampleDir, float roughness ) {\n\t\tfloat mip = clamp( roughnessToMip( roughness ), cubeUV_m0, CUBEUV_MAX_MIP );\n\t\tfloat mipF = fract( mip );\n\t\tfloat mipInt = floor( mip );\n\t\tvec3 color0 = bilinearCubeUV( envMap, sampleDir, mipInt );\n\t\tif ( mipF == 0.0 ) {\n\t\t\treturn vec4( color0, 1.0 );\n\t\t} else {\n\t\t\tvec3 color1 = bilinearCubeUV( envMap, sampleDir, mipInt + 1.0 );\n\t\t\treturn vec4( mix( color0, color1, mipF ), 1.0 );\n\t\t}\n\t}\n#endif`,rc=`vec3 transformedNormal = objectNormal;\n#ifdef USE_INSTANCING\n\tmat3 m = mat3( instanceMatrix );\n\ttransformedNormal /= vec3( dot( m[ 0 ], m[ 0 ] ), dot( m[ 1 ], m[ 1 ] ), dot( m[ 2 ], m[ 2 ] ) );\n\ttransformedNormal = m * transformedNormal;\n#endif\ntransformedNormal = normalMatrix * transformedNormal;\n#ifdef FLIP_SIDED\n\ttransformedNormal = - transformedNormal;\n#endif\n#ifdef USE_TANGENT\n\tvec3 transformedTangent = ( modelViewMatrix * vec4( objectTangent, 0.0 ) ).xyz;\n\t#ifdef FLIP_SIDED\n\t\ttransformedTangent = - transformedTangent;\n\t#endif\n#endif`,ac=`#ifdef USE_DISPLACEMENTMAP\n\tuniform sampler2D displacementMap;\n\tuniform float displacementScale;\n\tuniform float displacementBias;\n#endif`,oc=`#ifdef USE_DISPLACEMENTMAP\n\ttransformed += normalize( objectNormal ) * ( texture2D( displacementMap, vUv ).x * displacementScale + displacementBias );\n#endif`,lc=`#ifdef USE_EMISSIVEMAP\n\tvec4 emissiveColor = texture2D( emissiveMap, vUv );\n\ttotalEmissiveRadiance *= emissiveColor.rgb;\n#endif`,cc=`#ifdef USE_EMISSIVEMAP\n\tuniform sampler2D emissiveMap;\n#endif`,hc="gl_FragColor = linearToOutputTexel( gl_FragColor );",uc=`vec4 LinearToLinear( in vec4 value ) {\n\treturn value;\n}\nvec4 LinearTosRGB( in vec4 value ) {\n\treturn vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a );\n}`,dc=`#ifdef USE_ENVMAP\n\t#ifdef ENV_WORLDPOS\n\t\tvec3 cameraToFrag;\n\t\tif ( isOrthographic ) {\n\t\t\tcameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\n\t\t} else {\n\t\t\tcameraToFrag = normalize( vWorldPosition - cameraPosition );\n\t\t}\n\t\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvec3 reflectVec = reflect( cameraToFrag, worldNormal );\n\t\t#else\n\t\t\tvec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio );\n\t\t#endif\n\t#else\n\t\tvec3 reflectVec = vReflect;\n\t#endif\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tvec4 envColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\n\t#else\n\t\tvec4 envColor = vec4( 0.0 );\n\t#endif\n\t#ifdef ENVMAP_BLENDING_MULTIPLY\n\t\toutgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );\n\t#elif defined( ENVMAP_BLENDING_MIX )\n\t\toutgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );\n\t#elif defined( ENVMAP_BLENDING_ADD )\n\t\toutgoingLight += envColor.xyz * specularStrength * reflectivity;\n\t#endif\n#endif`,fc=`#ifdef USE_ENVMAP\n\tuniform float envMapIntensity;\n\tuniform float flipEnvMap;\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tuniform samplerCube envMap;\n\t#else\n\t\tuniform sampler2D envMap;\n\t#endif\n\t\n#endif`,pc=`#ifdef USE_ENVMAP\n\tuniform float reflectivity;\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT )\n\t\t#define ENV_WORLDPOS\n\t#endif\n\t#ifdef ENV_WORLDPOS\n\t\tvarying vec3 vWorldPosition;\n\t\tuniform float refractionRatio;\n\t#else\n\t\tvarying vec3 vReflect;\n\t#endif\n#endif`,mc=`#ifdef USE_ENVMAP\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT )\n\t\t#define ENV_WORLDPOS\n\t#endif\n\t#ifdef ENV_WORLDPOS\n\t\t\n\t\tvarying vec3 vWorldPosition;\n\t#else\n\t\tvarying vec3 vReflect;\n\t\tuniform float refractionRatio;\n\t#endif\n#endif`,gc=`#ifdef USE_ENVMAP\n\t#ifdef ENV_WORLDPOS\n\t\tvWorldPosition = worldPosition.xyz;\n\t#else\n\t\tvec3 cameraToVertex;\n\t\tif ( isOrthographic ) {\n\t\t\tcameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\n\t\t} else {\n\t\t\tcameraToVertex = normalize( worldPosition.xyz - cameraPosition );\n\t\t}\n\t\tvec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvReflect = reflect( cameraToVertex, worldNormal );\n\t\t#else\n\t\t\tvReflect = refract( cameraToVertex, worldNormal, refractionRatio );\n\t\t#endif\n\t#endif\n#endif`,_c=`#ifdef USE_FOG\n\tvFogDepth = - mvPosition.z;\n#endif`,xc=`#ifdef USE_FOG\n\tvarying float vFogDepth;\n#endif`,yc=`#ifdef USE_FOG\n\t#ifdef FOG_EXP2\n\t\tfloat fogFactor = 1.0 - exp( - fogDensity * fogDensity * vFogDepth * vFogDepth );\n\t#else\n\t\tfloat fogFactor = smoothstep( fogNear, fogFar, vFogDepth );\n\t#endif\n\tgl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );\n#endif`,vc=`#ifdef USE_FOG\n\tuniform vec3 fogColor;\n\tvarying float vFogDepth;\n\t#ifdef FOG_EXP2\n\t\tuniform float fogDensity;\n\t#else\n\t\tuniform float fogNear;\n\t\tuniform float fogFar;\n\t#endif\n#endif`,Mc=`#ifdef USE_GRADIENTMAP\n\tuniform sampler2D gradientMap;\n#endif\nvec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {\n\tfloat dotNL = dot( normal, lightDirection );\n\tvec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );\n\t#ifdef USE_GRADIENTMAP\n\t\treturn vec3( texture2D( gradientMap, coord ).r );\n\t#else\n\t\tvec2 fw = fwidth( coord ) * 0.5;\n\t\treturn mix( vec3( 0.7 ), vec3( 1.0 ), smoothstep( 0.7 - fw.x, 0.7 + fw.x, coord.x ) );\n\t#endif\n}`,bc=`#ifdef USE_LIGHTMAP\n\tvec4 lightMapTexel = texture2D( lightMap, vUv2 );\n\tvec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;\n\treflectedLight.indirectDiffuse += lightMapIrradiance;\n#endif`,wc=`#ifdef USE_LIGHTMAP\n\tuniform sampler2D lightMap;\n\tuniform float lightMapIntensity;\n#endif`,Sc=`LambertMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;\nmaterial.specularStrength = specularStrength;`,Tc=`varying vec3 vViewPosition;\nstruct LambertMaterial {\n\tvec3 diffuseColor;\n\tfloat specularStrength;\n};\nvoid RE_Direct_Lambert( const in IncidentLight directLight, const in GeometricContext geometry, const in LambertMaterial material, inout ReflectedLight reflectedLight ) {\n\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\n\tvec3 irradiance = dotNL * directLight.color;\n\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectDiffuse_Lambert( const in vec3 irradiance, const in GeometricContext geometry, const in LambertMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\n#define RE_Direct\t\t\t\tRE_Direct_Lambert\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_Lambert`,Ac=`uniform bool receiveShadow;\nuniform vec3 ambientLightColor;\nuniform vec3 lightProbe[ 9 ];\nvec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {\n\tfloat x = normal.x, y = normal.y, z = normal.z;\n\tvec3 result = shCoefficients[ 0 ] * 0.886227;\n\tresult += shCoefficients[ 1 ] * 2.0 * 0.511664 * y;\n\tresult += shCoefficients[ 2 ] * 2.0 * 0.511664 * z;\n\tresult += shCoefficients[ 3 ] * 2.0 * 0.511664 * x;\n\tresult += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y;\n\tresult += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z;\n\tresult += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 );\n\tresult += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z;\n\tresult += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y );\n\treturn result;\n}\nvec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in vec3 normal ) {\n\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n\tvec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe );\n\treturn irradiance;\n}\nvec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {\n\tvec3 irradiance = ambientLightColor;\n\treturn irradiance;\n}\nfloat getDistanceAttenuation( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {\n\t#if defined ( PHYSICALLY_CORRECT_LIGHTS )\n\t\tfloat distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );\n\t\tif ( cutoffDistance > 0.0 ) {\n\t\t\tdistanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\n\t\t}\n\t\treturn distanceFalloff;\n\t#else\n\t\tif ( cutoffDistance > 0.0 && decayExponent > 0.0 ) {\n\t\t\treturn pow( saturate( - lightDistance / cutoffDistance + 1.0 ), decayExponent );\n\t\t}\n\t\treturn 1.0;\n\t#endif\n}\nfloat getSpotAttenuation( const in float coneCosine, const in float penumbraCosine, const in float angleCosine ) {\n\treturn smoothstep( coneCosine, penumbraCosine, angleCosine );\n}\n#if NUM_DIR_LIGHTS > 0\n\tstruct DirectionalLight {\n\t\tvec3 direction;\n\t\tvec3 color;\n\t};\n\tuniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];\n\tvoid getDirectionalLightInfo( const in DirectionalLight directionalLight, const in GeometricContext geometry, out IncidentLight light ) {\n\t\tlight.color = directionalLight.color;\n\t\tlight.direction = directionalLight.direction;\n\t\tlight.visible = true;\n\t}\n#endif\n#if NUM_POINT_LIGHTS > 0\n\tstruct PointLight {\n\t\tvec3 position;\n\t\tvec3 color;\n\t\tfloat distance;\n\t\tfloat decay;\n\t};\n\tuniform PointLight pointLights[ NUM_POINT_LIGHTS ];\n\tvoid getPointLightInfo( const in PointLight pointLight, const in GeometricContext geometry, out IncidentLight light ) {\n\t\tvec3 lVector = pointLight.position - geometry.position;\n\t\tlight.direction = normalize( lVector );\n\t\tfloat lightDistance = length( lVector );\n\t\tlight.color = pointLight.color;\n\t\tlight.color *= getDistanceAttenuation( lightDistance, pointLight.distance, pointLight.decay );\n\t\tlight.visible = ( light.color != vec3( 0.0 ) );\n\t}\n#endif\n#if NUM_SPOT_LIGHTS > 0\n\tstruct SpotLight {\n\t\tvec3 position;\n\t\tvec3 direction;\n\t\tvec3 color;\n\t\tfloat distance;\n\t\tfloat decay;\n\t\tfloat coneCos;\n\t\tfloat penumbraCos;\n\t};\n\tuniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];\n\tvoid getSpotLightInfo( const in SpotLight spotLight, const in GeometricContext geometry, out IncidentLight light ) {\n\t\tvec3 lVector = spotLight.position - geometry.position;\n\t\tlight.direction = normalize( lVector );\n\t\tfloat angleCos = dot( light.direction, spotLight.direction );\n\t\tfloat spotAttenuation = getSpotAttenuation( spotLight.coneCos, spotLight.penumbraCos, angleCos );\n\t\tif ( spotAttenuation > 0.0 ) {\n\t\t\tfloat lightDistance = length( lVector );\n\t\t\tlight.color = spotLight.color * spotAttenuation;\n\t\t\tlight.color *= getDistanceAttenuation( lightDistance, spotLight.distance, spotLight.decay );\n\t\t\tlight.visible = ( light.color != vec3( 0.0 ) );\n\t\t} else {\n\t\t\tlight.color = vec3( 0.0 );\n\t\t\tlight.visible = false;\n\t\t}\n\t}\n#endif\n#if NUM_RECT_AREA_LIGHTS > 0\n\tstruct RectAreaLight {\n\t\tvec3 color;\n\t\tvec3 position;\n\t\tvec3 halfWidth;\n\t\tvec3 halfHeight;\n\t};\n\tuniform sampler2D ltc_1;\tuniform sampler2D ltc_2;\n\tuniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ];\n#endif\n#if NUM_HEMI_LIGHTS > 0\n\tstruct HemisphereLight {\n\t\tvec3 direction;\n\t\tvec3 skyColor;\n\t\tvec3 groundColor;\n\t};\n\tuniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];\n\tvec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in vec3 normal ) {\n\t\tfloat dotNL = dot( normal, hemiLight.direction );\n\t\tfloat hemiDiffuseWeight = 0.5 * dotNL + 0.5;\n\t\tvec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );\n\t\treturn irradiance;\n\t}\n#endif`,Ec=`#if defined( USE_ENVMAP )\n\tvec3 getIBLIrradiance( const in vec3 normal ) {\n\t\t#if defined( ENVMAP_TYPE_CUBE_UV )\n\t\t\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n\t\t\tvec4 envMapColor = textureCubeUV( envMap, worldNormal, 1.0 );\n\t\t\treturn PI * envMapColor.rgb * envMapIntensity;\n\t\t#else\n\t\t\treturn vec3( 0.0 );\n\t\t#endif\n\t}\n\tvec3 getIBLRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness ) {\n\t\t#if defined( ENVMAP_TYPE_CUBE_UV )\n\t\t\tvec3 reflectVec = reflect( - viewDir, normal );\n\t\t\treflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );\n\t\t\treflectVec = inverseTransformDirection( reflectVec, viewMatrix );\n\t\t\tvec4 envMapColor = textureCubeUV( envMap, reflectVec, roughness );\n\t\t\treturn envMapColor.rgb * envMapIntensity;\n\t\t#else\n\t\t\treturn vec3( 0.0 );\n\t\t#endif\n\t}\n#endif`,Cc=`ToonMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;`,Pc=`varying vec3 vViewPosition;\nstruct ToonMaterial {\n\tvec3 diffuseColor;\n};\nvoid RE_Direct_Toon( const in IncidentLight directLight, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\n\tvec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color;\n\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\n#define RE_Direct\t\t\t\tRE_Direct_Toon\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_Toon`,Rc=`BlinnPhongMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;\nmaterial.specularColor = specular;\nmaterial.specularShininess = shininess;\nmaterial.specularStrength = specularStrength;`,Lc=`varying vec3 vViewPosition;\nstruct BlinnPhongMaterial {\n\tvec3 diffuseColor;\n\tvec3 specularColor;\n\tfloat specularShininess;\n\tfloat specularStrength;\n};\nvoid RE_Direct_BlinnPhong( const in IncidentLight directLight, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\n\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\n\tvec3 irradiance = dotNL * directLight.color;\n\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n\treflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularShininess ) * material.specularStrength;\n}\nvoid RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\n#define RE_Direct\t\t\t\tRE_Direct_BlinnPhong\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_BlinnPhong`,Ic=`PhysicalMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\nvec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );\nfloat geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );\nmaterial.roughness = max( roughnessFactor, 0.0525 );material.roughness += geometryRoughness;\nmaterial.roughness = min( material.roughness, 1.0 );\n#ifdef IOR\n\tmaterial.ior = ior;\n\t#ifdef SPECULAR\n\t\tfloat specularIntensityFactor = specularIntensity;\n\t\tvec3 specularColorFactor = specularColor;\n\t\t#ifdef USE_SPECULARINTENSITYMAP\n\t\t\tspecularIntensityFactor *= texture2D( specularIntensityMap, vUv ).a;\n\t\t#endif\n\t\t#ifdef USE_SPECULARCOLORMAP\n\t\t\tspecularColorFactor *= texture2D( specularColorMap, vUv ).rgb;\n\t\t#endif\n\t\tmaterial.specularF90 = mix( specularIntensityFactor, 1.0, metalnessFactor );\n\t#else\n\t\tfloat specularIntensityFactor = 1.0;\n\t\tvec3 specularColorFactor = vec3( 1.0 );\n\t\tmaterial.specularF90 = 1.0;\n\t#endif\n\tmaterial.specularColor = mix( min( pow2( ( material.ior - 1.0 ) / ( material.ior + 1.0 ) ) * specularColorFactor, vec3( 1.0 ) ) * specularIntensityFactor, diffuseColor.rgb, metalnessFactor );\n#else\n\tmaterial.specularColor = mix( vec3( 0.04 ), diffuseColor.rgb, metalnessFactor );\n\tmaterial.specularF90 = 1.0;\n#endif\n#ifdef USE_CLEARCOAT\n\tmaterial.clearcoat = clearcoat;\n\tmaterial.clearcoatRoughness = clearcoatRoughness;\n\tmaterial.clearcoatF0 = vec3( 0.04 );\n\tmaterial.clearcoatF90 = 1.0;\n\t#ifdef USE_CLEARCOATMAP\n\t\tmaterial.clearcoat *= texture2D( clearcoatMap, vUv ).x;\n\t#endif\n\t#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n\t\tmaterial.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vUv ).y;\n\t#endif\n\tmaterial.clearcoat = saturate( material.clearcoat );\tmaterial.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 );\n\tmaterial.clearcoatRoughness += geometryRoughness;\n\tmaterial.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 );\n#endif\n#ifdef USE_IRIDESCENCE\n\tmaterial.iridescence = iridescence;\n\tmaterial.iridescenceIOR = iridescenceIOR;\n\t#ifdef USE_IRIDESCENCEMAP\n\t\tmaterial.iridescence *= texture2D( iridescenceMap, vUv ).r;\n\t#endif\n\t#ifdef USE_IRIDESCENCE_THICKNESSMAP\n\t\tmaterial.iridescenceThickness = (iridescenceThicknessMaximum - iridescenceThicknessMinimum) * texture2D( iridescenceThicknessMap, vUv ).g + iridescenceThicknessMinimum;\n\t#else\n\t\tmaterial.iridescenceThickness = iridescenceThicknessMaximum;\n\t#endif\n#endif\n#ifdef USE_SHEEN\n\tmaterial.sheenColor = sheenColor;\n\t#ifdef USE_SHEENCOLORMAP\n\t\tmaterial.sheenColor *= texture2D( sheenColorMap, vUv ).rgb;\n\t#endif\n\tmaterial.sheenRoughness = clamp( sheenRoughness, 0.07, 1.0 );\n\t#ifdef USE_SHEENROUGHNESSMAP\n\t\tmaterial.sheenRoughness *= texture2D( sheenRoughnessMap, vUv ).a;\n\t#endif\n#endif`,Dc=`struct PhysicalMaterial {\n\tvec3 diffuseColor;\n\tfloat roughness;\n\tvec3 specularColor;\n\tfloat specularF90;\n\t#ifdef USE_CLEARCOAT\n\t\tfloat clearcoat;\n\t\tfloat clearcoatRoughness;\n\t\tvec3 clearcoatF0;\n\t\tfloat clearcoatF90;\n\t#endif\n\t#ifdef USE_IRIDESCENCE\n\t\tfloat iridescence;\n\t\tfloat iridescenceIOR;\n\t\tfloat iridescenceThickness;\n\t\tvec3 iridescenceFresnel;\n\t\tvec3 iridescenceF0;\n\t#endif\n\t#ifdef USE_SHEEN\n\t\tvec3 sheenColor;\n\t\tfloat sheenRoughness;\n\t#endif\n\t#ifdef IOR\n\t\tfloat ior;\n\t#endif\n\t#ifdef USE_TRANSMISSION\n\t\tfloat transmission;\n\t\tfloat transmissionAlpha;\n\t\tfloat thickness;\n\t\tfloat attenuationDistance;\n\t\tvec3 attenuationColor;\n\t#endif\n};\nvec3 clearcoatSpecular = vec3( 0.0 );\nvec3 sheenSpecular = vec3( 0.0 );\nfloat IBLSheenBRDF( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\tfloat r2 = roughness * roughness;\n\tfloat a = roughness < 0.25 ? -339.2 * r2 + 161.4 * roughness - 25.9 : -8.48 * r2 + 14.3 * roughness - 9.95;\n\tfloat b = roughness < 0.25 ? 44.0 * r2 - 23.7 * roughness + 3.26 : 1.97 * r2 - 3.27 * roughness + 0.72;\n\tfloat DG = exp( a * dotNV + b ) + ( roughness < 0.25 ? 0.0 : 0.1 * ( roughness - 0.25 ) );\n\treturn saturate( DG * RECIPROCAL_PI );\n}\nvec2 DFGApprox( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\tconst vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 );\n\tconst vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 );\n\tvec4 r = roughness * c0 + c1;\n\tfloat a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y;\n\tvec2 fab = vec2( - 1.04, 1.04 ) * a004 + r.zw;\n\treturn fab;\n}\nvec3 EnvironmentBRDF( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness ) {\n\tvec2 fab = DFGApprox( normal, viewDir, roughness );\n\treturn specularColor * fab.x + specularF90 * fab.y;\n}\n#ifdef USE_IRIDESCENCE\nvoid computeMultiscatteringIridescence( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float iridescence, const in vec3 iridescenceF0, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\n#else\nvoid computeMultiscattering( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\n#endif\n\tvec2 fab = DFGApprox( normal, viewDir, roughness );\n\t#ifdef USE_IRIDESCENCE\n\t\tvec3 Fr = mix( specularColor, iridescenceF0, iridescence );\n\t#else\n\t\tvec3 Fr = specularColor;\n\t#endif\n\tvec3 FssEss = Fr * fab.x + specularF90 * fab.y;\n\tfloat Ess = fab.x + fab.y;\n\tfloat Ems = 1.0 - Ess;\n\tvec3 Favg = Fr + ( 1.0 - Fr ) * 0.047619;\tvec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg );\n\tsingleScatter += FssEss;\n\tmultiScatter += Fms * Ems;\n}\n#if NUM_RECT_AREA_LIGHTS > 0\n\tvoid RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\t\tvec3 normal = geometry.normal;\n\t\tvec3 viewDir = geometry.viewDir;\n\t\tvec3 position = geometry.position;\n\t\tvec3 lightPos = rectAreaLight.position;\n\t\tvec3 halfWidth = rectAreaLight.halfWidth;\n\t\tvec3 halfHeight = rectAreaLight.halfHeight;\n\t\tvec3 lightColor = rectAreaLight.color;\n\t\tfloat roughness = material.roughness;\n\t\tvec3 rectCoords[ 4 ];\n\t\trectCoords[ 0 ] = lightPos + halfWidth - halfHeight;\t\trectCoords[ 1 ] = lightPos - halfWidth - halfHeight;\n\t\trectCoords[ 2 ] = lightPos - halfWidth + halfHeight;\n\t\trectCoords[ 3 ] = lightPos + halfWidth + halfHeight;\n\t\tvec2 uv = LTC_Uv( normal, viewDir, roughness );\n\t\tvec4 t1 = texture2D( ltc_1, uv );\n\t\tvec4 t2 = texture2D( ltc_2, uv );\n\t\tmat3 mInv = mat3(\n\t\t\tvec3( t1.x, 0, t1.y ),\n\t\t\tvec3( 0, 1, 0 ),\n\t\t\tvec3( t1.z, 0, t1.w )\n\t\t);\n\t\tvec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y );\n\t\treflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords );\n\t\treflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords );\n\t}\n#endif\nvoid RE_Direct_Physical( const in IncidentLight directLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\n\tvec3 irradiance = dotNL * directLight.color;\n\t#ifdef USE_CLEARCOAT\n\t\tfloat dotNLcc = saturate( dot( geometry.clearcoatNormal, directLight.direction ) );\n\t\tvec3 ccIrradiance = dotNLcc * directLight.color;\n\t\tclearcoatSpecular += ccIrradiance * BRDF_GGX( directLight.direction, geometry.viewDir, geometry.clearcoatNormal, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );\n\t#endif\n\t#ifdef USE_SHEEN\n\t\tsheenSpecular += irradiance * BRDF_Sheen( directLight.direction, geometry.viewDir, geometry.normal, material.sheenColor, material.sheenRoughness );\n\t#endif\n\t#ifdef USE_IRIDESCENCE\n\t\treflectedLight.directSpecular += irradiance * BRDF_GGX_Iridescence( directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularF90, material.iridescence, material.iridescenceFresnel, material.roughness );\n\t#else\n\t\treflectedLight.directSpecular += irradiance * BRDF_GGX( directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularF90, material.roughness );\n\t#endif\n\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {\n\t#ifdef USE_CLEARCOAT\n\t\tclearcoatSpecular += clearcoatRadiance * EnvironmentBRDF( geometry.clearcoatNormal, geometry.viewDir, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );\n\t#endif\n\t#ifdef USE_SHEEN\n\t\tsheenSpecular += irradiance * material.sheenColor * IBLSheenBRDF( geometry.normal, geometry.viewDir, material.sheenRoughness );\n\t#endif\n\tvec3 singleScattering = vec3( 0.0 );\n\tvec3 multiScattering = vec3( 0.0 );\n\tvec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;\n\t#ifdef USE_IRIDESCENCE\n\t\tcomputeMultiscatteringIridescence( geometry.normal, geometry.viewDir, material.specularColor, material.specularF90, material.iridescence, material.iridescenceFresnel, material.roughness, singleScattering, multiScattering );\n\t#else\n\t\tcomputeMultiscattering( geometry.normal, geometry.viewDir, material.specularColor, material.specularF90, material.roughness, singleScattering, multiScattering );\n\t#endif\n\tvec3 totalScattering = singleScattering + multiScattering;\n\tvec3 diffuse = material.diffuseColor * ( 1.0 - max( max( totalScattering.r, totalScattering.g ), totalScattering.b ) );\n\treflectedLight.indirectSpecular += radiance * singleScattering;\n\treflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance;\n\treflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance;\n}\n#define RE_Direct\t\t\t\tRE_Direct_Physical\n#define RE_Direct_RectArea\t\tRE_Direct_RectArea_Physical\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_Physical\n#define RE_IndirectSpecular\t\tRE_IndirectSpecular_Physical\nfloat computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) {\n\treturn saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion );\n}`,Nc=`\nGeometricContext geometry;\ngeometry.position = - vViewPosition;\ngeometry.normal = normal;\ngeometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition );\n#ifdef USE_CLEARCOAT\n\tgeometry.clearcoatNormal = clearcoatNormal;\n#endif\n#ifdef USE_IRIDESCENCE\n\tfloat dotNVi = saturate( dot( normal, geometry.viewDir ) );\n\tif ( material.iridescenceThickness == 0.0 ) {\n\t\tmaterial.iridescence = 0.0;\n\t} else {\n\t\tmaterial.iridescence = saturate( material.iridescence );\n\t}\n\tif ( material.iridescence > 0.0 ) {\n\t\tmaterial.iridescenceFresnel = evalIridescence( 1.0, material.iridescenceIOR, dotNVi, material.iridescenceThickness, material.specularColor );\n\t\tmaterial.iridescenceF0 = Schlick_to_F0( material.iridescenceFresnel, 1.0, dotNVi );\n\t}\n#endif\nIncidentLight directLight;\n#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\n\tPointLight pointLight;\n\t#if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0\n\tPointLightShadow pointLightShadow;\n\t#endif\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tpointLight = pointLights[ i ];\n\t\tgetPointLightInfo( pointLight, geometry, directLight );\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS )\n\t\tpointLightShadow = pointLightShadows[ i ];\n\t\tdirectLight.color *= ( directLight.visible && receiveShadow ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\n\tSpotLight spotLight;\n\tvec4 spotColor;\n\tvec3 spotLightCoord;\n\tbool inSpotLightMap;\n\t#if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0\n\tSpotLightShadow spotLightShadow;\n\t#endif\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tspotLight = spotLights[ i ];\n\t\tgetSpotLightInfo( spotLight, geometry, directLight );\n\t\t#if ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS )\n\t\t#define SPOT_LIGHT_MAP_INDEX UNROLLED_LOOP_INDEX\n\t\t#elif ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\n\t\t#define SPOT_LIGHT_MAP_INDEX NUM_SPOT_LIGHT_MAPS\n\t\t#else\n\t\t#define SPOT_LIGHT_MAP_INDEX ( UNROLLED_LOOP_INDEX - NUM_SPOT_LIGHT_SHADOWS + NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS )\n\t\t#endif\n\t\t#if ( SPOT_LIGHT_MAP_INDEX < NUM_SPOT_LIGHT_MAPS )\n\t\t\tspotLightCoord = vSpotLightCoord[ i ].xyz / vSpotLightCoord[ i ].w;\n\t\t\tinSpotLightMap = all( lessThan( abs( spotLightCoord * 2. - 1. ), vec3( 1.0 ) ) );\n\t\t\tspotColor = texture2D( spotLightMap[ SPOT_LIGHT_MAP_INDEX ], spotLightCoord.xy );\n\t\t\tdirectLight.color = inSpotLightMap ? directLight.color * spotColor.rgb : directLight.color;\n\t\t#endif\n\t\t#undef SPOT_LIGHT_MAP_INDEX\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\n\t\tspotLightShadow = spotLightShadows[ i ];\n\t\tdirectLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotLightCoord[ i ] ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\n\tDirectionalLight directionalLight;\n\t#if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0\n\tDirectionalLightShadow directionalLightShadow;\n\t#endif\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tdirectionalLight = directionalLights[ i ];\n\t\tgetDirectionalLightInfo( directionalLight, geometry, directLight );\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS )\n\t\tdirectionalLightShadow = directionalLightShadows[ i ];\n\t\tdirectLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\n\tRectAreaLight rectAreaLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {\n\t\trectAreaLight = rectAreaLights[ i ];\n\t\tRE_Direct_RectArea( rectAreaLight, geometry, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if defined( RE_IndirectDiffuse )\n\tvec3 iblIrradiance = vec3( 0.0 );\n\tvec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\n\tirradiance += getLightProbeIrradiance( lightProbe, geometry.normal );\n\t#if ( NUM_HEMI_LIGHTS > 0 )\n\t\t#pragma unroll_loop_start\n\t\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\n\t\t\tirradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry.normal );\n\t\t}\n\t\t#pragma unroll_loop_end\n\t#endif\n#endif\n#if defined( RE_IndirectSpecular )\n\tvec3 radiance = vec3( 0.0 );\n\tvec3 clearcoatRadiance = vec3( 0.0 );\n#endif`,Fc=`#if defined( RE_IndirectDiffuse )\n\t#ifdef USE_LIGHTMAP\n\t\tvec4 lightMapTexel = texture2D( lightMap, vUv2 );\n\t\tvec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;\n\t\tirradiance += lightMapIrradiance;\n\t#endif\n\t#if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV )\n\t\tiblIrradiance += getIBLIrradiance( geometry.normal );\n\t#endif\n#endif\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\n\tradiance += getIBLRadiance( geometry.viewDir, geometry.normal, material.roughness );\n\t#ifdef USE_CLEARCOAT\n\t\tclearcoatRadiance += getIBLRadiance( geometry.viewDir, geometry.clearcoatNormal, material.clearcoatRoughness );\n\t#endif\n#endif`,zc=`#if defined( RE_IndirectDiffuse )\n\tRE_IndirectDiffuse( irradiance, geometry, material, reflectedLight );\n#endif\n#if defined( RE_IndirectSpecular )\n\tRE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometry, material, reflectedLight );\n#endif`,Oc=`#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\n\tgl_FragDepthEXT = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\n#endif`,Uc=`#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\n\tuniform float logDepthBufFC;\n\tvarying float vFragDepth;\n\tvarying float vIsPerspective;\n#endif`,Bc=`#ifdef USE_LOGDEPTHBUF\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tvarying float vFragDepth;\n\t\tvarying float vIsPerspective;\n\t#else\n\t\tuniform float logDepthBufFC;\n\t#endif\n#endif`,kc=`#ifdef USE_LOGDEPTHBUF\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tvFragDepth = 1.0 + gl_Position.w;\n\t\tvIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) );\n\t#else\n\t\tif ( isPerspectiveMatrix( projectionMatrix ) ) {\n\t\t\tgl_Position.z = log2( max( EPSILON, gl_Position.w + 1.0 ) ) * logDepthBufFC - 1.0;\n\t\t\tgl_Position.z *= gl_Position.w;\n\t\t}\n\t#endif\n#endif`,Vc=`#ifdef USE_MAP\n\tvec4 sampledDiffuseColor = texture2D( map, vUv );\n\t#ifdef DECODE_VIDEO_TEXTURE\n\t\tsampledDiffuseColor = vec4( mix( pow( sampledDiffuseColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), sampledDiffuseColor.rgb * 0.0773993808, vec3( lessThanEqual( sampledDiffuseColor.rgb, vec3( 0.04045 ) ) ) ), sampledDiffuseColor.w );\n\t#endif\n\tdiffuseColor *= sampledDiffuseColor;\n#endif`,Gc=`#ifdef USE_MAP\n\tuniform sampler2D map;\n#endif`,Hc=`#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\n\tvec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;\n#endif\n#ifdef USE_MAP\n\tdiffuseColor *= texture2D( map, uv );\n#endif\n#ifdef USE_ALPHAMAP\n\tdiffuseColor.a *= texture2D( alphaMap, uv ).g;\n#endif`,Wc=`#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\n\tuniform mat3 uvTransform;\n#endif\n#ifdef USE_MAP\n\tuniform sampler2D map;\n#endif\n#ifdef USE_ALPHAMAP\n\tuniform sampler2D alphaMap;\n#endif`,Xc=`float metalnessFactor = metalness;\n#ifdef USE_METALNESSMAP\n\tvec4 texelMetalness = texture2D( metalnessMap, vUv );\n\tmetalnessFactor *= texelMetalness.b;\n#endif`,qc=`#ifdef USE_METALNESSMAP\n\tuniform sampler2D metalnessMap;\n#endif`,Yc=`#if defined( USE_MORPHCOLORS ) && defined( MORPHTARGETS_TEXTURE )\n\tvColor *= morphTargetBaseInfluence;\n\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\n\t\t#if defined( USE_COLOR_ALPHA )\n\t\t\tif ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ) * morphTargetInfluences[ i ];\n\t\t#elif defined( USE_COLOR )\n\t\t\tif ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ).rgb * morphTargetInfluences[ i ];\n\t\t#endif\n\t}\n#endif`,Zc=`#ifdef USE_MORPHNORMALS\n\tobjectNormal *= morphTargetBaseInfluence;\n\t#ifdef MORPHTARGETS_TEXTURE\n\t\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\n\t\t\tif ( morphTargetInfluences[ i ] != 0.0 ) objectNormal += getMorph( gl_VertexID, i, 1 ).xyz * morphTargetInfluences[ i ];\n\t\t}\n\t#else\n\t\tobjectNormal += morphNormal0 * morphTargetInfluences[ 0 ];\n\t\tobjectNormal += morphNormal1 * morphTargetInfluences[ 1 ];\n\t\tobjectNormal += morphNormal2 * morphTargetInfluences[ 2 ];\n\t\tobjectNormal += morphNormal3 * morphTargetInfluences[ 3 ];\n\t#endif\n#endif`,Jc=`#ifdef USE_MORPHTARGETS\n\tuniform float morphTargetBaseInfluence;\n\t#ifdef MORPHTARGETS_TEXTURE\n\t\tuniform float morphTargetInfluences[ MORPHTARGETS_COUNT ];\n\t\tuniform sampler2DArray morphTargetsTexture;\n\t\tuniform ivec2 morphTargetsTextureSize;\n\t\tvec4 getMorph( const in int vertexIndex, const in int morphTargetIndex, const in int offset ) {\n\t\t\tint texelIndex = vertexIndex * MORPHTARGETS_TEXTURE_STRIDE + offset;\n\t\t\tint y = texelIndex / morphTargetsTextureSize.x;\n\t\t\tint x = texelIndex - y * morphTargetsTextureSize.x;\n\t\t\tivec3 morphUV = ivec3( x, y, morphTargetIndex );\n\t\t\treturn texelFetch( morphTargetsTexture, morphUV, 0 );\n\t\t}\n\t#else\n\t\t#ifndef USE_MORPHNORMALS\n\t\t\tuniform float morphTargetInfluences[ 8 ];\n\t\t#else\n\t\t\tuniform float morphTargetInfluences[ 4 ];\n\t\t#endif\n\t#endif\n#endif`,$c=`#ifdef USE_MORPHTARGETS\n\ttransformed *= morphTargetBaseInfluence;\n\t#ifdef MORPHTARGETS_TEXTURE\n\t\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\n\t\t\tif ( morphTargetInfluences[ i ] != 0.0 ) transformed += getMorph( gl_VertexID, i, 0 ).xyz * morphTargetInfluences[ i ];\n\t\t}\n\t#else\n\t\ttransformed += morphTarget0 * morphTargetInfluences[ 0 ];\n\t\ttransformed += morphTarget1 * morphTargetInfluences[ 1 ];\n\t\ttransformed += morphTarget2 * morphTargetInfluences[ 2 ];\n\t\ttransformed += morphTarget3 * morphTargetInfluences[ 3 ];\n\t\t#ifndef USE_MORPHNORMALS\n\t\t\ttransformed += morphTarget4 * morphTargetInfluences[ 4 ];\n\t\t\ttransformed += morphTarget5 * morphTargetInfluences[ 5 ];\n\t\t\ttransformed += morphTarget6 * morphTargetInfluences[ 6 ];\n\t\t\ttransformed += morphTarget7 * morphTargetInfluences[ 7 ];\n\t\t#endif\n\t#endif\n#endif`,Kc=`float faceDirection = gl_FrontFacing ? 1.0 : - 1.0;\n#ifdef FLAT_SHADED\n\tvec3 fdx = dFdx( vViewPosition );\n\tvec3 fdy = dFdy( vViewPosition );\n\tvec3 normal = normalize( cross( fdx, fdy ) );\n#else\n\tvec3 normal = normalize( vNormal );\n\t#ifdef DOUBLE_SIDED\n\t\tnormal = normal * faceDirection;\n\t#endif\n\t#ifdef USE_TANGENT\n\t\tvec3 tangent = normalize( vTangent );\n\t\tvec3 bitangent = normalize( vBitangent );\n\t\t#ifdef DOUBLE_SIDED\n\t\t\ttangent = tangent * faceDirection;\n\t\t\tbitangent = bitangent * faceDirection;\n\t\t#endif\n\t\t#if defined( TANGENTSPACE_NORMALMAP ) || defined( USE_CLEARCOAT_NORMALMAP )\n\t\t\tmat3 vTBN = mat3( tangent, bitangent, normal );\n\t\t#endif\n\t#endif\n#endif\nvec3 geometryNormal = normal;`,jc=`#ifdef OBJECTSPACE_NORMALMAP\n\tnormal = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\n\t#ifdef FLIP_SIDED\n\t\tnormal = - normal;\n\t#endif\n\t#ifdef DOUBLE_SIDED\n\t\tnormal = normal * faceDirection;\n\t#endif\n\tnormal = normalize( normalMatrix * normal );\n#elif defined( TANGENTSPACE_NORMALMAP )\n\tvec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\n\tmapN.xy *= normalScale;\n\t#ifdef USE_TANGENT\n\t\tnormal = normalize( vTBN * mapN );\n\t#else\n\t\tnormal = perturbNormal2Arb( - vViewPosition, normal, mapN, faceDirection );\n\t#endif\n#elif defined( USE_BUMPMAP )\n\tnormal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection );\n#endif`,Qc=`#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif`,th=`#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif`,eh=`#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n\t#ifdef USE_TANGENT\n\t\tvTangent = normalize( transformedTangent );\n\t\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\n\t#endif\n#endif`,nh=`#ifdef USE_NORMALMAP\n\tuniform sampler2D normalMap;\n\tuniform vec2 normalScale;\n#endif\n#ifdef OBJECTSPACE_NORMALMAP\n\tuniform mat3 normalMatrix;\n#endif\n#if ! defined ( USE_TANGENT ) && ( defined ( TANGENTSPACE_NORMALMAP ) || defined ( USE_CLEARCOAT_NORMALMAP ) )\n\tvec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm, vec3 mapN, float faceDirection ) {\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\t\tvec3 N = surf_norm;\n\t\tvec3 q1perp = cross( q1, N );\n\t\tvec3 q0perp = cross( N, q0 );\n\t\tvec3 T = q1perp * st0.x + q0perp * st1.x;\n\t\tvec3 B = q1perp * st0.y + q0perp * st1.y;\n\t\tfloat det = max( dot( T, T ), dot( B, B ) );\n\t\tfloat scale = ( det == 0.0 ) ? 0.0 : faceDirection * inversesqrt( det );\n\t\treturn normalize( T * ( mapN.x * scale ) + B * ( mapN.y * scale ) + N * mapN.z );\n\t}\n#endif`,ih=`#ifdef USE_CLEARCOAT\n\tvec3 clearcoatNormal = geometryNormal;\n#endif`,sh=`#ifdef USE_CLEARCOAT_NORMALMAP\n\tvec3 clearcoatMapN = texture2D( clearcoatNormalMap, vUv ).xyz * 2.0 - 1.0;\n\tclearcoatMapN.xy *= clearcoatNormalScale;\n\t#ifdef USE_TANGENT\n\t\tclearcoatNormal = normalize( vTBN * clearcoatMapN );\n\t#else\n\t\tclearcoatNormal = perturbNormal2Arb( - vViewPosition, clearcoatNormal, clearcoatMapN, faceDirection );\n\t#endif\n#endif`,rh=`#ifdef USE_CLEARCOATMAP\n\tuniform sampler2D clearcoatMap;\n#endif\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n\tuniform sampler2D clearcoatRoughnessMap;\n#endif\n#ifdef USE_CLEARCOAT_NORMALMAP\n\tuniform sampler2D clearcoatNormalMap;\n\tuniform vec2 clearcoatNormalScale;\n#endif`,ah=`#ifdef USE_IRIDESCENCEMAP\n\tuniform sampler2D iridescenceMap;\n#endif\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\n\tuniform sampler2D iridescenceThicknessMap;\n#endif`,oh=`#ifdef OPAQUE\ndiffuseColor.a = 1.0;\n#endif\n#ifdef USE_TRANSMISSION\ndiffuseColor.a *= material.transmissionAlpha + 0.1;\n#endif\ngl_FragColor = vec4( outgoingLight, diffuseColor.a );`,lh=`vec3 packNormalToRGB( const in vec3 normal ) {\n\treturn normalize( normal ) * 0.5 + 0.5;\n}\nvec3 unpackRGBToNormal( const in vec3 rgb ) {\n\treturn 2.0 * rgb.xyz - 1.0;\n}\nconst float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;\nconst vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\nconst vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. );\nconst float ShiftRight8 = 1. / 256.;\nvec4 packDepthToRGBA( const in float v ) {\n\tvec4 r = vec4( fract( v * PackFactors ), v );\n\tr.yzw -= r.xyz * ShiftRight8;\treturn r * PackUpscale;\n}\nfloat unpackRGBAToDepth( const in vec4 v ) {\n\treturn dot( v, UnpackFactors );\n}\nvec2 packDepthToRG( in highp float v ) {\n\treturn packDepthToRGBA( v ).yx;\n}\nfloat unpackRGToDepth( const in highp vec2 v ) {\n\treturn unpackRGBAToDepth( vec4( v.xy, 0.0, 0.0 ) );\n}\nvec4 pack2HalfToRGBA( vec2 v ) {\n\tvec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ) );\n\treturn vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w );\n}\nvec2 unpackRGBATo2Half( vec4 v ) {\n\treturn vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) );\n}\nfloat viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) {\n\treturn ( viewZ + near ) / ( near - far );\n}\nfloat orthographicDepthToViewZ( const in float linearClipZ, const in float near, const in float far ) {\n\treturn linearClipZ * ( near - far ) - near;\n}\nfloat viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) {\n\treturn ( ( near + viewZ ) * far ) / ( ( far - near ) * viewZ );\n}\nfloat perspectiveDepthToViewZ( const in float invClipZ, const in float near, const in float far ) {\n\treturn ( near * far ) / ( ( far - near ) * invClipZ - far );\n}`,ch=`#ifdef PREMULTIPLIED_ALPHA\n\tgl_FragColor.rgb *= gl_FragColor.a;\n#endif`,hh=`vec4 mvPosition = vec4( transformed, 1.0 );\n#ifdef USE_INSTANCING\n\tmvPosition = instanceMatrix * mvPosition;\n#endif\nmvPosition = modelViewMatrix * mvPosition;\ngl_Position = projectionMatrix * mvPosition;`,uh=`#ifdef DITHERING\n\tgl_FragColor.rgb = dithering( gl_FragColor.rgb );\n#endif`,dh=`#ifdef DITHERING\n\tvec3 dithering( vec3 color ) {\n\t\tfloat grid_position = rand( gl_FragCoord.xy );\n\t\tvec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 );\n\t\tdither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position );\n\t\treturn color + dither_shift_RGB;\n\t}\n#endif`,fh=`float roughnessFactor = roughness;\n#ifdef USE_ROUGHNESSMAP\n\tvec4 texelRoughness = texture2D( roughnessMap, vUv );\n\troughnessFactor *= texelRoughness.g;\n#endif`,ph=`#ifdef USE_ROUGHNESSMAP\n\tuniform sampler2D roughnessMap;\n#endif`,mh=`#if NUM_SPOT_LIGHT_COORDS > 0\n varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ];\n#endif\n#if NUM_SPOT_LIGHT_MAPS > 0\n uniform sampler2D spotLightMap[ NUM_SPOT_LIGHT_MAPS ];\n#endif\n#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\t\tuniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tstruct DirectionalLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\t\tuniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ];\n\t\tstruct SpotLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\t\tuniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tstruct PointLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t\tfloat shadowCameraNear;\n\t\t\tfloat shadowCameraFar;\n\t\t};\n\t\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\n\t#endif\n\tfloat texture2DCompare( sampler2D depths, vec2 uv, float compare ) {\n\t\treturn step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) );\n\t}\n\tvec2 texture2DDistribution( sampler2D shadow, vec2 uv ) {\n\t\treturn unpackRGBATo2Half( texture2D( shadow, uv ) );\n\t}\n\tfloat VSMShadow (sampler2D shadow, vec2 uv, float compare ){\n\t\tfloat occlusion = 1.0;\n\t\tvec2 distribution = texture2DDistribution( shadow, uv );\n\t\tfloat hard_shadow = step( compare , distribution.x );\n\t\tif (hard_shadow != 1.0 ) {\n\t\t\tfloat distance = compare - distribution.x ;\n\t\t\tfloat variance = max( 0.00000, distribution.y * distribution.y );\n\t\t\tfloat softness_probability = variance / (variance + distance * distance );\t\t\tsoftness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 );\t\t\tocclusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 );\n\t\t}\n\t\treturn occlusion;\n\t}\n\tfloat getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) {\n\t\tfloat shadow = 1.0;\n\t\tshadowCoord.xyz /= shadowCoord.w;\n\t\tshadowCoord.z += shadowBias;\n\t\tbool inFrustum = shadowCoord.x >= 0.0 && shadowCoord.x <= 1.0 && shadowCoord.y >= 0.0 && shadowCoord.y <= 1.0;\n\t\tbool frustumTest = inFrustum && shadowCoord.z <= 1.0;\n\t\tif ( frustumTest ) {\n\t\t#if defined( SHADOWMAP_TYPE_PCF )\n\t\t\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\n\t\t\tfloat dx0 = - texelSize.x * shadowRadius;\n\t\t\tfloat dy0 = - texelSize.y * shadowRadius;\n\t\t\tfloat dx1 = + texelSize.x * shadowRadius;\n\t\t\tfloat dy1 = + texelSize.y * shadowRadius;\n\t\t\tfloat dx2 = dx0 / 2.0;\n\t\t\tfloat dy2 = dy0 / 2.0;\n\t\t\tfloat dx3 = dx1 / 2.0;\n\t\t\tfloat dy3 = dy1 / 2.0;\n\t\t\tshadow = (\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy2 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy2 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy2 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy3 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy3 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy3 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\n\t\t\t) * ( 1.0 / 17.0 );\n\t\t#elif defined( SHADOWMAP_TYPE_PCF_SOFT )\n\t\t\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\n\t\t\tfloat dx = texelSize.x;\n\t\t\tfloat dy = texelSize.y;\n\t\t\tvec2 uv = shadowCoord.xy;\n\t\t\tvec2 f = fract( uv * shadowMapSize + 0.5 );\n\t\t\tuv -= f * texelSize;\n\t\t\tshadow = (\n\t\t\t\ttexture2DCompare( shadowMap, uv, shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, uv + vec2( dx, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, uv + vec2( 0.0, dy ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, uv + texelSize, shadowCoord.z ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, 0.0 ), shadowCoord.z ),\n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 0.0 ), shadowCoord.z ),\n\t\t\t\t\t f.x ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, dy ), shadowCoord.z ),\n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, dy ), shadowCoord.z ),\n\t\t\t\t\t f.x ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( 0.0, -dy ), shadowCoord.z ),\n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 0.0, 2.0 * dy ), shadowCoord.z ),\n\t\t\t\t\t f.y ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( dx, -dy ), shadowCoord.z ),\n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( dx, 2.0 * dy ), shadowCoord.z ),\n\t\t\t\t\t f.y ) +\n\t\t\t\tmix( mix( texture2DCompare( shadowMap, uv + vec2( -dx, -dy ), shadowCoord.z ),\n\t\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ),\n\t\t\t\t\t\t f.x ),\n\t\t\t\t\t mix( texture2DCompare( shadowMap, uv + vec2( -dx, 2.0 * dy ), shadowCoord.z ),\n\t\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ),\n\t\t\t\t\t\t f.x ),\n\t\t\t\t\t f.y )\n\t\t\t) * ( 1.0 / 9.0 );\n\t\t#elif defined( SHADOWMAP_TYPE_VSM )\n\t\t\tshadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z );\n\t\t#else\n\t\t\tshadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z );\n\t\t#endif\n\t\t}\n\t\treturn shadow;\n\t}\n\tvec2 cubeToUV( vec3 v, float texelSizeY ) {\n\t\tvec3 absV = abs( v );\n\t\tfloat scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) );\n\t\tabsV *= scaleToCube;\n\t\tv *= scaleToCube * ( 1.0 - 2.0 * texelSizeY );\n\t\tvec2 planar = v.xy;\n\t\tfloat almostATexel = 1.5 * texelSizeY;\n\t\tfloat almostOne = 1.0 - almostATexel;\n\t\tif ( absV.z >= almostOne ) {\n\t\t\tif ( v.z > 0.0 )\n\t\t\t\tplanar.x = 4.0 - v.x;\n\t\t} else if ( absV.x >= almostOne ) {\n\t\t\tfloat signX = sign( v.x );\n\t\t\tplanar.x = v.z * signX + 2.0 * signX;\n\t\t} else if ( absV.y >= almostOne ) {\n\t\t\tfloat signY = sign( v.y );\n\t\t\tplanar.x = v.x + 2.0 * signY + 2.0;\n\t\t\tplanar.y = v.z * signY - 2.0;\n\t\t}\n\t\treturn vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 );\n\t}\n\tfloat getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {\n\t\tvec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );\n\t\tvec3 lightToPosition = shadowCoord.xyz;\n\t\tfloat dp = ( length( lightToPosition ) - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear );\t\tdp += shadowBias;\n\t\tvec3 bd3D = normalize( lightToPosition );\n\t\t#if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM )\n\t\t\tvec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y;\n\t\t\treturn (\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp )\n\t\t\t) * ( 1.0 / 9.0 );\n\t\t#else\n\t\t\treturn texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp );\n\t\t#endif\n\t}\n#endif`,gh=`#if NUM_SPOT_LIGHT_COORDS > 0\n uniform mat4 spotLightMatrix[ NUM_SPOT_LIGHT_COORDS ];\n varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ];\n#endif\n#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\t\tuniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tstruct DirectionalLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\t\tstruct SpotLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\t\tuniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tstruct PointLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t\tfloat shadowCameraNear;\n\t\t\tfloat shadowCameraFar;\n\t\t};\n\t\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\n\t#endif\n#endif`,_h=`#if ( defined( USE_SHADOWMAP ) && ( NUM_DIR_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0 ) ) || ( NUM_SPOT_LIGHT_COORDS > 0 )\n\tvec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\n\tvec4 shadowWorldPosition;\n#endif\n#if defined( USE_SHADOWMAP )\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\t\t#pragma unroll_loop_start\n\t\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\n\t\t\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 );\n\t\t\tvDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition;\n\t\t}\n\t\t#pragma unroll_loop_end\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\t\t#pragma unroll_loop_start\n\t\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\n\t\t\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 );\n\t\t\tvPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition;\n\t\t}\n\t\t#pragma unroll_loop_end\n\t#endif\n#endif\n#if NUM_SPOT_LIGHT_COORDS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_SPOT_LIGHT_COORDS; i ++ ) {\n\t\tshadowWorldPosition = worldPosition;\n\t\t#if ( defined( USE_SHADOWMAP ) && UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\n\t\t\tshadowWorldPosition.xyz += shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias;\n\t\t#endif\n\t\tvSpotLightCoord[ i ] = spotLightMatrix[ i ] * shadowWorldPosition;\n\t}\n\t#pragma unroll_loop_end\n#endif`,xh=`float getShadowMask() {\n\tfloat shadow = 1.0;\n\t#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\tDirectionalLightShadow directionalLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\n\t\tdirectionalLight = directionalLightShadows[ i ];\n\t\tshadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\tSpotLightShadow spotLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\n\t\tspotLight = spotLightShadows[ i ];\n\t\tshadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotLightCoord[ i ] ) : 1.0;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\tPointLightShadow pointLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\n\t\tpointLight = pointLightShadows[ i ];\n\t\tshadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n\t#endif\n\treturn shadow;\n}`,yh=`#ifdef USE_SKINNING\n\tmat4 boneMatX = getBoneMatrix( skinIndex.x );\n\tmat4 boneMatY = getBoneMatrix( skinIndex.y );\n\tmat4 boneMatZ = getBoneMatrix( skinIndex.z );\n\tmat4 boneMatW = getBoneMatrix( skinIndex.w );\n#endif`,vh=`#ifdef USE_SKINNING\n\tuniform mat4 bindMatrix;\n\tuniform mat4 bindMatrixInverse;\n\tuniform highp sampler2D boneTexture;\n\tuniform int boneTextureSize;\n\tmat4 getBoneMatrix( const in float i ) {\n\t\tfloat j = i * 4.0;\n\t\tfloat x = mod( j, float( boneTextureSize ) );\n\t\tfloat y = floor( j / float( boneTextureSize ) );\n\t\tfloat dx = 1.0 / float( boneTextureSize );\n\t\tfloat dy = 1.0 / float( boneTextureSize );\n\t\ty = dy * ( y + 0.5 );\n\t\tvec4 v1 = texture2D( boneTexture, vec2( dx * ( x + 0.5 ), y ) );\n\t\tvec4 v2 = texture2D( boneTexture, vec2( dx * ( x + 1.5 ), y ) );\n\t\tvec4 v3 = texture2D( boneTexture, vec2( dx * ( x + 2.5 ), y ) );\n\t\tvec4 v4 = texture2D( boneTexture, vec2( dx * ( x + 3.5 ), y ) );\n\t\tmat4 bone = mat4( v1, v2, v3, v4 );\n\t\treturn bone;\n\t}\n#endif`,Mh=`#ifdef USE_SKINNING\n\tvec4 skinVertex = bindMatrix * vec4( transformed, 1.0 );\n\tvec4 skinned = vec4( 0.0 );\n\tskinned += boneMatX * skinVertex * skinWeight.x;\n\tskinned += boneMatY * skinVertex * skinWeight.y;\n\tskinned += boneMatZ * skinVertex * skinWeight.z;\n\tskinned += boneMatW * skinVertex * skinWeight.w;\n\ttransformed = ( bindMatrixInverse * skinned ).xyz;\n#endif`,bh=`#ifdef USE_SKINNING\n\tmat4 skinMatrix = mat4( 0.0 );\n\tskinMatrix += skinWeight.x * boneMatX;\n\tskinMatrix += skinWeight.y * boneMatY;\n\tskinMatrix += skinWeight.z * boneMatZ;\n\tskinMatrix += skinWeight.w * boneMatW;\n\tskinMatrix = bindMatrixInverse * skinMatrix * bindMatrix;\n\tobjectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz;\n\t#ifdef USE_TANGENT\n\t\tobjectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz;\n\t#endif\n#endif`,wh=`float specularStrength;\n#ifdef USE_SPECULARMAP\n\tvec4 texelSpecular = texture2D( specularMap, vUv );\n\tspecularStrength = texelSpecular.r;\n#else\n\tspecularStrength = 1.0;\n#endif`,Sh=`#ifdef USE_SPECULARMAP\n\tuniform sampler2D specularMap;\n#endif`,Th=`#if defined( TONE_MAPPING )\n\tgl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\n#endif`,Ah=`#ifndef saturate\n#define saturate( a ) clamp( a, 0.0, 1.0 )\n#endif\nuniform float toneMappingExposure;\nvec3 LinearToneMapping( vec3 color ) {\n\treturn toneMappingExposure * color;\n}\nvec3 ReinhardToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\treturn saturate( color / ( vec3( 1.0 ) + color ) );\n}\nvec3 OptimizedCineonToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\tcolor = max( vec3( 0.0 ), color - 0.004 );\n\treturn pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );\n}\nvec3 RRTAndODTFit( vec3 v ) {\n\tvec3 a = v * ( v + 0.0245786 ) - 0.000090537;\n\tvec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081;\n\treturn a / b;\n}\nvec3 ACESFilmicToneMapping( vec3 color ) {\n\tconst mat3 ACESInputMat = mat3(\n\t\tvec3( 0.59719, 0.07600, 0.02840 ),\t\tvec3( 0.35458, 0.90834, 0.13383 ),\n\t\tvec3( 0.04823, 0.01566, 0.83777 )\n\t);\n\tconst mat3 ACESOutputMat = mat3(\n\t\tvec3( 1.60475, -0.10208, -0.00327 ),\t\tvec3( -0.53108, 1.10813, -0.07276 ),\n\t\tvec3( -0.07367, -0.00605, 1.07602 )\n\t);\n\tcolor *= toneMappingExposure / 0.6;\n\tcolor = ACESInputMat * color;\n\tcolor = RRTAndODTFit( color );\n\tcolor = ACESOutputMat * color;\n\treturn saturate( color );\n}\nvec3 CustomToneMapping( vec3 color ) { return color; }`,Eh=`#ifdef USE_TRANSMISSION\n\tmaterial.transmission = transmission;\n\tmaterial.transmissionAlpha = 1.0;\n\tmaterial.thickness = thickness;\n\tmaterial.attenuationDistance = attenuationDistance;\n\tmaterial.attenuationColor = attenuationColor;\n\t#ifdef USE_TRANSMISSIONMAP\n\t\tmaterial.transmission *= texture2D( transmissionMap, vUv ).r;\n\t#endif\n\t#ifdef USE_THICKNESSMAP\n\t\tmaterial.thickness *= texture2D( thicknessMap, vUv ).g;\n\t#endif\n\tvec3 pos = vWorldPosition;\n\tvec3 v = normalize( cameraPosition - pos );\n\tvec3 n = inverseTransformDirection( normal, viewMatrix );\n\tvec4 transmission = getIBLVolumeRefraction(\n\t\tn, v, material.roughness, material.diffuseColor, material.specularColor, material.specularF90,\n\t\tpos, modelMatrix, viewMatrix, projectionMatrix, material.ior, material.thickness,\n\t\tmaterial.attenuationColor, material.attenuationDistance );\n\tmaterial.transmissionAlpha = mix( material.transmissionAlpha, transmission.a, material.transmission );\n\ttotalDiffuse = mix( totalDiffuse, transmission.rgb, material.transmission );\n#endif`,Ch=`#ifdef USE_TRANSMISSION\n\tuniform float transmission;\n\tuniform float thickness;\n\tuniform float attenuationDistance;\n\tuniform vec3 attenuationColor;\n\t#ifdef USE_TRANSMISSIONMAP\n\t\tuniform sampler2D transmissionMap;\n\t#endif\n\t#ifdef USE_THICKNESSMAP\n\t\tuniform sampler2D thicknessMap;\n\t#endif\n\tuniform vec2 transmissionSamplerSize;\n\tuniform sampler2D transmissionSamplerMap;\n\tuniform mat4 modelMatrix;\n\tuniform mat4 projectionMatrix;\n\tvarying vec3 vWorldPosition;\n\tvec3 getVolumeTransmissionRay( const in vec3 n, const in vec3 v, const in float thickness, const in float ior, const in mat4 modelMatrix ) {\n\t\tvec3 refractionVector = refract( - v, normalize( n ), 1.0 / ior );\n\t\tvec3 modelScale;\n\t\tmodelScale.x = length( vec3( modelMatrix[ 0 ].xyz ) );\n\t\tmodelScale.y = length( vec3( modelMatrix[ 1 ].xyz ) );\n\t\tmodelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) );\n\t\treturn normalize( refractionVector ) * thickness * modelScale;\n\t}\n\tfloat applyIorToRoughness( const in float roughness, const in float ior ) {\n\t\treturn roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 );\n\t}\n\tvec4 getTransmissionSample( const in vec2 fragCoord, const in float roughness, const in float ior ) {\n\t\tfloat framebufferLod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior );\n\t\t#ifdef texture2DLodEXT\n\t\t\treturn texture2DLodEXT( transmissionSamplerMap, fragCoord.xy, framebufferLod );\n\t\t#else\n\t\t\treturn texture2D( transmissionSamplerMap, fragCoord.xy, framebufferLod );\n\t\t#endif\n\t}\n\tvec3 applyVolumeAttenuation( const in vec3 radiance, const in float transmissionDistance, const in vec3 attenuationColor, const in float attenuationDistance ) {\n\t\tif ( isinf( attenuationDistance ) ) {\n\t\t\treturn radiance;\n\t\t} else {\n\t\t\tvec3 attenuationCoefficient = -log( attenuationColor ) / attenuationDistance;\n\t\t\tvec3 transmittance = exp( - attenuationCoefficient * transmissionDistance );\t\t\treturn transmittance * radiance;\n\t\t}\n\t}\n\tvec4 getIBLVolumeRefraction( const in vec3 n, const in vec3 v, const in float roughness, const in vec3 diffuseColor,\n\t\tconst in vec3 specularColor, const in float specularF90, const in vec3 position, const in mat4 modelMatrix,\n\t\tconst in mat4 viewMatrix, const in mat4 projMatrix, const in float ior, const in float thickness,\n\t\tconst in vec3 attenuationColor, const in float attenuationDistance ) {\n\t\tvec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix );\n\t\tvec3 refractedRayExit = position + transmissionRay;\n\t\tvec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 );\n\t\tvec2 refractionCoords = ndcPos.xy / ndcPos.w;\n\t\trefractionCoords += 1.0;\n\t\trefractionCoords /= 2.0;\n\t\tvec4 transmittedLight = getTransmissionSample( refractionCoords, roughness, ior );\n\t\tvec3 attenuatedColor = applyVolumeAttenuation( transmittedLight.rgb, length( transmissionRay ), attenuationColor, attenuationDistance );\n\t\tvec3 F = EnvironmentBRDF( n, v, specularColor, specularF90, roughness );\n\t\treturn vec4( ( 1.0 - F ) * attenuatedColor * diffuseColor, transmittedLight.a );\n\t}\n#endif`,Ph=`#if ( defined( USE_UV ) && ! defined( UVS_VERTEX_ONLY ) )\n\tvarying vec2 vUv;\n#endif`,Rh=`#ifdef USE_UV\n\t#ifdef UVS_VERTEX_ONLY\n\t\tvec2 vUv;\n\t#else\n\t\tvarying vec2 vUv;\n\t#endif\n\tuniform mat3 uvTransform;\n#endif`,Lh=`#ifdef USE_UV\n\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n#endif`,Ih=`#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tvarying vec2 vUv2;\n#endif`,Dh=`#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tattribute vec2 uv2;\n\tvarying vec2 vUv2;\n\tuniform mat3 uv2Transform;\n#endif`,Nh=`#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tvUv2 = ( uv2Transform * vec3( uv2, 1 ) ).xy;\n#endif`,Fh=`#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION ) || NUM_SPOT_LIGHT_COORDS > 0\n\tvec4 worldPosition = vec4( transformed, 1.0 );\n\t#ifdef USE_INSTANCING\n\t\tworldPosition = instanceMatrix * worldPosition;\n\t#endif\n\tworldPosition = modelMatrix * worldPosition;\n#endif`,zh=`varying vec2 vUv;\nuniform mat3 uvTransform;\nvoid main() {\n\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n\tgl_Position = vec4( position.xy, 1.0, 1.0 );\n}`,Oh=`uniform sampler2D t2D;\nuniform float backgroundIntensity;\nvarying vec2 vUv;\nvoid main() {\n\tvec4 texColor = texture2D( t2D, vUv );\n\t#ifdef DECODE_VIDEO_TEXTURE\n\t\ttexColor = vec4( mix( pow( texColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), texColor.rgb * 0.0773993808, vec3( lessThanEqual( texColor.rgb, vec3( 0.04045 ) ) ) ), texColor.w );\n\t#endif\n\ttexColor.rgb *= backgroundIntensity;\n\tgl_FragColor = texColor;\n\t#include \n\t#include \n}`,Uh=`varying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include \n\t#include \n\tgl_Position.z = gl_Position.w;\n}`,Bh=`#ifdef ENVMAP_TYPE_CUBE\n\tuniform samplerCube envMap;\n#elif defined( ENVMAP_TYPE_CUBE_UV )\n\tuniform sampler2D envMap;\n#endif\nuniform float flipEnvMap;\nuniform float backgroundBlurriness;\nuniform float backgroundIntensity;\nvarying vec3 vWorldDirection;\n#include \nvoid main() {\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tvec4 texColor = textureCube( envMap, vec3( flipEnvMap * vWorldDirection.x, vWorldDirection.yz ) );\n\t#elif defined( ENVMAP_TYPE_CUBE_UV )\n\t\tvec4 texColor = textureCubeUV( envMap, vWorldDirection, backgroundBlurriness );\n\t#else\n\t\tvec4 texColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\t#endif\n\ttexColor.rgb *= backgroundIntensity;\n\tgl_FragColor = texColor;\n\t#include \n\t#include \n}`,kh=`varying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include \n\t#include \n\tgl_Position.z = gl_Position.w;\n}`,Vh=`uniform samplerCube tCube;\nuniform float tFlip;\nuniform float opacity;\nvarying vec3 vWorldDirection;\nvoid main() {\n\tvec4 texColor = textureCube( tCube, vec3( tFlip * vWorldDirection.x, vWorldDirection.yz ) );\n\tgl_FragColor = texColor;\n\tgl_FragColor.a *= opacity;\n\t#include \n\t#include \n}`,Gh=`#include \n#include \n#include \n#include \n#include \n#include \n#include \nvarying vec2 vHighPrecisionZW;\nvoid main() {\n\t#include \n\t#include \n\t#ifdef USE_DISPLACEMENTMAP\n\t\t#include \n\t\t#include \n\t\t#include \n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvHighPrecisionZW = gl_Position.zw;\n}`,Hh=`#if DEPTH_PACKING == 3200\n\tuniform float opacity;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvarying vec2 vHighPrecisionZW;\nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( 1.0 );\n\t#if DEPTH_PACKING == 3200\n\t\tdiffuseColor.a = opacity;\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\tfloat fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5;\n\t#if DEPTH_PACKING == 3200\n\t\tgl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );\n\t#elif DEPTH_PACKING == 3201\n\t\tgl_FragColor = packDepthToRGBA( fragCoordZ );\n\t#endif\n}`,Wh=`#define DISTANCE\nvarying vec3 vWorldPosition;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#ifdef USE_DISPLACEMENTMAP\n\t\t#include \n\t\t#include \n\t\t#include \n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvWorldPosition = worldPosition.xyz;\n}`,Xh=`#define DISTANCE\nuniform vec3 referencePosition;\nuniform float nearDistance;\nuniform float farDistance;\nvarying vec3 vWorldPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main () {\n\t#include \n\tvec4 diffuseColor = vec4( 1.0 );\n\t#include \n\t#include \n\t#include \n\tfloat dist = length( vWorldPosition - referencePosition );\n\tdist = ( dist - nearDistance ) / ( farDistance - nearDistance );\n\tdist = saturate( dist );\n\tgl_FragColor = packDepthToRGBA( dist );\n}`,qh=`varying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include \n\t#include \n}`,Yh=`uniform sampler2D tEquirect;\nvarying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvec3 direction = normalize( vWorldDirection );\n\tvec2 sampleUV = equirectUv( direction );\n\tgl_FragColor = texture2D( tEquirect, sampleUV );\n\t#include \n\t#include \n}`,Zh=`uniform float scale;\nattribute float lineDistance;\nvarying float vLineDistance;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\tvLineDistance = scale * lineDistance;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}`,Jh=`uniform vec3 diffuse;\nuniform float opacity;\nuniform float dashSize;\nuniform float totalSize;\nvarying float vLineDistance;\n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tif ( mod( vLineDistance, totalSize ) > dashSize ) {\n\t\tdiscard;\n\t}\n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\toutgoingLight = diffuseColor.rgb;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}`,$h=`#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#if defined ( USE_ENVMAP ) || defined ( USE_SKINNING )\n\t\t#include \n\t\t#include \n\t\t#include \n\t\t#include \n\t\t#include \n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}`,Kh=`uniform vec3 diffuse;\nuniform float opacity;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\t#ifdef USE_LIGHTMAP\n\t\tvec4 lightMapTexel = texture2D( lightMap, vUv2 );\n\t\treflectedLight.indirectDiffuse += lightMapTexel.rgb * lightMapIntensity * RECIPROCAL_PI;\n\t#else\n\t\treflectedLight.indirectDiffuse += vec3( 1.0 );\n\t#endif\n\t#include \n\treflectedLight.indirectDiffuse *= diffuseColor.rgb;\n\tvec3 outgoingLight = reflectedLight.indirectDiffuse;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}`,jh=`#define LAMBERT\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n\t#include \n\t#include \n\t#include \n\t#include \n}`,Qh=`#define LAMBERT\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}`,tu=`#define MATCAP\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n}`,eu=`#define MATCAP\nuniform vec3 diffuse;\nuniform float opacity;\nuniform sampler2D matcap;\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 viewDir = normalize( vViewPosition );\n\tvec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );\n\tvec3 y = cross( viewDir, x );\n\tvec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5;\n\t#ifdef USE_MATCAP\n\t\tvec4 matcapColor = texture2D( matcap, uv );\n\t#else\n\t\tvec4 matcapColor = vec4( vec3( mix( 0.2, 0.8, uv.y ) ), 1.0 );\n\t#endif\n\tvec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}`,nu=`#define NORMAL\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\n\tvarying vec3 vViewPosition;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\n\tvViewPosition = - mvPosition.xyz;\n#endif\n}`,iu=`#define NORMAL\nuniform float opacity;\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\n\tvarying vec3 vViewPosition;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\tgl_FragColor = vec4( packNormalToRGB( normal ), opacity );\n\t#ifdef OPAQUE\n\t\tgl_FragColor.a = 1.0;\n\t#endif\n}`,su=`#define PHONG\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n\t#include \n\t#include \n\t#include \n\t#include \n}`,ru=`#define PHONG\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform vec3 specular;\nuniform float shininess;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}`,au=`#define STANDARD\nvarying vec3 vViewPosition;\n#ifdef USE_TRANSMISSION\n\tvarying vec3 vWorldPosition;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n\t#include \n\t#include \n\t#include \n#ifdef USE_TRANSMISSION\n\tvWorldPosition = worldPosition.xyz;\n#endif\n}`,ou=`#define STANDARD\n#ifdef PHYSICAL\n\t#define IOR\n\t#define SPECULAR\n#endif\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float roughness;\nuniform float metalness;\nuniform float opacity;\n#ifdef IOR\n\tuniform float ior;\n#endif\n#ifdef SPECULAR\n\tuniform float specularIntensity;\n\tuniform vec3 specularColor;\n\t#ifdef USE_SPECULARINTENSITYMAP\n\t\tuniform sampler2D specularIntensityMap;\n\t#endif\n\t#ifdef USE_SPECULARCOLORMAP\n\t\tuniform sampler2D specularColorMap;\n\t#endif\n#endif\n#ifdef USE_CLEARCOAT\n\tuniform float clearcoat;\n\tuniform float clearcoatRoughness;\n#endif\n#ifdef USE_IRIDESCENCE\n\tuniform float iridescence;\n\tuniform float iridescenceIOR;\n\tuniform float iridescenceThicknessMinimum;\n\tuniform float iridescenceThicknessMaximum;\n#endif\n#ifdef USE_SHEEN\n\tuniform vec3 sheenColor;\n\tuniform float sheenRoughness;\n\t#ifdef USE_SHEENCOLORMAP\n\t\tuniform sampler2D sheenColorMap;\n\t#endif\n\t#ifdef USE_SHEENROUGHNESSMAP\n\t\tuniform sampler2D sheenRoughnessMap;\n\t#endif\n#endif\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse;\n\tvec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular;\n\t#include \n\tvec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance;\n\t#ifdef USE_SHEEN\n\t\tfloat sheenEnergyComp = 1.0 - 0.157 * max3( material.sheenColor );\n\t\toutgoingLight = outgoingLight * sheenEnergyComp + sheenSpecular;\n\t#endif\n\t#ifdef USE_CLEARCOAT\n\t\tfloat dotNVcc = saturate( dot( geometry.clearcoatNormal, geometry.viewDir ) );\n\t\tvec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc );\n\t\toutgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + clearcoatSpecular * material.clearcoat;\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}`,lu=`#define TOON\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n\t#include \n\t#include \n\t#include \n}`,cu=`#define TOON\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}`,hu=`uniform float size;\nuniform float scale;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tgl_PointSize = size;\n\t#ifdef USE_SIZEATTENUATION\n\t\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\n\t\tif ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z );\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n}`,uu=`uniform vec3 diffuse;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\toutgoingLight = diffuseColor.rgb;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}`,du=`#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}`,fu=`uniform vec3 color;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\tgl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );\n\t#include \n\t#include \n\t#include \n}`,pu=`uniform float rotation;\nuniform vec2 center;\n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );\n\tvec2 scale;\n\tscale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) );\n\tscale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) );\n\t#ifndef USE_SIZEATTENUATION\n\t\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\n\t\tif ( isPerspective ) scale *= - mvPosition.z;\n\t#endif\n\tvec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale;\n\tvec2 rotatedPosition;\n\trotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;\n\trotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;\n\tmvPosition.xy += rotatedPosition;\n\tgl_Position = projectionMatrix * mvPosition;\n\t#include \n\t#include \n\t#include \n}`,mu=`uniform vec3 diffuse;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\toutgoingLight = diffuseColor.rgb;\n\t#include \n\t#include \n\t#include \n\t#include \n}`,wt={alphamap_fragment:Ul,alphamap_pars_fragment:Bl,alphatest_fragment:kl,alphatest_pars_fragment:Vl,aomap_fragment:Gl,aomap_pars_fragment:Hl,begin_vertex:Wl,beginnormal_vertex:Xl,bsdfs:ql,iridescence_fragment:Yl,bumpmap_pars_fragment:Zl,clipping_planes_fragment:Jl,clipping_planes_pars_fragment:$l,clipping_planes_pars_vertex:Kl,clipping_planes_vertex:jl,color_fragment:Ql,color_pars_fragment:tc,color_pars_vertex:ec,color_vertex:nc,common:ic,cube_uv_reflection_fragment:sc,defaultnormal_vertex:rc,displacementmap_pars_vertex:ac,displacementmap_vertex:oc,emissivemap_fragment:lc,emissivemap_pars_fragment:cc,encodings_fragment:hc,encodings_pars_fragment:uc,envmap_fragment:dc,envmap_common_pars_fragment:fc,envmap_pars_fragment:pc,envmap_pars_vertex:mc,envmap_physical_pars_fragment:Ec,envmap_vertex:gc,fog_vertex:_c,fog_pars_vertex:xc,fog_fragment:yc,fog_pars_fragment:vc,gradientmap_pars_fragment:Mc,lightmap_fragment:bc,lightmap_pars_fragment:wc,lights_lambert_fragment:Sc,lights_lambert_pars_fragment:Tc,lights_pars_begin:Ac,lights_toon_fragment:Cc,lights_toon_pars_fragment:Pc,lights_phong_fragment:Rc,lights_phong_pars_fragment:Lc,lights_physical_fragment:Ic,lights_physical_pars_fragment:Dc,lights_fragment_begin:Nc,lights_fragment_maps:Fc,lights_fragment_end:zc,logdepthbuf_fragment:Oc,logdepthbuf_pars_fragment:Uc,logdepthbuf_pars_vertex:Bc,logdepthbuf_vertex:kc,map_fragment:Vc,map_pars_fragment:Gc,map_particle_fragment:Hc,map_particle_pars_fragment:Wc,metalnessmap_fragment:Xc,metalnessmap_pars_fragment:qc,morphcolor_vertex:Yc,morphnormal_vertex:Zc,morphtarget_pars_vertex:Jc,morphtarget_vertex:$c,normal_fragment_begin:Kc,normal_fragment_maps:jc,normal_pars_fragment:Qc,normal_pars_vertex:th,normal_vertex:eh,normalmap_pars_fragment:nh,clearcoat_normal_fragment_begin:ih,clearcoat_normal_fragment_maps:sh,clearcoat_pars_fragment:rh,iridescence_pars_fragment:ah,output_fragment:oh,packing:lh,premultiplied_alpha_fragment:ch,project_vertex:hh,dithering_fragment:uh,dithering_pars_fragment:dh,roughnessmap_fragment:fh,roughnessmap_pars_fragment:ph,shadowmap_pars_fragment:mh,shadowmap_pars_vertex:gh,shadowmap_vertex:_h,shadowmask_pars_fragment:xh,skinbase_vertex:yh,skinning_pars_vertex:vh,skinning_vertex:Mh,skinnormal_vertex:bh,specularmap_fragment:wh,specularmap_pars_fragment:Sh,tonemapping_fragment:Th,tonemapping_pars_fragment:Ah,transmission_fragment:Eh,transmission_pars_fragment:Ch,uv_pars_fragment:Ph,uv_pars_vertex:Rh,uv_vertex:Lh,uv2_pars_fragment:Ih,uv2_pars_vertex:Dh,uv2_vertex:Nh,worldpos_vertex:Fh,background_vert:zh,background_frag:Oh,backgroundCube_vert:Uh,backgroundCube_frag:Bh,cube_vert:kh,cube_frag:Vh,depth_vert:Gh,depth_frag:Hh,distanceRGBA_vert:Wh,distanceRGBA_frag:Xh,equirect_vert:qh,equirect_frag:Yh,linedashed_vert:Zh,linedashed_frag:Jh,meshbasic_vert:$h,meshbasic_frag:Kh,meshlambert_vert:jh,meshlambert_frag:Qh,meshmatcap_vert:tu,meshmatcap_frag:eu,meshnormal_vert:nu,meshnormal_frag:iu,meshphong_vert:su,meshphong_frag:ru,meshphysical_vert:au,meshphysical_frag:ou,meshtoon_vert:lu,meshtoon_frag:cu,points_vert:hu,points_frag:uu,shadow_vert:du,shadow_frag:fu,sprite_vert:pu,sprite_frag:mu},et={common:{diffuse:{value:new Ot(16777215)},opacity:{value:1},map:{value:null},uvTransform:{value:new oe},uv2Transform:{value:new oe},alphaMap:{value:null},alphaTest:{value:0}},specularmap:{specularMap:{value:null}},envmap:{envMap:{value:null},flipEnvMap:{value:-1},reflectivity:{value:1},ior:{value:1.5},refractionRatio:{value:.98}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1}},emissivemap:{emissiveMap:{value:null}},bumpmap:{bumpMap:{value:null},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalScale:{value:new Nt(1,1)}},displacementmap:{displacementMap:{value:null},displacementScale:{value:1},displacementBias:{value:0}},roughnessmap:{roughnessMap:{value:null}},metalnessmap:{metalnessMap:{value:null}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new Ot(16777215)}},lights:{ambientLightColor:{value:[]},lightProbe:{value:[]},directionalLights:{value:[],properties:{direction:{},color:{}}},directionalLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},directionalShadowMap:{value:[]},directionalShadowMatrix:{value:[]},spotLights:{value:[],properties:{color:{},position:{},direction:{},distance:{},coneCos:{},penumbraCos:{},decay:{}}},spotLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},spotLightMap:{value:[]},spotShadowMap:{value:[]},spotLightMatrix:{value:[]},pointLights:{value:[],properties:{color:{},position:{},decay:{},distance:{}}},pointLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{},shadowCameraNear:{},shadowCameraFar:{}}},pointShadowMap:{value:[]},pointShadowMatrix:{value:[]},hemisphereLights:{value:[],properties:{direction:{},skyColor:{},groundColor:{}}},rectAreaLights:{value:[],properties:{color:{},position:{},width:{},height:{}}},ltc_1:{value:null},ltc_2:{value:null}},points:{diffuse:{value:new Ot(16777215)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},alphaTest:{value:0},uvTransform:{value:new oe}},sprite:{diffuse:{value:new Ot(16777215)},opacity:{value:1},center:{value:new Nt(.5,.5)},rotation:{value:0},map:{value:null},alphaMap:{value:null},alphaTest:{value:0},uvTransform:{value:new oe}}},De={basic:{uniforms:re([et.common,et.specularmap,et.envmap,et.aomap,et.lightmap,et.fog]),vertexShader:wt.meshbasic_vert,fragmentShader:wt.meshbasic_frag},lambert:{uniforms:re([et.common,et.specularmap,et.envmap,et.aomap,et.lightmap,et.emissivemap,et.bumpmap,et.normalmap,et.displacementmap,et.fog,et.lights,{emissive:{value:new Ot(0)}}]),vertexShader:wt.meshlambert_vert,fragmentShader:wt.meshlambert_frag},phong:{uniforms:re([et.common,et.specularmap,et.envmap,et.aomap,et.lightmap,et.emissivemap,et.bumpmap,et.normalmap,et.displacementmap,et.fog,et.lights,{emissive:{value:new Ot(0)},specular:{value:new Ot(1118481)},shininess:{value:30}}]),vertexShader:wt.meshphong_vert,fragmentShader:wt.meshphong_frag},standard:{uniforms:re([et.common,et.envmap,et.aomap,et.lightmap,et.emissivemap,et.bumpmap,et.normalmap,et.displacementmap,et.roughnessmap,et.metalnessmap,et.fog,et.lights,{emissive:{value:new Ot(0)},roughness:{value:1},metalness:{value:0},envMapIntensity:{value:1}}]),vertexShader:wt.meshphysical_vert,fragmentShader:wt.meshphysical_frag},toon:{uniforms:re([et.common,et.aomap,et.lightmap,et.emissivemap,et.bumpmap,et.normalmap,et.displacementmap,et.gradientmap,et.fog,et.lights,{emissive:{value:new Ot(0)}}]),vertexShader:wt.meshtoon_vert,fragmentShader:wt.meshtoon_frag},matcap:{uniforms:re([et.common,et.bumpmap,et.normalmap,et.displacementmap,et.fog,{matcap:{value:null}}]),vertexShader:wt.meshmatcap_vert,fragmentShader:wt.meshmatcap_frag},points:{uniforms:re([et.points,et.fog]),vertexShader:wt.points_vert,fragmentShader:wt.points_frag},dashed:{uniforms:re([et.common,et.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:wt.linedashed_vert,fragmentShader:wt.linedashed_frag},depth:{uniforms:re([et.common,et.displacementmap]),vertexShader:wt.depth_vert,fragmentShader:wt.depth_frag},normal:{uniforms:re([et.common,et.bumpmap,et.normalmap,et.displacementmap,{opacity:{value:1}}]),vertexShader:wt.meshnormal_vert,fragmentShader:wt.meshnormal_frag},sprite:{uniforms:re([et.sprite,et.fog]),vertexShader:wt.sprite_vert,fragmentShader:wt.sprite_frag},background:{uniforms:{uvTransform:{value:new oe},t2D:{value:null},backgroundIntensity:{value:1}},vertexShader:wt.background_vert,fragmentShader:wt.background_frag},backgroundCube:{uniforms:{envMap:{value:null},flipEnvMap:{value:-1},backgroundBlurriness:{value:0},backgroundIntensity:{value:1}},vertexShader:wt.backgroundCube_vert,fragmentShader:wt.backgroundCube_frag},cube:{uniforms:{tCube:{value:null},tFlip:{value:-1},opacity:{value:1}},vertexShader:wt.cube_vert,fragmentShader:wt.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:wt.equirect_vert,fragmentShader:wt.equirect_frag},distanceRGBA:{uniforms:re([et.common,et.displacementmap,{referencePosition:{value:new N},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:wt.distanceRGBA_vert,fragmentShader:wt.distanceRGBA_frag},shadow:{uniforms:re([et.lights,et.fog,{color:{value:new Ot(0)},opacity:{value:1}}]),vertexShader:wt.shadow_vert,fragmentShader:wt.shadow_frag}};De.physical={uniforms:re([De.standard.uniforms,{clearcoat:{value:0},clearcoatMap:{value:null},clearcoatRoughness:{value:0},clearcoatRoughnessMap:{value:null},clearcoatNormalScale:{value:new Nt(1,1)},clearcoatNormalMap:{value:null},iridescence:{value:0},iridescenceMap:{value:null},iridescenceIOR:{value:1.3},iridescenceThicknessMinimum:{value:100},iridescenceThicknessMaximum:{value:400},iridescenceThicknessMap:{value:null},sheen:{value:0},sheenColor:{value:new Ot(0)},sheenColorMap:{value:null},sheenRoughness:{value:1},sheenRoughnessMap:{value:null},transmission:{value:0},transmissionMap:{value:null},transmissionSamplerSize:{value:new Nt},transmissionSamplerMap:{value:null},thickness:{value:0},thicknessMap:{value:null},attenuationDistance:{value:0},attenuationColor:{value:new Ot(0)},specularIntensity:{value:1},specularIntensityMap:{value:null},specularColor:{value:new Ot(1,1,1)},specularColorMap:{value:null}}]),vertexShader:wt.meshphysical_vert,fragmentShader:wt.meshphysical_frag};var zi={r:0,b:0,g:0};function gu(r,t,e,n,i,s,o){let a=new Ot(0),c=s===!0?0:1,l,h,f=null,u=0,m=null;function _(d,v){let T=!1,b=v.isScene===!0?v.background:null;b&&b.isTexture&&(b=(v.backgroundBlurriness>0?e:t).get(b));let M=r.xr,A=M.getSession&&M.getSession();A&&A.environmentBlendMode==="additive"&&(b=null),b===null?p(a,c):b&&b.isColor&&(p(b,1),T=!0),(r.autoClear||T)&&r.clear(r.autoClearColor,r.autoClearDepth,r.autoClearStencil),b&&(b.isCubeTexture||b.mapping===ns)?(h===void 0&&(h=new Ne(new bn(1,1,1),new Ze({name:"BackgroundCubeMaterial",uniforms:$n(De.backgroundCube.uniforms),vertexShader:De.backgroundCube.vertexShader,fragmentShader:De.backgroundCube.fragmentShader,side:ye,depthTest:!1,depthWrite:!1,fog:!1})),h.geometry.deleteAttribute("normal"),h.geometry.deleteAttribute("uv"),h.onBeforeRender=function(C,I,x){this.matrixWorld.copyPosition(x.matrixWorld)},Object.defineProperty(h.material,"envMap",{get:function(){return this.uniforms.envMap.value}}),i.update(h)),h.material.uniforms.envMap.value=b,h.material.uniforms.flipEnvMap.value=b.isCubeTexture&&b.isRenderTargetTexture===!1?-1:1,h.material.uniforms.backgroundBlurriness.value=v.backgroundBlurriness,h.material.uniforms.backgroundIntensity.value=v.backgroundIntensity,h.material.toneMapped=b.encoding!==zt,(f!==b||u!==b.version||m!==r.toneMapping)&&(h.material.needsUpdate=!0,f=b,u=b.version,m=r.toneMapping),h.layers.enableAll(),d.unshift(h,h.geometry,h.material,0,0,null)):b&&b.isTexture&&(l===void 0&&(l=new Ne(new xi(2,2),new Ze({name:"BackgroundMaterial",uniforms:$n(De.background.uniforms),vertexShader:De.background.vertexShader,fragmentShader:De.background.fragmentShader,side:nn,depthTest:!1,depthWrite:!1,fog:!1})),l.geometry.deleteAttribute("normal"),Object.defineProperty(l.material,"map",{get:function(){return this.uniforms.t2D.value}}),i.update(l)),l.material.uniforms.t2D.value=b,l.material.uniforms.backgroundIntensity.value=v.backgroundIntensity,l.material.toneMapped=b.encoding!==zt,b.matrixAutoUpdate===!0&&b.updateMatrix(),l.material.uniforms.uvTransform.value.copy(b.matrix),(f!==b||u!==b.version||m!==r.toneMapping)&&(l.material.needsUpdate=!0,f=b,u=b.version,m=r.toneMapping),l.layers.enableAll(),d.unshift(l,l.geometry,l.material,0,0,null))}function p(d,v){d.getRGB(zi,Ka(r)),n.buffers.color.setClear(zi.r,zi.g,zi.b,v,o)}return{getClearColor:function(){return a},setClearColor:function(d,v=1){a.set(d),c=v,p(a,c)},getClearAlpha:function(){return c},setClearAlpha:function(d){c=d,p(a,c)},render:_}}function _u(r,t,e,n){let i=r.getParameter(34921),s=n.isWebGL2?null:t.get("OES_vertex_array_object"),o=n.isWebGL2||s!==null,a={},c=d(null),l=c,h=!1;function f(R,G,Y,j,W){let Q=!1;if(o){let Z=p(j,Y,G);l!==Z&&(l=Z,m(l.object)),Q=v(R,j,Y,W),Q&&T(R,j,Y,W)}else{let Z=G.wireframe===!0;(l.geometry!==j.id||l.program!==Y.id||l.wireframe!==Z)&&(l.geometry=j.id,l.program=Y.id,l.wireframe=Z,Q=!0)}W!==null&&e.update(W,34963),(Q||h)&&(h=!1,x(R,G,Y,j),W!==null&&r.bindBuffer(34963,e.get(W).buffer))}function u(){return n.isWebGL2?r.createVertexArray():s.createVertexArrayOES()}function m(R){return n.isWebGL2?r.bindVertexArray(R):s.bindVertexArrayOES(R)}function _(R){return n.isWebGL2?r.deleteVertexArray(R):s.deleteVertexArrayOES(R)}function p(R,G,Y){let j=Y.wireframe===!0,W=a[R.id];W===void 0&&(W={},a[R.id]=W);let Q=W[G.id];Q===void 0&&(Q={},W[G.id]=Q);let Z=Q[j];return Z===void 0&&(Z=d(u()),Q[j]=Z),Z}function d(R){let G=[],Y=[],j=[];for(let W=0;W=0){let nt=W[F],it=Q[F];if(it===void 0&&(F==="instanceMatrix"&&R.instanceMatrix&&(it=R.instanceMatrix),F==="instanceColor"&&R.instanceColor&&(it=R.instanceColor)),nt===void 0||nt.attribute!==it||it&&nt.data!==it.data)return!0;Z++}return l.attributesNum!==Z||l.index!==j}function T(R,G,Y,j){let W={},Q=G.attributes,Z=0,ft=Y.getAttributes();for(let F in ft)if(ft[F].location>=0){let nt=Q[F];nt===void 0&&(F==="instanceMatrix"&&R.instanceMatrix&&(nt=R.instanceMatrix),F==="instanceColor"&&R.instanceColor&&(nt=R.instanceColor));let it={};it.attribute=nt,nt&&nt.data&&(it.data=nt.data),W[F]=it,Z++}l.attributes=W,l.attributesNum=Z,l.index=j}function b(){let R=l.newAttributes;for(let G=0,Y=R.length;G=0){let J=W[ft];if(J===void 0&&(ft==="instanceMatrix"&&R.instanceMatrix&&(J=R.instanceMatrix),ft==="instanceColor"&&R.instanceColor&&(J=R.instanceColor)),J!==void 0){let nt=J.normalized,it=J.itemSize,O=e.get(J);if(O===void 0)continue;let Mt=O.buffer,ht=O.type,ut=O.bytesPerElement;if(J.isInterleavedBufferAttribute){let ot=J.data,Ft=ot.stride,bt=J.offset;if(ot.isInstancedInterleavedBuffer){for(let xt=0;xt0&&r.getShaderPrecisionFormat(35632,36338).precision>0)return"highp";I="mediump"}return I==="mediump"&&r.getShaderPrecisionFormat(35633,36337).precision>0&&r.getShaderPrecisionFormat(35632,36337).precision>0?"mediump":"lowp"}let o=typeof WebGL2RenderingContext!="undefined"&&r instanceof WebGL2RenderingContext,a=e.precision!==void 0?e.precision:"highp",c=s(a);c!==a&&(console.warn("THREE.WebGLRenderer:",a,"not supported, using",c,"instead."),a=c);let l=o||t.has("WEBGL_draw_buffers"),h=e.logarithmicDepthBuffer===!0,f=r.getParameter(34930),u=r.getParameter(35660),m=r.getParameter(3379),_=r.getParameter(34076),p=r.getParameter(34921),d=r.getParameter(36347),v=r.getParameter(36348),T=r.getParameter(36349),b=u>0,M=o||t.has("OES_texture_float"),A=b&&M,C=o?r.getParameter(36183):0;return{isWebGL2:o,drawBuffers:l,getMaxAnisotropy:i,getMaxPrecision:s,precision:a,logarithmicDepthBuffer:h,maxTextures:f,maxVertexTextures:u,maxTextureSize:m,maxCubemapSize:_,maxAttributes:p,maxVertexUniforms:d,maxVaryings:v,maxFragmentUniforms:T,vertexTextures:b,floatFragmentTextures:M,floatVertexTextures:A,maxSamples:C}}function vu(r){let t=this,e=null,n=0,i=!1,s=!1,o=new He,a=new oe,c={value:null,needsUpdate:!1};this.uniform=c,this.numPlanes=0,this.numIntersection=0,this.init=function(f,u){let m=f.length!==0||u||n!==0||i;return i=u,n=f.length,m},this.beginShadows=function(){s=!0,h(null)},this.endShadows=function(){s=!1},this.setGlobalState=function(f,u){e=h(f,u,0)},this.setState=function(f,u,m){let _=f.clippingPlanes,p=f.clipIntersection,d=f.clipShadows,v=r.get(f);if(!i||_===null||_.length===0||s&&!d)s?h(null):l();else{let T=s?0:n,b=T*4,M=v.clippingState||null;c.value=M,M=h(_,u,b,m);for(let A=0;A!==b;++A)M[A]=e[A];v.clippingState=M,this.numIntersection=p?this.numPlanes:0,this.numPlanes+=T}};function l(){c.value!==e&&(c.value=e,c.needsUpdate=n>0),t.numPlanes=n,t.numIntersection=0}function h(f,u,m,_){let p=f!==null?f.length:0,d=null;if(p!==0){if(d=c.value,_!==!0||d===null){let v=m+p*4,T=u.matrixWorldInverse;a.getNormalMatrix(T),(d===null||d.length0){let l=new js(c.height/2);return l.fromEquirectangularTexture(r,o),t.set(o,l),o.addEventListener("dispose",i),e(l.texture,o.mapping)}else return null}}return o}function i(o){let a=o.target;a.removeEventListener("dispose",i);let c=t.get(a);c!==void 0&&(t.delete(a),c.dispose())}function s(){t=new WeakMap}return{get:n,dispose:s}}var Qs=class extends ji{constructor(t=-1,e=1,n=1,i=-1,s=.1,o=2e3){super(),this.isOrthographicCamera=!0,this.type="OrthographicCamera",this.zoom=1,this.view=null,this.left=t,this.right=e,this.top=n,this.bottom=i,this.near=s,this.far=o,this.updateProjectionMatrix()}copy(t,e){return super.copy(t,e),this.left=t.left,this.right=t.right,this.top=t.top,this.bottom=t.bottom,this.near=t.near,this.far=t.far,this.zoom=t.zoom,this.view=t.view===null?null:Object.assign({},t.view),this}setViewOffset(t,e,n,i,s,o){this.view===null&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=t,this.view.fullHeight=e,this.view.offsetX=n,this.view.offsetY=i,this.view.width=s,this.view.height=o,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){let t=(this.right-this.left)/(2*this.zoom),e=(this.top-this.bottom)/(2*this.zoom),n=(this.right+this.left)/2,i=(this.top+this.bottom)/2,s=n-t,o=n+t,a=i+e,c=i-e;if(this.view!==null&&this.view.enabled){let l=(this.right-this.left)/this.view.fullWidth/this.zoom,h=(this.top-this.bottom)/this.view.fullHeight/this.zoom;s+=l*this.view.offsetX,o=s+l*this.view.width,a-=h*this.view.offsetY,c=a-h*this.view.height}this.projectionMatrix.makeOrthographic(s,o,a,c,this.near,this.far),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(t){let e=super.toJSON(t);return e.object.zoom=this.zoom,e.object.left=this.left,e.object.right=this.right,e.object.top=this.top,e.object.bottom=this.bottom,e.object.near=this.near,e.object.far=this.far,this.view!==null&&(e.object.view=Object.assign({},this.view)),e}},kn=4,Ma=[.125,.215,.35,.446,.526,.582],pn=20,Bs=new Qs,ba=new Ot,ks=null,fn=(1+Math.sqrt(5))/2,Un=1/fn,wa=[new N(1,1,1),new N(-1,1,1),new N(1,1,-1),new N(-1,1,-1),new N(0,fn,Un),new N(0,fn,-Un),new N(Un,0,fn),new N(-Un,0,fn),new N(fn,Un,0),new N(-fn,Un,0)],es=class{constructor(t){this._renderer=t,this._pingPongRenderTarget=null,this._lodMax=0,this._cubeSize=0,this._lodPlanes=[],this._sizeLods=[],this._sigmas=[],this._blurMaterial=null,this._cubemapMaterial=null,this._equirectMaterial=null,this._compileMaterial(this._blurMaterial)}fromScene(t,e=0,n=.1,i=100){ks=this._renderer.getRenderTarget(),this._setSize(256);let s=this._allocateTargets();return s.depthBuffer=!0,this._sceneToCubeUV(t,n,i,s),e>0&&this._blur(s,0,0,e),this._applyPMREM(s),this._cleanup(s),s}fromEquirectangular(t,e=null){return this._fromTexture(t,e)}fromCubemap(t,e=null){return this._fromTexture(t,e)}compileCubemapShader(){this._cubemapMaterial===null&&(this._cubemapMaterial=Aa(),this._compileMaterial(this._cubemapMaterial))}compileEquirectangularShader(){this._equirectMaterial===null&&(this._equirectMaterial=Ta(),this._compileMaterial(this._equirectMaterial))}dispose(){this._dispose(),this._cubemapMaterial!==null&&this._cubemapMaterial.dispose(),this._equirectMaterial!==null&&this._equirectMaterial.dispose()}_setSize(t){this._lodMax=Math.floor(Math.log2(t)),this._cubeSize=Math.pow(2,this._lodMax)}_dispose(){this._blurMaterial!==null&&this._blurMaterial.dispose(),this._pingPongRenderTarget!==null&&this._pingPongRenderTarget.dispose();for(let t=0;t2?b:0,b,b),h.setRenderTarget(i),p&&h.render(_,a),h.render(t,a)}_.geometry.dispose(),_.material.dispose(),h.toneMapping=u,h.autoClear=f,t.background=d}_textureToCubeUV(t,e){let n=this._renderer,i=t.mapping===Xn||t.mapping===qn;i?(this._cubemapMaterial===null&&(this._cubemapMaterial=Aa()),this._cubemapMaterial.uniforms.flipEnvMap.value=t.isRenderTargetTexture===!1?-1:1):this._equirectMaterial===null&&(this._equirectMaterial=Ta());let s=i?this._cubemapMaterial:this._equirectMaterial,o=new Ne(this._lodPlanes[0],s),a=s.uniforms;a.envMap.value=t;let c=this._cubeSize;Oi(e,0,0,3*c,2*c),n.setRenderTarget(e),n.render(o,Bs)}_applyPMREM(t){let e=this._renderer,n=e.autoClear;e.autoClear=!1;for(let i=1;ipn&&console.warn(`sigmaRadians, ${s}, is too large and will clip, as it requested ${d} samples when the maximum is set to ${pn}`);let v=[],T=0;for(let I=0;Ib-kn?i-b+kn:0),C=4*(this._cubeSize-M);Oi(e,A,C,3*M,2*M),c.setRenderTarget(e),c.render(f,Bs)}};function bu(r){let t=[],e=[],n=[],i=r,s=r-kn+1+Ma.length;for(let o=0;or-kn?c=Ma[o-r+kn-1]:o===0&&(c=0),n.push(c);let l=1/(a-2),h=-l,f=1+l,u=[h,h,f,h,f,f,h,h,f,f,h,f],m=6,_=6,p=3,d=2,v=1,T=new Float32Array(p*_*m),b=new Float32Array(d*_*m),M=new Float32Array(v*_*m);for(let C=0;C2?0:-1,S=[I,x,0,I+2/3,x,0,I+2/3,x+1,0,I,x,0,I+2/3,x+1,0,I,x+1,0];T.set(S,p*_*C),b.set(u,d*_*C);let L=[C,C,C,C,C,C];M.set(L,v*_*C)}let A=new Ye;A.setAttribute("position",new ce(T,p)),A.setAttribute("uv",new ce(b,d)),A.setAttribute("faceIndex",new ce(M,v)),t.push(A),i>kn&&i--}return{lodPlanes:t,sizeLods:e,sigmas:n}}function Sa(r,t,e){let n=new qe(r,t,e);return n.texture.mapping=ns,n.texture.name="PMREM.cubeUv",n.scissorTest=!0,n}function Oi(r,t,e,n,i){r.viewport.set(t,e,n,i),r.scissor.set(t,e,n,i)}function wu(r,t,e){let n=new Float32Array(pn),i=new N(0,1,0);return new Ze({name:"SphericalGaussianBlur",defines:{n:pn,CUBEUV_TEXEL_WIDTH:1/t,CUBEUV_TEXEL_HEIGHT:1/e,CUBEUV_MAX_MIP:`${r}.0`},uniforms:{envMap:{value:null},samples:{value:1},weights:{value:n},latitudinal:{value:!1},dTheta:{value:0},mipInt:{value:0},poleAxis:{value:i}},vertexShader:br(),fragmentShader:`\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\t\t\tuniform int samples;\n\t\t\tuniform float weights[ n ];\n\t\t\tuniform bool latitudinal;\n\t\t\tuniform float dTheta;\n\t\t\tuniform float mipInt;\n\t\t\tuniform vec3 poleAxis;\n\n\t\t\t#define ENVMAP_TYPE_CUBE_UV\n\t\t\t#include \n\n\t\t\tvec3 getSample( float theta, vec3 axis ) {\n\n\t\t\t\tfloat cosTheta = cos( theta );\n\t\t\t\t// Rodrigues\' axis-angle rotation\n\t\t\t\tvec3 sampleDirection = vOutputDirection * cosTheta\n\t\t\t\t\t+ cross( axis, vOutputDirection ) * sin( theta )\n\t\t\t\t\t+ axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta );\n\n\t\t\t\treturn bilinearCubeUV( envMap, sampleDirection, mipInt );\n\n\t\t\t}\n\n\t\t\tvoid main() {\n\n\t\t\t\tvec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection );\n\n\t\t\t\tif ( all( equal( axis, vec3( 0.0 ) ) ) ) {\n\n\t\t\t\t\taxis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x );\n\n\t\t\t\t}\n\n\t\t\t\taxis = normalize( axis );\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\t\t\t\tgl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis );\n\n\t\t\t\tfor ( int i = 1; i < n; i++ ) {\n\n\t\t\t\t\tif ( i >= samples ) {\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfloat theta = dTheta * float( i );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( theta, axis );\n\n\t\t\t\t}\n\n\t\t\t}\n\t\t`,blending:en,depthTest:!1,depthWrite:!1})}function Ta(){return new Ze({name:"EquirectangularToCubeUV",uniforms:{envMap:{value:null}},vertexShader:br(),fragmentShader:`\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\n\t\t\t#include \n\n\t\t\tvoid main() {\n\n\t\t\t\tvec3 outputDirection = normalize( vOutputDirection );\n\t\t\t\tvec2 uv = equirectUv( outputDirection );\n\n\t\t\t\tgl_FragColor = vec4( texture2D ( envMap, uv ).rgb, 1.0 );\n\n\t\t\t}\n\t\t`,blending:en,depthTest:!1,depthWrite:!1})}function Aa(){return new Ze({name:"CubemapToCubeUV",uniforms:{envMap:{value:null},flipEnvMap:{value:-1}},vertexShader:br(),fragmentShader:`\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tuniform float flipEnvMap;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform samplerCube envMap;\n\n\t\t\tvoid main() {\n\n\t\t\t\tgl_FragColor = textureCube( envMap, vec3( flipEnvMap * vOutputDirection.x, vOutputDirection.yz ) );\n\n\t\t\t}\n\t\t`,blending:en,depthTest:!1,depthWrite:!1})}function br(){return`\n\n\t\tprecision mediump float;\n\t\tprecision mediump int;\n\n\t\tattribute float faceIndex;\n\n\t\tvarying vec3 vOutputDirection;\n\n\t\t// RH coordinate system; PMREM face-indexing convention\n\t\tvec3 getDirection( vec2 uv, float face ) {\n\n\t\t\tuv = 2.0 * uv - 1.0;\n\n\t\t\tvec3 direction = vec3( uv, 1.0 );\n\n\t\t\tif ( face == 0.0 ) {\n\n\t\t\t\tdirection = direction.zyx; // ( 1, v, u ) pos x\n\n\t\t\t} else if ( face == 1.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xz *= -1.0; // ( -u, 1, -v ) pos y\n\n\t\t\t} else if ( face == 2.0 ) {\n\n\t\t\t\tdirection.x *= -1.0; // ( -u, v, 1 ) pos z\n\n\t\t\t} else if ( face == 3.0 ) {\n\n\t\t\t\tdirection = direction.zyx;\n\t\t\t\tdirection.xz *= -1.0; // ( -1, v, -u ) neg x\n\n\t\t\t} else if ( face == 4.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xy *= -1.0; // ( -u, -1, v ) neg y\n\n\t\t\t} else if ( face == 5.0 ) {\n\n\t\t\t\tdirection.z *= -1.0; // ( u, v, -1 ) neg z\n\n\t\t\t}\n\n\t\t\treturn direction;\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tvOutputDirection = getDirection( uv, faceIndex );\n\t\t\tgl_Position = vec4( position, 1.0 );\n\n\t\t}\n\t`}function Su(r){let t=new WeakMap,e=null;function n(a){if(a&&a.isTexture){let c=a.mapping,l=c===Hs||c===Ws,h=c===Xn||c===qn;if(l||h)if(a.isRenderTargetTexture&&a.needsPMREMUpdate===!0){a.needsPMREMUpdate=!1;let f=t.get(a);return e===null&&(e=new es(r)),f=l?e.fromEquirectangular(a,f):e.fromCubemap(a,f),t.set(a,f),f.texture}else{if(t.has(a))return t.get(a).texture;{let f=a.image;if(l&&f&&f.height>0||h&&f&&i(f)){e===null&&(e=new es(r));let u=l?e.fromEquirectangular(a):e.fromCubemap(a);return t.set(a,u),a.addEventListener("dispose",s),u.texture}else return null}}}return a}function i(a){let c=0,l=6;for(let h=0;ht.maxTextureSize&&(X=Math.ceil(L/t.maxTextureSize),L=t.maxTextureSize);let q=new Float32Array(L*X*4*p),z=new Yi(q,L,X,p);z.type=gn,z.needsUpdate=!0;let R=S*4;for(let Y=0;Y0)return r;let i=t*e,s=Ea[i];if(s===void 0&&(s=new Float32Array(i),Ea[i]=s),t!==0){n.toArray(s,0);for(let o=1,a=0;o!==t;++o)a+=e,r[o].toArray(s,a)}return s}function Yt(r,t){if(r.length!==t.length)return!1;for(let e=0,n=r.length;e":" "} ${a}: ${e[o]}`)}return n.join(`\n`)}function bd(r){switch(r){case vn:return["Linear","( value )"];case zt:return["sRGB","( value )"];default:return console.warn("THREE.WebGLProgram: Unsupported encoding:",r),["Linear","( value )"]}}function Na(r,t,e){let n=r.getShaderParameter(t,35713),i=r.getShaderInfoLog(t).trim();if(n&&i==="")return"";let s=/ERROR: 0:(\\d+)/.exec(i);if(s){let o=parseInt(s[1]);return e.toUpperCase()+`\n\n`+i+`\n\n`+Md(r.getShaderSource(t),o)}else return i}function wd(r,t){let e=bd(t);return"vec4 "+r+"( vec4 value ) { return LinearTo"+e[0]+e[1]+"; }"}function Sd(r,t){let e;switch(t){case No:e="Linear";break;case Fo:e="Reinhard";break;case zo:e="OptimizedCineon";break;case Oo:e="ACESFilmic";break;case Uo:e="Custom";break;default:console.warn("THREE.WebGLProgram: Unsupported toneMapping:",t),e="Linear"}return"vec3 "+r+"( vec3 color ) { return "+e+"ToneMapping( color ); }"}function Td(r){return[r.extensionDerivatives||r.envMapCubeUVHeight||r.bumpMap||r.tangentSpaceNormalMap||r.clearcoatNormalMap||r.flatShading||r.shaderID==="physical"?"#extension GL_OES_standard_derivatives : enable":"",(r.extensionFragDepth||r.logarithmicDepthBuffer)&&r.rendererExtensionFragDepth?"#extension GL_EXT_frag_depth : enable":"",r.extensionDrawBuffers&&r.rendererExtensionDrawBuffers?"#extension GL_EXT_draw_buffers : require":"",(r.extensionShaderTextureLOD||r.envMap||r.transmission)&&r.rendererExtensionShaderTextureLod?"#extension GL_EXT_shader_texture_lod : enable":""].filter(hi).join(`\n`)}function Ad(r){let t=[];for(let e in r){let n=r[e];n!==!1&&t.push("#define "+e+" "+n)}return t.join(`\n`)}function Ed(r,t){let e={},n=r.getProgramParameter(t,35721);for(let i=0;i/gm;function ir(r){return r.replace(Cd,Pd)}function Pd(r,t){let e=wt[t];if(e===void 0)throw new Error("Can not resolve #include <"+t+">");return ir(e)}var Rd=/#pragma unroll_loop_start\\s+for\\s*\\(\\s*int\\s+i\\s*=\\s*(\\d+)\\s*;\\s*i\\s*<\\s*(\\d+)\\s*;\\s*i\\s*\\+\\+\\s*\\)\\s*{([\\s\\S]+?)}\\s+#pragma unroll_loop_end/g;function Oa(r){return r.replace(Rd,Ld)}function Ld(r,t,e,n){let i="";for(let s=parseInt(t);s0&&(d+=`\n`),v=[m,_].filter(hi).join(`\n`),v.length>0&&(v+=`\n`)):(d=[Ua(e),"#define SHADER_NAME "+e.shaderName,_,e.instancing?"#define USE_INSTANCING":"",e.instancingColor?"#define USE_INSTANCING_COLOR":"",e.supportsVertexTextures?"#define VERTEX_TEXTURES":"",e.useFog&&e.fog?"#define USE_FOG":"",e.useFog&&e.fogExp2?"#define FOG_EXP2":"",e.map?"#define USE_MAP":"",e.envMap?"#define USE_ENVMAP":"",e.envMap?"#define "+h:"",e.lightMap?"#define USE_LIGHTMAP":"",e.aoMap?"#define USE_AOMAP":"",e.emissiveMap?"#define USE_EMISSIVEMAP":"",e.bumpMap?"#define USE_BUMPMAP":"",e.normalMap?"#define USE_NORMALMAP":"",e.normalMap&&e.objectSpaceNormalMap?"#define OBJECTSPACE_NORMALMAP":"",e.normalMap&&e.tangentSpaceNormalMap?"#define TANGENTSPACE_NORMALMAP":"",e.clearcoatMap?"#define USE_CLEARCOATMAP":"",e.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",e.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",e.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",e.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",e.displacementMap&&e.supportsVertexTextures?"#define USE_DISPLACEMENTMAP":"",e.specularMap?"#define USE_SPECULARMAP":"",e.specularIntensityMap?"#define USE_SPECULARINTENSITYMAP":"",e.specularColorMap?"#define USE_SPECULARCOLORMAP":"",e.roughnessMap?"#define USE_ROUGHNESSMAP":"",e.metalnessMap?"#define USE_METALNESSMAP":"",e.alphaMap?"#define USE_ALPHAMAP":"",e.transmission?"#define USE_TRANSMISSION":"",e.transmissionMap?"#define USE_TRANSMISSIONMAP":"",e.thicknessMap?"#define USE_THICKNESSMAP":"",e.sheenColorMap?"#define USE_SHEENCOLORMAP":"",e.sheenRoughnessMap?"#define USE_SHEENROUGHNESSMAP":"",e.vertexTangents?"#define USE_TANGENT":"",e.vertexColors?"#define USE_COLOR":"",e.vertexAlphas?"#define USE_COLOR_ALPHA":"",e.vertexUvs?"#define USE_UV":"",e.uvsVertexOnly?"#define UVS_VERTEX_ONLY":"",e.flatShading?"#define FLAT_SHADED":"",e.skinning?"#define USE_SKINNING":"",e.morphTargets?"#define USE_MORPHTARGETS":"",e.morphNormals&&e.flatShading===!1?"#define USE_MORPHNORMALS":"",e.morphColors&&e.isWebGL2?"#define USE_MORPHCOLORS":"",e.morphTargetsCount>0&&e.isWebGL2?"#define MORPHTARGETS_TEXTURE":"",e.morphTargetsCount>0&&e.isWebGL2?"#define MORPHTARGETS_TEXTURE_STRIDE "+e.morphTextureStride:"",e.morphTargetsCount>0&&e.isWebGL2?"#define MORPHTARGETS_COUNT "+e.morphTargetsCount:"",e.doubleSided?"#define DOUBLE_SIDED":"",e.flipSided?"#define FLIP_SIDED":"",e.shadowMapEnabled?"#define USE_SHADOWMAP":"",e.shadowMapEnabled?"#define "+c:"",e.sizeAttenuation?"#define USE_SIZEATTENUATION":"",e.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",e.logarithmicDepthBuffer&&e.rendererExtensionFragDepth?"#define USE_LOGDEPTHBUF_EXT":"","uniform mat4 modelMatrix;","uniform mat4 modelViewMatrix;","uniform mat4 projectionMatrix;","uniform mat4 viewMatrix;","uniform mat3 normalMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;","#ifdef USE_INSTANCING","\tattribute mat4 instanceMatrix;","#endif","#ifdef USE_INSTANCING_COLOR","\tattribute vec3 instanceColor;","#endif","attribute vec3 position;","attribute vec3 normal;","attribute vec2 uv;","#ifdef USE_TANGENT","\tattribute vec4 tangent;","#endif","#if defined( USE_COLOR_ALPHA )","\tattribute vec4 color;","#elif defined( USE_COLOR )","\tattribute vec3 color;","#endif","#if ( defined( USE_MORPHTARGETS ) && ! defined( MORPHTARGETS_TEXTURE ) )","\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",`\n`].filter(hi).join(`\n`),v=[m,Ua(e),"#define SHADER_NAME "+e.shaderName,_,e.useFog&&e.fog?"#define USE_FOG":"",e.useFog&&e.fogExp2?"#define FOG_EXP2":"",e.map?"#define USE_MAP":"",e.matcap?"#define USE_MATCAP":"",e.envMap?"#define USE_ENVMAP":"",e.envMap?"#define "+l:"",e.envMap?"#define "+h:"",e.envMap?"#define "+f:"",u?"#define CUBEUV_TEXEL_WIDTH "+u.texelWidth:"",u?"#define CUBEUV_TEXEL_HEIGHT "+u.texelHeight:"",u?"#define CUBEUV_MAX_MIP "+u.maxMip+".0":"",e.lightMap?"#define USE_LIGHTMAP":"",e.aoMap?"#define USE_AOMAP":"",e.emissiveMap?"#define USE_EMISSIVEMAP":"",e.bumpMap?"#define USE_BUMPMAP":"",e.normalMap?"#define USE_NORMALMAP":"",e.normalMap&&e.objectSpaceNormalMap?"#define OBJECTSPACE_NORMALMAP":"",e.normalMap&&e.tangentSpaceNormalMap?"#define TANGENTSPACE_NORMALMAP":"",e.clearcoat?"#define USE_CLEARCOAT":"",e.clearcoatMap?"#define USE_CLEARCOATMAP":"",e.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",e.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",e.iridescence?"#define USE_IRIDESCENCE":"",e.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",e.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",e.specularMap?"#define USE_SPECULARMAP":"",e.specularIntensityMap?"#define USE_SPECULARINTENSITYMAP":"",e.specularColorMap?"#define USE_SPECULARCOLORMAP":"",e.roughnessMap?"#define USE_ROUGHNESSMAP":"",e.metalnessMap?"#define USE_METALNESSMAP":"",e.alphaMap?"#define USE_ALPHAMAP":"",e.alphaTest?"#define USE_ALPHATEST":"",e.sheen?"#define USE_SHEEN":"",e.sheenColorMap?"#define USE_SHEENCOLORMAP":"",e.sheenRoughnessMap?"#define USE_SHEENROUGHNESSMAP":"",e.transmission?"#define USE_TRANSMISSION":"",e.transmissionMap?"#define USE_TRANSMISSIONMAP":"",e.thicknessMap?"#define USE_THICKNESSMAP":"",e.decodeVideoTexture?"#define DECODE_VIDEO_TEXTURE":"",e.vertexTangents?"#define USE_TANGENT":"",e.vertexColors||e.instancingColor?"#define USE_COLOR":"",e.vertexAlphas?"#define USE_COLOR_ALPHA":"",e.vertexUvs?"#define USE_UV":"",e.uvsVertexOnly?"#define UVS_VERTEX_ONLY":"",e.gradientMap?"#define USE_GRADIENTMAP":"",e.flatShading?"#define FLAT_SHADED":"",e.doubleSided?"#define DOUBLE_SIDED":"",e.flipSided?"#define FLIP_SIDED":"",e.shadowMapEnabled?"#define USE_SHADOWMAP":"",e.shadowMapEnabled?"#define "+c:"",e.premultipliedAlpha?"#define PREMULTIPLIED_ALPHA":"",e.physicallyCorrectLights?"#define PHYSICALLY_CORRECT_LIGHTS":"",e.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",e.logarithmicDepthBuffer&&e.rendererExtensionFragDepth?"#define USE_LOGDEPTHBUF_EXT":"","uniform mat4 viewMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;",e.toneMapping!==We?"#define TONE_MAPPING":"",e.toneMapping!==We?wt.tonemapping_pars_fragment:"",e.toneMapping!==We?Sd("toneMapping",e.toneMapping):"",e.dithering?"#define DITHERING":"",e.opaque?"#define OPAQUE":"",wt.encodings_pars_fragment,wd("linearToOutputTexel",e.outputEncoding),e.useDepthPacking?"#define DEPTH_PACKING "+e.depthPacking:"",`\n`].filter(hi).join(`\n`)),o=ir(o),o=Fa(o,e),o=za(o,e),a=ir(a),a=Fa(a,e),a=za(a,e),o=Oa(o),a=Oa(a),e.isWebGL2&&e.isRawShaderMaterial!==!0&&(T=`#version 300 es\n`,d=["precision mediump sampler2DArray;","#define attribute in","#define varying out","#define texture2D texture"].join(`\n`)+`\n`+d,v=["#define varying in",e.glslVersion===ca?"":"layout(location = 0) out highp vec4 pc_fragColor;",e.glslVersion===ca?"":"#define gl_FragColor pc_fragColor","#define gl_FragDepthEXT gl_FragDepth","#define texture2D texture","#define textureCube texture","#define texture2DProj textureProj","#define texture2DLodEXT textureLod","#define texture2DProjLodEXT textureProjLod","#define textureCubeLodEXT textureLod","#define texture2DGradEXT textureGrad","#define texture2DProjGradEXT textureProjGrad","#define textureCubeGradEXT textureGrad"].join(`\n`)+`\n`+v);let b=T+d+o,M=T+v+a,A=Da(i,35633,b),C=Da(i,35632,M);if(i.attachShader(p,A),i.attachShader(p,C),e.index0AttributeName!==void 0?i.bindAttribLocation(p,0,e.index0AttributeName):e.morphTargets===!0&&i.bindAttribLocation(p,0,"position"),i.linkProgram(p),r.debug.checkShaderErrors){let S=i.getProgramInfoLog(p).trim(),L=i.getShaderInfoLog(A).trim(),X=i.getShaderInfoLog(C).trim(),q=!0,z=!0;if(i.getProgramParameter(p,35714)===!1){q=!1;let R=Na(i,A,"vertex"),G=Na(i,C,"fragment");console.error("THREE.WebGLProgram: Shader Error "+i.getError()+" - VALIDATE_STATUS "+i.getProgramParameter(p,35715)+`\n\nProgram Info Log: `+S+`\n`+R+`\n`+G)}else S!==""?console.warn("THREE.WebGLProgram: Program Info Log:",S):(L===""||X==="")&&(z=!1);z&&(this.diagnostics={runnable:q,programLog:S,vertexShader:{log:L,prefix:d},fragmentShader:{log:X,prefix:v}})}i.deleteShader(A),i.deleteShader(C);let I;this.getUniforms=function(){return I===void 0&&(I=new Wn(i,p)),I};let x;return this.getAttributes=function(){return x===void 0&&(x=Ed(i,p)),x},this.destroy=function(){n.releaseStatesOfProgram(this),i.deleteProgram(p),this.program=void 0},this.name=e.shaderName,this.id=vd++,this.cacheKey=t,this.usedTimes=1,this.program=p,this.vertexShader=A,this.fragmentShader=C,this}var Ud=0,sr=class{constructor(){this.shaderCache=new Map,this.materialCache=new Map}update(t){let e=t.vertexShader,n=t.fragmentShader,i=this._getShaderStage(e),s=this._getShaderStage(n),o=this._getShaderCacheForMaterial(t);return o.has(i)===!1&&(o.add(i),i.usedTimes++),o.has(s)===!1&&(o.add(s),s.usedTimes++),this}remove(t){let e=this.materialCache.get(t);for(let n of e)n.usedTimes--,n.usedTimes===0&&this.shaderCache.delete(n.code);return this.materialCache.delete(t),this}getVertexShaderID(t){return this._getShaderStage(t.vertexShader).id}getFragmentShaderID(t){return this._getShaderStage(t.fragmentShader).id}dispose(){this.shaderCache.clear(),this.materialCache.clear()}_getShaderCacheForMaterial(t){let e=this.materialCache,n=e.get(t);return n===void 0&&(n=new Set,e.set(t,n)),n}_getShaderStage(t){let e=this.shaderCache,n=e.get(t);return n===void 0&&(n=new rr(t),e.set(t,n)),n}},rr=class{constructor(t){this.id=Ud++,this.code=t,this.usedTimes=0}};function Bd(r,t,e,n,i,s,o){let a=new Zi,c=new sr,l=[],h=i.isWebGL2,f=i.logarithmicDepthBuffer,u=i.vertexTextures,m=i.precision,_={MeshDepthMaterial:"depth",MeshDistanceMaterial:"distanceRGBA",MeshNormalMaterial:"normal",MeshBasicMaterial:"basic",MeshLambertMaterial:"lambert",MeshPhongMaterial:"phong",MeshToonMaterial:"toon",MeshStandardMaterial:"physical",MeshPhysicalMaterial:"physical",MeshMatcapMaterial:"matcap",LineBasicMaterial:"basic",LineDashedMaterial:"dashed",PointsMaterial:"points",ShadowMaterial:"shadow",SpriteMaterial:"sprite"};function p(x,S,L,X,q){let z=X.fog,R=q.geometry,G=x.isMeshStandardMaterial?X.environment:null,Y=(x.isMeshStandardMaterial?e:t).get(x.envMap||G),j=Y&&Y.mapping===ns?Y.image.height:null,W=_[x.type];x.precision!==null&&(m=i.getMaxPrecision(x.precision),m!==x.precision&&console.warn("THREE.WebGLProgram.getParameters:",x.precision,"not supported, using",m,"instead."));let Q=R.morphAttributes.position||R.morphAttributes.normal||R.morphAttributes.color,Z=Q!==void 0?Q.length:0,ft=0;R.morphAttributes.position!==void 0&&(ft=1),R.morphAttributes.normal!==void 0&&(ft=2),R.morphAttributes.color!==void 0&&(ft=3);let F,J,nt,it;if(W){let Ft=De[W];F=Ft.vertexShader,J=Ft.fragmentShader}else F=x.vertexShader,J=x.fragmentShader,c.update(x),nt=c.getVertexShaderID(x),it=c.getFragmentShaderID(x);let O=r.getRenderTarget(),Mt=x.alphaTest>0,ht=x.clearcoat>0,ut=x.iridescence>0;return{isWebGL2:h,shaderID:W,shaderName:x.type,vertexShader:F,fragmentShader:J,defines:x.defines,customVertexShaderID:nt,customFragmentShaderID:it,isRawShaderMaterial:x.isRawShaderMaterial===!0,glslVersion:x.glslVersion,precision:m,instancing:q.isInstancedMesh===!0,instancingColor:q.isInstancedMesh===!0&&q.instanceColor!==null,supportsVertexTextures:u,outputEncoding:O===null?r.outputEncoding:O.isXRRenderTarget===!0?O.texture.encoding:vn,map:!!x.map,matcap:!!x.matcap,envMap:!!Y,envMapMode:Y&&Y.mapping,envMapCubeUVHeight:j,lightMap:!!x.lightMap,aoMap:!!x.aoMap,emissiveMap:!!x.emissiveMap,bumpMap:!!x.bumpMap,normalMap:!!x.normalMap,objectSpaceNormalMap:x.normalMapType===sl,tangentSpaceNormalMap:x.normalMapType===il,decodeVideoTexture:!!x.map&&x.map.isVideoTexture===!0&&x.map.encoding===zt,clearcoat:ht,clearcoatMap:ht&&!!x.clearcoatMap,clearcoatRoughnessMap:ht&&!!x.clearcoatRoughnessMap,clearcoatNormalMap:ht&&!!x.clearcoatNormalMap,iridescence:ut,iridescenceMap:ut&&!!x.iridescenceMap,iridescenceThicknessMap:ut&&!!x.iridescenceThicknessMap,displacementMap:!!x.displacementMap,roughnessMap:!!x.roughnessMap,metalnessMap:!!x.metalnessMap,specularMap:!!x.specularMap,specularIntensityMap:!!x.specularIntensityMap,specularColorMap:!!x.specularColorMap,opaque:x.transparent===!1&&x.blending===Gn,alphaMap:!!x.alphaMap,alphaTest:Mt,gradientMap:!!x.gradientMap,sheen:x.sheen>0,sheenColorMap:!!x.sheenColorMap,sheenRoughnessMap:!!x.sheenRoughnessMap,transmission:x.transmission>0,transmissionMap:!!x.transmissionMap,thicknessMap:!!x.thicknessMap,combine:x.combine,vertexTangents:!!x.normalMap&&!!R.attributes.tangent,vertexColors:x.vertexColors,vertexAlphas:x.vertexColors===!0&&!!R.attributes.color&&R.attributes.color.itemSize===4,vertexUvs:!!x.map||!!x.bumpMap||!!x.normalMap||!!x.specularMap||!!x.alphaMap||!!x.emissiveMap||!!x.roughnessMap||!!x.metalnessMap||!!x.clearcoatMap||!!x.clearcoatRoughnessMap||!!x.clearcoatNormalMap||!!x.iridescenceMap||!!x.iridescenceThicknessMap||!!x.displacementMap||!!x.transmissionMap||!!x.thicknessMap||!!x.specularIntensityMap||!!x.specularColorMap||!!x.sheenColorMap||!!x.sheenRoughnessMap,uvsVertexOnly:!(x.map||x.bumpMap||x.normalMap||x.specularMap||x.alphaMap||x.emissiveMap||x.roughnessMap||x.metalnessMap||x.clearcoatNormalMap||x.iridescenceMap||x.iridescenceThicknessMap||x.transmission>0||x.transmissionMap||x.thicknessMap||x.specularIntensityMap||x.specularColorMap||x.sheen>0||x.sheenColorMap||x.sheenRoughnessMap)&&!!x.displacementMap,fog:!!z,useFog:x.fog===!0,fogExp2:z&&z.isFogExp2,flatShading:!!x.flatShading,sizeAttenuation:x.sizeAttenuation,logarithmicDepthBuffer:f,skinning:q.isSkinnedMesh===!0,morphTargets:R.morphAttributes.position!==void 0,morphNormals:R.morphAttributes.normal!==void 0,morphColors:R.morphAttributes.color!==void 0,morphTargetsCount:Z,morphTextureStride:ft,numDirLights:S.directional.length,numPointLights:S.point.length,numSpotLights:S.spot.length,numSpotLightMaps:S.spotLightMap.length,numRectAreaLights:S.rectArea.length,numHemiLights:S.hemi.length,numDirLightShadows:S.directionalShadowMap.length,numPointLightShadows:S.pointShadowMap.length,numSpotLightShadows:S.spotShadowMap.length,numSpotLightShadowsWithMaps:S.numSpotLightShadowsWithMaps,numClippingPlanes:o.numPlanes,numClipIntersection:o.numIntersection,dithering:x.dithering,shadowMapEnabled:r.shadowMap.enabled&&L.length>0,shadowMapType:r.shadowMap.type,toneMapping:x.toneMapped?r.toneMapping:We,physicallyCorrectLights:r.physicallyCorrectLights,premultipliedAlpha:x.premultipliedAlpha,doubleSided:x.side===tn,flipSided:x.side===ye,useDepthPacking:!!x.depthPacking,depthPacking:x.depthPacking||0,index0AttributeName:x.index0AttributeName,extensionDerivatives:x.extensions&&x.extensions.derivatives,extensionFragDepth:x.extensions&&x.extensions.fragDepth,extensionDrawBuffers:x.extensions&&x.extensions.drawBuffers,extensionShaderTextureLOD:x.extensions&&x.extensions.shaderTextureLOD,rendererExtensionFragDepth:h||n.has("EXT_frag_depth"),rendererExtensionDrawBuffers:h||n.has("WEBGL_draw_buffers"),rendererExtensionShaderTextureLod:h||n.has("EXT_shader_texture_lod"),customProgramCacheKey:x.customProgramCacheKey()}}function d(x){let S=[];if(x.shaderID?S.push(x.shaderID):(S.push(x.customVertexShaderID),S.push(x.customFragmentShaderID)),x.defines!==void 0)for(let L in x.defines)S.push(L),S.push(x.defines[L]);return x.isRawShaderMaterial===!1&&(v(S,x),T(S,x),S.push(r.outputEncoding)),S.push(x.customProgramCacheKey),S.join()}function v(x,S){x.push(S.precision),x.push(S.outputEncoding),x.push(S.envMapMode),x.push(S.envMapCubeUVHeight),x.push(S.combine),x.push(S.vertexUvs),x.push(S.fogExp2),x.push(S.sizeAttenuation),x.push(S.morphTargetsCount),x.push(S.morphAttributeCount),x.push(S.numDirLights),x.push(S.numPointLights),x.push(S.numSpotLights),x.push(S.numSpotLightMaps),x.push(S.numHemiLights),x.push(S.numRectAreaLights),x.push(S.numDirLightShadows),x.push(S.numPointLightShadows),x.push(S.numSpotLightShadows),x.push(S.numSpotLightShadowsWithMaps),x.push(S.shadowMapType),x.push(S.toneMapping),x.push(S.numClippingPlanes),x.push(S.numClipIntersection),x.push(S.depthPacking)}function T(x,S){a.disableAll(),S.isWebGL2&&a.enable(0),S.supportsVertexTextures&&a.enable(1),S.instancing&&a.enable(2),S.instancingColor&&a.enable(3),S.map&&a.enable(4),S.matcap&&a.enable(5),S.envMap&&a.enable(6),S.lightMap&&a.enable(7),S.aoMap&&a.enable(8),S.emissiveMap&&a.enable(9),S.bumpMap&&a.enable(10),S.normalMap&&a.enable(11),S.objectSpaceNormalMap&&a.enable(12),S.tangentSpaceNormalMap&&a.enable(13),S.clearcoat&&a.enable(14),S.clearcoatMap&&a.enable(15),S.clearcoatRoughnessMap&&a.enable(16),S.clearcoatNormalMap&&a.enable(17),S.iridescence&&a.enable(18),S.iridescenceMap&&a.enable(19),S.iridescenceThicknessMap&&a.enable(20),S.displacementMap&&a.enable(21),S.specularMap&&a.enable(22),S.roughnessMap&&a.enable(23),S.metalnessMap&&a.enable(24),S.gradientMap&&a.enable(25),S.alphaMap&&a.enable(26),S.alphaTest&&a.enable(27),S.vertexColors&&a.enable(28),S.vertexAlphas&&a.enable(29),S.vertexUvs&&a.enable(30),S.vertexTangents&&a.enable(31),S.uvsVertexOnly&&a.enable(32),x.push(a.mask),a.disableAll(),S.fog&&a.enable(0),S.useFog&&a.enable(1),S.flatShading&&a.enable(2),S.logarithmicDepthBuffer&&a.enable(3),S.skinning&&a.enable(4),S.morphTargets&&a.enable(5),S.morphNormals&&a.enable(6),S.morphColors&&a.enable(7),S.premultipliedAlpha&&a.enable(8),S.shadowMapEnabled&&a.enable(9),S.physicallyCorrectLights&&a.enable(10),S.doubleSided&&a.enable(11),S.flipSided&&a.enable(12),S.useDepthPacking&&a.enable(13),S.dithering&&a.enable(14),S.specularIntensityMap&&a.enable(15),S.specularColorMap&&a.enable(16),S.transmission&&a.enable(17),S.transmissionMap&&a.enable(18),S.thicknessMap&&a.enable(19),S.sheen&&a.enable(20),S.sheenColorMap&&a.enable(21),S.sheenRoughnessMap&&a.enable(22),S.decodeVideoTexture&&a.enable(23),S.opaque&&a.enable(24),x.push(a.mask)}function b(x){let S=_[x.type],L;if(S){let X=De[S];L=Il.clone(X.uniforms)}else L=x.uniforms;return L}function M(x,S){let L;for(let X=0,q=l.length;X0?n.push(v):m.transparent===!0?i.push(v):e.push(v)}function c(f,u,m,_,p,d){let v=o(f,u,m,_,p,d);m.transmission>0?n.unshift(v):m.transparent===!0?i.unshift(v):e.unshift(v)}function l(f,u){e.length>1&&e.sort(f||Vd),n.length>1&&n.sort(u||Ba),i.length>1&&i.sort(u||Ba)}function h(){for(let f=t,u=r.length;f=s.length?(o=new ka,s.push(o)):o=s[i],o}function e(){r=new WeakMap}return{get:t,dispose:e}}function Hd(){let r={};return{get:function(t){if(r[t.id]!==void 0)return r[t.id];let e;switch(t.type){case"DirectionalLight":e={direction:new N,color:new Ot};break;case"SpotLight":e={position:new N,direction:new N,color:new Ot,distance:0,coneCos:0,penumbraCos:0,decay:0};break;case"PointLight":e={position:new N,color:new Ot,distance:0,decay:0};break;case"HemisphereLight":e={direction:new N,skyColor:new Ot,groundColor:new Ot};break;case"RectAreaLight":e={color:new Ot,position:new N,halfWidth:new N,halfHeight:new N};break}return r[t.id]=e,e}}}function Wd(){let r={};return{get:function(t){if(r[t.id]!==void 0)return r[t.id];let e;switch(t.type){case"DirectionalLight":e={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new Nt};break;case"SpotLight":e={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new Nt};break;case"PointLight":e={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new Nt,shadowCameraNear:1,shadowCameraFar:1e3};break}return r[t.id]=e,e}}}var Xd=0;function qd(r,t){return(t.castShadow?2:0)-(r.castShadow?2:0)+(t.map?1:0)-(r.map?1:0)}function Yd(r,t){let e=new Hd,n=Wd(),i={version:0,hash:{directionalLength:-1,pointLength:-1,spotLength:-1,rectAreaLength:-1,hemiLength:-1,numDirectionalShadows:-1,numPointShadows:-1,numSpotShadows:-1,numSpotMaps:-1},ambient:[0,0,0],probe:[],directional:[],directionalShadow:[],directionalShadowMap:[],directionalShadowMatrix:[],spot:[],spotLightMap:[],spotShadow:[],spotShadowMap:[],spotLightMatrix:[],rectArea:[],rectAreaLTC1:null,rectAreaLTC2:null,point:[],pointShadow:[],pointShadowMap:[],pointShadowMatrix:[],hemi:[],numSpotLightShadowsWithMaps:0};for(let h=0;h<9;h++)i.probe.push(new N);let s=new N,o=new qt,a=new qt;function c(h,f){let u=0,m=0,_=0;for(let X=0;X<9;X++)i.probe[X].set(0,0,0);let p=0,d=0,v=0,T=0,b=0,M=0,A=0,C=0,I=0,x=0;h.sort(qd);let S=f!==!0?Math.PI:1;for(let X=0,q=h.length;X0&&(t.isWebGL2||r.has("OES_texture_float_linear")===!0?(i.rectAreaLTC1=et.LTC_FLOAT_1,i.rectAreaLTC2=et.LTC_FLOAT_2):r.has("OES_texture_half_float_linear")===!0?(i.rectAreaLTC1=et.LTC_HALF_1,i.rectAreaLTC2=et.LTC_HALF_2):console.error("THREE.WebGLRenderer: Unable to use RectAreaLight. Missing WebGL extensions.")),i.ambient[0]=u,i.ambient[1]=m,i.ambient[2]=_;let L=i.hash;(L.directionalLength!==p||L.pointLength!==d||L.spotLength!==v||L.rectAreaLength!==T||L.hemiLength!==b||L.numDirectionalShadows!==M||L.numPointShadows!==A||L.numSpotShadows!==C||L.numSpotMaps!==I)&&(i.directional.length=p,i.spot.length=v,i.rectArea.length=T,i.point.length=d,i.hemi.length=b,i.directionalShadow.length=M,i.directionalShadowMap.length=M,i.pointShadow.length=A,i.pointShadowMap.length=A,i.spotShadow.length=C,i.spotShadowMap.length=C,i.directionalShadowMatrix.length=M,i.pointShadowMatrix.length=A,i.spotLightMatrix.length=C+I-x,i.spotLightMap.length=I,i.numSpotLightShadowsWithMaps=x,L.directionalLength=p,L.pointLength=d,L.spotLength=v,L.rectAreaLength=T,L.hemiLength=b,L.numDirectionalShadows=M,L.numPointShadows=A,L.numSpotShadows=C,L.numSpotMaps=I,i.version=Xd++)}function l(h,f){let u=0,m=0,_=0,p=0,d=0,v=f.matrixWorldInverse;for(let T=0,b=h.length;T=a.length?(c=new Va(r,t),a.push(c)):c=a[o],c}function i(){e=new WeakMap}return{get:n,dispose:i}}var ar=class extends Jn{constructor(t){super(),this.isMeshDepthMaterial=!0,this.type="MeshDepthMaterial",this.depthPacking=el,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.setValues(t)}copy(t){return super.copy(t),this.depthPacking=t.depthPacking,this.map=t.map,this.alphaMap=t.alphaMap,this.displacementMap=t.displacementMap,this.displacementScale=t.displacementScale,this.displacementBias=t.displacementBias,this.wireframe=t.wireframe,this.wireframeLinewidth=t.wireframeLinewidth,this}},or=class extends Jn{constructor(t){super(),this.isMeshDistanceMaterial=!0,this.type="MeshDistanceMaterial",this.referencePosition=new N,this.nearDistance=1,this.farDistance=1e3,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.setValues(t)}copy(t){return super.copy(t),this.referencePosition.copy(t.referencePosition),this.nearDistance=t.nearDistance,this.farDistance=t.farDistance,this.map=t.map,this.alphaMap=t.alphaMap,this.displacementMap=t.displacementMap,this.displacementScale=t.displacementScale,this.displacementBias=t.displacementBias,this}},Jd=`void main() {\n\tgl_Position = vec4( position, 1.0 );\n}`,$d=`uniform sampler2D shadow_pass;\nuniform vec2 resolution;\nuniform float radius;\n#include \nvoid main() {\n\tconst float samples = float( VSM_SAMPLES );\n\tfloat mean = 0.0;\n\tfloat squared_mean = 0.0;\n\tfloat uvStride = samples <= 1.0 ? 0.0 : 2.0 / ( samples - 1.0 );\n\tfloat uvStart = samples <= 1.0 ? 0.0 : - 1.0;\n\tfor ( float i = 0.0; i < samples; i ++ ) {\n\t\tfloat uvOffset = uvStart + i * uvStride;\n\t\t#ifdef HORIZONTAL_PASS\n\t\t\tvec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( uvOffset, 0.0 ) * radius ) / resolution ) );\n\t\t\tmean += distribution.x;\n\t\t\tsquared_mean += distribution.y * distribution.y + distribution.x * distribution.x;\n\t\t#else\n\t\t\tfloat depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, uvOffset ) * radius ) / resolution ) );\n\t\t\tmean += depth;\n\t\t\tsquared_mean += depth * depth;\n\t\t#endif\n\t}\n\tmean = mean / samples;\n\tsquared_mean = squared_mean / samples;\n\tfloat std_dev = sqrt( squared_mean - mean * mean );\n\tgl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) );\n}`;function Kd(r,t,e){let n=new ts,i=new Nt,s=new Nt,o=new Xt,a=new ar({depthPacking:nl}),c=new or,l={},h=e.maxTextureSize,f={[nn]:ye,[ye]:nn,[tn]:tn},u=new Ze({defines:{VSM_SAMPLES:8},uniforms:{shadow_pass:{value:null},resolution:{value:new Nt},radius:{value:4}},vertexShader:Jd,fragmentShader:$d}),m=u.clone();m.defines.HORIZONTAL_PASS=1;let _=new Ye;_.setAttribute("position",new ce(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));let p=new Ne(_,u),d=this;this.enabled=!1,this.autoUpdate=!0,this.needsUpdate=!1,this.type=Ga,this.render=function(M,A,C){if(d.enabled===!1||d.autoUpdate===!1&&d.needsUpdate===!1||M.length===0)return;let I=r.getRenderTarget(),x=r.getActiveCubeFace(),S=r.getActiveMipmapLevel(),L=r.state;L.setBlending(en),L.buffers.color.setClear(1,1,1,1),L.buffers.depth.setTest(!0),L.setScissorTest(!1);for(let X=0,q=M.length;Xh||i.y>h)&&(i.x>h&&(s.x=Math.floor(h/G.x),i.x=s.x*G.x,R.mapSize.x=s.x),i.y>h&&(s.y=Math.floor(h/G.y),i.y=s.y*G.y,R.mapSize.y=s.y)),R.map===null){let j=this.type!==li?{minFilter:ae,magFilter:ae}:{};R.map=new qe(i.x,i.y,j),R.map.texture.name=z.name+".shadowMap",R.camera.updateProjectionMatrix()}r.setRenderTarget(R.map),r.clear();let Y=R.getViewportCount();for(let j=0;j0||A.map&&A.alphaTest>0){let q=L.uuid,z=A.uuid,R=l[q];R===void 0&&(R={},l[q]=R);let G=R[z];G===void 0&&(G=L.clone(),R[z]=G),L=G}return L.visible=A.visible,L.wireframe=A.wireframe,S===li?L.side=A.shadowSide!==null?A.shadowSide:A.side:L.side=A.shadowSide!==null?A.shadowSide:f[A.side],L.alphaMap=A.alphaMap,L.alphaTest=A.alphaTest,L.map=A.map,L.clipShadows=A.clipShadows,L.clippingPlanes=A.clippingPlanes,L.clipIntersection=A.clipIntersection,L.displacementMap=A.displacementMap,L.displacementScale=A.displacementScale,L.displacementBias=A.displacementBias,L.wireframeLinewidth=A.wireframeLinewidth,L.linewidth=A.linewidth,C.isPointLight===!0&&L.isMeshDistanceMaterial===!0&&(L.referencePosition.setFromMatrixPosition(C.matrixWorld),L.nearDistance=I,L.farDistance=x),L}function b(M,A,C,I,x){if(M.visible===!1)return;if(M.layers.test(A.layers)&&(M.isMesh||M.isLine||M.isPoints)&&(M.castShadow||M.receiveShadow&&x===li)&&(!M.frustumCulled||n.intersectsObject(M))){M.modelViewMatrix.multiplyMatrices(C.matrixWorldInverse,M.matrixWorld);let X=t.update(M),q=M.material;if(Array.isArray(q)){let z=X.groups;for(let R=0,G=z.length;R=1):W.indexOf("OpenGL ES")!==-1&&(j=parseFloat(/^OpenGL ES (\\d)/.exec(W)[1]),Y=j>=2);let Q=null,Z={},ft=r.getParameter(3088),F=r.getParameter(2978),J=new Xt().fromArray(ft),nt=new Xt().fromArray(F);function it(E,U,$){let at=new Uint8Array(4),ct=r.createTexture();r.bindTexture(E,ct),r.texParameteri(E,10241,9728),r.texParameteri(E,10240,9728);for(let Lt=0;Lt<$;Lt++)r.texImage2D(U+Lt,0,6408,1,1,0,6408,5121,at);return ct}let O={};O[3553]=it(3553,3553,1),O[34067]=it(34067,34069,6),a.setClear(0,0,0,1),c.setClear(1),l.setClear(0),Mt(2929),c.setFunc(Gs),Qt(!1),Me(Pr),Mt(2884),ne(en);function Mt(E){u[E]!==!0&&(r.enable(E),u[E]=!0)}function ht(E){u[E]!==!1&&(r.disable(E),u[E]=!1)}function ut(E,U){return m[E]!==U?(r.bindFramebuffer(E,U),m[E]=U,n&&(E===36009&&(m[36160]=U),E===36160&&(m[36009]=U)),!0):!1}function ot(E,U){let $=p,at=!1;if(E)if($=_.get(U),$===void 0&&($=[],_.set(U,$)),E.isWebGLMultipleRenderTargets){let ct=E.texture;if($.length!==ct.length||$[0]!==36064){for(let Lt=0,$t=ct.length;Lt<$t;Lt++)$[Lt]=36064+Lt;$.length=ct.length,at=!0}}else $[0]!==36064&&($[0]=36064,at=!0);else $[0]!==1029&&($[0]=1029,at=!0);at&&(e.isWebGL2?r.drawBuffers($):t.get("WEBGL_draw_buffers").drawBuffersWEBGL($))}function Ft(E){return d!==E?(r.useProgram(E),d=E,!0):!1}let bt={[Bn]:32774,[po]:32778,[mo]:32779};if(n)bt[Dr]=32775,bt[Nr]=32776;else{let E=t.get("EXT_blend_minmax");E!==null&&(bt[Dr]=E.MIN_EXT,bt[Nr]=E.MAX_EXT)}let xt={[go]:0,[_o]:1,[xo]:768,[Ha]:770,[So]:776,[bo]:774,[vo]:772,[yo]:769,[Wa]:771,[wo]:775,[Mo]:773};function ne(E,U,$,at,ct,Lt,$t,te){if(E===en){v===!0&&(ht(3042),v=!1);return}if(v===!1&&(Mt(3042),v=!0),E!==fo){if(E!==T||te!==S){if((b!==Bn||C!==Bn)&&(r.blendEquation(32774),b=Bn,C=Bn),te)switch(E){case Gn:r.blendFuncSeparate(1,771,1,771);break;case Rr:r.blendFunc(1,1);break;case Lr:r.blendFuncSeparate(0,769,0,1);break;case Ir:r.blendFuncSeparate(0,768,0,770);break;default:console.error("THREE.WebGLState: Invalid blending: ",E);break}else switch(E){case Gn:r.blendFuncSeparate(770,771,1,771);break;case Rr:r.blendFunc(770,1);break;case Lr:r.blendFuncSeparate(0,769,0,1);break;case Ir:r.blendFunc(0,768);break;default:console.error("THREE.WebGLState: Invalid blending: ",E);break}M=null,A=null,I=null,x=null,T=E,S=te}return}ct=ct||U,Lt=Lt||$,$t=$t||at,(U!==b||ct!==C)&&(r.blendEquationSeparate(bt[U],bt[ct]),b=U,C=ct),($!==M||at!==A||Lt!==I||$t!==x)&&(r.blendFuncSeparate(xt[$],xt[at],xt[Lt],xt[$t]),M=$,A=at,I=Lt,x=$t),T=E,S=!1}function ve(E,U){E.side===tn?ht(2884):Mt(2884);let $=E.side===ye;U&&($=!$),Qt($),E.blending===Gn&&E.transparent===!1?ne(en):ne(E.blending,E.blendEquation,E.blendSrc,E.blendDst,E.blendEquationAlpha,E.blendSrcAlpha,E.blendDstAlpha,E.premultipliedAlpha),c.setFunc(E.depthFunc),c.setTest(E.depthTest),c.setMask(E.depthWrite),a.setMask(E.colorWrite);let at=E.stencilWrite;l.setTest(at),at&&(l.setMask(E.stencilWriteMask),l.setFunc(E.stencilFunc,E.stencilRef,E.stencilFuncMask),l.setOp(E.stencilFail,E.stencilZFail,E.stencilZPass)),Dt(E.polygonOffset,E.polygonOffsetFactor,E.polygonOffsetUnits),E.alphaToCoverage===!0?Mt(32926):ht(32926)}function Qt(E){L!==E&&(E?r.frontFace(2304):r.frontFace(2305),L=E)}function Me(E){E!==co?(Mt(2884),E!==X&&(E===Pr?r.cullFace(1029):E===ho?r.cullFace(1028):r.cullFace(1032))):ht(2884),X=E}function Ht(E){E!==q&&(Y&&r.lineWidth(E),q=E)}function Dt(E,U,$){E?(Mt(32823),(z!==U||R!==$)&&(r.polygonOffset(U,$),z=U,R=$)):ht(32823)}function Fe(E){E?Mt(3089):ht(3089)}function Te(E){E===void 0&&(E=33984+G-1),Q!==E&&(r.activeTexture(E),Q=E)}function w(E,U,$){$===void 0&&(Q===null?$=33984+G-1:$=Q);let at=Z[$];at===void 0&&(at={type:void 0,texture:void 0},Z[$]=at),(at.type!==E||at.texture!==U)&&(Q!==$&&(r.activeTexture($),Q=$),r.bindTexture(E,U||O[E]),at.type=E,at.texture=U)}function g(){let E=Z[Q];E!==void 0&&E.type!==void 0&&(r.bindTexture(E.type,null),E.type=void 0,E.texture=void 0)}function k(){try{r.compressedTexImage2D.apply(r,arguments)}catch(E){console.error("THREE.WebGLState:",E)}}function K(){try{r.compressedTexImage3D.apply(r,arguments)}catch(E){console.error("THREE.WebGLState:",E)}}function tt(){try{r.texSubImage2D.apply(r,arguments)}catch(E){console.error("THREE.WebGLState:",E)}}function st(){try{r.texSubImage3D.apply(r,arguments)}catch(E){console.error("THREE.WebGLState:",E)}}function yt(){try{r.compressedTexSubImage2D.apply(r,arguments)}catch(E){console.error("THREE.WebGLState:",E)}}function rt(){try{r.compressedTexSubImage3D.apply(r,arguments)}catch(E){console.error("THREE.WebGLState:",E)}}function H(){try{r.texStorage2D.apply(r,arguments)}catch(E){console.error("THREE.WebGLState:",E)}}function mt(){try{r.texStorage3D.apply(r,arguments)}catch(E){console.error("THREE.WebGLState:",E)}}function _t(){try{r.texImage2D.apply(r,arguments)}catch(E){console.error("THREE.WebGLState:",E)}}function lt(){try{r.texImage3D.apply(r,arguments)}catch(E){console.error("THREE.WebGLState:",E)}}function gt(E){J.equals(E)===!1&&(r.scissor(E.x,E.y,E.z,E.w),J.copy(E))}function dt(E){nt.equals(E)===!1&&(r.viewport(E.x,E.y,E.z,E.w),nt.copy(E))}function Pt(E,U){let $=f.get(U);$===void 0&&($=new WeakMap,f.set(U,$));let at=$.get(E);at===void 0&&(at=r.getUniformBlockIndex(U,E.name),$.set(E,at))}function Ut(E,U){let at=f.get(U).get(E);h.get(U)!==at&&(r.uniformBlockBinding(U,at,E.__bindingPointIndex),h.set(U,at))}function Jt(){r.disable(3042),r.disable(2884),r.disable(2929),r.disable(32823),r.disable(3089),r.disable(2960),r.disable(32926),r.blendEquation(32774),r.blendFunc(1,0),r.blendFuncSeparate(1,0,1,0),r.colorMask(!0,!0,!0,!0),r.clearColor(0,0,0,0),r.depthMask(!0),r.depthFunc(513),r.clearDepth(1),r.stencilMask(4294967295),r.stencilFunc(519,0,4294967295),r.stencilOp(7680,7680,7680),r.clearStencil(0),r.cullFace(1029),r.frontFace(2305),r.polygonOffset(0,0),r.activeTexture(33984),r.bindFramebuffer(36160,null),n===!0&&(r.bindFramebuffer(36009,null),r.bindFramebuffer(36008,null)),r.useProgram(null),r.lineWidth(1),r.scissor(0,0,r.canvas.width,r.canvas.height),r.viewport(0,0,r.canvas.width,r.canvas.height),u={},Q=null,Z={},m={},_=new WeakMap,p=[],d=null,v=!1,T=null,b=null,M=null,A=null,C=null,I=null,x=null,S=!1,L=null,X=null,q=null,z=null,R=null,J.set(0,0,r.canvas.width,r.canvas.height),nt.set(0,0,r.canvas.width,r.canvas.height),a.reset(),c.reset(),l.reset()}return{buffers:{color:a,depth:c,stencil:l},enable:Mt,disable:ht,bindFramebuffer:ut,drawBuffers:ot,useProgram:Ft,setBlending:ne,setMaterial:ve,setFlipSided:Qt,setCullFace:Me,setLineWidth:Ht,setPolygonOffset:Dt,setScissorTest:Fe,activeTexture:Te,bindTexture:w,unbindTexture:g,compressedTexImage2D:k,compressedTexImage3D:K,texImage2D:_t,texImage3D:lt,updateUBOMapping:Pt,uniformBlockBinding:Ut,texStorage2D:H,texStorage3D:mt,texSubImage2D:tt,texSubImage3D:st,compressedTexSubImage2D:yt,compressedTexSubImage3D:rt,scissor:gt,viewport:dt,reset:Jt}}function Qd(r,t,e,n,i,s,o){let a=i.isWebGL2,c=i.maxTextures,l=i.maxCubemapSize,h=i.maxTextureSize,f=i.maxSamples,u=t.has("WEBGL_multisampled_render_to_texture")?t.get("WEBGL_multisampled_render_to_texture"):null,m=typeof navigator=="undefined"?!1:/OculusBrowser/g.test(navigator.userAgent),_=new WeakMap,p,d=new WeakMap,v=!1;try{v=typeof OffscreenCanvas!="undefined"&&new OffscreenCanvas(1,1).getContext("2d")!==null}catch(w){}function T(w,g){return v?new OffscreenCanvas(w,g):Wi("canvas")}function b(w,g,k,K){let tt=1;if((w.width>K||w.height>K)&&(tt=K/Math.max(w.width,w.height)),tt<1||g===!0)if(typeof HTMLImageElement!="undefined"&&w instanceof HTMLImageElement||typeof HTMLCanvasElement!="undefined"&&w instanceof HTMLCanvasElement||typeof ImageBitmap!="undefined"&&w instanceof ImageBitmap){let st=g?Hi:Math.floor,yt=st(tt*w.width),rt=st(tt*w.height);p===void 0&&(p=T(yt,rt));let H=k?T(yt,rt):p;return H.width=yt,H.height=rt,H.getContext("2d").drawImage(w,0,0,yt,rt),console.warn("THREE.WebGLRenderer: Texture has been resized from ("+w.width+"x"+w.height+") to ("+yt+"x"+rt+")."),H}else return"data"in w&&console.warn("THREE.WebGLRenderer: Image in DataTexture is too big ("+w.width+"x"+w.height+")."),w;return w}function M(w){return Zs(w.width)&&Zs(w.height)}function A(w){return a?!1:w.wrapS!==Pe||w.wrapT!==Pe||w.minFilter!==ae&&w.minFilter!==Se}function C(w,g){return w.generateMipmaps&&g&&w.minFilter!==ae&&w.minFilter!==Se}function I(w){r.generateMipmap(w)}function x(w,g,k,K,tt=!1){if(a===!1)return g;if(w!==null){if(r[w]!==void 0)return r[w];console.warn("THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format \'"+w+"\'")}let st=g;return g===6403&&(k===5126&&(st=33326),k===5131&&(st=33325),k===5121&&(st=33321)),g===33319&&(k===5126&&(st=33328),k===5131&&(st=33327),k===5121&&(st=33323)),g===6408&&(k===5126&&(st=34836),k===5131&&(st=34842),k===5121&&(st=K===zt&&tt===!1?35907:32856),k===32819&&(st=32854),k===32820&&(st=32855)),(st===33325||st===33326||st===33327||st===33328||st===34842||st===34836)&&t.get("EXT_color_buffer_float"),st}function S(w,g,k){return C(w,k)===!0||w.isFramebufferTexture&&w.minFilter!==ae&&w.minFilter!==Se?Math.log2(Math.max(g.width,g.height))+1:w.mipmaps!==void 0&&w.mipmaps.length>0?w.mipmaps.length:w.isCompressedTexture&&Array.isArray(w.image)?g.mipmaps.length:1}function L(w){return w===ae||w===Fr||w===us?9728:9729}function X(w){let g=w.target;g.removeEventListener("dispose",X),z(g),g.isVideoTexture&&_.delete(g)}function q(w){let g=w.target;g.removeEventListener("dispose",q),G(g)}function z(w){let g=n.get(w);if(g.__webglInit===void 0)return;let k=w.source,K=d.get(k);if(K){let tt=K[g.__cacheKey];tt.usedTimes--,tt.usedTimes===0&&R(w),Object.keys(K).length===0&&d.delete(k)}n.remove(w)}function R(w){let g=n.get(w);r.deleteTexture(g.__webglTexture);let k=w.source,K=d.get(k);delete K[g.__cacheKey],o.memory.textures--}function G(w){let g=w.texture,k=n.get(w),K=n.get(g);if(K.__webglTexture!==void 0&&(r.deleteTexture(K.__webglTexture),o.memory.textures--),w.depthTexture&&w.depthTexture.dispose(),w.isWebGLCubeRenderTarget)for(let tt=0;tt<6;tt++)r.deleteFramebuffer(k.__webglFramebuffer[tt]),k.__webglDepthbuffer&&r.deleteRenderbuffer(k.__webglDepthbuffer[tt]);else{if(r.deleteFramebuffer(k.__webglFramebuffer),k.__webglDepthbuffer&&r.deleteRenderbuffer(k.__webglDepthbuffer),k.__webglMultisampledFramebuffer&&r.deleteFramebuffer(k.__webglMultisampledFramebuffer),k.__webglColorRenderbuffer)for(let tt=0;tt=c&&console.warn("THREE.WebGLTextures: Trying to use "+w+" texture units while this GPU supports only "+c),Y+=1,w}function Q(w){let g=[];return g.push(w.wrapS),g.push(w.wrapT),g.push(w.wrapR||0),g.push(w.magFilter),g.push(w.minFilter),g.push(w.anisotropy),g.push(w.internalFormat),g.push(w.format),g.push(w.type),g.push(w.generateMipmaps),g.push(w.premultiplyAlpha),g.push(w.flipY),g.push(w.unpackAlignment),g.push(w.encoding),g.join()}function Z(w,g){let k=n.get(w);if(w.isVideoTexture&&Fe(w),w.isRenderTargetTexture===!1&&w.version>0&&k.__version!==w.version){let K=w.image;if(K===null)console.warn("THREE.WebGLRenderer: Texture marked for update but no image data found.");else if(K.complete===!1)console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete");else{ht(k,w,g);return}}e.bindTexture(3553,k.__webglTexture,33984+g)}function ft(w,g){let k=n.get(w);if(w.version>0&&k.__version!==w.version){ht(k,w,g);return}e.bindTexture(35866,k.__webglTexture,33984+g)}function F(w,g){let k=n.get(w);if(w.version>0&&k.__version!==w.version){ht(k,w,g);return}e.bindTexture(32879,k.__webglTexture,33984+g)}function J(w,g){let k=n.get(w);if(w.version>0&&k.__version!==w.version){ut(k,w,g);return}e.bindTexture(34067,k.__webglTexture,33984+g)}let nt={[Xs]:10497,[Pe]:33071,[qs]:33648},it={[ae]:9728,[Fr]:9984,[us]:9986,[Se]:9729,[Bo]:9985,[pi]:9987};function O(w,g,k){if(k?(r.texParameteri(w,10242,nt[g.wrapS]),r.texParameteri(w,10243,nt[g.wrapT]),(w===32879||w===35866)&&r.texParameteri(w,32882,nt[g.wrapR]),r.texParameteri(w,10240,it[g.magFilter]),r.texParameteri(w,10241,it[g.minFilter])):(r.texParameteri(w,10242,33071),r.texParameteri(w,10243,33071),(w===32879||w===35866)&&r.texParameteri(w,32882,33071),(g.wrapS!==Pe||g.wrapT!==Pe)&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping."),r.texParameteri(w,10240,L(g.magFilter)),r.texParameteri(w,10241,L(g.minFilter)),g.minFilter!==ae&&g.minFilter!==Se&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.")),t.has("EXT_texture_filter_anisotropic")===!0){let K=t.get("EXT_texture_filter_anisotropic");if(g.magFilter===ae||g.minFilter!==us&&g.minFilter!==pi||g.type===gn&&t.has("OES_texture_float_linear")===!1||a===!1&&g.type===mi&&t.has("OES_texture_half_float_linear")===!1)return;(g.anisotropy>1||n.get(g).__currentAnisotropy)&&(r.texParameterf(w,K.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(g.anisotropy,i.getMaxAnisotropy())),n.get(g).__currentAnisotropy=g.anisotropy)}}function Mt(w,g){let k=!1;w.__webglInit===void 0&&(w.__webglInit=!0,g.addEventListener("dispose",X));let K=g.source,tt=d.get(K);tt===void 0&&(tt={},d.set(K,tt));let st=Q(g);if(st!==w.__cacheKey){tt[st]===void 0&&(tt[st]={texture:r.createTexture(),usedTimes:0},o.memory.textures++,k=!0),tt[st].usedTimes++;let yt=tt[w.__cacheKey];yt!==void 0&&(tt[w.__cacheKey].usedTimes--,yt.usedTimes===0&&R(g)),w.__cacheKey=st,w.__webglTexture=tt[st].texture}return k}function ht(w,g,k){let K=3553;(g.isDataArrayTexture||g.isCompressedArrayTexture)&&(K=35866),g.isData3DTexture&&(K=32879);let tt=Mt(w,g),st=g.source;e.bindTexture(K,w.__webglTexture,33984+k);let yt=n.get(st);if(st.version!==yt.__version||tt===!0){e.activeTexture(33984+k),r.pixelStorei(37440,g.flipY),r.pixelStorei(37441,g.premultiplyAlpha),r.pixelStorei(3317,g.unpackAlignment),r.pixelStorei(37443,0);let rt=A(g)&&M(g.image)===!1,H=b(g.image,rt,!1,h);H=Te(g,H);let mt=M(H)||a,_t=s.convert(g.format,g.encoding),lt=s.convert(g.type),gt=x(g.internalFormat,_t,lt,g.encoding,g.isVideoTexture);O(K,g,mt);let dt,Pt=g.mipmaps,Ut=a&&g.isVideoTexture!==!0,Jt=yt.__version===void 0||tt===!0,E=S(g,H,mt);if(g.isDepthTexture)gt=6402,a?g.type===gn?gt=36012:g.type===mn?gt=33190:g.type===Hn?gt=35056:gt=33189:g.type===gn&&console.error("WebGLRenderer: Floating point depth texture requires WebGL2."),g.format===_n&>===6402&&g.type!==Ya&&g.type!==mn&&(console.warn("THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture."),g.type=mn,lt=s.convert(g.type)),g.format===Yn&>===6402&&(gt=34041,g.type!==Hn&&(console.warn("THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture."),g.type=Hn,lt=s.convert(g.type))),Jt&&(Ut?e.texStorage2D(3553,1,gt,H.width,H.height):e.texImage2D(3553,0,gt,H.width,H.height,0,_t,lt,null));else if(g.isDataTexture)if(Pt.length>0&&mt){Ut&&Jt&&e.texStorage2D(3553,E,gt,Pt[0].width,Pt[0].height);for(let U=0,$=Pt.length;U<$;U++)dt=Pt[U],Ut?e.texSubImage2D(3553,U,0,0,dt.width,dt.height,_t,lt,dt.data):e.texImage2D(3553,U,gt,dt.width,dt.height,0,_t,lt,dt.data);g.generateMipmaps=!1}else Ut?(Jt&&e.texStorage2D(3553,E,gt,H.width,H.height),e.texSubImage2D(3553,0,0,0,H.width,H.height,_t,lt,H.data)):e.texImage2D(3553,0,gt,H.width,H.height,0,_t,lt,H.data);else if(g.isCompressedTexture)if(g.isCompressedArrayTexture){Ut&&Jt&&e.texStorage3D(35866,E,gt,Pt[0].width,Pt[0].height,H.depth);for(let U=0,$=Pt.length;U<$;U++)dt=Pt[U],g.format!==Re?_t!==null?Ut?e.compressedTexSubImage3D(35866,U,0,0,0,dt.width,dt.height,H.depth,_t,dt.data,0,0):e.compressedTexImage3D(35866,U,gt,dt.width,dt.height,H.depth,0,dt.data,0,0):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()"):Ut?e.texSubImage3D(35866,U,0,0,0,dt.width,dt.height,H.depth,_t,lt,dt.data):e.texImage3D(35866,U,gt,dt.width,dt.height,H.depth,0,_t,lt,dt.data)}else{Ut&&Jt&&e.texStorage2D(3553,E,gt,Pt[0].width,Pt[0].height);for(let U=0,$=Pt.length;U<$;U++)dt=Pt[U],g.format!==Re?_t!==null?Ut?e.compressedTexSubImage2D(3553,U,0,0,dt.width,dt.height,_t,dt.data):e.compressedTexImage2D(3553,U,gt,dt.width,dt.height,0,dt.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()"):Ut?e.texSubImage2D(3553,U,0,0,dt.width,dt.height,_t,lt,dt.data):e.texImage2D(3553,U,gt,dt.width,dt.height,0,_t,lt,dt.data)}else if(g.isDataArrayTexture)Ut?(Jt&&e.texStorage3D(35866,E,gt,H.width,H.height,H.depth),e.texSubImage3D(35866,0,0,0,0,H.width,H.height,H.depth,_t,lt,H.data)):e.texImage3D(35866,0,gt,H.width,H.height,H.depth,0,_t,lt,H.data);else if(g.isData3DTexture)Ut?(Jt&&e.texStorage3D(32879,E,gt,H.width,H.height,H.depth),e.texSubImage3D(32879,0,0,0,0,H.width,H.height,H.depth,_t,lt,H.data)):e.texImage3D(32879,0,gt,H.width,H.height,H.depth,0,_t,lt,H.data);else if(g.isFramebufferTexture){if(Jt)if(Ut)e.texStorage2D(3553,E,gt,H.width,H.height);else{let U=H.width,$=H.height;for(let at=0;at>=1,$>>=1}}else if(Pt.length>0&&mt){Ut&&Jt&&e.texStorage2D(3553,E,gt,Pt[0].width,Pt[0].height);for(let U=0,$=Pt.length;U<$;U++)dt=Pt[U],Ut?e.texSubImage2D(3553,U,0,0,_t,lt,dt):e.texImage2D(3553,U,gt,_t,lt,dt);g.generateMipmaps=!1}else Ut?(Jt&&e.texStorage2D(3553,E,gt,H.width,H.height),e.texSubImage2D(3553,0,0,0,_t,lt,H)):e.texImage2D(3553,0,gt,_t,lt,H);C(g,mt)&&I(K),yt.__version=st.version,g.onUpdate&&g.onUpdate(g)}w.__version=g.version}function ut(w,g,k){if(g.image.length!==6)return;let K=Mt(w,g),tt=g.source;e.bindTexture(34067,w.__webglTexture,33984+k);let st=n.get(tt);if(tt.version!==st.__version||K===!0){e.activeTexture(33984+k),r.pixelStorei(37440,g.flipY),r.pixelStorei(37441,g.premultiplyAlpha),r.pixelStorei(3317,g.unpackAlignment),r.pixelStorei(37443,0);let yt=g.isCompressedTexture||g.image[0].isCompressedTexture,rt=g.image[0]&&g.image[0].isDataTexture,H=[];for(let U=0;U<6;U++)!yt&&!rt?H[U]=b(g.image[U],!1,!0,l):H[U]=rt?g.image[U].image:g.image[U],H[U]=Te(g,H[U]);let mt=H[0],_t=M(mt)||a,lt=s.convert(g.format,g.encoding),gt=s.convert(g.type),dt=x(g.internalFormat,lt,gt,g.encoding),Pt=a&&g.isVideoTexture!==!0,Ut=st.__version===void 0||K===!0,Jt=S(g,mt,_t);O(34067,g,_t);let E;if(yt){Pt&&Ut&&e.texStorage2D(34067,Jt,dt,mt.width,mt.height);for(let U=0;U<6;U++){E=H[U].mipmaps;for(let $=0;$0&&Jt++,e.texStorage2D(34067,Jt,dt,H[0].width,H[0].height));for(let U=0;U<6;U++)if(rt){Pt?e.texSubImage2D(34069+U,0,0,0,H[U].width,H[U].height,lt,gt,H[U].data):e.texImage2D(34069+U,0,dt,H[U].width,H[U].height,0,lt,gt,H[U].data);for(let $=0;$=34069&&tt<=34074)&&r.framebufferTexture2D(36160,K,tt,n.get(k).__webglTexture,0),e.bindFramebuffer(36160,null)}function Ft(w,g,k){if(r.bindRenderbuffer(36161,w),g.depthBuffer&&!g.stencilBuffer){let K=33189;if(k||Dt(g)){let tt=g.depthTexture;tt&&tt.isDepthTexture&&(tt.type===gn?K=36012:tt.type===mn&&(K=33190));let st=Ht(g);Dt(g)?u.renderbufferStorageMultisampleEXT(36161,st,K,g.width,g.height):r.renderbufferStorageMultisample(36161,st,K,g.width,g.height)}else r.renderbufferStorage(36161,K,g.width,g.height);r.framebufferRenderbuffer(36160,36096,36161,w)}else if(g.depthBuffer&&g.stencilBuffer){let K=Ht(g);k&&Dt(g)===!1?r.renderbufferStorageMultisample(36161,K,35056,g.width,g.height):Dt(g)?u.renderbufferStorageMultisampleEXT(36161,K,35056,g.width,g.height):r.renderbufferStorage(36161,34041,g.width,g.height),r.framebufferRenderbuffer(36160,33306,36161,w)}else{let K=g.isWebGLMultipleRenderTargets===!0?g.texture:[g.texture];for(let tt=0;tt0&&Dt(w)===!1){let rt=st?g:[g];k.__webglMultisampledFramebuffer=r.createFramebuffer(),k.__webglColorRenderbuffer=[],e.bindFramebuffer(36160,k.__webglMultisampledFramebuffer);for(let H=0;H0&&Dt(w)===!1){let g=w.isWebGLMultipleRenderTargets?w.texture:[w.texture],k=w.width,K=w.height,tt=16384,st=[],yt=w.stencilBuffer?33306:36096,rt=n.get(w),H=w.isWebGLMultipleRenderTargets===!0;if(H)for(let mt=0;mt0&&t.has("WEBGL_multisampled_render_to_texture")===!0&&g.__useRenderToTexture!==!1}function Fe(w){let g=o.render.frame;_.get(w)!==g&&(_.set(w,g),w.update())}function Te(w,g){let k=w.encoding,K=w.format,tt=w.type;return w.isCompressedTexture===!0||w.isVideoTexture===!0||w.format===Ys||k!==vn&&(k===zt?a===!1?t.has("EXT_sRGB")===!0&&K===Re?(w.format=Ys,w.minFilter=Se,w.generateMipmaps=!1):g=Xi.sRGBToLinear(g):(K!==Re||tt!==yn)&&console.warn("THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType."):console.error("THREE.WebGLTextures: Unsupported texture encoding:",k)),g}this.allocateTextureUnit=W,this.resetTextureUnits=j,this.setTexture2D=Z,this.setTexture2DArray=ft,this.setTexture3D=F,this.setTextureCube=J,this.rebindTextures=ne,this.setupRenderTarget=ve,this.updateRenderTargetMipmap=Qt,this.updateMultisampleRenderTarget=Me,this.setupDepthRenderbuffer=xt,this.setupFrameBufferTexture=ot,this.useMultisampledRTT=Dt}function tf(r,t,e){let n=e.isWebGL2;function i(s,o=null){let a;if(s===yn)return 5121;if(s===Ho)return 32819;if(s===Wo)return 32820;if(s===ko)return 5120;if(s===Vo)return 5122;if(s===Ya)return 5123;if(s===Go)return 5124;if(s===mn)return 5125;if(s===gn)return 5126;if(s===mi)return n?5131:(a=t.get("OES_texture_half_float"),a!==null?a.HALF_FLOAT_OES:null);if(s===Xo)return 6406;if(s===Re)return 6408;if(s===qo)return 6409;if(s===Yo)return 6410;if(s===_n)return 6402;if(s===Yn)return 34041;if(s===Ys)return a=t.get("EXT_sRGB"),a!==null?a.SRGB_ALPHA_EXT:null;if(s===Zo)return 6403;if(s===Jo)return 36244;if(s===$o)return 33319;if(s===Ko)return 33320;if(s===jo)return 36249;if(s===ds||s===fs||s===ps||s===ms)if(o===zt)if(a=t.get("WEBGL_compressed_texture_s3tc_srgb"),a!==null){if(s===ds)return a.COMPRESSED_SRGB_S3TC_DXT1_EXT;if(s===fs)return a.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;if(s===ps)return a.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;if(s===ms)return a.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT}else return null;else if(a=t.get("WEBGL_compressed_texture_s3tc"),a!==null){if(s===ds)return a.COMPRESSED_RGB_S3TC_DXT1_EXT;if(s===fs)return a.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(s===ps)return a.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(s===ms)return a.COMPRESSED_RGBA_S3TC_DXT5_EXT}else return null;if(s===zr||s===Or||s===Ur||s===Br)if(a=t.get("WEBGL_compressed_texture_pvrtc"),a!==null){if(s===zr)return a.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(s===Or)return a.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(s===Ur)return a.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(s===Br)return a.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}else return null;if(s===Qo)return a=t.get("WEBGL_compressed_texture_etc1"),a!==null?a.COMPRESSED_RGB_ETC1_WEBGL:null;if(s===kr||s===Vr)if(a=t.get("WEBGL_compressed_texture_etc"),a!==null){if(s===kr)return o===zt?a.COMPRESSED_SRGB8_ETC2:a.COMPRESSED_RGB8_ETC2;if(s===Vr)return o===zt?a.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:a.COMPRESSED_RGBA8_ETC2_EAC}else return null;if(s===Gr||s===Hr||s===Wr||s===Xr||s===qr||s===Yr||s===Zr||s===Jr||s===$r||s===Kr||s===jr||s===Qr||s===ta||s===ea)if(a=t.get("WEBGL_compressed_texture_astc"),a!==null){if(s===Gr)return o===zt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:a.COMPRESSED_RGBA_ASTC_4x4_KHR;if(s===Hr)return o===zt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:a.COMPRESSED_RGBA_ASTC_5x4_KHR;if(s===Wr)return o===zt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:a.COMPRESSED_RGBA_ASTC_5x5_KHR;if(s===Xr)return o===zt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:a.COMPRESSED_RGBA_ASTC_6x5_KHR;if(s===qr)return o===zt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:a.COMPRESSED_RGBA_ASTC_6x6_KHR;if(s===Yr)return o===zt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:a.COMPRESSED_RGBA_ASTC_8x5_KHR;if(s===Zr)return o===zt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:a.COMPRESSED_RGBA_ASTC_8x6_KHR;if(s===Jr)return o===zt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:a.COMPRESSED_RGBA_ASTC_8x8_KHR;if(s===$r)return o===zt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:a.COMPRESSED_RGBA_ASTC_10x5_KHR;if(s===Kr)return o===zt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:a.COMPRESSED_RGBA_ASTC_10x6_KHR;if(s===jr)return o===zt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:a.COMPRESSED_RGBA_ASTC_10x8_KHR;if(s===Qr)return o===zt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:a.COMPRESSED_RGBA_ASTC_10x10_KHR;if(s===ta)return o===zt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:a.COMPRESSED_RGBA_ASTC_12x10_KHR;if(s===ea)return o===zt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:a.COMPRESSED_RGBA_ASTC_12x12_KHR}else return null;if(s===gs)if(a=t.get("EXT_texture_compression_bptc"),a!==null){if(s===gs)return o===zt?a.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT:a.COMPRESSED_RGBA_BPTC_UNORM_EXT}else return null;if(s===tl||s===na||s===ia||s===sa)if(a=t.get("EXT_texture_compression_rgtc"),a!==null){if(s===gs)return a.COMPRESSED_RED_RGTC1_EXT;if(s===na)return a.COMPRESSED_SIGNED_RED_RGTC1_EXT;if(s===ia)return a.COMPRESSED_RED_GREEN_RGTC2_EXT;if(s===sa)return a.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT}else return null;return s===Hn?n?34042:(a=t.get("WEBGL_depth_texture"),a!==null?a.UNSIGNED_INT_24_8_WEBGL:null):r[s]!==void 0?r[s]:null}return{convert:i}}var lr=class extends _e{constructor(t=[]){super(),this.isArrayCamera=!0,this.cameras=t}},Vn=class extends de{constructor(){super(),this.isGroup=!0,this.type="Group"}},ef={type:"move"},fi=class{constructor(){this._targetRay=null,this._grip=null,this._hand=null}getHandSpace(){return this._hand===null&&(this._hand=new Vn,this._hand.matrixAutoUpdate=!1,this._hand.visible=!1,this._hand.joints={},this._hand.inputState={pinching:!1}),this._hand}getTargetRaySpace(){return this._targetRay===null&&(this._targetRay=new Vn,this._targetRay.matrixAutoUpdate=!1,this._targetRay.visible=!1,this._targetRay.hasLinearVelocity=!1,this._targetRay.linearVelocity=new N,this._targetRay.hasAngularVelocity=!1,this._targetRay.angularVelocity=new N),this._targetRay}getGripSpace(){return this._grip===null&&(this._grip=new Vn,this._grip.matrixAutoUpdate=!1,this._grip.visible=!1,this._grip.hasLinearVelocity=!1,this._grip.linearVelocity=new N,this._grip.hasAngularVelocity=!1,this._grip.angularVelocity=new N),this._grip}dispatchEvent(t){return this._targetRay!==null&&this._targetRay.dispatchEvent(t),this._grip!==null&&this._grip.dispatchEvent(t),this._hand!==null&&this._hand.dispatchEvent(t),this}connect(t){if(t&&t.hand){let e=this._hand;if(e)for(let n of t.hand.values())this._getHandJoint(e,n)}return this.dispatchEvent({type:"connected",data:t}),this}disconnect(t){return this.dispatchEvent({type:"disconnected",data:t}),this._targetRay!==null&&(this._targetRay.visible=!1),this._grip!==null&&(this._grip.visible=!1),this._hand!==null&&(this._hand.visible=!1),this}update(t,e,n){let i=null,s=null,o=null,a=this._targetRay,c=this._grip,l=this._hand;if(t&&e.session.visibilityState!=="visible-blurred"){if(l&&t.hand){o=!0;for(let p of t.hand.values()){let d=e.getJointPose(p,n),v=this._getHandJoint(l,p);d!==null&&(v.matrix.fromArray(d.transform.matrix),v.matrix.decompose(v.position,v.rotation,v.scale),v.jointRadius=d.radius),v.visible=d!==null}let h=l.joints["index-finger-tip"],f=l.joints["thumb-tip"],u=h.position.distanceTo(f.position),m=.02,_=.005;l.inputState.pinching&&u>m+_?(l.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:t.handedness,target:this})):!l.inputState.pinching&&u<=m-_&&(l.inputState.pinching=!0,this.dispatchEvent({type:"pinchstart",handedness:t.handedness,target:this}))}else c!==null&&t.gripSpace&&(s=e.getPose(t.gripSpace,n),s!==null&&(c.matrix.fromArray(s.transform.matrix),c.matrix.decompose(c.position,c.rotation,c.scale),s.linearVelocity?(c.hasLinearVelocity=!0,c.linearVelocity.copy(s.linearVelocity)):c.hasLinearVelocity=!1,s.angularVelocity?(c.hasAngularVelocity=!0,c.angularVelocity.copy(s.angularVelocity)):c.hasAngularVelocity=!1));a!==null&&(i=e.getPose(t.targetRaySpace,n),i===null&&s!==null&&(i=s),i!==null&&(a.matrix.fromArray(i.transform.matrix),a.matrix.decompose(a.position,a.rotation,a.scale),i.linearVelocity?(a.hasLinearVelocity=!0,a.linearVelocity.copy(i.linearVelocity)):a.hasLinearVelocity=!1,i.angularVelocity?(a.hasAngularVelocity=!0,a.angularVelocity.copy(i.angularVelocity)):a.hasAngularVelocity=!1,this.dispatchEvent(ef)))}return a!==null&&(a.visible=i!==null),c!==null&&(c.visible=s!==null),l!==null&&(l.visible=o!==null),this}_getHandJoint(t,e){if(t.joints[e.jointName]===void 0){let n=new Vn;n.matrixAutoUpdate=!1,n.visible=!1,t.joints[e.jointName]=n,t.add(n)}return t.joints[e.jointName]}},cr=class extends le{constructor(t,e,n,i,s,o,a,c,l,h){if(h=h!==void 0?h:_n,h!==_n&&h!==Yn)throw new Error("DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat");n===void 0&&h===_n&&(n=mn),n===void 0&&h===Yn&&(n=Hn),super(null,i,s,o,a,c,h,n,l),this.isDepthTexture=!0,this.image={width:t,height:e},this.magFilter=a!==void 0?a:ae,this.minFilter=c!==void 0?c:ae,this.flipY=!1,this.generateMipmaps=!1}},hr=class extends sn{constructor(t,e){super();let n=this,i=null,s=1,o=null,a="local-floor",c=1,l=null,h=null,f=null,u=null,m=null,_=null,p=e.getContextAttributes(),d=null,v=null,T=[],b=[],M=new Set,A=new Map,C=new _e;C.layers.enable(1),C.viewport=new Xt;let I=new _e;I.layers.enable(2),I.viewport=new Xt;let x=[C,I],S=new lr;S.layers.enable(1),S.layers.enable(2);let L=null,X=null;this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function(F){let J=T[F];return J===void 0&&(J=new fi,T[F]=J),J.getTargetRaySpace()},this.getControllerGrip=function(F){let J=T[F];return J===void 0&&(J=new fi,T[F]=J),J.getGripSpace()},this.getHand=function(F){let J=T[F];return J===void 0&&(J=new fi,T[F]=J),J.getHandSpace()};function q(F){let J=b.indexOf(F.inputSource);if(J===-1)return;let nt=T[J];nt!==void 0&&nt.dispatchEvent({type:F.type,data:F.inputSource})}function z(){i.removeEventListener("select",q),i.removeEventListener("selectstart",q),i.removeEventListener("selectend",q),i.removeEventListener("squeeze",q),i.removeEventListener("squeezestart",q),i.removeEventListener("squeezeend",q),i.removeEventListener("end",z),i.removeEventListener("inputsourceschange",R);for(let F=0;F=0&&(b[it]=null,T[it].disconnect(nt))}for(let J=0;J=b.length){b.push(nt),it=Mt;break}else if(b[Mt]===null){b[Mt]=nt,it=Mt;break}if(it===-1)break}let O=T[it];O&&O.connect(nt)}}let G=new N,Y=new N;function j(F,J,nt){G.setFromMatrixPosition(J.matrixWorld),Y.setFromMatrixPosition(nt.matrixWorld);let it=G.distanceTo(Y),O=J.projectionMatrix.elements,Mt=nt.projectionMatrix.elements,ht=O[14]/(O[10]-1),ut=O[14]/(O[10]+1),ot=(O[9]+1)/O[5],Ft=(O[9]-1)/O[5],bt=(O[8]-1)/O[0],xt=(Mt[8]+1)/Mt[0],ne=ht*bt,ve=ht*xt,Qt=it/(-bt+xt),Me=Qt*-bt;J.matrixWorld.decompose(F.position,F.quaternion,F.scale),F.translateX(Me),F.translateZ(Qt),F.matrixWorld.compose(F.position,F.quaternion,F.scale),F.matrixWorldInverse.copy(F.matrixWorld).invert();let Ht=ht+Qt,Dt=ut+Qt,Fe=ne-Me,Te=ve+(it-Me),w=ot*ut/Dt*Ht,g=Ft*ut/Dt*Ht;F.projectionMatrix.makePerspective(Fe,Te,w,g,Ht,Dt)}function W(F,J){J===null?F.matrixWorld.copy(F.matrix):F.matrixWorld.multiplyMatrices(J.matrixWorld,F.matrix),F.matrixWorldInverse.copy(F.matrixWorld).invert()}this.updateCamera=function(F){if(i===null)return;S.near=I.near=C.near=F.near,S.far=I.far=C.far=F.far,(L!==S.near||X!==S.far)&&(i.updateRenderState({depthNear:S.near,depthFar:S.far}),L=S.near,X=S.far);let J=F.parent,nt=S.cameras;W(S,J);for(let O=0;OO&&(A.set(it,it.lastChangedTime),n.dispatchEvent({type:"planechanged",data:it}))}}_=null}let ft=new ja;ft.setAnimationLoop(Z),this.setAnimationLoop=function(F){Q=F},this.dispose=function(){}}};function nf(r,t){function e(p,d){d.color.getRGB(p.fogColor.value,Ka(r)),d.isFog?(p.fogNear.value=d.near,p.fogFar.value=d.far):d.isFogExp2&&(p.fogDensity.value=d.density)}function n(p,d,v,T,b){d.isMeshBasicMaterial||d.isMeshLambertMaterial?i(p,d):d.isMeshToonMaterial?(i(p,d),h(p,d)):d.isMeshPhongMaterial?(i(p,d),l(p,d)):d.isMeshStandardMaterial?(i(p,d),f(p,d),d.isMeshPhysicalMaterial&&u(p,d,b)):d.isMeshMatcapMaterial?(i(p,d),m(p,d)):d.isMeshDepthMaterial?i(p,d):d.isMeshDistanceMaterial?(i(p,d),_(p,d)):d.isMeshNormalMaterial?i(p,d):d.isLineBasicMaterial?(s(p,d),d.isLineDashedMaterial&&o(p,d)):d.isPointsMaterial?a(p,d,v,T):d.isSpriteMaterial?c(p,d):d.isShadowMaterial?(p.color.value.copy(d.color),p.opacity.value=d.opacity):d.isShaderMaterial&&(d.uniformsNeedUpdate=!1)}function i(p,d){p.opacity.value=d.opacity,d.color&&p.diffuse.value.copy(d.color),d.emissive&&p.emissive.value.copy(d.emissive).multiplyScalar(d.emissiveIntensity),d.map&&(p.map.value=d.map),d.alphaMap&&(p.alphaMap.value=d.alphaMap),d.bumpMap&&(p.bumpMap.value=d.bumpMap,p.bumpScale.value=d.bumpScale,d.side===ye&&(p.bumpScale.value*=-1)),d.displacementMap&&(p.displacementMap.value=d.displacementMap,p.displacementScale.value=d.displacementScale,p.displacementBias.value=d.displacementBias),d.emissiveMap&&(p.emissiveMap.value=d.emissiveMap),d.normalMap&&(p.normalMap.value=d.normalMap,p.normalScale.value.copy(d.normalScale),d.side===ye&&p.normalScale.value.negate()),d.specularMap&&(p.specularMap.value=d.specularMap),d.alphaTest>0&&(p.alphaTest.value=d.alphaTest);let v=t.get(d).envMap;if(v&&(p.envMap.value=v,p.flipEnvMap.value=v.isCubeTexture&&v.isRenderTargetTexture===!1?-1:1,p.reflectivity.value=d.reflectivity,p.ior.value=d.ior,p.refractionRatio.value=d.refractionRatio),d.lightMap){p.lightMap.value=d.lightMap;let M=r.physicallyCorrectLights!==!0?Math.PI:1;p.lightMapIntensity.value=d.lightMapIntensity*M}d.aoMap&&(p.aoMap.value=d.aoMap,p.aoMapIntensity.value=d.aoMapIntensity);let T;d.map?T=d.map:d.specularMap?T=d.specularMap:d.displacementMap?T=d.displacementMap:d.normalMap?T=d.normalMap:d.bumpMap?T=d.bumpMap:d.roughnessMap?T=d.roughnessMap:d.metalnessMap?T=d.metalnessMap:d.alphaMap?T=d.alphaMap:d.emissiveMap?T=d.emissiveMap:d.clearcoatMap?T=d.clearcoatMap:d.clearcoatNormalMap?T=d.clearcoatNormalMap:d.clearcoatRoughnessMap?T=d.clearcoatRoughnessMap:d.iridescenceMap?T=d.iridescenceMap:d.iridescenceThicknessMap?T=d.iridescenceThicknessMap:d.specularIntensityMap?T=d.specularIntensityMap:d.specularColorMap?T=d.specularColorMap:d.transmissionMap?T=d.transmissionMap:d.thicknessMap?T=d.thicknessMap:d.sheenColorMap?T=d.sheenColorMap:d.sheenRoughnessMap&&(T=d.sheenRoughnessMap),T!==void 0&&(T.isWebGLRenderTarget&&(T=T.texture),T.matrixAutoUpdate===!0&&T.updateMatrix(),p.uvTransform.value.copy(T.matrix));let b;d.aoMap?b=d.aoMap:d.lightMap&&(b=d.lightMap),b!==void 0&&(b.isWebGLRenderTarget&&(b=b.texture),b.matrixAutoUpdate===!0&&b.updateMatrix(),p.uv2Transform.value.copy(b.matrix))}function s(p,d){p.diffuse.value.copy(d.color),p.opacity.value=d.opacity}function o(p,d){p.dashSize.value=d.dashSize,p.totalSize.value=d.dashSize+d.gapSize,p.scale.value=d.scale}function a(p,d,v,T){p.diffuse.value.copy(d.color),p.opacity.value=d.opacity,p.size.value=d.size*v,p.scale.value=T*.5,d.map&&(p.map.value=d.map),d.alphaMap&&(p.alphaMap.value=d.alphaMap),d.alphaTest>0&&(p.alphaTest.value=d.alphaTest);let b;d.map?b=d.map:d.alphaMap&&(b=d.alphaMap),b!==void 0&&(b.matrixAutoUpdate===!0&&b.updateMatrix(),p.uvTransform.value.copy(b.matrix))}function c(p,d){p.diffuse.value.copy(d.color),p.opacity.value=d.opacity,p.rotation.value=d.rotation,d.map&&(p.map.value=d.map),d.alphaMap&&(p.alphaMap.value=d.alphaMap),d.alphaTest>0&&(p.alphaTest.value=d.alphaTest);let v;d.map?v=d.map:d.alphaMap&&(v=d.alphaMap),v!==void 0&&(v.matrixAutoUpdate===!0&&v.updateMatrix(),p.uvTransform.value.copy(v.matrix))}function l(p,d){p.specular.value.copy(d.specular),p.shininess.value=Math.max(d.shininess,1e-4)}function h(p,d){d.gradientMap&&(p.gradientMap.value=d.gradientMap)}function f(p,d){p.roughness.value=d.roughness,p.metalness.value=d.metalness,d.roughnessMap&&(p.roughnessMap.value=d.roughnessMap),d.metalnessMap&&(p.metalnessMap.value=d.metalnessMap),t.get(d).envMap&&(p.envMapIntensity.value=d.envMapIntensity)}function u(p,d,v){p.ior.value=d.ior,d.sheen>0&&(p.sheenColor.value.copy(d.sheenColor).multiplyScalar(d.sheen),p.sheenRoughness.value=d.sheenRoughness,d.sheenColorMap&&(p.sheenColorMap.value=d.sheenColorMap),d.sheenRoughnessMap&&(p.sheenRoughnessMap.value=d.sheenRoughnessMap)),d.clearcoat>0&&(p.clearcoat.value=d.clearcoat,p.clearcoatRoughness.value=d.clearcoatRoughness,d.clearcoatMap&&(p.clearcoatMap.value=d.clearcoatMap),d.clearcoatRoughnessMap&&(p.clearcoatRoughnessMap.value=d.clearcoatRoughnessMap),d.clearcoatNormalMap&&(p.clearcoatNormalScale.value.copy(d.clearcoatNormalScale),p.clearcoatNormalMap.value=d.clearcoatNormalMap,d.side===ye&&p.clearcoatNormalScale.value.negate())),d.iridescence>0&&(p.iridescence.value=d.iridescence,p.iridescenceIOR.value=d.iridescenceIOR,p.iridescenceThicknessMinimum.value=d.iridescenceThicknessRange[0],p.iridescenceThicknessMaximum.value=d.iridescenceThicknessRange[1],d.iridescenceMap&&(p.iridescenceMap.value=d.iridescenceMap),d.iridescenceThicknessMap&&(p.iridescenceThicknessMap.value=d.iridescenceThicknessMap)),d.transmission>0&&(p.transmission.value=d.transmission,p.transmissionSamplerMap.value=v.texture,p.transmissionSamplerSize.value.set(v.width,v.height),d.transmissionMap&&(p.transmissionMap.value=d.transmissionMap),p.thickness.value=d.thickness,d.thicknessMap&&(p.thicknessMap.value=d.thicknessMap),p.attenuationDistance.value=d.attenuationDistance,p.attenuationColor.value.copy(d.attenuationColor)),p.specularIntensity.value=d.specularIntensity,p.specularColor.value.copy(d.specularColor),d.specularIntensityMap&&(p.specularIntensityMap.value=d.specularIntensityMap),d.specularColorMap&&(p.specularColorMap.value=d.specularColorMap)}function m(p,d){d.matcap&&(p.matcap.value=d.matcap)}function _(p,d){p.referencePosition.value.copy(d.referencePosition),p.nearDistance.value=d.nearDistance,p.farDistance.value=d.farDistance}return{refreshFogUniforms:e,refreshMaterialUniforms:n}}function sf(r,t,e,n){let i={},s={},o=[],a=e.isWebGL2?r.getParameter(35375):0;function c(T,b){let M=b.program;n.uniformBlockBinding(T,M)}function l(T,b){let M=i[T.id];M===void 0&&(_(T),M=h(T),i[T.id]=M,T.addEventListener("dispose",d));let A=b.program;n.updateUBOMapping(T,A);let C=t.render.frame;s[T.id]!==C&&(u(T),s[T.id]=C)}function h(T){let b=f();T.__bindingPointIndex=b;let M=r.createBuffer(),A=T.__size,C=T.usage;return r.bindBuffer(35345,M),r.bufferData(35345,A,C),r.bindBuffer(35345,null),r.bindBufferBase(35345,b,M),M}function f(){for(let T=0;T0){C=M%A;let q=A-C;C!==0&&q-L.boundary<0&&(M+=A-C,S.__offset=M)}M+=L.storage}return C=M%A,C>0&&(M+=A-C),T.__size=M,T.__cache={},this}function p(T){let b={boundary:0,storage:0};return typeof T=="number"?(b.boundary=4,b.storage=4):T.isVector2?(b.boundary=8,b.storage=8):T.isVector3||T.isColor?(b.boundary=16,b.storage=12):T.isVector4?(b.boundary=16,b.storage=16):T.isMatrix3?(b.boundary=48,b.storage=48):T.isMatrix4?(b.boundary=64,b.storage=64):T.isTexture?console.warn("THREE.WebGLRenderer: Texture samplers can not be part of an uniforms group."):console.warn("THREE.WebGLRenderer: Unsupported uniform value type.",T),b}function d(T){let b=T.target;b.removeEventListener("dispose",d);let M=o.indexOf(b.__bindingPointIndex);o.splice(M,1),r.deleteBuffer(i[b.id]),delete i[b.id],delete s[b.id]}function v(){for(let T in i)r.deleteBuffer(i[T]);o=[],i={},s={}}return{bind:c,update:l,dispose:v}}function rf(){let r=Wi("canvas");return r.style.display="block",r}function af(r={}){this.isWebGLRenderer=!0;let t=r.canvas!==void 0?r.canvas:rf(),e=r.context!==void 0?r.context:null,n=r.depth!==void 0?r.depth:!0,i=r.stencil!==void 0?r.stencil:!0,s=r.antialias!==void 0?r.antialias:!1,o=r.premultipliedAlpha!==void 0?r.premultipliedAlpha:!0,a=r.preserveDrawingBuffer!==void 0?r.preserveDrawingBuffer:!1,c=r.powerPreference!==void 0?r.powerPreference:"default",l=r.failIfMajorPerformanceCaveat!==void 0?r.failIfMajorPerformanceCaveat:!1,h;e!==null?h=e.getContextAttributes().alpha:h=r.alpha!==void 0?r.alpha:!1;let f=null,u=null,m=[],_=[];this.domElement=t,this.debug={checkShaderErrors:!0},this.autoClear=!0,this.autoClearColor=!0,this.autoClearDepth=!0,this.autoClearStencil=!0,this.sortObjects=!0,this.clippingPlanes=[],this.localClippingEnabled=!1,this.outputEncoding=vn,this.physicallyCorrectLights=!1,this.toneMapping=We,this.toneMappingExposure=1;let p=this,d=!1,v=0,T=0,b=null,M=-1,A=null,C=new Xt,I=new Xt,x=null,S=t.width,L=t.height,X=1,q=null,z=null,R=new Xt(0,0,S,L),G=new Xt(0,0,S,L),Y=!1,j=new ts,W=!1,Q=!1,Z=null,ft=new qt,F=new Nt,J=new N,nt={background:null,fog:null,environment:null,overrideMaterial:null,isScene:!0};function it(){return b===null?X:1}let O=e;function Mt(y,D){for(let B=0;B0?u=_[_.length-1]:u=null,m.pop(),m.length>0?f=m[m.length-1]:f=null};function $t(y,D,B,P){if(y.visible===!1)return;if(y.layers.test(D.layers)){if(y.isGroup)B=y.renderOrder;else if(y.isLOD)y.autoUpdate===!0&&y.update(D);else if(y.isLight)u.pushLight(y),y.castShadow&&u.pushShadow(y);else if(y.isSprite){if(!y.frustumCulled||j.intersectsSprite(y)){P&&J.setFromMatrixPosition(y.matrixWorld).applyMatrix4(ft);let vt=Ht.update(y),St=y.material;St.visible&&f.push(y,vt,St,B,J.z,null)}}else if((y.isMesh||y.isLine||y.isPoints)&&(y.isSkinnedMesh&&y.skeleton.frame!==Ft.render.frame&&(y.skeleton.update(),y.skeleton.frame=Ft.render.frame),!y.frustumCulled||j.intersectsObject(y))){P&&J.setFromMatrixPosition(y.matrixWorld).applyMatrix4(ft);let vt=Ht.update(y),St=y.material;if(Array.isArray(St)){let Tt=vt.groups;for(let Rt=0,At=Tt.length;Rt0&&an(V,D,B),P&&ot.viewport(C.copy(P)),V.length>0&&Bt(V,D,B),pt.length>0&&Bt(pt,D,B),vt.length>0&&Bt(vt,D,B),ot.buffers.depth.setTest(!0),ot.buffers.depth.setMask(!0),ot.buffers.color.setMask(!0),ot.setPolygonOffset(!1)}function an(y,D,B){let P=ut.isWebGL2;Z===null&&(Z=new qe(1,1,{generateMipmaps:!0,type:ht.has("EXT_color_buffer_half_float")?mi:yn,minFilter:pi,samples:P&&s===!0?4:0})),p.getDrawingBufferSize(F),P?Z.setSize(F.x,F.y):Z.setSize(Hi(F.x),Hi(F.y));let V=p.getRenderTarget();p.setRenderTarget(Z),p.clear();let pt=p.toneMapping;p.toneMapping=We,Bt(y,D,B),p.toneMapping=pt,xt.updateMultisampleRenderTarget(Z),xt.updateRenderTargetMipmap(Z),p.setRenderTarget(V)}function Bt(y,D,B){let P=D.isScene===!0?D.overrideMaterial:null;for(let V=0,pt=y.length;V0&&xt.useMultisampledRTT(y)===!1?V=bt.get(y).__webglMultisampledFramebuffer:V=At,C.copy(y.viewport),I.copy(y.scissor),x=y.scissorTest}else C.copy(R).multiplyScalar(X).floor(),I.copy(G).multiplyScalar(X).floor(),x=Y;if(ot.bindFramebuffer(36160,V)&&ut.drawBuffers&&P&&ot.drawBuffers(y,V),ot.viewport(C),ot.scissor(I),ot.setScissorTest(x),pt){let Tt=bt.get(y.texture);O.framebufferTexture2D(36160,36064,34069+D,Tt.__webglTexture,B)}else if(vt){let Tt=bt.get(y.texture),Rt=D||0;O.framebufferTextureLayer(36160,36064,Tt.__webglTexture,B||0,Rt)}M=-1},this.readRenderTargetPixels=function(y,D,B,P,V,pt,vt){if(!(y&&y.isWebGLRenderTarget)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");return}let St=bt.get(y).__webglFramebuffer;if(y.isWebGLCubeRenderTarget&&vt!==void 0&&(St=St[vt]),St){ot.bindFramebuffer(36160,St);try{let Tt=y.texture,Rt=Tt.format,At=Tt.type;if(Rt!==Re&&rt.convert(Rt)!==O.getParameter(35739)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.");return}let Et=At===mi&&(ht.has("EXT_color_buffer_half_float")||ut.isWebGL2&&ht.has("EXT_color_buffer_float"));if(At!==yn&&rt.convert(At)!==O.getParameter(35738)&&!(At===gn&&(ut.isWebGL2||ht.has("OES_texture_float")||ht.has("WEBGL_color_buffer_float")))&&!Et){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.");return}D>=0&&D<=y.width-P&&B>=0&&B<=y.height-V&&O.readPixels(D,B,P,V,rt.convert(Rt),rt.convert(At),pt)}finally{let Tt=b!==null?bt.get(b).__webglFramebuffer:null;ot.bindFramebuffer(36160,Tt)}}},this.copyFramebufferToTexture=function(y,D,B=0){let P=Math.pow(2,-B),V=Math.floor(D.image.width*P),pt=Math.floor(D.image.height*P);xt.setTexture2D(D,0),O.copyTexSubImage2D(3553,B,0,0,y.x,y.y,V,pt),ot.unbindTexture()},this.copyTextureToTexture=function(y,D,B,P=0){let V=D.image.width,pt=D.image.height,vt=rt.convert(B.format),St=rt.convert(B.type);xt.setTexture2D(B,0),O.pixelStorei(37440,B.flipY),O.pixelStorei(37441,B.premultiplyAlpha),O.pixelStorei(3317,B.unpackAlignment),D.isDataTexture?O.texSubImage2D(3553,P,y.x,y.y,V,pt,vt,St,D.image.data):D.isCompressedTexture?O.compressedTexSubImage2D(3553,P,y.x,y.y,D.mipmaps[0].width,D.mipmaps[0].height,vt,D.mipmaps[0].data):O.texSubImage2D(3553,P,y.x,y.y,vt,St,D.image),P===0&&B.generateMipmaps&&O.generateMipmap(3553),ot.unbindTexture()},this.copyTextureToTexture3D=function(y,D,B,P,V=0){if(p.isWebGL1Renderer){console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: can only be used with WebGL2.");return}let pt=y.max.x-y.min.x+1,vt=y.max.y-y.min.y+1,St=y.max.z-y.min.z+1,Tt=rt.convert(P.format),Rt=rt.convert(P.type),At;if(P.isData3DTexture)xt.setTexture3D(P,0),At=32879;else if(P.isDataArrayTexture)xt.setTexture2DArray(P,0),At=35866;else{console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: only supports THREE.DataTexture3D and THREE.DataTexture2DArray.");return}O.pixelStorei(37440,P.flipY),O.pixelStorei(37441,P.premultiplyAlpha),O.pixelStorei(3317,P.unpackAlignment);let Et=O.getParameter(3314),kt=O.getParameter(32878),fe=O.getParameter(3316),Oe=O.getParameter(3315),on=O.getParameter(32877),Vt=B.isCompressedTexture?B.mipmaps[0]:B.image;O.pixelStorei(3314,Vt.width),O.pixelStorei(32878,Vt.height),O.pixelStorei(3316,y.min.x),O.pixelStorei(3315,y.min.y),O.pixelStorei(32877,y.min.z),B.isDataTexture||B.isData3DTexture?O.texSubImage3D(At,V,D.x,D.y,D.z,pt,vt,St,Tt,Rt,Vt.data):B.isCompressedArrayTexture?(console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: untested support for compressed srcTexture."),O.compressedTexSubImage3D(At,V,D.x,D.y,D.z,pt,vt,St,Tt,Vt.data)):O.texSubImage3D(At,V,D.x,D.y,D.z,pt,vt,St,Tt,Rt,Vt),O.pixelStorei(3314,Et),O.pixelStorei(32878,kt),O.pixelStorei(3316,fe),O.pixelStorei(3315,Oe),O.pixelStorei(32877,on),V===0&&P.generateMipmaps&&O.generateMipmap(At),ot.unbindTexture()},this.initTexture=function(y){y.isCubeTexture?xt.setTextureCube(y,0):y.isData3DTexture?xt.setTexture3D(y,0):y.isDataArrayTexture||y.isCompressedArrayTexture?xt.setTexture2DArray(y,0):xt.setTexture2D(y,0),ot.unbindTexture()},this.resetState=function(){v=0,T=0,b=null,ot.reset(),H.reset()},typeof __THREE_DEVTOOLS__!="undefined"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}var ur=class extends af{};ur.prototype.isWebGL1Renderer=!0;function Qe(r,t,e){return io(r)?new r.constructor(r.subarray(t,e!==void 0?e:r.length)):r.slice(t,e)}function Ui(r,t,e){return!r||!e&&r.constructor===t?r:typeof t.BYTES_PER_ELEMENT=="number"?new t(r):Array.prototype.slice.call(r)}function io(r){return ArrayBuffer.isView(r)&&!(r instanceof DataView)}var Kn=class{constructor(t,e,n,i){this.parameterPositions=t,this._cachedIndex=0,this.resultBuffer=i!==void 0?i:new e.constructor(n),this.sampleValues=e,this.valueSize=n,this.settings=null,this.DefaultSettings_={}}evaluate(t){let e=this.parameterPositions,n=this._cachedIndex,i=e[n],s=e[n-1];n:{t:{let o;e:{i:if(!(t=s)){let a=e[1];t=s)break t}o=n,n=0;break e}break n}for(;n>>1;te;)--o;if(++o,s!==0||o!==i){s>=o&&(o=Math.max(o,1),s=o-1);let a=this.getValueSize();this.times=Qe(n,s,o),this.values=Qe(this.values,s*a,o*a)}return this}validate(){let t=!0,e=this.getValueSize();e-Math.floor(e)!==0&&(console.error("THREE.KeyframeTrack: Invalid value size in track.",this),t=!1);let n=this.times,i=this.values,s=n.length;s===0&&(console.error("THREE.KeyframeTrack: Track is empty.",this),t=!1);let o=null;for(let a=0;a!==s;a++){let c=n[a];if(typeof c=="number"&&isNaN(c)){console.error("THREE.KeyframeTrack: Time is not a valid number.",this,a,c),t=!1;break}if(o!==null&&o>c){console.error("THREE.KeyframeTrack: Out of order keys.",this,a,c,o),t=!1;break}o=c}if(i!==void 0&&io(i))for(let a=0,c=i.length;a!==c;++a){let l=i[a];if(isNaN(l)){console.error("THREE.KeyframeTrack: Value is not a valid number.",this,a,l),t=!1;break}}return t}optimize(){let t=Qe(this.times),e=Qe(this.values),n=this.getValueSize(),i=this.getInterpolation()===_s,s=t.length-1,o=1;for(let a=1;a0){t[o]=t[s];for(let a=s*n,c=o*n,l=0;l!==n;++l)e[c+l]=e[a+l];++o}return o!==t.length?(this.times=Qe(t,0,o),this.values=Qe(e,0,o*n)):(this.times=t,this.values=e),this}clone(){let t=Qe(this.times,0),e=Qe(this.values,0),n=this.constructor,i=new n(this.name,t,e);return i.createInterpolant=this.createInterpolant,i}};Le.prototype.TimeBufferType=Float32Array;Le.prototype.ValueBufferType=Float32Array;Le.prototype.DefaultInterpolation=Vi;var wn=class extends Le{};wn.prototype.ValueTypeName="bool";wn.prototype.ValueBufferType=Array;wn.prototype.DefaultInterpolation=ki;wn.prototype.InterpolantFactoryMethodLinear=void 0;wn.prototype.InterpolantFactoryMethodSmooth=void 0;var mr=class extends Le{};mr.prototype.ValueTypeName="color";var gr=class extends Le{};gr.prototype.ValueTypeName="number";var _r=class extends Kn{constructor(t,e,n,i){super(t,e,n,i)}interpolate_(t,e,n,i){let s=this.resultBuffer,o=this.sampleValues,a=this.valueSize,c=(n-e)/(i-e),l=t*a;for(let h=l+a;l!==h;l+=4)rn.slerpFlat(s,0,o,l-a,o,l,c);return s}},yi=class extends Le{InterpolantFactoryMethodLinear(t){return new _r(this.times,this.values,this.getValueSize(),t)}};yi.prototype.ValueTypeName="quaternion";yi.prototype.DefaultInterpolation=Vi;yi.prototype.InterpolantFactoryMethodSmooth=void 0;var Sn=class extends Le{};Sn.prototype.ValueTypeName="string";Sn.prototype.ValueBufferType=Array;Sn.prototype.DefaultInterpolation=ki;Sn.prototype.InterpolantFactoryMethodLinear=void 0;Sn.prototype.InterpolantFactoryMethodSmooth=void 0;var xr=class extends Le{};xr.prototype.ValueTypeName="vector";var wr="\\\\[\\\\]\\\\.:\\\\/",of=new RegExp("["+wr+"]","g"),Sr="[^"+wr+"]",lf="[^"+wr.replace("\\\\.","")+"]",cf=/((?:WC+[\\/:])*)/.source.replace("WC",Sr),hf=/(WCOD+)?/.source.replace("WCOD",lf),uf=/(?:\\.(WC+)(?:\\[(.+)\\])?)?/.source.replace("WC",Sr),df=/\\.(WC+)(?:\\[(.+)\\])?/.source.replace("WC",Sr),ff=new RegExp("^"+cf+hf+uf+df+"$"),pf=["material","materials","bones","map"],yr=class{constructor(t,e,n){let i=n||It.parseTrackName(e);this._targetGroup=t,this._bindings=t.subscribe_(e,i)}getValue(t,e){this.bind();let n=this._targetGroup.nCachedObjects_,i=this._bindings[n];i!==void 0&&i.getValue(t,e)}setValue(t,e){let n=this._bindings;for(let i=this._targetGroup.nCachedObjects_,s=n.length;i!==s;++i)n[i].setValue(t,e)}bind(){let t=this._bindings;for(let e=this._targetGroup.nCachedObjects_,n=t.length;e!==n;++e)t[e].bind()}unbind(){let t=this._bindings;for(let e=this._targetGroup.nCachedObjects_,n=t.length;e!==n;++e)t[e].unbind()}},It=class{constructor(t,e,n){this.path=e,this.parsedPath=n||It.parseTrackName(e),this.node=It.findNode(t,this.parsedPath.nodeName)||t,this.rootNode=t,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}static create(t,e,n){return t&&t.isAnimationObjectGroup?new It.Composite(t,e,n):new It(t,e,n)}static sanitizeNodeName(t){return t.replace(/\\s/g,"_").replace(of,"")}static parseTrackName(t){let e=ff.exec(t);if(e===null)throw new Error("PropertyBinding: Cannot parse trackName: "+t);let n={nodeName:e[2],objectName:e[3],objectIndex:e[4],propertyName:e[5],propertyIndex:e[6]},i=n.nodeName&&n.nodeName.lastIndexOf(".");if(i!==void 0&&i!==-1){let s=n.nodeName.substring(i+1);pf.indexOf(s)!==-1&&(n.nodeName=n.nodeName.substring(0,i),n.objectName=s)}if(n.propertyName===null||n.propertyName.length===0)throw new Error("PropertyBinding: can not parse propertyName from trackName: "+t);return n}static findNode(t,e){if(e===void 0||e===""||e==="."||e===-1||e===t.name||e===t.uuid)return t;if(t.skeleton){let n=t.skeleton.getBoneByName(e);if(n!==void 0)return n}if(t.children){let n=function(s){for(let o=0;oMath.round(S*a);if(d[0]=`${x(A.x)}, ${x(A.y)}, ${x(A.z)}`,d[1]=`${x(C.x)}, ${x(C.y)}, ${x(C.z)}`,d[2]=`${x(I.x)}, ${x(I.y)}, ${x(I.z)}`,!(d[0]===d[1]||d[1]===d[2]||d[2]===d[0]))for(let S=0;S<3;S++){let L=(S+1)%3,X=d[S],q=d[L],z=as[p[S]],R=as[p[L]],G=`${X}_${q}`,Y=`${q}_${X}`;Y in v&&v[Y]?(Tr.dot(v[Y].normal)<=c&&(T.push(z.x,z.y,z.z),T.push(R.x,R.y,R.z)),v[Y]=null):G in v||(v[G]={index0:_[S],index1:_[L],normal:Tr.clone()})}}for(let M in v)if(v[M]){let{index0:A,index1:C}=v[M];ss.fromBufferAttribute(u,A),rs.fromBufferAttribute(u,C),T.push(ss.x,ss.y,ss.z),T.push(rs.x,rs.y,rs.z)}let b=new self[h](T);so.postMessage({id:e,vertices:b},[b.buffer])}});\n/*! Bundled license information:\n\nthree/build/three.module.js:\n (**\n * @license\n * Copyright 2010-2023 Three.js Authors\n * SPDX-License-Identifier: MIT\n *)\n*/\n')}var jo,jx=class{constructor(){this.worker=new LB,this.geometries=new Map,this.loadedGeometries=new Map,this.jobCount=0,this.init()}add(e,t){this.geometries.set(e,t),this.jobCount++}get(e){return this.geometries.get(e)}init(){this.worker.addEventListener("message",(e=>{let t=this.geometries.get(e.data.id.toString());(null==t?void 0:t.length)>0&&(t.forEach((t=>{null!=t&&t.geometry&&null!=t&&t.matrix&&null!=t&&t.geom&&null!=t&&t.line&&(t.geom.parameters={geometry:t.geometry,thresholdAngle:5},t.geom.setAttribute("position",new dt(e.data.vertices,3)),t.geom.applyMatrix4(t.matrix),t.line.geometry=t.geom,t.line.visible=!0)})),this.geometries.delete(e.data.id.toString()),this.jobCount--),this.loadedGeometries.set(e.data.id.toString(),e.data.vertices)}))}postMessage(e){this.worker.postMessage(JSON.stringify(e))}},lyt=new A(0,1,0),qg=class{static resetObjectStyle(e){this.revertWireframeMode(e),this.revertObjectOpacity(e,[]),this.revertAppliedMaterialToObject(e),this.revertVisibleForFloors(e)}static resetObjectStyleById(e,t){let i=this.getObjectById(e,t);this.resetObjectStyle(i)}static setObjectOpacity(e,t=.3,i,r){let n=[],s=e=>{n.find((t=>t.id===e.id))||(n.push({id:e.id,opacity:e.opacity,transparent:e.transparent,side:e.side}),e.opacity*=t,e.transparent=!0,e.side=gi)},a=e=>{let i=n.find((t=>t.id===e.id));if(!i){let i=e.clone();return n.push({id:e.id,opacity:e.opacity,transparent:e.transparent,side:e.side,material:e,clonedMaterial:i}),i.opacity*=t,i.transparent=!0,i}return i.clonedMaterial};return e.traverse((e=>{if((!r||-1===r.indexOf(e.id))&&(!i||-1!==i.indexOf(e.id))&&e instanceof rt){let t=e;if(i||r){if(Array.isArray(t.material)){let e=[];t.material.forEach((t=>{let i=a(t);i&&e.push(i)})),t.material=e}else if(t.material){let e=a(t.material);e&&(t.material=e)}}else if(Array.isArray(t.material))t.material.forEach((e=>{s(e)}));else if(t.material){let e=t.material;s(e)}}})),n}static revertObjectOpacity(e,t,i,r){let n=e=>{let i=t.find((t=>t.id===e.id));i&&(e.opacity=i.opacity,e.transparent=i.transparent,e.side=i.side)},s=e=>{let i=t.find((t=>t.clonedMaterial&&t.clonedMaterial.id===e.id));if(i)return i.material};e.traverse((e=>{if((!r||-1===r.indexOf(e.id))&&(!i||-1!==i.indexOf(e.id))&&e instanceof rt)if(Array.isArray(e.material)){let t=[];e.material.forEach((e=>{let i=s(e);i?t.push(i):n(e)})),e.material=t}else if(e.material){let t=s(e.material);t?e.material=t:n(e.material)}}))}static setObjectOpacityById(e,t,i=.3,r,n){let s=e.getObjectById(t);if(!s)throw new Error(`Failed to find object by id: ${t}`);return qg.setObjectOpacity(s,i,r,n)}static revertObjectOpacityById(e,t,i,r,n){let s=e.getObjectById(t);if(!s)throw new Error(`Failed to find object by id: ${t}`);qg.revertObjectOpacity(s,i,r,n)}static applyMaterialToObject(e,t,i,r){e.traverse((e=>{r&&-1!==r.indexOf(e.id)||i&&-1===i.indexOf(e.id)||e instanceof rt&&(e.userData.originalMaterial||(e.userData.originalMaterial=e.material),e.material=t)}))}static revertAppliedMaterialToObject(e,t,i){e.traverse((e=>{i&&-1!==i.indexOf(e.id)||t&&-1===t.indexOf(e.id)||e.userData.originalMaterial&&(e.material=e.userData.originalMaterial,e.userData.originalMaterial=void 0)}))}static applyMaterialToObjectById(e,t,i,r,n){let s=e.getObjectById(t);if(!s)throw new Error(`Failed to find object by id: ${t}`);this.applyMaterialToObject(s,i,r,n)}static revertAppliedMaterialToObjectById(e,t,i,r){let n=e.getObjectById(t);if(!n)throw new Error(`Failed to find object by id: ${t}`);this.revertAppliedMaterialToObject(n,i,r)}static applyOpacityMaterialToObject(e,t,i){let r=new lr({color:0,transparent:!0,opacity:.05});this.applyMaterialToObject(e,r,t,i)}static setWireframeMode(e){let t=new lr({color:16732160,wireframe:!0,transparent:!0,opacity:.8});e.traverseVisible((e=>{if(e instanceof rt){let i=e;i.userData.materialForWireframe=i.material,i.material=t}}))}static setWireframeModeById(e,t){let i=e.getObjectById(t);if(!i)throw new Error(`Failed to find object by id: ${t}`);qg.setWireframeMode(i)}static revertWireframeMode(e){e.traverseVisible((e=>{e instanceof rt&&e.userData.materialForWireframe&&(e.material=e.userData.materialForWireframe,e.userData.materialForWireframe=void 0)}))}static revertWireframeModeById(e,t){let i=e.getObjectById(t);if(!i)throw new Error(`Failed to find object by id: ${t}`);qg.revertWireframeMode(i)}static findInner(e,t,i=[],r=!1){let n=t.toLowerCase(),s=[],a=e=>-1!==e.toLowerCase().indexOf(n),o=e=>-1!==e.toString().indexOf(n),l=e=>{if(e.name&&-1!==e.name.toLowerCase().indexOf(n))return!0;if(e.gltfExtensions){let t=e.gltfExtensions,i=t.objectId&&t.objectId.Value||t.elementId&&t.elementId.Value;if(i&&-1!==i.toLowerCase().indexOf(n))return!0}return!1};if(i.length>0)for(let t=0;t{(a(e.name)||o(e.id)||l(e.userData))&&s.push(e)})),r&&s.length>0)return[s[0]]}else if(e.traverse((e=>{(a(e.name)||o(e.id)||l(e.userData))&&s.push(e)})),r&&s.length>0)return[s[0]];return s}static find(e,t,i=[],r=!1){return this.findInner(e,t,i,r)}static findFirst(e,t,i=[],r=!1){let n=this.findInner(e,t,i,r);if(n.length>0)return n[0]}static getFloorsFromString(e){let t=[],i=new RegExp(/(?:-?(?:\d+(?:\.5)?)F)(?=\W|$)/,"g").exec(e);return i&&i.length>0&&i.forEach((e=>{if(e){let i=e.replace("F",""),r=Number(i);r?t.push(r):console.log(`[OU] invalid floor: ${e}`)}})),t}static matchFloor(e,t){return-1!==this.getFloorsFromString(e).findIndex((e=>e===t))}static matchFloors(e,t){return-1!==this.getFloorsFromString(e).findIndex((e=>-1!==t.findIndex((t=>t===e))))}static distinctFloors(e,t){let i=[],r=e=>{this.getFloorsFromString(e).forEach((e=>{i[e]=!0}))};return t.forEach((t=>{let i=e.getObjectById(t);i&&i.traverse((e=>{if(r(e.name),e.userData.gltfExtensions){let t=e.userData.gltfExtensions;t.level&&t.level.Value&&r(t.level.Value)}}))})),Object.keys(i).sort()}static traverseObjectByFloors(e,t,i,r,n){let s=e.getObjectById(t);if(!s)return[];s.traverse((e=>{let t=this.matchFloors(e.name,i);if(!t&&e.userData&&e.userData.gltfExtensions){let r=e.userData.gltfExtensions;r.level&&r.level.Value&&(t=this.matchFloors(r.level.Value,i))}t&&r&&r(e),!t&&n&&n(e)}))}static setVisibleForFloors(e,t,i,r=!0){this.traverseObjectByFloors(e,t,i,(e=>{let t=e;for(;t;)t.visible=!0,t=t.parent||void 0}),(e=>{r&&(e.visible=!1)}))}static revertVisibleForFloors(e){e.traverse((e=>{e.visible=!0}))}static revertVisibleForFloorsById(e,t){let i=this.getObjectById(e,t);this.revertVisibleForFloors(i)}static getObjectById(e,t){let i=e.getObjectById(t);if(!i)throw new Error(`Failed to find object by id: ${t}`);return i}static createOutlines(e,t={visibleOnly:!0,meshOnly:!0,replaceOriginalObject:!1}){if(!e)return[];if(0===e.children.length&&(t.visibleOnly&&!e.visible||t.meshOnly&&!(e instanceof rt)))return[];let i=e;for(let e=i.children.length-1;e>=0;--e){let r=i.children[e];this.createOutlines(r,t).forEach((e=>e.applyMatrix4(i.matrixWorld)))}if(!i.geometry)return[];let r=[];if(i instanceof rn)for(let e=0;e=0;--t){let i=e.children[t];i.children.length>0&&this.removeOutlines(i),i.userData.isOutline&&e.remove(i)}}static hasOutline(e){let t=!1;for(let i=0;i0&&(t=this.hasOutline(r),t))break}return t}static setOutlinesVisibility(e,t){e.traverse((e=>{e.userData.isOutline&&(e.visible=t)}))}static createOutline(e,t,i=this.OUTLINE_MATERIAL){let r=new Rp,n=new li(r,i);if(n.layers.set(11),n.userData.isOutline=!0,n.matrixAutoUpdate=!1,n.visible=!1,n.updateMatrix(),jo||(jo=new jx),jo.loadedGeometries.has(e.id.toString())){let i=jo.loadedGeometries.get(e.id.toString());return r.parameters={geometry:e,thresholdAngle:5},r.setAttribute("position",new dt(i,3)),r.applyMatrix4(t),n.geometry=r,n.visible=!0,n}if(jo.get(e.id.toString())||jo.add(e.id.toString(),[]),!jo.loadedGeometries.has(e.id.toString())){jo.add(e.id.toString(),jo.get(e.id.toString()).concat([{geometry:e,matrix:t,geom:r,line:n}]));let i=e.getAttribute("position");jo.postMessage({id:e.id,position:i.toJSON(),index:e.getIndex(),thresholdAngle:5})}return n}static createOutlineSync(e,t,i=this.OUTLINE_MATERIAL){let r=new Rp(e,5),n=new li(r,i);return n.layers.set(11),n.userData.isOutline=!0,n.matrixAutoUpdate=!1,n.applyMatrix4(t),n}static cloneObject(e,t=!0){let i=e.clone();return t&&i.traverse((e=>{(e instanceof rt||e instanceof Ir)&&(e.material=As.cloneMaterial(e.material))})),i}static createBox(e,t,i,r=qg.BOX_FACE_MATERIAL,n=!0){let s=[],a=(e,t,i)=>{s.push(new A(e,t,i))};a(0,0,0),a(e,0,0),a(e,t,0),a(0,t,0),a(0,0,i),a(e,0,i),a(e,t,i),a(0,t,i);let o=new lt;o.setFromPoints(s);let l=[0,3,2,0,2,1,4,6,7,4,5,6,0,7,3,0,4,7,3,6,2,3,7,6,1,6,5,1,2,6];return n&&l.push(0,5,4,0,1,5),o.setIndex(l),o.computeVertexNormals(),new rt(o,r)}static rebaseObjectOnRTC(e){let t=e;if(!((t.isMesh||t.isLine||t.isPoints)&&t.geometry&&t.geometry instanceof lt))return e;let i=t.geometry;if(!i.hasAttribute("position"))return e;let r=i.getAttribute("position");if(0===r.count)return e;let n=r.itemSize,s=r.array,a=[];for(let e=0;e2?a[2]:0);let l=e.matrixAutoUpdate;return e.matrixAutoUpdate=!1,e.applyMatrix4(o),e.matrixAutoUpdate=l,e}static isEmptyObject(e){if(0===e.children.length){let t=e.geometry;if(!t||!t.hasAttribute("position")||0===t.getAttribute("position").count)return!0}return!1}static removeEmptyObjects(e){for(let t=0;t{e.removeFromParent()})),this.removeEmptyObjects(t))}static setSharedVariablesOfObject(e){e.uuid="",e.up=lyt}static isLeafObject(e){return(e instanceof rt||e instanceof Ir||e instanceof nn)&&!(e.children.length>0||!e.geometry)}},ei=qg;ei.OUTLINE_MATERIAL=new vr({name:"outline",color:0,transparent:!0,opacity:.2}),ei.BOX_FACE_MATERIAL=new Es({color:11648971,transparent:!0,opacity:.3,side:tn});var kC=new Be,cyt=new Be,GC=class{static resetMergeInfo(){this.mergeInfo.removedObjects=0,this.mergeInfo.mergedMeshes=0,this.mergeInfo.mergedLines=0,this.mergeInfo.mergedPoints=0,this.mergeInfo.mergedUnknownTypeObjects=0,this.mergeInfo.elapsedTime=0}static merge(e,t=!0){let i=Date.now();this.mergeInner(e,t),this.mergeInfo.elapsedTime+=Date.now()-i}static mergeInner(e,t=!0){if(!e.children||e.children.length<1)return;let i=e.children.length,r={},n=[];for(let s=0;s0){this.mergeInner(i,t);continue}if(i.userData.relativeToCenter||i.isInstancedMesh||!i.geometry||!(i.geometry instanceof lt))continue;let a=!1,o=Object.values(r);for(let t=o.length-1;t>=0;--t){let i=o[t].indexes[0];if(a=this.tryHandleMergeableObjects(e,s,i,r,n),a)break}for(let t=n.length-1;!a&&t>=0;--t){let i=n[t];if(a=this.tryHandleMergeableObjects(e,s,i,r,n),a)break}a||n.push(s)}if(Object.keys(r).length<=0)return;let s=[],a=[],o=[],l=[];Object.values(r).forEach((i=>{let r,n=i.indexes,h=e.children[n[0]],u=[],c=0,p=0,d=0,f=[];if(n.forEach((i=>{var r,n,s;let a=e.children[i],o=a.geometry.clone();if(o.applyMatrix4(a.matrix),kt.tryConvertInterleavedBufferAttributes(o),o.userData.isLineSegments=!0===a.isLineSegments,u.push(o),t){let e=null==(n=null==(r=o.attributes)?void 0:r.position)?void 0:n.count,t=(null==(s=o.index)?void 0:s.count)||0;f.push({batchId:c,positionStart:p,positionCount:e,indexStart:d,indexCount:t}),p+=e,d+=t,c++}})),0!==u.length){if(h.isMesh){let e=zo(u);if(!e)return;e.userData={},r=new rt(e,h.material),s.push(r)}else if(h.isLine){let e=this.mergeLineGeometries(u,t,h.material instanceof Ap||h.material instanceof Yt,f);if(!e)return;r=new li(e,h.material),a.push(r)}else if(h.isPoints){let e=zo(u);if(!e)return;e.userData={},r=new nn(e,h.material),o.push(r)}r&&(t?r.userData.batches=f:r.userData=h.userData,r.userData.layerName=h.userData.layerName,r.name=`[Merged] ${h.name}`,r.matrixAutoUpdate=!1,r.renderOrder=h.renderOrder,r.layers=h.layers,r.visible=h.visible,l.push(...n)),u.forEach((e=>{kt.releaseGeometryManually(e)})),u=[]}})),l.sort(((e,t)=>t-e)),l.forEach((t=>{let i=e.children[t];e.remove(i)})),[...s,...a,...o].forEach((t=>{e.add(t)})),e.updateMatrix(),this.mergeInfo.removedObjects+=l.length,this.mergeInfo.mergedMeshes+=s.length,this.mergeInfo.mergedLines+=a.length,this.mergeInfo.mergedPoints+=o.length}static tryHandleMergeableObjects(e,t,i,r,n){let s=!1,a=Array.isArray(e),o=a?e.length:e.children.length;if(t===i||t>=o||i>=o)return s;let l=a?e[t]:e.children[t],h=a?e[i]:e.children[i];return this.areObjectsMergeable(l,h)&&this.areGeometriesMergeable(l.geometry,h.geometry)&&As.materialsEquals(l.material,h.material)&&(r[i]||(r[i]={indexes:[i]},this.removeFromArray(n,i)),r[i].indexes.push(t),s=!0),s}static isFilteredByOtherFactors(e,t){let i=e;if(i.isMesh&&i.material.isShaderMaterial)return!0;let r=!1,n=e;for(;n&&n!==t;){let e=n.userData;if(e.relativeToCenter||e.spatialFilterHandle){r=!0;break}n=n.parent}return r}static deepMerge(e,t,i=!0,r=!0,n=!0){let s={added:[],removed:[]};if(e.length<=1)return s;let a=Date.now(),o={},l=[];for(let i=0;i=0;--t){let r=s[t].indexes[0];if(n=this.tryHandleMergeableObjects(e,i,r,o,l),n)break}for(let t=l.length-1;!n&&t>=0;--t){let r=l[t];if(n=this.tryHandleMergeableObjects(e,i,r,o,l),n)break}n||l.push(i)}if(Object.keys(o).length<=0)return s;ne.debug(`[Merge] Built merged indexes for ${e.length} objects in ${(Date.now()-a)/1e3}s`),a=Date.now();let h=[],u=[],c=[],p=[];Object.values(o).forEach((i=>{let r=i.indexes;if(r.length<2)return;let s,a=e[r[0]],o=[],l=0,d=0,f=0,m=[];if(r.forEach((i=>{var r,s,h;let u=e[i],c=u.geometry.clone();if(a.material instanceof vr&&c.deleteAttribute("lineDistance"),this.applyMatrix(c,u,t),c.userData.isLineSegments=!0===u.isLineSegments,o.push(c),n){let e,t=null==(s=null==(r=c.attributes)?void 0:r.position)?void 0:s.count,i=(null==(h=c.index)?void 0:h.count)||0;a.isLine&&(c.boundingSphere||c.computeBoundingSphere(),e=c.boundingSphere.clone()),m.push({batchId:l,positionStart:d,positionCount:t,indexStart:f,indexCount:i,boundingSphere:e}),d+=t,f+=i,l++}})),0!==o.length){if(a.isMesh){let e=zo(o);if(!e)return;e.userData={},s=new rt(e,a.material),h.push(s)}else if(a.isLine){let e=this.mergeLineGeometries(o,n,a.material instanceof Ap||a.material instanceof Yt,m);if(!e)return;s=new li(e,a.material),u.push(s)}else if(a.isPoints){let e=zo(o);if(!e)return;e.userData={},s=new nn(e,a.material),c.push(s)}s&&(n?s.userData.batches=m:s.userData=a.userData,s.userData.layerName=a.userData.layerName,s.name=`[Merged] ${a.name}`,s.matrixAutoUpdate=!1,s.renderOrder=a.renderOrder,s.layers=a.layers,s.visible=a.visible,r.forEach((e=>p.push(e)))),o.forEach((e=>{kt.releaseGeometryManually(e)})),o=[]}})),ne.debug(`[Merge] Ran deepMerge() in ${(Date.now()-a)/1e3}s`);let d=s.removed;p.forEach((t=>{let r=e[t];d.push(r),i&&r.removeFromParent()}));let f=s.added;return[...h,...u,...c].forEach((e=>{f.push(e),i&&t&&(t.add(e),e.updateWorldMatrix(!1,!1))})),this.mergeInfo.removedObjects+=p.length,this.mergeInfo.mergedMeshes+=h.length,this.mergeInfo.mergedLines+=u.length,this.mergeInfo.mergedPoints+=c.length,r&&t&&ei.removeEmptyObjects(t),s}static applyMatrix(e,t,i){let r=t;for(kC.identity();r&&r!==i&&(kC.premultiply(r.matrix),r.parent);)r=r.parent;return kC.equals(cyt)?e:e.applyMatrix4(kC)}static mergeLineGeometries(e,t,i,r){let n;if(i)n=GC.mergeBufferGeometriesWithLinesToLineSegements(e,t,r);else{if(n=zo(e),!n)return;n.userData={};let i=[],s=0;e.forEach(((e,n)=>{let a=e.attributes.position;if(!a)return;let o=e.index,l=!0===e.userData.isLineSegments,h=i.length;if(o)for(let e=0;e0&&i.push(s+o.array[e-1],s+t)}else for(let e=0;e0&&(l?e%2==1&&i.push(s+e-1,s+e):i.push(s+e-1,s+e));s+=a.count,t&&r&&(r[n].indexStart=h,r[n].indexCount=i.length-h)})),n.setIndex(i)}return n}static mergeBufferGeometriesWithLinesToLineSegements(e,t,i){let r=new Set(Object.keys(e[0].attributes)),n={},s=new lt,a=[],o=0;for(let s=0;s=0;--i)if(e[i]===t)return void e.splice(i,1)}static removeObjectFromArray(e,t){for(let i=e.length-1;i>=0;--i)if(e[i]===t)return void e.splice(i,1)}static areGeometriesMergeable(e,t){if(!e||!t||"InstancedBufferGeometry"===e.type||"InstancedBufferGeometry"===t.type||!!e.index!=!!t.index)return!1;let i=Object.keys(e.attributes);if(i.length!==Object.keys(t.attributes).length)return!1;for(let e of i)if(!t.attributes[e])return!1;return!0}static areObjectsMergeable(e,t){if(e.layers.mask!==t.layers.mask||e.renderOrder!==t.renderOrder||e.visible!==t.visible||e.userData.layerName!==t.userData.layerName)return!1;if(e.type===t.type)return!0;let i=e,r=t;return i.isMesh&&r.isMesh||i.isLine&&r.isLine||i.isPoints&&r.isPoints}static isMergedMesh(e){return!(!e||!e.userData.batches)}static isFaceIndexInBatch(e,t,i){if(e.boundsTree){let r=e.index.getX(3*i);if(r>=t.positionStart&&r=e&&i<=r)return!0}else{let e=3*i;if(e>=t.positionStart&&e80*i){r=s=e[0],n=a=e[1];for(let t=i;ts&&(s=o),l>a&&(a=l);h=Math.max(s-r,a-n),h=0!==h?32767/h:0}return $x(p,d,i,r,n,h,0),d}};function tde(e,t,i,r,n){let s,a;if(n===tTt(e,t,i,r)>0)for(s=t;s=t;s-=r)a=Qpe(s,e[s],e[s+1],a);return a&&KC(a,a.next)&&(Zx(a),a=a.next),a}function Xg(e,t){if(!e)return e;t||(t=e);let i,r=e;do{if(i=!1,r.steiner||!KC(r,r.next)&&0!==Ln(r.prev,r,r.next))r=r.next;else{if(Zx(r),r=t=r.prev,r===r.next)break;i=!0}}while(i||r!==t);return t}function $x(e,t,i,r,n,s,a){if(!e)return;!a&&s&&$yt(e,r,n,s);let o,l,h=e;for(;e.prev!==e.next;)if(o=e.prev,l=e.next,s?Gyt(e,r,n,s):kyt(e))t.push(o.i/i|0),t.push(e.i/i|0),t.push(l.i/i|0),Zx(e),e=l.next,h=l.next;else if((e=l)===h){a?1===a?$x(e=Vyt(Xg(e),t,i),t,i,r,n,s,2):2===a&&zyt(e,t,i,r,n,s):$x(Xg(e),t,i,r,n,s,1);break}}function kyt(e){let t=e.prev,i=e,r=e.next;if(Ln(t,i,r)>=0)return!1;let n=t.x,s=i.x,a=r.x,o=t.y,l=i.y,h=r.y,u=ns?n>a?n:a:s>a?s:a,d=o>l?o>h?o:h:l>h?l:h,f=r.next;for(;f!==t;){if(f.x>=u&&f.x<=p&&f.y>=c&&f.y<=d&&pT(n,o,s,l,a,h,f.x,f.y)&&Ln(f.prev,f,f.next)>=0)return!1;f=f.next}return!0}function Gyt(e,t,i,r){let n=e.prev,s=e,a=e.next;if(Ln(n,s,a)>=0)return!1;let o=n.x,l=s.x,h=a.x,u=n.y,c=s.y,p=a.y,d=ol?o>h?o:h:l>h?l:h,g=u>c?u>p?u:p:c>p?c:p,y=VB(d,f,t,i,r),v=VB(m,g,t,i,r),T=e.prevZ,x=e.nextZ;for(;T&&T.z>=y&&x&&x.z<=v;){if(T.x>=d&&T.x<=m&&T.y>=f&&T.y<=g&&T!==n&&T!==a&&pT(o,u,l,c,h,p,T.x,T.y)&&Ln(T.prev,T,T.next)>=0||(T=T.prevZ,x.x>=d&&x.x<=m&&x.y>=f&&x.y<=g&&x!==n&&x!==a&&pT(o,u,l,c,h,p,x.x,x.y)&&Ln(x.prev,x,x.next)>=0))return!1;x=x.nextZ}for(;T&&T.z>=y;){if(T.x>=d&&T.x<=m&&T.y>=f&&T.y<=g&&T!==n&&T!==a&&pT(o,u,l,c,h,p,T.x,T.y)&&Ln(T.prev,T,T.next)>=0)return!1;T=T.prevZ}for(;x&&x.z<=v;){if(x.x>=d&&x.x<=m&&x.y>=f&&x.y<=g&&x!==n&&x!==a&&pT(o,u,l,c,h,p,x.x,x.y)&&Ln(x.prev,x,x.next)>=0)return!1;x=x.nextZ}return!0}function Vyt(e,t,i){let r=e;do{let n=r.prev,s=r.next.next;!KC(n,s)&&rde(n,r,r.next,s)&&Kx(n,s)&&Kx(s,n)&&(t.push(n.i/i|0),t.push(r.i/i|0),t.push(s.i/i|0),Zx(r),Zx(r.next),r=e=s),r=r.next}while(r!==e);return Xg(r)}function zyt(e,t,i,r,n,s){let a=e;do{let e=a.next.next;for(;e!==a.prev;){if(a.i!==e.i&&Jyt(a,e)){let o=ide(a,e);return a=Xg(a,a.next),o=Xg(o,o.next),$x(a,t,i,r,n,s,0),void $x(o,t,i,r,n,s,0)}e=e.next}a=a.next}while(a!==e)}function jyt(e,t,i,r){let n,s,a,o,l,h=[];for(n=0,s=t.length;n=r.next.y&&r.next.y!==r.y){let e=r.x+(a-r.y)*(r.next.x-r.x)/(r.next.y-r.y);if(e<=s&&e>n&&(n=e,i=r.x=r.x&&r.x>=h&&s!==r.x&&pT(ai.x||r.x===i.x&&Xyt(i,r)))&&(i=r,c=o)),r=r.next}while(r!==l);return i}function Xyt(e,t){return Ln(e.prev,e,t.prev)<0&&Ln(t.next,e,e.next)<0}function $yt(e,t,i,r){let n=e;do{0===n.z&&(n.z=VB(n.x,n.y,t,i,r)),n.prevZ=n.prev,n.nextZ=n.next,n=n.next}while(n!==e);n.prevZ.nextZ=null,n.prevZ=null,Kyt(n)}function Kyt(e){let t,i,r,n,s,a,o,l,h=1;do{for(i=e,e=null,s=null,a=0;i;){for(a++,r=i,o=0,t=0;t0||l>0&&r;)0!==o&&(0===l||!r||i.z<=r.z)?(n=i,i=i.nextZ,o--):(n=r,r=r.nextZ,l--),s?s.nextZ=n:e=n,n.prevZ=s,s=n;i=r}s.nextZ=null,h*=2}while(a>1);return e}function VB(e,t,i,r,n){return(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=(e-i)*n|0)|e<<8))|e<<4))|e<<2))|e<<1))|(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=(t-r)*n|0)|t<<8))|t<<4))|t<<2))|t<<1))<<1}function Zyt(e){let t=e,i=e;do{(t.x=(e-a)*(s-o)&&(e-a)*(r-o)>=(i-a)*(t-o)&&(i-a)*(s-o)>=(n-a)*(r-o)}function Jyt(e,t){return e.next.i!==t.i&&e.prev.i!==t.i&&!Qyt(e,t)&&(Kx(e,t)&&Kx(t,e)&&eTt(e,t)&&(Ln(e.prev,e,t.prev)||Ln(e,t.prev,t))||KC(e,t)&&Ln(e.prev,e,e.next)>0&&Ln(t.prev,t,t.next)>0)}function Ln(e,t,i){return(t.y-e.y)*(i.x-t.x)-(t.x-e.x)*(i.y-t.y)}function KC(e,t){return e.x===t.x&&e.y===t.y}function rde(e,t,i,r){let n=$C(Ln(e,t,i)),s=$C(Ln(e,t,r)),a=$C(Ln(i,r,e)),o=$C(Ln(i,r,t));return!!(n!==s&&a!==o||0===n&&XC(e,i,t)||0===s&&XC(e,r,t)||0===a&&XC(i,e,r)||0===o&&XC(i,t,r))}function XC(e,t,i){return t.x<=Math.max(e.x,i.x)&&t.x>=Math.min(e.x,i.x)&&t.y<=Math.max(e.y,i.y)&&t.y>=Math.min(e.y,i.y)}function $C(e){return e>0?1:e<0?-1:0}function Qyt(e,t){let i=e;do{if(i.i!==e.i&&i.next.i!==e.i&&i.i!==t.i&&i.next.i!==t.i&&rde(i,i.next,e,t))return!0;i=i.next}while(i!==e);return!1}function Kx(e,t){return Ln(e.prev,e,e.next)<0?Ln(e,t,e.next)>=0&&Ln(e,e.prev,t)>=0:Ln(e,t,e.prev)<0||Ln(e,e.next,t)<0}function eTt(e,t){let i=e,r=!1,n=(e.x+t.x)/2,s=(e.y+t.y)/2;do{i.y>s!=i.next.y>s&&i.next.y!==i.y&&n<(i.next.x-i.x)*(s-i.y)/(i.next.y-i.y)+i.x&&(r=!r),i=i.next}while(i!==e);return r}function ide(e,t){let i=new zB(e.i,e.x,e.y),r=new zB(t.i,t.x,t.y),n=e.next,s=t.prev;return e.next=t,t.prev=e,i.next=n,n.prev=i,r.next=i,i.prev=r,s.next=r,r.prev=s,r}function Qpe(e,t,i,r){let n=new zB(e,t,i);return r?(n.next=r.next,n.prev=r,r.next.prev=n,r.next=n):(n.prev=n,n.next=n),n}function Zx(e){e.next.prev=e.prev,e.prev.next=e.next,e.prevZ&&(e.prevZ.nextZ=e.nextZ),e.nextZ&&(e.nextZ.prevZ=e.prevZ)}function zB(e,t,i){this.i=e,this.x=t,this.y=i,this.prev=null,this.next=null,this.z=0,this.prevZ=null,this.nextZ=null,this.steiner=!1}function tTt(e,t,i,r){let n=0;for(let s=t,a=i-r;se.toArray())).reduce(((e,t)=>(e.push(...t),e)),[]),i=[];return ede.triangulate(t,[],3).forEach((e=>i.push(e))),i}static arePointsCoplanar(e){if(e.length<4)return!0;let t=e[1].clone().sub(e[0]),i=e[2].clone().sub(e[0]).cross(t).normalize();for(let t=3;trTt)return!1;return!0}static isSelfIntersecting(e){let t=e.map((e=>e.toArray().slice(0,-1)));return(0,nde.default)(t).length>0}},jB=class{constructor(e,t,i,r=jB.DEFAULT_SCALE){this.isExplodeUp=!1,this.scene=e,this.objectId=t,t||console.log(`[EXP] Invalid objectId: ${t}`),this.scale=r,r<=0&&console.log(`[EXP] Invalid scale: ${r}`),i?this.position=i:(this.position=new A,this.getObjectCenter(this.position))}explode(){if(!this.objectId||!this.position||!this.scale)return void console.log(`[EXP] Invalid objectId: ${this.objectId}, or position: ${this.position}, or this.power: ${this.scale}`);let e=this.scene.getObjectById(this.objectId);e&&e.children?(console.log(`[EXP] Exploding ${e.name} at: ${this.position.x}, ${this.position.y}, ${this.position.z}`),this.explodeObject(e)):console.log("[EXP] No children to explode!")}explodeObject(e){e.geometry?this.explodeLeafObject(e):e.children.length>0?e.children.forEach((e=>this.explodeObject(e))):this.explodeLeafObject(e)}explodeLeafObject(e){if(e.geometry){if(e.userData.originalPosition=e.position.clone(),e instanceof rn){let t=new Be,i=new A,r=new Hr,n=new A;for(let s=0;s0?e.children.forEach((e=>this.unexplodeObject(e))):this.unexplodeLeafObject(e)}unexplodeLeafObject(e){let t=e.userData.originalPosition;t&&(e.position.set(t.x,t.y,t.z),e.updateMatrix(),delete e.userData.originalPosition)}setOnlyExplodeUp(e){this.isExplodeUp=e}getObjectCenter(e){let t=new Mt;if(!this.objectId)return void console.log(`[EXP] Invalid objectId: ${this.objectId}`);let i=this.scene.getObjectById(this.objectId);i&&i.children?(i.traverse((e=>{t.expandByObject(e)})),t.getCenter(e)):console.log("[EXP] No children to explode!")}},Jx=jB;Jx.DEFAULT_SCALE=1;var Tn=class{static getVisibleObjectBoundingBox(e){let t=new Mt;return e.traverseVisible((e=>{e instanceof rt&&!1!==e.userData.selectable&&t.expandByObject(e)})),t}static getObjectsBoundingBox(e,t,i){let r=new Mt;return t.forEach((t=>{let n=e.getObjectById(t);if(n){let e=Tn.getBoundingBox(n,i);e.isEmpty()||r.union(e)}})),r}static getBoundingBox(e,t=!0){let i=new Mt;if(e instanceof rn)return Tn.getInstancedMeshBoundingBox(e);if(0===e.children.length)return i.expandByObject(e),i;let r=e.children.length,n=1;r>20&&(n=3),r>100&&(n=5),r>200&&(n=10),r>1e3&&(n=100),e.updateMatrixWorld(!1);for(let s=0;s{i.find((e=>e===n.id))&&(n.children&&1===n.children.length?Tn.explodeObject(n.children[0],e,t,r):Tn.explodeObject(n,e,t,r))})),t}static unexplodeObjects(e,t){e.traverse((e=>{let i=t[e.id];i&&(i.unexplode(),delete t[e.id])}))}static getObjectCenter(e,t){let i=Tn.getBoundingBox(e);i.getCenter(t),t.y=i.min.y}},Yu=class{static setMaterialSection(e,t,i=!1,r=!1){let n=i&&e.clippingPlanes?e.clippingPlanes:[];n.push(...t),e.clippingPlanes=n,e.clipIntersection=r}static removeSection(e){e&&e.traverse((e=>{let t=e.material;Array.isArray(t)?t.forEach((e=>{e.clippingPlanes=void 0})):t&&(t.clippingPlanes=void 0)}))}static addSection(e,t,i=!1,r=!1){e&&e.traverse((e=>{let n=e.material;Array.isArray(n)?n.forEach((e=>{Yu.setMaterialSection(e,t,i,r)})):n&&Yu.setMaterialSection(n,t,i,r)}))}static generateSectionPlanesByBox(e){let t=e.min,i=e.max;return[new bi(new A(0,-1,0),i.y),new bi(new A(0,1,0),-t.y),new bi(new A(1,0,0),-t.x),new bi(new A(-1,0,0),i.x)]}static generateSectionPlanesByPoints(e,t=!0){let i=e.length;if(i<2)return;let r=[];for(let n=0;n-1&&e.splice(i,1)}function nTt(e,t){let i=t.position.distanceTo(e.position),r=0,n=[];for(let i=0,r=e.faces.length;i=0;e--)i.faces[e]&&i.faces[e].hasVertex(r)&&sTt(i.faces[e],t);for(let e=i.faces.length-1;e>=0;e--)i.faces[e].replaceVertex(i,r);ode(i,e);for(let e=0;e0?(new JC).modify(e,i):e}static simplifyPoints(e,t=1){let i=(0,cde.default)(e,t);return this.simplifiedInfo.total+=e.length,this.simplifiedInfo.removed+=e.length-i.length,i}static getNumberOfVerticesToRemove(e,t){let i=0;e instanceof lt&&e.index&&(i=e.attributes.position.count);let r=Math.floor(i*t);return i<20?0:r}};Qx.simplifiedInfo={total:0,removed:0};var Kg=class{static createSkyOfGradientRamp(e=4e3,t=32,i=15,r=new A,n=new A(0,.7,.5)){let s=this.COLOR_TEMPLATES.default,a={topColor:{value:new je(s[0])},skylineColor:{value:new je(s[1])},bottomColor:{value:new je(s[2])},offset:{value:400},exponent:{value:.9},skyCenter:{value:r||new A},sunDirection:{value:n.normalize()}},o=new ro(e,t,i),l=new Yt({uniforms:a,vertexShader:this.vertexShader,fragmentShader:this.fragmentShader,side:zn}),h=new rt(o,l);return h.matrixAutoUpdate=!1,h.name=this.NAME,h.userData.selectable=!1,h.layers.set(11),h}static createSkyOfGradientRampByBoundingBox(e){let t=2*(e.max.x-e.min.x+(e.max.y-e.min.y)+(e.max.z-e.min.z));tKg.MAX_SKY_RADIUS&&(t=Kg.MAX_SKY_RADIUS);let i=new A;e.getCenter(i);let r=Kg.createSkyOfGradientRamp(t,void 0,void 0,i);return r.position.set(i.x,0,i.z),r}static createSkyFromTextures(e){return ht(this,null,(function*(){let t=new Ex;return new Promise((i=>{t.load(e,(e=>i(e)))}))}))}},qo=Kg;qo.NAME="SKYBOX",qo.MIN_SKY_RADIUS=4e3,qo.MAX_SKY_RADIUS=2e4,qo.vertexShader="\n varying vec3 vWorldPosition;\n void main() {\n vec4 worldPosition = modelMatrix * vec4( position, 1.0 );\n vWorldPosition = worldPosition.xyz;\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n }",qo.fragmentShader="\n uniform vec3 topColor;\n uniform vec3 skylineColor;\n uniform vec3 bottomColor;\n uniform float offset;\n uniform float exponent;\n uniform vec3 skyCenter;\n uniform vec3 sunDirection;\n varying vec3 vWorldPosition;\n // Used to find the position to draw the sun. Sun size is bigger when this value is smaller\n const float sunDirectionDotThreshold = 0.98;\n\n void main() {\n vec3 position = vec3(vWorldPosition.x - skyCenter.x, vWorldPosition.y - skyCenter.y, vWorldPosition.z - skyCenter.z);\n vec3 normalizedPosition = normalize( position + offset );\n float h = normalizedPosition.y;\n vec3 color;\n if (h > 0.0) {\n color = mix( skylineColor, topColor, pow( h, exponent ) );\n\n // draw the sun\n float dotResult = dot(sunDirection, normalizedPosition);\n if (dotResult > sunDirectionDotThreshold) {\n const float sunSize = 1.0 - sunDirectionDotThreshold; // maximum sun size\n const vec3 sunColor = vec3(1.0, 1.0, 1.0);\n color = mix(color, sunColor, pow((dotResult + sunSize - 1.0) / sunSize, 3.0));\n }\n } else {\n color = mix( skylineColor, bottomColor, pow( -h, exponent ) );\n }\n gl_FragColor = vec4(color , 1.0);\n }",qo.COLOR_TEMPLATES={default:[8828661,16777215,10066329],blueSky:[11189247,16777215,6974058],boardwalk:[14413823,16777215,15459804]};var eA=class extends Hg{constructor(e){super(e),this.type=Uo}parse(e){let t=function(e,t){switch(e){case 1:console.error("THREE.RGBELoader Read Error: "+(t||""));break;case 2:console.error("THREE.RGBELoader Write Error: "+(t||""));break;case 3:console.error("THREE.RGBELoader Bad File Format: "+(t||""));break;default:console.error("THREE.RGBELoader: Error: "+(t||""))}return-1},i=function(e,t,i){t=t||1024;let r=e.pos,n=-1,s=0,a="",o=String.fromCharCode.apply(null,new Uint16Array(e.subarray(r,r+128)));for(;0>(n=o.indexOf("\n"))&&s=e.byteLength||!(r=i(e)))return t(1,"no header found");if(!(n=r.match(/^#\?(\S+)/)))return t(3,"bad initial token");for(h.valid|=1,h.programtype=n[1],h.string+=r+"\n";r=i(e),!1!==r;)if(h.string+=r+"\n","#"!==r.charAt(0)){if((n=r.match(s))&&(h.gamma=parseFloat(n[1])),(n=r.match(a))&&(h.exposure=parseFloat(n[1])),(n=r.match(o))&&(h.valid|=2,h.format=n[1]),(n=r.match(l))&&(h.valid|=4,h.height=parseInt(n[1],10),h.width=parseInt(n[2],10)),2&h.valid&&4&h.valid)break}else h.comments+=r+"\n";return 2&h.valid?4&h.valid?h:t(3,"missing image size specifier"):t(3,"missing format specifier")}(s);if(-1!==a){let e=a.width,i=a.height,o=function(e,i,r){let n=i;if(n<8||n>32767||2!==e[0]||2!==e[1]||128&e[2])return new Uint8Array(e);if(n!==(e[2]<<8|e[3]))return t(3,"wrong scanline width");let s=new Uint8Array(4*i*r);if(!s.length)return t(4,"unable to allocate buffer space");let a=0,o=0,l=4*n,h=new Uint8Array(4),u=new Uint8Array(l),c=r;for(;c>0&&oe.byteLength)return t(1);if(h[0]=e[o++],h[1]=e[o++],h[2]=e[o++],h[3]=e[o++],2!=h[0]||2!=h[1]||(h[2]<<8|h[3])!=n)return t(3,"bad rgbe scanline format");let i,r=0;for(;r128;if(n&&(i-=128),0===i||r+i>l)return t(3,"bad scanline data");if(n){let t=e[o++];for(let e=0;e{i.load(t,(t=>{if(e){let i=e.fromEquirectangular(t).texture;e.dispose(),r(i)}}))}))}))}static createEnvTextureFromDataArray(e){return ht(this,arguments,(function*(e,t=this.HDR_CITY_STREET_64x32,i=64,r=32){if(e){let n=new Il(t,i,r);n.flipY=!0,n.magFilter=oi,n.minFilter=oi,n.type=Uo,n.version=1;let s=e.fromEquirectangular(n).texture;return e.dispose(),Promise.resolve(s)}return Promise.reject("Invalid pmremGenerator!")}))}};function lTt(){if(xi.isBrowser){let e=document.createElement("div");return e.setAttribute("style","height: 1in; visibility: hidden; position: absolute; margin: 0; padding: 0;"),document.body.appendChild(e),.0254/e.clientHeight}return.0254/96}Nc.HDR_CITY_STREET_64x32=Uint16Array.from([11910,12340,12797,15360,11926,12348,12806,15360,11958,12364,12814,15360,11974,12380,12830,15360,11958,12364,12822,15360,11926,12348,12797,15360,11878,12324,12773,15360,11830,12308,12749,15360,11798,12292,12733,15360,11782,12279,12725,15360,11765,12263,12709,15360,11749,12247,12701,15360,11733,12231,12701,15360,11701,12215,12693,15360,11685,12199,12685,15360,11685,12199,12685,15360,11701,12215,12693,15360,11717,12231,12701,15360,11733,12247,12709,15360,11749,12263,12717,15360,11749,12279,12717,15360,11765,12279,12725,15360,11765,12279,12725,15360,11765,12292,12725,15360,11798,12300,12733,15360,11830,12316,12749,15360,11846,12324,12757,15360,11894,12340,12781,15360,11926,12356,12797,15360,11942,12356,12797,15360,11926,12348,12789,15360,11926,12348,12789,15360,11942,12356,12797,15360,11942,12356,12797,15360,11942,12348,12806,15360,11942,12356,12806,15360,11942,12356,12814,15360,11958,12372,12830,15360,11974,12372,12830,15360,11974,12372,12838,15360,11990,12388,12854,15360,12055,12420,12886,15360,12119,12452,12918,15360,12167,12476,12950,15360,12231,12500,12982,15360,12263,12516,12998,15360,12231,12500,12974,15360,12199,12484,12958,15360,12199,12484,12958,15360,12199,12492,12966,15360,12247,12508,12982,15360,12247,12508,12990,15360,12231,12500,12982,15360,12199,12484,12966,15360,12167,12468,12942,15360,12119,12444,12918,15360,12087,12436,12902,15360,12055,12420,12886,15360,12055,12412,12878,15360,12039,12412,12878,15360,12022,12396,12862,15360,12006,12388,12846,15360,11958,12364,12830,15360,11910,12340,12806,15360,12119,12508,13103,15360,12087,12484,13071,15360,12055,12468,13046,15360,12006,12436,13006,15360,11926,12396,12958,15360,11878,12364,12926,15360,11846,12348,12894,15360,11782,12308,12854,15360,11749,12292,12830,15360,11717,12263,12814,15360,11685,12247,12806,15360,11669,12215,12789,15360,11685,12231,12789,15360,11701,12247,12797,15360,11701,12247,12806,15360,11717,12263,12814,15360,11749,12292,12822,15360,11782,12308,12838,15360,11798,12316,12846,15360,11814,12332,12862,15360,11846,12340,12870,15360,11862,12348,12878,15360,11846,12340,12870,15360,11846,12340,12862,15360,11878,12356,12886,15360,11910,12372,12910,15360,11942,12396,12934,15360,11958,12412,12958,15360,12039,12452,12998,15360,12071,12468,13022,15360,12039,12452,12998,15360,12039,12452,12998,15360,12006,12444,13006,15360,11974,12436,12998,15360,11942,12412,12982,15360,11926,12396,12974,15360,11926,12404,12974,15360,11958,12420,12998,15360,12006,12452,13038,15360,12055,12476,13071,15360,12039,12476,13079,15360,12087,12508,13127,15360,12247,12597,13231,15360,12388,12693,13332,15360,12420,12741,13364,15360,12436,12757,13372,15360,12468,12773,13380,15360,12500,12806,13388,15360,12516,12822,13404,15360,12629,12934,13452,15360,12741,13046,13508,15360,12806,13095,13532,15360,12757,13046,13516,15360,12645,12950,13460,15360,12565,12870,13428,15360,12532,12838,13412,15360,12549,12854,13412,15360,12516,12838,13396,15360,12452,12757,13356,15360,12420,12725,13340,15360,12404,12709,13332,15360,12372,12677,13316,15360,12279,12589,13207,15360,12135,12516,13119,15360,12388,12709,13348,15360,12247,12581,13223,15360,12055,12476,13087,15360,11910,12388,12982,15360,11733,12308,12886,15360,11669,12247,12846,15360,11621,12199,12814,15360,11541,12103,12765,15360,11492,12055,12733,15360,11508,12055,12733,15360,11476,12022,12717,15360,11525,12055,12725,15360,11589,12135,12757,15360,11669,12199,12765,15360,11765,12292,12814,15360,11862,12348,12886,15360,11910,12372,12910,15360,12006,12420,12966,15360,12071,12452,12998,15360,12119,12476,13022,15360,12167,12492,13046,15360,12183,12500,13063,15360,12199,12524,13079,15360,12308,12589,13151,15360,12300,12581,13151,15360,12167,12516,13087,15360,12087,12468,13030,15360,12022,12444,13014,15360,11990,12420,12990,15360,11974,12420,12990,15360,11974,12420,12990,15360,11990,12436,13014,15360,11990,12444,13030,15360,12103,12500,13103,15360,12087,12508,13111,15360,12039,12484,13103,15360,12039,12476,13103,15360,11942,12436,13054,15360,11974,12452,13087,15360,12039,12492,13135,15360,12103,12532,13199,15360,12183,12581,13263,15360,12308,12661,13340,15360,12484,12822,13436,15360,12613,12918,13484,15360,12725,13046,13540,15360,13046,13332,13677,15360,13143,13380,13717,15360,13223,13420,13741,15360,13396,13540,13862,15360,13436,13589,13902,15360,13484,13629,13942,15360,13468,13621,13934,15360,13412,13564,13878,15360,13372,13524,13846,15360,13287,13452,13781,15360,13223,13428,13749,15360,13340,13492,13805,15360,13239,13428,13749,15360,13095,13364,13685,15360,12918,13223,13597,15360,12822,13111,13556,15360,12613,12934,13468,15360,12532,12854,13428,15360,12565,12870,13444,15360,12468,12789,13396,15360,12372,12693,13340,15360,12087,12492,13111,15360,11846,12364,12958,15360,11717,12300,12878,15360,11557,12135,12781,15360,11476,12055,12741,15360,11460,12022,12725,15360,11476,12022,12725,15360,11476,12022,12709,15360,11476,11958,12605,15360,11364,11733,12332,15360,11111,11412,11661,15360,11223,11476,11773,15360,11388,11669,12095,15360,11765,12119,12492,15360,12388,12613,13079,15360,12661,12902,13356,15360,12998,13255,13564,15360,13372,13508,13797,15360,13412,13548,13846,15360,13287,13436,13725,15360,13271,13428,13709,15360,13287,13428,13717,15360,13014,13287,13597,15360,12709,12998,13460,15360,12452,12741,13332,15360,12364,12653,13271,15360,12404,12693,13316,15360,12420,12709,13316,15360,12420,12709,13332,15360,12263,12589,13231,15360,12332,12661,13312,15360,12300,12629,13295,15360,12263,12605,13287,15360,12231,12597,13279,15360,12247,12613,13303,15360,12231,12597,13295,15360,12231,12605,13312,15360,12199,12597,13324,15360,12231,12613,13340,15360,12516,12870,13468,15360,12725,13063,13564,15360,12741,13079,13573,15360,12854,13175,13613,15360,12902,13223,13629,15360,13046,13348,13693,15360,13356,13516,13846,15360,13605,13765,14078,15360,13717,13870,14191,15360,13765,13918,14255,15360,13765,13910,14247,15360,13701,13854,14191,15360,13573,13733,14070,15360,13508,13677,14006,15360,13380,13548,13886,15360,13111,13380,13741,15360,13063,13348,13709,15360,12886,13207,13629,15360,12725,13046,13548,15360,12645,12966,13508,15360,12677,12982,13508,15360,12629,12950,13492,15360,12452,12789,13412,15360,12324,12661,13332,15360,12356,12677,13340,15360,12388,12693,13348,15360,12279,12597,13247,15360,11894,12396,12998,15360,11637,12231,12846,15360,11573,12135,12789,15360,11589,12151,12797,15360,11621,12167,12797,15360,11637,12119,12677,15360,11079,11404,11693,15360,10517,10701,10653,15360,10252,10348,10007,15360,9902,9999,9428,15360,9846,9886,9047,15360,10135,10260,9685,15360,10412,10533,10412,15360,11268,11436,11549,15360,12364,12605,13087,15360,12444,12709,13255,15360,12549,12822,13348,15360,12613,12886,13396,15360,12597,12886,13412,15360,12581,12870,13404,15360,12661,12950,13460,15360,12725,13014,13492,15360,13079,13332,13645,15360,12757,13046,13500,15360,12677,12982,13476,15360,12854,13143,13556,15360,12693,12982,13492,15360,12581,12886,13452,15360,12709,13030,13508,15360,12372,12709,13364,15360,12324,12661,13348,15360,12292,12645,13340,15360,12292,12645,13348,15360,12468,12806,13436,15360,12532,12854,13460,15360,12500,12854,13468,15360,12500,12854,13484,15360,12725,13063,13589,15360,12982,13324,13701,15360,13111,13388,13741,15360,13014,13340,13709,15360,13014,13332,13717,15360,13287,13476,13862,15360,13436,13621,13974,15360,13532,13717,14095,15360,13725,13902,14295,15360,13942,14103,14420,15360,13974,14135,14436,15360,13862,14022,14388,15360,13725,13894,14295,15360,13789,13958,14336,15360,13830,13990,14348,15360,13372,13548,13942,15360,13014,13332,13733,15360,12886,13239,13661,15360,12854,13207,13637,15360,12757,13095,13589,15360,12757,13079,13573,15360,12645,12982,13516,15360,12629,12966,13532,15360,12549,12870,13468,15360,12356,12693,13372,15360,12151,12549,13231,15360,12215,12573,13247,15360,12199,12565,13231,15360,12071,12492,13135,15360,12055,12468,13087,15360,11878,12372,12958,15360,11685,12199,12781,15360,10774,11159,11412,15360,9533,9621,8870,15360,9308,9340,8071,15360,9276,9300,7878,15360,9324,9332,8420,15360,9191,9216,7991,15360,8950,8983,7766,15360,9493,9525,8677,15360,10252,10332,10007,15360,10661,10846,10894,15360,10701,10926,10998,15360,10950,11276,11428,15360,11364,11637,12063,15360,11958,12388,12926,15360,12183,12540,13175,15360,12340,12645,13295,15360,12420,12693,13316,15360,12757,13030,13460,15360,13046,13324,13645,15360,13095,13348,13677,15360,13303,13460,13781,15360,13207,13404,13741,15360,13127,13372,13717,15360,13372,13524,13862,15360,12693,13030,13540,15360,12725,13046,13548,15360,12468,12822,13436,15360,12263,12629,13348,15360,12436,12773,13428,15360,12693,12998,13524,15360,12725,13046,13564,15360,12645,12982,13556,15360,12613,12966,13556,15360,12886,13255,13685,15360,13436,13629,14022,15360,13637,13813,14231,15360,13621,13789,14215,15360,13878,14038,14412,15360,14022,14183,14468,15360,13926,14119,14452,15360,14054,14231,14508,15360,14135,14311,14540,15360,14348,14436,14669,15360,14460,14540,14749,15360,14404,14484,14709,15360,14420,14500,14709,15360,14653,14717,14894,15360,14119,14279,14508,15360,13484,13669,14078,15360,13063,13380,13773,15360,12677,13079,13613,15360,12484,12886,13516,15360,12436,12822,13476,15360,12468,12838,13476,15360,12039,12532,13316,15360,12231,12613,13340,15360,12468,12789,13436,15360,12388,12725,13396,15360,12135,12557,13287,15360,12151,12557,13271,15360,12039,12484,13175,15360,11878,12396,13038,15360,11814,12348,12950,15360,11492,11894,12460,15360,9950,10103,9621,15360,8830,8838,7220,15360,8565,8533,7015,15360,8541,8501,6919,15360,8332,8300,6822,15360,8412,8372,7220,15360,8710,8701,7686,15360,9372,9404,8549,15360,9533,9621,9079,15360,9268,9292,8196,15360,9452,9460,8167,15360,9533,9581,8533,15360,9742,9870,9316,15360,11460,11814,12348,15360,11942,12388,12902,15360,11749,12167,12573,15360,11300,11492,11621,15360,11974,12332,12669,15360,12436,12741,13364,15360,12597,12886,13460,15360,12966,13271,13653,15360,12998,13303,13669,15360,13476,13629,13974,15360,13733,13886,14239,15360,13364,13524,13894,15360,13063,13356,13725,15360,12982,13287,13669,15360,12484,12806,13444,15360,12565,12902,13500,15360,12950,13287,13693,15360,12934,13271,13677,15360,12693,13046,13589,15360,12661,13030,13605,15360,12870,13271,13717,15360,13348,13548,13966,15360,13621,13813,14271,15360,13797,13974,14412,15360,13942,14119,14484,15360,14263,14388,14629,15360,14420,14508,14733,15360,14460,14548,14773,15360,14982,15046,15231,15360,15564,15580,15669,15360,15974,15982,16078,15360,15805,15821,15926,15360,15460,15476,15572,15360,15436,15460,15556,15360,14781,14862,15127,15360,13621,13813,14348,15360,12789,13207,13757,15360,12452,12886,13581,15360,12263,12709,13476,15360,12039,12597,13396,15360,11942,12516,13340,15360,11846,12468,13271,15360,11733,12380,13127,15360,11926,12460,13191,15360,12055,12524,13263,15360,11878,12428,13159,15360,11605,12231,12886,15360,11412,11990,12709,15360,11508,12103,12789,15360,11637,12231,12854,15360,10661,11079,11380,15360,9541,9685,9252,15360,8573,8605,7493,15360,8404,8388,7348,15360,8830,8822,8212,15360,9308,9324,9095,15360,9324,9364,9220,15360,9047,9119,8653,15360,9023,9055,8404,15360,9055,9063,8167,15360,8870,8846,7541,15360,8862,8806,7380,15360,8950,8910,7252,15360,9268,9284,7557,15360,10316,10468,10380,15360,11239,11476,11677,15360,10653,10942,11047,15360,9661,9814,9324,15360,10693,10958,11047,15360,11396,11653,11990,15360,11878,12292,12597,15360,12468,12789,13396,15360,12773,13095,13589,15360,13364,13516,13894,15360,13894,14054,14380,15360,13717,13870,14247,15360,13420,13589,13958,15360,13255,13452,13830,15360,12806,13143,13637,15360,13159,13412,13830,15360,13629,13813,14215,15360,13303,13500,13910,15360,13079,13396,13805,15360,13191,13452,13878,15360,13412,13621,14062,15360,14103,14279,14540,15360,14773,14854,15086,15360,14717,14805,15046,15360,14295,14420,14685,15360,14380,14476,14733,15360,14572,14661,14902,15360,15596,15612,15701,15360,16351,16335,16384,15360,16484,16476,16492,15360,16516,16500,16516,15360,16388,16375,16404,15360,16054,16054,16118,15360,15918,15926,16006,15360,15556,15572,15669,15360,14653,14725,14982,15360,13637,13838,14319,15360,13412,13613,14054,15360,12870,13287,13789,15360,12404,12838,13524,15360,12199,12677,13428,15360,12324,12741,13452,15360,11942,12516,13324,15360,11765,12380,13111,15360,11428,11942,12589,15360,10886,11388,11902,15360,10372,10717,11006,15360,9846,10240,10191,15360,10252,10549,10766,15360,10613,11079,11484,15360,10581,10998,11388,15360,9613,9846,9629,15360,8525,8557,7541,15360,8605,8613,7814,15360,9292,9324,9079,15360,9388,9396,9220,15360,10709,10846,11031,15360,9894,9966,9854,15360,9252,9236,8774,15360,8822,8790,8183,15360,8292,8260,6533,15360,8111,8007,6324,15360,8228,8183,6405,15360,8501,8501,6565,15360,8814,8878,7172,15360,9260,9364,8244,15360,8902,9095,8252,15360,9444,9581,9047,15360,9509,9637,8790,15360,9477,9613,8806,15360,10725,11063,11079,15360,11508,11910,12356,15360,12484,12789,13380,15360,12838,13159,13629,15360,13428,13589,13974,15360,14135,14279,14484,15360,13942,14087,14396,15360,13677,13846,14247,15360,13436,13613,14006,15360,13597,13781,14183,15360,14183,14340,14540,15360,14022,14215,14484,15360,13637,13838,14271,15360,14038,14231,14508,15360,14380,14476,14701,15360,14757,14854,15078,15360,15030,15111,15343,15360,15420,15452,15556,15360,15476,15500,15588,15360,15351,15388,15492,15360,15572,15596,15677,15360,15653,15669,15717,15360,15821,15821,15853,15360,15845,15845,15869,15360,15998,15990,16022,15360,15926,15926,15974,15360,15653,15669,15733,15360,15661,15677,15749,15360,15612,15629,15717,15360,15271,15335,15452,15360,14484,14572,14821,15360,14215,14372,14588,15360,13468,13677,14167,15360,12773,13175,13653,15360,12725,13143,13637,15360,12452,12886,13532,15360,12263,12709,13444,15360,11894,12436,13103,15360,10252,10533,10661,15360,8613,8693,7445,15360,8742,8782,7047,15360,8420,8412,6565,15360,7926,7910,6405,15360,8806,8854,7300,15360,9127,9228,8007,15360,8685,8750,7300,15360,8348,8356,6758,15360,8380,8340,7300,15360,8991,8918,8388,15360,9838,9790,9549,15360,10055,10127,10047,15360,9501,9493,9268,15360,9332,9292,8902,15360,9079,9007,8509,15360,8300,8260,7252,15360,8693,8701,8196,15360,8228,8212,7111,15360,8469,8501,7380,15360,8420,8501,6919,15360,8549,8645,6983,15360,8581,8661,6951,15360,9268,9332,7718,15360,9063,9207,7445,15360,9284,9380,7718,15360,9412,9557,8693,15360,10276,10517,10103,15360,11830,12279,12589,15360,12725,13079,13589,15360,13127,13396,13773,15360,14087,14231,14460,15360,13974,14119,14412,15360,13677,13854,14247,15360,14119,14279,14500,15360,13990,14167,14460,15360,14364,14452,14653,15360,14564,14653,14837,15360,14404,14492,14701,15360,14870,14942,15135,15360,15388,15420,15500,15360,15207,15287,15420,15360,14797,14894,15127,15360,15271,15335,15452,15360,15926,15942,15990,15360,16207,16207,16231,15360,16118,16110,16126,15360,15741,15733,15741,15360,16239,16207,16175,15360,16444,16460,16484,15360,16046,16022,16006,15360,15942,15950,15966,15360,15773,15789,15829,15360,15789,15797,15845,15360,15693,15709,15757,15360,15540,15564,15653,15360,15303,15364,15468,15360,14733,14813,15014,15360,13862,14054,14420,15360,12838,13255,13725,15360,12789,13207,13693,15360,12468,12918,13564,15360,12404,12838,13500,15360,11428,11862,12412,15360,9143,9276,8388,15360,8541,8533,6726,15360,8444,8428,6629,15360,8212,8183,6597,15360,8388,8380,7015,15360,8726,8710,6758,15360,8332,8316,6437,15360,8453,8428,6565,15360,8597,8605,7814,15360,8701,8661,8151,15360,9452,9396,9015,15360,10581,10557,10380,15360,10950,10974,10846,15360,10380,10356,10252,15360,10749,10741,10685,15360,9870,9854,9693,15360,9023,9039,8669,15360,8790,8854,8509,15360,8196,8167,7332,15360,7975,8015,7079,15360,8589,8750,7445,15360,9095,9260,7111,15360,8983,9135,7188,15360,8902,8991,7252,15360,8862,9007,7015,15360,8967,9111,7300,15360,8742,8878,7493,15360,9557,9999,9549,15360,11292,11613,11862,15360,12135,12468,12982,15360,12215,12460,12878,15360,13356,13468,13685,15360,13821,13934,14199,15360,13548,13701,14022,15360,14103,14263,14468,15360,14279,14388,14572,15360,14364,14452,14645,15360,14709,14789,14950,15360,15143,15199,15327,15360,15388,15412,15468,15360,15476,15500,15548,15360,15420,15444,15492,15360,15436,15460,15516,15360,15612,15637,15685,15360,16086,16086,16110,15360,16396,16388,16396,15360,16094,16094,16110,15360,15869,15861,15861,15360,16135,16110,16070,15360,16428,16420,16404,15360,15588,15556,15524,15360,15484,15500,15508,15360,15335,15364,15396,15360,15677,15685,15717,15360,15604,15621,15661,15360,15420,15444,15500,15360,15303,15372,15452,15360,14717,14805,14998,15360,14412,14508,14701,15360,13548,13765,14199,15360,13271,13508,13942,15360,12661,13159,13709,15360,12468,12854,13436,15360,10260,10484,10509,15360,8613,8669,6951,15360,8151,8143,6469,15360,8653,8629,7814,15360,8469,8444,7541,15360,8718,8693,7814,15360,8372,8332,6597,15360,8356,8308,7111,15360,9047,8983,8396,15360,8822,8798,8308,15360,9372,9348,8967,15360,10364,10364,10183,15360,10268,10260,9894,15360,10541,10533,10468,15360,10380,10364,10276,15360,10621,10613,10549,15360,9910,9942,9758,15360,8364,8380,7621,15360,8581,8637,8135,15360,8252,8300,7573,15360,8119,8175,7300,15360,8372,8453,7493,15360,8420,8501,6983,15360,8742,8822,7573,15360,8782,8854,8151,15360,8581,8661,7079,15360,9220,9268,8340,15360,9549,9645,8854,15360,11717,11950,12127,15360,12468,12741,13207,15360,12709,12966,13388,15360,12300,12508,12886,15360,12492,12709,13063,15360,13239,13372,13548,15360,12476,12597,12814,15360,13581,13685,13878,15360,14476,14548,14685,15360,14556,14629,14773,15360,14765,14829,14966,15360,15159,15207,15303,15360,15372,15396,15444,15360,15516,15532,15572,15360,15653,15661,15693,15360,15829,15837,15853,15360,16022,16014,16022,15360,16311,16295,16279,15360,16343,16319,16303,15360,16412,16388,16359,15360,15813,15797,15773,15360,13063,13151,13183,15360,11484,11701,11798,15360,12300,12412,12468,15360,14613,14637,14653,15360,11974,12215,12316,15360,14135,14215,14303,15360,15604,15629,15677,15360,15524,15548,15596,15360,15351,15380,15428,15360,14797,14894,15054,15360,13990,14231,14500,15360,13492,13709,14070,15360,12886,13316,13701,15360,12613,13207,13749,15360,11525,11974,12428,15360,9284,9412,8629,15360,8597,8653,6951,15360,7806,7790,6292,15360,7589,7541,6437,15360,7485,7437,6597,15360,7453,7404,6180,15360,7774,7686,6565,15360,8300,8260,7332,15360,9918,9942,9862,15360,10348,10372,10231,15360,9725,9709,9228,15360,10613,10621,10509,15360,10199,10175,9838,15360,10380,10388,10340,15360,11207,11255,11284,15360,10661,10717,10725,15360,10103,10135,9950,15360,8444,8436,7669,15360,8469,8501,7445,15360,8950,9111,8854,15360,9485,9798,10071,15360,8364,8501,8039,15360,7959,7951,6806,15360,8597,8605,8039,15360,8501,8533,7557,15360,8758,8830,7509,15360,10758,10830,10693,15360,11508,11605,11621,15360,13524,13669,13886,15360,13830,14022,14327,15360,13926,14103,14364,15360,13460,13621,13886,15360,12854,13191,13420,15360,13597,13733,13926,15360,13846,13990,14223,15360,13773,13942,14199,15360,13910,14087,14356,15360,13813,14022,14319,15360,14247,14396,14540,15360,14693,14765,14878,15360,15223,15279,15343,15360,15508,15524,15540,15360,15540,15548,15564,15360,15327,15335,15319,15360,15303,15311,15303,15360,15918,15910,15886,15360,16247,16207,16151,15360,16175,16143,16086,15360,14436,14452,14436,15360,12263,12380,12404,15360,11476,11701,11773,15360,12380,12492,12532,15360,14797,14797,14757,15360,11372,11589,11677,15360,12597,12934,13356,15360,13990,14364,14725,15360,14183,14444,14773,15360,14231,14444,14717,15360,14412,14532,14709,15360,14054,14199,14380,15360,12372,12500,12605,15360,12199,12565,13006,15360,12581,13175,13653,15360,10055,10380,10324,15360,8557,8573,6726,15360,8167,8196,6533,15360,7517,7485,6119,15360,7244,7172,5798,15360,7071,6959,5718,15360,7669,7581,6260,15360,8661,8605,7975,15360,10942,11079,11151,15360,12573,12741,13014,15360,11902,12030,12191,15360,10308,10332,10135,15360,11255,11300,11284,15360,11276,11348,11396,15360,10055,10215,10292,15360,12183,12332,12468,15360,9918,9966,9798,15360,8734,8742,8196,15360,8967,8950,8469,15360,10260,10276,10039,15360,9734,9758,9605,15360,9388,9404,9308,15360,7943,7878,7095,15360,7726,7637,6645,15360,8047,7983,7204,15360,9284,9236,8693,15360,9621,9565,9143,15360,11255,11268,11047,15360,13175,13332,13420,15360,13773,13934,14175,15360,13854,14022,14271,15360,13870,14038,14279,15360,13388,13516,13677,15360,12279,12629,12966,15360,13348,13452,13564,15360,13821,13918,14054,15360,13701,13846,14022,15360,13460,13605,13781,15360,13492,13637,13821,15360,13709,13821,13950,15360,14372,14428,14476,15360,14516,14572,14613,15360,14741,14789,14813,15360,14725,14749,14749,15360,13452,13484,13468,15360,13476,13500,13492,15360,14990,15022,15022,15360,14556,14572,14564,15360,15094,15111,15094,15360,13231,13287,13215,15360,11255,11380,11175,15360,10677,10886,10492,15360,11846,12006,11934,15360,14327,14340,14279,15360,10766,11039,10862,15360,12918,13255,13452,15360,14231,14548,14886,15360,13878,14380,14765,15360,13444,13862,14412,15360,12151,12404,12621,15360,12637,12902,13215,15360,11549,11749,11870,15360,12279,12653,13119,15360,13223,13404,13516,15360,9228,9260,8276,15360,8087,7991,6308,15360,7918,7814,6919,15360,7469,7364,6148,15360,7485,7380,6212,15360,8228,7991,7204,15360,9276,8967,8212,15360,9806,9573,8742,15360,10135,10087,9621,15360,11452,11452,11452,15360,10629,10637,10509,15360,10693,10733,10637,15360,11095,11111,10982,15360,11292,11348,11372,15360,10199,10244,10167,15360,10814,10926,10846,15360,8669,8774,7493,15360,7870,7910,6244,15360,8204,8183,6919,15360,9806,9758,9159,15360,9460,9436,8629,15360,9159,9087,8260,15360,7637,7509,6790,15360,7758,7629,6838,15360,7967,7918,6774,15360,10854,10749,10501,15360,11508,11412,11316,15360,12372,12300,12151,15360,12030,12119,12063,15360,12781,12910,12982,15360,13476,13581,13661,15360,13484,13589,13677,15360,12404,12428,12380,15360,11605,11765,11798,15360,11492,11533,11452,15360,11838,11886,11798,15360,12263,12372,12380,15360,12151,12231,12175,15360,11492,11508,11412,15360,11119,11111,10838,15360,12508,12581,12573,15360,12621,12693,12677,15360,12573,12629,12589,15360,12292,12324,12231,15360,12476,12565,12573,15360,11998,12159,12215,15360,12950,13071,13159,15360,12263,12372,12428,15360,12380,12428,12444,15360,11300,11308,11143,15360,10199,10244,9734,15360,9709,9701,9252,15360,10492,10581,10404,15360,11476,11516,11388,15360,9477,9517,8790,15360,11717,11854,11838,15360,14247,14420,14524,15360,14054,14311,14436,15360,13597,13805,13982,15360,11364,11533,11597,15360,12263,12428,12549,15360,11436,11605,11653,15360,13079,13324,13444,15360,12516,12613,12605,15360,10039,10015,9605,15360,8693,8621,7878,15360,7951,7862,6902,15360,8196,8204,7015,15360,8677,8589,7637,15360,9284,9031,8340,15360,9814,9605,8902,15360,10685,10428,9910,15360,10492,10260,9685,15360,9404,9252,7943,15360,8830,8766,7220,15360,9220,9047,7943,15360,9693,9669,9015,15360,11412,11468,11372,15360,11135,11159,11023,15360,10087,10055,9428,15360,9910,10007,9621,15360,9236,9300,8934,15360,9597,9557,8902,15360,10669,10549,9782,15360,9926,9870,9127,15360,9894,9918,9047,15360,8685,8742,7910,15360,9958,10167,10284,15360,10215,10332,10396,15360,11396,11428,11452,15360,11223,11255,11300,15360,11814,11862,11958,15360,10685,10846,10870,15360,10340,10380,10007,15360,11175,11207,10894,15360,12103,12207,12215,15360,11143,11103,10902,15360,9910,9966,9613,15360,10015,10079,9493,15360,10806,10846,10517,15360,10862,10934,10637,15360,10838,10942,10661,15360,10958,11087,10878,15360,10709,10838,10701,15360,10669,10741,10589,15360,10581,10669,10525,15360,10252,10348,9974,15360,11396,11500,11525,15360,11207,11255,11264,15360,10878,10910,10934,15360,11031,11063,11159,15360,11292,11324,11396,15360,11223,11255,11300,15360,10693,10685,10645,15360,10428,10420,10324,15360,10300,10252,9991,15360,10838,10846,10798,15360,10428,10428,10364,15360,9669,9605,9380,15360,10167,10244,10087,15360,11709,11854,11910,15360,11223,11284,11268,15360,10231,10244,9878,15360,10199,10244,9862,15360,10183,10260,9942,15360,10525,10653,10541,15360,12500,12597,12621,15360,11814,11741,11597,15360,11533,11460,11175,15360,11103,11006,10557,15360,10444,10396,9846,15360,10007,10023,9228,15360,9653,9790,8469,15360,9316,9372,8039,15360,9557,9830,8071,15360,9621,9918,8071,15360,9677,10015,8167,15360,9991,10284,8420,15360,10215,10436,8581,15360,10260,10484,8645,15360,10292,10476,8902,15360,10324,10468,9252,15360,9910,9894,8886,15360,10525,10573,9701,15360,9782,10039,8581,15360,9565,9814,8167,15360,9950,10039,8934,15360,10749,10758,10199,15360,10669,10685,10244,15360,10838,10838,10460,15360,11215,10910,10087,15360,11492,11364,10806,15360,11095,11159,11055,15360,11364,11388,11356,15360,11023,11039,10990,15360,11653,11653,11613,15360,11798,11725,11557,15360,11974,11862,11637,15360,12039,11942,11765,15360,12119,12047,11934,15360,12151,12071,11950,15360,12087,12006,11886,15360,12047,11966,11838,15360,11990,11926,11790,15360,11974,11910,11798,15360,11998,11934,11814,15360,12111,12039,11886,15360,12231,12143,11998,15360,12292,12199,12039,15360,12039,11974,11846,15360,11822,11782,11653,15360,11862,11838,11765,15360,11798,11765,11701,15360,11782,11733,11669,15360,11798,11749,11685,15360,11838,11790,11725,15360,11870,11822,11749,15360,11741,11701,11621,15360,11565,11541,11452,15360,11533,11500,11412,15360,11621,11581,11484,15360,11605,11557,11460,15360,11516,11468,11372,15360,11565,11533,11444,15360,11677,11637,11541,15360,11725,11661,11557,15360,11725,11661,11557,15360,11733,11669,11573,15360,11838,11773,11677,15360,11998,11926,11814,15360,12014,11926,11798,15360,11460,11404,11332,15360,11637,11557,11428,15360,12014,11894,11693,15360,12167,12022,11765,15360,12119,11982,11709,15360,11926,11806,11516,15360,11685,11589,11300,15360,11476,11404,10886,15360,11239,11151,10468,15360,10766,10733,9894,15360,10565,10565,9589,15360,10436,10444,9332,15360,10308,10308,9031,15360,10308,10316,8999,15360,10199,10244,8774,15360,9725,9645,8549,15360,10244,10276,8967,15360,10878,10838,10183,15360,11055,10966,10348,15360,11119,11006,10404,15360,11264,11135,10565,15360,11404,11316,10822,15360,11492,11388,10982,15360,11798,11613,11223,15360,12047,11830,11412,15360,12039,11894,11597,15360,12127,11990,11693,15360,12127,11990,11725,15360,12191,12055,11806,15360,12191,12055,11830,15360,11870,11773,11613,15360,11573,11516,11428,15360,11533,11484,11412,15360,11541,11492,11420,15360,11565,11516,11452,15360,11589,11541,11476,15360,11605,11557,11500,15360,11637,11589,11533,15360,11669,11621,11557,15360,11701,11645,11573,15360,11733,11669,11589,15360,11798,11717,11605,15360,11838,11749,11621,15360,11878,11782,11661,15360,11894,11798,11661,15360,11926,11806,11653,15360,11958,11822,11661,15360,11982,11846,11677,15360,12006,11870,11685,15360,12095,11950,11765,15360,12047,11910,11741,15360,11886,11765,11605,15360,11838,11733,11589,15360,11814,11717,11589,15360,11814,11709,11573,15360,11790,11693,11565,15360,11741,11677,11589,15360,11733,11677,11613,15360,11733,11685,11629,15360,11717,11669,11621,15360,11685,11645,11589,15360,11629,11589,11533,15360,11573,11525,11468,15360,11492,11444,11380,15360,11316,11255,11111,15360,11348,11292,11143,15360,11516,11436,11316,15360,11854,11749,11589,15360,12127,11990,11765,15360,12199,12055,11782,15360,12340,12231,11910,15360,12372,12292,11958,15360,12380,12300,11974,15360,12348,12247,11910,15360,12324,12215,11878,15360,12247,12103,11773,15360,12095,11958,11637,15360,12055,11926,11613,15360,11974,11854,11541,15360,11870,11765,11468,15360,11966,11854,11541,15360,12300,12151,11846,15360,12396,12316,12006,15360,12388,12308,11990,15360,12388,12308,12006,15360,12396,12316,12022,15360,12396,12308,12022,15360,12396,12308,12022,15360,12364,12279,11974,15360,12340,12247,11942,15360,12340,12231,11926,15360,12215,12071,11806,15360,12095,11966,11749,15360,11741,11645,11500,15360,11420,11356,11255,15360,11364,11308,11207,15360,11356,11300,11175,15360,11348,11292,11191,15360,11372,11324,11255,15360,11412,11364,11308,15360,11420,11372,11316,15360,11428,11380,11324,15360,11444,11388,11332,15360,11484,11428,11364,15360,11508,11460,11396,15360,11557,11500,11436,15360,11589,11533,11460,15360,11613,11557,11484,15360,11621,11557,11492,15360,11613,11557,11500,15360,11621,11557,11500,15360,11629,11573,11508,15360,11629,11573,11508,15360,11605,11557,11484,15360,11589,11533,11468,15360,11557,11508,11436,15360,11549,11500,11428,15360,11557,11500,11436,15360,11549,11492,11436,15360,11533,11484,11428,15360,11525,11476,11428,15360,11516,11476,11428,15360,11525,11484,11444,15360,11516,11476,11428,15360,11468,11428,11380,15360,11428,11388,11332,15360,11356,11308,11239,15360,11308,11255,11127,15360,11167,11071,10926,15360,11223,11119,10966,15360,11276,11175,10998,15360,11404,11332,11191,15360,11773,11693,11557,15360,11926,11798,11613,15360,12207,12039,11773,15360,12348,12231,11894,15360,12308,12151,11846,15360,12332,12215,11894,15360,12364,12279,11958,15360,12380,12292,11974,15360,12396,12316,12022,15360,12404,12316,12039,15360,12412,12332,12087,15360,12412,12332,12103,15360,12436,12356,12135,15360,12372,12292,12039,15360,12420,12332,12087,15360,12396,12316,12055,15360,12356,12263,11990,15360,12340,12231,11942,15360,12271,12127,11854,15360,12215,12071,11814,15360,12292,12135,11878,15360,12288,12135,11870,15360,12111,11982,11765,15360,11990,11886,11717,15360,11637,11557,11428,15360,11364,11300,11143,15360,11316,11239,11079,15360,11300,11207,11047,15360,11268,11159,11015,15360,11268,11159,11015,15360,11268,11159,11031,15360,11300,11223,11095,15360,11340,11292,11191,15360,11348,11300,11223,15360,11372,11324,11255,15360,11380,11332,11255,15360,11372,11316,11239,15360,11396,11340,11268,15360,11468,11404,11300,15360,11460,11404,11324,15360,11484,11428,11356,15360,11492,11436,11372,15360,11500,11444,11388,15360,11508,11460,11404,15360,11500,11452,11396,15360,11492,11436,11380,15360,11468,11412,11356,15360,11444,11388,11324,15360,11444,11388,11324,15360,11428,11380,11316,15360,11412,11356,11300,15360,11404,11348,11300,15360,11404,11356,11308,15360,11396,11356,11308,15360,11388,11348,11308,15360,11372,11340,11292,15360,11348,11308,11255,15360,11284,11223,11111,15360,11231,11143,11023,15360,11199,11111,10974,15360,11047,10958,10814,15360,11127,11023,10870,15360,11119,11006,10846,15360,11175,11055,10886,15360,11292,11191,10998,15360,11525,11404,11284,15360,11822,11637,11476,15360,11878,11733,11549,15360,11918,11790,11573,15360,12063,11918,11653,15360,12223,12063,11765,15360,12300,12151,11846,15360,12255,12103,11814,15360,12271,12127,11846,15360,12271,12127,11862,15360,12271,12127,11886,15360,12308,12183,11942,15360,12175,12039,11814,15360,12063,11934,11709,15360,12159,12014,11765,15360,12215,12063,11798,15360,12143,11998,11757,15360,12071,11934,11693,15360,11998,11870,11661,15360,11974,11870,11685,15360,11998,11910,11757,15360,11846,11765,11629,15360,11468,11396,11284,15360,11308,11223,11031,15360,11215,11103,10934,15360,11207,11095,10942,15360,11215,11103,10950,15360,11191,11087,10942,15360,11175,11079,10942,15360,11167,11063,10934,15360,11143,11031,10902,15360,11247,11143,11015,15360,11284,11191,11079,15360,11300,11223,11095,15360,11316,11268,11127,15360,11340,11284,11143,15360,11340,11284,11159,15360,11356,11300,11191,15360,11372,11316,11239,15360,11380,11324,11255,15360,11372,11316,11255,15360,11380,11324,11276,15360,11380,11324,11268,15360,11372,11316,11255,15360,11364,11316,11255,15360,11364,11308,11239,15360,11348,11292,11207,15360,11340,11284,11191,15360,11348,11292,11191,15360,11348,11292,11207,15360,11340,11292,11207,15360,11340,11292,11207,15360,11324,11276,11207,15360,11308,11255,11175,15360,11264,11175,11079,15360,11119,11039,10934,15360,11103,11015,10902,15360,11095,11006,10878,15360,11031,10942,10806,15360,10990,10902,10766,15360,11047,10942,10814,15360,11031,10926,10790,15360,11055,10942,10806,15360,11119,10998,10846,15360,11151,11015,10830,15360,11268,11095,10886,15360,11484,11396,11268,15360,11790,11701,11549,15360,11886,11790,11637,15360,11838,11741,11581,15360,11838,11725,11541,15360,11902,11782,11581,15360,11966,11838,11629,15360,11974,11846,11629,15360,11958,11838,11629,15360,11950,11838,11637,15360,11814,11701,11525,15360,11581,11492,11332,15360,11645,11541,11380,15360,11806,11701,11533,15360,11902,11806,11637,15360,11950,11862,11717,15360,12014,11934,11790,15360,11942,11862,11725,15360,11565,11492,11388,15360,11292,11191,11015,15360,11231,11111,10950,15360,11159,11047,10894,15360,11119,11006,10854,15360,11127,11023,10878,15360,11159,11055,10902,15360,11135,11031,10894,15360,11111,11006,10878,15360,11095,10990,10870,15360,11095,10998,10886,15360,11071,10966,10846,15360,11111,11006,10902,15360,11191,11095,10974,15360,11268,11159,11031,15360,11284,11191,11063,15360,11292,11207,11063,15360,11300,11223,11079,15360,11332,11268,11143,15360,11316,11255,11127,15360,11316,11255,11143,15360,11308,11239,11127,15360,11316,11255,11159,15360,11300,11223,11127,15360,11292,11207,11095,15360,11300,11223,11111,15360,11300,11223,11095,15360,11300,11223,11095,15360,11308,11239,11111,15360,11300,11223,11111,15360,11292,11207,11111,15360,11264,11167,11071,15360,11215,11127,11047,15360,11135,11055,10966,15360,11015,10934,10846,15360,10918,10838,10733,15360,10982,10894,10782,15360,10974,10886,10766,15360,10982,10894,10766,15360,10958,10862,10749,15360,10982,10886,10774,15360,10958,10862,10758,15360,10958,10862,10749,15360,11015,10910,10790,15360,11023,10910,10774,15360,11079,10958,10806,15360,11103,10974,10798,15360,11191,11047,10846,15360,11468,11388,11276,15360,11846,11765,11637,15360,12006,11918,11782,15360,11998,11910,11782,15360,11902,11822,11693,15360,11838,11749,11637,15360,11782,11709,11605,15360,11806,11741,11645,15360,11782,11717,11629,15360,11773,11717,11621,15360,11870,11806,11701,15360,11942,11862,11757,15360,12183,12103,11974,15360,11974,11894,11765,15360,11476,11404,11308,15360,11268,11143,10966,15360,11183,11063,10902,15360,11111,10998,10854,15360,11055,10942,10806,15360,11023,10910,10766,15360,11047,10934,10782,15360,11039,10926,10782,15360,11079,10966,10830,15360,11031,10918,10782,15360,11031,10926,10806,15360,10990,10894,10782,15360,10974,10886,10790,15360,10966,10870,10774,15360,11006,10902,10806,15360,11039,10942,10838,15360,11127,11023,10910,15360,11175,11079,10958,15360,11191,11087,10958,15360,11207,11095,10958,15360,11268,11143,11015,15360,11276,11175,11047,15360,11284,11191,11079,15360,11292,11191,11079,15360,11276,11175,11079,15360,11239,11135,11031,15360,11268,11159,11047,15360,11215,11111,11006,15360,11239,11127,11015,15360,11255,11143,11031,15360,11223,11119,11015,15360,11199,11103,10998,15360,11175,11087,10982,15360,11143,11047,10958,15360,11031,10942,10854,15360,10958,10878,10790,15360,10910,10830,10741,15360,10942,10862,10758,15360,10926,10838,10733,15360,10854,10758,10637,15360,10918,10830,10709,15360,10910,10822,10717,15360,10942,10846,10749,15360,10942,10854,10741,15360,10942,10854,10749,15360,10966,10870,10758,15360,10966,10870,10758,15360,10958,10854,10733,15360,10998,10886,10741,15360,10942,10830,10677,15360,11039,10918,10749,15360,11095,10974,10806,15360,11308,11223,11031,15360,11468,11396,11292,15360,11605,11533,11428,15360,11701,11621,11525,15360,11693,11629,11541,15360,11685,11621,11549,15360,11685,11629,11549,15360,11629,11565,11484,15360,11589,11533,11444,15360,11364,11308,11191,15360,11191,11087,10958,15360,11135,11031,10902,15360,11135,11031,10894,15360,11055,10950,10830,15360,11015,10910,10782,15360,10958,10854,10733,15360,10942,10838,10717,15360,10974,10870,10733,15360,10982,10878,10749,15360,10990,10886,10758,15360,11015,10910,10798,15360,10966,10862,10758,15360,10950,10854,10758,15360,10910,10822,10733,15360,10894,10798,10709,15360,10902,10814,10725,15360,10934,10846,10758,15360,10910,10822,10733,15360,10950,10854,10749,15360,10974,10878,10766,15360,11047,10942,10830,15360,11095,10990,10878,15360,11167,11055,10942,15360,11199,11103,10990,15360,11191,11087,10982,15360,11151,11047,10950,15360,11135,11031,10934,15360,11095,10998,10902,15360,11143,11047,10950,15360,11079,10990,10894,15360,11079,10990,10902,15360,11103,11006,10910,15360,11079,10982,10886,15360,11023,10926,10822,15360,10982,10894,10798,15360,10958,10870,10782,15360,10910,10814,10725,15360,10926,10838,10741,15360,10934,10838,10733,15360,10950,10854,10749,15360,10886,10798,10709,15360,10910,10814,10709,15360,10926,10830,10725,15360,10910,10814,10701,15360,10862,10774,10677,15360,10950,10854,10733,15360,10926,10830,10717,15360,10926,10838,10725,15360,10926,10830,10725,15360,10894,10798,10685,15360,10926,10830,10701,15360,10958,10854,10717,15360,10934,10830,10685,15360,10950,10846,10709,15360,10974,10862,10717,15360,10942,10830,10685,15360,10958,10846,10701,15360,11006,10894,10749,15360,10950,10846,10725,15360,10958,10862,10741,15360,10894,10806,10701,15360,10854,10774,10669,15360,10886,10806,10701,15360,10862,10790,10693,15360,10878,10806,10717,15360,10982,10902,10798,15360,10990,10902,10798,15360,10950,10862,10758,15360,10942,10846,10733,15360,10870,10774,10669,15360,10894,10798,10693,15360,10918,10830,10725,15360,10894,10806,10701,15360,10926,10830,10733,15360,10902,10830,10725,15360,10870,10790,10693,15360,10886,10814,10725,15360,10814,10741,10661,15360,10838,10766,10677,15360,10822,10741,10661,15360,10822,10741,10669,15360,10862,10790,10709,15360,10846,10758,10669,15360,10894,10798,10693,15360,10974,10878,10766,15360,10966,10870,10766,15360,11023,10926,10814,15360,11079,10974,10862,15360,11006,10910,10814,15360,10950,10862,10766,15360,10982,10894,10798,15360,10958,10862,10774,15360,10958,10870,10782,15360,10910,10830,10741,15360,10950,10862,10766,15360,10982,10886,10790,15360,10918,10822,10725,15360,10886,10798,10701,15360,10854,10766,10669,15360,10894,10806,10709,15360,10926,10830,10725,15360,10926,10830,10725,15360,10958,10862,10749,15360,10958,10862,10749,15360,10894,10806,10717,15360,10902,10814,10717,15360,10878,10790,10677,15360,10942,10838,10717,15360,10918,10814,10701,15360,10886,10790,10661,15360,10942,10838,10717,15360,10950,10854,10725,15360,10950,10854,10725,15360,10910,10814,10693,15360,10910,10814,10685,15360,10942,10838,10709,15360,10894,10790,10661,15360,10910,10806,10669,15360,10822,10725,10597,15360,10749,10661,10541,15360,10830,10733,10613,15360,10838,10741,10629,15360,10806,10709,10597,15360,10854,10766,10653,15360,10862,10774,10669,15360,10798,10725,10629,15360,10822,10749,10653,15360,10854,10782,10693,15360,10806,10741,10661,15360,10862,10790,10701,15360,10870,10790,10685,15360,10870,10790,10693,15360,10878,10790,10677,15360,10862,10782,10677,15360,10870,10790,10693,15360,10870,10782,10685,15360,10894,10814,10709,15360,10886,10814,10709,15360,10846,10782,10685,15360,10741,10669,10573,15360,10766,10693,10589,15360,10709,10637,10541,15360,10741,10669,10589,15360,10741,10677,10589,15360,10709,10637,10557,15360,10774,10701,10613,15360,10862,10774,10677,15360,11006,10918,10806,15360,11006,10902,10782,15360,10974,10870,10749,15360,10958,10854,10733,15360,10934,10838,10725,15360,10934,10838,10733,15360,10934,10838,10725,15360,10886,10790,10685,15360,10854,10766,10661,15360,10886,10798,10701,15360,10838,10749,10645,15360,10878,10782,10661,15360,10822,10725,10613,15360,10822,10717,10605,15360,10846,10749,10629,15360,10854,10749,10637,15360,10950,10854,10733,15360,10958,10854,10741,15360,10910,10806,10693,15360,10926,10822,10693,15360,10934,10838,10725,15360,10910,10822,10709,15360,10910,10822,10709,15360,10886,10782,10661,15360,10910,10814,10677,15360,10910,10806,10677,15360,10926,10822,10685,15360,10958,10854,10717,15360,10974,10870,10725,15360,10926,10830,10693,15360,10926,10830,10693,15360,10918,10822,10693,15360,10934,10838,10701,15360,10918,10814,10685,15360,10878,10782,10653,15360,10870,10774,10645,15360,10838,10749,10629,15360,10806,10717,10605,15360,10822,10733,10621,15360,10822,10733,10621,15360,10846,10758,10653,15360,10846,10766,10653,15360,10822,10741,10629,15360,10806,10733,10629,15360,10806,10725,10621,15360,10790,10709,10605,15360,10766,10693,10589,15360,10814,10741,10629,15360,10846,10766,10653,15360,10838,10758,10653,15360,10878,10790,10677,15360,10894,10798,10685,15360,10830,10741,10629,15360,10830,10758,10653,15360,10798,10725,10629,15360,10806,10733,10629,15360,10717,10637,10525,15360,10661,10581,10476,15360,10701,10621,10517,15360,10733,10661,10565,15360,10782,10685,10557,15360,10862,10758,10613,15360,10974,10862,10725,15360,10958,10846,10709,15360,11006,10902,10766,15360,11006,10902,10774,15360,11039,10934,10814,15360,11006,10902,10790,15360,11006,10910,10790,15360,10950,10854,10741,15360,10934,10830,10709,15360,10918,10814,10701,15360,10854,10758,10653,15360,10918,10814,10701,15360,10870,10766,10645,15360,10830,10733,10621,15360,10934,10830,10709,15360,10990,10886,10758,15360,10950,10838,10717,15360,10910,10814,10701,15360,10926,10822,10693,15360,10934,10830,10709,15360,10878,10774,10653,15360,10934,10830,10701,15360,10926,10822,10693,15360,10878,10782,10661,15360,10878,10782,10661,15360,10862,10766,10621,15360,10886,10782,10645,15360,10886,10782,10653,15360,10926,10822,10701,15360,10902,10806,10685,15360,10926,10822,10701,15360,10918,10814,10685,15360,10878,10782,10645,15360,10910,10806,10669,15360,10854,10758,10621,15360,10886,10790,10645,15360,10854,10758,10629,15360,10830,10741,10613,15360,10918,10814,10685,15360,10862,10766,10645,15360,10830,10741,10613,15360,10806,10717,10597,15360,10741,10661,10557,15360,10774,10693,10581,15360,10749,10669,10557,15360,10774,10693,10581,15360,10766,10685,10573,15360,10790,10709,10597,15360,10782,10701,10589,15360,10790,10709,10597,15360,10838,10749,10621,15360,10870,10774,10645,15360,10894,10790,10661,15360,10878,10782,10653,15360,10846,10741,10613,15360,10790,10693,10557,15360,10814,10717,10597,15360,10790,10701,10581,15360,10741,10645,10525,15360,10717,10629,10509,15360,10774,10685,10573,15360,10725,10637,10525,15360,10854,10749,10621,15360,10950,10846,10701,15360,10966,10854,10709,15360,10934,10814,10677,15360,10926,10822,10701,15360,10982,10878,10766,15360,10998,10894,10782,15360,10990,10878,10766,15360,10998,10894,10782,15360,10998,10886,10774,15360,10998,10886,10758,15360,11006,10894,10774,15360,10942,10838,10733,15360,10958,10854,10741,15360,10958,10854,10749,15360,11006,10902,10790,15360,11015,10902,10798,15360,10982,10870,10758,15360,10998,10894,10782,15360,10974,10870,10758,15360,11006,10902,10790,15360,10998,10894,10774,15360,10974,10870,10758,15360,10950,10854,10741,15360,10878,10790,10693,15360,10902,10814,10701,15360,10918,10822,10709,15360,10838,10733,10613,15360,10878,10782,10661,15360,10934,10838,10717,15360,10902,10806,10693,15360,10918,10822,10709,15360,10926,10830,10709,15360,10838,10733,10605,15360,10910,10806,10661,15360,10942,10838,10693,15360,10886,10782,10645,15360,10886,10782,10637,15360,10854,10749,10621,15360,10926,10830,10709,15360,10966,10862,10741,15360,10846,10749,10629,15360,10830,10733,10605,15360,10854,10758,10637,15360,10822,10725,10605,15360,10886,10790,10661,15360,10902,10806,10669,15360,10918,10814,10677,15360,10830,10733,10605,15360,10806,10717,10589,15360,10870,10774,10645,15360,10934,10838,10709,15360,10958,10862,10733,15360,10886,10790,10661,15360,10894,10798,10661,15360,10958,10854,10709,15360,10934,10830,10709,15360,10814,10717,10581,15360,10862,10758,10613,15360,10854,10741,10589,15360,10814,10717,10573,15360,10886,10782,10645,15360,10814,10725,10597,15360,10862,10766,10637,15360,10910,10806,10669,15360,10942,10838,10709,15360,10966,10862,10733,15360,10974,10870,10741,15360,10974,10870,10749,15360,10958,10862,10749,15360,11031,10934,10822,15360,10998,10894,10782,15360,10974,10870,10766,15360,11023,10918,10814,15360,11039,10926,10822,15360,10958,10846,10741,15360,10918,10814,10693,15360,10966,10870,10741,15360,10982,10886,10766,15360,10982,10878,10766,15360,10942,10846,10733,15360,10958,10862,10758,15360,10950,10854,10758,15360,10934,10830,10717,15360,10966,10862,10733,15360,10942,10846,10725,15360,10934,10846,10733,15360,10934,10846,10733,15360,10878,10798,10693,15360,10886,10798,10693,15360,10910,10814,10709,15360,10942,10846,10733,15360,10838,10733,10597,15360,10878,10774,10645,15360,10918,10822,10701,15360,10878,10782,10653,15360,10894,10790,10661,15360,10934,10838,10725,15360,10958,10854,10725,15360,10966,10862,10733,15360,10910,10806,10685,15360,10982,10878,10758,15360,10942,10854,10749,15360,10934,10838,10733,15360,10918,10814,10701,15360,10894,10798,10669,15360,10894,10798,10669,15360,10814,10725,10605,15360,10902,10798,10669,15360,10814,10725,10605,15360,10894,10798,10685,15360,10958,10862,10749,15360,10910,10814,10701,15360,10910,10806,10685,15360,10918,10814,10693,15360,10926,10822,10709,15360,10894,10790,10661,15360,10902,10806,10677,15360,10902,10806,10685,15360,10934,10838,10717,15360,10934,10838,10701,15360,10934,10838,10717,15360,10950,10854,10725,15360,10894,10798,10661,15360,10862,10749,10597,15360,10894,10798,10677,15360,10878,10782,10661,15360,10926,10838,10717,15360,10926,10838,10717,15360,10918,10822,10709,15360,10934,10838,10733,15360,10926,10838,10733,15360,10958,10870,10766,15360,10942,10854,10749,15360,10958,10870,10774,15360,10974,10878,10774,15360,10958,10854,10741,15360,10950,10846,10741,15360,10950,10854,10758,15360,10934,10838,10733,15360,10942,10846,10725,15360,10966,10862,10741,15360,10926,10838,10733,15360,10958,10862,10749,15360,10910,10822,10709,15360,10942,10854,10758,15360,10926,10838,10733,15360,10910,10822,10717,15360,10934,10838,10733,15360,10934,10846,10733,15360,10902,10814,10709,15360,10926,10830,10717,15360,10918,10822,10709,15360,10838,10749,10637,15360,10878,10790,10677,15360,10942,10846,10733,15360,10926,10822,10701,15360,10958,10862,10749,15360,10886,10790,10685,15360,10918,10814,10693,15360,10910,10814,10693,15360,10902,10806,10701,15360,10878,10774,10637,15360,10798,10693,10565,15360,10822,10725,10597,15360,10934,10838,10709,15360,10958,10854,10725,15360,10886,10790,10669,15360,10910,10806,10677,15360,10886,10782,10645,15360,10830,10725,10597,15360,10822,10717,10581,15360,10862,10758,10637,15360,10878,10782,10669,15360,10926,10822,10709,15360,10974,10878,10774,15360,10966,10870,10758,15360,10918,10822,10709,15360,10846,10749,10645,15360,10894,10798,10693,15360,10918,10822,10709,15360,10974,10878,10774,15360,10918,10822,10717,15360,10982,10886,10774,15360,10974,10878,10758,15360,10950,10854,10741,15360,10958,10854,10725,15360,10982,10886,10766,15360,10918,10822,10701,15360,10878,10782,10669,15360,10886,10790,10669,15360,10934,10838,10717,15360,10950,10854,10741,15360,10934,10838,10733,15360,10982,10886,10782,15360,10886,10798,10701,15360,10870,10782,10685,15360,10894,10814,10717,15360,10910,10822,10725,15360,10934,10838,10733,15360,10950,10846,10741,15360,10934,10838,10725,15360,10934,10846,10749,15360,10902,10814,10717,15360,10878,10790,10677,15360,10878,10782,10669,15360,10854,10766,10645,15360,10838,10749,10629,15360,10902,10814,10701,15360,10910,10814,10693,15360,10902,10798,10669,15360,10910,10806,10677,15360,10886,10782,10653,15360,10854,10749,10629,15360,10870,10774,10653,15360,10974,10870,10758,15360,10990,10878,10758,15360,10918,10822,10709,15360,10926,10838,10725,15360,10958,10854,10733,15360,10894,10790,10653,15360,10822,10725,10605,15360,10878,10782,10661,15360,10974,10870,10749,15360,10902,10806,10677,15360,10934,10838,10725,15360,10870,10774,10653,15360,10798,10701,10581,15360,10854,10749,10621,15360,10894,10798,10669,15360,10934,10822,10685,15360,10942,10830,10701,15360,10910,10806,10669,15360,10870,10758,10629,15360,10886,10774,10645,15360,10950,10838,10701,15360,10966,10870,10749,15360,10886,10790,10685,15360,10870,10782,10677,15360,10934,10838,10733,15360,10934,10838,10725,15360,10822,10725,10621,15360,10878,10790,10677,15360,10894,10798,10693,15360,10822,10733,10629,15360,10894,10798,10685,15360,10998,10902,10790,15360,11015,10918,10806,15360,10950,10854,10741,15360,10950,10846,10741,15360,10934,10838,10733,15360,10942,10846,10749,15360,10910,10822,10725,15360,10846,10758,10653,15360,10878,10790,10685,15360,10894,10798,10701,15360,10862,10774,10669,15360,10814,10725,10621,15360,10846,10758,10645,15360,10870,10774,10661,15360,10870,10774,10677,15360,10878,10790,10693,15360,10878,10782,10677,15360,10830,10741,10637,15360,10870,10782,10677,15360,10966,10870,10766,15360,11015,10918,10814,15360,10910,10814,10701,15360,10942,10846,10725,15360,10950,10846,10725,15360,10942,10838,10725,15360,10934,10830,10701,15360,10910,10798,10677,15360,10886,10782,10653,15360,10838,10733,10597,15360,10902,10806,10669,15360,10830,10733,10613,15360,10838,10741,10621,15360,10838,10741,10621,15360,10894,10798,10669,15360,10934,10830,10685,15360,10886,10790,10669,15360,10902,10806,10685,15360,10854,10749,10637,15360]);var ude={file:1,m:1,mm:.001,cm:.01,ft:.3048,in:.0254,pt:lTt()},cTt={file:"m",m:"m",mm:"mm",cm:"cm",ft:"ft",in:"in",pt:"pt"},hde=e=>2===e?"²":3===e?"³":"",eI=(e,t=1)=>cTt[e]+hde(t),YYt=(e,t,i,r=1)=>(null==i&&(i=t),i===t?{value:e,unit:eI(i)}:{value:e*Math.pow(ude[t]/ude[i],r),unit:eI(i)+hde(r)}),YB=(e=>(e.Top="Top",e.Bottom="Bottom",e.Front="Front",e.Back="Back",e.Left="Left",e.Right="Right",e))(YB||{}),tA=class{static getCameraPositionByBboxAndView(e,t,i,r,n){let s=tA.getCameraDirectionByView(t);return this.getCameraPositionByBboxAndDirection(e,i,r,n,s)}static getCameraPositionByBboxAndDirection(e,t,i,r,n){if(e.isEmpty()||!r)return;let s=new A,a=new A,o=new A(0,1,0);e.getSize(a),e.getCenter(s);let l,h,u=(a.x+a.y+a.z)/3*1.5;if(!n||null!=n&&n.equals(new A))l=new A(s.x+u,s.y+u/1.5,s.z+u),h=l.clone().sub(s);else{let e=new A(u,u/1.5,u).length();h=new A(-n.x,-n.y,-n.z).normalize().multiplyScalar(e),l=h.clone().add(s)}u=h.length(),h=h.normalize();let c=new Be;c.lookAt(l,s,o);let p=new Be;p.makeTranslation(-l.x,-l.y,-l.z);let d=e.clone().applyMatrix4(p).applyMatrix4(c.invert()).applyMatrix4(r),f=Math.max(Math.abs(d.max.x),Math.abs(d.min.x)),m=Math.max(Math.abs(d.max.y),Math.abs(d.min.y));u*=1.1*Math.sqrt(Math.pow(f,2)+Math.pow(m,2)),l=h.multiplyScalar(u).add(s),i.set(s.x,s.y,s.z),t.set(l.x,l.y,l.z)}static getCameraDirectionByView(e){let t=new A(1,0,0);return"Top"===e?t.set(0,-1,0):"Bottom"===e?t.set(0,1,0):"Front"===e?t.set(0,0,-1):"Back"===e?t.set(0,0,1):"Left"===e?t.set(1,0,0):"Right"===e&&t.set(-1,0,0),t}static sleep(e){return ht(this,null,(function*(){let t;return new Promise((i=>{t=setTimeout((()=>{i("")}),e)})).then((()=>{clearTimeout(t)}))}))}static twinkle(e,t=500){return ht(this,null,(function*(){let i=tA.twinklingObjectIds;i[e.id]||(i[e.id]=!0,e.visible=!e.visible,yield this.sleep(t),e.visible=!e.visible,yield this.sleep(t),e.visible=!e.visible,yield this.sleep(t),e.visible=!e.visible,yield this.sleep(t),e.visible=!e.visible,yield this.sleep(t),e.visible=!e.visible,delete i[e.id])}))}},xs=tA;xs.twinklingObjectIds={};var uTt=!1,Aa=class extends Cs{constructor(e){super(),this.DEFAULT_LINE_WIDTH=1,this.DEFAULT_STROKE_STYLE="#000000",this.DEFAULT_FILL_STYLE="#000000",this.lineWidth=this.DEFAULT_LINE_WIDTH,this.lineColor=this.DEFAULT_STROKE_STYLE,this.fillColor=this.DEFAULT_FILL_STYLE,this.x=0,this.y=0,this.points=[],this.userData={},this.width=0,this.height=0,this.tolerance=1,this.visible=!0,this.selected=!1,this.needsFrustumCulled=!0,this.editPointSize=3,this.editPointColor="#ffffff",this.matrix=new Be,this.id=e||_t.guid()}setTolerance(e){this.tolerance=e}render(e,t){this.ctx=e,this.draw(e,t),this.selected&&this.drawSelect(e,t),uTt&&(this.drawBounds(e,t),this.drawCenter(e,t))}getData(){return{id:this.id,points:this.points.map((e=>[e.x,e.y])),lineWidth:this.lineWidth,lineColor:this.lineColor,fillColor:this.fillColor,type:this.getClassType()}}setData(e){this.id=e.id,this.setLineWidth(e.lineWidth),this.setLineColor(e.lineColor),this.setFillColor(e.fillColor)}getVertexs(){return[new A(this.x,this.y,0),new A(this.x+this.width,this.y,0),new A(this.x+this.width,this.y+this.height,0),new A(this.x,this.y+this.height,0)]}setLineWidth(e){this.lineWidth=e||this.DEFAULT_LINE_WIDTH}setLineColor(e){this.lineColor=e||this.DEFAULT_STROKE_STYLE}setFillColor(e){this.fillColor=e||this.DEFAULT_FILL_STYLE}isSelected(){return this.selected}getCenter(){return this.getBounds().getCenter(new A)}transToScreenCoord(e,t){return this.ctx?Ai.worldPosition2ScreenPoint(e,t,this.ctx.canvas):new le}drawBounds(e,t){let{min:i,max:r}=this.getBounds(),n=[],s=(e,t,i)=>n.push(new A(e,t,i));s(r.x,r.y,r.z),s(i.x,r.y,r.z),s(i.x,i.y,r.z),s(r.x,i.y,r.z),s(r.x,r.y,i.z),s(i.x,r.y,i.z),s(i.x,i.y,i.z),s(r.x,i.y,i.z),s(i.x,r.y,r.z),s(i.x,i.y,r.z),s(r.x,r.y,r.z),s(r.x,i.y,r.z),s(r.x,r.y,i.z),s(r.x,i.y,i.z),s(i.x,r.y,i.z),s(i.x,i.y,i.z),s(i.x,r.y,r.z),s(i.x,r.y,i.z),s(r.x,r.y,r.z),s(r.x,r.y,i.z),s(i.x,i.y,r.z),s(i.x,i.y,i.z),s(r.x,i.y,r.z),s(r.x,i.y,i.z),e.save(),e.strokeStyle="yellow",e.beginPath(),n.forEach(((i,r)=>{let n=this.transToScreenCoord(i,t);r%2==0?e.moveTo(n.x,n.y):e.lineTo(n.x,n.y)})),e.closePath(),e.stroke(),e.restore()}drawCenter(e,t){let i=this.transToScreenCoord(this.getCenter(),t);e.save(),e.fillStyle="yellow",e.beginPath(),e.arc(i.x,i.y,5,0,2*Math.PI),e.closePath(),e.fill(),e.restore()}getBounds(){let e=this.getVertexs();return(new Mt).setFromPoints(e)}},Af=(e=>(e.MouseClicked="MouseClicked",e.LayoutChanged="LayoutChanged",e.ModelLoaded="ModelLoaded",e.RenderAfter="RenderAfter",e.CameraChanged="CameraChanged",e.MarkupDeactived="MarkupDeactived",e.MarkupAdded="MarkupAdded",e.MarkupUpdated="MarkupUpdated",e.MarkupRemoved="MarkupRemoved",e.BeforeRemoveMarkup="BeforeRemoveMarkup",e))(Af||{}),pde={},wr=class extends Cs{constructor(e){super(),this.drawableLists=[],this.frustum=new $s,this.projScreenMatrix=new Be,this.viewer=e,this.init()}static _registerDrawableClass(e){pde[e.prototype.getClassType()]=e}static createDrawable(e){let t=pde[e.type];if(!t)throw new Error(`Invalid drawable type: ${t}`);let i=e.points.map((e=>new A(e[0],e[1],e[2]||0))),r=new t(e.id,i);return r.setData(e),r}get container(){return this.viewer.viewerContainer}get camera(){return this.viewer.camera}get raycaster(){return this.viewer.getRaycaster()}getPixelSize(e,t){if(!this.canvas)return 1;let{clientWidth:i,clientHeight:r}=this.canvas,n=0;if("OrthographicCamera"===t.type){let s=t;n=e*Math.max(s.right-s.left,s.top-s.bottom)/s.zoom/Math.max(i,r)}else if("PerspectiveCamera"===t.type){let i=t,s=this.viewer.cameraCfg,a=s&&_t.arrayToVector3(s.eye),o=s&&_t.arrayToVector3(s.look);n=2*e*(a.distanceTo(o)*Math.tan(i.fov/2*Math.PI/180))/r}return n}init(){this.initCanvas(),this.viewer.addEventListener("RenderAfter",(()=>{this.projScreenMatrix.multiplyMatrices(this.camera.projectionMatrix,this.camera.matrixWorldInverse),this.frustum.setFromProjectionMatrix(this.projScreenMatrix),this.render()}))}initCanvas(){let e=this.viewer.getViewConfig();if(xi.isBrowser&&!e.context2d){let e=this.canvas=document.createElement("canvas"),t=this.viewer.viewerContainer;t.appendChild(e),e.classList.add("overlay-renderer"),e.style.pointerEvents="none",e.style.position="absolute",e.style.left="0px",e.style.top="0px",e.style.userSelect="none",this.context=e.getContext("2d",{willReadFrequently:!0});let{clientWidth:i,clientHeight:r}=t;this.setSize(i,r)}else e.context2d&&(this.context=e.context2d,this.canvas=xi.creatReactNativeCanvas(this.context),this.context.canvas||(this.context.canvas=this.canvas))}toHighDpr(e,t,i){let r=Math.max(window.devicePixelRatio||1,1),n=this.canvas;return n.width=t*r,n.height=i*r,e.scale(r,r),n.style.width=`${t}px`,n.style.height=`${i}px`,e}clearCanvas(){var e,t,i;null==(i=this.context)||i.clearRect(0,0,null==(e=this.canvas)?void 0:e.width,null==(t=this.canvas)?void 0:t.height)}addDrawableList(e){this.drawableLists.push(e)}render(){if(!this.canvas||!this.context)return;this.clearCanvas();let e=this.getSortedDrawables(),t=new Wi;for(let i=0;i{e.push(...Array.from(t.getDrawables().values()))})),e.sort(((e,t)=>t.getCenter().distanceTo(this.camera.position)-e.getCenter().distanceTo(this.camera.position))),e}getDrawablesByPosition(e,t){let i=this.getSortedDrawables().reverse(),r=[];for(let n=0;ne.clear())),this.drawableLists=[],this.canvas&&(null==(e=this.viewer.viewerContainer)||e.removeChild(this.canvas),this.canvas=void 0)}},Xu=class extends Cs{constructor(e){super(),this.drawableMap=new Map,this.category=e}addDrawable(e){this.drawableMap.set(e.id,e),this.dispatchEvent("addDrawable",e.getData())}updateDrawable(e,t){e.setData(t),this.dispatchEvent("updateDrawable",e.getData())}removeDrawable(e){this.drawableMap.delete(e.id),this.dispatchEvent("removeDrawable",e.getData())}getDrawableById(e){return this.drawableMap.get(e)}clear(){this.drawableMap.forEach((e=>this.removeDrawable(e)))}getDrawables(){return this.drawableMap}getDrawableDatas(){return Array.from(this.drawableMap).map((([e,t])=>t.getData()))}setDrawableDatas(e){for(let t=0;t{let r=this.transToScreenCoord(i,t);e.moveTo(r.x,r.y),e.arc(r.x,r.y,this.editPointSize,0,2*Math.PI)})),e.closePath(),e.fill(),e.restore()}setEditPointSize(e){this.editPointSize=e}setEditPointColor(e){this.editPointColor=e}getCenter(){return this.getBounds().getCenter(new A)}isPointInPath(e){let t=this.getVertexs().map((e=>new le(e.x,e.y)));return kt.isPointInPolygon(new le(e.x,e.y),t,!0)}setData(e){super.setData(e),this.update(e.points.map((e=>new A(e[0],e[1],0))))}translate(e,t){let i=new A(e,t,0);return this.points.forEach((e=>e.add(i))),this.update(this.points),this}rotate(){return this}scale(){return this}},Yo=(e=>(e.Arrow="ArrowMarkup",e.Circle="CircleMarkup",e.CloudLine="CloudLineMarkup",e.CloudLineRectangle="CloudRectMarkup",e.Dot="DotMarkup",e.Ellipse="EllipseMarkup",e.PolyLine="PolylineMarkup",e.Rectangle="RectMarkup",e.Text="TextMarkup",e.X="XMarkup",e))(Yo||{}),XB=class extends Rn{constructor(e,t){super(e),this.type="ArrowMarkup",this.update(t)}draw(e,t){let i=this.points.map((e=>this.transToScreenCoord(e,t)));this.drawArrowLine(e,i),this.drawArrowHead(e,i[0],i[1],this.lineWidth+10,this.lineWidth+20)}drawArrowLine(e,t){e.save(),e.lineWidth=this.lineWidth,e.strokeStyle=this.lineColor;let[i,r]=t,n=(new le).subVectors(r,i).normalize();e.beginPath(),e.moveTo(i.x,i.y);let s=r.clone().sub(n.multiplyScalar(this.lineWidth+5));e.lineTo(s.x,s.y),e.closePath(),e.stroke(),e.restore()}drawArrowHead(e,t,i,r,n){let s=180*Math.atan2(t.y-i.y,t.x-i.x)/Math.PI,a=(s+r)*Math.PI/180,o=(s-r)*Math.PI/180,l=n*Math.cos(a),h=n*Math.sin(a),u=n*Math.cos(o),c=n*Math.sin(o),p=new le(i.x+l,i.y+h),d=new le(i.x+u,i.y+c);e.save(),e.fillStyle=this.lineColor,e.beginPath(),e.moveTo(i.x,i.y),e.lineTo(p.x,p.y),e.lineTo(d.x,d.y),e.closePath(),e.fill(),e.restore()}getVertexs(){return this.points}update(e){let[t,i]=e;return this.points=e,this.x=Math.min(t.x,i.x),this.y=Math.min(t.y,i.y),this.width=Math.abs(i.x-t.x),this.height=Math.abs(i.y-t.y),this}isPointInPath(e){return kt.isPointOnLineSegments(e,this.points,this.tolerance)}getClassType(){return"ArrowMarkup"}};wr._registerDrawableClass(XB);var $B=class extends Rn{constructor(e,t){super(e),this.radius=1,this.type="CircleMarkup",this.update(t)}draw(e,t){let[i,r]=this.points.map((e=>this.transToScreenCoord(e,t)));this.radius=(new le).subVectors(r,i).length(),e.save(),e.lineWidth=this.lineWidth,e.strokeStyle=this.lineColor,e.fillStyle=this.fillColor,e.beginPath(),e.arc(i.x,i.y,this.radius,0,2*Math.PI),e.closePath(),e.stroke(),e.restore()}update(e){let[t,i]=e,r=(new A).subVectors(i,t).length();return this.width=2*r,this.height=2*r,this.x=t.x-this.width/2,this.y=t.y-this.height/2,this.points=e,this}isPointInPath(e){let[t,i]=this.points,r=(new A).subVectors(t,i).length();return Math.abs(e.distanceTo(t)-r)<=2*this.tolerance}getClassType(){return"CircleMarkup"}};wr._registerDrawableClass($B);var hTt=new Mt,kp=class extends Rn{constructor(e,t){super(e),this.type="CloudLineMarkup",this.update(t)}draw(e,t){let i=this.points,r=[];e.save(),e.lineWidth=this.lineWidth,e.strokeStyle=this.lineColor,e.fillStyle=this.fillColor,e.beginPath();for(let n=0;nthis.transToScreenCoord(e,t))),n=(new le).lerpVectors(i,r,.5);this.radiusX=Math.abs(r.x-i.x)/2,this.radiusY=Math.abs(r.y-i.y)/2,e.save(),e.lineWidth=this.lineWidth,e.strokeStyle=this.lineColor,e.fillStyle=this.fillColor,e.beginPath(),e.ellipse(n.x,n.y,this.radiusX,this.radiusY,0,0,2*Math.PI),e.closePath(),e.stroke(),e.restore()}update(e){let[t,i]=e;return this.x=Math.min(t.x,i.x),this.y=Math.min(t.y,i.y),this.width=Math.abs(i.x-t.x),this.height=Math.abs(i.y-t.y),this.points=e,this}isPointInPath(e){let[t,i]=this.points,r=(new A).lerpVectors(t,i,.5),n=Math.abs(i.x-t.x)/2,s=Math.abs(i.y-t.y)/2,a=Math.pow(e.x-r.x,2)/(n*n),o=Math.pow(e.y-r.y,2)/(s*s);return Math.abs(a+o-1)<=.1}getClassType(){return"EllipseMarkup"}};wr._registerDrawableClass(JB);var QB=class extends Rn{constructor(e,t){super(e),this.type="PolylineMarkup",this.update(t)}draw(e,t){e.save(),e.lineWidth=this.lineWidth,e.strokeStyle=this.lineColor,e.fillStyle=this.fillColor;let i=this.points;e.beginPath(),i.forEach(((i,r)=>{let n=this.transToScreenCoord(i,t);0===r?e.moveTo(n.x,n.y):e.lineTo(n.x,n.y)})),e.stroke(),e.restore()}isPointInPath(e){let t=this.points,i=[];for(let e=0;e{let n=this.transToScreenCoord(i,t);0===r?e.moveTo(n.x,n.y):e.lineTo(n.x,n.y)})),e.closePath(),e.stroke(),e.restore()}update(e){let[t,i]=e;return this.x=Math.min(t.x,i.x),this.y=Math.min(t.y,i.y),this.width=Math.abs(i.x-t.x),this.height=Math.abs(i.y-t.y),this.points=e,this}isPointInPath(e){let t=this.getVertexs(),i=[];for(let e=0;ethis.textWidth&&(this.textWidth=s),r.push({lineWidth:s,lineText:n})}return this.textRow!==r.length&&(this.y-=(r.length-1)*this.fontSize),r.reverse()}setFontSize(e){this.fontSize=e}update(e){let t=e[0];return this.x=t.x,this.y=t.y,this.points=[t],this.textRow=1,this}setData(e){super.setData(e),this.text=e.text,this.setFontSize(e.fontSize)}updateText(e){this.text=e}getData(){return{id:this.id,points:this.points.map((e=>[e.x,e.y])),text:this.text,lineWidth:this.lineWidth,lineColor:this.lineColor,fillColor:this.fillColor,fontSize:this.fontSize,type:this.getClassType()}}getClassType(){return"TextMarkup"}};wr._registerDrawableClass(tk);var rk=class extends Rn{constructor(e,t){super(e),this.type="XMarkup",this.update(t)}draw(e,t){e.save(),e.lineWidth=this.lineWidth,e.strokeStyle=this.lineColor,e.beginPath();let[i,r,n,s]=this.getVertexs().map((e=>this.transToScreenCoord(e,t)));e.moveTo(i.x,i.y),e.lineTo(n.x,n.y),e.moveTo(r.x,r.y),e.lineTo(s.x,s.y),e.closePath(),e.stroke(),e.restore()}isPointInPath(e){let[t,i,r,n]=this.getVertexs();return kt.isPointOnLineSegments(e,[t,r,i,n],.1)}update(e){let[t,i]=e;return this.points=e,this.x=Math.min(t.x,i.x),this.y=Math.min(t.y,i.y),this.width=Math.abs(i.x-t.x),this.height=Math.abs(i.y-t.y),this}getClassType(){return"XMarkup"}};wr._registerDrawableClass(rk);var rA=class{constructor(e,t){this.flyDuration=500,this.autoRotateRemainingTime=0,this.automaticallyAdjustCameraPosition=!0,this.rotateIntervalStartTime=0,this.camera=e,this.controls=t}flyTo(e,t,i){let r=this.camera,n=this.controls;if(!r||!n)return;if(e.equals(t))return void console.error("[BimViewer] camera position and lookAt cannot be the same!");if(isNaN(e.x)||isNaN(e.y)||isNaN(e.z)||isNaN(t.x)||isNaN(t.y)||isNaN(t.z))return void console.error("[BimViewer] invalid position or lookAt!");if(this.automaticallyAdjustCameraPosition){let i=e.distanceTo(t);ir.far&&(e=e.clone().sub(t).normalize().multiplyScalar(.9*r.far),console.warn("[BimViewer] camera could be too far to see the object!"))}let s=r.position.clone(),a=n.target.clone(),o=this.flyDuration,l=Date.now();this.cameraUpdateInterval&&clearInterval(this.cameraUpdateInterval),this.cameraUpdateInterval=setInterval((()=>{let h=Date.now()-l;h>o&&(h=o);let u=(e,t,i)=>{let r=e.x+(t.x-e.x)*i,n=e.y+(t.y-e.y)*i,s=e.z+(t.z-e.z)*i;return new A(r,n,s)};((e,t)=>{r.lookAt(t),r.position.set(e.x,e.y,e.z),n.target.set(t.x,t.y,t.z),n.update()})(u(s,e,h/o),u(a,t,h/o)),h>=o&&(clearInterval(this.cameraUpdateInterval),this.cameraUpdateInterval=void 0,i&&i())}),10)}lookTo(e){let t=this.camera,i=this.controls;if(!t||!i)return;let r=t.position,n=i.target.distanceTo(r),s=e.normalize().multiplyScalar(n),a=new A(r.x+s.x,r.y+s.y,r.z+s.z);this.flyTo(r,a)}startAutoRotate(){let e=this.camera,t=this.controls;if(!e||!t)return;t.autoRotate=!0;let i=new A;e.getWorldPosition(i);let r=t.target;if(r.y===i.y)return;let n=(r.y-i.y)/50;for(let e=0;e<50;++e)setTimeout((()=>{let e=t.target.y-n;t.target.setY(e),t.update()}),30*e)}delayAutoRotate(){this.autoRotateRemainingTime=5e3,this.controls&&(this.controls.autoRotate=!1)}startToRotate(e){let t=Date.now()-this.rotateIntervalStartTime;this.rotateIntervalStartTime=Date.now(),!(this.rotateInterval&&t<100)&&(this.rotateInterval&&clearInterval(this.rotateInterval),this.rotateInterval=setInterval((()=>{if(Date.now()-this.rotateIntervalStartTime>=100)return clearInterval(this.rotateInterval),void(this.rotateInterval=void 0);"ArrowLeft"===e.code||"ArrowRight"===e.code?this.rotateLeftOrRight(.3,"ArrowLeft"===e.code):("ArrowUp"===e.code||"ArrowDown"===e.code)&&this.rotateUpOrDown(.3,"ArrowUp"===e.code)}),1))}rotateLeftOrRight(e,t=!0){let i=this.controls;if(!this.camera||!i)return;let r=this.camera.position,n=i.target,s=n.clone(),a=Math.PI*e/180;t&&(a=-a),s.x=(n.x-r.x)*Math.cos(a)-(n.z-r.z)*Math.sin(a)+r.x,s.z=(n.z-r.z)*Math.cos(a)+(n.x-r.x)*Math.sin(a)+r.z,this.camera.lookAt(s),i.target=s,i.update()}rotateUpOrDown(e,t=!0){let i=this.controls;if(!this.camera||!i)return;let r=this.camera.position,n=i.target,s=n.clone(),a=Math.PI*e/180,o=new A(n.x-r.x,n.y-r.y,n.z-r.z).length(),l=n.y-r.y;t||(a=-a);let h=Math.asin(l/o)+a;if(h<-Math.PI/2||h>Math.PI/2)return;let u=Math.sin(h)*o;s.y=n.y+(u-l),i.target=s,i.update()}},iA=class{constructor(e){this.object=e}instantiate(){let e=Date.now();this.instantiateInner(this.object),console.log(`[Inst] instantiate() costed ${(Date.now()-e)/1e3}s`)}instantiateInner(e){if(!e.children||0===e.children.length)return;let t=e.children.length,i={},r=[];for(let n=0;n0||!t.geometry)continue;let s=!1,a=Object.values(i);for(let o=a.length-1;o>=0;--o){let l=a[o].indexes[0],h=e.children[l];if(this.geometryEquals(t.geometry,h.geometry)&&As.materialsEquals(t.material,h.material)){i[l]||(i[l]={indexes:[l]},this.removeFromArray(r,l)),i[l].indexes.push(n),s=!0;break}}for(let a=r.length-1;!s&&a>=0;--a){let o=r[a],l=e.children[o];if(this.geometryEquals(t.geometry,l.geometry)&&As.materialsEquals(t.material,l.material)){i[o]||(i[o]={indexes:[o]},this.removeFromArray(r,o)),i[o].indexes.push(n),s=!0;break}}s||r.push(n)}if(Object.keys(i).length<=0)return;let n=[],s=[];Object.values(i).forEach((t=>{let i=t.indexes;s.push(...i);let r=e.children[i[0]],a=r.material;if(a instanceof jr)a=a.clone();else if(Array.isArray(a)){let e=[];a.forEach((t=>e.push(t.clone()))),a=e}let o=new rn(r.geometry,a,i.length);o.name=`[Instanced] ${r.name}`;for(let t=0;tt-e)),s.forEach((t=>e.remove(e.children[t]))),n.forEach((t=>{t.parent=e,e.children.push(t)})),e.updateMatrix(),console.log(`[Inst] ${s.length}(out of ${t}) objects instanced to ${n.length} InstancedMesh`)}removeFromArray(e,t){for(let i=e.length-1;i>=0;--i)if(e[i]===t)return void e.splice(i,1)}geometryEquals(e,t){return kt.geometryEquals(e,t)}},dT=class{constructor(){this.TIMEOUT="timeout",this.INTERVAL="interval",this.timeoutMap={},this.intervalMap={}}run(e=this.INTERVAL,t,i=16.7){let r=Date.now,n=r(),s=n,a=Symbol(""),o=()=>{this.setIdMap(a,e,o),s=r(),s-n>=i&&(e===this.intervalMap&&(n=r(),s=n),t(),e===this.TIMEOUT&&this.clearTimeout(a))};return this.setIdMap(a,e,o),a}setIdMap(e,t,i){let r=requestAnimationFrame(i);t===this.INTERVAL?this.intervalMap[e]=r:t===this.TIMEOUT&&(this.timeoutMap[e]=r)}setTimeout(e,t){return this.run(this.TIMEOUT,e,t)}clearTimeout(e){cancelAnimationFrame(this.timeoutMap[e])}setInterval(e,t){return this.run(this.INTERVAL,e,t)}clearInterval(e){cancelAnimationFrame(this.intervalMap[e])}},sk=kn(dde(),1),Of=class{constructor(e,t){this.endian=t&&"big"===t?"big":"little",this.position=0,this.data=new DataView(e)}readAsciiString(e){if(this.data.byteLength256||24!==e.colormap_size||1!==e.colormap_type)&&console.error("THREE.TGALoader: Invalid type colormap data for indexed type.");break;case r:case n:case a:case o:e.colormap_type&&console.error("THREE.TGALoader: Invalid type colormap data for colormap type.");break;case t:console.error("THREE.TGALoader: No data.");default:console.error('THREE.TGALoader: Invalid type "%s".',e.image_type)}(e.width<=0||e.height<=0)&&console.error("THREE.TGALoader: Invalid image size."),8!==e.pixel_size&&16!==e.pixel_size&&24!==e.pixel_size&&32!==e.pixel_size&&console.error('THREE.TGALoader: Invalid pixel size "%s".',e.pixel_size)})(g),g.id_length+f>e.length&&console.error("THREE.TGALoader: No data."),f+=g.id_length;let y=!1,v=!1,T=!1;switch(g.image_type){case s:y=!0,v=!0;break;case i:v=!0;break;case a:y=!0;break;case r:break;case o:y=!0,T=!0;break;case n:T=!0}let x=new Uint8Array(g.width*g.height*4),b=function(e,t,i,r,n){let s,a,o=i.pixel_size>>3,l=i.width*i.height*o;if(t&&(a=n.subarray(r,r+=i.colormap_length*(i.colormap_size>>3))),e){s=new Uint8Array(l);let e,t,i,a=0,h=new Uint8Array(o);for(;a>h){default:case p:s=0,o=1,m=t,a=0,f=1,y=i;break;case u:s=0,o=1,m=t,a=i-1,f=-1,y=-1;break;case d:s=t-1,o=-1,m=-1,a=0,f=1,y=i;break;case c:s=t-1,o=-1,m=-1,a=i-1,f=-1,y=-1}if(T)switch(g.pixel_size){case 8:!function(e,t,i,r,n,s,a,o){let l,h,u,c=0,p=g.width;for(u=t;u!==r;u+=i)for(h=n;h!==a;h+=s,c++)l=o[c],e[4*(h+p*u)+0]=l,e[4*(h+p*u)+1]=l,e[4*(h+p*u)+2]=l,e[4*(h+p*u)+3]=255}(e,a,f,y,s,o,m,r);break;case 16:!function(e,t,i,r,n,s,a,o){let l,h,u=0,c=g.width;for(h=t;h!==r;h+=i)for(l=n;l!==a;l+=s,u+=2)e[4*(l+c*h)+0]=o[u+0],e[4*(l+c*h)+1]=o[u+0],e[4*(l+c*h)+2]=o[u+0],e[4*(l+c*h)+3]=o[u+1]}(e,a,f,y,s,o,m,r);break;default:console.error("THREE.TGALoader: Format not supported.")}else switch(g.pixel_size){case 8:!function(e,t,i,r,n,s,a,o,l){let h,u,c,p=l,d=0,f=g.width;for(c=t;c!==r;c+=i)for(u=n;u!==a;u+=s,d++)h=o[d],e[4*(u+f*c)+3]=255,e[4*(u+f*c)+2]=p[3*h+0],e[4*(u+f*c)+1]=p[3*h+1],e[4*(u+f*c)+0]=p[3*h+2]}(e,a,f,y,s,o,m,r,n);break;case 16:!function(e,t,i,r,n,s,a,o){let l,h,u,c=0,p=g.width;for(u=t;u!==r;u+=i)for(h=n;h!==a;h+=s,c+=2)l=o[c+0]+(o[c+1]<<8),e[4*(h+p*u)+0]=(31744&l)>>7,e[4*(h+p*u)+1]=(992&l)>>2,e[4*(h+p*u)+2]=(31&l)<<3,e[4*(h+p*u)+3]=32768&l?0:255}(e,a,f,y,s,o,m,r);break;case 24:!function(e,t,i,r,n,s,a,o){let l,h,u=0,c=g.width;for(h=t;h!==r;h+=i)for(l=n;l!==a;l+=s,u+=3)e[4*(l+c*h)+3]=255,e[4*(l+c*h)+2]=o[u+0],e[4*(l+c*h)+1]=o[u+1],e[4*(l+c*h)+0]=o[u+2]}(e,a,f,y,s,o,m,r);break;case 32:!function(e,t,i,r,n,s,a,o){let l,h,u=0,c=g.width;for(h=t;h!==r;h+=i)for(l=n;l!==a;l+=s,u+=4)e[4*(l+c*h)+2]=o[u+0],e[4*(l+c*h)+1]=o[u+1],e[4*(l+c*h)+0]=o[u+2],e[4*(l+c*h)+3]=o[u+3]}(e,a,f,y,s,o,m,r);break;default:console.error("THREE.TGALoader: Format not supported.")}}(x,g.width,g.height,b.pixel_data,b.palettes),{data:x,width:g.width,height:g.height,flipY:!0,generateMipmaps:!0,minFilter:Ra}}},nA=class extends ci{constructor(e){super(e)}load(e,t,i,r){let n=this,s=""===n.path?ks.extractUrlBase(e):n.path,a=new ui(n.manager);a.setPath(n.path),a.setRequestHeader(n.requestHeader),a.setWithCredentials(n.withCredentials),a.load(e,(function(i){try{t(n.parse(i,s))}catch(t){r?r(t):console.error(t),n.manager.itemError(e)}}),i,r)}parse(e,t){function i(e,t){let i=[],r=e.childNodes;for(let e=0,n=r.length;e0&&t.push(new no(r+".position",n,s)),a.length>0&&t.push(new Da(r+".quaternion",n,a)),o.length>0&&t.push(new no(r+".scale",n,o)),t}function _(e,t,i){let r,n,s,a=!0;for(n=0,s=e.length;n=0;){let r=e[t];if(null!==r.value[i])return r;t--}return null}function w(e,t,i){for(;t>>0));t="tga"===(i=i.toLowerCase(),i)?Je:Ke;return t}(n);if(void 0!==i){let r=i.load(n),s=e.extra;if(void 0!==s&&void 0!==s.technique&&!1===o(s.technique)){let e=s.technique;r.wrapS=e.wrapU?vn:gn,r.wrapT=e.wrapV?vn:gn,r.offset.set(e.offsetU||0,e.offsetV||0),r.repeat.set(e.repeatU||1,e.repeatV||1)}else r.wrapS=vn,r.wrapT=vn;return null!==t&&(r.encoding=t),r}return console.warn("THREE.ColladaLoader: Loader for texture %s not found.",n),null}return console.warn("THREE.ColladaLoader: Couldn't create texture with ID:",e.id),null}t.name=e.name||"";let s=r.parameters;for(let e in s){let i=s[e];switch(e){case"diffuse":i.color&&t.color.fromArray(i.color),i.texture&&(t.map=n(i.texture,gr));break;case"specular":i.color&&t.specular&&t.specular.fromArray(i.color),i.texture&&(t.specularMap=n(i.texture));break;case"bump":i.texture&&(t.normalMap=n(i.texture));break;case"ambient":i.texture&&(t.lightMap=n(i.texture,gr));break;case"shininess":i.float&&t.shininess&&(t.shininess=i.float);break;case"emission":i.color&&t.emissive&&t.emissive.fromArray(i.color),i.texture&&(t.emissiveMap=n(i.texture,gr))}}t.color.convertSRGBToLinear(),t.specular&&t.specular.convertSRGBToLinear(),t.emissive&&t.emissive.convertSRGBToLinear();let a=s.transparent,l=s.transparency;if(void 0===l&&a&&(l={float:1}),void 0===a&&l&&(a={opaque:"A_ONE",data:{color:[1,1,1,1]}}),a&&l)if(a.data.texture)t.transparent=!0;else{let e=a.data.color;switch(a.opaque){case"A_ONE":t.opacity=e[3]*l.float;break;case"RGB_ZERO":t.opacity=1-e[0]*l.float;break;case"A_ZERO":t.opacity=1-e[3]*l.float;break;case"RGB_ONE":t.opacity=e[0]*l.float;break;default:console.warn('THREE.ColladaLoader: Invalid opaque type "%s" of transparent tag.',a.opaque)}t.opacity<1&&(t.transparent=!0)}if(void 0!==r.extra&&void 0!==r.extra.technique){let e=r.extra.technique;for(let i in e){let r=e[i];switch(i){case"double_sided":t.side=1===r?gi:tn;break;case"bump":t.normalMap=n(r.texture),t.normalScale=new le(1,1)}}}return t}function $(e){return p(nt.materials[e],K)}function J(e){for(let t=0;t0?i+o:i;t.inputs[l]={id:e,offset:n},t.stride=Math.max(t.stride,n+1),"TEXCOORD"===i&&(t.hasUV=!0);break;case"vcount":t.vcount=s(r.textContent);break;case"p":t.p=s(r.textContent)}}return t}function ce(e){let t=0;for(let i=0,r=e.length;i0&&t0&&d.setAttribute("position",new dt(n.array,n.stride)),s.array.length>0&&d.setAttribute("normal",new dt(s.array,s.stride)),l.array.length>0&&d.setAttribute("color",new dt(l.array,l.stride)),a.array.length>0&&d.setAttribute("uv",new dt(a.array,a.stride)),o.array.length>0&&d.setAttribute("uv2",new dt(o.array,o.stride)),h.length>0&&d.setAttribute("skinIndex",new dt(h,u)),c.length>0&&d.setAttribute("skinWeight",new dt(c,p)),r.data=d,r.type=e[0].type,r.materialKeys=f,r}function fe(e,t,i,r,n=!1){let s=e.p,a=e.stride,o=e.vcount;function l(e){let t=s[e+i]*u,a=t+u;for(;t4)for(let t=1,r=i-2;t<=r;t++){let i=e+a*t,r=e+a*(t+1);l(e+0*a),l(i),l(r)}e+=a*i}}else for(let e=0,t=s.length;e=t.limits.max&&(t.static=!0),t.middlePosition=(t.limits.min+t.limits.max)/2,t}function xe(e){let t={sid:e.getAttribute("sid"),name:e.getAttribute("name")||"",attachments:[],transforms:[]};for(let i=0;ir.limits.max||t{this.decodeDracoFile(e,t).catch(r)}),i,r)}decodeDracoFile(e,t,i,r){let n={attributeIDs:i||this.defaultAttributeIDs,attributeTypes:r||this.defaultAttributeTypes,useUniqueIDs:!!i};return this.decodeGeometry(e,n).then(t)}decodeGeometry(e,t){let i=JSON.stringify(t);if(ak.has(e)){let t=ak.get(e);if(t.key===i)return t.promise;if(0===e.byteLength)throw new Error("THREE.DRACOLoader: Unable to re-decode a buffer with different settings. Buffer has already been transferred.")}let r,n=this.workerNextTaskID++,s=e.byteLength,a=this._getWorker(n,s).then((i=>(r=i,new Promise(((i,s)=>{r._callbacks[n]={resolve:i,reject:s},r.postMessage({type:"decode",id:n,taskConfig:t,buffer:e},[e])}))))).then((e=>this._createGeometry(e.geometry)));return a.catch((()=>!0)).then((()=>{r&&n&&this._releaseTask(r,n)})),ak.set(e,{key:i,promise:a}),a}_createGeometry(e){let t=new lt;e.index&&t.setIndex(new Wt(e.index.array,1));for(let i=0;i{i.load(e,t,void 0,r)}))}preload(){return this._initDecoder(),this}_initDecoder(){if(this.decoderPending)return this.decoderPending;let e="object"!=typeof WebAssembly||"js"===this.decoderConfig.type,t=[];return e?t.push(this._loadLibrary("draco_decoder.js","text")):(t.push(this._loadLibrary("draco_wasm_wrapper.js","text")),t.push(this._loadLibrary("draco_decoder.wasm","arraybuffer"))),this.decoderPending=Promise.all(t).then((t=>{let i=t[0];e||(this.decoderConfig.wasmBinary=t[1]);let r=pTt.toString(),n=["/* draco decoder */",i,"","/* worker */",r.substring(r.indexOf("{")+1,r.lastIndexOf("}"))].join("\n");this.workerSourceURL=URL.createObjectURL(new Blob([n]))})),this.decoderPending}_getWorker(e,t){return this._initDecoder().then((()=>{if(this.workerPool.lengtht._taskLoad?-1:1}));let i=this.workerPool[this.workerPool.length-1];return i._taskCosts[e]=t,i._taskLoad+=t,i}))}_releaseTask(e,t){e._taskLoad-=e._taskCosts[t],delete e._callbacks[t],delete e._taskCosts[t]}debug(){console.log("Task load: ",this.workerPool.map((e=>e._taskLoad)))}dispose(){for(let e=0;e{let t=e.draco,a=new t.Decoder,o=new t.DecoderBuffer;o.Init(new Int8Array(r),r.byteLength);try{let e=function(e,t,r,n){let s,a,o=n.attributeIDs,l=n.attributeTypes,h=t.GetEncodedGeometryType(r);if(h===e.TRIANGULAR_MESH)s=new e.Mesh,a=t.DecodeBufferToMesh(r,s);else{if(h!==e.POINT_CLOUD)throw new Error("THREE.DRACOLoader: Unexpected geometry type.");s=new e.PointCloud,a=t.DecodeBufferToPointCloud(r,s)}if(!a.ok()||0===s.ptr)throw new Error("THREE.DRACOLoader: Decoding failed: "+a.error_msg());let u={index:null,attributes:[]};for(let r in o){let a,h,c=self[l[r]];if(n.useUniqueIDs)h=o[r],a=t.GetAttributeByUniqueId(s,h);else{if(h=t.GetAttributeId(s,e[o[r]]),-1===h)continue;a=t.GetAttribute(s,h)}u.attributes.push(i(e,t,s,r,c,a))}return h===e.TRIANGULAR_MESH&&(u.index=function(e,t,i){let r=3*i.num_faces(),n=4*r,s=e._malloc(n);t.GetTrianglesUInt32Array(i,n,s);let a=new Uint32Array(e.HEAPF32.buffer,s,r).slice();return e._free(s),{array:a,itemSize:1}}(e,t,s)),e.destroy(s),u}(t,a,o,s),r=e.attributes.map((e=>e.array.buffer));e.index&&r.push(e.index.array.buffer),self.postMessage({type:"decode",id:n.id,geometry:e},r)}catch(e){console.error(e),self.postMessage({type:"error",id:n.id,error:e.message})}finally{t.destroy(o),t.destroy(a)}}))}}}var fde=function(e){return URL.createObjectURL(new Blob([e],{type:"text/javascript"}))},dTt=function(e){return new Worker(e)};try{URL.revokeObjectURL(fde(""))}catch(e){fde=function(e){return"data:application/javascript;charset=UTF-8,"+encodeURI(e)},dTt=function(e){return new Worker(e,{type:"module"})}}var Hl=Uint8Array,Pf=Uint16Array,ck=Uint32Array,mde=new Hl([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]),gde=new Hl([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]),fTt=new Hl([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),vde=function(e,t){for(var i=new Pf(31),r=0;r<31;++r)i[r]=t+=1<>>1|(21845&ki)<<1))>>>2|(13107&Gp)<<2))>>>4|(3855&Gp)<<4,uk[ki]=((65280&Gp)>>>8|(255&Gp)<<8)>>>1;var Gp,rI=function(e,t,i){for(var r=e.length,n=0,s=new Pf(t);n>>l]=h}else for(a=new Pf(r),n=0;n>>15-e[n]);return a},iI=new Hl(288);for(ki=0;ki<144;++ki)iI[ki]=8;for(ki=144;ki<256;++ki)iI[ki]=9;for(ki=256;ki<280;++ki)iI[ki]=7;for(ki=280;ki<288;++ki)iI[ki]=8;var ki,bde=new Hl(32);for(ki=0;ki<32;++ki)bde[ki]=5;var vTt=rI(iI,9,1),yTt=rI(bde,5,1),ok=function(e){for(var t=e[0],i=1;it&&(t=e[i]);return t},Lc=function(e,t,i){var r=t/8|0;return(e[r]|e[r+1]<<8)>>(7&t)&i},lk=function(e,t){var i=t/8|0;return(e[i]|e[i+1]<<8|e[i+2]<<16)>>(7&t)},TTt=function(e){return(e/8|0)+(7&e&&1)},ETt=function(e,t,i){(null==t||t<0)&&(t=0),(null==i||i>e.length)&&(i=e.length);var r=new(e instanceof Pf?Pf:e instanceof ck?ck:Hl)(i-t);return r.set(e.subarray(t,i)),r},bTt=function(e,t,i){var r=e.length;if(!r||i&&!i.l&&r<5)return t||new Hl(0);var n=!t||i,s=!i||i.i;i||(i={}),t||(t=new Hl(3*r));var a=function(e){var i=t.length;if(e>i){var r=new Hl(Math.max(2*i,e));r.set(t),t=r}},o=i.f||0,l=i.p||0,h=i.b||0,u=i.l,c=i.d,p=i.m,d=i.n,f=8*r;do{if(!u){i.f=o=Lc(e,l,1);var m=Lc(e,l+1,3);if(l+=3,!m){var g=e[(M=TTt(l)+4)-4]|e[M-3]<<8,y=M+g;if(y>r){if(s)throw"unexpected EOF";break}n&&a(h+g),t.set(e.subarray(M,y),h),i.b=h+=g,i.p=l=8*y;continue}if(1==m)u=vTt,c=yTt,p=9,d=5;else{if(2!=m)throw"invalid block type";var v=Lc(e,l,31)+257,T=Lc(e,l+10,15)+4,x=v+Lc(e,l+5,31)+1;l+=14;for(var b=new Hl(x),_=new Hl(19),E=0;E>>4)<16)b[E++]=M;else{var D=0,O=0;for(16==M?(O=3+Lc(e,l,3),l+=2,D=b[E-1]):17==M?(O=3+Lc(e,l,7),l+=3):18==M&&(O=11+Lc(e,l,127),l+=7);O--;)b[E++]=D}}var R=b.subarray(0,v),C=b.subarray(v);p=ok(R),d=ok(C),u=rI(R,p,1),c=rI(C,d,1)}if(l>f){if(s)throw"unexpected EOF";break}}n&&a(h+131072);for(var N=(1<>>4;if((l+=15&D)>f){if(s)throw"unexpected EOF";break}if(!D)throw"invalid length/literal";if(F<256)t[h++]=F;else{if(256==F){L=l,u=null;break}var U=F-254;if(F>264){var k=mde[E=F-257];U=Lc(e,l,(1<>>4;if(!B)throw"invalid distance";l+=15&B;C=gTt[H];if(H>3){k=gde[H];C+=lk(e,l)&(1<f){if(s)throw"unexpected EOF";break}n&&a(h+131072);for(var G=h+U;h>>4>7||(e[0]<<8|e[1])%31)throw"invalid zlib data";if(32&e[1])throw"invalid zlib data: preset dictionaries not supported"};function xde(e,t){return bTt((ITt(e),e.subarray(2,-4)),t)}var _Tt="undefined"!=typeof TextDecoder&&new TextDecoder,STt=0;try{_Tt.decode(xTt,{stream:!0}),STt=1}catch(e){}function Ide(e,t,i){let r=i.length-e-1;if(t>=i[r])return r-1;if(t<=i[e])return e;let n=e,s=r,a=Math.floor((n+s)/2);for(;t=i[a+1];)t=s&&(l[n][0]=l[t][0]/o[u+1][h],r=l[n][0]*o[h][u]);let c=e-1<=u?s-1:i-e;for(let e=h>=-1?1:-h;e<=c;++e)l[n][e]=(l[t][e]-l[t][e-1])/o[u+1][h+e],r+=l[n][e]*o[h+e][u];e<=u&&(l[n][s]=-l[t][s-1]/o[u+1][e],r+=l[n][s]*o[e][u]),a[s][e]=r;let p=t;t=n,n=p}}let u=i;for(let e=1;e<=r;++e){for(let t=0;t<=i;++t)a[e][t]*=u;u*=i-e}return a}function DTt(e,t,i,r,n){let s=n0,s="string"==typeof n.Content&&""!==n.Content;if(e||s){let e=this.parseImage(i[r]);t[n.RelativeFilename||n.Filename]=e}}}}for(let i in e){let r=e[i];void 0!==t[r]?e[i]=t[r]:e[i]=e[i].split("\\").pop()}return e}parseImage(e){let t,i=e.Content,r=e.RelativeFilename||e.Filename,n=r.slice(r.lastIndexOf(".")+1).toLowerCase();switch(n){case"bmp":t="image/bmp";break;case"jpg":case"jpeg":t="image/jpeg";break;case"png":t="image/png";break;case"tif":t="image/tiff";break;case"tga":null===this.manager.getHandler(".tga")&&console.warn("FBXLoader: TGA loader not found, skipping ",r),t="image/tga";break;default:return void console.warn('FBXLoader: Image type "'+n+'" is not supported.')}if("string"==typeof i)return"data:"+t+";base64,"+i;{let e=new Uint8Array(i);return window.URL.createObjectURL(new Blob([e],{type:t}))}}parseTextures(e){let t=new Map;if("Texture"in hi.Objects){let i=hi.Objects.Texture;for(let r in i){let n=this.parseTexture(i[r],e);t.set(parseInt(r),n)}}return t}parseTexture(e,t){let i=this.loadTexture(e,t);i.ID=e.id,i.name=e.attrName;let r=e.WrapModeU,n=e.WrapModeV,s=void 0!==r?r.value:0,a=void 0!==n?n.value:0;if(i.wrapS=0===s?vn:gn,i.wrapT=0===a?vn:gn,"Scaling"in e){let t=e.Scaling.value;i.repeat.x=t[0],i.repeat.y=t[1]}if("Translation"in e){let t=e.Translation.value;i.offset.x=t[0],i.offset.y=t[1]}return i}loadTexture(e,t){let i,r=this.textureLoader.path,n=is.get(e.id).children;void 0!==n&&n.length>0&&void 0!==t[n[0].ID]&&(i=t[n[0].ID],(0===i.indexOf("blob:")||0===i.indexOf("data:"))&&this.textureLoader.setPath(void 0));let s,a=e.FileName.slice(-3).toLowerCase();if("tga"===a){let t=this.manager.getHandler(".tga");null===t?(console.warn("FBXLoader: TGA loader not found, creating placeholder texture for",e.RelativeFilename),s=new Bi):(t.setPath(this.textureLoader.path),s=t.load(i))}else"psd"===a?(console.warn("FBXLoader: PSD textures are not supported, creating placeholder texture for",e.RelativeFilename),s=new Bi):s=this.textureLoader.load(i);return this.textureLoader.setPath(r),s}parseMaterials(e){let t=new Map;if("Material"in hi.Objects){let i=hi.Objects.Material;for(let r in i){let n=this.parseMaterial(i[r],e);null!==n&&t.set(parseInt(r),n)}}return t}parseMaterial(e,t){let i=e.id,r=e.attrName,n=e.ShadingModel;if("object"==typeof n&&(n=n.value),!is.has(i))return null;let s,a=this.parseParameters(e,t,i);switch(n.toLowerCase()){case"phong":s=new Es;break;case"lambert":s=new io;break;default:console.warn('THREE.FBXLoader: unknown material type "%s". Defaulting to MeshPhongMaterial.',n),s=new Es}return s.setValues(a),s.name=r,s}parseParameters(e,t,i){let r={};e.BumpFactor&&(r.bumpScale=e.BumpFactor.value),e.Diffuse?r.color=(new je).fromArray(e.Diffuse.value):e.DiffuseColor&&("Color"===e.DiffuseColor.type||"ColorRGB"===e.DiffuseColor.type)&&(r.color=(new je).fromArray(e.DiffuseColor.value)),e.DisplacementFactor&&(r.displacementScale=e.DisplacementFactor.value),e.Emissive?r.emissive=(new je).fromArray(e.Emissive.value):e.EmissiveColor&&("Color"===e.EmissiveColor.type||"ColorRGB"===e.EmissiveColor.type)&&(r.emissive=(new je).fromArray(e.EmissiveColor.value)),e.EmissiveFactor&&(r.emissiveIntensity=parseFloat(e.EmissiveFactor.value)),e.Opacity&&(r.opacity=parseFloat(e.Opacity.value)),r.opacity<1&&(r.transparent=!0),e.ReflectionFactor&&(r.reflectivity=e.ReflectionFactor.value),e.Shininess&&(r.shininess=e.Shininess.value),e.Specular?r.specular=(new je).fromArray(e.Specular.value):e.SpecularColor&&"Color"===e.SpecularColor.type&&(r.specular=(new je).fromArray(e.SpecularColor.value));let n=this;return is.get(i).children.forEach((function(e){let i=e.relationship;switch(i){case"Bump":r.bumpMap=n.getTexture(t,e.ID);break;case"Maya|TEX_ao_map":r.aoMap=n.getTexture(t,e.ID);break;case"DiffuseColor":case"Maya|TEX_color_map":r.map=n.getTexture(t,e.ID),void 0!==r.map&&(r.map.encoding=gr);break;case"DisplacementColor":r.displacementMap=n.getTexture(t,e.ID);break;case"EmissiveColor":r.emissiveMap=n.getTexture(t,e.ID),void 0!==r.emissiveMap&&(r.emissiveMap.encoding=gr);break;case"NormalMap":case"Maya|TEX_normal_map":r.normalMap=n.getTexture(t,e.ID);break;case"ReflectionColor":r.envMap=n.getTexture(t,e.ID),void 0!==r.envMap&&(r.envMap.mapping=Tg,r.envMap.encoding=gr);break;case"SpecularColor":r.specularMap=n.getTexture(t,e.ID),void 0!==r.specularMap&&(r.specularMap.encoding=gr);break;case"TransparentColor":case"TransparencyFactor":r.alphaMap=n.getTexture(t,e.ID),r.transparent=!0;break;default:console.warn("THREE.FBXLoader: %s map is not supported in three.js, skipping texture.",i)}})),r}getTexture(e,t){return"LayeredTexture"in hi.Objects&&t in hi.Objects.LayeredTexture&&(console.warn("THREE.FBXLoader: layered textures are not supported in three.js. Discarding all but first layer."),t=is.get(t).children[0].ID),e.get(t)}parseDeformers(){let e={},t={};if("Deformer"in hi.Objects){let i=hi.Objects.Deformer;for(let r in i){let n=i[r],s=is.get(parseInt(r));if("Skin"===n.attrType){let t=this.parseSkeleton(s,i);t.ID=r,s.parents.length>1&&console.warn("THREE.FBXLoader: skeleton attached to more than one geometry is not supported."),t.geometryID=s.parents[0].ID,e[r]=t}else if("BlendShape"===n.attrType){let e={id:r};e.rawTargets=this.parseMorphTargets(s,i),e.id=r,s.parents.length>1&&console.warn("THREE.FBXLoader: morph target attached to more than one geometry is not supported."),t[r]=e}}}return{skeletons:e,morphTargets:t}}parseSkeleton(e,t){let i=[];return e.children.forEach((function(e){let r=t[e.ID];if("Cluster"!==r.attrType)return;let n={ID:e.ID,indices:[],weights:[],transformLink:(new Be).fromArray(r.TransformLink.a)};"Indexes"in r&&(n.indices=r.Indexes.a,n.weights=r.Weights.a),i.push(n)})),{rawBones:i,bones:[]}}parseMorphTargets(e,t){let i=[];for(let r=0;r1?s=a:a.length>0?s=a[0]:(s=new Es({color:13421772}),a.push(s)),"color"in n.attributes&&a.forEach((function(e){e.vertexColors=!0})),n.FBX_Deformer?(r=new Bu(n,s),r.normalizeSkinWeights()):r=new rt(n,s),r}createCurve(e,t){let i=e.children.reduce((function(e,i){return t.has(i.ID)&&(e=t.get(i.ID)),e}),null),r=new vr({color:3342591,linewidth:1});return new Ir(i,r)}getTransformData(e,t){let i={};"InheritType"in t&&(i.inheritType=parseInt(t.InheritType.value)),i.eulerOrder="RotationOrder"in t?Dde(t.RotationOrder.value):"ZYX","Lcl_Translation"in t&&(i.translation=t.Lcl_Translation.value),"PreRotation"in t&&(i.preRotation=t.PreRotation.value),"Lcl_Rotation"in t&&(i.rotation=t.Lcl_Rotation.value),"PostRotation"in t&&(i.postRotation=t.PostRotation.value),"Lcl_Scaling"in t&&(i.scale=t.Lcl_Scaling.value),"ScalingOffset"in t&&(i.scalingOffset=t.ScalingOffset.value),"ScalingPivot"in t&&(i.scalingPivot=t.ScalingPivot.value),"RotationOffset"in t&&(i.rotationOffset=t.RotationOffset.value),"RotationPivot"in t&&(i.rotationPivot=t.RotationPivot.value),e.userData.transformData=i}setLookAtProperties(e,t){"LookAtProperty"in t&&is.get(e.ID).children.forEach((function(t){if("LookAtProperty"===t.relationship){let i=hi.Objects.Model[t.ID];if("Lcl_Translation"in i){let t=i.Lcl_Translation.value;void 0!==e.target?(e.target.position.fromArray(t),ho.add(e.target)):e.lookAt((new A).fromArray(t))}}}))}bindSkeleton(e,t,i){let r=this.parsePoseNodes();for(let n in e){let s=e[n];is.get(parseInt(s.ID)).parents.forEach((function(e){if(t.has(e.ID)){let t=e.ID;is.get(t).parents.forEach((function(e){i.has(e.ID)&&i.get(e.ID).bind(new wl(s.bones),r[e.ID])}))}}))}}parsePoseNodes(){let e={};if("Pose"in hi.Objects){let t=hi.Objects.Pose;for(let i in t)if("BindPose"===t[i].attrType&&t[i].NbPoseNodes>0){let r=t[i].PoseNode;Array.isArray(r)?r.forEach((function(t){e[t.Node]=(new Be).fromArray(t.Matrix.a)})):e[r.Node]=(new Be).fromArray(r.Matrix.a)}}return e}createAmbientLight(){if("GlobalSettings"in hi&&"AmbientColor"in hi.GlobalSettings){let e=hi.GlobalSettings.AmbientColor.value,t=e[0],i=e[1],r=e[2];if(0!==t||0!==i||0!==r){let e=new je(t,i,r);ho.add(new Cl(e,1))}}}},fk=class{constructor(){this.negativeMaterialIndices=!1}parse(e){let t=new Map;if("Geometry"in hi.Objects){let i=hi.Objects.Geometry;for(let r in i){let n=is.get(parseInt(r)),s=this.parseGeometry(n,i[r],e);t.set(parseInt(r),s)}}return!0===this.negativeMaterialIndices&&console.warn("THREE.FBXLoader: The FBX file contains invalid (negative) material indices. The asset might not render as expected."),t}parseGeometry(e,t,i){switch(t.attrType){case"Mesh":return this.parseMeshGeometry(e,t,i);case"NurbsCurve":return this.parseNurbsGeometry(t)}}parseMeshGeometry(e,t,i){let r=i.skeletons,n=[],s=e.parents.map((function(e){return hi.Objects.Model[e.ID]}));if(0===s.length)return;let a=e.children.reduce((function(e,t){return void 0!==r[t.ID]&&(e=r[t.ID]),e}),null);e.children.forEach((function(e){void 0!==i.morphTargets[e.ID]&&n.push(i.morphTargets[e.ID])}));let o=s[0],l={};"RotationOrder"in o&&(l.eulerOrder=Dde(o.RotationOrder.value)),"InheritType"in o&&(l.inheritType=parseInt(o.InheritType.value)),"GeometricTranslation"in o&&(l.translation=o.GeometricTranslation.value),"GeometricRotation"in o&&(l.rotation=o.GeometricRotation.value),"GeometricScaling"in o&&(l.scale=o.GeometricScaling.value);let h=Mde(l);return this.genGeometry(t,a,n,h)}genGeometry(e,t,i,r){let n=new lt;e.attrName&&(n.name=e.attrName);let s=this.parseGeoNode(e,t),a=this.genBuffers(s),o=new dt(a.vertex,3);if(o.applyMatrix4(r),n.setAttribute("position",o),a.colors.length>0&&n.setAttribute("color",new dt(a.colors,3)),t&&(n.setAttribute("skinIndex",new Eg(a.weightsIndices,4)),n.setAttribute("skinWeight",new dt(a.vertexWeights,4)),n.FBX_Deformer=t),a.normal.length>0){let e=(new Ni).getNormalMatrix(r),t=new dt(a.normal,3);t.applyNormalMatrix(e),n.setAttribute("normal",t)}if(a.uvs.forEach((function(e,t){let i="uv"+(t+1).toString();0===t&&(i="uv"),n.setAttribute(i,new dt(a.uvs[t],2))})),s.material&&"AllSame"!==s.material.mappingType){let e=a.materialIndex[0],t=0;if(a.materialIndex.forEach((function(i,r){i!==e&&(n.addGroup(t,r-t,e),e=i,t=r)})),n.groups.length>0){let t=n.groups[n.groups.length-1],i=t.start+t.count;i!==a.materialIndex.length&&n.addGroup(i,a.materialIndex.length-i,e)}0===n.groups.length&&n.addGroup(0,a.materialIndex.length,a.materialIndex[0])}return this.addMorphTargets(n,e,i,r),n}parseGeoNode(e,t){let i={};if(i.vertexPositions=void 0!==e.Vertices?e.Vertices.a:[],i.vertexIndices=void 0!==e.PolygonVertexIndex?e.PolygonVertexIndex.a:[],e.LayerElementColor&&(i.color=this.parseVertexColors(e.LayerElementColor[0])),e.LayerElementMaterial&&(i.material=this.parseMaterialIndices(e.LayerElementMaterial[0])),e.LayerElementNormal&&(i.normal=this.parseNormals(e.LayerElementNormal[0])),e.LayerElementUV){i.uv=[];let t=0;for(;e.LayerElementUV[t];)e.LayerElementUV[t].UV&&i.uv.push(this.parseUVs(e.LayerElementUV[t])),t++}return i.weightTable={},null!==t&&(i.skeleton=t,t.rawBones.forEach((function(e,t){e.indices.forEach((function(r,n){void 0===i.weightTable[r]&&(i.weightTable[r]=[]),i.weightTable[r].push({id:t,weight:e.weights[n]})}))}))),i}genBuffers(e){let t={vertex:[],normal:[],colors:[],uvs:[],materialIndex:[],vertexWeights:[],weightsIndices:[]},i=0,r=0,n=!1,s=[],a=[],o=[],l=[],h=[],u=[],c=this;return e.vertexIndices.forEach((function(p,d){let f,m=!1;p<0&&(p^=-1,m=!0);let g=[],y=[];if(s.push(3*p,3*p+1,3*p+2),e.color){let t=oA(d,i,p,e.color);o.push(t[0],t[1],t[2])}if(e.skeleton){if(void 0!==e.weightTable[p]&&e.weightTable[p].forEach((function(e){y.push(e.weight),g.push(e.id)})),y.length>4){n||(console.warn("THREE.FBXLoader: Vertex has more than 4 skinning weights assigned to vertex. Deleting additional weights."),n=!0);let e=[0,0,0,0],t=[0,0,0,0];y.forEach((function(i,r){let n=i,s=g[r];t.forEach((function(t,i,r){if(n>t){r[i]=n,n=t;let a=e[i];e[i]=s,s=a}}))})),g=e,y=t}for(;y.length<4;)y.push(0),g.push(0);for(let e=0;e<4;++e)h.push(y[e]),u.push(g[e])}if(e.normal){let t=oA(d,i,p,e.normal);a.push(t[0],t[1],t[2])}e.material&&"AllSame"!==e.material.mappingType&&(f=oA(d,i,p,e.material)[0],f<0&&(c.negativeMaterialIndices=!0,f=0)),e.uv&&e.uv.forEach((function(e,t){let r=oA(d,i,p,e);void 0===l[t]&&(l[t]=[]),l[t].push(r[0]),l[t].push(r[1])})),r++,m&&(r>4&&console.warn("THREE.FBXLoader: Polygons with more than four sides are not supported. Make sure to triangulate the geometry during export."),c.genFace(t,e,s,f,a,o,l,h,u,r),i++,r=0,s=[],a=[],o=[],l=[],h=[],u=[])})),t}genFace(e,t,i,r,n,s,a,o,l,h){for(let u=2;u1&&console.warn("THREE.FBXLoader: Encountered an animation stack with multiple layers, this is currently not supported. Ignoring subsequent layers.");let s=e.get(n[0].ID);i[r]={name:t[r].attrName,layer:s}}return i}addClip(e){let t=[],i=this;return e.layer.forEach((function(e){t=t.concat(i.generateTracks(e))})),new so(e.name,-1,t)}generateTracks(e){let t=[],i=new A,r=new Hr,n=new A;if(e.transform&&e.transform.decompose(i,r,n),i=i.toArray(),r=(new xr).setFromQuaternion(r,e.eulerOrder).toArray(),n=n.toArray(),void 0!==e.T&&Object.keys(e.T.curves).length>0){let r=this.generateVectorTrack(e.modelName,e.T.curves,i,"position");void 0!==r&&t.push(r)}if(void 0!==e.R&&Object.keys(e.R.curves).length>0){let i=this.generateRotationTrack(e.modelName,e.R.curves,r,e.preRotation,e.postRotation,e.eulerOrder);void 0!==i&&t.push(i)}if(void 0!==e.S&&Object.keys(e.S.curves).length>0){let i=this.generateVectorTrack(e.modelName,e.S.curves,n,"scale");void 0!==i&&t.push(i)}if(void 0!==e.DeformPercent){let i=this.generateMorphTrack(e);void 0!==i&&t.push(i)}return t}generateVectorTrack(e,t,i,r){let n=this.getTimesForAllAxes(t),s=this.getKeyframeTrackValues(n,t,i);return new no(e+"."+r,n,s)}generateRotationTrack(e,t,i,r,n,s){void 0!==t.x&&(this.interpolateRotations(t.x),t.x.values=t.x.values.map(_r.degToRad)),void 0!==t.y&&(this.interpolateRotations(t.y),t.y.values=t.y.values.map(_r.degToRad)),void 0!==t.z&&(this.interpolateRotations(t.z),t.z.values=t.z.values.map(_r.degToRad));let a=this.getTimesForAllAxes(t),o=this.getKeyframeTrackValues(a,t,i);void 0!==r&&((r=r.map(_r.degToRad)).push(s),r=(new xr).fromArray(r),r=(new Hr).setFromEuler(r)),void 0!==n&&((n=n.map(_r.degToRad)).push(s),n=(new xr).fromArray(n),n=(new Hr).setFromEuler(n).invert());let l=new Hr,h=new xr,u=[];for(let e=0;e1){let e=1,i=t[0];for(let r=1;r=180){let s=n/180,a=r/s,o=i+a,l=e.times[t-1],h=(e.times[t]-l)/s,u=l+h,c=[],p=[];for(;u1&&(i=e[1].replace(/^(\w+)::/,""),r=e[2]),{id:t,name:i,type:r}}parseNodeProperty(e,t,i){let r=t[1].replace(/^"/,"").replace(/"$/,"").trim(),n=t[2].replace(/^"/,"").replace(/"$/,"").trim();"Content"===r&&","===n&&(n=i.replace(/"/g,"").replace(/,$/,"").trim());let s=this.getCurrentNode();if("Properties70"!==s.name){if("C"===r){let e=n.split(",").slice(1),t=parseInt(e[0]),i=parseInt(e[1]),a=n.split(",").slice(3);a=a.map((function(e){return e.trim().replace(/^"/,"")})),r="connections",n=[t,i],HTt(n,a),void 0===s[r]&&(s[r]=[])}"Node"===r&&(s.id=n),r in s&&Array.isArray(s[r])?s[r].push(n):"a"!==r?s[r]=n:s.a=n,this.setCurrentProp(s,r),"a"===r&&","!==n.slice(-1)&&(s.a=pk(n))}else this.parseNodeSpecialProperty(e,r,n)}parseNodePropertyContinued(e){let t=this.getCurrentNode();t.a+=e,","!==e.slice(-1)&&(t.a=pk(t.a))}parseNodeSpecialProperty(e,t,i){let r=i.split('",').map((function(e){return e.trim().replace(/^\"/,"").replace(/\s/,"_")})),n=r[0],s=r[1],a=r[2],o=r[3],l=r[4];switch(s){case"int":case"enum":case"bool":case"ULongLong":case"double":case"Number":case"FieldOfView":l=parseFloat(l);break;case"Color":case"ColorRGB":case"Vector3D":case"Lcl_Translation":case"Lcl_Rotation":case"Lcl_Scaling":l=pk(l)}this.getPrevNode()[n]={type:s,type2:a,flag:o,value:l},this.setCurrentProp(this.getPrevNode(),n)}},vk=class{parse(e){let t=new cA(e);t.skip(23);let i=t.getUint32();if(i<6400)throw new Error("THREE.FBXLoader: FBX version not supported, FileVersion: "+i);let r=new uA;for(;!this.endOfContent(t);){let e=this.parseNode(t,i);null!==e&&r.add(e.name,e)}return r}endOfContent(e){return e.size()%16==0?(e.getOffset()+160+16&-16)>=e.size():e.getOffset()+160+16>=e.size()}parseNode(e,t){let i={},r=t>=7500?e.getUint64():e.getUint32(),n=t>=7500?e.getUint64():e.getUint32();t>=7500?e.getUint64():e.getUint32();let s=e.getUint8(),a=e.getString(s);if(0===r)return null;let o=[];for(let t=0;t0?o[0]:"",h=o.length>1?o[1]:"",u=o.length>2?o[2]:"";for(i.singleProperty=1===n&&e.getOffset()===r;r>e.getOffset();){let r=this.parseNode(e,t);null!==r&&this.parseSubNode(a,i,r)}return i.propertyList=o,"number"==typeof l&&(i.id=l),""!==h&&(i.attrName=h),""!==u&&(i.attrType=u),""!==a&&(i.name=a),i}parseSubNode(e,t,i){if(!0===i.singleProperty){let e=i.propertyList[0];Array.isArray(e)?(t[i.name]=i,i.a=e):t[i.name]=e}else if("Connections"===e&&"C"===i.name){let e=[];i.propertyList.forEach((function(t,i){0!==i&&e.push(t)})),void 0===t.connections&&(t.connections=[]),t.connections.push(e)}else if("Properties70"===i.name)Object.keys(i).forEach((function(e){t[e]=i[e]}));else if("Properties70"===e&&"P"===i.name){let e,r=i.propertyList[0],n=i.propertyList[1],s=i.propertyList[2],a=i.propertyList[3];0===r.indexOf("Lcl ")&&(r=r.replace("Lcl ","Lcl_")),0===n.indexOf("Lcl ")&&(n=n.replace("Lcl ","Lcl_")),e="Color"===n||"ColorRGB"===n||"Vector"===n||"Vector3D"===n||0===n.indexOf("Lcl_")?[i.propertyList[4],i.propertyList[5],i.propertyList[6]]:i.propertyList[4],t[r]={type:n,type2:s,flag:a,value:e}}else void 0===t[i.name]?"number"==typeof i.id?(t[i.name]={},t[i.name][i.id]=i):t[i.name]=i:"PoseNode"===i.name?(Array.isArray(t[i.name])||(t[i.name]=[t[i.name]]),t[i.name].push(i)):void 0===t[i.name][i.id]&&(t[i.name][i.id]=i)}parseProperty(e){let t,i=e.getString(1);switch(i){case"C":return e.getBoolean();case"D":return e.getFloat64();case"F":return e.getFloat32();case"I":return e.getInt32();case"L":return e.getInt64();case"R":return t=e.getUint32(),e.getArrayBuffer(t);case"S":return t=e.getUint32(),e.getString(t);case"Y":return e.getInt16();case"b":case"c":case"d":case"f":case"i":case"l":let r=e.getUint32(),n=e.getUint32(),s=e.getUint32();if(0===n)switch(i){case"b":case"c":return e.getBooleanArray(r);case"d":return e.getFloat64Array(r);case"f":return e.getFloat32Array(r);case"i":return e.getInt32Array(r);case"l":return e.getInt64Array(r)}let a=xde(new Uint8Array(e.getArrayBuffer(s))),o=new cA(a.buffer);switch(i){case"b":case"c":return o.getBooleanArray(r);case"d":return o.getFloat64Array(r);case"f":return o.getFloat32Array(r);case"i":return o.getInt32Array(r);case"l":return o.getInt64Array(r)}break;default:throw new Error("THREE.FBXLoader: Unknown property type "+i)}}},cA=class{constructor(e,t){this.dv=new DataView(e),this.offset=0,this.littleEndian=void 0===t||t,this._textDecoder=new TextDecoder}getOffset(){return this.offset}size(){return this.dv.buffer.byteLength}skip(e){this.offset+=e}getBoolean(){return 1==(1&this.getUint8())}getBooleanArray(e){let t=[];for(let i=0;i=0&&(i=new Uint8Array(this.dv.buffer,t,r)),this._textDecoder.decode(i)}},uA=class{add(e,t){this[e]=t}};function PTt(e){let t="Kaydara FBX Binary \0";return e.byteLength>=t.length&&t===Cde(e,0,t.length)}function NTt(e){let t=["K","a","y","d","a","r","a","\\","F","B","X","\\","B","i","n","a","r","y","\\","\\"],i=0;function r(t){let r=e[t-1];return e=e.slice(i+t),i++,r}for(let e=0;e=2.0 are supported.")));let l=new Gk(n,{path:t||this.resourcePath||"",crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});l.fileLoader.setRequestHeader(this.requestHeader);for(let e=0;e=0&&void 0===a[t]&&console.warn('THREE.GLTFLoader: Unknown extension "'+t+'".')}}l.setExtensions(s),l.setPlugins(a),l.parse(i,r)}parseAsync(e,t){let i=this;return new Promise((function(r,n){i.parse(e,t,r,n)}))}};function GTt(){let e={};return{get:function(t){return e[t]},add:function(t,i){e[t]=i},remove:function(t){delete e[t]},removeAll:function(){e={}}}}var Oi={KHR_BINARY_GLTF:"KHR_binary_glTF",KHR_DRACO_MESH_COMPRESSION:"KHR_draco_mesh_compression",KHR_LIGHTS_PUNCTUAL:"KHR_lights_punctual",KHR_MATERIALS_CLEARCOAT:"KHR_materials_clearcoat",KHR_MATERIALS_IOR:"KHR_materials_ior",KHR_MATERIALS_SHEEN:"KHR_materials_sheen",KHR_MATERIALS_SPECULAR:"KHR_materials_specular",KHR_MATERIALS_TRANSMISSION:"KHR_materials_transmission",KHR_MATERIALS_IRIDESCENCE:"KHR_materials_iridescence",KHR_MATERIALS_UNLIT:"KHR_materials_unlit",KHR_MATERIALS_VOLUME:"KHR_materials_volume",KHR_TEXTURE_BASISU:"KHR_texture_basisu",KHR_TEXTURE_TRANSFORM:"KHR_texture_transform",KHR_MESH_QUANTIZATION:"KHR_mesh_quantization",KHR_MATERIALS_EMISSIVE_STRENGTH:"KHR_materials_emissive_strength",EXT_TEXTURE_WEBP:"EXT_texture_webp",EXT_MESHOPT_COMPRESSION:"EXT_meshopt_compression",EXT_MESH_GPU_INSTANCING:"EXT_mesh_gpu_instancing"},Ek=class{constructor(e){this.parser=e,this.name=Oi.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){let e=this.parser,t=this.parser.json.nodes||[];for(let i=0,r=t.length;i=0)throw new Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures");return null}return t.loadTextureImage(e,n.source,s)}},Ak=class{constructor(e){this.parser=e,this.name=Oi.EXT_TEXTURE_WEBP,this.isSupported=null}loadTexture(e){let t=this.name,i=this.parser,r=i.json,n=r.textures[e];if(!n.extensions||!n.extensions[t])return null;let s=n.extensions[t],a=r.images[s.source],o=i.textureLoader;if(a.uri){let e=i.options.manager.getHandler(a.uri);null!==e&&(o=e)}return this.detectSupport().then((function(n){if(n)return i.loadTextureImage(e,s.source,o);if(r.extensionsRequired&&r.extensionsRequired.indexOf(t)>=0)throw new Error("THREE.GLTFLoader: WebP required by asset but unsupported.");return i.loadTexture(e)}))}detectSupport(){return this.isSupported||(this.isSupported=new Promise((function(e){let t=new Image;t.src="data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA",t.onload=t.onerror=function(){e(1===t.height)}}))),this.isSupported}},Ok=class{constructor(e){this.name=Oi.EXT_MESHOPT_COMPRESSION,this.parser=e}loadBufferView(e){let t=this.parser.json,i=t.bufferViews[e];if(i.extensions&&i.extensions[this.name]){let e=i.extensions[this.name],r=this.parser.getDependency("buffer",e.buffer),n=this.parser.options.meshoptDecoder;if(!n||!n.supported){if(t.extensionsRequired&&t.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files");return null}return r.then((function(t){let i=e.byteOffset||0,r=e.byteLength||0,s=e.count,a=e.byteStride,o=new Uint8Array(t,i,r);return n.decodeGltfBufferAsync?n.decodeGltfBufferAsync(s,a,o,e.mode,e.filter).then((function(e){return e.buffer})):n.ready.then((function(){let t=new ArrayBuffer(s*a);return n.decodeGltfBuffer(new Uint8Array(t),s,a,o,e.mode,e.filter),t}))}))}return null}},Pk=class{constructor(e){this.name=Oi.EXT_MESH_GPU_INSTANCING,this.parser=e}createNodeMesh(e){let t=this.parser.json,i=t.nodes[e];if(!i.extensions||!i.extensions[this.name]||void 0===i.mesh)return null;let r=t.meshes[i.mesh];for(let e of r.primitives)if(e.mode!==Ul.TRIANGLES&&e.mode!==Ul.TRIANGLE_STRIP&&e.mode!==Ul.TRIANGLE_FAN&&void 0!==e.mode)return null;let n=i.extensions[this.name].attributes,s=[],a={};for(let e in n)s.push(this.parser.getDependency("accessor",n[e]).then((t=>(a[e]=t,a[e]))));return s.length<1?null:(s.push(this.parser.createNodeMesh(e)),Promise.all(s).then((e=>{let t=e.pop(),i=t.isGroup?t.children:[t],r=e[0].count,n=[];for(let e of i){let t=new Be,i=new A,s=new Hr,o=new A(1,1,1),l=new rn(e.geometry,e.material,r);for(let e=0;e0||0===e.search(/^data\:image\/jpeg/)?"image/jpeg":e.search(/\.webp($|\?)/i)>0||0===e.search(/^data\:image\/webp/)?"image/webp":"image/png"}var $Tt=new Be,Gk=class{constructor(e={},t={}){this.json=e,this.extensions={},this.plugins={},this.options=t,this.cache=new GTt,this.associations=new Map,this.primitiveCache={},this.meshCache={refs:{},uses:{}},this.cameraCache={refs:{},uses:{}},this.lightCache={refs:{},uses:{}},this.sourceCache={},this.textureCache={},this.nodeNamesUsed={};let i=!1,r=!1,n=-1;"undefined"!=typeof navigator&&(i=!0===/^((?!chrome|android).)*safari/i.test(navigator.userAgent),r=navigator.userAgent.indexOf("Firefox")>-1,n=r?navigator.userAgent.match(/Firefox\/([0-9]+)\./)[1]:-1),"undefined"==typeof createImageBitmap||i||r&&n<98?this.textureLoader=new bs(this.options.manager):this.textureLoader=new xx(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new ui(this.options.manager),this.fileLoader.setResponseType("arraybuffer"),"use-credentials"===this.options.crossOrigin&&this.fileLoader.setWithCredentials(!0)}setExtensions(e){this.extensions=e}setPlugins(e){this.plugins=e}parse(e,t){let i=this,r=this.json,n=this.extensions;this.cache.removeAll(),this._invokeAll((function(e){return e._markDefs&&e._markDefs()})),Promise.all(this._invokeAll((function(e){return e.beforeRoot&&e.beforeRoot()}))).then((function(){return Promise.all([i.getDependencies("scene"),i.getDependencies("animation"),i.getDependencies("camera")])})).then((function(t){let s={scene:t[0][r.scene||0],scenes:t[0],animations:t[1],cameras:t[2],asset:r.asset,parser:i,userData:{}};sI(n,s,r),Lf(s,r),Promise.all(i._invokeAll((function(e){return e.afterRoot&&e.afterRoot(s)}))).then((function(){e(s)}))})).catch(t)}_markDefs(){let e=this.json.nodes||[],t=this.json.skins||[],i=this.json.meshes||[];for(let i=0,r=t.length;i{let i=this.associations.get(e);null!=i&&this.associations.set(t,i);for(let[i,r]of e.children.entries())n(r,t.children[i])};return n(i,r),r.name+="_instance_"+e.uses[t]++,r}_invokeOne(e){let t=Object.values(this.plugins);t.push(this);for(let i=0;i=2&&s.setY(t,c[e*o+1]),o>=3&&s.setZ(t,c[e*o+2]),o>=4&&s.setW(t,c[e*o+3]),o>=5)throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}}return s}))}loadTexture(e){let t=this.json,i=this.options,r=t.textures[e].source,n=t.images[r],s=this.textureLoader;if(n.uri){let e=i.manager.getHandler(n.uri);null!==e&&(s=e)}return this.loadTextureImage(e,r,s)}loadTextureImage(e,t,i){let r=this,n=this.json,s=n.textures[e],a=n.images[t],o=(a.uri||a.bufferView)+":"+s.sampler;if(this.textureCache[o])return this.textureCache[o];let l=this.loadImageSource(t,i).then((function(t){t.flipY=!1,t.name=s.name||a.name||"";let i=(n.samplers||{})[s.sampler]||{};return t.magFilter=Ode[i.magFilter]||oi,t.minFilter=Ode[i.minFilter]||Ra,t.wrapS=Pde[i.wrapS]||vn,t.wrapT=Pde[i.wrapT]||vn,r.associations.set(t,{textures:e}),t})).catch((function(){return null}));return this.textureCache[o]=l,l}loadImageSource(e,t){let i=this.json,r=this.options;if(void 0!==this.sourceCache[e])return this.sourceCache[e].then((e=>e.clone()));let n=i.images[e],s=self.URL||self.webkitURL,a=n.uri||"",o=!1;if(void 0!==n.bufferView)a=this.getDependency("bufferView",n.bufferView).then((function(e){o=!0;let t=new Blob([e],{type:n.mimeType});return a=s.createObjectURL(t),a}));else if(void 0===n.uri)throw new Error("THREE.GLTFLoader: Image "+e+" is missing URI and bufferView");let l=Promise.resolve(a).then((function(e){return new Promise((function(i,n){let s=i;!0===t.isImageBitmapLoader&&(s=function(e){let t=new Bi(e);t.needsUpdate=!0,i(t)}),t.load(ks.resolveURL(e,r.path),s,void 0,n)}))})).then((function(e){return!0===o&&s.revokeObjectURL(a),e.userData.mimeType=n.mimeType||XTt(n.uri),e})).catch((function(e){throw console.error("THREE.GLTFLoader: Couldn't load texture",a),e}));return this.sourceCache[e]=l,l}assignTexture(e,t,i,r){let n=this;return this.getDependency("texture",i.index).then((function(s){if(!s)return null;if(void 0!==i.texCoord&&0!=i.texCoord&&!("aoMap"===t&&1==i.texCoord)&&console.warn("THREE.GLTFLoader: Custom UV set "+i.texCoord+" for texture "+t+" not yet supported."),n.extensions[Oi.KHR_TEXTURE_TRANSFORM]){let e=void 0!==i.extensions?i.extensions[Oi.KHR_TEXTURE_TRANSFORM]:void 0;if(e){let t=n.associations.get(s);s=n.extensions[Oi.KHR_TEXTURE_TRANSFORM].extendTexture(s,e),n.associations.set(s,t)}}return void 0!==r&&(s.encoding=r),e[t]=s,s}))}assignFinalMaterial(e){let t=e.geometry,i=e.material,r=void 0===t.attributes.tangent,n=void 0!==t.attributes.color,s=void 0===t.attributes.normal;if(e.isPoints){let e="PointsMaterial:"+i.uuid,t=this.cache.get(e);t||(t=new jn,jr.prototype.copy.call(t,i),t.color.copy(i.color),t.map=i.map,t.sizeAttenuation=!1,this.cache.add(e,t)),i=t}else if(e.isLine){let e="LineBasicMaterial:"+i.uuid,t=this.cache.get(e);t||(t=new vr,jr.prototype.copy.call(t,i),t.color.copy(i.color),this.cache.add(e,t)),i=t}if(r||n||s){let e="ClonedMaterial:"+i.uuid+":";r&&(e+="derivative-tangents:"),n&&(e+="vertex-colors:"),s&&(e+="flat-shading:");let t=this.cache.get(e);t||(t=i.clone(),n&&(t.vertexColors=!0),s&&(t.flatShading=!0),r&&(t.normalScale&&(t.normalScale.y*=-1),t.clearcoatNormalScale&&(t.clearcoatNormalScale.y*=-1)),this.cache.add(e,t),this.associations.set(t,this.associations.get(i))),i=t}i.aoMap&&void 0===t.attributes.uv2&&void 0!==t.attributes.uv&&t.setAttribute("uv2",t.attributes.uv),e.material=i}getMaterialType(){return Gu}loadMaterial(e){let t,i=this,r=this.json,n=this.extensions,s=r.materials[e],a={},o=[];if((s.extensions||{})[Oi.KHR_MATERIALS_UNLIT]){let e=n[Oi.KHR_MATERIALS_UNLIT];t=e.getMaterialType(),o.push(e.extendParams(a,s,i))}else{let r=s.pbrMetallicRoughness||{};if(a.color=new je(1,1,1),a.opacity=1,Array.isArray(r.baseColorFactor)){let e=r.baseColorFactor;a.color.fromArray(e),a.opacity=e[3]}void 0!==r.baseColorTexture&&o.push(i.assignTexture(a,"map",r.baseColorTexture,gr)),a.metalness=void 0!==r.metallicFactor?r.metallicFactor:1,a.roughness=void 0!==r.roughnessFactor?r.roughnessFactor:1,void 0!==r.metallicRoughnessTexture&&(o.push(i.assignTexture(a,"metalnessMap",r.metallicRoughnessTexture)),o.push(i.assignTexture(a,"roughnessMap",r.metallicRoughnessTexture))),t=this._invokeOne((function(t){return t.getMaterialType&&t.getMaterialType(e)})),o.push(Promise.all(this._invokeAll((function(t){return t.extendMaterialParams&&t.extendMaterialParams(e,a)}))))}!0===s.doubleSided&&(a.side=gi);let l=s.alphaMode||Tk.OPAQUE;if(l===Tk.BLEND?(a.transparent=!0,a.depthWrite=!1):(a.transparent=!1,l===Tk.MASK&&(a.alphaTest=void 0!==s.alphaCutoff?s.alphaCutoff:.5)),void 0!==s.normalTexture&&t!==lr&&(o.push(i.assignTexture(a,"normalMap",s.normalTexture)),a.normalScale=new le(1,1),void 0!==s.normalTexture.scale)){let e=s.normalTexture.scale;a.normalScale.set(e,e)}return void 0!==s.occlusionTexture&&t!==lr&&(o.push(i.assignTexture(a,"aoMap",s.occlusionTexture)),void 0!==s.occlusionTexture.strength&&(a.aoMapIntensity=s.occlusionTexture.strength)),void 0!==s.emissiveFactor&&t!==lr&&(a.emissive=(new je).fromArray(s.emissiveFactor)),void 0!==s.emissiveTexture&&t!==lr&&o.push(i.assignTexture(a,"emissiveMap",s.emissiveTexture,gr)),Promise.all(o).then((function(){let r=new t(a);return s.name&&(r.name=s.name),Lf(r,s),i.associations.set(r,{materials:e}),s.extensions&&sI(n,r,s),r}))}createUniqueName(e){let t=Rr.sanitizeNodeName(e||""),i=t;for(let e=1;this.nodeNamesUsed[i];++e)i=t+"_"+e;return this.nodeNamesUsed[i]=!0,i}loadGeometries(e){let t=this,i=this.extensions,r=this.primitiveCache;function n(e){return i[Oi.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(e,t).then((function(i){return Lde(i,e,t)}))}let s=[];for(let i=0,a=e.length;i0&&qTt(h,n),h.name=t.createUniqueName(n.name||"mesh_"+e),Lf(h,n),c.extensions&&sI(r,h,c),t.assignFinalMaterial(h),l.push(h)}for(let i=0,r=l.length;i1?new ur:1===o.length?o[0]:new sr,a!==o[0])for(let e=0,t=o.length;e{let t=new Map;for(let[e,i]of r.associations)(e instanceof jr||e instanceof Bi)&&t.set(e,i);return e.traverse((e=>{let i=r.associations.get(e);null!=i&&t.set(e,i)})),t})(n),n}))}};function KTt(e,t,i){let r=t.attributes,n=new Mt;if(void 0===r.POSITION)return;{let e=i.json.accessors[r.POSITION],t=e.min,s=e.max;if(void 0===t||void 0===s)return void console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.");if(n.set(new A(t[0],t[1],t[2]),new A(s[0],s[1],s[2])),e.normalized){let t=kk(gT[e.componentType]);n.min.multiplyScalar(t),n.max.multiplyScalar(t)}}let s=t.targets;if(void 0!==s){let e=new A,t=new A;for(let r=0,n=s.length;rt in e?ZTt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i,Bde=(e,t)=>{for(var i in t||(t={}))JTt.call(t,i)&&Ude(e,i,t[i]);if(Hde)for(var i of Hde(t))QTt.call(t,i)&&Ude(e,i,t[i]);return e},Vk=e=>{if(void 0!==t2)return t2(e);throw new Error('Dynamic require of "'+e+'" is not supported')},Gde=(e,t)=>function(){return t||(0,e[Object.keys(e)[0]])((t={exports:{}}).exports,t),t.exports},eEt=(e,t,i)=>new Promise(((r,n)=>{var s=e=>{try{o(i.next(e))}catch(e){n(e)}},a=e=>{try{o(i.throw(e))}catch(e){n(e)}},o=e=>e.done?r(e.value):Promise.resolve(e.value).then(s,a);o((i=i.apply(e,t)).next())})),tEt=Gde({"(disabled):crypto"(){}}),rEt=Gde({"dist/web-ifc.js"(e,t){var i,r=(i="undefined"!=typeof document&&document.currentScript?document.currentScript.src:void 0,"undefined"!=typeof __filename&&(i=i||__filename),function(e){var t,r,n=void 0!==(e=e||{})?e:{};n.ready=new Promise((function(e,i){t=e,r=i}));var s,a={};for(s in n)n.hasOwnProperty(s)&&(a[s]=n[s]);var o=[],l="./this.program",h=function(e,t){throw t},u=!1,c=!1,p=!1,d=!1;u="object"==typeof window,c="function"==typeof importScripts,p="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,d=!u&&!p&&!c;var f,m,g,y,v="";function T(e){return n.locateFile?n.locateFile(e,v):v+e}p?(v=c?Vk("path").dirname(v)+"/":__dirname+"/",f=function(e,t){return g||(g=Vk("fs")),y||(y=Vk("path")),e=y.normalize(e),g.readFileSync(e,t?null:"utf8")},m=function(e){var t=f(e,!0);return t.buffer||(t=new Uint8Array(t)),D(t.buffer),t},process.argv.length>1&&(l=process.argv[1].replace(/\\/g,"/")),o=process.argv.slice(2),process.on("uncaughtException",(function(e){if(!(e instanceof Hr))throw e})),process.on("unhandledRejection",xe),h=function(e){process.exit(e)},n.inspect=function(){return"[Emscripten Module object]"}):d?("undefined"!=typeof read&&(f=function(e){return read(e)}),m=function(e){var t;return"function"==typeof readbuffer?new Uint8Array(readbuffer(e)):(D("object"==typeof(t=read(e,"binary"))),t)},"undefined"!=typeof scriptArgs?o=scriptArgs:void 0!==arguments&&(o=arguments),"function"==typeof quit&&(h=function(e){quit(e)}),"undefined"!=typeof print&&("undefined"==typeof console&&(console={}),console.log=print,console.warn=console.error="undefined"!=typeof printErr?printErr:print)):(u||c)&&(c?v=self.location.href:"undefined"!=typeof document&&document.currentScript&&(v=document.currentScript.src),i&&(v=i),v=0!==v.indexOf("blob:")?v.slice(0,v.lastIndexOf("/")+1):"",f=function(e){var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),t.responseText},c&&(m=function(e){var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}));var x=n.print||console.log.bind(console),b=n.printErr||console.warn.bind(console);for(s in a)a.hasOwnProperty(s)&&(n[s]=a[s]);a=null,n.arguments&&(o=n.arguments),n.thisProgram&&(l=n.thisProgram),n.quit&&(h=n.quit);var _=16;function E(e,t){return t||(t=_),Math.ceil(e/t)*t}var w,S,I=function(e){};n.wasmBinary&&(w=n.wasmBinary),n.noExitRuntime&&(S=n.noExitRuntime),"object"!=typeof WebAssembly&&xe("no native wasm support detected");var M,A=!1;function D(e,t){e||xe("Assertion failed: "+t)}var O="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function R(e,t,i){for(var r=(t>>>=0)+i,n=t;e[n>>>0]&&!(n>=r);)++n;if(n-t>16&&e.subarray&&O)return O.decode(e.subarray(t>>>0,n>>>0));for(var s="";t>>0];if(128&a){var o=63&e[t++>>>0];if(192!=(224&a)){var l=63&e[t++>>>0];if((a=224==(240&a)?(15&a)<<12|o<<6|l:(7&a)<<18|o<<12|l<<6|63&e[t++>>>0])<65536)s+=String.fromCharCode(a);else{var h=a-65536;s+=String.fromCharCode(55296|h>>10,56320|1023&h)}}else s+=String.fromCharCode((31&a)<<6|o)}else s+=String.fromCharCode(a)}return s}function C(e,t){return(e>>>=0)?R(k,e,t):""}function N(e,t,i,r){if(!(r>0))return 0;for(var n=i>>>=0,s=i+r-1,a=0;a=55296&&o<=57343&&(o=65536+((1023&o)<<10)|1023&e.charCodeAt(++a)),o<=127){if(i>=s)break;t[i++>>>0]=o}else if(o<=2047){if(i+1>=s)break;t[i++>>>0]=192|o>>6,t[i++>>>0]=128|63&o}else if(o<=65535){if(i+2>=s)break;t[i++>>>0]=224|o>>12,t[i++>>>0]=128|o>>6&63,t[i++>>>0]=128|63&o}else{if(i+3>=s)break;t[i++>>>0]=240|o>>18,t[i++>>>0]=128|o>>12&63,t[i++>>>0]=128|o>>6&63,t[i++>>>0]=128|63&o}}return t[i>>>0]=0,i-n}function P(e,t,i){return N(e,k,t,i)}function L(e){for(var t=0,i=0;i=55296&&r<=57343&&(r=65536+((1023&r)<<10)|1023&e.charCodeAt(++i)),r<=127?++t:t+=r<=2047?2:r<=65535?3:4}return t}var F,U,k,B,H,G,z,V,j,W="undefined"!=typeof TextDecoder?new TextDecoder("utf-16le"):void 0;function Y(e,t){for(var i=e,r=i>>1,n=r+t/2;!(r>=n)&&H[r>>>0];)++r;if((i=r<<1)-e>32&&W)return W.decode(k.subarray(e>>>0,i>>>0));for(var s="",a=0;!(a>=t/2);++a){var o=B[e+2*a>>>1];if(0==o)break;s+=String.fromCharCode(o)}return s}function X(e,t,i){if(void 0===i&&(i=2147483647),i<2)return 0;for(var r=t,n=(i-=2)<2*e.length?i/2:e.length,s=0;s>>1]=a,t+=2}return B[t>>>1]=0,t-r}function q(e){return 2*e.length}function Z(e,t){for(var i=0,r="";!(i>=t/4);){var n=G[e+4*i>>>2];if(0==n)break;if(++i,n>=65536){var s=n-65536;r+=String.fromCharCode(55296|s>>10,56320|1023&s)}else r+=String.fromCharCode(n)}return r}function K(e,t,i){if(void 0===i&&(i=2147483647),i<4)return 0;for(var r=t>>>=0,n=r+i-4,s=0;s=55296&&a<=57343&&(a=65536+((1023&a)<<10)|1023&e.charCodeAt(++s)),G[t>>>2]=a,(t+=4)+4>n)break}return G[t>>>2]=0,t-r}function $(e){for(var t=0,i=0;i=55296&&r<=57343&&++i,t+=4}return t}function J(e,t){U.set(e,t>>>0)}function Q(e,t,i){for(var r=0;r>>0]=e.charCodeAt(r);i||(U[t>>>0]=0)}function ee(e,t){return e%t>0&&(e+=t-e%t),e}function te(e){F=e,n.HEAP8=U=new Int8Array(e),n.HEAP16=B=new Int16Array(e),n.HEAP32=G=new Int32Array(e),n.HEAPU8=k=new Uint8Array(e),n.HEAPU16=H=new Uint16Array(e),n.HEAPU32=z=new Uint32Array(e),n.HEAPF32=V=new Float32Array(e),n.HEAPF64=j=new Float64Array(e)}var ie=n.INITIAL_MEMORY||16777216;(M=n.wasmMemory?n.wasmMemory:new WebAssembly.Memory({initial:ie/65536,maximum:65536}))&&(F=M.buffer),ie=F.byteLength,te(F);var re,ne=[],se=[],ae=[],oe=[];function le(){if(n.preRun)for("function"==typeof n.preRun&&(n.preRun=[n.preRun]);n.preRun.length;)de(n.preRun.shift());Ce(ne)}function he(){!n.noFSInit&&!Ve.init.initialized&&Ve.init(),He.init(),Ce(se)}function ue(){Ve.ignorePermissions=!1,Ce(ae)}function ce(){}function pe(){if(n.postRun)for("function"==typeof n.postRun&&(n.postRun=[n.postRun]);n.postRun.length;)fe(n.postRun.shift());Ce(oe)}function de(e){ne.unshift(e)}function fe(e){oe.unshift(e)}var me=0,ge=null,ye=null;function ve(e){me++,n.monitorRunDependencies&&n.monitorRunDependencies(me)}function Te(e){if(me--,n.monitorRunDependencies&&n.monitorRunDependencies(me),0==me&&(null!==ge&&(clearInterval(ge),ge=null),ye)){var t=ye;ye=null,t()}}function xe(e){n.onAbort&&n.onAbort(e),b(e+=""),A=!0,e="abort("+e+"). Build with -s ASSERTIONS=1 for more info.";var t=new WebAssembly.RuntimeError(e);throw r(t),t}function be(e,t){return String.prototype.startsWith?e.startsWith(t):0===e.indexOf(t)}n.preloadedImages={},n.preloadedAudios={};var _e="data:application/octet-stream;base64,";function Ee(e){return be(e,_e)}var we="file://";function Se(e){return be(e,we)}var Ie,Me,Ae=lRe+"web-ifc.wasm";function De(){try{if(w)return new Uint8Array(w);if(m)return m(Ae);throw"both async and sync fetching of the wasm failed"}catch(e){xe(e)}}function Oe(){return w||!u&&!c||"function"!=typeof fetch||Se(Ae)?Promise.resolve().then(De):fetch(Ae,{credentials:"same-origin"}).then((function(e){if(!e.ok)throw"failed to load wasm binary file at '"+Ae+"'";return e.arrayBuffer()})).catch((function(){return De()}))}function Re(){var e={a:Pr};function t(e,t){var i=e.exports;n.asm=i,re=n.asm.X,Te()}function i(e){t(e.instance)}function s(t){return Oe().then((function(t){return WebAssembly.instantiate(t,e)})).then(t,(function(e){b("failed to asynchronously prepare wasm: "+e),xe(e)}))}if(ve(),n.instantiateWasm)try{return n.instantiateWasm(e,t)}catch(e){return b("Module.instantiateWasm callback failed with error: "+e),!1}return(w||"function"!=typeof WebAssembly.instantiateStreaming||Ee(Ae)||Se(Ae)||"function"!=typeof fetch?s(i):fetch(Ae,{credentials:"same-origin"}).then((function(t){return WebAssembly.instantiateStreaming(t,e).then(i,(function(e){return b("wasm streaming compile failed: "+e),b("falling back to ArrayBuffer instantiation"),s(i)}))}))).catch(r),{}}function Ce(e){for(;e.length>0;){var t=e.shift();if("function"!=typeof t){var i=t.func;"number"==typeof i?void 0===t.arg?re.get(i)():re.get(i)(t.arg):i(void 0===t.arg?null:t.arg)}else t(n)}}function Ne(e,t,i){return i&&i.length?n["dynCall_"+e].apply(null,[t].concat(i)):n["dynCall_"+e].call(null,t)}function Pe(e,t,i){return-1!=e.indexOf("j")?Ne(e,t,i):re.get(t).apply(null,i)}function Le(e,t,i,r){xe("Assertion failed: "+C(e)+", at: "+[t?C(t):"unknown filename",i,r?C(r):"unknown function"])}function Fe(e){return G[kr()>>>2]=e,e}Ee(Ae)||(Ae=T(Ae));var Ue={splitPath:function(e){return/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1)},normalizeArray:function(e,t){for(var i=0,r=e.length-1;r>=0;r--){var n=e[r];"."===n?e.splice(r,1):".."===n?(e.splice(r,1),i++):i&&(e.splice(r,1),i--)}if(t)for(;i;i--)e.unshift("..");return e},normalize:function(e){var t="/"===e.charAt(0),i="/"===e.slice(-1);return!(e=Ue.normalizeArray(e.split("/").filter((function(e){return!!e})),!t).join("/"))&&!t&&(e="."),e&&i&&(e+="/"),(t?"/":"")+e},dirname:function(e){var t=Ue.splitPath(e),i=t[0],r=t[1];return i||r?(r&&(r=r.slice(0,r.length-1)),i+r):"."},basename:function(e){if("/"===e)return"/";var t=(e=(e=Ue.normalize(e)).replace(/\/$/,"")).lastIndexOf("/");return-1===t?e:e.slice(t+1)},extname:function(e){return Ue.splitPath(e)[3]},join:function(){var e=Array.prototype.slice.call(arguments,0);return Ue.normalize(e.join("/"))},join2:function(e,t){return Ue.normalize(e+"/"+t)}};function ke(){if("object"==typeof crypto&&"function"==typeof crypto.getRandomValues){var e=new Uint8Array(1);return function(){return crypto.getRandomValues(e),e[0]}}if(p)try{var t=tEt();return function(){return t.randomBytes(1)[0]}}catch(e){}return function(){xe("randomDevice")}}var Be={resolve:function(){for(var e="",t=!1,i=arguments.length-1;i>=-1&&!t;i--){var r=i>=0?arguments[i]:Ve.cwd();if("string"!=typeof r)throw new TypeError("Arguments to path.resolve must be strings");if(!r)return"";e=r+"/"+e,t="/"===r.charAt(0)}return(t?"/":"")+(e=Ue.normalizeArray(e.split("/").filter((function(e){return!!e})),!t).join("/"))||"."},relative:function(e,t){function i(e){for(var t=0;t=0&&""===e[i];i--);return t>i?[]:e.slice(t,i-t+1)}e=Be.resolve(e).slice(1),t=Be.resolve(t).slice(1);for(var r=i(e.split("/")),n=i(t.split("/")),s=Math.min(r.length,n.length),a=s,o=0;o0?i.slice(0,r).toString("utf-8"):null}else"undefined"!=typeof window&&"function"==typeof window.prompt?null!==(t=window.prompt("Input: "))&&(t+="\n"):"function"==typeof readline&&null!==(t=readline())&&(t+="\n");if(!t)return null;e.input=Cr(t,!0)}return e.input.shift()},put_char:function(e,t){null===t||10===t?(x(R(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},flush:function(e){e.output&&e.output.length>0&&(x(R(e.output,0)),e.output=[])}},default_tty1_ops:{put_char:function(e,t){null===t||10===t?(b(R(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},flush:function(e){e.output&&e.output.length>0&&(b(R(e.output,0)),e.output=[])}}};function Ge(e){for(var t=E(e,16384),i=Fr(t);e>>0]=0;return i}var ze={ops_table:null,mount:function(e){return ze.createNode(null,"/",16895,0)},createNode:function(e,t,i,r){if(Ve.isBlkdev(i)||Ve.isFIFO(i))throw new Ve.ErrnoError(63);ze.ops_table||(ze.ops_table={dir:{node:{getattr:ze.node_ops.getattr,setattr:ze.node_ops.setattr,lookup:ze.node_ops.lookup,mknod:ze.node_ops.mknod,rename:ze.node_ops.rename,unlink:ze.node_ops.unlink,rmdir:ze.node_ops.rmdir,readdir:ze.node_ops.readdir,symlink:ze.node_ops.symlink},stream:{llseek:ze.stream_ops.llseek}},file:{node:{getattr:ze.node_ops.getattr,setattr:ze.node_ops.setattr},stream:{llseek:ze.stream_ops.llseek,read:ze.stream_ops.read,write:ze.stream_ops.write,allocate:ze.stream_ops.allocate,mmap:ze.stream_ops.mmap,msync:ze.stream_ops.msync}},link:{node:{getattr:ze.node_ops.getattr,setattr:ze.node_ops.setattr,readlink:ze.node_ops.readlink},stream:{}},chrdev:{node:{getattr:ze.node_ops.getattr,setattr:ze.node_ops.setattr},stream:Ve.chrdev_stream_ops}});var n=Ve.createNode(e,t,i,r);return Ve.isDir(n.mode)?(n.node_ops=ze.ops_table.dir.node,n.stream_ops=ze.ops_table.dir.stream,n.contents={}):Ve.isFile(n.mode)?(n.node_ops=ze.ops_table.file.node,n.stream_ops=ze.ops_table.file.stream,n.usedBytes=0,n.contents=null):Ve.isLink(n.mode)?(n.node_ops=ze.ops_table.link.node,n.stream_ops=ze.ops_table.link.stream):Ve.isChrdev(n.mode)&&(n.node_ops=ze.ops_table.chrdev.node,n.stream_ops=ze.ops_table.chrdev.stream),n.timestamp=Date.now(),e&&(e.contents[t]=n),n},getFileDataAsRegularArray:function(e){if(e.contents&&e.contents.subarray){for(var t=[],i=0;i>>=0;var i=e.contents?e.contents.length:0;if(!(i>=t)){t=Math.max(t,i*(i<1048576?2:1.125)>>>0),0!=i&&(t=Math.max(t,256));var r=e.contents;e.contents=new Uint8Array(t),e.usedBytes>0&&e.contents.set(r.subarray(0,e.usedBytes),0)}},resizeFileStorage:function(e,t){if(t>>>=0,e.usedBytes!=t){if(0==t)return e.contents=null,void(e.usedBytes=0);if(!e.contents||e.contents.subarray){var i=e.contents;return e.contents=new Uint8Array(t),i&&e.contents.set(i.subarray(0,Math.min(t,e.usedBytes))),void(e.usedBytes=t)}if(e.contents||(e.contents=[]),e.contents.length>t)e.contents.length=t;else for(;e.contents.length=e.node.usedBytes)return 0;var a=Math.min(e.node.usedBytes-n,r);if(a>8&&s.subarray)t.set(s.subarray(n,n+a),i);else for(var o=0;o0||r+i>>=0,U.set(l,a>>>0)}else o=!1,a=l.byteOffset;return{ptr:a,allocated:o}},msync:function(e,t,i,r,n){if(!Ve.isFile(e.node.mode))throw new Ve.ErrnoError(43);return 2&n||ze.stream_ops.write(e,t,0,r,i,!1),0}}},Ve={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,trackingDelegate:{},tracking:{openFlags:{READ:1,WRITE:2}},ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath:function(e,t){if(t=t||{},!(e=Be.resolve(Ve.cwd(),e)))return{path:"",node:null};var i={follow_mount:!0,recurse_count:0};for(var r in i)void 0===t[r]&&(t[r]=i[r]);if(t.recurse_count>8)throw new Ve.ErrnoError(32);for(var n=Ue.normalizeArray(e.split("/").filter((function(e){return!!e})),!1),s=Ve.root,a="/",o=0;o40)throw new Ve.ErrnoError(32)}}return{path:a,node:s}},getPath:function(e){for(var t;;){if(Ve.isRoot(e)){var i=e.mount.mountpoint;return t?"/"!==i[i.length-1]?i+"/"+t:i+t:i}t=t?e.name+"/"+t:e.name,e=e.parent}},hashName:function(e,t){for(var i=0,r=0;r>>0)%Ve.nameTable.length},hashAddNode:function(e){var t=Ve.hashName(e.parent.id,e.name);e.name_next=Ve.nameTable[t],Ve.nameTable[t]=e},hashRemoveNode:function(e){var t=Ve.hashName(e.parent.id,e.name);if(Ve.nameTable[t]===e)Ve.nameTable[t]=e.name_next;else for(var i=Ve.nameTable[t];i;){if(i.name_next===e){i.name_next=e.name_next;break}i=i.name_next}},lookupNode:function(e,t){var i=Ve.mayLookup(e);if(i)throw new Ve.ErrnoError(i,e);for(var r=Ve.hashName(e.id,t),n=Ve.nameTable[r];n;n=n.name_next){var s=n.name;if(n.parent.id===e.id&&s===t)return n}return Ve.lookup(e,t)},createNode:function(e,t,i,r){var n=new Ve.FSNode(e,t,i,r);return Ve.hashAddNode(n),n},destroyNode:function(e){Ve.hashRemoveNode(e)},isRoot:function(e){return e===e.parent},isMountpoint:function(e){return!!e.mounted},isFile:function(e){return 32768==(61440&e)},isDir:function(e){return 16384==(61440&e)},isLink:function(e){return 40960==(61440&e)},isChrdev:function(e){return 8192==(61440&e)},isBlkdev:function(e){return 24576==(61440&e)},isFIFO:function(e){return 4096==(61440&e)},isSocket:function(e){return 49152==(49152&e)},flagModes:{r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},modeStringToFlags:function(e){var t=Ve.flagModes[e];if(void 0===t)throw new Error("Unknown file open mode: "+e);return t},flagsToPermissionString:function(e){var t=["r","w","rw"][3&e];return 512&e&&(t+="w"),t},nodePermissions:function(e,t){return Ve.ignorePermissions||(-1===t.indexOf("r")||292&e.mode)&&(-1===t.indexOf("w")||146&e.mode)&&(-1===t.indexOf("x")||73&e.mode)?0:2},mayLookup:function(e){return Ve.nodePermissions(e,"x")||(e.node_ops.lookup?0:2)},mayCreate:function(e,t){try{return Ve.lookupNode(e,t),20}catch(e){}return Ve.nodePermissions(e,"wx")},mayDelete:function(e,t,i){var r;try{r=Ve.lookupNode(e,t)}catch(e){return e.errno}var n=Ve.nodePermissions(e,"wx");if(n)return n;if(i){if(!Ve.isDir(r.mode))return 54;if(Ve.isRoot(r)||Ve.getPath(r)===Ve.cwd())return 10}else if(Ve.isDir(r.mode))return 31;return 0},mayOpen:function(e,t){return e?Ve.isLink(e.mode)?32:Ve.isDir(e.mode)&&("r"!==Ve.flagsToPermissionString(t)||512&t)?31:Ve.nodePermissions(e,Ve.flagsToPermissionString(t)):44},MAX_OPEN_FDS:4096,nextfd:function(e,t){e=e||0,t=t||Ve.MAX_OPEN_FDS;for(var i=e;i<=t;i++)if(!Ve.streams[i])return i;throw new Ve.ErrnoError(33)},getStream:function(e){return Ve.streams[e]},createStream:function(e,t,i){Ve.FSStream||(Ve.FSStream=function(){},Ve.FSStream.prototype={object:{get:function(){return this.node},set:function(e){this.node=e}},isRead:{get:function(){return 1!=(2097155&this.flags)}},isWrite:{get:function(){return 0!=(2097155&this.flags)}},isAppend:{get:function(){return 1024&this.flags}}});var r=new Ve.FSStream;for(var n in e)r[n]=e[n];e=r;var s=Ve.nextfd(t,i);return e.fd=s,Ve.streams[s]=e,e},closeStream:function(e){Ve.streams[e]=null},chrdev_stream_ops:{open:function(e){var t=Ve.getDevice(e.node.rdev);e.stream_ops=t.stream_ops,e.stream_ops.open&&e.stream_ops.open(e)},llseek:function(){throw new Ve.ErrnoError(70)}},major:function(e){return e>>8},minor:function(e){return 255&e},makedev:function(e,t){return e<<8|t},registerDevice:function(e,t){Ve.devices[e]={stream_ops:t}},getDevice:function(e){return Ve.devices[e]},getMounts:function(e){for(var t=[],i=[e];i.length;){var r=i.pop();t.push(r),i.push.apply(i,r.mounts)}return t},syncfs:function(e,t){"function"==typeof e&&(t=e,e=!1),Ve.syncFSRequests++,Ve.syncFSRequests>1&&b("warning: "+Ve.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work");var i=Ve.getMounts(Ve.root.mount),r=0;function n(e){return Ve.syncFSRequests--,t(e)}function s(e){if(e)return s.errored?void 0:(s.errored=!0,n(e));++r>=i.length&&n(null)}i.forEach((function(t){if(!t.type.syncfs)return s(null);t.type.syncfs(t,e,s)}))},mount:function(e,t,i){var r,n="/"===i,s=!i;if(n&&Ve.root)throw new Ve.ErrnoError(10);if(!n&&!s){var a=Ve.lookupPath(i,{follow_mount:!1});if(i=a.path,r=a.node,Ve.isMountpoint(r))throw new Ve.ErrnoError(10);if(!Ve.isDir(r.mode))throw new Ve.ErrnoError(54)}var o={type:e,opts:t,mountpoint:i,mounts:[]},l=e.mount(o);return l.mount=o,o.root=l,n?Ve.root=l:r&&(r.mounted=o,r.mount&&r.mount.mounts.push(o)),l},unmount:function(e){var t=Ve.lookupPath(e,{follow_mount:!1});if(!Ve.isMountpoint(t.node))throw new Ve.ErrnoError(28);var i=t.node,r=i.mounted,n=Ve.getMounts(r);Object.keys(Ve.nameTable).forEach((function(e){for(var t=Ve.nameTable[e];t;){var i=t.name_next;-1!==n.indexOf(t.mount)&&Ve.destroyNode(t),t=i}})),i.mounted=null;var s=i.mount.mounts.indexOf(r);i.mount.mounts.splice(s,1)},lookup:function(e,t){return e.node_ops.lookup(e,t)},mknod:function(e,t,i){var r=Ve.lookupPath(e,{parent:!0}).node,n=Ue.basename(e);if(!n||"."===n||".."===n)throw new Ve.ErrnoError(28);var s=Ve.mayCreate(r,n);if(s)throw new Ve.ErrnoError(s);if(!r.node_ops.mknod)throw new Ve.ErrnoError(63);return r.node_ops.mknod(r,n,t,i)},create:function(e,t){return t=void 0!==t?t:438,t&=4095,t|=32768,Ve.mknod(e,t,0)},mkdir:function(e,t){return t=void 0!==t?t:511,t&=1023,t|=16384,Ve.mknod(e,t,0)},mkdirTree:function(e,t){for(var i=e.split("/"),r="",n=0;n>>=0,r<0||n<0)throw new Ve.ErrnoError(28);if(Ve.isClosed(e))throw new Ve.ErrnoError(8);if(1==(2097155&e.flags))throw new Ve.ErrnoError(8);if(Ve.isDir(e.node.mode))throw new Ve.ErrnoError(31);if(!e.stream_ops.read)throw new Ve.ErrnoError(28);var s=void 0!==n;if(s){if(!e.seekable)throw new Ve.ErrnoError(70)}else n=e.position;var a=e.stream_ops.read(e,t,i,r,n);return s||(e.position+=a),a},write:function(e,t,i,r,n,s){if(i>>>=0,r<0||n<0)throw new Ve.ErrnoError(28);if(Ve.isClosed(e))throw new Ve.ErrnoError(8);if(!(2097155&e.flags))throw new Ve.ErrnoError(8);if(Ve.isDir(e.node.mode))throw new Ve.ErrnoError(31);if(!e.stream_ops.write)throw new Ve.ErrnoError(28);e.seekable&&1024&e.flags&&Ve.llseek(e,0,2);var a=void 0!==n;if(a){if(!e.seekable)throw new Ve.ErrnoError(70)}else n=e.position;var o=e.stream_ops.write(e,t,i,r,n,s);a||(e.position+=o);try{e.path&&Ve.trackingDelegate.onWriteToFile&&Ve.trackingDelegate.onWriteToFile(e.path)}catch(t){b("FS.trackingDelegate['onWriteToFile']('"+e.path+"') threw an exception: "+t.message)}return o},allocate:function(e,t,i){if(Ve.isClosed(e))throw new Ve.ErrnoError(8);if(t<0||i<=0)throw new Ve.ErrnoError(28);if(!(2097155&e.flags))throw new Ve.ErrnoError(8);if(!Ve.isFile(e.node.mode)&&!Ve.isDir(e.node.mode))throw new Ve.ErrnoError(43);if(!e.stream_ops.allocate)throw new Ve.ErrnoError(138);e.stream_ops.allocate(e,t,i)},mmap:function(e,t,i,r,n,s){if(t>>>=0,2&n&&!(2&s)&&2!=(2097155&e.flags))throw new Ve.ErrnoError(2);if(1==(2097155&e.flags))throw new Ve.ErrnoError(2);if(!e.stream_ops.mmap)throw new Ve.ErrnoError(43);return e.stream_ops.mmap(e,t,i,r,n,s)},msync:function(e,t,i,r,n){return i>>>=0,e&&e.stream_ops.msync?e.stream_ops.msync(e,t,i,r,n):0},munmap:function(e){return 0},ioctl:function(e,t,i){if(!e.stream_ops.ioctl)throw new Ve.ErrnoError(59);return e.stream_ops.ioctl(e,t,i)},readFile:function(e,t){if((t=t||{}).flags=t.flags||0,t.encoding=t.encoding||"binary","utf8"!==t.encoding&&"binary"!==t.encoding)throw new Error('Invalid encoding type "'+t.encoding+'"');var i,r=Ve.open(e,t.flags),n=Ve.stat(e).size,s=new Uint8Array(n);return Ve.read(r,s,0,n,0),"utf8"===t.encoding?i=R(s,0):"binary"===t.encoding&&(i=s),Ve.close(r),i},writeFile:function(e,t,i){(i=i||{}).flags=i.flags||577;var r=Ve.open(e,i.flags,i.mode);if("string"==typeof t){var n=new Uint8Array(L(t)+1),s=N(t,n,0,n.length);Ve.write(r,n,0,s,void 0,i.canOwn)}else{if(!ArrayBuffer.isView(t))throw new Error("Unsupported data type");Ve.write(r,t,0,t.byteLength,void 0,i.canOwn)}Ve.close(r)},cwd:function(){return Ve.currentPath},chdir:function(e){var t=Ve.lookupPath(e,{follow:!0});if(null===t.node)throw new Ve.ErrnoError(44);if(!Ve.isDir(t.node.mode))throw new Ve.ErrnoError(54);var i=Ve.nodePermissions(t.node,"x");if(i)throw new Ve.ErrnoError(i);Ve.currentPath=t.path},createDefaultDirectories:function(){Ve.mkdir("/tmp"),Ve.mkdir("/home"),Ve.mkdir("/home/web_user")},createDefaultDevices:function(){Ve.mkdir("/dev"),Ve.registerDevice(Ve.makedev(1,3),{read:function(){return 0},write:function(e,t,i,r,n){return r}}),Ve.mkdev("/dev/null",Ve.makedev(1,3)),He.register(Ve.makedev(5,0),He.default_tty_ops),He.register(Ve.makedev(6,0),He.default_tty1_ops),Ve.mkdev("/dev/tty",Ve.makedev(5,0)),Ve.mkdev("/dev/tty1",Ve.makedev(6,0));var e=ke();Ve.createDevice("/dev","random",e),Ve.createDevice("/dev","urandom",e),Ve.mkdir("/dev/shm"),Ve.mkdir("/dev/shm/tmp")},createSpecialDirectories:function(){Ve.mkdir("/proc"),Ve.mkdir("/proc/self"),Ve.mkdir("/proc/self/fd"),Ve.mount({mount:function(){var e=Ve.createNode("/proc/self","fd",16895,73);return e.node_ops={lookup:function(e,t){var i=+t,r=Ve.getStream(i);if(!r)throw new Ve.ErrnoError(8);var n={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:function(){return r.path}}};return n.parent=n,n}},e}},{},"/proc/self/fd")},createStandardStreams:function(){n.stdin?Ve.createDevice("/dev","stdin",n.stdin):Ve.symlink("/dev/tty","/dev/stdin"),n.stdout?Ve.createDevice("/dev","stdout",null,n.stdout):Ve.symlink("/dev/tty","/dev/stdout"),n.stderr?Ve.createDevice("/dev","stderr",null,n.stderr):Ve.symlink("/dev/tty1","/dev/stderr"),Ve.open("/dev/stdin",0),Ve.open("/dev/stdout",1),Ve.open("/dev/stderr",1)},ensureErrnoError:function(){Ve.ErrnoError||(Ve.ErrnoError=function(e,t){this.node=t,this.setErrno=function(e){this.errno=e},this.setErrno(e),this.message="FS error"},Ve.ErrnoError.prototype=new Error,Ve.ErrnoError.prototype.constructor=Ve.ErrnoError,[44].forEach((function(e){Ve.genericErrors[e]=new Ve.ErrnoError(e),Ve.genericErrors[e].stack=""})))},staticInit:function(){Ve.ensureErrnoError(),Ve.nameTable=new Array(4096),Ve.mount(ze,{},"/"),Ve.createDefaultDirectories(),Ve.createDefaultDevices(),Ve.createSpecialDirectories(),Ve.filesystems={MEMFS:ze}},init:function(e,t,i){Ve.init.initialized=!0,Ve.ensureErrnoError(),n.stdin=e||n.stdin,n.stdout=t||n.stdout,n.stderr=i||n.stderr,Ve.createStandardStreams()},quit:function(){Ve.init.initialized=!1;var e=n._fflush;e&&e(0);for(var t=0;tthis.length-1||e<0)){var t=e%this.chunkSize,i=e/this.chunkSize|0;return this.getter(i)[t]}},s.prototype.setDataGetter=function(e){this.getter=e},s.prototype.cacheLength=function(){var e=new XMLHttpRequest;if(e.open("HEAD",i,!1),e.send(null),!(e.status>=200&&e.status<300||304===e.status))throw new Error("Couldn't load "+i+". Status: "+e.status);var t,r=Number(e.getResponseHeader("Content-length")),n=(t=e.getResponseHeader("Accept-Ranges"))&&"bytes"===t,s=(t=e.getResponseHeader("Content-Encoding"))&&"gzip"===t,a=1048576;n||(a=r);var o=this;o.setDataGetter((function(e){var t=e*a,n=(e+1)*a-1;if(n=Math.min(n,r-1),void 0===o.chunks[e]&&(o.chunks[e]=function(e,t){if(e>t)throw new Error("invalid range ("+e+", "+t+") or no bytes requested!");if(t>r-1)throw new Error("only "+r+" bytes available! programmer error!");var n=new XMLHttpRequest;if(n.open("GET",i,!1),r!==a&&n.setRequestHeader("Range","bytes="+e+"-"+t),"undefined"!=typeof Uint8Array&&(n.responseType="arraybuffer"),n.overrideMimeType&&n.overrideMimeType("text/plain; charset=x-user-defined"),n.send(null),!(n.status>=200&&n.status<300||304===n.status))throw new Error("Couldn't load "+i+". Status: "+n.status);return void 0!==n.response?new Uint8Array(n.response||[]):Cr(n.responseText||"",!0)}(t,n)),void 0===o.chunks[e])throw new Error("doXHR failed!");return o.chunks[e]})),(s||!r)&&(a=r=1,r=this.getter(0).length,a=r,x("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=r,this._chunkSize=a,this.lengthKnown=!0},"undefined"!=typeof XMLHttpRequest){if(!c)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var a=new s;Object.defineProperties(a,{length:{get:function(){return this.lengthKnown||this.cacheLength(),this._length}},chunkSize:{get:function(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}});var o={isDevice:!1,contents:a}}else o={isDevice:!1,url:i};var l=Ve.createFile(e,t,o,r,n);o.contents?l.contents=o.contents:o.url&&(l.contents=null,l.url=o.url),Object.defineProperties(l,{usedBytes:{get:function(){return this.contents.length}}});var h={};return Object.keys(l.stream_ops).forEach((function(e){var t=l.stream_ops[e];h[e]=function(){return Ve.forceLoadFile(l),t.apply(null,arguments)}})),h.read=function(e,t,i,r,n){Ve.forceLoadFile(l);var s=e.node.contents;if(n>=s.length)return 0;var a=Math.min(s.length-n,r);if(s.slice)for(var o=0;o>>2]=r.dev,G[i+4>>>2]=0,G[i+8>>>2]=r.ino,G[i+12>>>2]=r.mode,G[i+16>>>2]=r.nlink,G[i+20>>>2]=r.uid,G[i+24>>>2]=r.gid,G[i+28>>>2]=r.rdev,G[i+32>>>2]=0,Me=[r.size>>>0,(Ie=r.size,+Math.abs(Ie)>=1?Ie>0?(0|Math.min(+Math.floor(Ie/4294967296),4294967295))>>>0:~~+Math.ceil((Ie-+(~~Ie>>>0))/4294967296)>>>0:0)],G[i+40>>>2]=Me[0],G[i+44>>>2]=Me[1],G[i+48>>>2]=4096,G[i+52>>>2]=r.blocks,G[i+56>>>2]=r.atime.getTime()/1e3|0,G[i+60>>>2]=0,G[i+64>>>2]=r.mtime.getTime()/1e3|0,G[i+68>>>2]=0,G[i+72>>>2]=r.ctime.getTime()/1e3|0,G[i+76>>>2]=0,Me=[r.ino>>>0,(Ie=r.ino,+Math.abs(Ie)>=1?Ie>0?(0|Math.min(+Math.floor(Ie/4294967296),4294967295))>>>0:~~+Math.ceil((Ie-+(~~Ie>>>0))/4294967296)>>>0:0)],G[i+80>>>2]=Me[0],G[i+84>>>2]=Me[1],0},doMsync:function(e,t,i,r,n){var s=k.slice(e,e+i);Ve.msync(t,s,n,i,r)},doMkdir:function(e,t){return"/"===(e=Ue.normalize(e))[e.length-1]&&(e=e.slice(0,e.length-1)),Ve.mkdir(e,t,0),0},doMknod:function(e,t,i){switch(61440&t){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}return Ve.mknod(e,t,i),0},doReadlink:function(e,t,i){if(i<=0)return-28;var r=Ve.readlink(e),n=Math.min(i,L(r)),s=U[t+n>>>0];return P(r,t,i+1),U[t+n>>>0]=s,n},doAccess:function(e,t){if(-8&t)return-28;var i;if(!(i=Ve.lookupPath(e,{follow:!0}).node))return-44;var r="";return 4&t&&(r+="r"),2&t&&(r+="w"),1&t&&(r+="x"),r&&Ve.nodePermissions(i,r)?-2:0},doDup:function(e,t,i){var r=Ve.getStream(i);return r&&Ve.close(r),Ve.open(e,t,0,i,i).fd},doReadv:function(e,t,i,r){for(var n=0,s=0;s>>2],o=G[t+(8*s+4)>>>2],l=Ve.read(e,U,a,o,r);if(l<0)return-1;if(n+=l,l>>2],o=G[t+(8*s+4)>>>2],l=Ve.write(e,U,a,o,r);if(l<0)return-1;n+=l}return n},varargs:void 0,get:function(){return je.varargs+=4,G[je.varargs-4>>>2]},getStr:function(e){return C(e)},getStreamFromFD:function(e){var t=Ve.getStream(e);if(!t)throw new Ve.ErrnoError(8);return t},get64:function(e,t){return e}};function We(e,t,i){je.varargs=i;try{var r=je.getStreamFromFD(e);switch(t){case 0:return(n=je.get())<0?-28:Ve.open(r.path,r.flags,0,n).fd;case 1:case 2:case 13:case 14:return 0;case 3:return r.flags;case 4:var n=je.get();return r.flags|=n,0;case 12:return n=je.get(),B[n+0>>>1]=2,0;case 16:case 8:default:return-28;case 9:return Fe(28),-1}}catch(e){return(void 0===Ve||!(e instanceof Ve.ErrnoError))&&xe(e),-e.errno}}function Ye(e,t,i){je.varargs=i;try{var r=je.getStreamFromFD(e);switch(t){case 21509:case 21505:case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:case 21523:case 21524:return r.tty?0:-59;case 21519:if(!r.tty)return-59;var n=je.get();return G[n>>>2]=0,0;case 21520:return r.tty?-28:-59;case 21531:return n=je.get(),Ve.ioctl(r,t,n);default:xe("bad ioctl syscall "+t)}}catch(e){return(void 0===Ve||!(e instanceof Ve.ErrnoError))&&xe(e),-e.errno}}function Xe(e,t,i){je.varargs=i;try{var r=je.getStr(e),n=je.get();return Ve.open(r,t,n).fd}catch(e){return(void 0===Ve||!(e instanceof Ve.ErrnoError))&&xe(e),-e.errno}}var qe={};function Ze(e){for(;e.length;){var t=e.pop();e.pop()(t)}}function Ke(e){return this.fromWireType(z[e>>>2])}var $e={},Je={},Qe={},et=48,tt=57;function it(e){if(void 0===e)return"_unknown";var t=(e=e.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return t>=et&&t<=tt?"_"+e:e}function rt(e,t){return e=it(e),new Function("body","return function "+e+'() {\n "use strict"; return body.apply(this, arguments);\n};\n')(t)}function nt(e,t){var i=rt(t,(function(e){this.name=t,this.message=e;var i=new Error(e).stack;void 0!==i&&(this.stack=this.toString()+"\n"+i.replace(/^Error(:[^\n]*)?\n/,""))}));return i.prototype=Object.create(e.prototype),i.prototype.constructor=i,i.prototype.toString=function(){return void 0===this.message?this.name:this.name+": "+this.message},i}var st=void 0;function at(e){throw new st(e)}function ot(e,t,i){function r(t){var r=i(t);r.length!==e.length&&at("Mismatched type converter count");for(var n=0;n>>0];)t+=dt[k[i++>>>0]];return t}var mt=void 0;function gt(e){throw new mt(e)}function yt(e,t,i){if(i=i||{},!("argPackAdvance"in t))throw new TypeError("registerType registeredInstance requires argPackAdvance");var r=t.name;if(e||gt('type "'+r+'" must have a positive integer typeid pointer'),Je.hasOwnProperty(e)){if(i.ignoreDuplicateRegistrations)return;gt("Cannot register type '"+r+"' twice")}if(Je[e]=t,delete Qe[e],$e.hasOwnProperty(e)){var n=$e[e];delete $e[e],n.forEach((function(e){e()}))}}function vt(e,t,i,r,n){var s=ct(i);yt(e,{name:t=ft(t),fromWireType:function(e){return!!e},toWireType:function(e,t){return t?r:n},argPackAdvance:8,readValueFromPointer:function(e){var r;if(1===i)r=U;else if(2===i)r=B;else{if(4!==i)throw new TypeError("Unknown boolean type size: "+t);r=G}return this.fromWireType(r[e>>>s])},destructorFunction:null})}function Tt(e){if(!(this instanceof Lt&&e instanceof Lt))return!1;for(var t=this.$$.ptrType.registeredClass,i=this.$$.ptr,r=e.$$.ptrType.registeredClass,n=e.$$.ptr;t.baseClass;)i=t.upcast(i),t=t.baseClass;for(;r.baseClass;)n=r.upcast(n),r=r.baseClass;return t===r&&i===n}function xt(e){return{count:e.count,deleteScheduled:e.deleteScheduled,preservePointerOnDelete:e.preservePointerOnDelete,ptr:e.ptr,ptrType:e.ptrType,smartPtr:e.smartPtr,smartPtrType:e.smartPtrType}}function bt(e){gt(e.$$.ptrType.registeredClass.name+" instance already deleted")}var _t=!1;function Et(e){}function wt(e){e.smartPtr?e.smartPtrType.rawDestructor(e.smartPtr):e.ptrType.registeredClass.rawDestructor(e.ptr)}function St(e){e.count.value-=1,0===e.count.value&&wt(e)}function It(e){return"undefined"==typeof FinalizationGroup?(It=function(e){return e},e):(_t=new FinalizationGroup((function(e){for(var t=e.next();!t.done;t=e.next()){var i=t.value;i.ptr?St(i):console.warn("object already deleted: "+i.ptr)}})),Et=function(e){_t.unregister(e.$$)},(It=function(e){return _t.register(e,e.$$,e.$$),e})(e))}function Mt(){if(this.$$.ptr||bt(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var e=It(Object.create(Object.getPrototypeOf(this),{$$:{value:xt(this.$$)}}));return e.$$.count.value+=1,e.$$.deleteScheduled=!1,e}function At(){this.$$.ptr||bt(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&>("Object already scheduled for deletion"),Et(this),St(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)}function Dt(){return!this.$$.ptr}var Ot=void 0,Rt=[];function Ct(){for(;Rt.length;){var e=Rt.pop();e.$$.deleteScheduled=!1,e.delete()}}function Nt(){return this.$$.ptr||bt(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&>("Object already scheduled for deletion"),Rt.push(this),1===Rt.length&&Ot&&Ot(Ct),this.$$.deleteScheduled=!0,this}function Pt(){Lt.prototype.isAliasOf=Tt,Lt.prototype.clone=Mt,Lt.prototype.delete=At,Lt.prototype.isDeleted=Dt,Lt.prototype.deleteLater=Nt}function Lt(){}var Ft={};function Ut(e,t,i){if(void 0===e[t].overloadTable){var r=e[t];e[t]=function(){return e[t].overloadTable.hasOwnProperty(arguments.length)||gt("Function '"+i+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+e[t].overloadTable+")!"),e[t].overloadTable[arguments.length].apply(this,arguments)},e[t].overloadTable=[],e[t].overloadTable[r.argCount]=r}}function kt(e,t,i){n.hasOwnProperty(e)?((void 0===i||void 0!==n[e].overloadTable&&void 0!==n[e].overloadTable[i])&>("Cannot register public name '"+e+"' twice"),Ut(n,e,e),n.hasOwnProperty(i)&>("Cannot register multiple overloads of a function with the same number of arguments ("+i+")!"),n[e].overloadTable[i]=t):(n[e]=t,void 0!==i&&(n[e].numArguments=i))}function Bt(e,t,i,r,n,s,a,o){this.name=e,this.constructor=t,this.instancePrototype=i,this.rawDestructor=r,this.baseClass=n,this.getActualType=s,this.upcast=a,this.downcast=o,this.pureVirtualFunctions=[]}function Ht(e,t,i){for(;t!==i;)t.upcast||gt("Expected null or instance of "+i.name+", got an instance of "+t.name),e=t.upcast(e),t=t.baseClass;return e}function Gt(e,t){if(null===t)return this.isReference&>("null is not a valid "+this.name),0;t.$$||gt('Cannot pass "'+Si(t)+'" as a '+this.name),t.$$.ptr||gt("Cannot pass deleted object as a pointer of type "+this.name);var i=t.$$.ptrType.registeredClass;return Ht(t.$$.ptr,i,this.registeredClass)}function zt(e,t){var i;if(null===t)return this.isReference&>("null is not a valid "+this.name),this.isSmartPointer?(i=this.rawConstructor(),null!==e&&e.push(this.rawDestructor,i),i):0;t.$$||gt('Cannot pass "'+Si(t)+'" as a '+this.name),t.$$.ptr||gt("Cannot pass deleted object as a pointer of type "+this.name),!this.isConst&&t.$$.ptrType.isConst&>("Cannot convert argument of type "+(t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name)+" to parameter type "+this.name);var r=t.$$.ptrType.registeredClass;if(i=Ht(t.$$.ptr,r,this.registeredClass),this.isSmartPointer)switch(void 0===t.$$.smartPtr&>("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:t.$$.smartPtrType===this?i=t.$$.smartPtr:gt("Cannot convert argument of type "+(t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name)+" to parameter type "+this.name);break;case 1:i=t.$$.smartPtr;break;case 2:if(t.$$.smartPtrType===this)i=t.$$.smartPtr;else{var n=t.clone();i=this.rawShare(i,Ei((function(){n.delete()}))),null!==e&&e.push(this.rawDestructor,i)}break;default:gt("Unsupporting sharing policy")}return i}function Vt(e,t){if(null===t)return this.isReference&>("null is not a valid "+this.name),0;t.$$||gt('Cannot pass "'+Si(t)+'" as a '+this.name),t.$$.ptr||gt("Cannot pass deleted object as a pointer of type "+this.name),t.$$.ptrType.isConst&>("Cannot convert argument of type "+t.$$.ptrType.name+" to parameter type "+this.name);var i=t.$$.ptrType.registeredClass;return Ht(t.$$.ptr,i,this.registeredClass)}function jt(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e}function Wt(e){this.rawDestructor&&this.rawDestructor(e)}function Yt(e){null!==e&&e.delete()}function Xt(e,t,i){if(t===i)return e;if(void 0===i.baseClass)return null;var r=Xt(e,t,i.baseClass);return null===r?null:i.downcast(r)}function qt(){return Object.keys(Jt).length}function Zt(){var e=[];for(var t in Jt)Jt.hasOwnProperty(t)&&e.push(Jt[t]);return e}function Kt(e){Ot=e,Rt.length&&Ot&&Ot(Ct)}function $t(){n.getInheritedInstanceCount=qt,n.getLiveInheritedInstances=Zt,n.flushPendingDeletes=Ct,n.setDelayFunction=Kt}var Jt={};function Qt(e,t){for(void 0===t&>("ptr should not be undefined");e.baseClass;)t=e.upcast(t),e=e.baseClass;return t}function ei(e,t){return t=Qt(e,t),Jt[t]}function ti(e,t){return(!t.ptrType||!t.ptr)&&at("makeClassHandle requires ptr and ptrType"),!!t.smartPtrType!=!!t.smartPtr&&at("Both smartPtrType and smartPtr must be specified"),t.count={value:1},It(Object.create(e,{$$:{value:t}}))}function ii(e){var t=this.getPointee(e);if(!t)return this.destructor(e),null;var i=ei(this.registeredClass,t);if(void 0!==i){if(0===i.$$.count.value)return i.$$.ptr=t,i.$$.smartPtr=e,i.clone();var r=i.clone();return this.destructor(e),r}function n(){return this.isSmartPointer?ti(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:t,smartPtrType:this,smartPtr:e}):ti(this.registeredClass.instancePrototype,{ptrType:this,ptr:e})}var s,a=this.registeredClass.getActualType(t),o=Ft[a];if(!o)return n.call(this);s=this.isConst?o.constPointerType:o.pointerType;var l=Xt(t,this.registeredClass,s.registeredClass);return null===l?n.call(this):this.isSmartPointer?ti(s.registeredClass.instancePrototype,{ptrType:s,ptr:l,smartPtrType:this,smartPtr:e}):ti(s.registeredClass.instancePrototype,{ptrType:s,ptr:l})}function ri(){ni.prototype.getPointee=jt,ni.prototype.destructor=Wt,ni.prototype.argPackAdvance=8,ni.prototype.readValueFromPointer=Ke,ni.prototype.deleteObject=Yt,ni.prototype.fromWireType=ii}function ni(e,t,i,r,n,s,a,o,l,h,u){this.name=e,this.registeredClass=t,this.isReference=i,this.isConst=r,this.isSmartPointer=n,this.pointeeType=s,this.sharingPolicy=a,this.rawGetPointee=o,this.rawConstructor=l,this.rawShare=h,this.rawDestructor=u,n||void 0!==t.baseClass?this.toWireType=zt:r?(this.toWireType=Gt,this.destructorFunction=null):(this.toWireType=Vt,this.destructorFunction=null)}function si(e,t,i){n.hasOwnProperty(e)||at("Replacing nonexistant public symbol"),void 0!==n[e].overloadTable&&void 0!==i?n[e].overloadTable[i]=t:(n[e]=t,n[e].argCount=i)}function ai(e,t){D(e.indexOf("j")>=0,"getDynCaller should only be called with i64 sigs");var i=[];return function(){i.length=arguments.length;for(var r=0;r>2)+r>>>0]);return i}function di(e,t,i,r,n,s){D(t>0);var a=pi(t,i);n=oi(r,n);var o=[s],l=[];ot([],[e],(function(e){var i="constructor "+(e=e[0]).name;if(void 0===e.registeredClass.constructor_body&&(e.registeredClass.constructor_body=[]),void 0!==e.registeredClass.constructor_body[t-1])throw new mt("Cannot register multiple constructors with identical number of parameters ("+(t-1)+") for class '"+e.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!");return e.registeredClass.constructor_body[t-1]=function(){ui("Cannot construct "+e.name+" due to unbound types",a)},ot([],a,(function(r){return e.registeredClass.constructor_body[t-1]=function(){arguments.length!==t-1&>(i+" called with "+arguments.length+" arguments, expected "+(t-1)),l.length=0,o.length=t;for(var e=1;e0?", ":"")+c),p+=(h?"var rv = ":"")+"invoker(fn"+(c.length>0?", ":"")+c+");\n",o)p+="runDestructors(destructors);\n";else for(l=a?1:2;l4&&0==--vi[e].refcount&&(vi[e]=void 0,yi.push(e))}function xi(){for(var e=0,t=5;t>>2])};case 3:return function(e){return this.fromWireType(j[e>>>3])};default:throw new TypeError("Unknown float type: "+e)}}function Mi(e,t,i){var r=ct(i);yt(e,{name:t=ft(t),fromWireType:function(e){return e},toWireType:function(e,t){if("number"!=typeof t&&"boolean"!=typeof t)throw new TypeError('Cannot convert "'+Si(t)+'" to '+this.name);return t},argPackAdvance:8,readValueFromPointer:Ii(t,r),destructorFunction:null})}function Ai(e,t,i,r,n,s){var a=pi(t,i);e=ft(e),n=oi(r,n),kt(e,(function(){ui("Cannot call "+e+" due to unbound types",a)}),t-1),ot([],a,(function(i){var r=[i[0],null].concat(i.slice(1));return si(e,mi(e,r,null,n,s),t-1),[]}))}function Di(e,t,i){switch(t){case 0:return i?function(e){return U[e>>>0]}:function(e){return k[e>>>0]};case 1:return i?function(e){return B[e>>>1]}:function(e){return H[e>>>1]};case 2:return i?function(e){return G[e>>>2]}:function(e){return z[e>>>2]};default:throw new TypeError("Unknown integer type: "+e)}}function Oi(e,t,i,r,n){t=ft(t),-1===n&&(n=4294967295);var s=ct(i),a=function(e){return e};if(0===r){var o=32-8*i;a=function(e){return e<>>o}}var l=-1!=t.indexOf("unsigned");yt(e,{name:t,fromWireType:a,toWireType:function(e,i){if("number"!=typeof i&&"boolean"!=typeof i)throw new TypeError('Cannot convert "'+Si(i)+'" to '+this.name);if(in)throw new TypeError('Passing a number "'+Si(i)+'" from JS side to C/C++ side to an argument of type "'+t+'", which is outside the valid range ['+r+", "+n+"]!");return l?i>>>0:0|i},argPackAdvance:8,readValueFromPointer:Di(t,s,0!==r),destructorFunction:null})}function Ri(e,t,i){var r=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][t];function n(e){var t=z,i=t[(e>>=2)>>>0],n=t[e+1>>>0];return new r(F,n,i)}yt(e,{name:i=ft(i),fromWireType:n,argPackAdvance:8,readValueFromPointer:n},{ignoreDuplicateRegistrations:!0})}function Ci(e,t){var i="std::string"===(t=ft(t));yt(e,{name:t,fromWireType:function(e){var t,r=z[e>>>2];if(i)for(var n=e+4,s=0;s<=r;++s){var a=e+4+s;if(s==r||0==k[a>>>0]){var o=C(n,a-n);void 0===t?t=o:(t+=String.fromCharCode(0),t+=o),n=a+1}}else{var l=new Array(r);for(s=0;s>>0]);t=l.join("")}return Br(e),t},toWireType:function(e,t){t instanceof ArrayBuffer&&(t=new Uint8Array(t));var r="string"==typeof t;r||t instanceof Uint8Array||t instanceof Uint8ClampedArray||t instanceof Int8Array||gt("Cannot pass non-string to std::string");var n=(i&&r?function(){return L(t)}:function(){return t.length})(),s=Fr(4+n+1);if(z[(s>>>=0)>>>2]=n,i&&r)P(t,s+4,n+1);else if(r)for(var a=0;a255&&(Br(s),gt("String has UTF-16 code units that do not fit in 8 bits")),k[s+4+a>>>0]=o}else for(a=0;a>>0]=t[a];return null!==e&&e.push(Br,s),s},argPackAdvance:8,readValueFromPointer:Ke,destructorFunction:function(e){Br(e)}})}function Ni(e,t,i){var r,n,s,a,o;i=ft(i),2===t?(r=Y,n=X,a=q,s=function(){return H},o=1):4===t&&(r=Z,n=K,a=$,s=function(){return z},o=2),yt(e,{name:i,fromWireType:function(e){for(var i,n=z[e>>>2],a=s(),l=e+4,h=0;h<=n;++h){var u=e+4+h*t;if(h==n||0==a[u>>>o]){var c=r(l,u-l);void 0===i?i=c:(i+=String.fromCharCode(0),i+=c),l=u+t}}return Br(e),i},toWireType:function(e,r){"string"!=typeof r&>("Cannot pass non-string to C++ string type "+i);var s=a(r),l=Fr(4+s+t);return z[(l>>>=0)>>>2]=s>>o,n(r,l+4,s+t),null!==e&&e.push(Br,l),l},argPackAdvance:8,readValueFromPointer:Ke,destructorFunction:function(e){Br(e)}})}function Pi(e,t,i,r,n,s){qe[e]={name:ft(t),rawConstructor:oi(i,r),rawDestructor:oi(n,s),elements:[]}}function Li(e,t,i,r,n,s,a,o,l){qe[e].elements.push({getterReturnType:t,getter:oi(i,r),getterContext:n,setterArgumentType:s,setter:oi(a,o),setterContext:l})}function Fi(e,t,i,r,n,s){ht[e]={name:ft(t),rawConstructor:oi(i,r),rawDestructor:oi(n,s),fields:[]}}function Ui(e,t,i,r,n,s,a,o,l,h){ht[e].fields.push({fieldName:ft(t),getterReturnType:i,getter:oi(r,n),getterContext:s,setterArgumentType:a,setter:oi(o,l),setterContext:h})}function ki(e,t){yt(e,{isVoid:!0,name:t=ft(t),argPackAdvance:0,fromWireType:function(){},toWireType:function(e,t){}})}function Bi(e){return e||gt("Cannot use deleted val. handle = "+e),vi[e].value}function Hi(e,t){var i=Je[e];return void 0===i&>(t+" has unknown type "+hi(e)),i}function Gi(e,t,i){e=Bi(e),t=Hi(t,"emval::as");var r=[],n=Ei(r);return G[i>>>2]=n,t.toWireType(r,e)}function zi(e,t){for(var i=new Array(e),r=0;r>2)+r>>>0],"parameter "+r);return i}function Vi(e,t,i,r){e=Bi(e);for(var n=zi(t,i),s=new Array(t),a=0;a4&&(vi[e].refcount+=1)}function $i(e,t){return(e=Bi(e))instanceof(t=Bi(t))}function Ji(e){return"number"==typeof(e=Bi(e))}function Qi(){return Ei([])}function er(e){return Ei(Yi(e))}function tr(){return Ei({})}function ir(e){Ze(vi[e].value),Ti(e)}function rr(e,t,i){e=Bi(e),t=Bi(t),i=Bi(i),e[t]=i}function nr(e,t){return Ei((e=Hi(e,"_emval_take_value")).readValueFromPointer(t))}function sr(){xe()}ji=p?function(){var e=process.hrtime();return 1e3*e[0]+e[1]/1e6}:"undefined"!=typeof dateNow?dateNow:function(){return performance.now()};var ar=!0;function or(e,t){var i;if(0===e)i=Date.now();else{if(1!==e&&4!==e||!ar)return Fe(28),-1;i=ji()}return G[t>>>2]=i/1e3|0,G[t+4>>>2]=i%1e3*1e3*1e3|0,0}function lr(e,t,i){k.copyWithin(e>>>0,t>>>0,t+i>>>0)}function hr(){return k.length}function ur(e){try{return M.grow(e-F.byteLength+65535>>>16),te(M.buffer),1}catch(e){}}function cr(e){e>>>=0;var t=hr(),i=4294967296;if(e>i)return!1;for(var r=1;r<=4;r*=2){var n=t*(1+.2/r);if(n=Math.min(n,e+100663296),ur(Math.min(i,ee(Math.max(16777216,e,n),65536))))return!0}return!1}var pr={};function dr(){return l||"./this.program"}function fr(){if(!fr.strings){var e={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:dr()};for(var t in pr)e[t]=pr[t];var i=[];for(var t in e)i.push(t+"="+e[t]);fr.strings=i}return fr.strings}function mr(e,t){try{var i=0;return fr().forEach((function(r,n){var s=t+i;G[e+4*n>>>2]=s,Q(r,s),i+=r.length+1})),0}catch(e){return(void 0===Ve||!(e instanceof Ve.ErrnoError))&&xe(e),e.errno}}function gr(e,t){try{var i=fr();G[e>>>2]=i.length;var r=0;return i.forEach((function(e){r+=e.length+1})),G[t>>>2]=r,0}catch(e){return(void 0===Ve||!(e instanceof Ve.ErrnoError))&&xe(e),e.errno}}function yr(e){try{var t=je.getStreamFromFD(e);return Ve.close(t),0}catch(e){return(void 0===Ve||!(e instanceof Ve.ErrnoError))&&xe(e),e.errno}}function vr(e,t,i,r){try{var n=je.getStreamFromFD(e),s=je.doReadv(n,t,i);return G[r>>>2]=s,0}catch(e){return(void 0===Ve||!(e instanceof Ve.ErrnoError))&&xe(e),e.errno}}function Tr(e,t,i,r,n){try{var s=je.getStreamFromFD(e),a=4294967296*i+(t>>>0),o=9007199254740992;return a<=-o||a>=o?-61:(Ve.llseek(s,a,r),Me=[s.position>>>0,(Ie=s.position,+Math.abs(Ie)>=1?Ie>0?(0|Math.min(+Math.floor(Ie/4294967296),4294967295))>>>0:~~+Math.ceil((Ie-+(~~Ie>>>0))/4294967296)>>>0:0)],G[n>>>2]=Me[0],G[n+4>>>2]=Me[1],s.getdents&&0===a&&0===r&&(s.getdents=null),0)}catch(e){return(void 0===Ve||!(e instanceof Ve.ErrnoError))&&xe(e),e.errno}}function xr(e,t,i,r){try{var n=je.getStreamFromFD(e),s=je.doWritev(n,t,i);return G[r>>>2]=s,0}catch(e){return(void 0===Ve||!(e instanceof Ve.ErrnoError))&&xe(e),e.errno}}function br(e){I(0|e)}function _r(e){return e%4==0&&(e%100!=0||e%400==0)}function Er(e,t){for(var i=0,r=0;r<=t;i+=e[r++]);return i}var wr=[31,29,31,30,31,30,31,31,30,31,30,31],Sr=[31,28,31,30,31,30,31,31,30,31,30,31];function Ir(e,t){for(var i=new Date(e.getTime());t>0;){var r=_r(i.getFullYear()),n=i.getMonth(),s=(r?wr:Sr)[n];if(!(t>s-i.getDate()))return i.setDate(i.getDate()+t),i;t-=s-i.getDate()+1,i.setDate(1),n<11?i.setMonth(n+1):(i.setMonth(0),i.setFullYear(i.getFullYear()+1))}return i}function Mr(e,t,i,r){var n=G[r+40>>>2],s={tm_sec:G[r>>>2],tm_min:G[r+4>>>2],tm_hour:G[r+8>>>2],tm_mday:G[r+12>>>2],tm_mon:G[r+16>>>2],tm_year:G[r+20>>>2],tm_wday:G[r+24>>>2],tm_yday:G[r+28>>>2],tm_isdst:G[r+32>>>2],tm_gmtoff:G[r+36>>>2],tm_zone:n?C(n):""},a=C(i),o={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var l in o)a=a.replace(new RegExp(l,"g"),o[l]);var h=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],u=["January","February","March","April","May","June","July","August","September","October","November","December"];function c(e,t,i){for(var r="number"==typeof e?e.toString():e||"";r.length0?1:0}var r;return 0===(r=i(e.getFullYear()-t.getFullYear()))&&0===(r=i(e.getMonth()-t.getMonth()))&&(r=i(e.getDate()-t.getDate())),r}function f(e){switch(e.getDay()){case 0:return new Date(e.getFullYear()-1,11,29);case 1:return e;case 2:return new Date(e.getFullYear(),0,3);case 3:return new Date(e.getFullYear(),0,2);case 4:return new Date(e.getFullYear(),0,1);case 5:return new Date(e.getFullYear()-1,11,31);case 6:return new Date(e.getFullYear()-1,11,30)}}function m(e){var t=Ir(new Date(e.tm_year+1900,0,1),e.tm_yday),i=new Date(t.getFullYear(),0,4),r=new Date(t.getFullYear()+1,0,4),n=f(i),s=f(r);return d(n,t)<=0?d(s,t)<=0?t.getFullYear()+1:t.getFullYear():t.getFullYear()-1}var g={"%a":function(e){return h[e.tm_wday].substring(0,3)},"%A":function(e){return h[e.tm_wday]},"%b":function(e){return u[e.tm_mon].substring(0,3)},"%B":function(e){return u[e.tm_mon]},"%C":function(e){return p((e.tm_year+1900)/100|0,2)},"%d":function(e){return p(e.tm_mday,2)},"%e":function(e){return c(e.tm_mday,2," ")},"%g":function(e){return m(e).toString().substring(2)},"%G":function(e){return m(e)},"%H":function(e){return p(e.tm_hour,2)},"%I":function(e){var t=e.tm_hour;return 0==t?t=12:t>12&&(t-=12),p(t,2)},"%j":function(e){return p(e.tm_mday+Er(_r(e.tm_year+1900)?wr:Sr,e.tm_mon-1),3)},"%m":function(e){return p(e.tm_mon+1,2)},"%M":function(e){return p(e.tm_min,2)},"%n":function(){return"\n"},"%p":function(e){return e.tm_hour>=0&&e.tm_hour<12?"AM":"PM"},"%S":function(e){return p(e.tm_sec,2)},"%t":function(){return"\t"},"%u":function(e){return e.tm_wday||7},"%U":function(e){var t=new Date(e.tm_year+1900,0,1),i=0===t.getDay()?t:Ir(t,7-t.getDay()),r=new Date(e.tm_year+1900,e.tm_mon,e.tm_mday);if(d(i,r)<0){var n=Er(_r(r.getFullYear())?wr:Sr,r.getMonth()-1)-31,s=31-i.getDate()+n+r.getDate();return p(Math.ceil(s/7),2)}return 0===d(i,t)?"01":"00"},"%V":function(e){var t,i=new Date(e.tm_year+1900,0,4),r=new Date(e.tm_year+1901,0,4),n=f(i),s=f(r),a=Ir(new Date(e.tm_year+1900,0,1),e.tm_yday);return d(a,n)<0?"53":d(s,a)<=0?"01":(t=n.getFullYear()=0;return t=(t=Math.abs(t)/60)/60*100+t%60,(i?"+":"-")+String("0000"+t).slice(-4)},"%Z":function(e){return e.tm_zone},"%%":function(){return"%"}};for(var l in g)a.indexOf(l)>=0&&(a=a.replace(new RegExp(l,"g"),g[l](s)));var y=Cr(a,!1);return y.length>t?0:(J(y,e),y.length-1)}function Ar(e,t,i,r){return Mr(e,t,i,r)}var Dr=function(e,t,i,r){e||(e=this),this.parent=e,this.mount=e.mount,this.mounted=null,this.id=Ve.nextInode++,this.name=t,this.mode=i,this.node_ops={},this.stream_ops={},this.rdev=r},Or=365,Rr=146;function Cr(e,t,i){var r=i>0?i:L(e)+1,n=new Array(r),s=N(e,n,0,n.length);return t&&(n.length=s),n}Object.defineProperties(Dr.prototype,{read:{get:function(){return(this.mode&Or)===Or},set:function(e){e?this.mode|=Or:this.mode&=~Or}},write:{get:function(){return(this.mode&Rr)===Rr},set:function(e){e?this.mode|=Rr:this.mode&=~Rr}},isFolder:{get:function(){return Ve.isDir(this.mode)}},isDevice:{get:function(){return Ve.isChrdev(this.mode)}}}),Ve.FSNode=Dr,Ve.staticInit(),n.FS_createPath=Ve.createPath,n.FS_createDataFile=Ve.createDataFile,n.FS_createPreloadedFile=Ve.createPreloadedFile,n.FS_createLazyFile=Ve.createLazyFile,n.FS_createDevice=Ve.createDevice,n.FS_unlink=Ve.unlink,st=n.InternalError=nt(Error,"InternalError"),pt(),mt=n.BindingError=nt(Error,"BindingError"),Pt(),ri(),$t(),li=n.UnboundTypeError=nt(Error,"UnboundTypeError"),_i(),se.push({func:function(){Lr()}});var Nr,Pr={x:Le,A:We,P:Ye,Q:Xe,U:lt,s:ut,S:vt,v:ci,u:di,d:gi,R:wi,C:Mi,h:Ai,m:Oi,k:Ri,D:Ci,w:Ni,V:Pi,g:Li,t:Fi,j:Ui,T:ki,q:Gi,W:Vi,b:Ti,F:qi,n:Zi,l:Ki,N:$i,E:Ji,y:Qi,f:er,r:tr,p:ir,i:rr,e:nr,c:sr,M:or,I:lr,o:cr,K:mr,L:gr,B:yr,O:vr,G:Tr,z:xr,a:M,H:br,J:Ar},Lr=(Re(),n.___wasm_call_ctors=function(){return(Lr=n.___wasm_call_ctors=n.asm.Y).apply(null,arguments)}),Fr=(n._main=function(){return(n._main=n.asm.Z).apply(null,arguments)},n._malloc=function(){return(Fr=n._malloc=n.asm._).apply(null,arguments)}),Ur=n.___getTypeName=function(){return(Ur=n.___getTypeName=n.asm.$).apply(null,arguments)},kr=(n.___embind_register_native_and_builtin_types=function(){return(n.___embind_register_native_and_builtin_types=n.asm.aa).apply(null,arguments)},n.___errno_location=function(){return(kr=n.___errno_location=n.asm.ba).apply(null,arguments)}),Br=n._free=function(){return(Br=n._free=n.asm.ca).apply(null,arguments)};function Hr(e){this.name="ExitStatus",this.message="Program terminated with exit("+e+")",this.status=e}function Gr(e){var t=n._main;try{Vr(t(0,0),!0)}catch(e){if(e instanceof Hr)return;if("unwind"==e)return void(S=!0);var i=e;e&&"object"==typeof e&&e.stack&&(i=[e,e.stack]),b("exception thrown: "+i),h(1,e)}}function zr(e){function i(){Nr||(Nr=!0,n.calledRun=!0,!A&&(he(),ue(),t(n),n.onRuntimeInitialized&&n.onRuntimeInitialized(),jr&&Gr(),pe()))}e=e||o,me>0||(le(),me>0)||(n.setStatus?(n.setStatus("Running..."),setTimeout((function(){setTimeout((function(){n.setStatus("")}),1),i()}),1)):i())}function Vr(e,t){t&&S&&0===e||(S||(ce(),n.onExit&&n.onExit(e),A=!0),h(e,new Hr(e)))}if(n.dynCall_jiji=function(){return(n.dynCall_jiji=n.asm.da).apply(null,arguments)},n.dynCall_viijii=function(){return(n.dynCall_viijii=n.asm.ea).apply(null,arguments)},n.dynCall_iiiiiijj=function(){return(n.dynCall_iiiiiijj=n.asm.fa).apply(null,arguments)},n.dynCall_iiiiij=function(){return(n.dynCall_iiiiij=n.asm.ga).apply(null,arguments)},n.dynCall_iiiiijj=function(){return(n.dynCall_iiiiijj=n.asm.ha).apply(null,arguments)},n.addRunDependency=ve,n.removeRunDependency=Te,n.FS_createPath=Ve.createPath,n.FS_createDataFile=Ve.createDataFile,n.FS_createPreloadedFile=Ve.createPreloadedFile,n.FS_createLazyFile=Ve.createLazyFile,n.FS_createDevice=Ve.createDevice,n.FS_unlink=Ve.unlink,n.FS=Ve,ye=function e(){Nr||zr(),Nr||(ye=e)},n.run=zr,n.preInit)for("function"==typeof n.preInit&&(n.preInit=[n.preInit]);n.preInit.length>0;)n.preInit.pop()();var jr=!0;return n.noInitialRun&&(jr=!1),S=!0,zr(),e.ready});"object"==typeof e&&"object"==typeof t?t.exports=r:"function"==typeof define&&define.amd?define([],(function(){return r})):"object"==typeof e&&(e.WebIFCWasm=r)}}),iEt=3821786052,nEt=2296667514,sEt=3630933823,aEt=4288193352,oEt=2874132201,lEt=618182010,cEt=1635779807,uEt=2603310189,hEt=3406155212,pEt=1634111441,dEt=177149247,fEt=1411407467,mEt=3352864051,gEt=2056796094,vEt=1871374353,yEt=3087945054,TEt=3001207471,EEt=325726236,bEt=749761778,xEt=3199563722,IEt=2483840362,_Et=3379348081,SEt=3239324667,wEt=4263986512,REt=53199957,MEt=2029264950,DEt=3512275521,CEt=1674181508,AEt=669184980,OEt=639542469,PEt=411424972,NEt=130549933,LEt=3869604511,FEt=3798115385,HEt=1310608509,UEt=2705031697,BEt=3460190687,kEt=3207858831,GEt=277319702,VEt=1532957894,zEt=4261334040,jEt=3125803723,WEt=2740243338,qEt=1967976161,YEt=2461110595,XEt=2887950389,$Et=167062518,KEt=753842376,ZEt=2906023776,JEt=819618141,QEt=4196446775,e1t=3649138523,t1t=616511568,r1t=1334484129,i1t=32344328,n1t=231477066,s1t=3649129432,a1t=2736907675,o1t=4037036970,l1t=1136057603,c1t=1560379544,u1t=3367102660,h1t=1387855156,p1t=2069777674,d1t=1260505505,f1t=4182860854,m1t=2581212453,g1t=2713105998,v1t=644574406,y1t=963979645,T1t=4031249490,E1t=3299480353,b1t=2979338954,x1t=39481116,I1t=1095909175,_1t=1909888760,S1t=1950629157,w1t=3124254112,R1t=1177604601,M1t=2938176219,D1t=2188180465,C1t=2898889636,A1t=635142910,O1t=395041908,P1t=3758799889,N1t=3293546465,L1t=1051757585,F1t=2674252688,H1t=4217484030,U1t=1285652485,B1t=3999819293,k1t=3203706013,G1t=1123145078,V1t=574549367,z1t=1675464909,j1t=2059837836,W1t=59481748,q1t=3749851601,Y1t=3486308946,X1t=3331915920,$1t=1416205885,K1t=3150382593,Z1t=3902619387,J1t=2951183804,Q1t=3296154744,ebt=2197970202,tbt=2611217952,rbt=2937912522,ibt=1383045692,nbt=1062206242,sbt=1677625105,abt=3893394355,obt=747523909,lbt=647927063,cbt=2205249479,ubt=639361253,hbt=2301859152,pbt=776857604,dbt=3285139300,fbt=3264961684,mbt=843113511,gbt=905975707,vbt=300633059,ybt=3221913625,Tbt=400855858,Ebt=2542286263,bbt=3875453745,xbt=3732776249,Ibt=15328376,_bt=2485617015,Sbt=1485152156,wbt=3571504051,Rbt=3850581409,Mbt=2272882330,Dbt=2816379211,Cbt=2510884976,Abt=370225590,Obt=1981873012,Pbt=2859738748,Nbt=45288368,Lbt=2614616156,Fbt=2732653382,Hbt=775493141,Ubt=1959218052,Bbt=3898045240,kbt=2185764099,Gbt=1060000209,Vbt=4105962743,zbt=488727124,jbt=1525564444,Wbt=2559216714,qbt=2574617495,Ybt=3419103109,Xbt=3050246964,$bt=3293443760,Kbt=25142252,Zbt=578613899,Jbt=2889183280,Qbt=2713554722,ext=4136498852,txt=335055490,rxt=3640358203,ixt=2954562838,nxt=1785450214,sxt=1466758467,axt=3895139033,oxt=1419761937,lxt=602808272,cxt=1973544240,uxt=1916426348,hxt=3295246426,pxt=1815067380,dxt=2506170314,fxt=2147822146,mxt=539742890,gxt=3495092785,vxt=1457835157,yxt=2601014836,Txt=2827736869,Ext=2629017746,bxt=1186437898,xxt=3800577675,Ixt=1105321065,_xt=2367409068,Sxt=3510044353,wxt=1213902940,Rxt=4074379575,Mxt=3961806047,Dxt=3426335179,Cxt=1306400036,Axt=3632507154,Oxt=1765591967,Pxt=1045800335,Nxt=2949456006,Lxt=32440307,Fxt=1335981549,Hxt=2635815018,Uxt=1945343521,Bxt=1052013943,kxt=1599208980,Gxt=562808652,Vxt=1062813311,zxt=2063403501,jxt=1945004755,Wxt=3256556792,qxt=3040386961,Yxt=3849074793,Xxt=3041715199,$xt=3205830791,Kxt=1154170062,Zxt=770865208,Jxt=3732053477,Qxt=395920057,eIt=2963535650,tIt=1714330368,rIt=3242481149,iIt=526551008,nIt=2323601079,sIt=445594917,aIt=4006246654,oIt=342316401,lIt=869906466,cIt=3518393246,uIt=3760055223,hIt=1360408905,pIt=2030761528,dIt=3900360178,fIt=476780140,mIt=1472233963,gIt=1904799276,vIt=663422040,yIt=862014818,TIt=2417008758,EIt=3310460725,bIt=3277789161,xIt=264262732,IIt=1534661035,_It=402227799,SIt=1217240411,wIt=1003880860,RIt=712377611,MIt=1758889154,DIt=4123344466,CIt=2397081782,AIt=1623761950,OIt=2590856083,PIt=1883228015,NIt=339256511,LIt=2777663545,FIt=1704287377,HIt=2835456948,UIt=1658829314,BIt=2107101300,kIt=2814081492,GIt=132023988,VIt=3747195512,zIt=3174744832,jIt=484807127,WIt=3390157468,qIt=4148101412,YIt=211053100,XIt=4024345920,$It=297599258,KIt=4294318154,ZIt=3200245327,JIt=1437805879,QIt=1209101575,e_t=2853485674,t_t=2242383968,r_t=1040185647,i_t=3548104201,n_t=477187591,s_t=2804161546,a_t=2556980723,o_t=2047409740,l_t=1809719519,c_t=803316827,u_t=3008276851,h_t=807026263,p_t=3737207727,d_t=24185140,f_t=1310830890,m_t=4219587988,g_t=3415622556,v_t=346874300,y_t=647756555,T_t=2489546625,E_t=2827207264,b_t=2143335405,x_t=1287392070,I_t=738692330,__t=374418227,S_t=315944413,w_t=819412036,R_t=1810631287,M_t=1426591983,D_t=4222183408,C_t=2652556860,A_t=2058353004,O_t=3907093117,P_t=4278956645,N_t=3198132628,L_t=182646315,F_t=4037862832,H_t=2188021234,U_t=3815607619,B_t=3132237377,k_t=1482959167,G_t=987401354,V_t=1834744321,z_t=707683696,j_t=1339347760,W_t=2223149337,q_t=2297155007,Y_t=3508470533,X_t=3009222698,$_t=900683007,K_t=1893162501,Z_t=263784265,J_t=4238390223,Q_t=1509553395,eSt=1268542332,tSt=3493046030,rSt=4095422895,iSt=987898635,nSt=3448662350,sSt=2453401579,aSt=4142052618,oSt=3590301190,lSt=3009204131,cSt=852622518,uSt=178086475,hSt=2706460486,pSt=812098782,dSt=3319311131,fSt=1251058090,mSt=2068733104,gSt=1806887404,vSt=1484403080,ySt=3905492369,TSt=3570813810,ESt=2571569899,bSt=178912537,xSt=2294589976,ISt=1437953363,_St=2133299955,SSt=4175244083,wSt=3946677679,RSt=3113134337,MSt=2391368822,DSt=3741457305,CSt=3020489413,ASt=2176052936,OSt=4288270099,PSt=572779678,NSt=3827777499,LSt=428585644,FSt=1585845231,HSt=76236018,USt=1051575348,BSt=2655187982,kSt=3452421091,GSt=4162380809,VSt=629592764,zSt=1161773419,jSt=1566485204,WSt=1402838566,qSt=125510826,YSt=2604431987,XSt=4266656042,$St=1520743889,KSt=3422422726,ZSt=1281925730,JSt=3092502836,QSt=388784114,ewt=1154579445,twt=2624227202,rwt=1008929658,iwt=1425443689,nwt=3057273783,swt=2347385850,awt=1838606355,owt=1847130766,lwt=3708119e3,cwt=2852063980,uwt=760658860,hwt=2022407955,pwt=248100487,dwt=3303938423,fwt=1303795690,mwt=1847252529,gwt=2199411900,vwt=2235152071,ywt=164193824,Twt=3079605661,Ewt=3404854881,bwt=552965576,xwt=3265635763,Iwt=853536259,_wt=1507914824,Swt=2597039031,wwt=377706215,Rwt=2108223431,Mwt=1437502449,Dwt=1114901282,Cwt=1073191201,Awt=1911478936,Owt=3181161470,Pwt=3368373690,Nwt=2998442950,Lwt=2706619895,Fwt=2474470126,Hwt=977012517,Uwt=1918398963,Bwt=3888040117,kwt=219451334,Gwt=3701648758,Vwt=2251480897,zwt=4143007308,jwt=590820931,Wwt=3388369263,qwt=3505215534,Ywt=2485787929,Xwt=2665983363,$wt=3588315303,Kwt=3079942009,Zwt=4251960020,Jwt=1411181986,Qwt=643959842,eRt=1029017970,tRt=144952367,rRt=3694346114,iRt=2837617999,nRt=1207048766,sRt=2529465313,aRt=2519244187,oRt=1682466193,lRt=2382730787,cRt=3566463478,uRt=3327091369,hRt=2077209135,pRt=101040310,dRt=3021840470,fRt=2483315170,mRt=2226359599,gRt=1687234759,vRt=1158309216,yRt=310824031,TRt=804291784,ERt=3612865200,bRt=4231323485,xRt=597895409,IRt=2004835150,_Rt=603570806,SRt=1663979128,wRt=220341763,RRt=3171933400,MRt=1156407060,DRt=4017108033,CRt=2067069095,ARt=4022376103,ORt=1423911732,PRt=2924175390,NRt=2775532180,LRt=2839578677,FRt=3724593414,HRt=3740093272,URt=1946335990,BRt=3355820592,kRt=759155922,GRt=2559016684,VRt=3727388367,zRt=3778827333,jRt=3967405729,WRt=1775413392,qRt=677532197,YRt=2022622350,XRt=1304840413,$Rt=3119450353,KRt=2417041796,ZRt=2744685151,JRt=569719735,QRt=2945172077,eMt=4208778838,tMt=673634403,rMt=2095639259,iMt=3958567839,nMt=2802850158,pA=103090709,sMt=653396225,aMt=2904328755,oMt=3843373140,lMt=3651124850,cMt=2598011224,uMt=986844984,hMt=871118103,pMt=1680319473,dMt=148025276,fMt=4166981789,mMt=3710013099,gMt=2752243245,vMt=941946838,yMt=1451395588,TMt=3357820518,EMt=492091185,bMt=3650150729,xMt=110355661,IMt=3521284610,_Mt=1482703590,SMt=738039164,wMt=2295281155,RMt=655969474,MMt=1842657554,DMt=3219374653,CMt=90941305,AMt=2250791053,OMt=2044713172,PMt=2093928680,NMt=931644368,LMt=2090586900,FMt=3252649465,HMt=2405470396,UMt=825690147,BMt=2262370178,kMt=2893384427,GMt=3024970846,VMt=3283111854,zMt=2324767716,jMt=1469900589,WMt=1232101972,qMt=683857671,YMt=2770003689,XMt=3615266464,$Mt=2798486643,KMt=3454111270,ZMt=3915482550,JMt=2433181523,QMt=4021432810,eDt=3413951693,tDt=1580146022,rDt=3765753017,iDt=979691226,nDt=2572171363,sDt=3027567501,aDt=964333572,oDt=2320036040,lDt=2310774935,zk=160246688,cDt=3939117080,uDt=1683148259,hDt=2495723537,pDt=1307041759,dDt=1027710054,fDt=4278684876,mDt=2857406711,gDt=205026976,vDt=1865459582,yDt=4095574036,TDt=919958153,EDt=2728634034,bDt=982818633,xDt=3840914261,jk=2655215786,IDt=826625072,_Dt=1204542856,SDt=3945020480,wDt=4201705270,RDt=3190031847,MDt=2127690289,DDt=1638771189,CDt=504942748,ADt=3678494232,Wk=3242617779,ODt=886880790,PDt=2802773753,NDt=2565941209,LDt=2551354335,FDt=693640335,HDt=1462361463,qk=4186316022,UDt=307848117,Yk=781010003,BDt=3940055652,kDt=279856033,GDt=427948657,VDt=3268803585,zDt=1441486842,jDt=750771296,WDt=1245217292,qDt=4122056220,YDt=366585022,XDt=3451746338,$Dt=3523091289,KDt=1521410863,ZDt=1401173127,JDt=478536968,QDt=816062949,eCt=1076942058,tCt=3377609919,rCt=3008791417,iCt=1660063152,nCt=2914609552,sCt=2943643501,aCt=1608871552,oCt=2439245199,lCt=1042787934,cCt=1856042241,uCt=3243963512,hCt=4158566097,pCt=3626867408,dCt=2016517767,fCt=2781568857,mCt=2341007311,gCt=2778083089,vCt=448429030,yCt=3053780830,TCt=1768891740,ECt=1054537805,bCt=2157484638,xCt=2042790032,ICt=4165799628,_Ct=1862484736,SCt=1290935644,wCt=1509187699,RCt=4086658281,MCt=1783015770,DCt=1329646415,CCt=4074543187,ACt=867548509,OCt=3982875396,PCt=4240577450,NCt=4124623270,LCt=3692461612,FCt=3663146110,HCt=4097777520,UCt=1529196076,BCt=3127900445,kCt=3027962421,GCt=2533589738,VCt=2609359061,zCt=3420628829,jCt=1072016465,WCt=723233188,qCt=3856911033,YCt=1999602285,XCt=1305183839,$Ct=3812236995,KCt=1412071761,ZCt=710998568,JCt=2706606064,QCt=3893378262,eAt=463610769,tAt=2481509218,rAt=451544542,iAt=4015995234,nAt=1404847402,sAt=3112655638,aAt=331165859,oAt=4252922144,lAt=1039846685,cAt=338393293,uAt=682877961,hAt=3544373492,pAt=2515109513,dAt=1179482911,fAt=2273995522,mAt=1004757350,gAt=4243806635,vAt=214636428,yAt=2445595289,TAt=2757150158,EAt=3136571912,bAt=1807405624,xAt=2162789131,IAt=385403989,_At=3478079324,SAt=1252848954,wAt=1595516126,RAt=609421318,MAt=2668620305,DAt=2473145415,CAt=1973038258,AAt=1597423693,OAt=1190533807,PAt=2525727697,NAt=3408363356,LAt=530289379,FAt=1621171031,HAt=2082059205,UAt=734778138,BAt=1235345126,kAt=3689010777,GAt=2986769608,VAt=3657597509,zAt=1975003073,jAt=3979015343,WAt=2218152070,qAt=603775116,YAt=2830218821,XAt=3958052878,$At=3049322572,KAt=148013059,ZAt=4095615324,JAt=2233826070,QAt=2513912981,eOt=699246055,tOt=2028607225,rOt=3101698114,iOt=2809605785,nOt=4124788165,sOt=2934153892,aOt=1300840506,oOt=3303107099,lOt=1607154358,cOt=1878645084,uOt=846575682,hOt=1351298697,pOt=626085974,dOt=2247615214,fOt=1260650574,mOt=1096409881,gOt=230924584,vOt=1162798199,yOt=2315554128,TOt=2254336722,EOt=413509423,bOt=1580310250,xOt=3071757647,IOt=985171141,_Ot=2043862942,SOt=531007025,wOt=812556717,ROt=5716631,MOt=3473067441,DOt=1549132990,COt=2771591690,AOt=3206491090,OOt=912023232,POt=3824725483,NOt=2347447852,LOt=3081323446,FOt=3663046924,HOt=2281632017,UOt=2415094496,BOt=2387106220,kOt=901063453,GOt=4282788508,VOt=3124975700,zOt=1447204868,jOt=1983826977,WOt=2636378356,qOt=1640371178,YOt=280115917,XOt=1742049831,$Ot=2552916305,KOt=1210645708,ZOt=3611470254,JOt=1199560280,QOt=3101149627,e3t=581633288,t3t=1377556343,r3t=1735638870,i3t=1935646853,n3t=3825984169,s3t=1692211062,a3t=2595432518,o3t=1620046519,l3t=2097647324,c3t=2715220739,u3t=2916149573,h3t=1229763772,p3t=3593883385,d3t=3026737570,f3t=1600972822,m3t=1628702193,g3t=3736923433,v3t=2347495698,y3t=3698973494,T3t=427810014,E3t=180925521,b3t=630975310,x3t=3179687236,I3t=4292641817,_3t=1911125066,S3t=4207607924,w3t=728799441,R3t=1417489154,M3t=2799835756,D3t=2759199220,C3t=1907098498,A3t=1530820697,O3t=3956297820,P3t=2391383451,N3t=3313531582,L3t=2769231204,F3t=891718957,H3t=926996030,U3t=2391406946,B3t=4156078855,k3t=3512223829,G3t=1898987631,V3t=4237592921,z3t=1133259667,j3t=3304561284,W3t=336235671,q3t=512836454,Y3t=486154966,X3t=1299126871,$3t=4009809668,K3t=4088093105,Z3t=1028945134,J3t=4218914973,Q3t=3342526732,ePt=1236880293,tPt=2543172580,rPt=1033361043,O={};O[iEt]=e=>rfe.FromTape(e.ID,e.type,e.arguments),O[nEt]=e=>ife.FromTape(e.ID,e.type,e.arguments),O[sEt]=e=>nfe.FromTape(e.ID,e.type,e.arguments),O[aEt]=e=>sfe.FromTape(e.ID,e.type,e.arguments),O[oEt]=e=>afe.FromTape(e.ID,e.type,e.arguments),O[lEt]=e=>ofe.FromTape(e.ID,e.type,e.arguments),O[cEt]=e=>lfe.FromTape(e.ID,e.type,e.arguments),O[uEt]=e=>cfe.FromTape(e.ID,e.type,e.arguments),O[hEt]=e=>ufe.FromTape(e.ID,e.type,e.arguments),O[pEt]=e=>hfe.FromTape(e.ID,e.type,e.arguments),O[dEt]=e=>pfe.FromTape(e.ID,e.type,e.arguments),O[fEt]=e=>dfe.FromTape(e.ID,e.type,e.arguments),O[mEt]=e=>ffe.FromTape(e.ID,e.type,e.arguments),O[gEt]=e=>mfe.FromTape(e.ID,e.type,e.arguments),O[vEt]=e=>gfe.FromTape(e.ID,e.type,e.arguments),O[yEt]=e=>vfe.FromTape(e.ID,e.type,e.arguments),O[TEt]=e=>yfe.FromTape(e.ID,e.type,e.arguments),O[EEt]=e=>Tfe.FromTape(e.ID,e.type,e.arguments),O[bEt]=e=>Efe.FromTape(e.ID,e.type,e.arguments),O[xEt]=e=>bfe.FromTape(e.ID,e.type,e.arguments),O[IEt]=e=>xfe.FromTape(e.ID,e.type,e.arguments),O[_Et]=e=>Ife.FromTape(e.ID,e.type,e.arguments),O[SEt]=e=>_fe.FromTape(e.ID,e.type,e.arguments),O[wEt]=e=>Sfe.FromTape(e.ID,e.type,e.arguments),O[REt]=e=>wfe.FromTape(e.ID,e.type,e.arguments),O[MEt]=e=>Rfe.FromTape(e.ID,e.type,e.arguments),O[DEt]=e=>Mfe.FromTape(e.ID,e.type,e.arguments),O[CEt]=e=>Dfe.FromTape(e.ID,e.type,e.arguments),O[AEt]=e=>Cfe.FromTape(e.ID,e.type,e.arguments),O[OEt]=e=>Afe.FromTape(e.ID,e.type,e.arguments),O[PEt]=e=>Ofe.FromTape(e.ID,e.type,e.arguments),O[NEt]=e=>Pfe.FromTape(e.ID,e.type,e.arguments),O[LEt]=e=>Nfe.FromTape(e.ID,e.type,e.arguments),O[FEt]=e=>Lfe.FromTape(e.ID,e.type,e.arguments),O[HEt]=e=>Ffe.FromTape(e.ID,e.type,e.arguments),O[UEt]=e=>Hfe.FromTape(e.ID,e.type,e.arguments),O[BEt]=e=>Ufe.FromTape(e.ID,e.type,e.arguments),O[kEt]=e=>Bfe.FromTape(e.ID,e.type,e.arguments),O[GEt]=e=>kfe.FromTape(e.ID,e.type,e.arguments),O[VEt]=e=>Gfe.FromTape(e.ID,e.type,e.arguments),O[zEt]=e=>Vfe.FromTape(e.ID,e.type,e.arguments),O[jEt]=e=>zfe.FromTape(e.ID,e.type,e.arguments),O[WEt]=e=>jfe.FromTape(e.ID,e.type,e.arguments),O[qEt]=e=>Wfe.FromTape(e.ID,e.type,e.arguments),O[YEt]=e=>qfe.FromTape(e.ID,e.type,e.arguments),O[XEt]=e=>Yfe.FromTape(e.ID,e.type,e.arguments),O[$Et]=e=>Xfe.FromTape(e.ID,e.type,e.arguments),O[KEt]=e=>$fe.FromTape(e.ID,e.type,e.arguments),O[ZEt]=e=>Kfe.FromTape(e.ID,e.type,e.arguments),O[JEt]=e=>Zfe.FromTape(e.ID,e.type,e.arguments),O[QEt]=e=>Jfe.FromTape(e.ID,e.type,e.arguments),O[e1t]=e=>Qfe.FromTape(e.ID,e.type,e.arguments),O[t1t]=e=>eme.FromTape(e.ID,e.type,e.arguments),O[r1t]=e=>tme.FromTape(e.ID,e.type,e.arguments),O[i1t]=e=>rme.FromTape(e.ID,e.type,e.arguments),O[n1t]=e=>ime.FromTape(e.ID,e.type,e.arguments),O[s1t]=e=>nme.FromTape(e.ID,e.type,e.arguments),O[a1t]=e=>sme.FromTape(e.ID,e.type,e.arguments),O[o1t]=e=>ame.FromTape(e.ID,e.type,e.arguments),O[l1t]=e=>ome.FromTape(e.ID,e.type,e.arguments),O[c1t]=e=>lme.FromTape(e.ID,e.type,e.arguments),O[u1t]=e=>cme.FromTape(e.ID,e.type,e.arguments),O[h1t]=e=>ume.FromTape(e.ID,e.type,e.arguments),O[p1t]=e=>hme.FromTape(e.ID,e.type,e.arguments),O[d1t]=e=>pme.FromTape(e.ID,e.type,e.arguments),O[f1t]=e=>dme.FromTape(e.ID,e.type,e.arguments),O[m1t]=e=>fme.FromTape(e.ID,e.type,e.arguments),O[g1t]=e=>mme.FromTape(e.ID,e.type,e.arguments),O[v1t]=e=>gme.FromTape(e.ID,e.type,e.arguments),O[y1t]=e=>vme.FromTape(e.ID,e.type,e.arguments),O[T1t]=e=>yme.FromTape(e.ID,e.type,e.arguments),O[E1t]=e=>Tme.FromTape(e.ID,e.type,e.arguments),O[b1t]=e=>Eme.FromTape(e.ID,e.type,e.arguments),O[x1t]=e=>bme.FromTape(e.ID,e.type,e.arguments),O[I1t]=e=>xme.FromTape(e.ID,e.type,e.arguments),O[_1t]=e=>Ime.FromTape(e.ID,e.type,e.arguments),O[S1t]=e=>_me.FromTape(e.ID,e.type,e.arguments),O[w1t]=e=>Sme.FromTape(e.ID,e.type,e.arguments),O[R1t]=e=>wme.FromTape(e.ID,e.type,e.arguments),O[M1t]=e=>Rme.FromTape(e.ID,e.type,e.arguments),O[D1t]=e=>Mme.FromTape(e.ID,e.type,e.arguments),O[C1t]=e=>Dme.FromTape(e.ID,e.type,e.arguments),O[A1t]=e=>Cme.FromTape(e.ID,e.type,e.arguments),O[O1t]=e=>Ame.FromTape(e.ID,e.type,e.arguments),O[P1t]=e=>Ome.FromTape(e.ID,e.type,e.arguments),O[N1t]=e=>Pme.FromTape(e.ID,e.type,e.arguments),O[L1t]=e=>Nme.FromTape(e.ID,e.type,e.arguments),O[F1t]=e=>Lme.FromTape(e.ID,e.type,e.arguments),O[H1t]=e=>Fme.FromTape(e.ID,e.type,e.arguments),O[U1t]=e=>Hme.FromTape(e.ID,e.type,e.arguments),O[B1t]=e=>Ume.FromTape(e.ID,e.type,e.arguments),O[k1t]=e=>Bme.FromTape(e.ID,e.type,e.arguments),O[G1t]=e=>kme.FromTape(e.ID,e.type,e.arguments),O[V1t]=e=>Gme.FromTape(e.ID,e.type,e.arguments),O[z1t]=e=>Vme.FromTape(e.ID,e.type,e.arguments),O[j1t]=e=>zme.FromTape(e.ID,e.type,e.arguments),O[W1t]=e=>jme.FromTape(e.ID,e.type,e.arguments),O[q1t]=e=>Wme.FromTape(e.ID,e.type,e.arguments),O[Y1t]=e=>qme.FromTape(e.ID,e.type,e.arguments),O[X1t]=e=>Yme.FromTape(e.ID,e.type,e.arguments),O[$1t]=e=>Xme.FromTape(e.ID,e.type,e.arguments),O[K1t]=e=>$me.FromTape(e.ID,e.type,e.arguments),O[Z1t]=e=>Kme.FromTape(e.ID,e.type,e.arguments),O[J1t]=e=>Zme.FromTape(e.ID,e.type,e.arguments),O[Q1t]=e=>Jme.FromTape(e.ID,e.type,e.arguments),O[ebt]=e=>Qme.FromTape(e.ID,e.type,e.arguments),O[tbt]=e=>ege.FromTape(e.ID,e.type,e.arguments),O[rbt]=e=>tge.FromTape(e.ID,e.type,e.arguments),O[ibt]=e=>rge.FromTape(e.ID,e.type,e.arguments),O[nbt]=e=>ige.FromTape(e.ID,e.type,e.arguments),O[sbt]=e=>nge.FromTape(e.ID,e.type,e.arguments),O[abt]=e=>sge.FromTape(e.ID,e.type,e.arguments),O[obt]=e=>age.FromTape(e.ID,e.type,e.arguments),O[lbt]=e=>oge.FromTape(e.ID,e.type,e.arguments),O[cbt]=e=>lge.FromTape(e.ID,e.type,e.arguments),O[ubt]=e=>cge.FromTape(e.ID,e.type,e.arguments),O[hbt]=e=>uge.FromTape(e.ID,e.type,e.arguments),O[pbt]=e=>hge.FromTape(e.ID,e.type,e.arguments),O[dbt]=e=>pge.FromTape(e.ID,e.type,e.arguments),O[fbt]=e=>dge.FromTape(e.ID,e.type,e.arguments),O[mbt]=e=>fge.FromTape(e.ID,e.type,e.arguments),O[gbt]=e=>mge.FromTape(e.ID,e.type,e.arguments),O[vbt]=e=>gge.FromTape(e.ID,e.type,e.arguments),O[ybt]=e=>vge.FromTape(e.ID,e.type,e.arguments),O[Tbt]=e=>yge.FromTape(e.ID,e.type,e.arguments),O[Ebt]=e=>Tge.FromTape(e.ID,e.type,e.arguments),O[bbt]=e=>Ege.FromTape(e.ID,e.type,e.arguments),O[xbt]=e=>bge.FromTape(e.ID,e.type,e.arguments),O[Ibt]=e=>xge.FromTape(e.ID,e.type,e.arguments),O[_bt]=e=>Ige.FromTape(e.ID,e.type,e.arguments),O[Sbt]=e=>_ge.FromTape(e.ID,e.type,e.arguments),O[wbt]=e=>Sge.FromTape(e.ID,e.type,e.arguments),O[Rbt]=e=>wge.FromTape(e.ID,e.type,e.arguments),O[Mbt]=e=>Rge.FromTape(e.ID,e.type,e.arguments),O[Dbt]=e=>Mge.FromTape(e.ID,e.type,e.arguments),O[Cbt]=e=>Dge.FromTape(e.ID,e.type,e.arguments),O[Abt]=e=>Cge.FromTape(e.ID,e.type,e.arguments),O[Obt]=e=>Age.FromTape(e.ID,e.type,e.arguments),O[Pbt]=e=>Oge.FromTape(e.ID,e.type,e.arguments),O[Nbt]=e=>Pge.FromTape(e.ID,e.type,e.arguments),O[Lbt]=e=>Nge.FromTape(e.ID,e.type,e.arguments),O[Fbt]=e=>Lge.FromTape(e.ID,e.type,e.arguments),O[Hbt]=e=>Fge.FromTape(e.ID,e.type,e.arguments),O[Ubt]=e=>Hge.FromTape(e.ID,e.type,e.arguments),O[Bbt]=e=>Uge.FromTape(e.ID,e.type,e.arguments),O[kbt]=e=>Bge.FromTape(e.ID,e.type,e.arguments),O[Gbt]=e=>kge.FromTape(e.ID,e.type,e.arguments),O[Vbt]=e=>Gge.FromTape(e.ID,e.type,e.arguments),O[zbt]=e=>Vge.FromTape(e.ID,e.type,e.arguments),O[jbt]=e=>zge.FromTape(e.ID,e.type,e.arguments),O[Wbt]=e=>jge.FromTape(e.ID,e.type,e.arguments),O[qbt]=e=>Wge.FromTape(e.ID,e.type,e.arguments),O[Ybt]=e=>qge.FromTape(e.ID,e.type,e.arguments),O[Xbt]=e=>Yge.FromTape(e.ID,e.type,e.arguments),O[$bt]=e=>Xge.FromTape(e.ID,e.type,e.arguments),O[Kbt]=e=>$ge.FromTape(e.ID,e.type,e.arguments),O[Zbt]=e=>Kge.FromTape(e.ID,e.type,e.arguments),O[Jbt]=e=>Zge.FromTape(e.ID,e.type,e.arguments),O[Qbt]=e=>Jge.FromTape(e.ID,e.type,e.arguments),O[ext]=e=>Qge.FromTape(e.ID,e.type,e.arguments),O[txt]=e=>e0e.FromTape(e.ID,e.type,e.arguments),O[rxt]=e=>t0e.FromTape(e.ID,e.type,e.arguments),O[ixt]=e=>r0e.FromTape(e.ID,e.type,e.arguments),O[nxt]=e=>i0e.FromTape(e.ID,e.type,e.arguments),O[sxt]=e=>n0e.FromTape(e.ID,e.type,e.arguments),O[axt]=e=>s0e.FromTape(e.ID,e.type,e.arguments),O[oxt]=e=>a0e.FromTape(e.ID,e.type,e.arguments),O[lxt]=e=>o0e.FromTape(e.ID,e.type,e.arguments),O[cxt]=e=>l0e.FromTape(e.ID,e.type,e.arguments),O[uxt]=e=>c0e.FromTape(e.ID,e.type,e.arguments),O[hxt]=e=>u0e.FromTape(e.ID,e.type,e.arguments),O[pxt]=e=>h0e.FromTape(e.ID,e.type,e.arguments),O[dxt]=e=>p0e.FromTape(e.ID,e.type,e.arguments),O[fxt]=e=>d0e.FromTape(e.ID,e.type,e.arguments),O[mxt]=e=>f0e.FromTape(e.ID,e.type,e.arguments),O[gxt]=e=>m0e.FromTape(e.ID,e.type,e.arguments),O[vxt]=e=>g0e.FromTape(e.ID,e.type,e.arguments),O[yxt]=e=>v0e.FromTape(e.ID,e.type,e.arguments),O[Txt]=e=>y0e.FromTape(e.ID,e.type,e.arguments),O[Ext]=e=>T0e.FromTape(e.ID,e.type,e.arguments),O[bxt]=e=>E0e.FromTape(e.ID,e.type,e.arguments),O[xxt]=e=>b0e.FromTape(e.ID,e.type,e.arguments),O[Ixt]=e=>x0e.FromTape(e.ID,e.type,e.arguments),O[_xt]=e=>I0e.FromTape(e.ID,e.type,e.arguments),O[Sxt]=e=>_0e.FromTape(e.ID,e.type,e.arguments),O[wxt]=e=>S0e.FromTape(e.ID,e.type,e.arguments),O[Rxt]=e=>w0e.FromTape(e.ID,e.type,e.arguments),O[Mxt]=e=>R0e.FromTape(e.ID,e.type,e.arguments),O[Dxt]=e=>M0e.FromTape(e.ID,e.type,e.arguments),O[Cxt]=e=>D0e.FromTape(e.ID,e.type,e.arguments),O[Axt]=e=>C0e.FromTape(e.ID,e.type,e.arguments),O[Oxt]=e=>A0e.FromTape(e.ID,e.type,e.arguments),O[Pxt]=e=>O0e.FromTape(e.ID,e.type,e.arguments),O[Nxt]=e=>P0e.FromTape(e.ID,e.type,e.arguments),O[Lxt]=e=>N0e.FromTape(e.ID,e.type,e.arguments),O[Fxt]=e=>L0e.FromTape(e.ID,e.type,e.arguments),O[Hxt]=e=>F0e.FromTape(e.ID,e.type,e.arguments),O[Uxt]=e=>H0e.FromTape(e.ID,e.type,e.arguments),O[Bxt]=e=>U0e.FromTape(e.ID,e.type,e.arguments),O[kxt]=e=>B0e.FromTape(e.ID,e.type,e.arguments),O[Gxt]=e=>k0e.FromTape(e.ID,e.type,e.arguments),O[Vxt]=e=>G0e.FromTape(e.ID,e.type,e.arguments),O[zxt]=e=>V0e.FromTape(e.ID,e.type,e.arguments),O[jxt]=e=>z0e.FromTape(e.ID,e.type,e.arguments),O[Wxt]=e=>j0e.FromTape(e.ID,e.type,e.arguments),O[qxt]=e=>W0e.FromTape(e.ID,e.type,e.arguments),O[Yxt]=e=>q0e.FromTape(e.ID,e.type,e.arguments),O[Xxt]=e=>Y0e.FromTape(e.ID,e.type,e.arguments),O[$xt]=e=>X0e.FromTape(e.ID,e.type,e.arguments),O[Kxt]=e=>$0e.FromTape(e.ID,e.type,e.arguments),O[Zxt]=e=>K0e.FromTape(e.ID,e.type,e.arguments),O[Jxt]=e=>Z0e.FromTape(e.ID,e.type,e.arguments),O[Qxt]=e=>J0e.FromTape(e.ID,e.type,e.arguments),O[eIt]=e=>Q0e.FromTape(e.ID,e.type,e.arguments),O[tIt]=e=>eve.FromTape(e.ID,e.type,e.arguments),O[rIt]=e=>tve.FromTape(e.ID,e.type,e.arguments),O[iIt]=e=>rve.FromTape(e.ID,e.type,e.arguments),O[nIt]=e=>ive.FromTape(e.ID,e.type,e.arguments),O[sIt]=e=>nve.FromTape(e.ID,e.type,e.arguments),O[aIt]=e=>sve.FromTape(e.ID,e.type,e.arguments),O[oIt]=e=>ave.FromTape(e.ID,e.type,e.arguments),O[lIt]=e=>ove.FromTape(e.ID,e.type,e.arguments),O[cIt]=e=>lve.FromTape(e.ID,e.type,e.arguments),O[uIt]=e=>cve.FromTape(e.ID,e.type,e.arguments),O[hIt]=e=>uve.FromTape(e.ID,e.type,e.arguments),O[pIt]=e=>hve.FromTape(e.ID,e.type,e.arguments),O[dIt]=e=>pve.FromTape(e.ID,e.type,e.arguments),O[fIt]=e=>dve.FromTape(e.ID,e.type,e.arguments),O[mIt]=e=>fve.FromTape(e.ID,e.type,e.arguments),O[gIt]=e=>mve.FromTape(e.ID,e.type,e.arguments),O[vIt]=e=>gve.FromTape(e.ID,e.type,e.arguments),O[yIt]=e=>vve.FromTape(e.ID,e.type,e.arguments),O[TIt]=e=>yve.FromTape(e.ID,e.type,e.arguments),O[EIt]=e=>Tve.FromTape(e.ID,e.type,e.arguments),O[bIt]=e=>Eve.FromTape(e.ID,e.type,e.arguments),O[xIt]=e=>bve.FromTape(e.ID,e.type,e.arguments),O[IIt]=e=>xve.FromTape(e.ID,e.type,e.arguments),O[_It]=e=>Ive.FromTape(e.ID,e.type,e.arguments),O[SIt]=e=>_ve.FromTape(e.ID,e.type,e.arguments),O[wIt]=e=>Sve.FromTape(e.ID,e.type,e.arguments),O[RIt]=e=>wve.FromTape(e.ID,e.type,e.arguments),O[MIt]=e=>Rve.FromTape(e.ID,e.type,e.arguments),O[DIt]=e=>Mve.FromTape(e.ID,e.type,e.arguments),O[CIt]=e=>Dve.FromTape(e.ID,e.type,e.arguments),O[AIt]=e=>Cve.FromTape(e.ID,e.type,e.arguments),O[OIt]=e=>Ave.FromTape(e.ID,e.type,e.arguments),O[PIt]=e=>Ove.FromTape(e.ID,e.type,e.arguments),O[NIt]=e=>Pve.FromTape(e.ID,e.type,e.arguments),O[LIt]=e=>Nve.FromTape(e.ID,e.type,e.arguments),O[FIt]=e=>Lve.FromTape(e.ID,e.type,e.arguments),O[HIt]=e=>Fve.FromTape(e.ID,e.type,e.arguments),O[UIt]=e=>Hve.FromTape(e.ID,e.type,e.arguments),O[BIt]=e=>Uve.FromTape(e.ID,e.type,e.arguments),O[kIt]=e=>Bve.FromTape(e.ID,e.type,e.arguments),O[GIt]=e=>kve.FromTape(e.ID,e.type,e.arguments),O[VIt]=e=>Gve.FromTape(e.ID,e.type,e.arguments),O[zIt]=e=>Vve.FromTape(e.ID,e.type,e.arguments),O[jIt]=e=>zve.FromTape(e.ID,e.type,e.arguments),O[WIt]=e=>jve.FromTape(e.ID,e.type,e.arguments),O[qIt]=e=>Wve.FromTape(e.ID,e.type,e.arguments),O[YIt]=e=>qve.FromTape(e.ID,e.type,e.arguments),O[XIt]=e=>Yve.FromTape(e.ID,e.type,e.arguments),O[$It]=e=>Xve.FromTape(e.ID,e.type,e.arguments),O[KIt]=e=>$ve.FromTape(e.ID,e.type,e.arguments),O[ZIt]=e=>Kve.FromTape(e.ID,e.type,e.arguments),O[JIt]=e=>Zve.FromTape(e.ID,e.type,e.arguments),O[QIt]=e=>Jve.FromTape(e.ID,e.type,e.arguments),O[e_t]=e=>Qve.FromTape(e.ID,e.type,e.arguments),O[t_t]=e=>eye.FromTape(e.ID,e.type,e.arguments),O[r_t]=e=>tye.FromTape(e.ID,e.type,e.arguments),O[i_t]=e=>rye.FromTape(e.ID,e.type,e.arguments),O[n_t]=e=>iye.FromTape(e.ID,e.type,e.arguments),O[s_t]=e=>nye.FromTape(e.ID,e.type,e.arguments),O[a_t]=e=>sye.FromTape(e.ID,e.type,e.arguments),O[o_t]=e=>aye.FromTape(e.ID,e.type,e.arguments),O[l_t]=e=>oye.FromTape(e.ID,e.type,e.arguments),O[c_t]=e=>lye.FromTape(e.ID,e.type,e.arguments),O[u_t]=e=>cye.FromTape(e.ID,e.type,e.arguments),O[h_t]=e=>uye.FromTape(e.ID,e.type,e.arguments),O[p_t]=e=>hye.FromTape(e.ID,e.type,e.arguments),O[d_t]=e=>pye.FromTape(e.ID,e.type,e.arguments),O[f_t]=e=>dye.FromTape(e.ID,e.type,e.arguments),O[m_t]=e=>fye.FromTape(e.ID,e.type,e.arguments),O[g_t]=e=>mye.FromTape(e.ID,e.type,e.arguments),O[v_t]=e=>gye.FromTape(e.ID,e.type,e.arguments),O[y_t]=e=>vye.FromTape(e.ID,e.type,e.arguments),O[T_t]=e=>yye.FromTape(e.ID,e.type,e.arguments),O[E_t]=e=>Tye.FromTape(e.ID,e.type,e.arguments),O[b_t]=e=>Eye.FromTape(e.ID,e.type,e.arguments),O[x_t]=e=>bye.FromTape(e.ID,e.type,e.arguments),O[I_t]=e=>xye.FromTape(e.ID,e.type,e.arguments),O[__t]=e=>Iye.FromTape(e.ID,e.type,e.arguments),O[S_t]=e=>_ye.FromTape(e.ID,e.type,e.arguments),O[w_t]=e=>Sye.FromTape(e.ID,e.type,e.arguments),O[R_t]=e=>wye.FromTape(e.ID,e.type,e.arguments),O[M_t]=e=>Rye.FromTape(e.ID,e.type,e.arguments),O[D_t]=e=>Mye.FromTape(e.ID,e.type,e.arguments),O[C_t]=e=>Dye.FromTape(e.ID,e.type,e.arguments),O[A_t]=e=>Cye.FromTape(e.ID,e.type,e.arguments),O[O_t]=e=>Aye.FromTape(e.ID,e.type,e.arguments),O[P_t]=e=>Oye.FromTape(e.ID,e.type,e.arguments),O[N_t]=e=>Pye.FromTape(e.ID,e.type,e.arguments),O[L_t]=e=>Nye.FromTape(e.ID,e.type,e.arguments),O[F_t]=e=>Lye.FromTape(e.ID,e.type,e.arguments),O[H_t]=e=>Fye.FromTape(e.ID,e.type,e.arguments),O[U_t]=e=>Hye.FromTape(e.ID,e.type,e.arguments),O[B_t]=e=>Uye.FromTape(e.ID,e.type,e.arguments),O[k_t]=e=>Bye.FromTape(e.ID,e.type,e.arguments),O[G_t]=e=>kye.FromTape(e.ID,e.type,e.arguments),O[V_t]=e=>Gye.FromTape(e.ID,e.type,e.arguments),O[z_t]=e=>Vye.FromTape(e.ID,e.type,e.arguments),O[j_t]=e=>zye.FromTape(e.ID,e.type,e.arguments),O[W_t]=e=>jye.FromTape(e.ID,e.type,e.arguments),O[q_t]=e=>Wye.FromTape(e.ID,e.type,e.arguments),O[Y_t]=e=>qye.FromTape(e.ID,e.type,e.arguments),O[X_t]=e=>Yye.FromTape(e.ID,e.type,e.arguments),O[$_t]=e=>Xye.FromTape(e.ID,e.type,e.arguments),O[K_t]=e=>$ye.FromTape(e.ID,e.type,e.arguments),O[Z_t]=e=>Kye.FromTape(e.ID,e.type,e.arguments),O[J_t]=e=>Zye.FromTape(e.ID,e.type,e.arguments),O[Q_t]=e=>Jye.FromTape(e.ID,e.type,e.arguments),O[eSt]=e=>Qye.FromTape(e.ID,e.type,e.arguments),O[tSt]=e=>eTe.FromTape(e.ID,e.type,e.arguments),O[rSt]=e=>tTe.FromTape(e.ID,e.type,e.arguments),O[iSt]=e=>rTe.FromTape(e.ID,e.type,e.arguments),O[nSt]=e=>iTe.FromTape(e.ID,e.type,e.arguments),O[sSt]=e=>nTe.FromTape(e.ID,e.type,e.arguments),O[aSt]=e=>sTe.FromTape(e.ID,e.type,e.arguments),O[oSt]=e=>aTe.FromTape(e.ID,e.type,e.arguments),O[lSt]=e=>oTe.FromTape(e.ID,e.type,e.arguments),O[cSt]=e=>lTe.FromTape(e.ID,e.type,e.arguments),O[uSt]=e=>cTe.FromTape(e.ID,e.type,e.arguments),O[hSt]=e=>uTe.FromTape(e.ID,e.type,e.arguments),O[pSt]=e=>hTe.FromTape(e.ID,e.type,e.arguments),O[dSt]=e=>pTe.FromTape(e.ID,e.type,e.arguments),O[fSt]=e=>dTe.FromTape(e.ID,e.type,e.arguments),O[mSt]=e=>fTe.FromTape(e.ID,e.type,e.arguments),O[gSt]=e=>mTe.FromTape(e.ID,e.type,e.arguments),O[vSt]=e=>gTe.FromTape(e.ID,e.type,e.arguments),O[ySt]=e=>vTe.FromTape(e.ID,e.type,e.arguments),O[TSt]=e=>yTe.FromTape(e.ID,e.type,e.arguments),O[ESt]=e=>TTe.FromTape(e.ID,e.type,e.arguments),O[bSt]=e=>ETe.FromTape(e.ID,e.type,e.arguments),O[xSt]=e=>bTe.FromTape(e.ID,e.type,e.arguments),O[ISt]=e=>xTe.FromTape(e.ID,e.type,e.arguments),O[_St]=e=>ITe.FromTape(e.ID,e.type,e.arguments),O[SSt]=e=>_Te.FromTape(e.ID,e.type,e.arguments),O[wSt]=e=>STe.FromTape(e.ID,e.type,e.arguments),O[RSt]=e=>wTe.FromTape(e.ID,e.type,e.arguments),O[MSt]=e=>RTe.FromTape(e.ID,e.type,e.arguments),O[DSt]=e=>MTe.FromTape(e.ID,e.type,e.arguments),O[CSt]=e=>DTe.FromTape(e.ID,e.type,e.arguments),O[ASt]=e=>CTe.FromTape(e.ID,e.type,e.arguments),O[OSt]=e=>ATe.FromTape(e.ID,e.type,e.arguments),O[PSt]=e=>OTe.FromTape(e.ID,e.type,e.arguments),O[NSt]=e=>PTe.FromTape(e.ID,e.type,e.arguments),O[LSt]=e=>NTe.FromTape(e.ID,e.type,e.arguments),O[FSt]=e=>LTe.FromTape(e.ID,e.type,e.arguments),O[HSt]=e=>FTe.FromTape(e.ID,e.type,e.arguments),O[USt]=e=>HTe.FromTape(e.ID,e.type,e.arguments),O[BSt]=e=>UTe.FromTape(e.ID,e.type,e.arguments),O[kSt]=e=>BTe.FromTape(e.ID,e.type,e.arguments),O[GSt]=e=>kTe.FromTape(e.ID,e.type,e.arguments),O[VSt]=e=>GTe.FromTape(e.ID,e.type,e.arguments),O[zSt]=e=>VTe.FromTape(e.ID,e.type,e.arguments),O[jSt]=e=>zTe.FromTape(e.ID,e.type,e.arguments),O[WSt]=e=>jTe.FromTape(e.ID,e.type,e.arguments),O[qSt]=e=>WTe.FromTape(e.ID,e.type,e.arguments),O[YSt]=e=>qTe.FromTape(e.ID,e.type,e.arguments),O[XSt]=e=>YTe.FromTape(e.ID,e.type,e.arguments),O[$St]=e=>XTe.FromTape(e.ID,e.type,e.arguments),O[KSt]=e=>$Te.FromTape(e.ID,e.type,e.arguments),O[ZSt]=e=>KTe.FromTape(e.ID,e.type,e.arguments),O[JSt]=e=>ZTe.FromTape(e.ID,e.type,e.arguments),O[QSt]=e=>JTe.FromTape(e.ID,e.type,e.arguments),O[ewt]=e=>QTe.FromTape(e.ID,e.type,e.arguments),O[twt]=e=>eEe.FromTape(e.ID,e.type,e.arguments),O[rwt]=e=>tEe.FromTape(e.ID,e.type,e.arguments),O[iwt]=e=>rEe.FromTape(e.ID,e.type,e.arguments),O[nwt]=e=>iEe.FromTape(e.ID,e.type,e.arguments),O[swt]=e=>nEe.FromTape(e.ID,e.type,e.arguments),O[awt]=e=>sEe.FromTape(e.ID,e.type,e.arguments),O[owt]=e=>aEe.FromTape(e.ID,e.type,e.arguments),O[lwt]=e=>oEe.FromTape(e.ID,e.type,e.arguments),O[cwt]=e=>lEe.FromTape(e.ID,e.type,e.arguments),O[uwt]=e=>cEe.FromTape(e.ID,e.type,e.arguments),O[hwt]=e=>uEe.FromTape(e.ID,e.type,e.arguments),O[pwt]=e=>hEe.FromTape(e.ID,e.type,e.arguments),O[dwt]=e=>pEe.FromTape(e.ID,e.type,e.arguments),O[fwt]=e=>dEe.FromTape(e.ID,e.type,e.arguments),O[mwt]=e=>fEe.FromTape(e.ID,e.type,e.arguments),O[gwt]=e=>mEe.FromTape(e.ID,e.type,e.arguments),O[vwt]=e=>gEe.FromTape(e.ID,e.type,e.arguments),O[ywt]=e=>vEe.FromTape(e.ID,e.type,e.arguments),O[Twt]=e=>yEe.FromTape(e.ID,e.type,e.arguments),O[Ewt]=e=>TEe.FromTape(e.ID,e.type,e.arguments),O[bwt]=e=>EEe.FromTape(e.ID,e.type,e.arguments),O[xwt]=e=>bEe.FromTape(e.ID,e.type,e.arguments),O[Iwt]=e=>xEe.FromTape(e.ID,e.type,e.arguments),O[_wt]=e=>IEe.FromTape(e.ID,e.type,e.arguments),O[Swt]=e=>_Ee.FromTape(e.ID,e.type,e.arguments),O[wwt]=e=>SEe.FromTape(e.ID,e.type,e.arguments),O[Rwt]=e=>wEe.FromTape(e.ID,e.type,e.arguments),O[Mwt]=e=>REe.FromTape(e.ID,e.type,e.arguments),O[Dwt]=e=>MEe.FromTape(e.ID,e.type,e.arguments),O[Cwt]=e=>DEe.FromTape(e.ID,e.type,e.arguments),O[Awt]=e=>CEe.FromTape(e.ID,e.type,e.arguments),O[Owt]=e=>AEe.FromTape(e.ID,e.type,e.arguments),O[Pwt]=e=>OEe.FromTape(e.ID,e.type,e.arguments),O[Nwt]=e=>PEe.FromTape(e.ID,e.type,e.arguments),O[Lwt]=e=>NEe.FromTape(e.ID,e.type,e.arguments),O[Fwt]=e=>LEe.FromTape(e.ID,e.type,e.arguments),O[Hwt]=e=>FEe.FromTape(e.ID,e.type,e.arguments),O[Uwt]=e=>HEe.FromTape(e.ID,e.type,e.arguments),O[Bwt]=e=>UEe.FromTape(e.ID,e.type,e.arguments),O[kwt]=e=>BEe.FromTape(e.ID,e.type,e.arguments),O[Gwt]=e=>kEe.FromTape(e.ID,e.type,e.arguments),O[Vwt]=e=>GEe.FromTape(e.ID,e.type,e.arguments),O[zwt]=e=>VEe.FromTape(e.ID,e.type,e.arguments),O[jwt]=e=>zEe.FromTape(e.ID,e.type,e.arguments),O[Wwt]=e=>jEe.FromTape(e.ID,e.type,e.arguments),O[qwt]=e=>WEe.FromTape(e.ID,e.type,e.arguments),O[Ywt]=e=>qEe.FromTape(e.ID,e.type,e.arguments),O[Xwt]=e=>YEe.FromTape(e.ID,e.type,e.arguments),O[$wt]=e=>XEe.FromTape(e.ID,e.type,e.arguments),O[Kwt]=e=>$Ee.FromTape(e.ID,e.type,e.arguments),O[Zwt]=e=>KEe.FromTape(e.ID,e.type,e.arguments),O[Jwt]=e=>ZEe.FromTape(e.ID,e.type,e.arguments),O[Qwt]=e=>JEe.FromTape(e.ID,e.type,e.arguments),O[eRt]=e=>QEe.FromTape(e.ID,e.type,e.arguments),O[tRt]=e=>e1e.FromTape(e.ID,e.type,e.arguments),O[rRt]=e=>t1e.FromTape(e.ID,e.type,e.arguments),O[iRt]=e=>r1e.FromTape(e.ID,e.type,e.arguments),O[nRt]=e=>i1e.FromTape(e.ID,e.type,e.arguments),O[sRt]=e=>n1e.FromTape(e.ID,e.type,e.arguments),O[aRt]=e=>s1e.FromTape(e.ID,e.type,e.arguments),O[oRt]=e=>a1e.FromTape(e.ID,e.type,e.arguments),O[lRt]=e=>o1e.FromTape(e.ID,e.type,e.arguments),O[cRt]=e=>l1e.FromTape(e.ID,e.type,e.arguments),O[uRt]=e=>c1e.FromTape(e.ID,e.type,e.arguments),O[hRt]=e=>u1e.FromTape(e.ID,e.type,e.arguments),O[pRt]=e=>h1e.FromTape(e.ID,e.type,e.arguments),O[dRt]=e=>p1e.FromTape(e.ID,e.type,e.arguments),O[fRt]=e=>d1e.FromTape(e.ID,e.type,e.arguments),O[mRt]=e=>f1e.FromTape(e.ID,e.type,e.arguments),O[gRt]=e=>m1e.FromTape(e.ID,e.type,e.arguments),O[vRt]=e=>g1e.FromTape(e.ID,e.type,e.arguments),O[yRt]=e=>v1e.FromTape(e.ID,e.type,e.arguments),O[TRt]=e=>y1e.FromTape(e.ID,e.type,e.arguments),O[ERt]=e=>T1e.FromTape(e.ID,e.type,e.arguments),O[bRt]=e=>E1e.FromTape(e.ID,e.type,e.arguments),O[xRt]=e=>b1e.FromTape(e.ID,e.type,e.arguments),O[IRt]=e=>x1e.FromTape(e.ID,e.type,e.arguments),O[_Rt]=e=>I1e.FromTape(e.ID,e.type,e.arguments),O[SRt]=e=>_1e.FromTape(e.ID,e.type,e.arguments),O[wRt]=e=>S1e.FromTape(e.ID,e.type,e.arguments),O[RRt]=e=>w1e.FromTape(e.ID,e.type,e.arguments),O[MRt]=e=>R1e.FromTape(e.ID,e.type,e.arguments),O[DRt]=e=>M1e.FromTape(e.ID,e.type,e.arguments),O[CRt]=e=>D1e.FromTape(e.ID,e.type,e.arguments),O[ARt]=e=>C1e.FromTape(e.ID,e.type,e.arguments),O[ORt]=e=>A1e.FromTape(e.ID,e.type,e.arguments),O[PRt]=e=>O1e.FromTape(e.ID,e.type,e.arguments),O[NRt]=e=>P1e.FromTape(e.ID,e.type,e.arguments),O[LRt]=e=>N1e.FromTape(e.ID,e.type,e.arguments),O[FRt]=e=>L1e.FromTape(e.ID,e.type,e.arguments),O[HRt]=e=>F1e.FromTape(e.ID,e.type,e.arguments),O[URt]=e=>H1e.FromTape(e.ID,e.type,e.arguments),O[BRt]=e=>U1e.FromTape(e.ID,e.type,e.arguments),O[kRt]=e=>B1e.FromTape(e.ID,e.type,e.arguments),O[GRt]=e=>k1e.FromTape(e.ID,e.type,e.arguments),O[VRt]=e=>G1e.FromTape(e.ID,e.type,e.arguments),O[zRt]=e=>V1e.FromTape(e.ID,e.type,e.arguments),O[jRt]=e=>z1e.FromTape(e.ID,e.type,e.arguments),O[WRt]=e=>j1e.FromTape(e.ID,e.type,e.arguments),O[qRt]=e=>W1e.FromTape(e.ID,e.type,e.arguments),O[YRt]=e=>q1e.FromTape(e.ID,e.type,e.arguments),O[XRt]=e=>Y1e.FromTape(e.ID,e.type,e.arguments),O[$Rt]=e=>X1e.FromTape(e.ID,e.type,e.arguments),O[KRt]=e=>$1e.FromTape(e.ID,e.type,e.arguments),O[ZRt]=e=>K1e.FromTape(e.ID,e.type,e.arguments),O[JRt]=e=>Z1e.FromTape(e.ID,e.type,e.arguments),O[QRt]=e=>J1e.FromTape(e.ID,e.type,e.arguments),O[eMt]=e=>Q1e.FromTape(e.ID,e.type,e.arguments),O[tMt]=e=>ebe.FromTape(e.ID,e.type,e.arguments),O[rMt]=e=>tbe.FromTape(e.ID,e.type,e.arguments),O[iMt]=e=>rbe.FromTape(e.ID,e.type,e.arguments),O[nMt]=e=>ibe.FromTape(e.ID,e.type,e.arguments),O[pA]=e=>nbe.FromTape(e.ID,e.type,e.arguments),O[sMt]=e=>sbe.FromTape(e.ID,e.type,e.arguments),O[aMt]=e=>abe.FromTape(e.ID,e.type,e.arguments),O[oMt]=e=>obe.FromTape(e.ID,e.type,e.arguments),O[lMt]=e=>lbe.FromTape(e.ID,e.type,e.arguments),O[cMt]=e=>cbe.FromTape(e.ID,e.type,e.arguments),O[uMt]=e=>ube.FromTape(e.ID,e.type,e.arguments),O[hMt]=e=>hbe.FromTape(e.ID,e.type,e.arguments),O[pMt]=e=>pbe.FromTape(e.ID,e.type,e.arguments),O[dMt]=e=>dbe.FromTape(e.ID,e.type,e.arguments),O[fMt]=e=>fbe.FromTape(e.ID,e.type,e.arguments),O[mMt]=e=>mbe.FromTape(e.ID,e.type,e.arguments),O[gMt]=e=>gbe.FromTape(e.ID,e.type,e.arguments),O[vMt]=e=>vbe.FromTape(e.ID,e.type,e.arguments),O[yMt]=e=>ybe.FromTape(e.ID,e.type,e.arguments),O[TMt]=e=>Tbe.FromTape(e.ID,e.type,e.arguments),O[EMt]=e=>Ebe.FromTape(e.ID,e.type,e.arguments),O[bMt]=e=>bbe.FromTape(e.ID,e.type,e.arguments),O[xMt]=e=>xbe.FromTape(e.ID,e.type,e.arguments),O[IMt]=e=>Ibe.FromTape(e.ID,e.type,e.arguments),O[_Mt]=e=>_be.FromTape(e.ID,e.type,e.arguments),O[SMt]=e=>Sbe.FromTape(e.ID,e.type,e.arguments),O[wMt]=e=>wbe.FromTape(e.ID,e.type,e.arguments),O[RMt]=e=>Rbe.FromTape(e.ID,e.type,e.arguments),O[MMt]=e=>Mbe.FromTape(e.ID,e.type,e.arguments),O[DMt]=e=>Dbe.FromTape(e.ID,e.type,e.arguments),O[CMt]=e=>Cbe.FromTape(e.ID,e.type,e.arguments),O[AMt]=e=>Abe.FromTape(e.ID,e.type,e.arguments),O[OMt]=e=>Obe.FromTape(e.ID,e.type,e.arguments),O[PMt]=e=>Pbe.FromTape(e.ID,e.type,e.arguments),O[NMt]=e=>Nbe.FromTape(e.ID,e.type,e.arguments),O[LMt]=e=>Lbe.FromTape(e.ID,e.type,e.arguments),O[FMt]=e=>Fbe.FromTape(e.ID,e.type,e.arguments),O[HMt]=e=>Hbe.FromTape(e.ID,e.type,e.arguments),O[UMt]=e=>Ube.FromTape(e.ID,e.type,e.arguments),O[BMt]=e=>Bbe.FromTape(e.ID,e.type,e.arguments),O[kMt]=e=>kbe.FromTape(e.ID,e.type,e.arguments),O[GMt]=e=>Gbe.FromTape(e.ID,e.type,e.arguments),O[VMt]=e=>Vbe.FromTape(e.ID,e.type,e.arguments),O[zMt]=e=>zbe.FromTape(e.ID,e.type,e.arguments),O[jMt]=e=>jbe.FromTape(e.ID,e.type,e.arguments),O[WMt]=e=>Wbe.FromTape(e.ID,e.type,e.arguments),O[qMt]=e=>qbe.FromTape(e.ID,e.type,e.arguments),O[YMt]=e=>Ybe.FromTape(e.ID,e.type,e.arguments),O[XMt]=e=>Xbe.FromTape(e.ID,e.type,e.arguments),O[$Mt]=e=>$be.FromTape(e.ID,e.type,e.arguments),O[KMt]=e=>Kbe.FromTape(e.ID,e.type,e.arguments),O[ZMt]=e=>Zbe.FromTape(e.ID,e.type,e.arguments),O[JMt]=e=>Jbe.FromTape(e.ID,e.type,e.arguments),O[QMt]=e=>Qbe.FromTape(e.ID,e.type,e.arguments),O[eDt]=e=>exe.FromTape(e.ID,e.type,e.arguments),O[tDt]=e=>txe.FromTape(e.ID,e.type,e.arguments),O[rDt]=e=>rxe.FromTape(e.ID,e.type,e.arguments),O[iDt]=e=>ixe.FromTape(e.ID,e.type,e.arguments),O[nDt]=e=>nxe.FromTape(e.ID,e.type,e.arguments),O[sDt]=e=>sxe.FromTape(e.ID,e.type,e.arguments),O[aDt]=e=>axe.FromTape(e.ID,e.type,e.arguments),O[oDt]=e=>oxe.FromTape(e.ID,e.type,e.arguments),O[lDt]=e=>lxe.FromTape(e.ID,e.type,e.arguments),O[zk]=e=>cxe.FromTape(e.ID,e.type,e.arguments),O[cDt]=e=>uxe.FromTape(e.ID,e.type,e.arguments),O[uDt]=e=>hxe.FromTape(e.ID,e.type,e.arguments),O[hDt]=e=>pxe.FromTape(e.ID,e.type,e.arguments),O[pDt]=e=>dxe.FromTape(e.ID,e.type,e.arguments),O[dDt]=e=>fxe.FromTape(e.ID,e.type,e.arguments),O[fDt]=e=>mxe.FromTape(e.ID,e.type,e.arguments),O[mDt]=e=>gxe.FromTape(e.ID,e.type,e.arguments),O[gDt]=e=>vxe.FromTape(e.ID,e.type,e.arguments),O[vDt]=e=>yxe.FromTape(e.ID,e.type,e.arguments),O[yDt]=e=>Txe.FromTape(e.ID,e.type,e.arguments),O[TDt]=e=>Exe.FromTape(e.ID,e.type,e.arguments),O[EDt]=e=>bxe.FromTape(e.ID,e.type,e.arguments),O[bDt]=e=>xxe.FromTape(e.ID,e.type,e.arguments),O[xDt]=e=>Ixe.FromTape(e.ID,e.type,e.arguments),O[jk]=e=>_xe.FromTape(e.ID,e.type,e.arguments),O[IDt]=e=>Sxe.FromTape(e.ID,e.type,e.arguments),O[_Dt]=e=>wxe.FromTape(e.ID,e.type,e.arguments),O[SDt]=e=>Rxe.FromTape(e.ID,e.type,e.arguments),O[wDt]=e=>Mxe.FromTape(e.ID,e.type,e.arguments),O[RDt]=e=>Dxe.FromTape(e.ID,e.type,e.arguments),O[MDt]=e=>Cxe.FromTape(e.ID,e.type,e.arguments),O[DDt]=e=>Axe.FromTape(e.ID,e.type,e.arguments),O[CDt]=e=>Oxe.FromTape(e.ID,e.type,e.arguments),O[ADt]=e=>Pxe.FromTape(e.ID,e.type,e.arguments),O[Wk]=e=>Nxe.FromTape(e.ID,e.type,e.arguments),O[ODt]=e=>Lxe.FromTape(e.ID,e.type,e.arguments),O[PDt]=e=>Fxe.FromTape(e.ID,e.type,e.arguments),O[NDt]=e=>Hxe.FromTape(e.ID,e.type,e.arguments),O[LDt]=e=>Uxe.FromTape(e.ID,e.type,e.arguments),O[FDt]=e=>Bxe.FromTape(e.ID,e.type,e.arguments),O[HDt]=e=>kxe.FromTape(e.ID,e.type,e.arguments),O[qk]=e=>Gxe.FromTape(e.ID,e.type,e.arguments),O[UDt]=e=>Vxe.FromTape(e.ID,e.type,e.arguments),O[Yk]=e=>zxe.FromTape(e.ID,e.type,e.arguments),O[BDt]=e=>jxe.FromTape(e.ID,e.type,e.arguments),O[kDt]=e=>Wxe.FromTape(e.ID,e.type,e.arguments),O[GDt]=e=>qxe.FromTape(e.ID,e.type,e.arguments),O[VDt]=e=>Yxe.FromTape(e.ID,e.type,e.arguments),O[zDt]=e=>Xxe.FromTape(e.ID,e.type,e.arguments),O[jDt]=e=>$xe.FromTape(e.ID,e.type,e.arguments),O[WDt]=e=>Kxe.FromTape(e.ID,e.type,e.arguments),O[qDt]=e=>Zxe.FromTape(e.ID,e.type,e.arguments),O[YDt]=e=>Jxe.FromTape(e.ID,e.type,e.arguments),O[XDt]=e=>Qxe.FromTape(e.ID,e.type,e.arguments),O[$Dt]=e=>eIe.FromTape(e.ID,e.type,e.arguments),O[KDt]=e=>tIe.FromTape(e.ID,e.type,e.arguments),O[ZDt]=e=>rIe.FromTape(e.ID,e.type,e.arguments),O[JDt]=e=>iIe.FromTape(e.ID,e.type,e.arguments),O[QDt]=e=>nIe.FromTape(e.ID,e.type,e.arguments),O[eCt]=e=>sIe.FromTape(e.ID,e.type,e.arguments),O[tCt]=e=>aIe.FromTape(e.ID,e.type,e.arguments),O[rCt]=e=>oIe.FromTape(e.ID,e.type,e.arguments),O[iCt]=e=>lIe.FromTape(e.ID,e.type,e.arguments),O[nCt]=e=>cIe.FromTape(e.ID,e.type,e.arguments),O[sCt]=e=>uIe.FromTape(e.ID,e.type,e.arguments),O[aCt]=e=>hIe.FromTape(e.ID,e.type,e.arguments),O[oCt]=e=>pIe.FromTape(e.ID,e.type,e.arguments),O[lCt]=e=>dIe.FromTape(e.ID,e.type,e.arguments),O[cCt]=e=>fIe.FromTape(e.ID,e.type,e.arguments),O[uCt]=e=>mIe.FromTape(e.ID,e.type,e.arguments),O[hCt]=e=>gIe.FromTape(e.ID,e.type,e.arguments),O[pCt]=e=>vIe.FromTape(e.ID,e.type,e.arguments),O[dCt]=e=>yIe.FromTape(e.ID,e.type,e.arguments),O[fCt]=e=>TIe.FromTape(e.ID,e.type,e.arguments),O[mCt]=e=>EIe.FromTape(e.ID,e.type,e.arguments),O[gCt]=e=>bIe.FromTape(e.ID,e.type,e.arguments),O[vCt]=e=>xIe.FromTape(e.ID,e.type,e.arguments),O[yCt]=e=>IIe.FromTape(e.ID,e.type,e.arguments),O[TCt]=e=>_Ie.FromTape(e.ID,e.type,e.arguments),O[ECt]=e=>SIe.FromTape(e.ID,e.type,e.arguments),O[bCt]=e=>wIe.FromTape(e.ID,e.type,e.arguments),O[xCt]=e=>RIe.FromTape(e.ID,e.type,e.arguments),O[ICt]=e=>MIe.FromTape(e.ID,e.type,e.arguments),O[_Ct]=e=>DIe.FromTape(e.ID,e.type,e.arguments),O[SCt]=e=>CIe.FromTape(e.ID,e.type,e.arguments),O[wCt]=e=>AIe.FromTape(e.ID,e.type,e.arguments),O[RCt]=e=>OIe.FromTape(e.ID,e.type,e.arguments),O[MCt]=e=>PIe.FromTape(e.ID,e.type,e.arguments),O[DCt]=e=>NIe.FromTape(e.ID,e.type,e.arguments),O[CCt]=e=>LIe.FromTape(e.ID,e.type,e.arguments),O[ACt]=e=>FIe.FromTape(e.ID,e.type,e.arguments),O[OCt]=e=>HIe.FromTape(e.ID,e.type,e.arguments),O[PCt]=e=>UIe.FromTape(e.ID,e.type,e.arguments),O[NCt]=e=>BIe.FromTape(e.ID,e.type,e.arguments),O[LCt]=e=>kIe.FromTape(e.ID,e.type,e.arguments),O[FCt]=e=>GIe.FromTape(e.ID,e.type,e.arguments),O[HCt]=e=>VIe.FromTape(e.ID,e.type,e.arguments),O[UCt]=e=>zIe.FromTape(e.ID,e.type,e.arguments),O[BCt]=e=>jIe.FromTape(e.ID,e.type,e.arguments),O[kCt]=e=>WIe.FromTape(e.ID,e.type,e.arguments),O[GCt]=e=>qIe.FromTape(e.ID,e.type,e.arguments),O[VCt]=e=>YIe.FromTape(e.ID,e.type,e.arguments),O[zCt]=e=>XIe.FromTape(e.ID,e.type,e.arguments),O[jCt]=e=>$Ie.FromTape(e.ID,e.type,e.arguments),O[WCt]=e=>KIe.FromTape(e.ID,e.type,e.arguments),O[qCt]=e=>ZIe.FromTape(e.ID,e.type,e.arguments),O[YCt]=e=>JIe.FromTape(e.ID,e.type,e.arguments),O[XCt]=e=>QIe.FromTape(e.ID,e.type,e.arguments),O[$Ct]=e=>e_e.FromTape(e.ID,e.type,e.arguments),O[KCt]=e=>t_e.FromTape(e.ID,e.type,e.arguments),O[ZCt]=e=>r_e.FromTape(e.ID,e.type,e.arguments),O[JCt]=e=>i_e.FromTape(e.ID,e.type,e.arguments),O[QCt]=e=>n_e.FromTape(e.ID,e.type,e.arguments),O[eAt]=e=>s_e.FromTape(e.ID,e.type,e.arguments),O[tAt]=e=>a_e.FromTape(e.ID,e.type,e.arguments),O[rAt]=e=>o_e.FromTape(e.ID,e.type,e.arguments),O[iAt]=e=>l_e.FromTape(e.ID,e.type,e.arguments),O[nAt]=e=>c_e.FromTape(e.ID,e.type,e.arguments),O[sAt]=e=>u_e.FromTape(e.ID,e.type,e.arguments),O[aAt]=e=>h_e.FromTape(e.ID,e.type,e.arguments),O[oAt]=e=>p_e.FromTape(e.ID,e.type,e.arguments),O[lAt]=e=>d_e.FromTape(e.ID,e.type,e.arguments),O[cAt]=e=>f_e.FromTape(e.ID,e.type,e.arguments),O[uAt]=e=>m_e.FromTape(e.ID,e.type,e.arguments),O[hAt]=e=>g_e.FromTape(e.ID,e.type,e.arguments),O[pAt]=e=>v_e.FromTape(e.ID,e.type,e.arguments),O[dAt]=e=>y_e.FromTape(e.ID,e.type,e.arguments),O[fAt]=e=>T_e.FromTape(e.ID,e.type,e.arguments),O[mAt]=e=>E_e.FromTape(e.ID,e.type,e.arguments),O[gAt]=e=>b_e.FromTape(e.ID,e.type,e.arguments),O[vAt]=e=>x_e.FromTape(e.ID,e.type,e.arguments),O[yAt]=e=>I_e.FromTape(e.ID,e.type,e.arguments),O[TAt]=e=>__e.FromTape(e.ID,e.type,e.arguments),O[EAt]=e=>S_e.FromTape(e.ID,e.type,e.arguments),O[bAt]=e=>w_e.FromTape(e.ID,e.type,e.arguments),O[xAt]=e=>R_e.FromTape(e.ID,e.type,e.arguments),O[IAt]=e=>M_e.FromTape(e.ID,e.type,e.arguments),O[_At]=e=>D_e.FromTape(e.ID,e.type,e.arguments),O[SAt]=e=>C_e.FromTape(e.ID,e.type,e.arguments),O[wAt]=e=>A_e.FromTape(e.ID,e.type,e.arguments),O[RAt]=e=>O_e.FromTape(e.ID,e.type,e.arguments),O[MAt]=e=>P_e.FromTape(e.ID,e.type,e.arguments),O[DAt]=e=>N_e.FromTape(e.ID,e.type,e.arguments),O[CAt]=e=>L_e.FromTape(e.ID,e.type,e.arguments),O[AAt]=e=>F_e.FromTape(e.ID,e.type,e.arguments),O[OAt]=e=>H_e.FromTape(e.ID,e.type,e.arguments),O[PAt]=e=>U_e.FromTape(e.ID,e.type,e.arguments),O[NAt]=e=>B_e.FromTape(e.ID,e.type,e.arguments),O[LAt]=e=>k_e.FromTape(e.ID,e.type,e.arguments),O[FAt]=e=>G_e.FromTape(e.ID,e.type,e.arguments),O[HAt]=e=>V_e.FromTape(e.ID,e.type,e.arguments),O[UAt]=e=>z_e.FromTape(e.ID,e.type,e.arguments),O[BAt]=e=>j_e.FromTape(e.ID,e.type,e.arguments),O[kAt]=e=>W_e.FromTape(e.ID,e.type,e.arguments),O[GAt]=e=>q_e.FromTape(e.ID,e.type,e.arguments),O[VAt]=e=>Y_e.FromTape(e.ID,e.type,e.arguments),O[zAt]=e=>X_e.FromTape(e.ID,e.type,e.arguments),O[jAt]=e=>$_e.FromTape(e.ID,e.type,e.arguments),O[WAt]=e=>K_e.FromTape(e.ID,e.type,e.arguments),O[qAt]=e=>Z_e.FromTape(e.ID,e.type,e.arguments),O[YAt]=e=>J_e.FromTape(e.ID,e.type,e.arguments),O[XAt]=e=>Q_e.FromTape(e.ID,e.type,e.arguments),O[$At]=e=>eSe.FromTape(e.ID,e.type,e.arguments),O[KAt]=e=>tSe.FromTape(e.ID,e.type,e.arguments),O[ZAt]=e=>rSe.FromTape(e.ID,e.type,e.arguments),O[JAt]=e=>iSe.FromTape(e.ID,e.type,e.arguments),O[QAt]=e=>nSe.FromTape(e.ID,e.type,e.arguments),O[eOt]=e=>sSe.FromTape(e.ID,e.type,e.arguments),O[tOt]=e=>aSe.FromTape(e.ID,e.type,e.arguments),O[rOt]=e=>oSe.FromTape(e.ID,e.type,e.arguments),O[iOt]=e=>lSe.FromTape(e.ID,e.type,e.arguments),O[nOt]=e=>cSe.FromTape(e.ID,e.type,e.arguments),O[sOt]=e=>uSe.FromTape(e.ID,e.type,e.arguments),O[aOt]=e=>hSe.FromTape(e.ID,e.type,e.arguments),O[oOt]=e=>pSe.FromTape(e.ID,e.type,e.arguments),O[lOt]=e=>dSe.FromTape(e.ID,e.type,e.arguments),O[cOt]=e=>fSe.FromTape(e.ID,e.type,e.arguments),O[uOt]=e=>mSe.FromTape(e.ID,e.type,e.arguments),O[hOt]=e=>gSe.FromTape(e.ID,e.type,e.arguments),O[pOt]=e=>vSe.FromTape(e.ID,e.type,e.arguments),O[dOt]=e=>ySe.FromTape(e.ID,e.type,e.arguments),O[fOt]=e=>TSe.FromTape(e.ID,e.type,e.arguments),O[mOt]=e=>ESe.FromTape(e.ID,e.type,e.arguments),O[gOt]=e=>bSe.FromTape(e.ID,e.type,e.arguments),O[vOt]=e=>xSe.FromTape(e.ID,e.type,e.arguments),O[yOt]=e=>ISe.FromTape(e.ID,e.type,e.arguments),O[TOt]=e=>_Se.FromTape(e.ID,e.type,e.arguments),O[EOt]=e=>SSe.FromTape(e.ID,e.type,e.arguments),O[bOt]=e=>wSe.FromTape(e.ID,e.type,e.arguments),O[xOt]=e=>RSe.FromTape(e.ID,e.type,e.arguments),O[IOt]=e=>MSe.FromTape(e.ID,e.type,e.arguments),O[_Ot]=e=>DSe.FromTape(e.ID,e.type,e.arguments),O[SOt]=e=>CSe.FromTape(e.ID,e.type,e.arguments),O[wOt]=e=>ASe.FromTape(e.ID,e.type,e.arguments),O[ROt]=e=>OSe.FromTape(e.ID,e.type,e.arguments),O[MOt]=e=>PSe.FromTape(e.ID,e.type,e.arguments),O[DOt]=e=>NSe.FromTape(e.ID,e.type,e.arguments),O[COt]=e=>LSe.FromTape(e.ID,e.type,e.arguments),O[AOt]=e=>FSe.FromTape(e.ID,e.type,e.arguments),O[OOt]=e=>HSe.FromTape(e.ID,e.type,e.arguments),O[POt]=e=>USe.FromTape(e.ID,e.type,e.arguments),O[NOt]=e=>BSe.FromTape(e.ID,e.type,e.arguments),O[LOt]=e=>kSe.FromTape(e.ID,e.type,e.arguments),O[FOt]=e=>GSe.FromTape(e.ID,e.type,e.arguments),O[HOt]=e=>VSe.FromTape(e.ID,e.type,e.arguments),O[UOt]=e=>zSe.FromTape(e.ID,e.type,e.arguments),O[BOt]=e=>jSe.FromTape(e.ID,e.type,e.arguments),O[kOt]=e=>WSe.FromTape(e.ID,e.type,e.arguments),O[GOt]=e=>qSe.FromTape(e.ID,e.type,e.arguments),O[VOt]=e=>YSe.FromTape(e.ID,e.type,e.arguments),O[zOt]=e=>XSe.FromTape(e.ID,e.type,e.arguments),O[jOt]=e=>$Se.FromTape(e.ID,e.type,e.arguments),O[WOt]=e=>KSe.FromTape(e.ID,e.type,e.arguments),O[qOt]=e=>ZSe.FromTape(e.ID,e.type,e.arguments),O[YOt]=e=>JSe.FromTape(e.ID,e.type,e.arguments),O[XOt]=e=>QSe.FromTape(e.ID,e.type,e.arguments),O[$Ot]=e=>ewe.FromTape(e.ID,e.type,e.arguments),O[KOt]=e=>twe.FromTape(e.ID,e.type,e.arguments),O[ZOt]=e=>rwe.FromTape(e.ID,e.type,e.arguments),O[JOt]=e=>iwe.FromTape(e.ID,e.type,e.arguments),O[QOt]=e=>nwe.FromTape(e.ID,e.type,e.arguments),O[e3t]=e=>swe.FromTape(e.ID,e.type,e.arguments),O[t3t]=e=>awe.FromTape(e.ID,e.type,e.arguments),O[r3t]=e=>owe.FromTape(e.ID,e.type,e.arguments),O[i3t]=e=>lwe.FromTape(e.ID,e.type,e.arguments),O[n3t]=e=>cwe.FromTape(e.ID,e.type,e.arguments),O[s3t]=e=>uwe.FromTape(e.ID,e.type,e.arguments),O[a3t]=e=>hwe.FromTape(e.ID,e.type,e.arguments),O[o3t]=e=>pwe.FromTape(e.ID,e.type,e.arguments),O[l3t]=e=>dwe.FromTape(e.ID,e.type,e.arguments),O[c3t]=e=>fwe.FromTape(e.ID,e.type,e.arguments),O[u3t]=e=>mwe.FromTape(e.ID,e.type,e.arguments),O[h3t]=e=>gwe.FromTape(e.ID,e.type,e.arguments),O[p3t]=e=>vwe.FromTape(e.ID,e.type,e.arguments),O[d3t]=e=>ywe.FromTape(e.ID,e.type,e.arguments),O[f3t]=e=>Twe.FromTape(e.ID,e.type,e.arguments),O[m3t]=e=>Ewe.FromTape(e.ID,e.type,e.arguments),O[g3t]=e=>bwe.FromTape(e.ID,e.type,e.arguments),O[v3t]=e=>xwe.FromTape(e.ID,e.type,e.arguments),O[y3t]=e=>Iwe.FromTape(e.ID,e.type,e.arguments),O[T3t]=e=>_we.FromTape(e.ID,e.type,e.arguments),O[E3t]=e=>Swe.FromTape(e.ID,e.type,e.arguments),O[b3t]=e=>wwe.FromTape(e.ID,e.type,e.arguments),O[x3t]=e=>Rwe.FromTape(e.ID,e.type,e.arguments),O[I3t]=e=>Mwe.FromTape(e.ID,e.type,e.arguments),O[_3t]=e=>Dwe.FromTape(e.ID,e.type,e.arguments),O[S3t]=e=>Cwe.FromTape(e.ID,e.type,e.arguments),O[w3t]=e=>Awe.FromTape(e.ID,e.type,e.arguments),O[R3t]=e=>Owe.FromTape(e.ID,e.type,e.arguments),O[M3t]=e=>Pwe.FromTape(e.ID,e.type,e.arguments),O[D3t]=e=>Nwe.FromTape(e.ID,e.type,e.arguments),O[C3t]=e=>Lwe.FromTape(e.ID,e.type,e.arguments),O[A3t]=e=>Fwe.FromTape(e.ID,e.type,e.arguments),O[O3t]=e=>Hwe.FromTape(e.ID,e.type,e.arguments),O[P3t]=e=>Uwe.FromTape(e.ID,e.type,e.arguments),O[N3t]=e=>Bwe.FromTape(e.ID,e.type,e.arguments),O[L3t]=e=>kwe.FromTape(e.ID,e.type,e.arguments),O[F3t]=e=>Gwe.FromTape(e.ID,e.type,e.arguments),O[H3t]=e=>Vwe.FromTape(e.ID,e.type,e.arguments),O[U3t]=e=>zwe.FromTape(e.ID,e.type,e.arguments),O[B3t]=e=>jwe.FromTape(e.ID,e.type,e.arguments),O[k3t]=e=>Wwe.FromTape(e.ID,e.type,e.arguments);O[G3t]=e=>qwe.FromTape(e.ID,e.type,e.arguments),O[V3t]=e=>Ywe.FromTape(e.ID,e.type,e.arguments),O[z3t]=e=>Xwe.FromTape(e.ID,e.type,e.arguments),O[j3t]=e=>$we.FromTape(e.ID,e.type,e.arguments),O[W3t]=e=>Kwe.FromTape(e.ID,e.type,e.arguments),O[q3t]=e=>Zwe.FromTape(e.ID,e.type,e.arguments),O[Y3t]=e=>Jwe.FromTape(e.ID,e.type,e.arguments),O[X3t]=e=>Qwe.FromTape(e.ID,e.type,e.arguments),O[$3t]=e=>eRe.FromTape(e.ID,e.type,e.arguments),O[K3t]=e=>tRe.FromTape(e.ID,e.type,e.arguments),O[Z3t]=e=>rRe.FromTape(e.ID,e.type,e.arguments),O[J3t]=e=>iRe.FromTape(e.ID,e.type,e.arguments),O[Q3t]=e=>nRe.FromTape(e.ID,e.type,e.arguments),O[ePt]=e=>sRe.FromTape(e.ID,e.type,e.arguments),O[tPt]=e=>aRe.FromTape(e.ID,e.type,e.arguments),O[rPt]=e=>oRe.FromTape(e.ID,e.type,e.arguments);var Jg=class{constructor(e){this.value=e}};Jg.EMAIL="EMAIL",Jg.FAX="FAX",Jg.PHONE="PHONE",Jg.POST="POST",Jg.VERBAL="VERBAL",Jg.USERDEFINED="USERDEFINED",Jg.NOTDEFINED="NOTDEFINED";var dn=class{constructor(e){this.value=e}};dn.DEAD_LOAD_G="DEAD_LOAD_G",dn.COMPLETION_G1="COMPLETION_G1",dn.LIVE_LOAD_Q="LIVE_LOAD_Q",dn.SNOW_S="SNOW_S",dn.WIND_W="WIND_W",dn.PRESTRESSING_P="PRESTRESSING_P",dn.SETTLEMENT_U="SETTLEMENT_U",dn.TEMPERATURE_T="TEMPERATURE_T",dn.EARTHQUAKE_E="EARTHQUAKE_E",dn.FIRE="FIRE",dn.IMPULSE="IMPULSE",dn.IMPACT="IMPACT",dn.TRANSPORT="TRANSPORT",dn.ERECTION="ERECTION",dn.PROPPING="PROPPING",dn.SYSTEM_IMPERFECTION="SYSTEM_IMPERFECTION",dn.SHRINKAGE="SHRINKAGE",dn.CREEP="CREEP",dn.LACK_OF_FIT="LACK_OF_FIT",dn.BUOYANCY="BUOYANCY",dn.ICE="ICE",dn.CURRENT="CURRENT",dn.WAVE="WAVE",dn.RAIN="RAIN",dn.BRAKES="BRAKES",dn.USERDEFINED="USERDEFINED",dn.NOTDEFINED="NOTDEFINED";var aI=class{constructor(e){this.value=e}};aI.PERMANENT_G="PERMANENT_G",aI.VARIABLE_Q="VARIABLE_Q",aI.EXTRAORDINARY_A="EXTRAORDINARY_A",aI.USERDEFINED="USERDEFINED",aI.NOTDEFINED="NOTDEFINED";var Qg=class{constructor(e){this.value=e}};Qg.ELECTRICACTUATOR="ELECTRICACTUATOR",Qg.HANDOPERATEDACTUATOR="HANDOPERATEDACTUATOR",Qg.HYDRAULICACTUATOR="HYDRAULICACTUATOR",Qg.PNEUMATICACTUATOR="PNEUMATICACTUATOR",Qg.THERMOSTATICACTUATOR="THERMOSTATICACTUATOR",Qg.USERDEFINED="USERDEFINED",Qg.NOTDEFINED="NOTDEFINED";var oI=class{constructor(e){this.value=e}};oI.OFFICE="OFFICE",oI.SITE="SITE",oI.HOME="HOME",oI.DISTRIBUTIONPOINT="DISTRIBUTIONPOINT",oI.USERDEFINED="USERDEFINED";var lI=class{constructor(e){this.value=e}};lI.CONSTANTFLOW="CONSTANTFLOW",lI.VARIABLEFLOWPRESSUREDEPENDANT="VARIABLEFLOWPRESSUREDEPENDANT",lI.VARIABLEFLOWPRESSUREINDEPENDANT="VARIABLEFLOWPRESSUREINDEPENDANT",lI.USERDEFINED="USERDEFINED",lI.NOTDEFINED="NOTDEFINED";var vT=class{constructor(e){this.value=e}};vT.DIFFUSER="DIFFUSER",vT.GRILLE="GRILLE",vT.LOUVRE="LOUVRE",vT.REGISTER="REGISTER",vT.USERDEFINED="USERDEFINED",vT.NOTDEFINED="NOTDEFINED";var Fc=class{constructor(e){this.value=e}};Fc.FIXEDPLATECOUNTERFLOWEXCHANGER="FIXEDPLATECOUNTERFLOWEXCHANGER",Fc.FIXEDPLATECROSSFLOWEXCHANGER="FIXEDPLATECROSSFLOWEXCHANGER",Fc.FIXEDPLATEPARALLELFLOWEXCHANGER="FIXEDPLATEPARALLELFLOWEXCHANGER",Fc.ROTARYWHEEL="ROTARYWHEEL",Fc.RUNAROUNDCOILLOOP="RUNAROUNDCOILLOOP",Fc.HEATPIPE="HEATPIPE",Fc.TWINTOWERENTHALPYRECOVERYLOOPS="TWINTOWERENTHALPYRECOVERYLOOPS",Fc.THERMOSIPHONSEALEDTUBEHEATEXCHANGERS="THERMOSIPHONSEALEDTUBEHEATEXCHANGERS",Fc.THERMOSIPHONCOILTYPEHEATEXCHANGERS="THERMOSIPHONCOILTYPEHEATEXCHANGERS",Fc.USERDEFINED="USERDEFINED",Fc.NOTDEFINED="NOTDEFINED";var Ff=class{constructor(e){this.value=e}};Ff.BELL="BELL",Ff.BREAKGLASSBUTTON="BREAKGLASSBUTTON",Ff.LIGHT="LIGHT",Ff.MANUALPULLBOX="MANUALPULLBOX",Ff.SIREN="SIREN",Ff.WHISTLE="WHISTLE",Ff.USERDEFINED="USERDEFINED",Ff.NOTDEFINED="NOTDEFINED";var Vde=class{constructor(e){this.value=e}};Vde.USERDEFINED="USERDEFINED",Vde.NOTDEFINED="NOTDEFINED";var cI=class{constructor(e){this.value=e}};cI.IN_PLANE_LOADING_2D="IN_PLANE_LOADING_2D",cI.OUT_PLANE_LOADING_2D="OUT_PLANE_LOADING_2D",cI.LOADING_3D="LOADING_3D",cI.USERDEFINED="USERDEFINED",cI.NOTDEFINED="NOTDEFINED";var yT=class{constructor(e){this.value=e}};yT.FIRST_ORDER_THEORY="FIRST_ORDER_THEORY",yT.SECOND_ORDER_THEORY="SECOND_ORDER_THEORY",yT.THIRD_ORDER_THEORY="THIRD_ORDER_THEORY",yT.FULL_NONLINEAR_THEORY="FULL_NONLINEAR_THEORY",yT.USERDEFINED="USERDEFINED",yT.NOTDEFINED="NOTDEFINED";var dA=class{constructor(e){this.value=e}};dA.ADD="ADD",dA.DIVIDE="DIVIDE",dA.MULTIPLY="MULTIPLY",dA.SUBTRACT="SUBTRACT";var Xk=class{constructor(e){this.value=e}};Xk.SITE="SITE",Xk.FACTORY="FACTORY",Xk.NOTDEFINED="NOTDEFINED";var Xo=class{constructor(e){this.value=e}};Xo.AMPLIFIER="AMPLIFIER",Xo.CAMERA="CAMERA",Xo.DISPLAY="DISPLAY",Xo.MICROPHONE="MICROPHONE",Xo.PLAYER="PLAYER",Xo.PROJECTOR="PROJECTOR",Xo.RECEIVER="RECEIVER",Xo.SPEAKER="SPEAKER",Xo.SWITCHER="SWITCHER",Xo.TELEPHONE="TELEPHONE",Xo.TUNER="TUNER",Xo.USERDEFINED="USERDEFINED",Xo.NOTDEFINED="NOTDEFINED";var TT=class{constructor(e){this.value=e}};TT.POLYLINE_FORM="POLYLINE_FORM",TT.CIRCULAR_ARC="CIRCULAR_ARC",TT.ELLIPTIC_ARC="ELLIPTIC_ARC",TT.PARABOLIC_ARC="PARABOLIC_ARC",TT.HYPERBOLIC_ARC="HYPERBOLIC_ARC",TT.UNSPECIFIED="UNSPECIFIED";var Hc=class{constructor(e){this.value=e}};Hc.PLANE_SURF="PLANE_SURF",Hc.CYLINDRICAL_SURF="CYLINDRICAL_SURF",Hc.CONICAL_SURF="CONICAL_SURF",Hc.SPHERICAL_SURF="SPHERICAL_SURF",Hc.TOROIDAL_SURF="TOROIDAL_SURF",Hc.SURF_OF_REVOLUTION="SURF_OF_REVOLUTION",Hc.RULED_SURF="RULED_SURF",Hc.GENERALISED_CONE="GENERALISED_CONE",Hc.QUADRIC_SURF="QUADRIC_SURF",Hc.SURF_OF_LINEAR_EXTRUSION="SURF_OF_LINEAR_EXTRUSION",Hc.UNSPECIFIED="UNSPECIFIED";var po=class{constructor(e){this.value=e}};po.BEAM="BEAM",po.JOIST="JOIST",po.HOLLOWCORE="HOLLOWCORE",po.LINTEL="LINTEL",po.SPANDREL="SPANDREL",po.T_BEAM="T_BEAM",po.GIRDER_SEGMENT="GIRDER_SEGMENT",po.DIAPHRAGM="DIAPHRAGM",po.PIERCAP="PIERCAP",po.HATSTONE="HATSTONE",po.CORNICE="CORNICE",po.EDGEBEAM="EDGEBEAM",po.USERDEFINED="USERDEFINED",po.NOTDEFINED="NOTDEFINED";var uI=class{constructor(e){this.value=e}};uI.FIXED_MOVEMENT="FIXED_MOVEMENT",uI.GUIDED_LONGITUDINAL="GUIDED_LONGITUDINAL",uI.GUIDED_TRANSVERSAL="GUIDED_TRANSVERSAL",uI.FREE_MOVEMENT="FREE_MOVEMENT",uI.NOTDEFINED="NOTDEFINED";var Ku=class{constructor(e){this.value=e}};Ku.CYLINDRICAL="CYLINDRICAL",Ku.SPHERICAL="SPHERICAL",Ku.ELASTOMERIC="ELASTOMERIC",Ku.POT="POT",Ku.GUIDE="GUIDE",Ku.ROCKER="ROCKER",Ku.ROLLER="ROLLER",Ku.DISK="DISK",Ku.USERDEFINED="USERDEFINED",Ku.NOTDEFINED="NOTDEFINED";var Zu=class{constructor(e){this.value=e}};Zu.GREATERTHAN="GREATERTHAN",Zu.GREATERTHANOREQUALTO="GREATERTHANOREQUALTO",Zu.LESSTHAN="LESSTHAN",Zu.LESSTHANOREQUALTO="LESSTHANOREQUALTO",Zu.EQUALTO="EQUALTO",Zu.NOTEQUALTO="NOTEQUALTO",Zu.INCLUDES="INCLUDES",Zu.NOTINCLUDES="NOTINCLUDES",Zu.INCLUDEDIN="INCLUDEDIN",Zu.NOTINCLUDEDIN="NOTINCLUDEDIN";var fA=class{constructor(e){this.value=e}};fA.WATER="WATER",fA.STEAM="STEAM",fA.USERDEFINED="USERDEFINED",fA.NOTDEFINED="NOTDEFINED";var $k=class{constructor(e){this.value=e}};$k.UNION="UNION",$k.INTERSECTION="INTERSECTION",$k.DIFFERENCE="DIFFERENCE";var Bl=class{constructor(e){this.value=e}};Bl.ABUTMENT="ABUTMENT",Bl.DECK="DECK",Bl.DECK_SEGMENT="DECK_SEGMENT",Bl.FOUNDATION="FOUNDATION",Bl.PIER="PIER",Bl.PIER_SEGMENT="PIER_SEGMENT",Bl.PYLON="PYLON",Bl.SUBSTRUCTURE="SUBSTRUCTURE",Bl.SUPERSTRUCTURE="SUPERSTRUCTURE",Bl.SURFACESTRUCTURE="SURFACESTRUCTURE",Bl.USERDEFINED="USERDEFINED",Bl.NOTDEFINED="NOTDEFINED";var Ju=class{constructor(e){this.value=e}};Ju.ARCHED="ARCHED",Ju.CABLE_STAYED="CABLE_STAYED",Ju.CANTILEVER="CANTILEVER",Ju.CULVERT="CULVERT",Ju.FRAMEWORK="FRAMEWORK",Ju.GIRDER="GIRDER",Ju.SUSPENSION="SUSPENSION",Ju.TRUSS="TRUSS",Ju.USERDEFINED="USERDEFINED",Ju.NOTDEFINED="NOTDEFINED";var hI=class{constructor(e){this.value=e}};hI.INSULATION="INSULATION",hI.PRECASTPANEL="PRECASTPANEL",hI.APRON="APRON",hI.USERDEFINED="USERDEFINED",hI.NOTDEFINED="NOTDEFINED";var e0=class{constructor(e){this.value=e}};e0.COMPLEX="COMPLEX",e0.ELEMENT="ELEMENT",e0.PARTIAL="PARTIAL",e0.PROVISIONFORVOID="PROVISIONFORVOID",e0.PROVISIONFORSPACE="PROVISIONFORSPACE",e0.USERDEFINED="USERDEFINED",e0.NOTDEFINED="NOTDEFINED";var Qu=class{constructor(e){this.value=e}};Qu.FENESTRATION="FENESTRATION",Qu.FOUNDATION="FOUNDATION",Qu.LOADBEARING="LOADBEARING",Qu.OUTERSHELL="OUTERSHELL",Qu.SHADING="SHADING",Qu.TRANSPORT="TRANSPORT",Qu.REINFORCING="REINFORCING",Qu.PRESTRESSING="PRESTRESSING",Qu.USERDEFINED="USERDEFINED",Qu.NOTDEFINED="NOTDEFINED";var zde=class{constructor(e){this.value=e}};zde.USERDEFINED="USERDEFINED",zde.NOTDEFINED="NOTDEFINED";var ET=class{constructor(e){this.value=e}};ET.BEND="BEND",ET.CROSS="CROSS",ET.REDUCER="REDUCER",ET.TEE="TEE",ET.USERDEFINED="USERDEFINED",ET.NOTDEFINED="NOTDEFINED";var bT=class{constructor(e){this.value=e}};bT.CABLELADDERSEGMENT="CABLELADDERSEGMENT",bT.CABLETRAYSEGMENT="CABLETRAYSEGMENT",bT.CABLETRUNKINGSEGMENT="CABLETRUNKINGSEGMENT",bT.CONDUITSEGMENT="CONDUITSEGMENT",bT.USERDEFINED="USERDEFINED",bT.NOTDEFINED="NOTDEFINED";var t0=class{constructor(e){this.value=e}};t0.CONNECTOR="CONNECTOR",t0.ENTRY="ENTRY",t0.EXIT="EXIT",t0.JUNCTION="JUNCTION",t0.TRANSITION="TRANSITION",t0.USERDEFINED="USERDEFINED",t0.NOTDEFINED="NOTDEFINED";var xT=class{constructor(e){this.value=e}};xT.BUSBARSEGMENT="BUSBARSEGMENT",xT.CABLESEGMENT="CABLESEGMENT",xT.CONDUCTORSEGMENT="CONDUCTORSEGMENT",xT.CORESEGMENT="CORESEGMENT",xT.USERDEFINED="USERDEFINED",xT.NOTDEFINED="NOTDEFINED";var mA=class{constructor(e){this.value=e}};mA.WELL="WELL",mA.CAISSON="CAISSON",mA.USERDEFINED="USERDEFINED",mA.NOTDEFINED="NOTDEFINED";var pI=class{constructor(e){this.value=e}};pI.NOCHANGE="NOCHANGE",pI.MODIFIED="MODIFIED",pI.ADDED="ADDED",pI.DELETED="DELETED",pI.NOTDEFINED="NOTDEFINED";var dI=class{constructor(e){this.value=e}};dI.AIRCOOLED="AIRCOOLED",dI.WATERCOOLED="WATERCOOLED",dI.HEATRECOVERY="HEATRECOVERY",dI.USERDEFINED="USERDEFINED",dI.NOTDEFINED="NOTDEFINED";var jde=class{constructor(e){this.value=e}};jde.USERDEFINED="USERDEFINED",jde.NOTDEFINED="NOTDEFINED";var Vp=class{constructor(e){this.value=e}};Vp.DXCOOLINGCOIL="DXCOOLINGCOIL",Vp.ELECTRICHEATINGCOIL="ELECTRICHEATINGCOIL",Vp.GASHEATINGCOIL="GASHEATINGCOIL",Vp.HYDRONICCOIL="HYDRONICCOIL",Vp.STEAMHEATINGCOIL="STEAMHEATINGCOIL",Vp.WATERCOOLINGCOIL="WATERCOOLINGCOIL",Vp.WATERHEATINGCOIL="WATERHEATINGCOIL",Vp.USERDEFINED="USERDEFINED",Vp.NOTDEFINED="NOTDEFINED";var r0=class{constructor(e){this.value=e}};r0.COLUMN="COLUMN",r0.PILASTER="PILASTER",r0.PIERSTEM="PIERSTEM",r0.PIERSTEM_SEGMENT="PIERSTEM_SEGMENT",r0.STANDCOLUMN="STANDCOLUMN",r0.USERDEFINED="USERDEFINED",r0.NOTDEFINED="NOTDEFINED";var fo=class{constructor(e){this.value=e}};fo.ANTENNA="ANTENNA",fo.COMPUTER="COMPUTER",fo.FAX="FAX",fo.GATEWAY="GATEWAY",fo.MODEM="MODEM",fo.NETWORKAPPLIANCE="NETWORKAPPLIANCE",fo.NETWORKBRIDGE="NETWORKBRIDGE",fo.NETWORKHUB="NETWORKHUB",fo.PRINTER="PRINTER",fo.REPEATER="REPEATER",fo.ROUTER="ROUTER",fo.SCANNER="SCANNER",fo.USERDEFINED="USERDEFINED",fo.NOTDEFINED="NOTDEFINED";var Wde=class{constructor(e){this.value=e}};Wde.P_COMPLEX="P_COMPLEX",Wde.Q_COMPLEX="Q_COMPLEX";var Gs=class{constructor(e){this.value=e}};Gs.DYNAMIC="DYNAMIC",Gs.RECIPROCATING="RECIPROCATING",Gs.ROTARY="ROTARY",Gs.SCROLL="SCROLL",Gs.TROCHOIDAL="TROCHOIDAL",Gs.SINGLESTAGE="SINGLESTAGE",Gs.BOOSTER="BOOSTER",Gs.OPENTYPE="OPENTYPE",Gs.HERMETIC="HERMETIC",Gs.SEMIHERMETIC="SEMIHERMETIC",Gs.WELDEDSHELLHERMETIC="WELDEDSHELLHERMETIC",Gs.ROLLINGPISTON="ROLLINGPISTON",Gs.ROTARYVANE="ROTARYVANE",Gs.SINGLESCREW="SINGLESCREW",Gs.TWINSCREW="TWINSCREW",Gs.USERDEFINED="USERDEFINED",Gs.NOTDEFINED="NOTDEFINED";var zp=class{constructor(e){this.value=e}};zp.AIRCOOLED="AIRCOOLED",zp.EVAPORATIVECOOLED="EVAPORATIVECOOLED",zp.WATERCOOLED="WATERCOOLED",zp.WATERCOOLEDBRAZEDPLATE="WATERCOOLEDBRAZEDPLATE",zp.WATERCOOLEDSHELLCOIL="WATERCOOLEDSHELLCOIL",zp.WATERCOOLEDSHELLTUBE="WATERCOOLEDSHELLTUBE",zp.WATERCOOLEDTUBEINTUBE="WATERCOOLEDTUBEINTUBE",zp.USERDEFINED="USERDEFINED",zp.NOTDEFINED="NOTDEFINED";var gA=class{constructor(e){this.value=e}};gA.ATPATH="ATPATH",gA.ATSTART="ATSTART",gA.ATEND="ATEND",gA.NOTDEFINED="NOTDEFINED";var fI=class{constructor(e){this.value=e}};fI.HARD="HARD",fI.SOFT="SOFT",fI.ADVISORY="ADVISORY",fI.USERDEFINED="USERDEFINED",fI.NOTDEFINED="NOTDEFINED";var eh=class{constructor(e){this.value=e}};eh.DEMOLISHING="DEMOLISHING",eh.EARTHMOVING="EARTHMOVING",eh.ERECTING="ERECTING",eh.HEATING="HEATING",eh.LIGHTING="LIGHTING",eh.PAVING="PAVING",eh.PUMPING="PUMPING",eh.TRANSPORTING="TRANSPORTING",eh.USERDEFINED="USERDEFINED",eh.NOTDEFINED="NOTDEFINED";var Uc=class{constructor(e){this.value=e}};Uc.AGGREGATES="AGGREGATES",Uc.CONCRETE="CONCRETE",Uc.DRYWALL="DRYWALL",Uc.FUEL="FUEL",Uc.GYPSUM="GYPSUM",Uc.MASONRY="MASONRY",Uc.METAL="METAL",Uc.PLASTIC="PLASTIC",Uc.WOOD="WOOD",Uc.NOTDEFINED="NOTDEFINED",Uc.USERDEFINED="USERDEFINED";var vA=class{constructor(e){this.value=e}};vA.ASSEMBLY="ASSEMBLY",vA.FORMWORK="FORMWORK",vA.USERDEFINED="USERDEFINED",vA.NOTDEFINED="NOTDEFINED";var i0=class{constructor(e){this.value=e}};i0.FLOATING="FLOATING",i0.PROGRAMMABLE="PROGRAMMABLE",i0.PROPORTIONAL="PROPORTIONAL",i0.MULTIPOSITION="MULTIPOSITION",i0.TWOPOSITION="TWOPOSITION",i0.USERDEFINED="USERDEFINED",i0.NOTDEFINED="NOTDEFINED";var yA=class{constructor(e){this.value=e}};yA.ACTIVE="ACTIVE",yA.PASSIVE="PASSIVE",yA.USERDEFINED="USERDEFINED",yA.NOTDEFINED="NOTDEFINED";var mI=class{constructor(e){this.value=e}};mI.NATURALDRAFT="NATURALDRAFT",mI.MECHANICALINDUCEDDRAFT="MECHANICALINDUCEDDRAFT",mI.MECHANICALFORCEDDRAFT="MECHANICALFORCEDDRAFT",mI.USERDEFINED="USERDEFINED",mI.NOTDEFINED="NOTDEFINED";var qde=class{constructor(e){this.value=e}};qde.USERDEFINED="USERDEFINED",qde.NOTDEFINED="NOTDEFINED";var jp=class{constructor(e){this.value=e}};jp.BUDGET="BUDGET",jp.COSTPLAN="COSTPLAN",jp.ESTIMATE="ESTIMATE",jp.TENDER="TENDER",jp.PRICEDBILLOFQUANTITIES="PRICEDBILLOFQUANTITIES",jp.UNPRICEDBILLOFQUANTITIES="UNPRICEDBILLOFQUANTITIES",jp.SCHEDULEOFRATES="SCHEDULEOFRATES",jp.USERDEFINED="USERDEFINED",jp.NOTDEFINED="NOTDEFINED";var $o=class{constructor(e){this.value=e}};$o.CEILING="CEILING",$o.FLOORING="FLOORING",$o.CLADDING="CLADDING",$o.ROOFING="ROOFING",$o.MOLDING="MOLDING",$o.SKIRTINGBOARD="SKIRTINGBOARD",$o.INSULATION="INSULATION",$o.MEMBRANE="MEMBRANE",$o.SLEEVING="SLEEVING",$o.WRAPPING="WRAPPING",$o.COPING="COPING",$o.USERDEFINED="USERDEFINED",$o.NOTDEFINED="NOTDEFINED";var TA=class{constructor(e){this.value=e}};TA.OFFICE="OFFICE",TA.SITE="SITE",TA.USERDEFINED="USERDEFINED",TA.NOTDEFINED="NOTDEFINED";var Yde=class{constructor(e){this.value=e}};Yde.USERDEFINED="USERDEFINED",Yde.NOTDEFINED="NOTDEFINED";var EA=class{constructor(e){this.value=e}};EA.LINEAR="LINEAR",EA.LOG_LINEAR="LOG_LINEAR",EA.LOG_LOG="LOG_LOG",EA.NOTDEFINED="NOTDEFINED";var Ko=class{constructor(e){this.value=e}};Ko.BACKDRAFTDAMPER="BACKDRAFTDAMPER",Ko.BALANCINGDAMPER="BALANCINGDAMPER",Ko.BLASTDAMPER="BLASTDAMPER",Ko.CONTROLDAMPER="CONTROLDAMPER",Ko.FIREDAMPER="FIREDAMPER",Ko.FIRESMOKEDAMPER="FIRESMOKEDAMPER",Ko.FUMEHOODEXHAUST="FUMEHOODEXHAUST",Ko.GRAVITYDAMPER="GRAVITYDAMPER",Ko.GRAVITYRELIEFDAMPER="GRAVITYRELIEFDAMPER",Ko.RELIEFDAMPER="RELIEFDAMPER",Ko.SMOKEDAMPER="SMOKEDAMPER",Ko.USERDEFINED="USERDEFINED",Ko.NOTDEFINED="NOTDEFINED";var gI=class{constructor(e){this.value=e}};gI.MEASURED="MEASURED",gI.PREDICTED="PREDICTED",gI.SIMULATED="SIMULATED",gI.USERDEFINED="USERDEFINED",gI.NOTDEFINED="NOTDEFINED";var dr=class{constructor(e){this.value=e}};dr.ANGULARVELOCITYUNIT="ANGULARVELOCITYUNIT",dr.AREADENSITYUNIT="AREADENSITYUNIT",dr.COMPOUNDPLANEANGLEUNIT="COMPOUNDPLANEANGLEUNIT",dr.DYNAMICVISCOSITYUNIT="DYNAMICVISCOSITYUNIT",dr.HEATFLUXDENSITYUNIT="HEATFLUXDENSITYUNIT",dr.INTEGERCOUNTRATEUNIT="INTEGERCOUNTRATEUNIT",dr.ISOTHERMALMOISTURECAPACITYUNIT="ISOTHERMALMOISTURECAPACITYUNIT",dr.KINEMATICVISCOSITYUNIT="KINEMATICVISCOSITYUNIT",dr.LINEARVELOCITYUNIT="LINEARVELOCITYUNIT",dr.MASSDENSITYUNIT="MASSDENSITYUNIT",dr.MASSFLOWRATEUNIT="MASSFLOWRATEUNIT",dr.MOISTUREDIFFUSIVITYUNIT="MOISTUREDIFFUSIVITYUNIT",dr.MOLECULARWEIGHTUNIT="MOLECULARWEIGHTUNIT",dr.SPECIFICHEATCAPACITYUNIT="SPECIFICHEATCAPACITYUNIT",dr.THERMALADMITTANCEUNIT="THERMALADMITTANCEUNIT",dr.THERMALCONDUCTANCEUNIT="THERMALCONDUCTANCEUNIT",dr.THERMALRESISTANCEUNIT="THERMALRESISTANCEUNIT",dr.THERMALTRANSMITTANCEUNIT="THERMALTRANSMITTANCEUNIT",dr.VAPORPERMEABILITYUNIT="VAPORPERMEABILITYUNIT",dr.VOLUMETRICFLOWRATEUNIT="VOLUMETRICFLOWRATEUNIT",dr.ROTATIONALFREQUENCYUNIT="ROTATIONALFREQUENCYUNIT",dr.TORQUEUNIT="TORQUEUNIT",dr.MOMENTOFINERTIAUNIT="MOMENTOFINERTIAUNIT",dr.LINEARMOMENTUNIT="LINEARMOMENTUNIT",dr.LINEARFORCEUNIT="LINEARFORCEUNIT",dr.PLANARFORCEUNIT="PLANARFORCEUNIT",dr.MODULUSOFELASTICITYUNIT="MODULUSOFELASTICITYUNIT",dr.SHEARMODULUSUNIT="SHEARMODULUSUNIT",dr.LINEARSTIFFNESSUNIT="LINEARSTIFFNESSUNIT",dr.ROTATIONALSTIFFNESSUNIT="ROTATIONALSTIFFNESSUNIT",dr.MODULUSOFSUBGRADEREACTIONUNIT="MODULUSOFSUBGRADEREACTIONUNIT",dr.ACCELERATIONUNIT="ACCELERATIONUNIT",dr.CURVATUREUNIT="CURVATUREUNIT",dr.HEATINGVALUEUNIT="HEATINGVALUEUNIT",dr.IONCONCENTRATIONUNIT="IONCONCENTRATIONUNIT",dr.LUMINOUSINTENSITYDISTRIBUTIONUNIT="LUMINOUSINTENSITYDISTRIBUTIONUNIT",dr.MASSPERLENGTHUNIT="MASSPERLENGTHUNIT",dr.MODULUSOFLINEARSUBGRADEREACTIONUNIT="MODULUSOFLINEARSUBGRADEREACTIONUNIT",dr.MODULUSOFROTATIONALSUBGRADEREACTIONUNIT="MODULUSOFROTATIONALSUBGRADEREACTIONUNIT",dr.PHUNIT="PHUNIT",dr.ROTATIONALMASSUNIT="ROTATIONALMASSUNIT",dr.SECTIONAREAINTEGRALUNIT="SECTIONAREAINTEGRALUNIT",dr.SECTIONMODULUSUNIT="SECTIONMODULUSUNIT",dr.SOUNDPOWERLEVELUNIT="SOUNDPOWERLEVELUNIT",dr.SOUNDPOWERUNIT="SOUNDPOWERUNIT",dr.SOUNDPRESSURELEVELUNIT="SOUNDPRESSURELEVELUNIT",dr.SOUNDPRESSUREUNIT="SOUNDPRESSUREUNIT",dr.TEMPERATUREGRADIENTUNIT="TEMPERATUREGRADIENTUNIT",dr.TEMPERATURERATEOFCHANGEUNIT="TEMPERATURERATEOFCHANGEUNIT",dr.THERMALEXPANSIONCOEFFICIENTUNIT="THERMALEXPANSIONCOEFFICIENTUNIT",dr.WARPINGCONSTANTUNIT="WARPINGCONSTANTUNIT",dr.WARPINGMOMENTUNIT="WARPINGMOMENTUNIT",dr.USERDEFINED="USERDEFINED";var Xde=class{constructor(e){this.value=e}};Xde.POSITIVE="POSITIVE",Xde.NEGATIVE="NEGATIVE";var IT=class{constructor(e){this.value=e}};IT.ANCHORPLATE="ANCHORPLATE",IT.BRACKET="BRACKET",IT.SHOE="SHOE",IT.EXPANSION_JOINT_DEVICE="EXPANSION_JOINT_DEVICE",IT.USERDEFINED="USERDEFINED",IT.NOTDEFINED="NOTDEFINED";var th=class{constructor(e){this.value=e}};th.FORMEDDUCT="FORMEDDUCT",th.INSPECTIONCHAMBER="INSPECTIONCHAMBER",th.INSPECTIONPIT="INSPECTIONPIT",th.MANHOLE="MANHOLE",th.METERCHAMBER="METERCHAMBER",th.SUMP="SUMP",th.TRENCH="TRENCH",th.VALVECHAMBER="VALVECHAMBER",th.USERDEFINED="USERDEFINED",th.NOTDEFINED="NOTDEFINED";var _T=class{constructor(e){this.value=e}};_T.CABLE="CABLE",_T.CABLECARRIER="CABLECARRIER",_T.DUCT="DUCT",_T.PIPE="PIPE",_T.USERDEFINED="USERDEFINED",_T.NOTDEFINED="NOTDEFINED";var Pr=class{constructor(e){this.value=e}};Pr.AIRCONDITIONING="AIRCONDITIONING",Pr.AUDIOVISUAL="AUDIOVISUAL",Pr.CHEMICAL="CHEMICAL",Pr.CHILLEDWATER="CHILLEDWATER",Pr.COMMUNICATION="COMMUNICATION",Pr.COMPRESSEDAIR="COMPRESSEDAIR",Pr.CONDENSERWATER="CONDENSERWATER",Pr.CONTROL="CONTROL",Pr.CONVEYING="CONVEYING",Pr.DATA="DATA",Pr.DISPOSAL="DISPOSAL",Pr.DOMESTICCOLDWATER="DOMESTICCOLDWATER",Pr.DOMESTICHOTWATER="DOMESTICHOTWATER",Pr.DRAINAGE="DRAINAGE",Pr.EARTHING="EARTHING",Pr.ELECTRICAL="ELECTRICAL",Pr.ELECTROACOUSTIC="ELECTROACOUSTIC",Pr.EXHAUST="EXHAUST",Pr.FIREPROTECTION="FIREPROTECTION",Pr.FUEL="FUEL",Pr.GAS="GAS",Pr.HAZARDOUS="HAZARDOUS",Pr.HEATING="HEATING",Pr.LIGHTING="LIGHTING",Pr.LIGHTNINGPROTECTION="LIGHTNINGPROTECTION",Pr.MUNICIPALSOLIDWASTE="MUNICIPALSOLIDWASTE",Pr.OIL="OIL",Pr.OPERATIONAL="OPERATIONAL",Pr.POWERGENERATION="POWERGENERATION",Pr.RAINWATER="RAINWATER",Pr.REFRIGERATION="REFRIGERATION",Pr.SECURITY="SECURITY",Pr.SEWAGE="SEWAGE",Pr.SIGNAL="SIGNAL",Pr.STORMWATER="STORMWATER",Pr.TELEPHONE="TELEPHONE",Pr.TV="TV",Pr.VACUUM="VACUUM",Pr.VENT="VENT",Pr.VENTILATION="VENTILATION",Pr.WASTEWATER="WASTEWATER",Pr.WATERSUPPLY="WATERSUPPLY",Pr.USERDEFINED="USERDEFINED",Pr.NOTDEFINED="NOTDEFINED";var ST=class{constructor(e){this.value=e}};ST.PUBLIC="PUBLIC",ST.RESTRICTED="RESTRICTED",ST.CONFIDENTIAL="CONFIDENTIAL",ST.PERSONAL="PERSONAL",ST.USERDEFINED="USERDEFINED",ST.NOTDEFINED="NOTDEFINED";var vI=class{constructor(e){this.value=e}};vI.DRAFT="DRAFT",vI.FINALDRAFT="FINALDRAFT",vI.FINAL="FINAL",vI.REVISION="REVISION",vI.NOTDEFINED="NOTDEFINED";var Wp=class{constructor(e){this.value=e}};Wp.SWINGING="SWINGING",Wp.DOUBLE_ACTING="DOUBLE_ACTING",Wp.SLIDING="SLIDING",Wp.FOLDING="FOLDING",Wp.REVOLVING="REVOLVING",Wp.ROLLINGUP="ROLLINGUP",Wp.FIXEDPANEL="FIXEDPANEL",Wp.USERDEFINED="USERDEFINED",Wp.NOTDEFINED="NOTDEFINED";var bA=class{constructor(e){this.value=e}};bA.LEFT="LEFT",bA.MIDDLE="MIDDLE",bA.RIGHT="RIGHT",bA.NOTDEFINED="NOTDEFINED";var qp=class{constructor(e){this.value=e}};qp.ALUMINIUM="ALUMINIUM",qp.HIGH_GRADE_STEEL="HIGH_GRADE_STEEL",qp.STEEL="STEEL",qp.WOOD="WOOD",qp.ALUMINIUM_WOOD="ALUMINIUM_WOOD",qp.ALUMINIUM_PLASTIC="ALUMINIUM_PLASTIC",qp.PLASTIC="PLASTIC",qp.USERDEFINED="USERDEFINED",qp.NOTDEFINED="NOTDEFINED";var Os=class{constructor(e){this.value=e}};Os.SINGLE_SWING_LEFT="SINGLE_SWING_LEFT",Os.SINGLE_SWING_RIGHT="SINGLE_SWING_RIGHT",Os.DOUBLE_DOOR_SINGLE_SWING="DOUBLE_DOOR_SINGLE_SWING",Os.DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_LEFT="DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_LEFT",Os.DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_RIGHT="DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_RIGHT",Os.DOUBLE_SWING_LEFT="DOUBLE_SWING_LEFT",Os.DOUBLE_SWING_RIGHT="DOUBLE_SWING_RIGHT",Os.DOUBLE_DOOR_DOUBLE_SWING="DOUBLE_DOOR_DOUBLE_SWING",Os.SLIDING_TO_LEFT="SLIDING_TO_LEFT",Os.SLIDING_TO_RIGHT="SLIDING_TO_RIGHT",Os.DOUBLE_DOOR_SLIDING="DOUBLE_DOOR_SLIDING",Os.FOLDING_TO_LEFT="FOLDING_TO_LEFT",Os.FOLDING_TO_RIGHT="FOLDING_TO_RIGHT",Os.DOUBLE_DOOR_FOLDING="DOUBLE_DOOR_FOLDING",Os.REVOLVING="REVOLVING",Os.ROLLINGUP="ROLLINGUP",Os.USERDEFINED="USERDEFINED",Os.NOTDEFINED="NOTDEFINED";var yI=class{constructor(e){this.value=e}};yI.DOOR="DOOR",yI.GATE="GATE",yI.TRAPDOOR="TRAPDOOR",yI.USERDEFINED="USERDEFINED",yI.NOTDEFINED="NOTDEFINED";var ps=class{constructor(e){this.value=e}};ps.SINGLE_SWING_LEFT="SINGLE_SWING_LEFT",ps.SINGLE_SWING_RIGHT="SINGLE_SWING_RIGHT",ps.DOUBLE_DOOR_SINGLE_SWING="DOUBLE_DOOR_SINGLE_SWING",ps.DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_LEFT="DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_LEFT",ps.DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_RIGHT="DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_RIGHT",ps.DOUBLE_SWING_LEFT="DOUBLE_SWING_LEFT",ps.DOUBLE_SWING_RIGHT="DOUBLE_SWING_RIGHT",ps.DOUBLE_DOOR_DOUBLE_SWING="DOUBLE_DOOR_DOUBLE_SWING",ps.SLIDING_TO_LEFT="SLIDING_TO_LEFT",ps.SLIDING_TO_RIGHT="SLIDING_TO_RIGHT",ps.DOUBLE_DOOR_SLIDING="DOUBLE_DOOR_SLIDING",ps.FOLDING_TO_LEFT="FOLDING_TO_LEFT",ps.FOLDING_TO_RIGHT="FOLDING_TO_RIGHT",ps.DOUBLE_DOOR_FOLDING="DOUBLE_DOOR_FOLDING",ps.REVOLVING="REVOLVING",ps.ROLLINGUP="ROLLINGUP",ps.SWING_FIXED_LEFT="SWING_FIXED_LEFT",ps.SWING_FIXED_RIGHT="SWING_FIXED_RIGHT",ps.USERDEFINED="USERDEFINED",ps.NOTDEFINED="NOTDEFINED";var Yp=class{constructor(e){this.value=e}};Yp.BEND="BEND",Yp.CONNECTOR="CONNECTOR",Yp.ENTRY="ENTRY",Yp.EXIT="EXIT",Yp.JUNCTION="JUNCTION",Yp.OBSTRUCTION="OBSTRUCTION",Yp.TRANSITION="TRANSITION",Yp.USERDEFINED="USERDEFINED",Yp.NOTDEFINED="NOTDEFINED";var xA=class{constructor(e){this.value=e}};xA.RIGIDSEGMENT="RIGIDSEGMENT",xA.FLEXIBLESEGMENT="FLEXIBLESEGMENT",xA.USERDEFINED="USERDEFINED",xA.NOTDEFINED="NOTDEFINED";var TI=class{constructor(e){this.value=e}};TI.FLATOVAL="FLATOVAL",TI.RECTANGULAR="RECTANGULAR",TI.ROUND="ROUND",TI.USERDEFINED="USERDEFINED",TI.NOTDEFINED="NOTDEFINED";var Ps=class{constructor(e){this.value=e}};Ps.DISHWASHER="DISHWASHER",Ps.ELECTRICCOOKER="ELECTRICCOOKER",Ps.FREESTANDINGELECTRICHEATER="FREESTANDINGELECTRICHEATER",Ps.FREESTANDINGFAN="FREESTANDINGFAN",Ps.FREESTANDINGWATERHEATER="FREESTANDINGWATERHEATER",Ps.FREESTANDINGWATERCOOLER="FREESTANDINGWATERCOOLER",Ps.FREEZER="FREEZER",Ps.FRIDGE_FREEZER="FRIDGE_FREEZER",Ps.HANDDRYER="HANDDRYER",Ps.KITCHENMACHINE="KITCHENMACHINE",Ps.MICROWAVE="MICROWAVE",Ps.PHOTOCOPIER="PHOTOCOPIER",Ps.REFRIGERATOR="REFRIGERATOR",Ps.TUMBLEDRYER="TUMBLEDRYER",Ps.VENDINGMACHINE="VENDINGMACHINE",Ps.WASHINGMACHINE="WASHINGMACHINE",Ps.USERDEFINED="USERDEFINED",Ps.NOTDEFINED="NOTDEFINED";var wT=class{constructor(e){this.value=e}};wT.CONSUMERUNIT="CONSUMERUNIT",wT.DISTRIBUTIONBOARD="DISTRIBUTIONBOARD",wT.MOTORCONTROLCENTRE="MOTORCONTROLCENTRE",wT.SWITCHBOARD="SWITCHBOARD",wT.USERDEFINED="USERDEFINED",wT.NOTDEFINED="NOTDEFINED";var n0=class{constructor(e){this.value=e}};n0.BATTERY="BATTERY",n0.CAPACITORBANK="CAPACITORBANK",n0.HARMONICFILTER="HARMONICFILTER",n0.INDUCTORBANK="INDUCTORBANK",n0.UPS="UPS",n0.USERDEFINED="USERDEFINED",n0.NOTDEFINED="NOTDEFINED";var EI=class{constructor(e){this.value=e}};EI.CHP="CHP",EI.ENGINEGENERATOR="ENGINEGENERATOR",EI.STANDALONE="STANDALONE",EI.USERDEFINED="USERDEFINED",EI.NOTDEFINED="NOTDEFINED";var s0=class{constructor(e){this.value=e}};s0.DC="DC",s0.INDUCTION="INDUCTION",s0.POLYPHASE="POLYPHASE",s0.RELUCTANCESYNCHRONOUS="RELUCTANCESYNCHRONOUS",s0.SYNCHRONOUS="SYNCHRONOUS",s0.USERDEFINED="USERDEFINED",s0.NOTDEFINED="NOTDEFINED";var bI=class{constructor(e){this.value=e}};bI.TIMECLOCK="TIMECLOCK",bI.TIMEDELAY="TIMEDELAY",bI.RELAY="RELAY",bI.USERDEFINED="USERDEFINED",bI.NOTDEFINED="NOTDEFINED";var Qs=class{constructor(e){this.value=e}};Qs.ACCESSORY_ASSEMBLY="ACCESSORY_ASSEMBLY",Qs.ARCH="ARCH",Qs.BEAM_GRID="BEAM_GRID",Qs.BRACED_FRAME="BRACED_FRAME",Qs.GIRDER="GIRDER",Qs.REINFORCEMENT_UNIT="REINFORCEMENT_UNIT",Qs.RIGID_FRAME="RIGID_FRAME",Qs.SLAB_FIELD="SLAB_FIELD",Qs.TRUSS="TRUSS",Qs.ABUTMENT="ABUTMENT",Qs.PIER="PIER",Qs.PYLON="PYLON",Qs.CROSS_BRACING="CROSS_BRACING",Qs.DECK="DECK",Qs.USERDEFINED="USERDEFINED",Qs.NOTDEFINED="NOTDEFINED";var Kk=class{constructor(e){this.value=e}};Kk.COMPLEX="COMPLEX",Kk.ELEMENT="ELEMENT",Kk.PARTIAL="PARTIAL";var IA=class{constructor(e){this.value=e}};IA.EXTERNALCOMBUSTION="EXTERNALCOMBUSTION",IA.INTERNALCOMBUSTION="INTERNALCOMBUSTION",IA.USERDEFINED="USERDEFINED",IA.NOTDEFINED="NOTDEFINED";var Bc=class{constructor(e){this.value=e}};Bc.DIRECTEVAPORATIVERANDOMMEDIAAIRCOOLER="DIRECTEVAPORATIVERANDOMMEDIAAIRCOOLER",Bc.DIRECTEVAPORATIVERIGIDMEDIAAIRCOOLER="DIRECTEVAPORATIVERIGIDMEDIAAIRCOOLER",Bc.DIRECTEVAPORATIVESLINGERSPACKAGEDAIRCOOLER="DIRECTEVAPORATIVESLINGERSPACKAGEDAIRCOOLER",Bc.DIRECTEVAPORATIVEPACKAGEDROTARYAIRCOOLER="DIRECTEVAPORATIVEPACKAGEDROTARYAIRCOOLER",Bc.DIRECTEVAPORATIVEAIRWASHER="DIRECTEVAPORATIVEAIRWASHER",Bc.INDIRECTEVAPORATIVEPACKAGEAIRCOOLER="INDIRECTEVAPORATIVEPACKAGEAIRCOOLER",Bc.INDIRECTEVAPORATIVEWETCOIL="INDIRECTEVAPORATIVEWETCOIL",Bc.INDIRECTEVAPORATIVECOOLINGTOWERORCOILCOOLER="INDIRECTEVAPORATIVECOOLINGTOWERORCOILCOOLER",Bc.INDIRECTDIRECTCOMBINATION="INDIRECTDIRECTCOMBINATION",Bc.USERDEFINED="USERDEFINED",Bc.NOTDEFINED="NOTDEFINED";var Hf=class{constructor(e){this.value=e}};Hf.DIRECTEXPANSION="DIRECTEXPANSION",Hf.DIRECTEXPANSIONSHELLANDTUBE="DIRECTEXPANSIONSHELLANDTUBE",Hf.DIRECTEXPANSIONTUBEINTUBE="DIRECTEXPANSIONTUBEINTUBE",Hf.DIRECTEXPANSIONBRAZEDPLATE="DIRECTEXPANSIONBRAZEDPLATE",Hf.FLOODEDSHELLANDTUBE="FLOODEDSHELLANDTUBE",Hf.SHELLANDCOIL="SHELLANDCOIL",Hf.USERDEFINED="USERDEFINED",Hf.NOTDEFINED="NOTDEFINED";var RT=class{constructor(e){this.value=e}};RT.EVENTRULE="EVENTRULE",RT.EVENTMESSAGE="EVENTMESSAGE",RT.EVENTTIME="EVENTTIME",RT.EVENTCOMPLEX="EVENTCOMPLEX",RT.USERDEFINED="USERDEFINED",RT.NOTDEFINED="NOTDEFINED";var xI=class{constructor(e){this.value=e}};xI.STARTEVENT="STARTEVENT",xI.ENDEVENT="ENDEVENT",xI.INTERMEDIATEEVENT="INTERMEDIATEEVENT",xI.USERDEFINED="USERDEFINED",xI.NOTDEFINED="NOTDEFINED";var MT=class{constructor(e){this.value=e}};MT.EXTERNAL="EXTERNAL",MT.EXTERNAL_EARTH="EXTERNAL_EARTH",MT.EXTERNAL_WATER="EXTERNAL_WATER",MT.EXTERNAL_FIRE="EXTERNAL_FIRE",MT.USERDEFINED="USERDEFINED",MT.NOTDEFINED="NOTDEFINED";var Xp=class{constructor(e){this.value=e}};Xp.CENTRIFUGALFORWARDCURVED="CENTRIFUGALFORWARDCURVED",Xp.CENTRIFUGALRADIAL="CENTRIFUGALRADIAL",Xp.CENTRIFUGALBACKWARDINCLINEDCURVED="CENTRIFUGALBACKWARDINCLINEDCURVED",Xp.CENTRIFUGALAIRFOIL="CENTRIFUGALAIRFOIL",Xp.TUBEAXIAL="TUBEAXIAL",Xp.VANEAXIAL="VANEAXIAL",Xp.PROPELLORAXIAL="PROPELLORAXIAL",Xp.USERDEFINED="USERDEFINED",Xp.NOTDEFINED="NOTDEFINED";var II=class{constructor(e){this.value=e}};II.GLUE="GLUE",II.MORTAR="MORTAR",II.WELD="WELD",II.USERDEFINED="USERDEFINED",II.NOTDEFINED="NOTDEFINED";var Uf=class{constructor(e){this.value=e}};Uf.AIRPARTICLEFILTER="AIRPARTICLEFILTER",Uf.COMPRESSEDAIRFILTER="COMPRESSEDAIRFILTER",Uf.ODORFILTER="ODORFILTER",Uf.OILFILTER="OILFILTER",Uf.STRAINER="STRAINER",Uf.WATERFILTER="WATERFILTER",Uf.USERDEFINED="USERDEFINED",Uf.NOTDEFINED="NOTDEFINED";var a0=class{constructor(e){this.value=e}};a0.BREECHINGINLET="BREECHINGINLET",a0.FIREHYDRANT="FIREHYDRANT",a0.HOSEREEL="HOSEREEL",a0.SPRINKLER="SPRINKLER",a0.SPRINKLERDEFLECTOR="SPRINKLERDEFLECTOR",a0.USERDEFINED="USERDEFINED",a0.NOTDEFINED="NOTDEFINED";var _A=class{constructor(e){this.value=e}};_A.SOURCE="SOURCE",_A.SINK="SINK",_A.SOURCEANDSINK="SOURCEANDSINK",_A.NOTDEFINED="NOTDEFINED";var rh=class{constructor(e){this.value=e}};rh.PRESSUREGAUGE="PRESSUREGAUGE",rh.THERMOMETER="THERMOMETER",rh.AMMETER="AMMETER",rh.FREQUENCYMETER="FREQUENCYMETER",rh.POWERFACTORMETER="POWERFACTORMETER",rh.PHASEANGLEMETER="PHASEANGLEMETER",rh.VOLTMETER_PEAK="VOLTMETER_PEAK",rh.VOLTMETER_RMS="VOLTMETER_RMS",rh.USERDEFINED="USERDEFINED",rh.NOTDEFINED="NOTDEFINED";var DT=class{constructor(e){this.value=e}};DT.ENERGYMETER="ENERGYMETER",DT.GASMETER="GASMETER",DT.OILMETER="OILMETER",DT.WATERMETER="WATERMETER",DT.USERDEFINED="USERDEFINED",DT.NOTDEFINED="NOTDEFINED";var o0=class{constructor(e){this.value=e}};o0.CAISSON_FOUNDATION="CAISSON_FOUNDATION",o0.FOOTING_BEAM="FOOTING_BEAM",o0.PAD_FOOTING="PAD_FOOTING",o0.PILE_CAP="PILE_CAP",o0.STRIP_FOOTING="STRIP_FOOTING",o0.USERDEFINED="USERDEFINED",o0.NOTDEFINED="NOTDEFINED";var $p=class{constructor(e){this.value=e}};$p.CHAIR="CHAIR",$p.TABLE="TABLE",$p.DESK="DESK",$p.BED="BED",$p.FILECABINET="FILECABINET",$p.SHELF="SHELF",$p.SOFA="SOFA",$p.USERDEFINED="USERDEFINED",$p.NOTDEFINED="NOTDEFINED";var SA=class{constructor(e){this.value=e}};SA.TERRAIN="TERRAIN",SA.SOIL_BORING_POINT="SOIL_BORING_POINT",SA.USERDEFINED="USERDEFINED",SA.NOTDEFINED="NOTDEFINED";var Kp=class{constructor(e){this.value=e}};Kp.GRAPH_VIEW="GRAPH_VIEW",Kp.SKETCH_VIEW="SKETCH_VIEW",Kp.MODEL_VIEW="MODEL_VIEW",Kp.PLAN_VIEW="PLAN_VIEW",Kp.REFLECTED_PLAN_VIEW="REFLECTED_PLAN_VIEW",Kp.SECTION_VIEW="SECTION_VIEW",Kp.ELEVATION_VIEW="ELEVATION_VIEW",Kp.USERDEFINED="USERDEFINED",Kp.NOTDEFINED="NOTDEFINED";var $de=class{constructor(e){this.value=e}};$de.GLOBAL_COORDS="GLOBAL_COORDS",$de.LOCAL_COORDS="LOCAL_COORDS";var CT=class{constructor(e){this.value=e}};CT.RECTANGULAR="RECTANGULAR",CT.RADIAL="RADIAL",CT.TRIANGULAR="TRIANGULAR",CT.IRREGULAR="IRREGULAR",CT.USERDEFINED="USERDEFINED",CT.NOTDEFINED="NOTDEFINED";var wA=class{constructor(e){this.value=e}};wA.PLATE="PLATE",wA.SHELLANDTUBE="SHELLANDTUBE",wA.USERDEFINED="USERDEFINED",wA.NOTDEFINED="NOTDEFINED";var Oa=class{constructor(e){this.value=e}};Oa.STEAMINJECTION="STEAMINJECTION",Oa.ADIABATICAIRWASHER="ADIABATICAIRWASHER",Oa.ADIABATICPAN="ADIABATICPAN",Oa.ADIABATICWETTEDELEMENT="ADIABATICWETTEDELEMENT",Oa.ADIABATICATOMIZING="ADIABATICATOMIZING",Oa.ADIABATICULTRASONIC="ADIABATICULTRASONIC",Oa.ADIABATICRIGIDMEDIA="ADIABATICRIGIDMEDIA",Oa.ADIABATICCOMPRESSEDAIRNOZZLE="ADIABATICCOMPRESSEDAIRNOZZLE",Oa.ASSISTEDELECTRIC="ASSISTEDELECTRIC",Oa.ASSISTEDNATURALGAS="ASSISTEDNATURALGAS",Oa.ASSISTEDPROPANE="ASSISTEDPROPANE",Oa.ASSISTEDBUTANE="ASSISTEDBUTANE",Oa.ASSISTEDSTEAM="ASSISTEDSTEAM",Oa.USERDEFINED="USERDEFINED",Oa.NOTDEFINED="NOTDEFINED";var AT=class{constructor(e){this.value=e}};AT.CYCLONIC="CYCLONIC",AT.GREASE="GREASE",AT.OIL="OIL",AT.PETROL="PETROL",AT.USERDEFINED="USERDEFINED",AT.NOTDEFINED="NOTDEFINED";var OT=class{constructor(e){this.value=e}};OT.INTERNAL="INTERNAL",OT.EXTERNAL="EXTERNAL",OT.EXTERNAL_EARTH="EXTERNAL_EARTH",OT.EXTERNAL_WATER="EXTERNAL_WATER",OT.EXTERNAL_FIRE="EXTERNAL_FIRE",OT.NOTDEFINED="NOTDEFINED";var _I=class{constructor(e){this.value=e}};_I.ASSETINVENTORY="ASSETINVENTORY",_I.SPACEINVENTORY="SPACEINVENTORY",_I.FURNITUREINVENTORY="FURNITUREINVENTORY",_I.USERDEFINED="USERDEFINED",_I.NOTDEFINED="NOTDEFINED";var RA=class{constructor(e){this.value=e}};RA.DATA="DATA",RA.POWER="POWER",RA.USERDEFINED="USERDEFINED",RA.NOTDEFINED="NOTDEFINED";var MA=class{constructor(e){this.value=e}};MA.UNIFORM_KNOTS="UNIFORM_KNOTS",MA.QUASI_UNIFORM_KNOTS="QUASI_UNIFORM_KNOTS",MA.PIECEWISE_BEZIER_KNOTS="PIECEWISE_BEZIER_KNOTS",MA.UNSPECIFIED="UNSPECIFIED";var ns=class{constructor(e){this.value=e}};ns.ADMINISTRATION="ADMINISTRATION",ns.CARPENTRY="CARPENTRY",ns.CLEANING="CLEANING",ns.CONCRETE="CONCRETE",ns.DRYWALL="DRYWALL",ns.ELECTRIC="ELECTRIC",ns.FINISHING="FINISHING",ns.FLOORING="FLOORING",ns.GENERAL="GENERAL",ns.HVAC="HVAC",ns.LANDSCAPING="LANDSCAPING",ns.MASONRY="MASONRY",ns.PAINTING="PAINTING",ns.PAVING="PAVING",ns.PLUMBING="PLUMBING",ns.ROOFING="ROOFING",ns.SITEGRADING="SITEGRADING",ns.STEELWORK="STEELWORK",ns.SURVEYING="SURVEYING",ns.USERDEFINED="USERDEFINED",ns.NOTDEFINED="NOTDEFINED";var kc=class{constructor(e){this.value=e}};kc.COMPACTFLUORESCENT="COMPACTFLUORESCENT",kc.FLUORESCENT="FLUORESCENT",kc.HALOGEN="HALOGEN",kc.HIGHPRESSUREMERCURY="HIGHPRESSUREMERCURY",kc.HIGHPRESSURESODIUM="HIGHPRESSURESODIUM",kc.LED="LED",kc.METALHALIDE="METALHALIDE",kc.OLED="OLED",kc.TUNGSTENFILAMENT="TUNGSTENFILAMENT",kc.USERDEFINED="USERDEFINED",kc.NOTDEFINED="NOTDEFINED";var Zk=class{constructor(e){this.value=e}};Zk.AXIS1="AXIS1",Zk.AXIS2="AXIS2",Zk.AXIS3="AXIS3";var DA=class{constructor(e){this.value=e}};DA.TYPE_A="TYPE_A",DA.TYPE_B="TYPE_B",DA.TYPE_C="TYPE_C",DA.NOTDEFINED="NOTDEFINED";var Gc=class{constructor(e){this.value=e}};Gc.COMPACTFLUORESCENT="COMPACTFLUORESCENT",Gc.FLUORESCENT="FLUORESCENT",Gc.HIGHPRESSUREMERCURY="HIGHPRESSUREMERCURY",Gc.HIGHPRESSURESODIUM="HIGHPRESSURESODIUM",Gc.LIGHTEMITTINGDIODE="LIGHTEMITTINGDIODE",Gc.LOWPRESSURESODIUM="LOWPRESSURESODIUM",Gc.LOWVOLTAGEHALOGEN="LOWVOLTAGEHALOGEN",Gc.MAINVOLTAGEHALOGEN="MAINVOLTAGEHALOGEN",Gc.METALHALIDE="METALHALIDE",Gc.TUNGSTENFILAMENT="TUNGSTENFILAMENT",Gc.NOTDEFINED="NOTDEFINED";var SI=class{constructor(e){this.value=e}};SI.POINTSOURCE="POINTSOURCE",SI.DIRECTIONSOURCE="DIRECTIONSOURCE",SI.SECURITYLIGHTING="SECURITYLIGHTING",SI.USERDEFINED="USERDEFINED",SI.NOTDEFINED="NOTDEFINED";var wI=class{constructor(e){this.value=e}};wI.LOAD_GROUP="LOAD_GROUP",wI.LOAD_CASE="LOAD_CASE",wI.LOAD_COMBINATION="LOAD_COMBINATION",wI.USERDEFINED="USERDEFINED",wI.NOTDEFINED="NOTDEFINED";var RI=class{constructor(e){this.value=e}};RI.LOGICALAND="LOGICALAND",RI.LOGICALOR="LOGICALOR",RI.LOGICALXOR="LOGICALXOR",RI.LOGICALNOTAND="LOGICALNOTAND",RI.LOGICALNOTOR="LOGICALNOTOR";var Zo=class{constructor(e){this.value=e}};Zo.ANCHORBOLT="ANCHORBOLT",Zo.BOLT="BOLT",Zo.DOWEL="DOWEL",Zo.NAIL="NAIL",Zo.NAILPLATE="NAILPLATE",Zo.RIVET="RIVET",Zo.SCREW="SCREW",Zo.SHEARCONNECTOR="SHEARCONNECTOR",Zo.STAPLE="STAPLE",Zo.STUDSHEARCONNECTOR="STUDSHEARCONNECTOR",Zo.COUPLER="COUPLER",Zo.USERDEFINED="USERDEFINED",Zo.NOTDEFINED="NOTDEFINED";var l0=class{constructor(e){this.value=e}};l0.AIRSTATION="AIRSTATION",l0.FEEDAIRUNIT="FEEDAIRUNIT",l0.OXYGENGENERATOR="OXYGENGENERATOR",l0.OXYGENPLANT="OXYGENPLANT",l0.VACUUMSTATION="VACUUMSTATION",l0.USERDEFINED="USERDEFINED",l0.NOTDEFINED="NOTDEFINED";var Is=class{constructor(e){this.value=e}};Is.BRACE="BRACE",Is.CHORD="CHORD",Is.COLLAR="COLLAR",Is.MEMBER="MEMBER",Is.MULLION="MULLION",Is.PLATE="PLATE",Is.POST="POST",Is.PURLIN="PURLIN",Is.RAFTER="RAFTER",Is.STRINGER="STRINGER",Is.STRUT="STRUT",Is.STUD="STUD",Is.STIFFENING_RIB="STIFFENING_RIB",Is.ARCH_SEGMENT="ARCH_SEGMENT",Is.SUSPENSION_CABLE="SUSPENSION_CABLE",Is.SUSPENDER="SUSPENDER",Is.STAY_CABLE="STAY_CABLE",Is.USERDEFINED="USERDEFINED",Is.NOTDEFINED="NOTDEFINED";var MI=class{constructor(e){this.value=e}};MI.BELTDRIVE="BELTDRIVE",MI.COUPLING="COUPLING",MI.DIRECTDRIVE="DIRECTDRIVE",MI.USERDEFINED="USERDEFINED",MI.NOTDEFINED="NOTDEFINED";var iPt=class{constructor(e){this.value=e}};iPt.NULL="NULL";var Bf=class{constructor(e){this.value=e}};Bf.PRODUCT="PRODUCT",Bf.PROCESS="PROCESS",Bf.CONTROL="CONTROL",Bf.RESOURCE="RESOURCE",Bf.ACTOR="ACTOR",Bf.GROUP="GROUP",Bf.PROJECT="PROJECT",Bf.NOTDEFINED="NOTDEFINED";var Jo=class{constructor(e){this.value=e}};Jo.CODECOMPLIANCE="CODECOMPLIANCE",Jo.CODEWAIVER="CODEWAIVER",Jo.DESIGNINTENT="DESIGNINTENT",Jo.EXTERNAL="EXTERNAL",Jo.HEALTHANDSAFETY="HEALTHANDSAFETY",Jo.MERGECONFLICT="MERGECONFLICT",Jo.MODELVIEW="MODELVIEW",Jo.PARAMETER="PARAMETER",Jo.REQUIREMENT="REQUIREMENT",Jo.SPECIFICATION="SPECIFICATION",Jo.TRIGGERCONDITION="TRIGGERCONDITION",Jo.USERDEFINED="USERDEFINED",Jo.NOTDEFINED="NOTDEFINED";var Zp=class{constructor(e){this.value=e}};Zp.ASSIGNEE="ASSIGNEE",Zp.ASSIGNOR="ASSIGNOR",Zp.LESSEE="LESSEE",Zp.LESSOR="LESSOR",Zp.LETTINGAGENT="LETTINGAGENT",Zp.OWNER="OWNER",Zp.TENANT="TENANT",Zp.USERDEFINED="USERDEFINED",Zp.NOTDEFINED="NOTDEFINED";var CA=class{constructor(e){this.value=e}};CA.OPENING="OPENING",CA.RECESS="RECESS",CA.USERDEFINED="USERDEFINED",CA.NOTDEFINED="NOTDEFINED";var c0=class{constructor(e){this.value=e}};c0.AUDIOVISUALOUTLET="AUDIOVISUALOUTLET",c0.COMMUNICATIONSOUTLET="COMMUNICATIONSOUTLET",c0.POWEROUTLET="POWEROUTLET",c0.DATAOUTLET="DATAOUTLET",c0.TELEPHONEOUTLET="TELEPHONEOUTLET",c0.USERDEFINED="USERDEFINED",c0.NOTDEFINED="NOTDEFINED";var Kde=class{constructor(e){this.value=e}};Kde.USERDEFINED="USERDEFINED",Kde.NOTDEFINED="NOTDEFINED";var DI=class{constructor(e){this.value=e}};DI.GRILL="GRILL",DI.LOUVER="LOUVER",DI.SCREEN="SCREEN",DI.USERDEFINED="USERDEFINED",DI.NOTDEFINED="NOTDEFINED";var CI=class{constructor(e){this.value=e}};CI.ACCESS="ACCESS",CI.BUILDING="BUILDING",CI.WORK="WORK",CI.USERDEFINED="USERDEFINED",CI.NOTDEFINED="NOTDEFINED";var Jk=class{constructor(e){this.value=e}};Jk.PHYSICAL="PHYSICAL",Jk.VIRTUAL="VIRTUAL",Jk.NOTDEFINED="NOTDEFINED";var PT=class{constructor(e){this.value=e}};PT.CAST_IN_PLACE="CAST_IN_PLACE",PT.COMPOSITE="COMPOSITE",PT.PRECAST_CONCRETE="PRECAST_CONCRETE",PT.PREFAB_STEEL="PREFAB_STEEL",PT.USERDEFINED="USERDEFINED",PT.NOTDEFINED="NOTDEFINED";var kf=class{constructor(e){this.value=e}};kf.BORED="BORED",kf.DRIVEN="DRIVEN",kf.JETGROUTING="JETGROUTING",kf.COHESION="COHESION",kf.FRICTION="FRICTION",kf.SUPPORT="SUPPORT",kf.USERDEFINED="USERDEFINED",kf.NOTDEFINED="NOTDEFINED";var Jp=class{constructor(e){this.value=e}};Jp.BEND="BEND",Jp.CONNECTOR="CONNECTOR",Jp.ENTRY="ENTRY",Jp.EXIT="EXIT",Jp.JUNCTION="JUNCTION",Jp.OBSTRUCTION="OBSTRUCTION",Jp.TRANSITION="TRANSITION",Jp.USERDEFINED="USERDEFINED",Jp.NOTDEFINED="NOTDEFINED";var u0=class{constructor(e){this.value=e}};u0.CULVERT="CULVERT",u0.FLEXIBLESEGMENT="FLEXIBLESEGMENT",u0.RIGIDSEGMENT="RIGIDSEGMENT",u0.GUTTER="GUTTER",u0.SPOOL="SPOOL",u0.USERDEFINED="USERDEFINED",u0.NOTDEFINED="NOTDEFINED";var Vc=class{constructor(e){this.value=e}};Vc.CURTAIN_PANEL="CURTAIN_PANEL",Vc.SHEET="SHEET",Vc.FLANGE_PLATE="FLANGE_PLATE",Vc.WEB_PLATE="WEB_PLATE",Vc.STIFFENER_PLATE="STIFFENER_PLATE",Vc.GUSSET_PLATE="GUSSET_PLATE",Vc.COVER_PLATE="COVER_PLATE",Vc.SPLICE_PLATE="SPLICE_PLATE",Vc.BASE_PLATE="BASE_PLATE",Vc.USERDEFINED="USERDEFINED",Vc.NOTDEFINED="NOTDEFINED";var Qk=class{constructor(e){this.value=e}};Qk.CURVE3D="CURVE3D",Qk.PCURVE_S1="PCURVE_S1",Qk.PCURVE_S2="PCURVE_S2";var Qp=class{constructor(e){this.value=e}};Qp.ADVICE_CAUTION="ADVICE_CAUTION",Qp.ADVICE_NOTE="ADVICE_NOTE",Qp.ADVICE_WARNING="ADVICE_WARNING",Qp.CALIBRATION="CALIBRATION",Qp.DIAGNOSTIC="DIAGNOSTIC",Qp.SHUTDOWN="SHUTDOWN",Qp.STARTUP="STARTUP",Qp.USERDEFINED="USERDEFINED",Qp.NOTDEFINED="NOTDEFINED";var Zde=class{constructor(e){this.value=e}};Zde.CURVE="CURVE",Zde.AREA="AREA";var h0=class{constructor(e){this.value=e}};h0.CHANGEORDER="CHANGEORDER",h0.MAINTENANCEWORKORDER="MAINTENANCEWORKORDER",h0.MOVEORDER="MOVEORDER",h0.PURCHASEORDER="PURCHASEORDER",h0.WORKORDER="WORKORDER",h0.USERDEFINED="USERDEFINED",h0.NOTDEFINED="NOTDEFINED";var Jde=class{constructor(e){this.value=e}};Jde.PROJECTED_LENGTH="PROJECTED_LENGTH",Jde.TRUE_LENGTH="TRUE_LENGTH";var AA=class{constructor(e){this.value=e}};AA.BLISTER="BLISTER",AA.DEVIATOR="DEVIATOR",AA.USERDEFINED="USERDEFINED",AA.NOTDEFINED="NOTDEFINED";var Gf=class{constructor(e){this.value=e}};Gf.PSET_TYPEDRIVENONLY="PSET_TYPEDRIVENONLY",Gf.PSET_TYPEDRIVENOVERRIDE="PSET_TYPEDRIVENOVERRIDE",Gf.PSET_OCCURRENCEDRIVEN="PSET_OCCURRENCEDRIVEN",Gf.PSET_PERFORMANCEDRIVEN="PSET_PERFORMANCEDRIVEN",Gf.QTO_TYPEDRIVENONLY="QTO_TYPEDRIVENONLY",Gf.QTO_TYPEDRIVENOVERRIDE="QTO_TYPEDRIVENOVERRIDE",Gf.QTO_OCCURRENCEDRIVEN="QTO_OCCURRENCEDRIVEN",Gf.NOTDEFINED="NOTDEFINED";var NT=class{constructor(e){this.value=e}};NT.ELECTRONIC="ELECTRONIC",NT.ELECTROMAGNETIC="ELECTROMAGNETIC",NT.RESIDUALCURRENT="RESIDUALCURRENT",NT.THERMAL="THERMAL",NT.USERDEFINED="USERDEFINED",NT.NOTDEFINED="NOTDEFINED";var ed=class{constructor(e){this.value=e}};ed.CIRCUITBREAKER="CIRCUITBREAKER",ed.EARTHLEAKAGECIRCUITBREAKER="EARTHLEAKAGECIRCUITBREAKER",ed.EARTHINGSWITCH="EARTHINGSWITCH",ed.FUSEDISCONNECTOR="FUSEDISCONNECTOR",ed.RESIDUALCURRENTCIRCUITBREAKER="RESIDUALCURRENTCIRCUITBREAKER",ed.RESIDUALCURRENTSWITCH="RESIDUALCURRENTSWITCH",ed.VARISTOR="VARISTOR",ed.USERDEFINED="USERDEFINED",ed.NOTDEFINED="NOTDEFINED";var td=class{constructor(e){this.value=e}};td.CIRCULATOR="CIRCULATOR",td.ENDSUCTION="ENDSUCTION",td.SPLITCASE="SPLITCASE",td.SUBMERSIBLEPUMP="SUBMERSIBLEPUMP",td.SUMPPUMP="SUMPPUMP",td.VERTICALINLINE="VERTICALINLINE",td.VERTICALTURBINE="VERTICALTURBINE",td.USERDEFINED="USERDEFINED",td.NOTDEFINED="NOTDEFINED";var AI=class{constructor(e){this.value=e}};AI.HANDRAIL="HANDRAIL",AI.GUARDRAIL="GUARDRAIL",AI.BALUSTRADE="BALUSTRADE",AI.USERDEFINED="USERDEFINED",AI.NOTDEFINED="NOTDEFINED";var OA=class{constructor(e){this.value=e}};OA.STRAIGHT="STRAIGHT",OA.SPIRAL="SPIRAL",OA.USERDEFINED="USERDEFINED",OA.NOTDEFINED="NOTDEFINED";var Vf=class{constructor(e){this.value=e}};Vf.STRAIGHT_RUN_RAMP="STRAIGHT_RUN_RAMP",Vf.TWO_STRAIGHT_RUN_RAMP="TWO_STRAIGHT_RUN_RAMP",Vf.QUARTER_TURN_RAMP="QUARTER_TURN_RAMP",Vf.TWO_QUARTER_TURN_RAMP="TWO_QUARTER_TURN_RAMP",Vf.HALF_TURN_RAMP="HALF_TURN_RAMP",Vf.SPIRAL_RAMP="SPIRAL_RAMP",Vf.USERDEFINED="USERDEFINED",Vf.NOTDEFINED="NOTDEFINED";var zf=class{constructor(e){this.value=e}};zf.DAILY="DAILY",zf.WEEKLY="WEEKLY",zf.MONTHLY_BY_DAY_OF_MONTH="MONTHLY_BY_DAY_OF_MONTH",zf.MONTHLY_BY_POSITION="MONTHLY_BY_POSITION",zf.BY_DAY_COUNT="BY_DAY_COUNT",zf.BY_WEEKDAY_COUNT="BY_WEEKDAY_COUNT",zf.YEARLY_BY_DAY_OF_MONTH="YEARLY_BY_DAY_OF_MONTH",zf.YEARLY_BY_POSITION="YEARLY_BY_POSITION";var OI=class{constructor(e){this.value=e}};OI.KILOPOINT="KILOPOINT",OI.MILEPOINT="MILEPOINT",OI.STATION="STATION",OI.USERDEFINED="USERDEFINED",OI.NOTDEFINED="NOTDEFINED";var ih=class{constructor(e){this.value=e}};ih.BLINN="BLINN",ih.FLAT="FLAT",ih.GLASS="GLASS",ih.MATT="MATT",ih.METAL="METAL",ih.MIRROR="MIRROR",ih.PHONG="PHONG",ih.PLASTIC="PLASTIC",ih.STRAUSS="STRAUSS",ih.NOTDEFINED="NOTDEFINED";var nh=class{constructor(e){this.value=e}};nh.MAIN="MAIN",nh.SHEAR="SHEAR",nh.LIGATURE="LIGATURE",nh.STUD="STUD",nh.PUNCHING="PUNCHING",nh.EDGE="EDGE",nh.RING="RING",nh.ANCHORING="ANCHORING",nh.USERDEFINED="USERDEFINED",nh.NOTDEFINED="NOTDEFINED";var Qde=class{constructor(e){this.value=e}};Qde.PLAIN="PLAIN",Qde.TEXTURED="TEXTURED";var zc=class{constructor(e){this.value=e}};zc.ANCHORING="ANCHORING",zc.EDGE="EDGE",zc.LIGATURE="LIGATURE",zc.MAIN="MAIN",zc.PUNCHING="PUNCHING",zc.RING="RING",zc.SHEAR="SHEAR",zc.STUD="STUD",zc.SPACEBAR="SPACEBAR",zc.USERDEFINED="USERDEFINED",zc.NOTDEFINED="NOTDEFINED";var efe=class{constructor(e){this.value=e}};efe.USERDEFINED="USERDEFINED",efe.NOTDEFINED="NOTDEFINED";var Fn=class{constructor(e){this.value=e}};Fn.SUPPLIER="SUPPLIER",Fn.MANUFACTURER="MANUFACTURER",Fn.CONTRACTOR="CONTRACTOR",Fn.SUBCONTRACTOR="SUBCONTRACTOR",Fn.ARCHITECT="ARCHITECT",Fn.STRUCTURALENGINEER="STRUCTURALENGINEER",Fn.COSTENGINEER="COSTENGINEER",Fn.CLIENT="CLIENT",Fn.BUILDINGOWNER="BUILDINGOWNER",Fn.BUILDINGOPERATOR="BUILDINGOPERATOR",Fn.MECHANICALENGINEER="MECHANICALENGINEER",Fn.ELECTRICALENGINEER="ELECTRICALENGINEER",Fn.PROJECTMANAGER="PROJECTMANAGER",Fn.FACILITIESMANAGER="FACILITIESMANAGER",Fn.CIVILENGINEER="CIVILENGINEER",Fn.COMMISSIONINGENGINEER="COMMISSIONINGENGINEER",Fn.ENGINEER="ENGINEER",Fn.OWNER="OWNER",Fn.CONSULTANT="CONSULTANT",Fn.CONSTRUCTIONMANAGER="CONSTRUCTIONMANAGER",Fn.FIELDCONSTRUCTIONMANAGER="FIELDCONSTRUCTIONMANAGER",Fn.RESELLER="RESELLER",Fn.USERDEFINED="USERDEFINED";var Pa=class{constructor(e){this.value=e}};Pa.FLAT_ROOF="FLAT_ROOF",Pa.SHED_ROOF="SHED_ROOF",Pa.GABLE_ROOF="GABLE_ROOF",Pa.HIP_ROOF="HIP_ROOF",Pa.HIPPED_GABLE_ROOF="HIPPED_GABLE_ROOF",Pa.GAMBREL_ROOF="GAMBREL_ROOF",Pa.MANSARD_ROOF="MANSARD_ROOF",Pa.BARREL_ROOF="BARREL_ROOF",Pa.RAINBOW_ROOF="RAINBOW_ROOF",Pa.BUTTERFLY_ROOF="BUTTERFLY_ROOF",Pa.PAVILION_ROOF="PAVILION_ROOF",Pa.DOME_ROOF="DOME_ROOF",Pa.FREEFORM="FREEFORM",Pa.USERDEFINED="USERDEFINED",Pa.NOTDEFINED="NOTDEFINED";var ea=class{constructor(e){this.value=e}};ea.EXA="EXA",ea.PETA="PETA",ea.TERA="TERA",ea.GIGA="GIGA",ea.MEGA="MEGA",ea.KILO="KILO",ea.HECTO="HECTO",ea.DECA="DECA",ea.DECI="DECI",ea.CENTI="CENTI",ea.MILLI="MILLI",ea.MICRO="MICRO",ea.NANO="NANO",ea.PICO="PICO",ea.FEMTO="FEMTO",ea.ATTO="ATTO";var Xi=class{constructor(e){this.value=e}};Xi.AMPERE="AMPERE",Xi.BECQUEREL="BECQUEREL",Xi.CANDELA="CANDELA",Xi.COULOMB="COULOMB",Xi.CUBIC_METRE="CUBIC_METRE",Xi.DEGREE_CELSIUS="DEGREE_CELSIUS",Xi.FARAD="FARAD",Xi.GRAM="GRAM",Xi.GRAY="GRAY",Xi.HENRY="HENRY",Xi.HERTZ="HERTZ",Xi.JOULE="JOULE",Xi.KELVIN="KELVIN",Xi.LUMEN="LUMEN",Xi.LUX="LUX",Xi.METRE="METRE",Xi.MOLE="MOLE",Xi.NEWTON="NEWTON",Xi.OHM="OHM",Xi.PASCAL="PASCAL",Xi.RADIAN="RADIAN",Xi.SECOND="SECOND",Xi.SIEMENS="SIEMENS",Xi.SIEVERT="SIEVERT",Xi.SQUARE_METRE="SQUARE_METRE",Xi.STERADIAN="STERADIAN",Xi.TESLA="TESLA",Xi.VOLT="VOLT",Xi.WATT="WATT",Xi.WEBER="WEBER";var kl=class{constructor(e){this.value=e}};kl.BATH="BATH",kl.BIDET="BIDET",kl.CISTERN="CISTERN",kl.SHOWER="SHOWER",kl.SINK="SINK",kl.SANITARYFOUNTAIN="SANITARYFOUNTAIN",kl.TOILETPAN="TOILETPAN",kl.URINAL="URINAL",kl.WASHHANDBASIN="WASHHANDBASIN",kl.WCSEAT="WCSEAT",kl.USERDEFINED="USERDEFINED",kl.NOTDEFINED="NOTDEFINED";var tfe=class{constructor(e){this.value=e}};tfe.UNIFORM="UNIFORM",tfe.TAPERED="TAPERED";var En=class{constructor(e){this.value=e}};En.COSENSOR="COSENSOR",En.CO2SENSOR="CO2SENSOR",En.CONDUCTANCESENSOR="CONDUCTANCESENSOR",En.CONTACTSENSOR="CONTACTSENSOR",En.FIRESENSOR="FIRESENSOR",En.FLOWSENSOR="FLOWSENSOR",En.FROSTSENSOR="FROSTSENSOR",En.GASSENSOR="GASSENSOR",En.HEATSENSOR="HEATSENSOR",En.HUMIDITYSENSOR="HUMIDITYSENSOR",En.IDENTIFIERSENSOR="IDENTIFIERSENSOR",En.IONCONCENTRATIONSENSOR="IONCONCENTRATIONSENSOR",En.LEVELSENSOR="LEVELSENSOR",En.LIGHTSENSOR="LIGHTSENSOR",En.MOISTURESENSOR="MOISTURESENSOR",En.MOVEMENTSENSOR="MOVEMENTSENSOR",En.PHSENSOR="PHSENSOR",En.PRESSURESENSOR="PRESSURESENSOR",En.RADIATIONSENSOR="RADIATIONSENSOR",En.RADIOACTIVITYSENSOR="RADIOACTIVITYSENSOR",En.SMOKESENSOR="SMOKESENSOR",En.SOUNDSENSOR="SOUNDSENSOR",En.TEMPERATURESENSOR="TEMPERATURESENSOR",En.WINDSENSOR="WINDSENSOR",En.USERDEFINED="USERDEFINED",En.NOTDEFINED="NOTDEFINED";var LT=class{constructor(e){this.value=e}};LT.START_START="START_START",LT.START_FINISH="START_FINISH",LT.FINISH_START="FINISH_START",LT.FINISH_FINISH="FINISH_FINISH",LT.USERDEFINED="USERDEFINED",LT.NOTDEFINED="NOTDEFINED";var PI=class{constructor(e){this.value=e}};PI.JALOUSIE="JALOUSIE",PI.SHUTTER="SHUTTER",PI.AWNING="AWNING",PI.USERDEFINED="USERDEFINED",PI.NOTDEFINED="NOTDEFINED";var Gl=class{constructor(e){this.value=e}};Gl.P_SINGLEVALUE="P_SINGLEVALUE",Gl.P_ENUMERATEDVALUE="P_ENUMERATEDVALUE",Gl.P_BOUNDEDVALUE="P_BOUNDEDVALUE",Gl.P_LISTVALUE="P_LISTVALUE",Gl.P_TABLEVALUE="P_TABLEVALUE",Gl.P_REFERENCEVALUE="P_REFERENCEVALUE",Gl.Q_LENGTH="Q_LENGTH",Gl.Q_AREA="Q_AREA",Gl.Q_VOLUME="Q_VOLUME",Gl.Q_COUNT="Q_COUNT",Gl.Q_WEIGHT="Q_WEIGHT",Gl.Q_TIME="Q_TIME";var sh=class{constructor(e){this.value=e}};sh.FLOOR="FLOOR",sh.ROOF="ROOF",sh.LANDING="LANDING",sh.BASESLAB="BASESLAB",sh.APPROACH_SLAB="APPROACH_SLAB",sh.PAVING="PAVING",sh.WEARING="WEARING",sh.SIDEWALK="SIDEWALK",sh.USERDEFINED="USERDEFINED",sh.NOTDEFINED="NOTDEFINED";var PA=class{constructor(e){this.value=e}};PA.SOLARCOLLECTOR="SOLARCOLLECTOR",PA.SOLARPANEL="SOLARPANEL",PA.USERDEFINED="USERDEFINED",PA.NOTDEFINED="NOTDEFINED";var NA=class{constructor(e){this.value=e}};NA.CONVECTOR="CONVECTOR",NA.RADIATOR="RADIATOR",NA.USERDEFINED="USERDEFINED",NA.NOTDEFINED="NOTDEFINED";var p0=class{constructor(e){this.value=e}};p0.SPACE="SPACE",p0.PARKING="PARKING",p0.GFA="GFA",p0.INTERNAL="INTERNAL",p0.EXTERNAL="EXTERNAL",p0.USERDEFINED="USERDEFINED",p0.NOTDEFINED="NOTDEFINED";var ah=class{constructor(e){this.value=e}};ah.CONSTRUCTION="CONSTRUCTION",ah.FIRESAFETY="FIRESAFETY",ah.LIGHTING="LIGHTING",ah.OCCUPANCY="OCCUPANCY",ah.SECURITY="SECURITY",ah.THERMAL="THERMAL",ah.TRANSPORT="TRANSPORT",ah.VENTILATION="VENTILATION",ah.USERDEFINED="USERDEFINED",ah.NOTDEFINED="NOTDEFINED";var NI=class{constructor(e){this.value=e}};NI.BIRDCAGE="BIRDCAGE",NI.COWL="COWL",NI.RAINWATERHOPPER="RAINWATERHOPPER",NI.USERDEFINED="USERDEFINED",NI.NOTDEFINED="NOTDEFINED";var d0=class{constructor(e){this.value=e}};d0.STRAIGHT="STRAIGHT",d0.WINDER="WINDER",d0.SPIRAL="SPIRAL",d0.CURVED="CURVED",d0.FREEFORM="FREEFORM",d0.USERDEFINED="USERDEFINED",d0.NOTDEFINED="NOTDEFINED";var ta=class{constructor(e){this.value=e}};ta.STRAIGHT_RUN_STAIR="STRAIGHT_RUN_STAIR",ta.TWO_STRAIGHT_RUN_STAIR="TWO_STRAIGHT_RUN_STAIR",ta.QUARTER_WINDING_STAIR="QUARTER_WINDING_STAIR",ta.QUARTER_TURN_STAIR="QUARTER_TURN_STAIR",ta.HALF_WINDING_STAIR="HALF_WINDING_STAIR",ta.HALF_TURN_STAIR="HALF_TURN_STAIR",ta.TWO_QUARTER_WINDING_STAIR="TWO_QUARTER_WINDING_STAIR",ta.TWO_QUARTER_TURN_STAIR="TWO_QUARTER_TURN_STAIR",ta.THREE_QUARTER_WINDING_STAIR="THREE_QUARTER_WINDING_STAIR",ta.THREE_QUARTER_TURN_STAIR="THREE_QUARTER_TURN_STAIR",ta.SPIRAL_STAIR="SPIRAL_STAIR",ta.DOUBLE_RETURN_STAIR="DOUBLE_RETURN_STAIR",ta.CURVED_RUN_STAIR="CURVED_RUN_STAIR",ta.TWO_CURVED_RUN_STAIR="TWO_CURVED_RUN_STAIR",ta.USERDEFINED="USERDEFINED",ta.NOTDEFINED="NOTDEFINED";var LI=class{constructor(e){this.value=e}};LI.READWRITE="READWRITE",LI.READONLY="READONLY",LI.LOCKED="LOCKED",LI.READWRITELOCKED="READWRITELOCKED",LI.READONLYLOCKED="READONLYLOCKED";var rd=class{constructor(e){this.value=e}};rd.CONST="CONST",rd.LINEAR="LINEAR",rd.POLYGONAL="POLYGONAL",rd.EQUIDISTANT="EQUIDISTANT",rd.SINUS="SINUS",rd.PARABOLA="PARABOLA",rd.DISCRETE="DISCRETE",rd.USERDEFINED="USERDEFINED",rd.NOTDEFINED="NOTDEFINED";var f0=class{constructor(e){this.value=e}};f0.RIGID_JOINED_MEMBER="RIGID_JOINED_MEMBER",f0.PIN_JOINED_MEMBER="PIN_JOINED_MEMBER",f0.CABLE="CABLE",f0.TENSION_MEMBER="TENSION_MEMBER",f0.COMPRESSION_MEMBER="COMPRESSION_MEMBER",f0.USERDEFINED="USERDEFINED",f0.NOTDEFINED="NOTDEFINED";var FT=class{constructor(e){this.value=e}};FT.CONST="CONST",FT.BILINEAR="BILINEAR",FT.DISCRETE="DISCRETE",FT.ISOCONTOUR="ISOCONTOUR",FT.USERDEFINED="USERDEFINED",FT.NOTDEFINED="NOTDEFINED";var FI=class{constructor(e){this.value=e}};FI.BENDING_ELEMENT="BENDING_ELEMENT",FI.MEMBRANE_ELEMENT="MEMBRANE_ELEMENT",FI.SHELL="SHELL",FI.USERDEFINED="USERDEFINED",FI.NOTDEFINED="NOTDEFINED";var LA=class{constructor(e){this.value=e}};LA.PURCHASE="PURCHASE",LA.WORK="WORK",LA.USERDEFINED="USERDEFINED",LA.NOTDEFINED="NOTDEFINED";var HT=class{constructor(e){this.value=e}};HT.MARK="MARK",HT.TAG="TAG",HT.TREATMENT="TREATMENT",HT.DEFECT="DEFECT",HT.USERDEFINED="USERDEFINED",HT.NOTDEFINED="NOTDEFINED";var e8=class{constructor(e){this.value=e}};e8.POSITIVE="POSITIVE",e8.NEGATIVE="NEGATIVE",e8.BOTH="BOTH";var jc=class{constructor(e){this.value=e}};jc.CONTACTOR="CONTACTOR",jc.DIMMERSWITCH="DIMMERSWITCH",jc.EMERGENCYSTOP="EMERGENCYSTOP",jc.KEYPAD="KEYPAD",jc.MOMENTARYSWITCH="MOMENTARYSWITCH",jc.SELECTORSWITCH="SELECTORSWITCH",jc.STARTER="STARTER",jc.SWITCHDISCONNECTOR="SWITCHDISCONNECTOR",jc.TOGGLESWITCH="TOGGLESWITCH",jc.USERDEFINED="USERDEFINED",jc.NOTDEFINED="NOTDEFINED";var FA=class{constructor(e){this.value=e}};FA.PANEL="PANEL",FA.WORKSURFACE="WORKSURFACE",FA.USERDEFINED="USERDEFINED",FA.NOTDEFINED="NOTDEFINED";var id=class{constructor(e){this.value=e}};id.BASIN="BASIN",id.BREAKPRESSURE="BREAKPRESSURE",id.EXPANSION="EXPANSION",id.FEEDANDEXPANSION="FEEDANDEXPANSION",id.PRESSUREVESSEL="PRESSUREVESSEL",id.STORAGE="STORAGE",id.VESSEL="VESSEL",id.USERDEFINED="USERDEFINED",id.NOTDEFINED="NOTDEFINED";var t8=class{constructor(e){this.value=e}};t8.ELAPSEDTIME="ELAPSEDTIME",t8.WORKTIME="WORKTIME",t8.NOTDEFINED="NOTDEFINED";var mo=class{constructor(e){this.value=e}};mo.ATTENDANCE="ATTENDANCE",mo.CONSTRUCTION="CONSTRUCTION",mo.DEMOLITION="DEMOLITION",mo.DISMANTLE="DISMANTLE",mo.DISPOSAL="DISPOSAL",mo.INSTALLATION="INSTALLATION",mo.LOGISTIC="LOGISTIC",mo.MAINTENANCE="MAINTENANCE",mo.MOVE="MOVE",mo.OPERATION="OPERATION",mo.REMOVAL="REMOVAL",mo.RENOVATION="RENOVATION",mo.USERDEFINED="USERDEFINED",mo.NOTDEFINED="NOTDEFINED";var HI=class{constructor(e){this.value=e}};HI.COUPLER="COUPLER",HI.FIXED_END="FIXED_END",HI.TENSIONING_END="TENSIONING_END",HI.USERDEFINED="USERDEFINED",HI.NOTDEFINED="NOTDEFINED";var m0=class{constructor(e){this.value=e}};m0.DUCT="DUCT",m0.COUPLER="COUPLER",m0.GROUTING_DUCT="GROUTING_DUCT",m0.TRUMPET="TRUMPET",m0.DIABOLO="DIABOLO",m0.USERDEFINED="USERDEFINED",m0.NOTDEFINED="NOTDEFINED";var UT=class{constructor(e){this.value=e}};UT.BAR="BAR",UT.COATED="COATED",UT.STRAND="STRAND",UT.WIRE="WIRE",UT.USERDEFINED="USERDEFINED",UT.NOTDEFINED="NOTDEFINED";var HA=class{constructor(e){this.value=e}};HA.LEFT="LEFT",HA.RIGHT="RIGHT",HA.UP="UP",HA.DOWN="DOWN";var g0=class{constructor(e){this.value=e}};g0.CONTINUOUS="CONTINUOUS",g0.DISCRETE="DISCRETE",g0.DISCRETEBINARY="DISCRETEBINARY",g0.PIECEWISEBINARY="PIECEWISEBINARY",g0.PIECEWISECONSTANT="PIECEWISECONSTANT",g0.PIECEWISECONTINUOUS="PIECEWISECONTINUOUS",g0.NOTDEFINED="NOTDEFINED";var v0=class{constructor(e){this.value=e}};v0.CURRENT="CURRENT",v0.FREQUENCY="FREQUENCY",v0.INVERTER="INVERTER",v0.RECTIFIER="RECTIFIER",v0.VOLTAGE="VOLTAGE",v0.USERDEFINED="USERDEFINED",v0.NOTDEFINED="NOTDEFINED";var UA=class{constructor(e){this.value=e}};UA.DISCONTINUOUS="DISCONTINUOUS",UA.CONTINUOUS="CONTINUOUS",UA.CONTSAMEGRADIENT="CONTSAMEGRADIENT",UA.CONTSAMEGRADIENTSAMECURVATURE="CONTSAMEGRADIENTSAMECURVATURE";var BT=class{constructor(e){this.value=e}};BT.BIQUADRATICPARABOLA="BIQUADRATICPARABOLA",BT.BLOSSCURVE="BLOSSCURVE",BT.CLOTHOIDCURVE="CLOTHOIDCURVE",BT.COSINECURVE="COSINECURVE",BT.CUBICPARABOLA="CUBICPARABOLA",BT.SINECURVE="SINECURVE";var y0=class{constructor(e){this.value=e}};y0.ELEVATOR="ELEVATOR",y0.ESCALATOR="ESCALATOR",y0.MOVINGWALKWAY="MOVINGWALKWAY",y0.CRANEWAY="CRANEWAY",y0.LIFTINGGEAR="LIFTINGGEAR",y0.USERDEFINED="USERDEFINED",y0.NOTDEFINED="NOTDEFINED";var r8=class{constructor(e){this.value=e}};r8.CARTESIAN="CARTESIAN",r8.PARAMETER="PARAMETER",r8.UNSPECIFIED="UNSPECIFIED";var i8=class{constructor(e){this.value=e}};i8.FINNED="FINNED",i8.USERDEFINED="USERDEFINED",i8.NOTDEFINED="NOTDEFINED";var $i=class{constructor(e){this.value=e}};$i.ABSORBEDDOSEUNIT="ABSORBEDDOSEUNIT",$i.AMOUNTOFSUBSTANCEUNIT="AMOUNTOFSUBSTANCEUNIT",$i.AREAUNIT="AREAUNIT",$i.DOSEEQUIVALENTUNIT="DOSEEQUIVALENTUNIT",$i.ELECTRICCAPACITANCEUNIT="ELECTRICCAPACITANCEUNIT",$i.ELECTRICCHARGEUNIT="ELECTRICCHARGEUNIT",$i.ELECTRICCONDUCTANCEUNIT="ELECTRICCONDUCTANCEUNIT",$i.ELECTRICCURRENTUNIT="ELECTRICCURRENTUNIT",$i.ELECTRICRESISTANCEUNIT="ELECTRICRESISTANCEUNIT",$i.ELECTRICVOLTAGEUNIT="ELECTRICVOLTAGEUNIT",$i.ENERGYUNIT="ENERGYUNIT",$i.FORCEUNIT="FORCEUNIT",$i.FREQUENCYUNIT="FREQUENCYUNIT",$i.ILLUMINANCEUNIT="ILLUMINANCEUNIT",$i.INDUCTANCEUNIT="INDUCTANCEUNIT",$i.LENGTHUNIT="LENGTHUNIT",$i.LUMINOUSFLUXUNIT="LUMINOUSFLUXUNIT",$i.LUMINOUSINTENSITYUNIT="LUMINOUSINTENSITYUNIT",$i.MAGNETICFLUXDENSITYUNIT="MAGNETICFLUXDENSITYUNIT",$i.MAGNETICFLUXUNIT="MAGNETICFLUXUNIT",$i.MASSUNIT="MASSUNIT",$i.PLANEANGLEUNIT="PLANEANGLEUNIT",$i.POWERUNIT="POWERUNIT",$i.PRESSUREUNIT="PRESSUREUNIT",$i.RADIOACTIVITYUNIT="RADIOACTIVITYUNIT",$i.SOLIDANGLEUNIT="SOLIDANGLEUNIT",$i.THERMODYNAMICTEMPERATUREUNIT="THERMODYNAMICTEMPERATUREUNIT",$i.TIMEUNIT="TIMEUNIT",$i.VOLUMEUNIT="VOLUMEUNIT",$i.USERDEFINED="USERDEFINED";var oh=class{constructor(e){this.value=e}};oh.ALARMPANEL="ALARMPANEL",oh.CONTROLPANEL="CONTROLPANEL",oh.GASDETECTIONPANEL="GASDETECTIONPANEL",oh.INDICATORPANEL="INDICATORPANEL",oh.MIMICPANEL="MIMICPANEL",oh.HUMIDISTAT="HUMIDISTAT",oh.THERMOSTAT="THERMOSTAT",oh.WEATHERSTATION="WEATHERSTATION",oh.USERDEFINED="USERDEFINED",oh.NOTDEFINED="NOTDEFINED";var T0=class{constructor(e){this.value=e}};T0.AIRHANDLER="AIRHANDLER",T0.AIRCONDITIONINGUNIT="AIRCONDITIONINGUNIT",T0.DEHUMIDIFIER="DEHUMIDIFIER",T0.SPLITSYSTEM="SPLITSYSTEM",T0.ROOFTOPUNIT="ROOFTOPUNIT",T0.USERDEFINED="USERDEFINED",T0.NOTDEFINED="NOTDEFINED";var Hn=class{constructor(e){this.value=e}};Hn.AIRRELEASE="AIRRELEASE",Hn.ANTIVACUUM="ANTIVACUUM",Hn.CHANGEOVER="CHANGEOVER",Hn.CHECK="CHECK",Hn.COMMISSIONING="COMMISSIONING",Hn.DIVERTING="DIVERTING",Hn.DRAWOFFCOCK="DRAWOFFCOCK",Hn.DOUBLECHECK="DOUBLECHECK",Hn.DOUBLEREGULATING="DOUBLEREGULATING",Hn.FAUCET="FAUCET",Hn.FLUSHING="FLUSHING",Hn.GASCOCK="GASCOCK",Hn.GASTAP="GASTAP",Hn.ISOLATING="ISOLATING",Hn.MIXING="MIXING",Hn.PRESSUREREDUCING="PRESSUREREDUCING",Hn.PRESSURERELIEF="PRESSURERELIEF",Hn.REGULATING="REGULATING",Hn.SAFETYCUTOFF="SAFETYCUTOFF",Hn.STEAMTRAP="STEAMTRAP",Hn.STOPCOCK="STOPCOCK",Hn.USERDEFINED="USERDEFINED",Hn.NOTDEFINED="NOTDEFINED";var jf=class{constructor(e){this.value=e}};jf.BENDING_YIELD="BENDING_YIELD",jf.SHEAR_YIELD="SHEAR_YIELD",jf.AXIAL_YIELD="AXIAL_YIELD",jf.FRICTION="FRICTION",jf.VISCOUS="VISCOUS",jf.RUBBER="RUBBER",jf.USERDEFINED="USERDEFINED",jf.NOTDEFINED="NOTDEFINED";var UI=class{constructor(e){this.value=e}};UI.COMPRESSION="COMPRESSION",UI.SPRING="SPRING",UI.BASE="BASE",UI.USERDEFINED="USERDEFINED",UI.NOTDEFINED="NOTDEFINED";var Wf=class{constructor(e){this.value=e}};Wf.CUTOUT="CUTOUT",Wf.NOTCH="NOTCH",Wf.HOLE="HOLE",Wf.MITER="MITER",Wf.CHAMFER="CHAMFER",Wf.EDGE="EDGE",Wf.USERDEFINED="USERDEFINED",Wf.NOTDEFINED="NOTDEFINED";var Vl=class{constructor(e){this.value=e}};Vl.MOVABLE="MOVABLE",Vl.PARAPET="PARAPET",Vl.PARTITIONING="PARTITIONING",Vl.PLUMBINGWALL="PLUMBINGWALL",Vl.SHEAR="SHEAR",Vl.SOLIDWALL="SOLIDWALL",Vl.STANDARD="STANDARD",Vl.POLYGONAL="POLYGONAL",Vl.ELEMENTEDWALL="ELEMENTEDWALL",Vl.RETAININGWALL="RETAININGWALL",Vl.USERDEFINED="USERDEFINED",Vl.NOTDEFINED="NOTDEFINED";var nd=class{constructor(e){this.value=e}};nd.FLOORTRAP="FLOORTRAP",nd.FLOORWASTE="FLOORWASTE",nd.GULLYSUMP="GULLYSUMP",nd.GULLYTRAP="GULLYTRAP",nd.ROOFDRAIN="ROOFDRAIN",nd.WASTEDISPOSALUNIT="WASTEDISPOSALUNIT",nd.WASTETRAP="WASTETRAP",nd.USERDEFINED="USERDEFINED",nd.NOTDEFINED="NOTDEFINED";var go=class{constructor(e){this.value=e}};go.SIDEHUNGRIGHTHAND="SIDEHUNGRIGHTHAND",go.SIDEHUNGLEFTHAND="SIDEHUNGLEFTHAND",go.TILTANDTURNRIGHTHAND="TILTANDTURNRIGHTHAND",go.TILTANDTURNLEFTHAND="TILTANDTURNLEFTHAND",go.TOPHUNG="TOPHUNG",go.BOTTOMHUNG="BOTTOMHUNG",go.PIVOTHORIZONTAL="PIVOTHORIZONTAL",go.PIVOTVERTICAL="PIVOTVERTICAL",go.SLIDINGHORIZONTAL="SLIDINGHORIZONTAL",go.SLIDINGVERTICAL="SLIDINGVERTICAL",go.REMOVABLECASEMENT="REMOVABLECASEMENT",go.FIXEDCASEMENT="FIXEDCASEMENT",go.OTHEROPERATION="OTHEROPERATION",go.NOTDEFINED="NOTDEFINED";var kT=class{constructor(e){this.value=e}};kT.LEFT="LEFT",kT.MIDDLE="MIDDLE",kT.RIGHT="RIGHT",kT.BOTTOM="BOTTOM",kT.TOP="TOP",kT.NOTDEFINED="NOTDEFINED";var qf=class{constructor(e){this.value=e}};qf.ALUMINIUM="ALUMINIUM",qf.HIGH_GRADE_STEEL="HIGH_GRADE_STEEL",qf.STEEL="STEEL",qf.WOOD="WOOD",qf.ALUMINIUM_WOOD="ALUMINIUM_WOOD",qf.PLASTIC="PLASTIC",qf.OTHER_CONSTRUCTION="OTHER_CONSTRUCTION",qf.NOTDEFINED="NOTDEFINED";var Wc=class{constructor(e){this.value=e}};Wc.SINGLE_PANEL="SINGLE_PANEL",Wc.DOUBLE_PANEL_VERTICAL="DOUBLE_PANEL_VERTICAL",Wc.DOUBLE_PANEL_HORIZONTAL="DOUBLE_PANEL_HORIZONTAL",Wc.TRIPLE_PANEL_VERTICAL="TRIPLE_PANEL_VERTICAL",Wc.TRIPLE_PANEL_BOTTOM="TRIPLE_PANEL_BOTTOM",Wc.TRIPLE_PANEL_TOP="TRIPLE_PANEL_TOP",Wc.TRIPLE_PANEL_LEFT="TRIPLE_PANEL_LEFT",Wc.TRIPLE_PANEL_RIGHT="TRIPLE_PANEL_RIGHT",Wc.TRIPLE_PANEL_HORIZONTAL="TRIPLE_PANEL_HORIZONTAL",Wc.USERDEFINED="USERDEFINED",Wc.NOTDEFINED="NOTDEFINED";var BI=class{constructor(e){this.value=e}};BI.WINDOW="WINDOW",BI.SKYLIGHT="SKYLIGHT",BI.LIGHTDOME="LIGHTDOME",BI.USERDEFINED="USERDEFINED",BI.NOTDEFINED="NOTDEFINED";var qc=class{constructor(e){this.value=e}};qc.SINGLE_PANEL="SINGLE_PANEL",qc.DOUBLE_PANEL_VERTICAL="DOUBLE_PANEL_VERTICAL",qc.DOUBLE_PANEL_HORIZONTAL="DOUBLE_PANEL_HORIZONTAL",qc.TRIPLE_PANEL_VERTICAL="TRIPLE_PANEL_VERTICAL",qc.TRIPLE_PANEL_BOTTOM="TRIPLE_PANEL_BOTTOM",qc.TRIPLE_PANEL_TOP="TRIPLE_PANEL_TOP",qc.TRIPLE_PANEL_LEFT="TRIPLE_PANEL_LEFT",qc.TRIPLE_PANEL_RIGHT="TRIPLE_PANEL_RIGHT",qc.TRIPLE_PANEL_HORIZONTAL="TRIPLE_PANEL_HORIZONTAL",qc.USERDEFINED="USERDEFINED",qc.NOTDEFINED="NOTDEFINED";var kI=class{constructor(e){this.value=e}};kI.FIRSTSHIFT="FIRSTSHIFT",kI.SECONDSHIFT="SECONDSHIFT",kI.THIRDSHIFT="THIRDSHIFT",kI.USERDEFINED="USERDEFINED",kI.NOTDEFINED="NOTDEFINED";var GI=class{constructor(e){this.value=e}};GI.ACTUAL="ACTUAL",GI.BASELINE="BASELINE",GI.PLANNED="PLANNED",GI.USERDEFINED="USERDEFINED",GI.NOTDEFINED="NOTDEFINED";var VI=class{constructor(e){this.value=e}};VI.ACTUAL="ACTUAL",VI.BASELINE="BASELINE",VI.PLANNED="PLANNED",VI.USERDEFINED="USERDEFINED",VI.NOTDEFINED="NOTDEFINED";var rfe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.Identification=o,this.PredefinedType=l,this.Status=h,this.LongDescription=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new rfe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.Identification),e.push(this.PredefinedType),e.push(this.Status),e.push(this.LongDescription),e}},ife=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.TheActor=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new ife(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.TheActor),e}},nfe=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.Role=i,this.UserDefinedRole=r,this.Description=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new nfe(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.Role),e.push(this.UserDefinedRole),e.push(this.Description),e}},sfe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new sfe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},afe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new afe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},ofe=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.Purpose=i,this.Description=r,this.UserDefinedPurpose=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new ofe(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.Purpose),e.push(this.Description),e.push(this.UserDefinedPurpose),e}},lfe=class{constructor(e,t,i){this.expressID=e,this.type=t,this.Outer=i}static FromTape(e,t,i){let r=0,n=i[r++];return new lfe(e,t,n)}ToTape(){let e=[];return e.push(this.Outer),e}},cfe=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.Outer=i,this.Voids=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new cfe(e,t,n,s)}ToTape(){let e=[];return e.push(this.Outer),e.push(this.Voids),e}},ufe=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.Bounds=i,this.FaceSurface=r,this.SameSense=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new ufe(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.Bounds),e.push(this.FaceSurface),e.push(this.SameSense),e}},hfe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new hfe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},pfe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new pfe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},dfe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new dfe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},ffe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new ffe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},mfe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new mfe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},gfe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new gfe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},vfe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new vfe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},yfe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new yfe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},Tfe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Axis=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Tfe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Axis),e.push(this.PredefinedType),e}},Efe=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.StartDistAlong=i,this.Segments=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new Efe(e,t,n,s)}ToTape(){let e=[];return e.push(this.StartDistAlong),e.push(this.Segments),e}},bfe=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.TangentialContinuity=i,this.StartTag=r,this.EndTag=n,this.CurveGeometry=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new bfe(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.TangentialContinuity),e.push(this.StartTag),e.push(this.EndTag),e.push(this.CurveGeometry),e}},xfe=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.TangentialContinuity=i,this.StartTag=r,this.EndTag=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new xfe(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.TangentialContinuity),e.push(this.StartTag),e.push(this.EndTag),e}},Ife=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.TangentialContinuity=i,this.StartTag=r,this.EndTag=n,this.StartDistAlong=s,this.HorizontalLength=a,this.StartHeight=o,this.StartGradient=l,this.Radius=h,this.IsConvex=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Ife(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.TangentialContinuity),e.push(this.StartTag),e.push(this.EndTag),e.push(this.StartDistAlong),e.push(this.HorizontalLength),e.push(this.StartHeight),e.push(this.StartGradient),e.push(this.Radius),e.push(this.IsConvex),e}},_fe=class{constructor(e,t,i,r,n,s,a,o,l){this.expressID=e,this.type=t,this.TangentialContinuity=i,this.StartTag=r,this.EndTag=n,this.StartDistAlong=s,this.HorizontalLength=a,this.StartHeight=o,this.StartGradient=l}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++];return new _fe(e,t,n,s,a,o,l,h,u)}ToTape(){let e=[];return e.push(this.TangentialContinuity),e.push(this.StartTag),e.push(this.EndTag),e.push(this.StartDistAlong),e.push(this.HorizontalLength),e.push(this.StartHeight),e.push(this.StartGradient),e}},Sfe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.TangentialContinuity=i,this.StartTag=r,this.EndTag=n,this.StartDistAlong=s,this.HorizontalLength=a,this.StartHeight=o,this.StartGradient=l,this.ParabolaConstant=h,this.IsConvex=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Sfe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.TangentialContinuity),e.push(this.StartTag),e.push(this.EndTag),e.push(this.StartDistAlong),e.push(this.HorizontalLength),e.push(this.StartHeight),e.push(this.StartGradient),e.push(this.ParabolaConstant),e.push(this.IsConvex),e}},wfe=class{constructor(e,t,i){this.expressID=e,this.type=t,this.Segments=i}static FromTape(e,t,i){let r=0,n=i[r++];return new wfe(e,t,n)}ToTape(){let e=[];return e.push(this.Segments),e}},Rfe=class{constructor(e,t,i,r,n,s,a,o,l){this.expressID=e,this.type=t,this.TangentialContinuity=i,this.StartTag=r,this.EndTag=n,this.StartDistAlong=s,this.HorizontalLength=a,this.StartHeight=o,this.StartGradient=l}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++];return new Rfe(e,t,n,s,a,o,l,h,u)}ToTape(){let e=[];return e.push(this.TangentialContinuity),e.push(this.StartTag),e.push(this.EndTag),e.push(this.StartDistAlong),e.push(this.HorizontalLength),e.push(this.StartHeight),e.push(this.StartGradient),e}},Mfe=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.Horizontal=i,this.Vertical=r,this.Tag=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new Mfe(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.Horizontal),e.push(this.Vertical),e.push(this.Tag),e}},Dfe=class{constructor(e,t,i,r,n,s,a,o,l){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++];return new Dfe(e,t,n,s,a,o,l,h,u)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e}},Cfe=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.OuterBoundary=i,this.InnerBoundaries=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new Cfe(e,t,n,s)}ToTape(){let e=[];return e.push(this.OuterBoundary),e.push(this.InnerBoundaries),e}},Afe=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.ApplicationDeveloper=i,this.Version=r,this.ApplicationFullName=n,this.ApplicationIdentifier=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new Afe(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.ApplicationDeveloper),e.push(this.Version),e.push(this.ApplicationFullName),e.push(this.ApplicationIdentifier),e}},Ofe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.AppliedValue=n,this.UnitBasis=s,this.ApplicableDate=a,this.FixedUntilDate=o,this.Category=l,this.Condition=h,this.ArithmeticOperator=u,this.Components=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new Ofe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.AppliedValue),e.push(this.UnitBasis),e.push(this.ApplicableDate),e.push(this.FixedUntilDate),e.push(this.Category),e.push(this.Condition),e.push(this.ArithmeticOperator),e.push(this.Components),e}},Pfe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.Identifier=i,this.Name=r,this.Description=n,this.TimeOfApproval=s,this.Status=a,this.Level=o,this.Qualifier=l,this.RequestingApproval=h,this.GivingApproval=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Pfe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.Identifier),e.push(this.Name),e.push(this.Description),e.push(this.TimeOfApproval),e.push(this.Status),e.push(this.Level),e.push(this.Qualifier),e.push(this.RequestingApproval),e.push(this.GivingApproval),e}},Nfe=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.RelatingApproval=n,this.RelatedApprovals=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new Nfe(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.RelatingApproval),e.push(this.RelatedApprovals),e}},Lfe=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.ProfileType=i,this.ProfileName=r,this.OuterCurve=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new Lfe(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.ProfileType),e.push(this.ProfileName),e.push(this.OuterCurve),e}},Ffe=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.ProfileType=i,this.ProfileName=r,this.Curve=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new Ffe(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.ProfileType),e.push(this.ProfileName),e.push(this.Curve),e}},Hfe=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.ProfileType=i,this.ProfileName=r,this.OuterCurve=n,this.InnerCurves=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new Hfe(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.ProfileType),e.push(this.ProfileName),e.push(this.OuterCurve),e.push(this.InnerCurves),e}},Ufe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d,f,m){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.Identification=o,this.OriginalValue=l,this.CurrentValue=h,this.TotalReplacementCost=u,this.Owner=c,this.User=p,this.ResponsiblePerson=d,this.IncorporationDate=f,this.DepreciatedValue=m}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++],g=i[r++],y=i[r++];return new Ufe(e,t,n,s,a,o,l,h,u,c,p,d,f,m,g,y)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.Identification),e.push(this.OriginalValue),e.push(this.CurrentValue),e.push(this.TotalReplacementCost),e.push(this.Owner),e.push(this.User),e.push(this.ResponsiblePerson),e.push(this.IncorporationDate),e.push(this.DepreciatedValue),e}},Bfe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d,f,m,g){this.expressID=e,this.type=t,this.ProfileType=i,this.ProfileName=r,this.Position=n,this.BottomFlangeWidth=s,this.OverallDepth=a,this.WebThickness=o,this.BottomFlangeThickness=l,this.BottomFlangeFilletRadius=h,this.TopFlangeWidth=u,this.TopFlangeThickness=c,this.TopFlangeFilletRadius=p,this.BottomFlangeEdgeRadius=d,this.BottomFlangeSlope=f,this.TopFlangeEdgeRadius=m,this.TopFlangeSlope=g}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++],g=i[r++],y=i[r++],v=i[r++];return new Bfe(e,t,n,s,a,o,l,h,u,c,p,d,f,m,g,y,v)}ToTape(){let e=[];return e.push(this.ProfileType),e.push(this.ProfileName),e.push(this.Position),e.push(this.BottomFlangeWidth),e.push(this.OverallDepth),e.push(this.WebThickness),e.push(this.BottomFlangeThickness),e.push(this.BottomFlangeFilletRadius),e.push(this.TopFlangeWidth),e.push(this.TopFlangeThickness),e.push(this.TopFlangeFilletRadius),e.push(this.BottomFlangeEdgeRadius),e.push(this.BottomFlangeSlope),e.push(this.TopFlangeEdgeRadius),e.push(this.TopFlangeSlope),e}},kfe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new kfe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},Gfe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new Gfe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},Vfe=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.Location=i,this.Axis=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new Vfe(e,t,n,s)}ToTape(){let e=[];return e.push(this.Location),e.push(this.Axis),e}},zfe=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.Location=i,this.RefDirection=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new zfe(e,t,n,s)}ToTape(){let e=[];return e.push(this.Location),e.push(this.RefDirection),e}},jfe=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.Location=i,this.Axis=r,this.RefDirection=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new jfe(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.Location),e.push(this.Axis),e.push(this.RefDirection),e}},Wfe=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.Degree=i,this.ControlPointsList=r,this.CurveForm=n,this.ClosedCurve=s,this.SelfIntersect=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new Wfe(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.Degree),e.push(this.ControlPointsList),e.push(this.CurveForm),e.push(this.ClosedCurve),e.push(this.SelfIntersect),e}},qfe=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.Degree=i,this.ControlPointsList=r,this.CurveForm=n,this.ClosedCurve=s,this.SelfIntersect=a,this.KnotMultiplicities=o,this.Knots=l,this.KnotSpec=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new qfe(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.Degree),e.push(this.ControlPointsList),e.push(this.CurveForm),e.push(this.ClosedCurve),e.push(this.SelfIntersect),e.push(this.KnotMultiplicities),e.push(this.Knots),e.push(this.KnotSpec),e}},Yfe=class{constructor(e,t,i,r,n,s,a,o,l){this.expressID=e,this.type=t,this.UDegree=i,this.VDegree=r,this.ControlPointsList=n,this.SurfaceForm=s,this.UClosed=a,this.VClosed=o,this.SelfIntersect=l}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++];return new Yfe(e,t,n,s,a,o,l,h,u)}ToTape(){let e=[];return e.push(this.UDegree),e.push(this.VDegree),e.push(this.ControlPointsList),e.push(this.SurfaceForm),e.push(this.UClosed),e.push(this.VClosed),e.push(this.SelfIntersect),e}},Xfe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d){this.expressID=e,this.type=t,this.UDegree=i,this.VDegree=r,this.ControlPointsList=n,this.SurfaceForm=s,this.UClosed=a,this.VClosed=o,this.SelfIntersect=l,this.UMultiplicities=h,this.VMultiplicities=u,this.UKnots=c,this.VKnots=p,this.KnotSpec=d}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++];return new Xfe(e,t,n,s,a,o,l,h,u,c,p,d,f,m)}ToTape(){let e=[];return e.push(this.UDegree),e.push(this.VDegree),e.push(this.ControlPointsList),e.push(this.SurfaceForm),e.push(this.UClosed),e.push(this.VClosed),e.push(this.SelfIntersect),e.push(this.UMultiplicities),e.push(this.VMultiplicities),e.push(this.UKnots),e.push(this.VKnots),e.push(this.KnotSpec),e}},$fe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new $fe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},Kfe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Kfe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},Zfe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new Zfe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},Jfe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Jfe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},Qfe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new Qfe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},eme=class{constructor(e,t,i,r,n,s,a,o,l){this.expressID=e,this.type=t,this.RepeatS=i,this.RepeatT=r,this.Mode=n,this.TextureTransform=s,this.Parameter=a,this.RasterFormat=o,this.RasterCode=l}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++];return new eme(e,t,n,s,a,o,l,h,u)}ToTape(){let e=[];return e.push(this.RepeatS),e.push(this.RepeatT),e.push(this.Mode),e.push(this.TextureTransform),e.push(this.Parameter),e.push(this.RasterFormat),e.push(this.RasterCode),e}},tme=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.Position=i,this.XLength=r,this.YLength=n,this.ZLength=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new tme(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.Position),e.push(this.XLength),e.push(this.YLength),e.push(this.ZLength),e}},rme=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new rme(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},ime=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new ime(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},nme=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.Operator=i,this.FirstOperand=r,this.SecondOperand=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new nme(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.Operator),e.push(this.FirstOperand),e.push(this.SecondOperand),e}},sme=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.Operator=i,this.FirstOperand=r,this.SecondOperand=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new sme(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.Operator),e.push(this.FirstOperand),e.push(this.SecondOperand),e}},ame=class{constructor(e,t,i){this.expressID=e,this.type=t,this.Name=i}static FromTape(e,t,i){let r=0,n=i[r++];return new ame(e,t,n)}ToTape(){let e=[];return e.push(this.Name),e}},ome=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.Segments=i,this.SelfIntersect=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new ome(e,t,n,s)}ToTape(){let e=[];return e.push(this.Segments),e.push(this.SelfIntersect),e}},lme=class{constructor(e,t,i,r,n,s,a,o,l){this.expressID=e,this.type=t,this.Name=i,this.TranslationalStiffnessByLengthX=r,this.TranslationalStiffnessByLengthY=n,this.TranslationalStiffnessByLengthZ=s,this.RotationalStiffnessByLengthX=a,this.RotationalStiffnessByLengthY=o,this.RotationalStiffnessByLengthZ=l}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++];return new lme(e,t,n,s,a,o,l,h,u)}ToTape(){let e=[];return e.push(this.Name),e.push(this.TranslationalStiffnessByLengthX),e.push(this.TranslationalStiffnessByLengthY),e.push(this.TranslationalStiffnessByLengthZ),e.push(this.RotationalStiffnessByLengthX),e.push(this.RotationalStiffnessByLengthY),e.push(this.RotationalStiffnessByLengthZ),e}},cme=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.Name=i,this.TranslationalStiffnessByAreaX=r,this.TranslationalStiffnessByAreaY=n,this.TranslationalStiffnessByAreaZ=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new cme(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.Name),e.push(this.TranslationalStiffnessByAreaX),e.push(this.TranslationalStiffnessByAreaY),e.push(this.TranslationalStiffnessByAreaZ),e}},ume=class{constructor(e,t,i,r,n,s,a,o,l){this.expressID=e,this.type=t,this.Name=i,this.TranslationalStiffnessX=r,this.TranslationalStiffnessY=n,this.TranslationalStiffnessZ=s,this.RotationalStiffnessX=a,this.RotationalStiffnessY=o,this.RotationalStiffnessZ=l}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++];return new ume(e,t,n,s,a,o,l,h,u)}ToTape(){let e=[];return e.push(this.Name),e.push(this.TranslationalStiffnessX),e.push(this.TranslationalStiffnessY),e.push(this.TranslationalStiffnessZ),e.push(this.RotationalStiffnessX),e.push(this.RotationalStiffnessY),e.push(this.RotationalStiffnessZ),e}},hme=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.Name=i,this.TranslationalStiffnessX=r,this.TranslationalStiffnessY=n,this.TranslationalStiffnessZ=s,this.RotationalStiffnessX=a,this.RotationalStiffnessY=o,this.RotationalStiffnessZ=l,this.WarpingStiffness=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new hme(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.Name),e.push(this.TranslationalStiffnessX),e.push(this.TranslationalStiffnessY),e.push(this.TranslationalStiffnessZ),e.push(this.RotationalStiffnessX),e.push(this.RotationalStiffnessY),e.push(this.RotationalStiffnessZ),e.push(this.WarpingStiffness),e}},pme=class{constructor(e,t){this.expressID=e,this.type=t}static FromTape(e,t,i){return new pme(e,t)}ToTape(){return[]}},dme=class{constructor(e,t){this.expressID=e,this.type=t}static FromTape(e,t,i){return new dme(e,t)}ToTape(){return[]}},fme=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.Corner=i,this.XDim=r,this.YDim=n,this.ZDim=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new fme(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.Corner),e.push(this.XDim),e.push(this.YDim),e.push(this.ZDim),e}},mme=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.BaseSurface=i,this.AgreementFlag=r,this.Enclosure=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new mme(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.BaseSurface),e.push(this.AgreementFlag),e.push(this.Enclosure),e}},gme=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.LongName=h,this.CompositionType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new gme(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.LongName),e.push(this.CompositionType),e.push(this.PredefinedType),e}},vme=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.LongName=h,this.CompositionType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new vme(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.LongName),e.push(this.CompositionType),e.push(this.PredefinedType),e}},yme=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.LongName=h,this.CompositionType=u,this.ElevationOfRefHeight=c,this.ElevationOfTerrain=p,this.BuildingAddress=d}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++];return new yme(e,t,n,s,a,o,l,h,u,c,p,d,f,m)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.LongName),e.push(this.CompositionType),e.push(this.ElevationOfRefHeight),e.push(this.ElevationOfTerrain),e.push(this.BuildingAddress),e}},Tme=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new Tme(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e}},Eme=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Eme(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},bme=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new bme(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},xme=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new xme(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},Ime=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new Ime(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},_me=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new _me(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e}},Sme=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.LongName=h,this.CompositionType=u,this.Elevation=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new Sme(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.LongName),e.push(this.CompositionType),e.push(this.Elevation),e}},wme=class{constructor(e,t,i,r,n,s,a,o,l){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.PredefinedType=o,this.LongName=l}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++];return new wme(e,t,n,s,a,o,l,h,u)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.PredefinedType),e.push(this.LongName),e}},Rme=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Rme(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},Mme=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new Mme(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},Dme=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.ProfileType=i,this.ProfileName=r,this.Position=n,this.Depth=s,this.Width=a,this.WallThickness=o,this.Girth=l,this.InternalFilletRadius=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new Dme(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.ProfileType),e.push(this.ProfileName),e.push(this.Position),e.push(this.Depth),e.push(this.Width),e.push(this.WallThickness),e.push(this.Girth),e.push(this.InternalFilletRadius),e}},Cme=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Cme(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},Ame=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new Ame(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},Ome=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Ome(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},Pme=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new Pme(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},Nme=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Nme(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},Lme=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new Lme(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},Fme=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Fme(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},Hme=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new Hme(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},Ume=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Ume(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},Bme=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new Bme(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},kme=class{constructor(e,t,i){this.expressID=e,this.type=t,this.Coordinates=i}static FromTape(e,t,i){let r=0,n=i[r++];return new kme(e,t,n)}ToTape(){let e=[];return e.push(this.Coordinates),e}},Gme=class{constructor(e,t){this.expressID=e,this.type=t}static FromTape(e,t,i){return new Gme(e,t)}ToTape(){return[]}},Vme=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.CoordList=i,this.TagList=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new Vme(e,t,n,s)}ToTape(){let e=[];return e.push(this.CoordList),e.push(this.TagList),e}},zme=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.CoordList=i,this.TagList=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new zme(e,t,n,s)}ToTape(){let e=[];return e.push(this.CoordList),e.push(this.TagList),e}},jme=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.Axis1=i,this.Axis2=r,this.LocalOrigin=n,this.Scale=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new jme(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.Axis1),e.push(this.Axis2),e.push(this.LocalOrigin),e.push(this.Scale),e}},Wme=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.Axis1=i,this.Axis2=r,this.LocalOrigin=n,this.Scale=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new Wme(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.Axis1),e.push(this.Axis2),e.push(this.LocalOrigin),e.push(this.Scale),e}},qme=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.Axis1=i,this.Axis2=r,this.LocalOrigin=n,this.Scale=s,this.Scale2=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new qme(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.Axis1),e.push(this.Axis2),e.push(this.LocalOrigin),e.push(this.Scale),e.push(this.Scale2),e}},Yme=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.Axis1=i,this.Axis2=r,this.LocalOrigin=n,this.Scale=s,this.Axis3=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new Yme(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.Axis1),e.push(this.Axis2),e.push(this.LocalOrigin),e.push(this.Scale),e.push(this.Axis3),e}},Xme=class{constructor(e,t,i,r,n,s,a,o,l){this.expressID=e,this.type=t,this.Axis1=i,this.Axis2=r,this.LocalOrigin=n,this.Scale=s,this.Axis3=a,this.Scale2=o,this.Scale3=l}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++];return new Xme(e,t,n,s,a,o,l,h,u)}ToTape(){let e=[];return e.push(this.Axis1),e.push(this.Axis2),e.push(this.LocalOrigin),e.push(this.Scale),e.push(this.Axis3),e.push(this.Scale2),e.push(this.Scale3),e}},$me=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.ProfileType=i,this.ProfileName=r,this.Curve=n,this.Thickness=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new $me(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.ProfileType),e.push(this.ProfileName),e.push(this.Curve),e.push(this.Thickness),e}},Kme=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Kme(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},Zme=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new Zme(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},Jme=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Jme(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},Qme=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new Qme(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},ege=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.Position=i,this.Radius=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new ege(e,t,n,s)}ToTape(){let e=[];return e.push(this.Position),e.push(this.Radius),e}},tge=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.ProfileType=i,this.ProfileName=r,this.Position=n,this.Radius=s,this.WallThickness=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new tge(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.ProfileType),e.push(this.ProfileName),e.push(this.Position),e.push(this.Radius),e.push(this.WallThickness),e}},rge=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.ProfileType=i,this.ProfileName=r,this.Position=n,this.Radius=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new rge(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.ProfileType),e.push(this.ProfileName),e.push(this.Position),e.push(this.Radius),e}},ige=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.StartPoint=i,this.StartDirection=r,this.SegmentLength=n,this.Radius=s,this.IsCCW=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new ige(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.StartPoint),e.push(this.StartDirection),e.push(this.SegmentLength),e.push(this.Radius),e.push(this.IsCCW),e}},nge=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new nge(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e}},sge=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new sge(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e}},age=class{constructor(e,t,i,r,n,s,a,o,l){this.expressID=e,this.type=t,this.Source=i,this.Edition=r,this.EditionDate=n,this.Name=s,this.Description=a,this.Location=o,this.ReferenceTokens=l}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++];return new age(e,t,n,s,a,o,l,h,u)}ToTape(){let e=[];return e.push(this.Source),e.push(this.Edition),e.push(this.EditionDate),e.push(this.Name),e.push(this.Description),e.push(this.Location),e.push(this.ReferenceTokens),e}},oge=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.Location=i,this.Identification=r,this.Name=n,this.ReferencedSource=s,this.Description=a,this.Sort=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new oge(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.Location),e.push(this.Identification),e.push(this.Name),e.push(this.ReferencedSource),e.push(this.Description),e.push(this.Sort),e}},lge=class{constructor(e,t,i){this.expressID=e,this.type=t,this.CfsFaces=i}static FromTape(e,t,i){let r=0,n=i[r++];return new lge(e,t,n)}ToTape(){let e=[];return e.push(this.CfsFaces),e}},cge=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new cge(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},uge=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new uge(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},hge=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.Name=i,this.Red=r,this.Green=n,this.Blue=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new hge(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Red),e.push(this.Green),e.push(this.Blue),e}},pge=class{constructor(e,t,i){this.expressID=e,this.type=t,this.ColourList=i}static FromTape(e,t,i){let r=0,n=i[r++];return new pge(e,t,n)}ToTape(){let e=[];return e.push(this.ColourList),e}},dge=class{constructor(e,t,i){this.expressID=e,this.type=t,this.Name=i}static FromTape(e,t,i){let r=0,n=i[r++];return new dge(e,t,n)}ToTape(){let e=[];return e.push(this.Name),e}},fge=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new fge(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},mge=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new mge(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},gge=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new gge(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},vge=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new vge(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},yge=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new yge(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},Tge=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.UsageName=n,this.HasProperties=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new Tge(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.UsageName),e.push(this.HasProperties),e}},Ege=class{constructor(e,t,i,r,n,s,a,o,l){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.UsageName=a,this.TemplateType=o,this.HasPropertyTemplates=l}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++];return new Ege(e,t,n,s,a,o,l,h,u)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.UsageName),e.push(this.TemplateType),e.push(this.HasPropertyTemplates),e}},bge=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.Segments=i,this.SelfIntersect=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new bge(e,t,n,s)}ToTape(){let e=[];return e.push(this.Segments),e.push(this.SelfIntersect),e}},xge=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.Segments=i,this.SelfIntersect=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new xge(e,t,n,s)}ToTape(){let e=[];return e.push(this.Segments),e.push(this.SelfIntersect),e}},Ige=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.Transition=i,this.SameSense=r,this.ParentCurve=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new Ige(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.Transition),e.push(this.SameSense),e.push(this.ParentCurve),e}},_ge=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.ProfileType=i,this.ProfileName=r,this.Profiles=n,this.Label=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new _ge(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.ProfileType),e.push(this.ProfileName),e.push(this.Profiles),e.push(this.Label),e}},Sge=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Sge(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},wge=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new wge(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},Rge=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Rge(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},Mge=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new Mge(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},Dge=class{constructor(e,t,i){this.expressID=e,this.type=t,this.Position=i}static FromTape(e,t,i){let r=0,n=i[r++];return new Dge(e,t,n)}ToTape(){let e=[];return e.push(this.Position),e}},Cge=class{constructor(e,t,i){this.expressID=e,this.type=t,this.CfsFaces=i}static FromTape(e,t,i){let r=0,n=i[r++];return new Cge(e,t,n)}ToTape(){let e=[];return e.push(this.CfsFaces),e}},Age=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.CurveOnRelatingElement=i,this.CurveOnRelatedElement=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new Age(e,t,n,s)}ToTape(){let e=[];return e.push(this.CurveOnRelatingElement),e.push(this.CurveOnRelatedElement),e}},Oge=class{constructor(e,t){this.expressID=e,this.type=t}static FromTape(e,t,i){return new Oge(e,t)}ToTape(){return[]}},Pge=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.PointOnRelatingElement=i,this.PointOnRelatedElement=r,this.EccentricityInX=n,this.EccentricityInY=s,this.EccentricityInZ=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new Pge(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.PointOnRelatingElement),e.push(this.PointOnRelatedElement),e.push(this.EccentricityInX),e.push(this.EccentricityInY),e.push(this.EccentricityInZ),e}},Nge=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.PointOnRelatingElement=i,this.PointOnRelatedElement=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new Nge(e,t,n,s)}ToTape(){let e=[];return e.push(this.PointOnRelatingElement),e.push(this.PointOnRelatedElement),e}},Lge=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.SurfaceOnRelatingElement=i,this.SurfaceOnRelatedElement=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new Lge(e,t,n,s)}ToTape(){let e=[];return e.push(this.SurfaceOnRelatingElement),e.push(this.SurfaceOnRelatedElement),e}},Fge=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.VolumeOnRelatingElement=i,this.VolumeOnRelatedElement=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new Fge(e,t,n,s)}ToTape(){let e=[];return e.push(this.VolumeOnRelatingElement),e.push(this.VolumeOnRelatedElement),e}},Hge=class{constructor(e,t,i,r,n,s,a,o,l){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.ConstraintGrade=n,this.ConstraintSource=s,this.CreatingActor=a,this.CreationTime=o,this.UserDefinedGrade=l}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++];return new Hge(e,t,n,s,a,o,l,h,u)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.ConstraintGrade),e.push(this.ConstraintSource),e.push(this.CreatingActor),e.push(this.CreationTime),e.push(this.UserDefinedGrade),e}},Uge=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.Identification=o,this.LongDescription=l,this.Usage=h,this.BaseCosts=u,this.BaseQuantity=c,this.PredefinedType=p}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++];return new Uge(e,t,n,s,a,o,l,h,u,c,p,d,f)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.Identification),e.push(this.LongDescription),e.push(this.Usage),e.push(this.BaseCosts),e.push(this.BaseQuantity),e.push(this.PredefinedType),e}},Bge=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.Identification=l,this.LongDescription=h,this.ResourceType=u,this.BaseCosts=c,this.BaseQuantity=p,this.PredefinedType=d}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++];return new Bge(e,t,n,s,a,o,l,h,u,c,p,d,f,m)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.Identification),e.push(this.LongDescription),e.push(this.ResourceType),e.push(this.BaseCosts),e.push(this.BaseQuantity),e.push(this.PredefinedType),e}},kge=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.Identification=o,this.LongDescription=l,this.Usage=h,this.BaseCosts=u,this.BaseQuantity=c,this.PredefinedType=p}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++];return new kge(e,t,n,s,a,o,l,h,u,c,p,d,f)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.Identification),e.push(this.LongDescription),e.push(this.Usage),e.push(this.BaseCosts),e.push(this.BaseQuantity),e.push(this.PredefinedType),e}},Gge=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.Identification=l,this.LongDescription=h,this.ResourceType=u,this.BaseCosts=c,this.BaseQuantity=p,this.PredefinedType=d}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++];return new Gge(e,t,n,s,a,o,l,h,u,c,p,d,f,m)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.Identification),e.push(this.LongDescription),e.push(this.ResourceType),e.push(this.BaseCosts),e.push(this.BaseQuantity),e.push(this.PredefinedType),e}},Vge=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.Identification=o,this.LongDescription=l,this.Usage=h,this.BaseCosts=u,this.BaseQuantity=c,this.PredefinedType=p}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++];return new Vge(e,t,n,s,a,o,l,h,u,c,p,d,f)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.Identification),e.push(this.LongDescription),e.push(this.Usage),e.push(this.BaseCosts),e.push(this.BaseQuantity),e.push(this.PredefinedType),e}},zge=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.Identification=l,this.LongDescription=h,this.ResourceType=u,this.BaseCosts=c,this.BaseQuantity=p,this.PredefinedType=d}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++];return new zge(e,t,n,s,a,o,l,h,u,c,p,d,f,m)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.Identification),e.push(this.LongDescription),e.push(this.ResourceType),e.push(this.BaseCosts),e.push(this.BaseQuantity),e.push(this.PredefinedType),e}},jge=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.Identification=o,this.LongDescription=l,this.Usage=h,this.BaseCosts=u,this.BaseQuantity=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new jge(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.Identification),e.push(this.LongDescription),e.push(this.Usage),e.push(this.BaseCosts),e.push(this.BaseQuantity),e}},Wge=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.Identification=l,this.LongDescription=h,this.ResourceType=u,this.BaseCosts=c,this.BaseQuantity=p}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++];return new Wge(e,t,n,s,a,o,l,h,u,c,p,d,f)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.Identification),e.push(this.LongDescription),e.push(this.ResourceType),e.push(this.BaseCosts),e.push(this.BaseQuantity),e}},qge=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.LongName=o,this.Phase=l,this.RepresentationContexts=h,this.UnitsInContext=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new qge(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.LongName),e.push(this.Phase),e.push(this.RepresentationContexts),e.push(this.UnitsInContext),e}},Yge=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.Dimensions=i,this.UnitType=r,this.Name=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new Yge(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.Dimensions),e.push(this.UnitType),e.push(this.Name),e}},Xge=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.Identification=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new Xge(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.Identification),e}},$ge=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new $ge(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},Kge=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new Kge(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},Zge=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.Dimensions=i,this.UnitType=r,this.Name=n,this.ConversionFactor=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new Zge(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.Dimensions),e.push(this.UnitType),e.push(this.Name),e.push(this.ConversionFactor),e}},Jge=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.Dimensions=i,this.UnitType=r,this.Name=n,this.ConversionFactor=s,this.ConversionOffset=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new Jge(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.Dimensions),e.push(this.UnitType),e.push(this.Name),e.push(this.ConversionFactor),e.push(this.ConversionOffset),e}},Qge=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Qge(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},e0e=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new e0e(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},t0e=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new t0e(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},r0e=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new r0e(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},i0e=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.SourceCRS=i,this.TargetCRS=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new i0e(e,t,n,s)}ToTape(){let e=[];return e.push(this.SourceCRS),e.push(this.TargetCRS),e}},n0e=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.GeodeticDatum=n,this.VerticalDatum=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new n0e(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.GeodeticDatum),e.push(this.VerticalDatum),e}},s0e=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.Identification=o,this.PredefinedType=l,this.CostValues=h,this.CostQuantities=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new s0e(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.Identification),e.push(this.PredefinedType),e.push(this.CostValues),e.push(this.CostQuantities),e}},a0e=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.Identification=o,this.PredefinedType=l,this.Status=h,this.SubmittedOn=u,this.UpdateDate=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new a0e(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.Identification),e.push(this.PredefinedType),e.push(this.Status),e.push(this.SubmittedOn),e.push(this.UpdateDate),e}},o0e=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.AppliedValue=n,this.UnitBasis=s,this.ApplicableDate=a,this.FixedUntilDate=o,this.Category=l,this.Condition=h,this.ArithmeticOperator=u,this.Components=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new o0e(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.AppliedValue),e.push(this.UnitBasis),e.push(this.ApplicableDate),e.push(this.FixedUntilDate),e.push(this.Category),e.push(this.Condition),e.push(this.ArithmeticOperator),e.push(this.Components),e}},l0e=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new l0e(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},c0e=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new c0e(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},u0e=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.Identification=o,this.LongDescription=l,this.Usage=h,this.BaseCosts=u,this.BaseQuantity=c,this.PredefinedType=p}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++];return new u0e(e,t,n,s,a,o,l,h,u,c,p,d,f)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.Identification),e.push(this.LongDescription),e.push(this.Usage),e.push(this.BaseCosts),e.push(this.BaseQuantity),e.push(this.PredefinedType),e}},h0e=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.Identification=l,this.LongDescription=h,this.ResourceType=u,this.BaseCosts=c,this.BaseQuantity=p,this.PredefinedType=d}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++];return new h0e(e,t,n,s,a,o,l,h,u,c,p,d,f,m)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.Identification),e.push(this.LongDescription),e.push(this.ResourceType),e.push(this.BaseCosts),e.push(this.BaseQuantity),e.push(this.PredefinedType),e}},p0e=class{constructor(e,t,i){this.expressID=e,this.type=t,this.Position=i}static FromTape(e,t,i){let r=0,n=i[r++];return new p0e(e,t,n)}ToTape(){let e=[];return e.push(this.Position),e}},d0e=class{constructor(e,t,i){this.expressID=e,this.type=t,this.TreeRootExpression=i}static FromTape(e,t,i){let r=0,n=i[r++];return new d0e(e,t,n)}ToTape(){let e=[];return e.push(this.TreeRootExpression),e}},f0e=class{constructor(e,t,i,r,n,s,a,o,l){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.RelatingMonetaryUnit=n,this.RelatedMonetaryUnit=s,this.ExchangeRate=a,this.RateDateTime=o,this.RateSource=l}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++];return new f0e(e,t,n,s,a,o,l,h,u)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.RelatingMonetaryUnit),e.push(this.RelatedMonetaryUnit),e.push(this.ExchangeRate),e.push(this.RateDateTime),e.push(this.RateSource),e}},m0e=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new m0e(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},g0e=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new g0e(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},v0e=class{constructor(e,t){this.expressID=e,this.type=t}static FromTape(e,t,i){return new v0e(e,t)}ToTape(){return[]}},y0e=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.BasisSurface=i,this.OuterBoundary=r,this.InnerBoundaries=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new y0e(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.BasisSurface),e.push(this.OuterBoundary),e.push(this.InnerBoundaries),e}},T0e=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.BasisSurface=i,this.Boundaries=r,this.ImplicitOuter=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new T0e(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.BasisSurface),e.push(this.Boundaries),e.push(this.ImplicitOuter),e}},E0e=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.StartPoint=i,this.StartDirection=r,this.SegmentLength=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new E0e(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.StartPoint),e.push(this.StartDirection),e.push(this.SegmentLength),e}},b0e=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.Name=i,this.CurveFont=r,this.CurveWidth=n,this.CurveColour=s,this.ModelOrDraughting=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new b0e(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.Name),e.push(this.CurveFont),e.push(this.CurveWidth),e.push(this.CurveColour),e.push(this.ModelOrDraughting),e}},x0e=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.Name=i,this.PatternList=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new x0e(e,t,n,s)}ToTape(){let e=[];return e.push(this.Name),e.push(this.PatternList),e}},I0e=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.Name=i,this.CurveFont=r,this.CurveFontScaling=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new I0e(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.Name),e.push(this.CurveFont),e.push(this.CurveFontScaling),e}},_0e=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.VisibleSegmentLength=i,this.InvisibleSegmentLength=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new _0e(e,t,n,s)}ToTape(){let e=[];return e.push(this.VisibleSegmentLength),e.push(this.InvisibleSegmentLength),e}},S0e=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.Position=i,this.Radius=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new S0e(e,t,n,s)}ToTape(){let e=[];return e.push(this.Position),e.push(this.Radius),e}},w0e=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new w0e(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},R0e=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new R0e(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},M0e=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new M0e(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e}},D0e=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new D0e(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e}},C0e=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.ProfileType=i,this.ProfileName=r,this.ParentProfile=n,this.Operator=s,this.Label=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new C0e(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.ProfileType),e.push(this.ProfileName),e.push(this.ParentProfile),e.push(this.Operator),e.push(this.Label),e}},A0e=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.Elements=i,this.UnitType=r,this.UserDefinedType=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new A0e(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.Elements),e.push(this.UnitType),e.push(this.UserDefinedType),e}},O0e=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.Unit=i,this.Exponent=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new O0e(e,t,n,s)}ToTape(){let e=[];return e.push(this.Unit),e.push(this.Exponent),e}},P0e=class{constructor(e,t,i,r,n,s,a,o,l){this.expressID=e,this.type=t,this.LengthExponent=i,this.MassExponent=r,this.TimeExponent=n,this.ElectricCurrentExponent=s,this.ThermodynamicTemperatureExponent=a,this.AmountOfSubstanceExponent=o,this.LuminousIntensityExponent=l}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++];return new P0e(e,t,n,s,a,o,l,h,u)}ToTape(){let e=[];return e.push(this.LengthExponent),e.push(this.MassExponent),e.push(this.TimeExponent),e.push(this.ElectricCurrentExponent),e.push(this.ThermodynamicTemperatureExponent),e.push(this.AmountOfSubstanceExponent),e.push(this.LuminousIntensityExponent),e}},N0e=class{constructor(e,t,i){this.expressID=e,this.type=t,this.DirectionRatios=i}static FromTape(e,t,i){let r=0,n=i[r++];return new N0e(e,t,n)}ToTape(){let e=[];return e.push(this.DirectionRatios),e}},L0e=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new L0e(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},F0e=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new F0e(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},H0e=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.DistanceAlong=i,this.OffsetLateral=r,this.OffsetVertical=n,this.OffsetLongitudinal=s,this.AlongHorizontal=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new H0e(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.DistanceAlong),e.push(this.OffsetLateral),e.push(this.OffsetVertical),e.push(this.OffsetLongitudinal),e.push(this.AlongHorizontal),e}},U0e=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new U0e(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},B0e=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new B0e(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},k0e=class{constructor(e,t,i,r,n,s,a,o,l){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.LongName=o,this.PredefinedType=l}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++];return new k0e(e,t,n,s,a,o,l,h,u)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.LongName),e.push(this.PredefinedType),e}},G0e=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new G0e(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e}},V0e=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new V0e(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e}},z0e=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new z0e(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e}},j0e=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new j0e(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e}},W0e=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new W0e(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e}},q0e=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new q0e(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e}},Y0e=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.FlowDirection=h,this.PredefinedType=u,this.SystemType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new Y0e(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.FlowDirection),e.push(this.PredefinedType),e.push(this.SystemType),e}},X0e=class{constructor(e,t,i,r,n,s,a,o,l){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.LongName=o,this.PredefinedType=l}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++];return new X0e(e,t,n,s,a,o,l,h,u)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.LongName),e.push(this.PredefinedType),e}},$0e=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d,f,m,g,y,v){this.expressID=e,this.type=t,this.Identification=i,this.Name=r,this.Description=n,this.Location=s,this.Purpose=a,this.IntendedUse=o,this.Scope=l,this.Revision=h,this.DocumentOwner=u,this.Editors=c,this.CreationTime=p,this.LastRevisionTime=d,this.ElectronicFormat=f,this.ValidFrom=m,this.ValidUntil=g,this.Confidentiality=y,this.Status=v}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++],g=i[r++],y=i[r++],v=i[r++],T=i[r++],x=i[r++];return new $0e(e,t,n,s,a,o,l,h,u,c,p,d,f,m,g,y,v,T,x)}ToTape(){let e=[];return e.push(this.Identification),e.push(this.Name),e.push(this.Description),e.push(this.Location),e.push(this.Purpose),e.push(this.IntendedUse),e.push(this.Scope),e.push(this.Revision),e.push(this.DocumentOwner),e.push(this.Editors),e.push(this.CreationTime),e.push(this.LastRevisionTime),e.push(this.ElectronicFormat),e.push(this.ValidFrom),e.push(this.ValidUntil),e.push(this.Confidentiality),e.push(this.Status),e}},K0e=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.RelatingDocument=n,this.RelatedDocuments=s,this.RelationshipType=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new K0e(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.RelatingDocument),e.push(this.RelatedDocuments),e.push(this.RelationshipType),e}},Z0e=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.Location=i,this.Identification=r,this.Name=n,this.Description=s,this.ReferencedDocument=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new Z0e(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.Location),e.push(this.Identification),e.push(this.Name),e.push(this.Description),e.push(this.ReferencedDocument),e}},J0e=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d,f){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.OverallHeight=u,this.OverallWidth=c,this.PredefinedType=p,this.OperationType=d,this.UserDefinedOperationType=f}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++],g=i[r++];return new J0e(e,t,n,s,a,o,l,h,u,c,p,d,f,m,g)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.OverallHeight),e.push(this.OverallWidth),e.push(this.PredefinedType),e.push(this.OperationType),e.push(this.UserDefinedOperationType),e}},Q0e=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d,f,m,g,y,v){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.LiningDepth=a,this.LiningThickness=o,this.ThresholdDepth=l,this.ThresholdThickness=h,this.TransomThickness=u,this.TransomOffset=c,this.LiningOffset=p,this.ThresholdOffset=d,this.CasingThickness=f,this.CasingDepth=m,this.ShapeAspectStyle=g,this.LiningToPanelOffsetX=y,this.LiningToPanelOffsetY=v}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++],g=i[r++],y=i[r++],v=i[r++],T=i[r++],x=i[r++];return new Q0e(e,t,n,s,a,o,l,h,u,c,p,d,f,m,g,y,v,T,x)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.LiningDepth),e.push(this.LiningThickness),e.push(this.ThresholdDepth),e.push(this.ThresholdThickness),e.push(this.TransomThickness),e.push(this.TransomOffset),e.push(this.LiningOffset),e.push(this.ThresholdOffset),e.push(this.CasingThickness),e.push(this.CasingDepth),e.push(this.ShapeAspectStyle),e.push(this.LiningToPanelOffsetX),e.push(this.LiningToPanelOffsetY),e}},eve=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.PanelDepth=a,this.PanelOperation=o,this.PanelWidth=l,this.PanelPosition=h,this.ShapeAspectStyle=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new eve(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.PanelDepth),e.push(this.PanelOperation),e.push(this.PanelWidth),e.push(this.PanelPosition),e.push(this.ShapeAspectStyle),e}},tve=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d,f){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.OverallHeight=u,this.OverallWidth=c,this.PredefinedType=p,this.OperationType=d,this.UserDefinedOperationType=f}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++],g=i[r++];return new tve(e,t,n,s,a,o,l,h,u,c,p,d,f,m,g)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.OverallHeight),e.push(this.OverallWidth),e.push(this.PredefinedType),e.push(this.OperationType),e.push(this.UserDefinedOperationType),e}},rve=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.OperationType=u,this.ConstructionType=c,this.ParameterTakesPrecedence=p,this.Sizeable=d}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++];return new rve(e,t,n,s,a,o,l,h,u,c,p,d,f,m)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.OperationType),e.push(this.ConstructionType),e.push(this.ParameterTakesPrecedence),e.push(this.Sizeable),e}},ive=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d,f){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c,this.OperationType=p,this.ParameterTakesPrecedence=d,this.UserDefinedOperationType=f}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++],g=i[r++];return new ive(e,t,n,s,a,o,l,h,u,c,p,d,f,m,g)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e.push(this.OperationType),e.push(this.ParameterTakesPrecedence),e.push(this.UserDefinedOperationType),e}},nve=class{constructor(e,t,i){this.expressID=e,this.type=t,this.Name=i}static FromTape(e,t,i){let r=0,n=i[r++];return new nve(e,t,n)}ToTape(){let e=[];return e.push(this.Name),e}},sve=class{constructor(e,t,i){this.expressID=e,this.type=t,this.Name=i}static FromTape(e,t,i){let r=0,n=i[r++];return new sve(e,t,n)}ToTape(){let e=[];return e.push(this.Name),e}},ave=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new ave(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},ove=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new ove(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},lve=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new lve(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},cve=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new cve(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},uve=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new uve(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},hve=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new hve(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},pve=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.EdgeStart=i,this.EdgeEnd=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new pve(e,t,n,s)}ToTape(){let e=[];return e.push(this.EdgeStart),e.push(this.EdgeEnd),e}},dve=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.EdgeStart=i,this.EdgeEnd=r,this.EdgeGeometry=n,this.SameSense=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new dve(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.EdgeStart),e.push(this.EdgeEnd),e.push(this.EdgeGeometry),e.push(this.SameSense),e}},fve=class{constructor(e,t,i){this.expressID=e,this.type=t,this.EdgeList=i}static FromTape(e,t,i){let r=0,n=i[r++];return new fve(e,t,n)}ToTape(){let e=[];return e.push(this.EdgeList),e}},mve=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new mve(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},gve=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new gve(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},vve=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new vve(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},yve=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new yve(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},Tve=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Tve(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},Eve=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new Eve(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},bve=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new bve(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},xve=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new xve(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},Ive=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Ive(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},_ve=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new _ve(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},Sve=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Sve(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},wve=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new wve(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},Rve=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new Rve(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e}},Mve=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.AssemblyPlace=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new Mve(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.AssemblyPlace),e.push(this.PredefinedType),e}},Dve=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new Dve(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},Cve=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new Cve(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e}},Ave=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Ave(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e}},Ove=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.MethodOfMeasurement=a,this.Quantities=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new Ove(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.MethodOfMeasurement),e.push(this.Quantities),e}},Pve=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Pve(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e}},Nve=class{constructor(e,t,i){this.expressID=e,this.type=t,this.Position=i}static FromTape(e,t,i){let r=0,n=i[r++];return new Nve(e,t,n)}ToTape(){let e=[];return e.push(this.Position),e}},Lve=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.Position=i,this.SemiAxis1=r,this.SemiAxis2=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new Lve(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.Position),e.push(this.SemiAxis1),e.push(this.SemiAxis2),e}},Fve=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.ProfileType=i,this.ProfileName=r,this.Position=n,this.SemiAxis1=s,this.SemiAxis2=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new Fve(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.ProfileType),e.push(this.ProfileName),e.push(this.Position),e.push(this.SemiAxis1),e.push(this.SemiAxis2),e}},Hve=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new Hve(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e}},Uve=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Uve(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e}},Bve=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Bve(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},kve=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new kve(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},Gve=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Gve(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},Vve=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new Vve(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},zve=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new zve(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},jve=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new jve(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},Wve=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.Identification=o,this.LongDescription=l,this.PredefinedType=h,this.EventTriggerType=u,this.UserDefinedEventTriggerType=c,this.EventOccurenceTime=p}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++];return new Wve(e,t,n,s,a,o,l,h,u,c,p,d,f)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.Identification),e.push(this.LongDescription),e.push(this.PredefinedType),e.push(this.EventTriggerType),e.push(this.UserDefinedEventTriggerType),e.push(this.EventOccurenceTime),e}},qve=class{constructor(e,t,i,r,n,s,a,o,l){this.expressID=e,this.type=t,this.Name=i,this.DataOrigin=r,this.UserDefinedDataOrigin=n,this.ActualDate=s,this.EarlyDate=a,this.LateDate=o,this.ScheduleDate=l}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++];return new qve(e,t,n,s,a,o,l,h,u)}ToTape(){let e=[];return e.push(this.Name),e.push(this.DataOrigin),e.push(this.UserDefinedDataOrigin),e.push(this.ActualDate),e.push(this.EarlyDate),e.push(this.LateDate),e.push(this.ScheduleDate),e}},Yve=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.Identification=l,this.LongDescription=h,this.ProcessType=u,this.PredefinedType=c,this.EventTriggerType=p,this.UserDefinedEventTriggerType=d}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++];return new Yve(e,t,n,s,a,o,l,h,u,c,p,d,f,m)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.Identification),e.push(this.LongDescription),e.push(this.ProcessType),e.push(this.PredefinedType),e.push(this.EventTriggerType),e.push(this.UserDefinedEventTriggerType),e}},Xve=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.Properties=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new Xve(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.Properties),e}},$ve=class{constructor(e,t){this.expressID=e,this.type=t}static FromTape(e,t,i){return new $ve(e,t)}ToTape(){return[]}},Kve=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.Location=i,this.Identification=r,this.Name=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new Kve(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.Location),e.push(this.Identification),e.push(this.Name),e}},Zve=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.RelatingReference=n,this.RelatedResourceObjects=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new Zve(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.RelatingReference),e.push(this.RelatedResourceObjects),e}},Jve=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.LongName=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Jve(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.LongName),e.push(this.PredefinedType),e}},Qve=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.LongName=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new Qve(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.LongName),e}},eye=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.Location=i,this.Identification=r,this.Name=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new eye(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.Location),e.push(this.Identification),e.push(this.Name),e}},tye=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.Location=i,this.Identification=r,this.Name=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new tye(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.Location),e.push(this.Identification),e.push(this.Name),e}},rye=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.Location=i,this.Identification=r,this.Name=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new rye(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.Location),e.push(this.Identification),e.push(this.Name),e}},iye=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.SweptArea=i,this.Position=r,this.ExtrudedDirection=n,this.Depth=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new iye(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.SweptArea),e.push(this.Position),e.push(this.ExtrudedDirection),e.push(this.Depth),e}},nye=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.SweptArea=i,this.Position=r,this.ExtrudedDirection=n,this.Depth=s,this.EndSweptArea=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new nye(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.SweptArea),e.push(this.Position),e.push(this.ExtrudedDirection),e.push(this.Depth),e.push(this.EndSweptArea),e}},sye=class{constructor(e,t,i){this.expressID=e,this.type=t,this.Bounds=i}static FromTape(e,t,i){let r=0,n=i[r++];return new sye(e,t,n)}ToTape(){let e=[];return e.push(this.Bounds),e}},aye=class{constructor(e,t,i){this.expressID=e,this.type=t,this.FbsmFaces=i}static FromTape(e,t,i){let r=0,n=i[r++];return new aye(e,t,n)}ToTape(){let e=[];return e.push(this.FbsmFaces),e}},oye=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.Bound=i,this.Orientation=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new oye(e,t,n,s)}ToTape(){let e=[];return e.push(this.Bound),e.push(this.Orientation),e}},lye=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.Bound=i,this.Orientation=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new lye(e,t,n,s)}ToTape(){let e=[];return e.push(this.Bound),e.push(this.Orientation),e}},cye=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.Bounds=i,this.FaceSurface=r,this.SameSense=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new cye(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.Bounds),e.push(this.FaceSurface),e.push(this.SameSense),e}},uye=class{constructor(e,t,i){this.expressID=e,this.type=t,this.Outer=i}static FromTape(e,t,i){let r=0,n=i[r++];return new uye(e,t,n)}ToTape(){let e=[];return e.push(this.Outer),e}},hye=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.Outer=i,this.Voids=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new hye(e,t,n,s)}ToTape(){let e=[];return e.push(this.Outer),e.push(this.Voids),e}},pye=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.LongName=h,this.CompositionType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new pye(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.LongName),e.push(this.CompositionType),e}},dye=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.LongName=h,this.CompositionType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new dye(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.LongName),e.push(this.CompositionType),e}},fye=class{constructor(e,t,i,r,n,s,a,o,l){this.expressID=e,this.type=t,this.Name=i,this.TensionFailureX=r,this.TensionFailureY=n,this.TensionFailureZ=s,this.CompressionFailureX=a,this.CompressionFailureY=o,this.CompressionFailureZ=l}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++];return new fye(e,t,n,s,a,o,l,h,u)}ToTape(){let e=[];return e.push(this.Name),e.push(this.TensionFailureX),e.push(this.TensionFailureY),e.push(this.TensionFailureZ),e.push(this.CompressionFailureX),e.push(this.CompressionFailureY),e.push(this.CompressionFailureZ),e}},mye=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new mye(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},gye=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new gye(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},vye=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new vye(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},yye=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new yye(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},Tye=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new Tye(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e}},Eye=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new Eye(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e}},bye=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new bye(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e}},xye=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.Name=i,this.FillStyles=r,this.ModelorDraughting=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new xye(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.Name),e.push(this.FillStyles),e.push(this.ModelorDraughting),e}},Iye=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.HatchLineAppearance=i,this.StartOfNextHatchLine=r,this.PointOfReferenceHatchLine=n,this.PatternStart=s,this.HatchLineAngle=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new Iye(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.HatchLineAppearance),e.push(this.StartOfNextHatchLine),e.push(this.PointOfReferenceHatchLine),e.push(this.PatternStart),e.push(this.HatchLineAngle),e}},_ye=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.TilingPattern=i,this.Tiles=r,this.TilingScale=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new _ye(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.TilingPattern),e.push(this.Tiles),e.push(this.TilingScale),e}},Sye=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Sye(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},wye=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new wye(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},Rye=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Rye(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},Mye=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new Mye(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},Dye=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.SweptArea=i,this.Position=r,this.Directrix=n,this.StartParam=s,this.EndParam=a,this.FixedReference=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new Dye(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.SweptArea),e.push(this.Position),e.push(this.Directrix),e.push(this.StartParam),e.push(this.EndParam),e.push(this.FixedReference),e}},Cye=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new Cye(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e}},Aye=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Aye(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e}},Oye=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new Oye(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e}},Pye=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Pye(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e}},Nye=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Nye(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},Lye=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new Lye(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},Fye=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Fye(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},Hye=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new Hye(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},Uye=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new Uye(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e}},Bye=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Bye(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e}},kye=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new kye(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e}},Gye=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Gye(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e}},Vye=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new Vye(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e}},zye=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new zye(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e}},jye=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new jye(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e}},Wye=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Wye(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e}},qye=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new qye(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e}},Yye=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Yye(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e}},Xye=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Xye(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},$ye=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new $ye(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},Kye=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new Kye(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e}},Zye=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Zye(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e}},Jye=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Jye(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},Qye=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.AssemblyPlace=c,this.PredefinedType=p}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++];return new Qye(e,t,n,s,a,o,l,h,u,c,p,d,f)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.AssemblyPlace),e.push(this.PredefinedType),e}},eTe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new eTe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},tTe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new tTe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},rTe=class{constructor(e,t,i){this.expressID=e,this.type=t,this.Elements=i}static FromTape(e,t,i){let r=0,n=i[r++];return new rTe(e,t,n)}ToTape(){let e=[];return e.push(this.Elements),e}},iTe=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.ContextIdentifier=i,this.ContextType=r,this.CoordinateSpaceDimension=n,this.Precision=s,this.WorldCoordinateSystem=a,this.TrueNorth=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new iTe(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.ContextIdentifier),e.push(this.ContextType),e.push(this.CoordinateSpaceDimension),e.push(this.Precision),e.push(this.WorldCoordinateSystem),e.push(this.TrueNorth),e}},nTe=class{constructor(e,t){this.expressID=e,this.type=t}static FromTape(e,t,i){return new nTe(e,t)}ToTape(){return[]}},sTe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.ContextIdentifier=i,this.ContextType=r,this.CoordinateSpaceDimension=n,this.Precision=s,this.WorldCoordinateSystem=a,this.TrueNorth=o,this.ParentContext=l,this.TargetScale=h,this.TargetView=u,this.UserDefinedTargetView=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new sTe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.ContextIdentifier),e.push(this.ContextType),e.push(this.CoordinateSpaceDimension),e.push(this.Precision),e.push(this.WorldCoordinateSystem),e.push(this.TrueNorth),e.push(this.ParentContext),e.push(this.TargetScale),e.push(this.TargetView),e.push(this.UserDefinedTargetView),e}},aTe=class{constructor(e,t,i){this.expressID=e,this.type=t,this.Elements=i}static FromTape(e,t,i){let r=0,n=i[r++];return new aTe(e,t,n)}ToTape(){let e=[];return e.push(this.Elements),e}},oTe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.UAxes=h,this.VAxes=u,this.WAxes=c,this.PredefinedType=p}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++];return new oTe(e,t,n,s,a,o,l,h,u,c,p,d,f)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.UAxes),e.push(this.VAxes),e.push(this.WAxes),e.push(this.PredefinedType),e}},lTe=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.AxisTag=i,this.AxisCurve=r,this.SameSense=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new lTe(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.AxisTag),e.push(this.AxisCurve),e.push(this.SameSense),e}},cTe=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.PlacementRelTo=i,this.PlacementLocation=r,this.PlacementRefDirection=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new cTe(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.PlacementRelTo),e.push(this.PlacementLocation),e.push(this.PlacementRefDirection),e}},uTe=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new uTe(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e}},hTe=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.BaseSurface=i,this.AgreementFlag=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new hTe(e,t,n,s)}ToTape(){let e=[];return e.push(this.BaseSurface),e.push(this.AgreementFlag),e}},pTe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new pTe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},dTe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new dTe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},fTe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new fTe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},mTe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new mTe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},gTe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.ProfileType=i,this.ProfileName=r,this.Position=n,this.OverallWidth=s,this.OverallDepth=a,this.WebThickness=o,this.FlangeThickness=l,this.FilletRadius=h,this.FlangeEdgeRadius=u,this.FlangeSlope=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new gTe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.ProfileType),e.push(this.ProfileName),e.push(this.Position),e.push(this.OverallWidth),e.push(this.OverallDepth),e.push(this.WebThickness),e.push(this.FlangeThickness),e.push(this.FilletRadius),e.push(this.FlangeEdgeRadius),e.push(this.FlangeSlope),e}},vTe=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.RepeatS=i,this.RepeatT=r,this.Mode=n,this.TextureTransform=s,this.Parameter=a,this.URLReference=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new vTe(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.RepeatS),e.push(this.RepeatT),e.push(this.Mode),e.push(this.TextureTransform),e.push(this.Parameter),e.push(this.URLReference),e}},yTe=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.MappedTo=i,this.Opacity=r,this.Colours=n,this.ColourIndex=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new yTe(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.MappedTo),e.push(this.Opacity),e.push(this.Colours),e.push(this.ColourIndex),e}},TTe=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.Points=i,this.Segments=r,this.SelfIntersect=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new TTe(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.Points),e.push(this.Segments),e.push(this.SelfIntersect),e}},ETe=class{constructor(e,t,i){this.expressID=e,this.type=t,this.CoordIndex=i}static FromTape(e,t,i){let r=0,n=i[r++];return new ETe(e,t,n)}ToTape(){let e=[];return e.push(this.CoordIndex),e}},bTe=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.CoordIndex=i,this.InnerCoordIndices=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new bTe(e,t,n,s)}ToTape(){let e=[];return e.push(this.CoordIndex),e.push(this.InnerCoordIndices),e}},xTe=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.Maps=i,this.MappedTo=r,this.TexCoords=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new xTe(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.Maps),e.push(this.MappedTo),e.push(this.TexCoords),e}},ITe=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.Maps=i,this.MappedTo=r,this.TexCoords=n,this.TexCoordIndex=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new ITe(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.Maps),e.push(this.MappedTo),e.push(this.TexCoords),e.push(this.TexCoordIndex),e}},_Te=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new _Te(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},STe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new STe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},wTe=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.Curve3D=i,this.AssociatedGeometry=r,this.MasterRepresentation=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new wTe(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.Curve3D),e.push(this.AssociatedGeometry),e.push(this.MasterRepresentation),e}},RTe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.PredefinedType=o,this.Jurisdiction=l,this.ResponsiblePersons=h,this.LastUpdateDate=u,this.CurrentValue=c,this.OriginalValue=p}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++];return new RTe(e,t,n,s,a,o,l,h,u,c,p,d,f)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.PredefinedType),e.push(this.Jurisdiction),e.push(this.ResponsiblePersons),e.push(this.LastUpdateDate),e.push(this.CurrentValue),e.push(this.OriginalValue),e}},MTe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.StartTime=n,this.EndTime=s,this.TimeSeriesDataType=a,this.DataOrigin=o,this.UserDefinedDataOrigin=l,this.Unit=h,this.Values=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new MTe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.StartTime),e.push(this.EndTime),e.push(this.TimeSeriesDataType),e.push(this.DataOrigin),e.push(this.UserDefinedDataOrigin),e.push(this.Unit),e.push(this.Values),e}},DTe=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.TimeStamp=i,this.ListValues=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new DTe(e,t,n,s)}ToTape(){let e=[];return e.push(this.TimeStamp),e.push(this.ListValues),e}},CTe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new CTe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},ATe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new ATe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},OTe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.ProfileType=i,this.ProfileName=r,this.Position=n,this.Depth=s,this.Width=a,this.Thickness=o,this.FilletRadius=l,this.EdgeRadius=h,this.LegSlope=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new OTe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.ProfileType),e.push(this.ProfileName),e.push(this.Position),e.push(this.Depth),e.push(this.Width),e.push(this.Thickness),e.push(this.FilletRadius),e.push(this.EdgeRadius),e.push(this.LegSlope),e}},PTe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.Identification=o,this.LongDescription=l,this.Usage=h,this.BaseCosts=u,this.BaseQuantity=c,this.PredefinedType=p}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++];return new PTe(e,t,n,s,a,o,l,h,u,c,p,d,f)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.Identification),e.push(this.LongDescription),e.push(this.Usage),e.push(this.BaseCosts),e.push(this.BaseQuantity),e.push(this.PredefinedType),e}},NTe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.Identification=l,this.LongDescription=h,this.ResourceType=u,this.BaseCosts=c,this.BaseQuantity=p,this.PredefinedType=d}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++];return new NTe(e,t,n,s,a,o,l,h,u,c,p,d,f,m)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.Identification),e.push(this.LongDescription),e.push(this.ResourceType),e.push(this.BaseCosts),e.push(this.BaseQuantity),e.push(this.PredefinedType),e}},LTe=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.Name=i,this.DataOrigin=r,this.UserDefinedDataOrigin=n,this.LagValue=s,this.DurationType=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new LTe(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.Name),e.push(this.DataOrigin),e.push(this.UserDefinedDataOrigin),e.push(this.LagValue),e.push(this.DurationType),e}},FTe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new FTe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},HTe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new HTe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},UTe=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.Name=i,this.Version=r,this.Publisher=n,this.VersionDate=s,this.Location=a,this.Description=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new UTe(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Version),e.push(this.Publisher),e.push(this.VersionDate),e.push(this.Location),e.push(this.Description),e}},BTe=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.Location=i,this.Identification=r,this.Name=n,this.Description=s,this.Language=a,this.ReferencedLibrary=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new BTe(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.Location),e.push(this.Identification),e.push(this.Name),e.push(this.Description),e.push(this.Language),e.push(this.ReferencedLibrary),e}},kTe=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.MainPlaneAngle=i,this.SecondaryPlaneAngle=r,this.LuminousIntensity=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new kTe(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.MainPlaneAngle),e.push(this.SecondaryPlaneAngle),e.push(this.LuminousIntensity),e}},GTe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new GTe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},VTe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new VTe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},zTe=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.LightDistributionCurve=i,this.DistributionData=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new zTe(e,t,n,s)}ToTape(){let e=[];return e.push(this.LightDistributionCurve),e.push(this.DistributionData),e}},jTe=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.Name=i,this.LightColour=r,this.AmbientIntensity=n,this.Intensity=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new jTe(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.Name),e.push(this.LightColour),e.push(this.AmbientIntensity),e.push(this.Intensity),e}},WTe=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.Name=i,this.LightColour=r,this.AmbientIntensity=n,this.Intensity=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new WTe(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.Name),e.push(this.LightColour),e.push(this.AmbientIntensity),e.push(this.Intensity),e}},qTe=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.Name=i,this.LightColour=r,this.AmbientIntensity=n,this.Intensity=s,this.Orientation=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new qTe(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.Name),e.push(this.LightColour),e.push(this.AmbientIntensity),e.push(this.Intensity),e.push(this.Orientation),e}},YTe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.Name=i,this.LightColour=r,this.AmbientIntensity=n,this.Intensity=s,this.Position=a,this.ColourAppearance=o,this.ColourTemperature=l,this.LuminousFlux=h,this.LightEmissionSource=u,this.LightDistributionDataSource=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new YTe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.Name),e.push(this.LightColour),e.push(this.AmbientIntensity),e.push(this.Intensity),e.push(this.Position),e.push(this.ColourAppearance),e.push(this.ColourTemperature),e.push(this.LuminousFlux),e.push(this.LightEmissionSource),e.push(this.LightDistributionDataSource),e}},XTe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.Name=i,this.LightColour=r,this.AmbientIntensity=n,this.Intensity=s,this.Position=a,this.Radius=o,this.ConstantAttenuation=l,this.DistanceAttenuation=h,this.QuadricAttenuation=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new XTe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.Name),e.push(this.LightColour),e.push(this.AmbientIntensity),e.push(this.Intensity),e.push(this.Position),e.push(this.Radius),e.push(this.ConstantAttenuation),e.push(this.DistanceAttenuation),e.push(this.QuadricAttenuation),e}},$Te=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d,f){this.expressID=e,this.type=t,this.Name=i,this.LightColour=r,this.AmbientIntensity=n,this.Intensity=s,this.Position=a,this.Radius=o,this.ConstantAttenuation=l,this.DistanceAttenuation=h,this.QuadricAttenuation=u,this.Orientation=c,this.ConcentrationExponent=p,this.SpreadAngle=d,this.BeamWidthAngle=f}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++],g=i[r++];return new $Te(e,t,n,s,a,o,l,h,u,c,p,d,f,m,g)}ToTape(){let e=[];return e.push(this.Name),e.push(this.LightColour),e.push(this.AmbientIntensity),e.push(this.Intensity),e.push(this.Position),e.push(this.Radius),e.push(this.ConstantAttenuation),e.push(this.DistanceAttenuation),e.push(this.QuadricAttenuation),e.push(this.Orientation),e.push(this.ConcentrationExponent),e.push(this.SpreadAngle),e.push(this.BeamWidthAngle),e}},KTe=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.Pnt=i,this.Dir=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new KTe(e,t,n,s)}ToTape(){let e=[];return e.push(this.Pnt),e.push(this.Dir),e}},ZTe=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.StartPoint=i,this.StartDirection=r,this.SegmentLength=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new ZTe(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.StartPoint),e.push(this.StartDirection),e.push(this.SegmentLength),e}},JTe=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.PlacementRelTo=i,this.PlacementMeasuredAlong=r,this.Distance=n,this.Orientation=s,this.CartesianPosition=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new JTe(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.PlacementRelTo),e.push(this.PlacementMeasuredAlong),e.push(this.Distance),e.push(this.Orientation),e.push(this.CartesianPosition),e}},QTe=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Axis=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new QTe(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Axis),e}},eEe=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.PlacementRelTo=i,this.RelativePlacement=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new eEe(e,t,n,s)}ToTape(){let e=[];return e.push(this.PlacementRelTo),e.push(this.RelativePlacement),e}},tEe=class{constructor(e,t){this.expressID=e,this.type=t}static FromTape(e,t,i){return new tEe(e,t)}ToTape(){return[]}},rEe=class{constructor(e,t,i){this.expressID=e,this.type=t,this.Outer=i}static FromTape(e,t,i){let r=0,n=i[r++];return new rEe(e,t,n)}ToTape(){let e=[];return e.push(this.Outer),e}},iEe=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.SourceCRS=i,this.TargetCRS=r,this.Eastings=n,this.Northings=s,this.OrthogonalHeight=a,this.XAxisAbscissa=o,this.XAxisOrdinate=l,this.Scale=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new iEe(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.SourceCRS),e.push(this.TargetCRS),e.push(this.Eastings),e.push(this.Northings),e.push(this.OrthogonalHeight),e.push(this.XAxisAbscissa),e.push(this.XAxisOrdinate),e.push(this.Scale),e}},nEe=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.MappingSource=i,this.MappingTarget=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new nEe(e,t,n,s)}ToTape(){let e=[];return e.push(this.MappingSource),e.push(this.MappingTarget),e}},sEe=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.Category=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new sEe(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.Category),e}},aEe=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.MaterialClassifications=i,this.ClassifiedMaterial=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new aEe(e,t,n,s)}ToTape(){let e=[];return e.push(this.MaterialClassifications),e.push(this.ClassifiedMaterial),e}},oEe=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.Material=n,this.Fraction=s,this.Category=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new oEe(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.Material),e.push(this.Fraction),e.push(this.Category),e}},lEe=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.MaterialConstituents=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new lEe(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.MaterialConstituents),e}},cEe=class{constructor(e,t){this.expressID=e,this.type=t}static FromTape(e,t,i){return new cEe(e,t)}ToTape(){return[]}},uEe=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.Representations=n,this.RepresentedMaterial=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new uEe(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.Representations),e.push(this.RepresentedMaterial),e}},hEe=class{constructor(e,t,i,r,n,s,a,o,l){this.expressID=e,this.type=t,this.Material=i,this.LayerThickness=r,this.IsVentilated=n,this.Name=s,this.Description=a,this.Category=o,this.Priority=l}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++];return new hEe(e,t,n,s,a,o,l,h,u)}ToTape(){let e=[];return e.push(this.Material),e.push(this.LayerThickness),e.push(this.IsVentilated),e.push(this.Name),e.push(this.Description),e.push(this.Category),e.push(this.Priority),e}},pEe=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.MaterialLayers=i,this.LayerSetName=r,this.Description=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new pEe(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.MaterialLayers),e.push(this.LayerSetName),e.push(this.Description),e}},dEe=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.ForLayerSet=i,this.LayerSetDirection=r,this.DirectionSense=n,this.OffsetFromReferenceLine=s,this.ReferenceExtent=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new dEe(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.ForLayerSet),e.push(this.LayerSetDirection),e.push(this.DirectionSense),e.push(this.OffsetFromReferenceLine),e.push(this.ReferenceExtent),e}},fEe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.Material=i,this.LayerThickness=r,this.IsVentilated=n,this.Name=s,this.Description=a,this.Category=o,this.Priority=l,this.OffsetDirection=h,this.OffsetValues=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new fEe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.Material),e.push(this.LayerThickness),e.push(this.IsVentilated),e.push(this.Name),e.push(this.Description),e.push(this.Category),e.push(this.Priority),e.push(this.OffsetDirection),e.push(this.OffsetValues),e}},mEe=class{constructor(e,t,i){this.expressID=e,this.type=t,this.Materials=i}static FromTape(e,t,i){let r=0,n=i[r++];return new mEe(e,t,n)}ToTape(){let e=[];return e.push(this.Materials),e}},gEe=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.Material=n,this.Profile=s,this.Priority=a,this.Category=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new gEe(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.Material),e.push(this.Profile),e.push(this.Priority),e.push(this.Category),e}},vEe=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.MaterialProfiles=n,this.CompositeProfile=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new vEe(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.MaterialProfiles),e.push(this.CompositeProfile),e}},yEe=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.ForProfileSet=i,this.CardinalPoint=r,this.ReferenceExtent=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new yEe(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.ForProfileSet),e.push(this.CardinalPoint),e.push(this.ReferenceExtent),e}},TEe=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.ForProfileSet=i,this.CardinalPoint=r,this.ReferenceExtent=n,this.ForProfileEndSet=s,this.CardinalEndPoint=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new TEe(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.ForProfileSet),e.push(this.CardinalPoint),e.push(this.ReferenceExtent),e.push(this.ForProfileEndSet),e.push(this.CardinalEndPoint),e}},EEe=class{constructor(e,t,i,r,n,s,a,o,l){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.Material=n,this.Profile=s,this.Priority=a,this.Category=o,this.OffsetValues=l}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++];return new EEe(e,t,n,s,a,o,l,h,u)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.Material),e.push(this.Profile),e.push(this.Priority),e.push(this.Category),e.push(this.OffsetValues),e}},bEe=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.Properties=n,this.Material=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new bEe(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.Properties),e.push(this.Material),e}},xEe=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.RelatingMaterial=n,this.RelatedMaterials=s,this.Expression=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new xEe(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.RelatingMaterial),e.push(this.RelatedMaterials),e.push(this.Expression),e}},IEe=class{constructor(e,t){this.expressID=e,this.type=t}static FromTape(e,t,i){return new IEe(e,t)}ToTape(){return[]}},_Ee=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.ValueComponent=i,this.UnitComponent=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new _Ee(e,t,n,s)}ToTape(){let e=[];return e.push(this.ValueComponent),e.push(this.UnitComponent),e}},SEe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.NominalDiameter=u,this.NominalLength=c,this.PredefinedType=p}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++];return new SEe(e,t,n,s,a,o,l,h,u,c,p,d,f)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.NominalDiameter),e.push(this.NominalLength),e.push(this.PredefinedType),e}},wEe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c,this.NominalDiameter=p,this.NominalLength=d}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++];return new wEe(e,t,n,s,a,o,l,h,u,c,p,d,f,m)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e.push(this.NominalDiameter),e.push(this.NominalLength),e}},REe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new REe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},MEe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new MEe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},DEe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new DEe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},CEe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new CEe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},AEe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new AEe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},OEe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.ConstraintGrade=n,this.ConstraintSource=s,this.CreatingActor=a,this.CreationTime=o,this.UserDefinedGrade=l,this.Benchmark=h,this.ValueSource=u,this.DataValue=c,this.ReferencePath=p}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++];return new OEe(e,t,n,s,a,o,l,h,u,c,p,d,f)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.ConstraintGrade),e.push(this.ConstraintSource),e.push(this.CreatingActor),e.push(this.CreationTime),e.push(this.UserDefinedGrade),e.push(this.Benchmark),e.push(this.ValueSource),e.push(this.DataValue),e.push(this.ReferencePath),e}},PEe=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.ProfileType=i,this.ProfileName=r,this.ParentProfile=n,this.Operator=s,this.Label=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new PEe(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.ProfileType),e.push(this.ProfileName),e.push(this.ParentProfile),e.push(this.Operator),e.push(this.Label),e}},NEe=class{constructor(e,t,i){this.expressID=e,this.type=t,this.Currency=i}static FromTape(e,t,i){let r=0,n=i[r++];return new NEe(e,t,n)}ToTape(){let e=[];return e.push(this.Currency),e}},LEe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new LEe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},FEe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new FEe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},HEe=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.Dimensions=i,this.UnitType=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new HEe(e,t,n,s)}ToTape(){let e=[];return e.push(this.Dimensions),e.push(this.UnitType),e}},UEe=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new UEe(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e}},BEe=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new BEe(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e}},kEe=class{constructor(e,t,i){this.expressID=e,this.type=t,this.PlacementRelTo=i}static FromTape(e,t,i){let r=0,n=i[r++];return new kEe(e,t,n)}ToTape(){let e=[];return e.push(this.PlacementRelTo),e}},GEe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.ConstraintGrade=n,this.ConstraintSource=s,this.CreatingActor=a,this.CreationTime=o,this.UserDefinedGrade=l,this.BenchmarkValues=h,this.LogicalAggregator=u,this.ObjectiveQualifier=c,this.UserDefinedQualifier=p}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++];return new GEe(e,t,n,s,a,o,l,h,u,c,p,d,f)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.ConstraintGrade),e.push(this.ConstraintSource),e.push(this.CreatingActor),e.push(this.CreationTime),e.push(this.UserDefinedGrade),e.push(this.BenchmarkValues),e.push(this.LogicalAggregator),e.push(this.ObjectiveQualifier),e.push(this.UserDefinedQualifier),e}},VEe=class{constructor(e,t,i,r,n,s,a,o,l){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.TheActor=o,this.PredefinedType=l}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++];return new VEe(e,t,n,s,a,o,l,h,u)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.TheActor),e.push(this.PredefinedType),e}},zEe=class{constructor(e,t,i){this.expressID=e,this.type=t,this.BasisCurve=i}static FromTape(e,t,i){let r=0,n=i[r++];return new zEe(e,t,n)}ToTape(){let e=[];return e.push(this.BasisCurve),e}},jEe=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.BasisCurve=i,this.Distance=r,this.SelfIntersect=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new jEe(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.BasisCurve),e.push(this.Distance),e.push(this.SelfIntersect),e}},WEe=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.BasisCurve=i,this.Distance=r,this.SelfIntersect=n,this.RefDirection=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new WEe(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.BasisCurve),e.push(this.Distance),e.push(this.SelfIntersect),e.push(this.RefDirection),e}},qEe=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.BasisCurve=i,this.OffsetValues=r,this.Tag=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new qEe(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.BasisCurve),e.push(this.OffsetValues),e.push(this.Tag),e}},YEe=class{constructor(e,t,i){this.expressID=e,this.type=t,this.CfsFaces=i}static FromTape(e,t,i){let r=0,n=i[r++];return new YEe(e,t,n)}ToTape(){let e=[];return e.push(this.CfsFaces),e}},XEe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new XEe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},$Ee=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new $Ee(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},KEe=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.Identification=i,this.Name=r,this.Description=n,this.Roles=s,this.Addresses=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new KEe(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.Identification),e.push(this.Name),e.push(this.Description),e.push(this.Roles),e.push(this.Addresses),e}},ZEe=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.RelatingOrganization=n,this.RelatedOrganizations=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new ZEe(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.RelatingOrganization),e.push(this.RelatedOrganizations),e}},JEe=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.LateralAxisDirection=i,this.VerticalAxisDirection=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new JEe(e,t,n,s)}ToTape(){let e=[];return e.push(this.LateralAxisDirection),e.push(this.VerticalAxisDirection),e}},QEe=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.EdgeStart=i,this.EdgeEnd=r,this.EdgeElement=n,this.Orientation=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new QEe(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.EdgeStart),e.push(this.EdgeEnd),e.push(this.EdgeElement),e.push(this.Orientation),e}},e1e=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.Segments=i,this.SelfIntersect=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new e1e(e,t,n,s)}ToTape(){let e=[];return e.push(this.Segments),e.push(this.SelfIntersect),e}},t1e=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new t1e(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},r1e=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new r1e(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},i1e=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.OwningUser=i,this.OwningApplication=r,this.State=n,this.ChangeAction=s,this.LastModifiedDate=a,this.LastModifyingUser=o,this.LastModifyingApplication=l,this.CreationDate=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new i1e(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.OwningUser),e.push(this.OwningApplication),e.push(this.State),e.push(this.ChangeAction),e.push(this.LastModifiedDate),e.push(this.LastModifyingUser),e.push(this.LastModifyingApplication),e.push(this.CreationDate),e}},n1e=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.ProfileType=i,this.ProfileName=r,this.Position=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new n1e(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.ProfileType),e.push(this.ProfileName),e.push(this.Position),e}},s1e=class{constructor(e,t,i){this.expressID=e,this.type=t,this.EdgeList=i}static FromTape(e,t,i){let r=0,n=i[r++];return new s1e(e,t,n)}ToTape(){let e=[];return e.push(this.EdgeList),e}},a1e=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.BasisSurface=i,this.ReferenceCurve=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new a1e(e,t,n,s)}ToTape(){let e=[];return e.push(this.BasisSurface),e.push(this.ReferenceCurve),e}},o1e=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.Identification=o,this.LifeCyclePhase=l,this.PredefinedType=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new o1e(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.Identification),e.push(this.LifeCyclePhase),e.push(this.PredefinedType),e}},l1e=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.OperationType=a,this.PanelPosition=o,this.FrameDepth=l,this.FrameThickness=h,this.ShapeAspectStyle=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new l1e(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.OperationType),e.push(this.PanelPosition),e.push(this.FrameDepth),e.push(this.FrameThickness),e.push(this.ShapeAspectStyle),e}},c1e=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.Identification=o,this.PredefinedType=l,this.Status=h,this.LongDescription=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new c1e(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.Identification),e.push(this.PredefinedType),e.push(this.Status),e.push(this.LongDescription),e}},u1e=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.Identification=i,this.FamilyName=r,this.GivenName=n,this.MiddleNames=s,this.PrefixTitles=a,this.SuffixTitles=o,this.Roles=l,this.Addresses=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new u1e(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.Identification),e.push(this.FamilyName),e.push(this.GivenName),e.push(this.MiddleNames),e.push(this.PrefixTitles),e.push(this.SuffixTitles),e.push(this.Roles),e.push(this.Addresses),e}},h1e=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.ThePerson=i,this.TheOrganization=r,this.Roles=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new h1e(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.ThePerson),e.push(this.TheOrganization),e.push(this.Roles),e}},p1e=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.HasQuantities=n,this.Discrimination=s,this.Quality=a,this.Usage=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new p1e(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.HasQuantities),e.push(this.Discrimination),e.push(this.Quality),e.push(this.Usage),e}},d1e=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.Name=i,this.Description=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new d1e(e,t,n,s)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e}},f1e=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.Unit=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new f1e(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.Unit),e}},m1e=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u,this.ConstructionType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new m1e(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e.push(this.ConstructionType),e}},g1e=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new g1e(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},v1e=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new v1e(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},y1e=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new y1e(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},T1e=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new T1e(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},E1e=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new E1e(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},b1e=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.RepeatS=i,this.RepeatT=r,this.Mode=n,this.TextureTransform=s,this.Parameter=a,this.Width=o,this.Height=l,this.ColourComponents=h,this.Pixel=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new b1e(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.RepeatS),e.push(this.RepeatT),e.push(this.Mode),e.push(this.TextureTransform),e.push(this.Parameter),e.push(this.Width),e.push(this.Height),e.push(this.ColourComponents),e.push(this.Pixel),e}},x1e=class{constructor(e,t,i){this.expressID=e,this.type=t,this.Location=i}static FromTape(e,t,i){let r=0,n=i[r++];return new x1e(e,t,n)}ToTape(){let e=[];return e.push(this.Location),e}},I1e=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.SizeInX=i,this.SizeInY=r,this.Placement=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new I1e(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.SizeInX),e.push(this.SizeInY),e.push(this.Placement),e}},_1e=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.SizeInX=i,this.SizeInY=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new _1e(e,t,n,s)}ToTape(){let e=[];return e.push(this.SizeInX),e.push(this.SizeInY),e}},S1e=class{constructor(e,t,i){this.expressID=e,this.type=t,this.Position=i}static FromTape(e,t,i){let r=0,n=i[r++];return new S1e(e,t,n)}ToTape(){let e=[];return e.push(this.Position),e}},w1e=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new w1e(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},R1e=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new R1e(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},M1e=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new M1e(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},D1e=class{constructor(e,t){this.expressID=e,this.type=t}static FromTape(e,t,i){return new D1e(e,t)}ToTape(){return[]}},C1e=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.BasisCurve=i,this.PointParameter=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new C1e(e,t,n,s)}ToTape(){let e=[];return e.push(this.BasisCurve),e.push(this.PointParameter),e}},A1e=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.BasisSurface=i,this.PointParameterU=r,this.PointParameterV=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new A1e(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.BasisSurface),e.push(this.PointParameterU),e.push(this.PointParameterV),e}},O1e=class{constructor(e,t,i){this.expressID=e,this.type=t,this.Polygon=i}static FromTape(e,t,i){let r=0,n=i[r++];return new O1e(e,t,n)}ToTape(){let e=[];return e.push(this.Polygon),e}},P1e=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.BaseSurface=i,this.AgreementFlag=r,this.Position=n,this.PolygonalBoundary=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new P1e(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.BaseSurface),e.push(this.AgreementFlag),e.push(this.Position),e.push(this.PolygonalBoundary),e}},N1e=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.Coordinates=i,this.Closed=r,this.Faces=n,this.PnIndex=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new N1e(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.Coordinates),e.push(this.Closed),e.push(this.Faces),e.push(this.PnIndex),e}},L1e=class{constructor(e,t,i){this.expressID=e,this.type=t,this.Points=i}static FromTape(e,t,i){let r=0,n=i[r++];return new L1e(e,t,n)}ToTape(){let e=[];return e.push(this.Points),e}},F1e=class{constructor(e,t,i,r,n,s,a,o,l){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++];return new F1e(e,t,n,s,a,o,l,h,u)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e}},H1e=class{constructor(e,t,i,r,n,s,a,o,l){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++];return new H1e(e,t,n,s,a,o,l,h,u)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e}},U1e=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.Purpose=i,this.Description=r,this.UserDefinedPurpose=n,this.InternalLocation=s,this.AddressLines=a,this.PostalBox=o,this.Town=l,this.Region=h,this.PostalCode=u,this.Country=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new U1e(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.Purpose),e.push(this.Description),e.push(this.UserDefinedPurpose),e.push(this.InternalLocation),e.push(this.AddressLines),e.push(this.PostalBox),e.push(this.Town),e.push(this.Region),e.push(this.PostalCode),e.push(this.Country),e}},B1e=class{constructor(e,t,i){this.expressID=e,this.type=t,this.Name=i}static FromTape(e,t,i){let r=0,n=i[r++];return new B1e(e,t,n)}ToTape(){let e=[];return e.push(this.Name),e}},k1e=class{constructor(e,t,i){this.expressID=e,this.type=t,this.Name=i}static FromTape(e,t,i){let r=0,n=i[r++];return new k1e(e,t,n)}ToTape(){let e=[];return e.push(this.Name),e}},G1e=class{constructor(e,t,i){this.expressID=e,this.type=t,this.Name=i}static FromTape(e,t,i){let r=0,n=i[r++];return new G1e(e,t,n)}ToTape(){let e=[];return e.push(this.Name),e}},V1e=class{constructor(e,t){this.expressID=e,this.type=t}static FromTape(e,t,i){return new V1e(e,t)}ToTape(){return[]}},z1e=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new z1e(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e}},j1e=class{constructor(e,t,i){this.expressID=e,this.type=t,this.Name=i}static FromTape(e,t,i){let r=0,n=i[r++];return new j1e(e,t,n)}ToTape(){let e=[];return e.push(this.Name),e}},W1e=class{constructor(e,t){this.expressID=e,this.type=t}static FromTape(e,t,i){return new W1e(e,t)}ToTape(){return[]}},q1e=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.AssignedItems=n,this.Identifier=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new q1e(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.AssignedItems),e.push(this.Identifier),e}},Y1e=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.AssignedItems=n,this.Identifier=s,this.LayerOn=a,this.LayerFrozen=o,this.LayerBlocked=l,this.LayerStyles=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new Y1e(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.AssignedItems),e.push(this.Identifier),e.push(this.LayerOn),e.push(this.LayerFrozen),e.push(this.LayerBlocked),e.push(this.LayerStyles),e}},X1e=class{constructor(e,t,i){this.expressID=e,this.type=t,this.Name=i}static FromTape(e,t,i){let r=0,n=i[r++];return new X1e(e,t,n)}ToTape(){let e=[];return e.push(this.Name),e}},$1e=class{constructor(e,t,i){this.expressID=e,this.type=t,this.Styles=i}static FromTape(e,t,i){let r=0,n=i[r++];return new $1e(e,t,n)}ToTape(){let e=[];return e.push(this.Styles),e}},K1e=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.Identification=o,this.LongDescription=l,this.PredefinedType=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new K1e(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.Identification),e.push(this.LongDescription),e.push(this.PredefinedType),e}},Z1e=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.Identification=l,this.LongDescription=h,this.ProcessType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new Z1e(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.Identification),e.push(this.LongDescription),e.push(this.ProcessType),e.push(this.PredefinedType),e}},J1e=class{constructor(e,t,i,r,n,s,a,o,l){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.Identification=o,this.LongDescription=l}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++];return new J1e(e,t,n,s,a,o,l,h,u)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.Identification),e.push(this.LongDescription),e}},Q1e=class{constructor(e,t,i,r,n,s,a,o,l){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++];return new Q1e(e,t,n,s,a,o,l,h,u)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e}},ebe=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.Representations=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new ebe(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.Representations),e}},tbe=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.Representations=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new tbe(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.Representations),e}},rbe=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.ProfileType=i,this.ProfileName=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new rbe(e,t,n,s)}ToTape(){let e=[];return e.push(this.ProfileType),e.push(this.ProfileName),e}},ibe=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.Properties=n,this.ProfileDefinition=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new ibe(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.Properties),e.push(this.ProfileDefinition),e}},nbe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.LongName=o,this.Phase=l,this.RepresentationContexts=h,this.UnitsInContext=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new nbe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.LongName),e.push(this.Phase),e.push(this.RepresentationContexts),e.push(this.UnitsInContext),e}},sbe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.LongName=o,this.Phase=l,this.RepresentationContexts=h,this.UnitsInContext=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new sbe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.LongName),e.push(this.Phase),e.push(this.RepresentationContexts),e.push(this.UnitsInContext),e}},abe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.Identification=o,this.PredefinedType=l,this.Status=h,this.LongDescription=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new abe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.Identification),e.push(this.PredefinedType),e.push(this.Status),e.push(this.LongDescription),e}},obe=class{constructor(e,t,i,r,n,s,a,o,l){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.GeodeticDatum=n,this.VerticalDatum=s,this.MapProjection=a,this.MapZone=o,this.MapUnit=l}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++];return new obe(e,t,n,s,a,o,l,h,u)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.GeodeticDatum),e.push(this.VerticalDatum),e.push(this.MapProjection),e.push(this.MapZone),e.push(this.MapUnit),e}},lbe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new lbe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},cbe=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.Name=i,this.Description=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new cbe(e,t,n,s)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e}},ube=class{constructor(e,t){this.expressID=e,this.type=t}static FromTape(e,t,i){return new ube(e,t)}ToTape(){return[]}},hbe=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.UpperBoundValue=n,this.LowerBoundValue=s,this.Unit=a,this.SetPointValue=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new hbe(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.UpperBoundValue),e.push(this.LowerBoundValue),e.push(this.Unit),e.push(this.SetPointValue),e}},pbe=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new pbe(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e}},dbe=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.DependingProperty=n,this.DependantProperty=s,this.Expression=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new dbe(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.DependingProperty),e.push(this.DependantProperty),e.push(this.Expression),e}},fbe=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.EnumerationValues=n,this.EnumerationReference=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new fbe(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.EnumerationValues),e.push(this.EnumerationReference),e}},mbe=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.Name=i,this.EnumerationValues=r,this.Unit=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new mbe(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.Name),e.push(this.EnumerationValues),e.push(this.Unit),e}},gbe=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.ListValues=n,this.Unit=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new gbe(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.ListValues),e.push(this.Unit),e}},vbe=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.UsageName=n,this.PropertyReference=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new vbe(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.UsageName),e.push(this.PropertyReference),e}},ybe=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.HasProperties=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new ybe(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.HasProperties),e}},Tbe=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new Tbe(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e}},Ebe=class{constructor(e,t,i,r,n,s,a,o,l){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.TemplateType=a,this.ApplicableEntity=o,this.HasPropertyTemplates=l}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++];return new Ebe(e,t,n,s,a,o,l,h,u)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.TemplateType),e.push(this.ApplicableEntity),e.push(this.HasPropertyTemplates),e}},bbe=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.NominalValue=n,this.Unit=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new bbe(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.NominalValue),e.push(this.Unit),e}},xbe=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.DefiningValues=n,this.DefinedValues=s,this.Expression=a,this.DefiningUnit=o,this.DefinedUnit=l,this.CurveInterpolation=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new xbe(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.DefiningValues),e.push(this.DefinedValues),e.push(this.Expression),e.push(this.DefiningUnit),e.push(this.DefinedUnit),e.push(this.CurveInterpolation),e}},Ibe=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new Ibe(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e}},_be=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new _be(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e}},Sbe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Sbe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},wbe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new wbe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},Rbe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new Rbe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},Mbe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new Mbe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},Dbe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.ProxyType=h,this.Tag=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Dbe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.ProxyType),e.push(this.Tag),e}},Cbe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Cbe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},Abe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new Abe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},Obe=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.Unit=n,this.AreaValue=s,this.Formula=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new Obe(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.Unit),e.push(this.AreaValue),e.push(this.Formula),e}},Pbe=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.Unit=n,this.CountValue=s,this.Formula=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new Pbe(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.Unit),e.push(this.CountValue),e.push(this.Formula),e}},Nbe=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.Unit=n,this.LengthValue=s,this.Formula=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new Nbe(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.Unit),e.push(this.LengthValue),e.push(this.Formula),e}},Lbe=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new Lbe(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e}},Fbe=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.Unit=n,this.TimeValue=s,this.Formula=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new Fbe(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.Unit),e.push(this.TimeValue),e.push(this.Formula),e}},Hbe=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.Unit=n,this.VolumeValue=s,this.Formula=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new Hbe(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.Unit),e.push(this.VolumeValue),e.push(this.Formula),e}},Ube=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.Unit=n,this.WeightValue=s,this.Formula=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new Ube(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.Unit),e.push(this.WeightValue),e.push(this.Formula),e}},Bbe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Bbe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},kbe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new kbe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},Gbe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Gbe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},Vbe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Vbe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},zbe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new zbe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},jbe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new jbe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},Wbe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.Degree=i,this.ControlPointsList=r,this.CurveForm=n,this.ClosedCurve=s,this.SelfIntersect=a,this.KnotMultiplicities=o,this.Knots=l,this.KnotSpec=h,this.WeightsData=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Wbe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.Degree),e.push(this.ControlPointsList),e.push(this.CurveForm),e.push(this.ClosedCurve),e.push(this.SelfIntersect),e.push(this.KnotMultiplicities),e.push(this.Knots),e.push(this.KnotSpec),e.push(this.WeightsData),e}},qbe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d,f){this.expressID=e,this.type=t,this.UDegree=i,this.VDegree=r,this.ControlPointsList=n,this.SurfaceForm=s,this.UClosed=a,this.VClosed=o,this.SelfIntersect=l,this.UMultiplicities=h,this.VMultiplicities=u,this.UKnots=c,this.VKnots=p,this.KnotSpec=d,this.WeightsData=f}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++],g=i[r++];return new qbe(e,t,n,s,a,o,l,h,u,c,p,d,f,m,g)}ToTape(){let e=[];return e.push(this.UDegree),e.push(this.VDegree),e.push(this.ControlPointsList),e.push(this.SurfaceForm),e.push(this.UClosed),e.push(this.VClosed),e.push(this.SelfIntersect),e.push(this.UMultiplicities),e.push(this.VMultiplicities),e.push(this.UKnots),e.push(this.VKnots),e.push(this.KnotSpec),e.push(this.WeightsData),e}},Ybe=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.ProfileType=i,this.ProfileName=r,this.Position=n,this.XDim=s,this.YDim=a,this.WallThickness=o,this.InnerFilletRadius=l,this.OuterFilletRadius=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new Ybe(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.ProfileType),e.push(this.ProfileName),e.push(this.Position),e.push(this.XDim),e.push(this.YDim),e.push(this.WallThickness),e.push(this.InnerFilletRadius),e.push(this.OuterFilletRadius),e}},Xbe=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.ProfileType=i,this.ProfileName=r,this.Position=n,this.XDim=s,this.YDim=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new Xbe(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.ProfileType),e.push(this.ProfileName),e.push(this.Position),e.push(this.XDim),e.push(this.YDim),e}},$be=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.Position=i,this.XLength=r,this.YLength=n,this.Height=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new $be(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.Position),e.push(this.XLength),e.push(this.YLength),e.push(this.Height),e}},Kbe=class{constructor(e,t,i,r,n,s,a,o,l){this.expressID=e,this.type=t,this.BasisSurface=i,this.U1=r,this.V1=n,this.U2=s,this.V2=a,this.Usense=o,this.Vsense=l}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++];return new Kbe(e,t,n,s,a,o,l,h,u)}ToTape(){let e=[];return e.push(this.BasisSurface),e.push(this.U1),e.push(this.V1),e.push(this.U2),e.push(this.V2),e.push(this.Usense),e.push(this.Vsense),e}},Zbe=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.RecurrenceType=i,this.DayComponent=r,this.WeekdayComponent=n,this.MonthComponent=s,this.Position=a,this.Interval=o,this.Occurrences=l,this.TimePeriods=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new Zbe(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.RecurrenceType),e.push(this.DayComponent),e.push(this.WeekdayComponent),e.push(this.MonthComponent),e.push(this.Position),e.push(this.Interval),e.push(this.Occurrences),e.push(this.TimePeriods),e}},Jbe=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.TypeIdentifier=i,this.AttributeIdentifier=r,this.InstanceName=n,this.ListPositions=s,this.InnerReference=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new Jbe(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.TypeIdentifier),e.push(this.AttributeIdentifier),e.push(this.InstanceName),e.push(this.ListPositions),e.push(this.InnerReference),e}},Qbe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.PredefinedType=h,this.RestartDistance=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Qbe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.PredefinedType),e.push(this.RestartDistance),e}},exe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.StartTime=n,this.EndTime=s,this.TimeSeriesDataType=a,this.DataOrigin=o,this.UserDefinedDataOrigin=l,this.Unit=h,this.TimeStep=u,this.Values=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new exe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.StartTime),e.push(this.EndTime),e.push(this.TimeSeriesDataType),e.push(this.DataOrigin),e.push(this.UserDefinedDataOrigin),e.push(this.Unit),e.push(this.TimeStep),e.push(this.Values),e}},txe=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.TotalCrossSectionArea=i,this.SteelGrade=r,this.BarSurface=n,this.EffectiveDepth=s,this.NominalBarDiameter=a,this.BarCount=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new txe(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.TotalCrossSectionArea),e.push(this.SteelGrade),e.push(this.BarSurface),e.push(this.EffectiveDepth),e.push(this.NominalBarDiameter),e.push(this.BarCount),e}},rxe=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.DefinitionType=a,this.ReinforcementSectionDefinitions=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new rxe(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.DefinitionType),e.push(this.ReinforcementSectionDefinitions),e}},ixe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d,f,m){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.SteelGrade=u,this.NominalDiameter=c,this.CrossSectionArea=p,this.BarLength=d,this.PredefinedType=f,this.BarSurface=m}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++],g=i[r++],y=i[r++];return new ixe(e,t,n,s,a,o,l,h,u,c,p,d,f,m,g,y)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.SteelGrade),e.push(this.NominalDiameter),e.push(this.CrossSectionArea),e.push(this.BarLength),e.push(this.PredefinedType),e.push(this.BarSurface),e}},nxe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d,f,m,g,y){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c,this.NominalDiameter=p,this.CrossSectionArea=d,this.BarLength=f,this.BarSurface=m,this.BendingShapeCode=g,this.BendingParameters=y}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++],g=i[r++],y=i[r++],v=i[r++],T=i[r++];return new nxe(e,t,n,s,a,o,l,h,u,c,p,d,f,m,g,y,v,T)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e.push(this.NominalDiameter),e.push(this.CrossSectionArea),e.push(this.BarLength),e.push(this.BarSurface),e.push(this.BendingShapeCode),e.push(this.BendingParameters),e}},sxe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.SteelGrade=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new sxe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.SteelGrade),e}},axe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new axe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e}},oxe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d,f,m,g,y,v,T){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.SteelGrade=u,this.MeshLength=c,this.MeshWidth=p,this.LongitudinalBarNominalDiameter=d,this.TransverseBarNominalDiameter=f,this.LongitudinalBarCrossSectionArea=m,this.TransverseBarCrossSectionArea=g,this.LongitudinalBarSpacing=y,this.TransverseBarSpacing=v,this.PredefinedType=T}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++],g=i[r++],y=i[r++],v=i[r++],T=i[r++],x=i[r++],b=i[r++];return new oxe(e,t,n,s,a,o,l,h,u,c,p,d,f,m,g,y,v,T,x,b)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.SteelGrade),e.push(this.MeshLength),e.push(this.MeshWidth),e.push(this.LongitudinalBarNominalDiameter),e.push(this.TransverseBarNominalDiameter),e.push(this.LongitudinalBarCrossSectionArea),e.push(this.TransverseBarCrossSectionArea),e.push(this.LongitudinalBarSpacing),e.push(this.TransverseBarSpacing),e.push(this.PredefinedType),e}},lxe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d,f,m,g,y,v,T,x,b){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c,this.MeshLength=p,this.MeshWidth=d,this.LongitudinalBarNominalDiameter=f,this.TransverseBarNominalDiameter=m,this.LongitudinalBarCrossSectionArea=g,this.TransverseBarCrossSectionArea=y,this.LongitudinalBarSpacing=v,this.TransverseBarSpacing=T,this.BendingShapeCode=x,this.BendingParameters=b}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++],g=i[r++],y=i[r++],v=i[r++],T=i[r++],x=i[r++],b=i[r++],_=i[r++],E=i[r++];return new lxe(e,t,n,s,a,o,l,h,u,c,p,d,f,m,g,y,v,T,x,b,_,E)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e.push(this.MeshLength),e.push(this.MeshWidth),e.push(this.LongitudinalBarNominalDiameter),e.push(this.TransverseBarNominalDiameter),e.push(this.LongitudinalBarCrossSectionArea),e.push(this.TransverseBarCrossSectionArea),e.push(this.LongitudinalBarSpacing),e.push(this.TransverseBarSpacing),e.push(this.BendingShapeCode),e.push(this.BendingParameters),e}},cxe=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.RelatingObject=a,this.RelatedObjects=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new cxe(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.RelatingObject),e.push(this.RelatedObjects),e}},uxe=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.RelatedObjects=a,this.RelatedObjectsType=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new uxe(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.RelatedObjects),e.push(this.RelatedObjectsType),e}},hxe=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.RelatedObjects=a,this.RelatedObjectsType=o,this.RelatingActor=l,this.ActingRole=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new hxe(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.RelatedObjects),e.push(this.RelatedObjectsType),e.push(this.RelatingActor),e.push(this.ActingRole),e}},pxe=class{constructor(e,t,i,r,n,s,a,o,l){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.RelatedObjects=a,this.RelatedObjectsType=o,this.RelatingControl=l}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++];return new pxe(e,t,n,s,a,o,l,h,u)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.RelatedObjects),e.push(this.RelatedObjectsType),e.push(this.RelatingControl),e}},dxe=class{constructor(e,t,i,r,n,s,a,o,l){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.RelatedObjects=a,this.RelatedObjectsType=o,this.RelatingGroup=l}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++];return new dxe(e,t,n,s,a,o,l,h,u)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.RelatedObjects),e.push(this.RelatedObjectsType),e.push(this.RelatingGroup),e}},fxe=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.RelatedObjects=a,this.RelatedObjectsType=o,this.RelatingGroup=l,this.Factor=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new fxe(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.RelatedObjects),e.push(this.RelatedObjectsType),e.push(this.RelatingGroup),e.push(this.Factor),e}},mxe=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.RelatedObjects=a,this.RelatedObjectsType=o,this.RelatingProcess=l,this.QuantityInProcess=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new mxe(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.RelatedObjects),e.push(this.RelatedObjectsType),e.push(this.RelatingProcess),e.push(this.QuantityInProcess),e}},gxe=class{constructor(e,t,i,r,n,s,a,o,l){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.RelatedObjects=a,this.RelatedObjectsType=o,this.RelatingProduct=l}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++];return new gxe(e,t,n,s,a,o,l,h,u)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.RelatedObjects),e.push(this.RelatedObjectsType),e.push(this.RelatingProduct),e}},vxe=class{constructor(e,t,i,r,n,s,a,o,l){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.RelatedObjects=a,this.RelatedObjectsType=o,this.RelatingResource=l}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++];return new vxe(e,t,n,s,a,o,l,h,u)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.RelatedObjects),e.push(this.RelatedObjectsType),e.push(this.RelatingResource),e}},yxe=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.RelatedObjects=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new yxe(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.RelatedObjects),e}},Txe=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.RelatedObjects=a,this.RelatingApproval=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new Txe(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.RelatedObjects),e.push(this.RelatingApproval),e}},Exe=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.RelatedObjects=a,this.RelatingClassification=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new Exe(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.RelatedObjects),e.push(this.RelatingClassification),e}},bxe=class{constructor(e,t,i,r,n,s,a,o,l){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.RelatedObjects=a,this.Intent=o,this.RelatingConstraint=l}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++];return new bxe(e,t,n,s,a,o,l,h,u)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.RelatedObjects),e.push(this.Intent),e.push(this.RelatingConstraint),e}},xxe=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.RelatedObjects=a,this.RelatingDocument=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new xxe(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.RelatedObjects),e.push(this.RelatingDocument),e}},Ixe=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.RelatedObjects=a,this.RelatingLibrary=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new Ixe(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.RelatedObjects),e.push(this.RelatingLibrary),e}},_xe=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.RelatedObjects=a,this.RelatingMaterial=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new _xe(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.RelatedObjects),e.push(this.RelatingMaterial),e}},Sxe=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new Sxe(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e}},wxe=class{constructor(e,t,i,r,n,s,a,o,l){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ConnectionGeometry=a,this.RelatingElement=o,this.RelatedElement=l}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++];return new wxe(e,t,n,s,a,o,l,h,u)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ConnectionGeometry),e.push(this.RelatingElement),e.push(this.RelatedElement),e}},Rxe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ConnectionGeometry=a,this.RelatingElement=o,this.RelatedElement=l,this.RelatingPriorities=h,this.RelatedPriorities=u,this.RelatedConnectionType=c,this.RelatingConnectionType=p}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++];return new Rxe(e,t,n,s,a,o,l,h,u,c,p,d,f)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ConnectionGeometry),e.push(this.RelatingElement),e.push(this.RelatedElement),e.push(this.RelatingPriorities),e.push(this.RelatedPriorities),e.push(this.RelatedConnectionType),e.push(this.RelatingConnectionType),e}},Mxe=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.RelatingPort=a,this.RelatedElement=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new Mxe(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.RelatingPort),e.push(this.RelatedElement),e}},Dxe=class{constructor(e,t,i,r,n,s,a,o,l){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.RelatingPort=a,this.RelatedPort=o,this.RealizingElement=l}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++];return new Dxe(e,t,n,s,a,o,l,h,u)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.RelatingPort),e.push(this.RelatedPort),e.push(this.RealizingElement),e}},Cxe=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.RelatingElement=a,this.RelatedStructuralActivity=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new Cxe(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.RelatingElement),e.push(this.RelatedStructuralActivity),e}},Axe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.RelatingStructuralMember=a,this.RelatedStructuralConnection=o,this.AppliedCondition=l,this.AdditionalConditions=h,this.SupportedLength=u,this.ConditionCoordinateSystem=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new Axe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.RelatingStructuralMember),e.push(this.RelatedStructuralConnection),e.push(this.AppliedCondition),e.push(this.AdditionalConditions),e.push(this.SupportedLength),e.push(this.ConditionCoordinateSystem),e}},Oxe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.RelatingStructuralMember=a,this.RelatedStructuralConnection=o,this.AppliedCondition=l,this.AdditionalConditions=h,this.SupportedLength=u,this.ConditionCoordinateSystem=c,this.ConnectionConstraint=p}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++];return new Oxe(e,t,n,s,a,o,l,h,u,c,p,d,f)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.RelatingStructuralMember),e.push(this.RelatedStructuralConnection),e.push(this.AppliedCondition),e.push(this.AdditionalConditions),e.push(this.SupportedLength),e.push(this.ConditionCoordinateSystem),e.push(this.ConnectionConstraint),e}},Pxe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ConnectionGeometry=a,this.RelatingElement=o,this.RelatedElement=l,this.RealizingElements=h,this.ConnectionType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Pxe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ConnectionGeometry),e.push(this.RelatingElement),e.push(this.RelatedElement),e.push(this.RealizingElements),e.push(this.ConnectionType),e}},Nxe=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.RelatedElements=a,this.RelatingStructure=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new Nxe(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.RelatedElements),e.push(this.RelatingStructure),e}},Lxe=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.RelatingBuildingElement=a,this.RelatedCoverings=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new Lxe(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.RelatingBuildingElement),e.push(this.RelatedCoverings),e}},Fxe=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.RelatingSpace=a,this.RelatedCoverings=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new Fxe(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.RelatingSpace),e.push(this.RelatedCoverings),e}},Hxe=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.RelatingContext=a,this.RelatedDefinitions=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new Hxe(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.RelatingContext),e.push(this.RelatedDefinitions),e}},Uxe=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new Uxe(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e}},Bxe=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new Bxe(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e}},kxe=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.RelatedObjects=a,this.RelatingObject=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new kxe(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.RelatedObjects),e.push(this.RelatingObject),e}},Gxe=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.RelatedObjects=a,this.RelatingPropertyDefinition=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new Gxe(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.RelatedObjects),e.push(this.RelatingPropertyDefinition),e}},Vxe=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.RelatedPropertySets=a,this.RelatingTemplate=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new Vxe(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.RelatedPropertySets),e.push(this.RelatingTemplate),e}},zxe=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.RelatedObjects=a,this.RelatingType=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new zxe(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.RelatedObjects),e.push(this.RelatingType),e}},jxe=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.RelatingOpeningElement=a,this.RelatedBuildingElement=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new jxe(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.RelatingOpeningElement),e.push(this.RelatedBuildingElement),e}},Wxe=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.RelatedControlElements=a,this.RelatingFlowElement=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new Wxe(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.RelatedControlElements),e.push(this.RelatingFlowElement),e}},qxe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.RelatingElement=a,this.RelatedElement=o,this.InterferenceGeometry=l,this.InterferenceType=h,this.ImpliedOrder=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new qxe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.RelatingElement),e.push(this.RelatedElement),e.push(this.InterferenceGeometry),e.push(this.InterferenceType),e.push(this.ImpliedOrder),e}},Yxe=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.RelatingObject=a,this.RelatedObjects=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new Yxe(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.RelatingObject),e.push(this.RelatedObjects),e}},Xxe=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.RelatingPositioningElement=a,this.RelatedProducts=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new Xxe(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.RelatingPositioningElement),e.push(this.RelatedProducts),e}},$xe=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.RelatingElement=a,this.RelatedFeatureElement=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new $xe(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.RelatingElement),e.push(this.RelatedFeatureElement),e}},Kxe=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.RelatedElements=a,this.RelatingStructure=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new Kxe(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.RelatedElements),e.push(this.RelatingStructure),e}},Zxe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.RelatingProcess=a,this.RelatedProcess=o,this.TimeLag=l,this.SequenceType=h,this.UserDefinedSequenceType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Zxe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.RelatingProcess),e.push(this.RelatedProcess),e.push(this.TimeLag),e.push(this.SequenceType),e.push(this.UserDefinedSequenceType),e}},Jxe=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.RelatingSystem=a,this.RelatedBuildings=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new Jxe(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.RelatingSystem),e.push(this.RelatedBuildings),e}},Qxe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.RelatingSpace=a,this.RelatedBuildingElement=o,this.ConnectionGeometry=l,this.PhysicalOrVirtualBoundary=h,this.InternalOrExternalBoundary=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Qxe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.RelatingSpace),e.push(this.RelatedBuildingElement),e.push(this.ConnectionGeometry),e.push(this.PhysicalOrVirtualBoundary),e.push(this.InternalOrExternalBoundary),e}},eIe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.RelatingSpace=a,this.RelatedBuildingElement=o,this.ConnectionGeometry=l,this.PhysicalOrVirtualBoundary=h,this.InternalOrExternalBoundary=u,this.ParentBoundary=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new eIe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.RelatingSpace),e.push(this.RelatedBuildingElement),e.push(this.ConnectionGeometry),e.push(this.PhysicalOrVirtualBoundary),e.push(this.InternalOrExternalBoundary),e.push(this.ParentBoundary),e}},tIe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.RelatingSpace=a,this.RelatedBuildingElement=o,this.ConnectionGeometry=l,this.PhysicalOrVirtualBoundary=h,this.InternalOrExternalBoundary=u,this.ParentBoundary=c,this.CorrespondingBoundary=p}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++];return new tIe(e,t,n,s,a,o,l,h,u,c,p,d,f)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.RelatingSpace),e.push(this.RelatedBuildingElement),e.push(this.ConnectionGeometry),e.push(this.PhysicalOrVirtualBoundary),e.push(this.InternalOrExternalBoundary),e.push(this.ParentBoundary),e.push(this.CorrespondingBoundary),e}},rIe=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.RelatingBuildingElement=a,this.RelatedOpeningElement=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new rIe(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.RelatingBuildingElement),e.push(this.RelatedOpeningElement),e}},iIe=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new iIe(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e}},nIe=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.Transition=i,this.SameSense=r,this.ParentCurve=n,this.ParamLength=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new nIe(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.Transition),e.push(this.SameSense),e.push(this.ParentCurve),e.push(this.ParamLength),e}},sIe=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.ContextOfItems=i,this.RepresentationIdentifier=r,this.RepresentationType=n,this.Items=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new sIe(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.ContextOfItems),e.push(this.RepresentationIdentifier),e.push(this.RepresentationType),e.push(this.Items),e}},aIe=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.ContextIdentifier=i,this.ContextType=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new aIe(e,t,n,s)}ToTape(){let e=[];return e.push(this.ContextIdentifier),e.push(this.ContextType),e}},oIe=class{constructor(e,t){this.expressID=e,this.type=t}static FromTape(e,t,i){return new oIe(e,t)}ToTape(){return[]}},lIe=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.MappingOrigin=i,this.MappedRepresentation=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new lIe(e,t,n,s)}ToTape(){let e=[];return e.push(this.MappingOrigin),e.push(this.MappedRepresentation),e}},cIe=class{constructor(e,t,i,r,n,s,a,o,l){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.Identification=o,this.LongDescription=l}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++];return new cIe(e,t,n,s,a,o,l,h,u)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.Identification),e.push(this.LongDescription),e}},uIe=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.RelatedResourceObjects=n,this.RelatingApproval=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new uIe(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.RelatedResourceObjects),e.push(this.RelatingApproval),e}},hIe=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.RelatingConstraint=n,this.RelatedResourceObjects=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new hIe(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.RelatingConstraint),e.push(this.RelatedResourceObjects),e}},pIe=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.Name=i,this.Description=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new pIe(e,t,n,s)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e}},dIe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d,f,m,g,y,v,T){this.expressID=e,this.type=t,this.Name=i,this.DataOrigin=r,this.UserDefinedDataOrigin=n,this.ScheduleWork=s,this.ScheduleUsage=a,this.ScheduleStart=o,this.ScheduleFinish=l,this.ScheduleContour=h,this.LevelingDelay=u,this.IsOverAllocated=c,this.StatusTime=p,this.ActualWork=d,this.ActualUsage=f,this.ActualStart=m,this.ActualFinish=g,this.RemainingWork=y,this.RemainingUsage=v,this.Completion=T}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++],g=i[r++],y=i[r++],v=i[r++],T=i[r++],x=i[r++],b=i[r++];return new dIe(e,t,n,s,a,o,l,h,u,c,p,d,f,m,g,y,v,T,x,b)}ToTape(){let e=[];return e.push(this.Name),e.push(this.DataOrigin),e.push(this.UserDefinedDataOrigin),e.push(this.ScheduleWork),e.push(this.ScheduleUsage),e.push(this.ScheduleStart),e.push(this.ScheduleFinish),e.push(this.ScheduleContour),e.push(this.LevelingDelay),e.push(this.IsOverAllocated),e.push(this.StatusTime),e.push(this.ActualWork),e.push(this.ActualUsage),e.push(this.ActualStart),e.push(this.ActualFinish),e.push(this.RemainingWork),e.push(this.RemainingUsage),e.push(this.Completion),e}},fIe=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.SweptArea=i,this.Position=r,this.Axis=n,this.Angle=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new fIe(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.SweptArea),e.push(this.Position),e.push(this.Axis),e.push(this.Angle),e}},mIe=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.SweptArea=i,this.Position=r,this.Axis=n,this.Angle=s,this.EndSweptArea=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new mIe(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.SweptArea),e.push(this.Position),e.push(this.Axis),e.push(this.Angle),e.push(this.EndSweptArea),e}},gIe=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.Position=i,this.Height=r,this.BottomRadius=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new gIe(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.Position),e.push(this.Height),e.push(this.BottomRadius),e}},vIe=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.Position=i,this.Height=r,this.Radius=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new vIe(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.Position),e.push(this.Height),e.push(this.Radius),e}},yIe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new yIe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},TIe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new TIe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},EIe=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new EIe(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e}},bIe=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.ProfileType=i,this.ProfileName=r,this.Position=n,this.XDim=s,this.YDim=a,this.RoundingRadius=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new bIe(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.ProfileType),e.push(this.ProfileName),e.push(this.Position),e.push(this.XDim),e.push(this.YDim),e.push(this.RoundingRadius),e}},xIe=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.Dimensions=i,this.UnitType=r,this.Prefix=n,this.Name=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new xIe(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.Dimensions),e.push(this.UnitType),e.push(this.Prefix),e.push(this.Name),e}},IIe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new IIe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},_Ie=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new _Ie(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},SIe=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.Name=i,this.DataOrigin=r,this.UserDefinedDataOrigin=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new SIe(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.Name),e.push(this.DataOrigin),e.push(this.UserDefinedDataOrigin),e}},wIe=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.Curve3D=i,this.AssociatedGeometry=r,this.MasterRepresentation=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new wIe(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.Curve3D),e.push(this.AssociatedGeometry),e.push(this.MasterRepresentation),e}},RIe=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.SectionType=i,this.StartProfile=r,this.EndProfile=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new RIe(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.SectionType),e.push(this.StartProfile),e.push(this.EndProfile),e}},MIe=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.LongitudinalStartPosition=i,this.LongitudinalEndPosition=r,this.TransversePosition=n,this.ReinforcementRole=s,this.SectionDefinition=a,this.CrossSectionReinforcementDefinitions=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new MIe(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.LongitudinalStartPosition),e.push(this.LongitudinalEndPosition),e.push(this.TransversePosition),e.push(this.ReinforcementRole),e.push(this.SectionDefinition),e.push(this.CrossSectionReinforcementDefinitions),e}},DIe=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.Directrix=i,this.CrossSections=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new DIe(e,t,n,s)}ToTape(){let e=[];return e.push(this.Directrix),e.push(this.CrossSections),e}},CIe=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.Directrix=i,this.CrossSections=r,this.CrossSectionPositions=n,this.FixedAxisVertical=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new CIe(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.Directrix),e.push(this.CrossSections),e.push(this.CrossSectionPositions),e.push(this.FixedAxisVertical),e}},AIe=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.SpineCurve=i,this.CrossSections=r,this.CrossSectionPositions=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new AIe(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.SpineCurve),e.push(this.CrossSections),e.push(this.CrossSectionPositions),e}},OIe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new OIe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},PIe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new PIe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},NIe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new NIe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},LIe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new LIe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},FIe=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.ShapeRepresentations=i,this.Name=r,this.Description=n,this.ProductDefinitional=s,this.PartOfProductDefinitionShape=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new FIe(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.ShapeRepresentations),e.push(this.Name),e.push(this.Description),e.push(this.ProductDefinitional),e.push(this.PartOfProductDefinitionShape),e}},HIe=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.ContextOfItems=i,this.RepresentationIdentifier=r,this.RepresentationType=n,this.Items=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new HIe(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.ContextOfItems),e.push(this.RepresentationIdentifier),e.push(this.RepresentationType),e.push(this.Items),e}},UIe=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.ContextOfItems=i,this.RepresentationIdentifier=r,this.RepresentationType=n,this.Items=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new UIe(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.ContextOfItems),e.push(this.RepresentationIdentifier),e.push(this.RepresentationType),e.push(this.Items),e}},BIe=class{constructor(e,t,i){this.expressID=e,this.type=t,this.SbsmBoundary=i}static FromTape(e,t,i){let r=0,n=i[r++];return new BIe(e,t,n)}ToTape(){let e=[];return e.push(this.SbsmBoundary),e}},kIe=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.Name=i,this.Description=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new kIe(e,t,n,s)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e}},GIe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.TemplateType=a,this.PrimaryMeasureType=o,this.SecondaryMeasureType=l,this.Enumerators=h,this.PrimaryUnit=u,this.SecondaryUnit=c,this.Expression=p,this.AccessState=d}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++];return new GIe(e,t,n,s,a,o,l,h,u,c,p,d,f,m)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.TemplateType),e.push(this.PrimaryMeasureType),e.push(this.SecondaryMeasureType),e.push(this.Enumerators),e.push(this.PrimaryUnit),e.push(this.SecondaryUnit),e.push(this.Expression),e.push(this.AccessState),e}},VIe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d,f,m){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.LongName=h,this.CompositionType=u,this.RefLatitude=c,this.RefLongitude=p,this.RefElevation=d,this.LandTitleNumber=f,this.SiteAddress=m}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++],g=i[r++],y=i[r++];return new VIe(e,t,n,s,a,o,l,h,u,c,p,d,f,m,g,y)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.LongName),e.push(this.CompositionType),e.push(this.RefLatitude),e.push(this.RefLongitude),e.push(this.RefElevation),e.push(this.LandTitleNumber),e.push(this.SiteAddress),e}},zIe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new zIe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},jIe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new jIe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},WIe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new WIe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},qIe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new qIe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},YIe=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.Name=i,this.SlippageX=r,this.SlippageY=n,this.SlippageZ=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new YIe(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.Name),e.push(this.SlippageX),e.push(this.SlippageY),e.push(this.SlippageZ),e}},XIe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new XIe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},$Ie=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new $Ie(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},KIe=class{constructor(e,t){this.expressID=e,this.type=t}static FromTape(e,t,i){return new KIe(e,t)}ToTape(){return[]}},ZIe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.LongName=h,this.CompositionType=u,this.PredefinedType=c,this.ElevationWithFlooring=p}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++];return new ZIe(e,t,n,s,a,o,l,h,u,c,p,d,f)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.LongName),e.push(this.CompositionType),e.push(this.PredefinedType),e.push(this.ElevationWithFlooring),e}},JIe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new JIe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},QIe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new QIe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},e_e=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c,this.LongName=p}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++];return new e_e(e,t,n,s,a,o,l,h,u,c,p,d,f)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e.push(this.LongName),e}},t_e=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.LongName=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new t_e(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.LongName),e}},r_e=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new r_e(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e}},i_e=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.LongName=h,this.CompositionType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new i_e(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.LongName),e.push(this.CompositionType),e}},n_e=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new n_e(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e}},s_e=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.LongName=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new s_e(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.LongName),e.push(this.PredefinedType),e}},a_e=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c,this.LongName=p}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++];return new a_e(e,t,n,s,a,o,l,h,u,c,p,d,f)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e.push(this.LongName),e}},o_e=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.Position=i,this.Radius=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new o_e(e,t,n,s)}ToTape(){let e=[];return e.push(this.Position),e.push(this.Radius),e}},l_e=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.Position=i,this.Radius=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new l_e(e,t,n,s)}ToTape(){let e=[];return e.push(this.Position),e.push(this.Radius),e}},c_e=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new c_e(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},u_e=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new u_e(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},h_e=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new h_e(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},p_e=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d,f){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.NumberOfRisers=u,this.NumberOfTreads=c,this.RiserHeight=p,this.TreadLength=d,this.PredefinedType=f}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++],g=i[r++];return new p_e(e,t,n,s,a,o,l,h,u,c,p,d,f,m,g)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.NumberOfRisers),e.push(this.NumberOfTreads),e.push(this.RiserHeight),e.push(this.TreadLength),e.push(this.PredefinedType),e}},d_e=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new d_e(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},f_e=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new f_e(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},m_e=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.AppliedLoad=h,this.GlobalOrLocal=u,this.DestabilizingLoad=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new m_e(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.AppliedLoad),e.push(this.GlobalOrLocal),e.push(this.DestabilizingLoad),e}},g_e=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.AppliedLoad=h,this.GlobalOrLocal=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new g_e(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.AppliedLoad),e.push(this.GlobalOrLocal),e}},v_e=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.PredefinedType=o,this.OrientationOf2DPlane=l,this.LoadedBy=h,this.HasResults=u,this.SharedPlacement=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new v_e(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.PredefinedType),e.push(this.OrientationOf2DPlane),e.push(this.LoadedBy),e.push(this.HasResults),e.push(this.SharedPlacement),e}},y_e=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.AppliedCondition=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new y_e(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.AppliedCondition),e}},T_e=class{constructor(e,t,i){this.expressID=e,this.type=t,this.Name=i}static FromTape(e,t,i){let r=0,n=i[r++];return new T_e(e,t,n)}ToTape(){let e=[];return e.push(this.Name),e}},E_e=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.AppliedLoad=h,this.GlobalOrLocal=u,this.DestabilizingLoad=c,this.ProjectedOrTrue=p,this.PredefinedType=d}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++];return new E_e(e,t,n,s,a,o,l,h,u,c,p,d,f,m)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.AppliedLoad),e.push(this.GlobalOrLocal),e.push(this.DestabilizingLoad),e.push(this.ProjectedOrTrue),e.push(this.PredefinedType),e}},b_e=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.AppliedCondition=h,this.Axis=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new b_e(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.AppliedCondition),e.push(this.Axis),e}},x_e=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.PredefinedType=h,this.Axis=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new x_e(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.PredefinedType),e.push(this.Axis),e}},I_e=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.PredefinedType=h,this.Axis=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new I_e(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.PredefinedType),e.push(this.Axis),e}},__e=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.AppliedLoad=h,this.GlobalOrLocal=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new __e(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.AppliedLoad),e.push(this.GlobalOrLocal),e.push(this.PredefinedType),e}},S_e=class{constructor(e,t,i,r,n,s,a,o,l){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++];return new S_e(e,t,n,s,a,o,l,h,u)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e}},w_e=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.AppliedLoad=h,this.GlobalOrLocal=u,this.DestabilizingLoad=c,this.ProjectedOrTrue=p,this.PredefinedType=d}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++];return new w_e(e,t,n,s,a,o,l,h,u,c,p,d,f,m)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.AppliedLoad),e.push(this.GlobalOrLocal),e.push(this.DestabilizingLoad),e.push(this.ProjectedOrTrue),e.push(this.PredefinedType),e}},R_e=class{constructor(e,t,i){this.expressID=e,this.type=t,this.Name=i}static FromTape(e,t,i){let r=0,n=i[r++];return new R_e(e,t,n)}ToTape(){let e=[];return e.push(this.Name),e}},M_e=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.PredefinedType=o,this.ActionType=l,this.ActionSource=h,this.Coefficient=u,this.Purpose=c,this.SelfWeightCoefficients=p}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++];return new M_e(e,t,n,s,a,o,l,h,u,c,p,d,f)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.PredefinedType),e.push(this.ActionType),e.push(this.ActionSource),e.push(this.Coefficient),e.push(this.Purpose),e.push(this.SelfWeightCoefficients),e}},D_e=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.Name=i,this.Values=r,this.Locations=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new D_e(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Values),e.push(this.Locations),e}},C_e=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.PredefinedType=o,this.ActionType=l,this.ActionSource=h,this.Coefficient=u,this.Purpose=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new C_e(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.PredefinedType),e.push(this.ActionType),e.push(this.ActionSource),e.push(this.Coefficient),e.push(this.Purpose),e}},A_e=class{constructor(e,t,i,r,n,s,a,o,l){this.expressID=e,this.type=t,this.Name=i,this.LinearForceX=r,this.LinearForceY=n,this.LinearForceZ=s,this.LinearMomentX=a,this.LinearMomentY=o,this.LinearMomentZ=l}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++];return new A_e(e,t,n,s,a,o,l,h,u)}ToTape(){let e=[];return e.push(this.Name),e.push(this.LinearForceX),e.push(this.LinearForceY),e.push(this.LinearForceZ),e.push(this.LinearMomentX),e.push(this.LinearMomentY),e.push(this.LinearMomentZ),e}},O_e=class{constructor(e,t,i){this.expressID=e,this.type=t,this.Name=i}static FromTape(e,t,i){let r=0,n=i[r++];return new O_e(e,t,n)}ToTape(){let e=[];return e.push(this.Name),e}},P_e=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.Name=i,this.PlanarForceX=r,this.PlanarForceY=n,this.PlanarForceZ=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new P_e(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.Name),e.push(this.PlanarForceX),e.push(this.PlanarForceY),e.push(this.PlanarForceZ),e}},N_e=class{constructor(e,t,i,r,n,s,a,o,l){this.expressID=e,this.type=t,this.Name=i,this.DisplacementX=r,this.DisplacementY=n,this.DisplacementZ=s,this.RotationalDisplacementRX=a,this.RotationalDisplacementRY=o,this.RotationalDisplacementRZ=l}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++];return new N_e(e,t,n,s,a,o,l,h,u)}ToTape(){let e=[];return e.push(this.Name),e.push(this.DisplacementX),e.push(this.DisplacementY),e.push(this.DisplacementZ),e.push(this.RotationalDisplacementRX),e.push(this.RotationalDisplacementRY),e.push(this.RotationalDisplacementRZ),e}},L_e=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.Name=i,this.DisplacementX=r,this.DisplacementY=n,this.DisplacementZ=s,this.RotationalDisplacementRX=a,this.RotationalDisplacementRY=o,this.RotationalDisplacementRZ=l,this.Distortion=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new L_e(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.Name),e.push(this.DisplacementX),e.push(this.DisplacementY),e.push(this.DisplacementZ),e.push(this.RotationalDisplacementRX),e.push(this.RotationalDisplacementRY),e.push(this.RotationalDisplacementRZ),e.push(this.Distortion),e}},F_e=class{constructor(e,t,i,r,n,s,a,o,l){this.expressID=e,this.type=t,this.Name=i,this.ForceX=r,this.ForceY=n,this.ForceZ=s,this.MomentX=a,this.MomentY=o,this.MomentZ=l}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++];return new F_e(e,t,n,s,a,o,l,h,u)}ToTape(){let e=[];return e.push(this.Name),e.push(this.ForceX),e.push(this.ForceY),e.push(this.ForceZ),e.push(this.MomentX),e.push(this.MomentY),e.push(this.MomentZ),e}},H_e=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.Name=i,this.ForceX=r,this.ForceY=n,this.ForceZ=s,this.MomentX=a,this.MomentY=o,this.MomentZ=l,this.WarpingMoment=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new H_e(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.Name),e.push(this.ForceX),e.push(this.ForceY),e.push(this.ForceZ),e.push(this.MomentX),e.push(this.MomentY),e.push(this.MomentZ),e.push(this.WarpingMoment),e}},U_e=class{constructor(e,t,i){this.expressID=e,this.type=t,this.Name=i}static FromTape(e,t,i){let r=0,n=i[r++];return new U_e(e,t,n)}ToTape(){let e=[];return e.push(this.Name),e}},B_e=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.Name=i,this.DeltaTConstant=r,this.DeltaTY=n,this.DeltaTZ=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new B_e(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.Name),e.push(this.DeltaTConstant),e.push(this.DeltaTY),e.push(this.DeltaTZ),e}},k_e=class{constructor(e,t,i,r,n,s,a,o,l){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++];return new k_e(e,t,n,s,a,o,l,h,u)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e}},G_e=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.AppliedLoad=h,this.GlobalOrLocal=u,this.DestabilizingLoad=c,this.ProjectedOrTrue=p,this.PredefinedType=d}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++];return new G_e(e,t,n,s,a,o,l,h,u,c,p,d,f,m)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.AppliedLoad),e.push(this.GlobalOrLocal),e.push(this.DestabilizingLoad),e.push(this.ProjectedOrTrue),e.push(this.PredefinedType),e}},V_e=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.AppliedLoad=h,this.GlobalOrLocal=u,this.DestabilizingLoad=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new V_e(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.AppliedLoad),e.push(this.GlobalOrLocal),e.push(this.DestabilizingLoad),e}},z_e=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.AppliedCondition=h,this.ConditionCoordinateSystem=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new z_e(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.AppliedCondition),e.push(this.ConditionCoordinateSystem),e}},j_e=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.AppliedLoad=h,this.GlobalOrLocal=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new j_e(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.AppliedLoad),e.push(this.GlobalOrLocal),e}},W_e=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.AppliedLoad=h,this.GlobalOrLocal=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new W_e(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.AppliedLoad),e.push(this.GlobalOrLocal),e}},q_e=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.TheoryType=o,this.ResultForLoadGroup=l,this.IsLinear=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new q_e(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.TheoryType),e.push(this.ResultForLoadGroup),e.push(this.IsLinear),e}},Y_e=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.AppliedLoad=h,this.GlobalOrLocal=u,this.DestabilizingLoad=c,this.ProjectedOrTrue=p,this.PredefinedType=d}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++];return new Y_e(e,t,n,s,a,o,l,h,u,c,p,d,f,m)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.AppliedLoad),e.push(this.GlobalOrLocal),e.push(this.DestabilizingLoad),e.push(this.ProjectedOrTrue),e.push(this.PredefinedType),e}},X_e=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.AppliedCondition=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new X_e(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.AppliedCondition),e}},$_e=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.PredefinedType=h,this.Thickness=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new $_e(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.PredefinedType),e.push(this.Thickness),e}},K_e=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.PredefinedType=h,this.Thickness=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new K_e(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.PredefinedType),e.push(this.Thickness),e}},Z_e=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.AppliedLoad=h,this.GlobalOrLocal=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new Z_e(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.AppliedLoad),e.push(this.GlobalOrLocal),e.push(this.PredefinedType),e}},J_e=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.ContextOfItems=i,this.RepresentationIdentifier=r,this.RepresentationType=n,this.Items=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new J_e(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.ContextOfItems),e.push(this.RepresentationIdentifier),e.push(this.RepresentationType),e.push(this.Items),e}},Q_e=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.Item=i,this.Styles=r,this.Name=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new Q_e(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.Item),e.push(this.Styles),e.push(this.Name),e}},eSe=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.ContextOfItems=i,this.RepresentationIdentifier=r,this.RepresentationType=n,this.Items=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new eSe(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.ContextOfItems),e.push(this.RepresentationIdentifier),e.push(this.RepresentationType),e.push(this.Items),e}},tSe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.Identification=o,this.LongDescription=l,this.Usage=h,this.BaseCosts=u,this.BaseQuantity=c,this.PredefinedType=p}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++];return new tSe(e,t,n,s,a,o,l,h,u,c,p,d,f)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.Identification),e.push(this.LongDescription),e.push(this.Usage),e.push(this.BaseCosts),e.push(this.BaseQuantity),e.push(this.PredefinedType),e}},rSe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.Identification=l,this.LongDescription=h,this.ResourceType=u,this.BaseCosts=c,this.BaseQuantity=p,this.PredefinedType=d}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++];return new rSe(e,t,n,s,a,o,l,h,u,c,p,d,f,m)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.Identification),e.push(this.LongDescription),e.push(this.ResourceType),e.push(this.BaseCosts),e.push(this.BaseQuantity),e.push(this.PredefinedType),e}},iSe=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.EdgeStart=i,this.EdgeEnd=r,this.ParentEdge=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new iSe(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.EdgeStart),e.push(this.EdgeEnd),e.push(this.ParentEdge),e}},nSe=class{constructor(e,t){this.expressID=e,this.type=t}static FromTape(e,t,i){return new nSe(e,t)}ToTape(){return[]}},sSe=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.Curve3D=i,this.AssociatedGeometry=r,this.MasterRepresentation=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new sSe(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.Curve3D),e.push(this.AssociatedGeometry),e.push(this.MasterRepresentation),e}},aSe=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.SweptArea=i,this.Position=r,this.Directrix=n,this.StartParam=s,this.EndParam=a,this.ReferenceSurface=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new aSe(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.SweptArea),e.push(this.Position),e.push(this.Directrix),e.push(this.StartParam),e.push(this.EndParam),e.push(this.ReferenceSurface),e}},oSe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new oSe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},lSe=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.SweptCurve=i,this.Position=r,this.ExtrudedDirection=n,this.Depth=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new lSe(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.SweptCurve),e.push(this.Position),e.push(this.ExtrudedDirection),e.push(this.Depth),e}},cSe=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.SweptCurve=i,this.Position=r,this.AxisPosition=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new cSe(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.SweptCurve),e.push(this.Position),e.push(this.AxisPosition),e}},uSe=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.Name=i,this.SurfaceReinforcement1=r,this.SurfaceReinforcement2=n,this.ShearReinforcement=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new uSe(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.Name),e.push(this.SurfaceReinforcement1),e.push(this.SurfaceReinforcement2),e.push(this.ShearReinforcement),e}},hSe=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.Name=i,this.Side=r,this.Styles=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new hSe(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Side),e.push(this.Styles),e}},pSe=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.DiffuseTransmissionColour=i,this.DiffuseReflectionColour=r,this.TransmissionColour=n,this.ReflectanceColour=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new pSe(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.DiffuseTransmissionColour),e.push(this.DiffuseReflectionColour),e.push(this.TransmissionColour),e.push(this.ReflectanceColour),e}},dSe=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.RefractionIndex=i,this.DispersionFactor=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new dSe(e,t,n,s)}ToTape(){let e=[];return e.push(this.RefractionIndex),e.push(this.DispersionFactor),e}},fSe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.SurfaceColour=i,this.Transparency=r,this.DiffuseColour=n,this.TransmissionColour=s,this.DiffuseTransmissionColour=a,this.ReflectionColour=o,this.SpecularColour=l,this.SpecularHighlight=h,this.ReflectanceMethod=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new fSe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.SurfaceColour),e.push(this.Transparency),e.push(this.DiffuseColour),e.push(this.TransmissionColour),e.push(this.DiffuseTransmissionColour),e.push(this.ReflectionColour),e.push(this.SpecularColour),e.push(this.SpecularHighlight),e.push(this.ReflectanceMethod),e}},mSe=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.SurfaceColour=i,this.Transparency=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new mSe(e,t,n,s)}ToTape(){let e=[];return e.push(this.SurfaceColour),e.push(this.Transparency),e}},gSe=class{constructor(e,t,i){this.expressID=e,this.type=t,this.Textures=i}static FromTape(e,t,i){let r=0,n=i[r++];return new gSe(e,t,n)}ToTape(){let e=[];return e.push(this.Textures),e}},vSe=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.RepeatS=i,this.RepeatT=r,this.Mode=n,this.TextureTransform=s,this.Parameter=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new vSe(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.RepeatS),e.push(this.RepeatT),e.push(this.Mode),e.push(this.TextureTransform),e.push(this.Parameter),e}},ySe=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.SweptArea=i,this.Position=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new ySe(e,t,n,s)}ToTape(){let e=[];return e.push(this.SweptArea),e.push(this.Position),e}},TSe=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.Directrix=i,this.Radius=r,this.InnerRadius=n,this.StartParam=s,this.EndParam=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new TSe(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.Directrix),e.push(this.Radius),e.push(this.InnerRadius),e.push(this.StartParam),e.push(this.EndParam),e}},ESe=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.Directrix=i,this.Radius=r,this.InnerRadius=n,this.StartParam=s,this.EndParam=a,this.FilletRadius=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new ESe(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.Directrix),e.push(this.Radius),e.push(this.InnerRadius),e.push(this.StartParam),e.push(this.EndParam),e.push(this.FilletRadius),e}},bSe=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.SweptCurve=i,this.Position=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new bSe(e,t,n,s)}ToTape(){let e=[];return e.push(this.SweptCurve),e.push(this.Position),e}},xSe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new xSe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},ISe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new ISe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},_Se=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new _Se(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e}},SSe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new SSe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},wSe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new wSe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},RSe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d){this.expressID=e,this.type=t,this.ProfileType=i,this.ProfileName=r,this.Position=n,this.Depth=s,this.FlangeWidth=a,this.WebThickness=o,this.FlangeThickness=l,this.FilletRadius=h,this.FlangeEdgeRadius=u,this.WebEdgeRadius=c,this.WebSlope=p,this.FlangeSlope=d}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++];return new RSe(e,t,n,s,a,o,l,h,u,c,p,d,f,m)}ToTape(){let e=[];return e.push(this.ProfileType),e.push(this.ProfileName),e.push(this.Position),e.push(this.Depth),e.push(this.FlangeWidth),e.push(this.WebThickness),e.push(this.FlangeThickness),e.push(this.FilletRadius),e.push(this.FlangeEdgeRadius),e.push(this.WebEdgeRadius),e.push(this.WebSlope),e.push(this.FlangeSlope),e}},MSe=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.Name=i,this.Rows=r,this.Columns=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new MSe(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Rows),e.push(this.Columns),e}},DSe=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.Identifier=i,this.Name=r,this.Description=n,this.Unit=s,this.ReferencePath=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new DSe(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.Identifier),e.push(this.Name),e.push(this.Description),e.push(this.Unit),e.push(this.ReferencePath),e}},CSe=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.RowCells=i,this.IsHeading=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new CSe(e,t,n,s)}ToTape(){let e=[];return e.push(this.RowCells),e.push(this.IsHeading),e}},ASe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new ASe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},OSe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new OSe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},PSe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d,f){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.Identification=o,this.LongDescription=l,this.Status=h,this.WorkMethod=u,this.IsMilestone=c,this.Priority=p,this.TaskTime=d,this.PredefinedType=f}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++],g=i[r++];return new PSe(e,t,n,s,a,o,l,h,u,c,p,d,f,m,g)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.Identification),e.push(this.LongDescription),e.push(this.Status),e.push(this.WorkMethod),e.push(this.IsMilestone),e.push(this.Priority),e.push(this.TaskTime),e.push(this.PredefinedType),e}},NSe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d,f,m,g,y,v,T,x,b){this.expressID=e,this.type=t,this.Name=i,this.DataOrigin=r,this.UserDefinedDataOrigin=n,this.DurationType=s,this.ScheduleDuration=a,this.ScheduleStart=o,this.ScheduleFinish=l,this.EarlyStart=h,this.EarlyFinish=u,this.LateStart=c,this.LateFinish=p,this.FreeFloat=d,this.TotalFloat=f,this.IsCritical=m,this.StatusTime=g,this.ActualDuration=y,this.ActualStart=v,this.ActualFinish=T,this.RemainingTime=x,this.Completion=b}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++],g=i[r++],y=i[r++],v=i[r++],T=i[r++],x=i[r++],b=i[r++],_=i[r++],E=i[r++];return new NSe(e,t,n,s,a,o,l,h,u,c,p,d,f,m,g,y,v,T,x,b,_,E)}ToTape(){let e=[];return e.push(this.Name),e.push(this.DataOrigin),e.push(this.UserDefinedDataOrigin),e.push(this.DurationType),e.push(this.ScheduleDuration),e.push(this.ScheduleStart),e.push(this.ScheduleFinish),e.push(this.EarlyStart),e.push(this.EarlyFinish),e.push(this.LateStart),e.push(this.LateFinish),e.push(this.FreeFloat),e.push(this.TotalFloat),e.push(this.IsCritical),e.push(this.StatusTime),e.push(this.ActualDuration),e.push(this.ActualStart),e.push(this.ActualFinish),e.push(this.RemainingTime),e.push(this.Completion),e}},LSe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d,f,m,g,y,v,T,x,b,_){this.expressID=e,this.type=t,this.Name=i,this.DataOrigin=r,this.UserDefinedDataOrigin=n,this.DurationType=s,this.ScheduleDuration=a,this.ScheduleStart=o,this.ScheduleFinish=l,this.EarlyStart=h,this.EarlyFinish=u,this.LateStart=c,this.LateFinish=p,this.FreeFloat=d,this.TotalFloat=f,this.IsCritical=m,this.StatusTime=g,this.ActualDuration=y,this.ActualStart=v,this.ActualFinish=T,this.RemainingTime=x,this.Completion=b,this.Recurrence=_}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++],g=i[r++],y=i[r++],v=i[r++],T=i[r++],x=i[r++],b=i[r++],_=i[r++],E=i[r++],w=i[r++];return new LSe(e,t,n,s,a,o,l,h,u,c,p,d,f,m,g,y,v,T,x,b,_,E,w)}ToTape(){let e=[];return e.push(this.Name),e.push(this.DataOrigin),e.push(this.UserDefinedDataOrigin),e.push(this.DurationType),e.push(this.ScheduleDuration),e.push(this.ScheduleStart),e.push(this.ScheduleFinish),e.push(this.EarlyStart),e.push(this.EarlyFinish),e.push(this.LateStart),e.push(this.LateFinish),e.push(this.FreeFloat),e.push(this.TotalFloat),e.push(this.IsCritical),e.push(this.StatusTime),e.push(this.ActualDuration),e.push(this.ActualStart),e.push(this.ActualFinish),e.push(this.RemainingTime),e.push(this.Completion),e.push(this.Recurrence),e}},FSe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.Identification=l,this.LongDescription=h,this.ProcessType=u,this.PredefinedType=c,this.WorkMethod=p}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++];return new FSe(e,t,n,s,a,o,l,h,u,c,p,d,f)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.Identification),e.push(this.LongDescription),e.push(this.ProcessType),e.push(this.PredefinedType),e.push(this.WorkMethod),e}},HSe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.Purpose=i,this.Description=r,this.UserDefinedPurpose=n,this.TelephoneNumbers=s,this.FacsimileNumbers=a,this.PagerNumber=o,this.ElectronicMailAddresses=l,this.WWWHomePageURL=h,this.MessagingIDs=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new HSe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.Purpose),e.push(this.Description),e.push(this.UserDefinedPurpose),e.push(this.TelephoneNumbers),e.push(this.FacsimileNumbers),e.push(this.PagerNumber),e.push(this.ElectronicMailAddresses),e.push(this.WWWHomePageURL),e.push(this.MessagingIDs),e}},USe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d,f,m,g,y,v){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.SteelGrade=u,this.PredefinedType=c,this.NominalDiameter=p,this.CrossSectionArea=d,this.TensionForce=f,this.PreStress=m,this.FrictionCoefficient=g,this.AnchorageSlip=y,this.MinCurvatureRadius=v}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++],g=i[r++],y=i[r++],v=i[r++],T=i[r++],x=i[r++];return new USe(e,t,n,s,a,o,l,h,u,c,p,d,f,m,g,y,v,T,x)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.SteelGrade),e.push(this.PredefinedType),e.push(this.NominalDiameter),e.push(this.CrossSectionArea),e.push(this.TensionForce),e.push(this.PreStress),e.push(this.FrictionCoefficient),e.push(this.AnchorageSlip),e.push(this.MinCurvatureRadius),e}},BSe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.SteelGrade=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new BSe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.SteelGrade),e.push(this.PredefinedType),e}},kSe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new kSe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},GSe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.SteelGrade=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new GSe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.SteelGrade),e.push(this.PredefinedType),e}},VSe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new VSe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},zSe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d,f){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c,this.NominalDiameter=p,this.CrossSectionArea=d,this.SheathDiameter=f}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++],g=i[r++];return new zSe(e,t,n,s,a,o,l,h,u,c,p,d,f,m,g)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e.push(this.NominalDiameter),e.push(this.CrossSectionArea),e.push(this.SheathDiameter),e}},jSe=class{constructor(e,t,i){this.expressID=e,this.type=t,this.Coordinates=i}static FromTape(e,t,i){let r=0,n=i[r++];return new jSe(e,t,n)}ToTape(){let e=[];return e.push(this.Coordinates),e}},WSe=class{constructor(e,t){this.expressID=e,this.type=t}static FromTape(e,t,i){return new WSe(e,t)}ToTape(){return[]}},qSe=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.Literal=i,this.Placement=r,this.Path=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new qSe(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.Literal),e.push(this.Placement),e.push(this.Path),e}},YSe=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.Literal=i,this.Placement=r,this.Path=n,this.Extent=s,this.BoxAlignment=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new YSe(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.Literal),e.push(this.Placement),e.push(this.Path),e.push(this.Extent),e.push(this.BoxAlignment),e}},XSe=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.Name=i,this.TextCharacterAppearance=r,this.TextStyle=n,this.TextFontStyle=s,this.ModelOrDraughting=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new XSe(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.Name),e.push(this.TextCharacterAppearance),e.push(this.TextStyle),e.push(this.TextFontStyle),e.push(this.ModelOrDraughting),e}},$Se=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.Name=i,this.FontFamily=r,this.FontStyle=n,this.FontVariant=s,this.FontWeight=a,this.FontSize=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new $Se(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.Name),e.push(this.FontFamily),e.push(this.FontStyle),e.push(this.FontVariant),e.push(this.FontWeight),e.push(this.FontSize),e}},KSe=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.Colour=i,this.BackgroundColour=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new KSe(e,t,n,s)}ToTape(){let e=[];return e.push(this.Colour),e.push(this.BackgroundColour),e}},ZSe=class{constructor(e,t,i,r,n,s,a,o,l){this.expressID=e,this.type=t,this.TextIndent=i,this.TextAlign=r,this.TextDecoration=n,this.LetterSpacing=s,this.WordSpacing=a,this.TextTransform=o,this.LineHeight=l}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++];return new ZSe(e,t,n,s,a,o,l,h,u)}ToTape(){let e=[];return e.push(this.TextIndent),e.push(this.TextAlign),e.push(this.TextDecoration),e.push(this.LetterSpacing),e.push(this.WordSpacing),e.push(this.TextTransform),e.push(this.LineHeight),e}},JSe=class{constructor(e,t,i){this.expressID=e,this.type=t,this.Maps=i}static FromTape(e,t,i){let r=0,n=i[r++];return new JSe(e,t,n)}ToTape(){let e=[];return e.push(this.Maps),e}},QSe=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.Maps=i,this.Mode=r,this.Parameter=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new QSe(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.Maps),e.push(this.Mode),e.push(this.Parameter),e}},ewe=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.Maps=i,this.Vertices=r,this.MappedTo=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new ewe(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.Maps),e.push(this.Vertices),e.push(this.MappedTo),e}},twe=class{constructor(e,t,i){this.expressID=e,this.type=t,this.Coordinates=i}static FromTape(e,t,i){let r=0,n=i[r++];return new twe(e,t,n)}ToTape(){let e=[];return e.push(this.Coordinates),e}},rwe=class{constructor(e,t,i){this.expressID=e,this.type=t,this.TexCoordsList=i}static FromTape(e,t,i){let r=0,n=i[r++];return new rwe(e,t,n)}ToTape(){let e=[];return e.push(this.TexCoordsList),e}},iwe=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.StartTime=i,this.EndTime=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new iwe(e,t,n,s)}ToTape(){let e=[];return e.push(this.StartTime),e.push(this.EndTime),e}},nwe=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.StartTime=n,this.EndTime=s,this.TimeSeriesDataType=a,this.DataOrigin=o,this.UserDefinedDataOrigin=l,this.Unit=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new nwe(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.StartTime),e.push(this.EndTime),e.push(this.TimeSeriesDataType),e.push(this.DataOrigin),e.push(this.UserDefinedDataOrigin),e.push(this.Unit),e}},swe=class{constructor(e,t,i){this.expressID=e,this.type=t,this.ListValues=i}static FromTape(e,t,i){let r=0,n=i[r++];return new swe(e,t,n)}ToTape(){let e=[];return e.push(this.ListValues),e}},awe=class{constructor(e,t){this.expressID=e,this.type=t}static FromTape(e,t,i){return new awe(e,t)}ToTape(){return[]}},owe=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.ContextOfItems=i,this.RepresentationIdentifier=r,this.RepresentationType=n,this.Items=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new owe(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.ContextOfItems),e.push(this.RepresentationIdentifier),e.push(this.RepresentationType),e.push(this.Items),e}},lwe=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.Position=i,this.MajorRadius=r,this.MinorRadius=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new lwe(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.Position),e.push(this.MajorRadius),e.push(this.MinorRadius),e}},cwe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new cwe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},uwe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new uwe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},hwe=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.StartPoint=i,this.StartDirection=r,this.SegmentLength=n,this.StartRadius=s,this.EndRadius=a,this.IsStartRadiusCCW=o,this.IsEndRadiusCCW=l,this.TransitionCurveType=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new hwe(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.StartPoint),e.push(this.StartDirection),e.push(this.SegmentLength),e.push(this.StartRadius),e.push(this.EndRadius),e.push(this.IsStartRadiusCCW),e.push(this.IsEndRadiusCCW),e.push(this.TransitionCurveType),e}},pwe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new pwe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},dwe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new dwe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},fwe=class{constructor(e,t,i,r,n,s,a,o,l){this.expressID=e,this.type=t,this.ProfileType=i,this.ProfileName=r,this.Position=n,this.BottomXDim=s,this.TopXDim=a,this.YDim=o,this.TopXOffset=l}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++];return new fwe(e,t,n,s,a,o,l,h,u)}ToTape(){let e=[];return e.push(this.ProfileType),e.push(this.ProfileName),e.push(this.Position),e.push(this.BottomXDim),e.push(this.TopXDim),e.push(this.YDim),e.push(this.TopXOffset),e}},mwe=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.Coordinates=i,this.Normals=r,this.Closed=n,this.CoordIndex=s,this.PnIndex=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new mwe(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.Coordinates),e.push(this.Normals),e.push(this.Closed),e.push(this.CoordIndex),e.push(this.PnIndex),e}},gwe=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.Coordinates=i,this.Normals=r,this.Closed=n,this.CoordIndex=s,this.PnIndex=a,this.Flags=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new gwe(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.Coordinates),e.push(this.Normals),e.push(this.Closed),e.push(this.CoordIndex),e.push(this.PnIndex),e.push(this.Flags),e}},vwe=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.BasisCurve=i,this.Trim1=r,this.Trim2=n,this.SenseAgreement=s,this.MasterRepresentation=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new vwe(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.BasisCurve),e.push(this.Trim1),e.push(this.Trim2),e.push(this.SenseAgreement),e.push(this.MasterRepresentation),e}},ywe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new ywe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},Twe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new Twe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},Ewe=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new Ewe(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e}},bwe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.Identification=l,this.LongDescription=h,this.ProcessType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new bwe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.Identification),e.push(this.LongDescription),e.push(this.ProcessType),e}},xwe=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new xwe(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e}},Iwe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.Identification=l,this.LongDescription=h,this.ResourceType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Iwe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.Identification),e.push(this.LongDescription),e.push(this.ResourceType),e}},_we=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.ProfileType=i,this.ProfileName=r,this.Position=n,this.Depth=s,this.FlangeWidth=a,this.WebThickness=o,this.FlangeThickness=l,this.FilletRadius=h,this.EdgeRadius=u,this.FlangeSlope=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new _we(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.ProfileType),e.push(this.ProfileName),e.push(this.Position),e.push(this.Depth),e.push(this.FlangeWidth),e.push(this.WebThickness),e.push(this.FlangeThickness),e.push(this.FilletRadius),e.push(this.EdgeRadius),e.push(this.FlangeSlope),e}},Swe=class{constructor(e,t,i){this.expressID=e,this.type=t,this.Units=i}static FromTape(e,t,i){let r=0,n=i[r++];return new Swe(e,t,n)}ToTape(){let e=[];return e.push(this.Units),e}},wwe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new wwe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},Rwe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new Rwe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},Mwe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Mwe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},Dwe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new Dwe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},Cwe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Cwe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},Awe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new Awe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},Owe=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.Orientation=i,this.Magnitude=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new Owe(e,t,n,s)}ToTape(){let e=[];return e.push(this.Orientation),e.push(this.Magnitude),e}},Pwe=class{constructor(e,t){this.expressID=e,this.type=t}static FromTape(e,t,i){return new Pwe(e,t)}ToTape(){return[]}},Nwe=class{constructor(e,t,i){this.expressID=e,this.type=t,this.LoopVertex=i}static FromTape(e,t,i){let r=0,n=i[r++];return new Nwe(e,t,n)}ToTape(){let e=[];return e.push(this.LoopVertex),e}},Lwe=class{constructor(e,t,i){this.expressID=e,this.type=t,this.VertexGeometry=i}static FromTape(e,t,i){let r=0,n=i[r++];return new Lwe(e,t,n)}ToTape(){let e=[];return e.push(this.VertexGeometry),e}},Fwe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Fwe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},Hwe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new Hwe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},Uwe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Uwe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},Bwe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new Bwe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},kwe=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new kwe(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e}},Gwe=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.IntersectingAxes=i,this.OffsetDistances=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new Gwe(e,t,n,s)}ToTape(){let e=[];return e.push(this.IntersectingAxes),e.push(this.OffsetDistances),e}},Vwe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Vwe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},zwe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new zwe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},jwe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new jwe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},Wwe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Wwe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},qwe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new qwe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},Ywe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Ywe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},Xwe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new Xwe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},$we=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d,f){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.OverallHeight=u,this.OverallWidth=c,this.PredefinedType=p,this.PartitioningType=d,this.UserDefinedPartitioningType=f}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++],g=i[r++];return new $we(e,t,n,s,a,o,l,h,u,c,p,d,f,m,g)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.OverallHeight),e.push(this.OverallWidth),e.push(this.PredefinedType),e.push(this.PartitioningType),e.push(this.UserDefinedPartitioningType),e}},Kwe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d,f,m,g,y){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.LiningDepth=a,this.LiningThickness=o,this.TransomThickness=l,this.MullionThickness=h,this.FirstTransomOffset=u,this.SecondTransomOffset=c,this.FirstMullionOffset=p,this.SecondMullionOffset=d,this.ShapeAspectStyle=f,this.LiningOffset=m,this.LiningToPanelOffsetX=g,this.LiningToPanelOffsetY=y}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++],g=i[r++],y=i[r++],v=i[r++],T=i[r++];return new Kwe(e,t,n,s,a,o,l,h,u,c,p,d,f,m,g,y,v,T)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.LiningDepth),e.push(this.LiningThickness),e.push(this.TransomThickness),e.push(this.MullionThickness),e.push(this.FirstTransomOffset),e.push(this.SecondTransomOffset),e.push(this.FirstMullionOffset),e.push(this.SecondMullionOffset),e.push(this.ShapeAspectStyle),e.push(this.LiningOffset),e.push(this.LiningToPanelOffsetX),e.push(this.LiningToPanelOffsetY),e}},Zwe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.OperationType=a,this.PanelPosition=o,this.FrameDepth=l,this.FrameThickness=h,this.ShapeAspectStyle=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Zwe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.OperationType),e.push(this.PanelPosition),e.push(this.FrameDepth),e.push(this.FrameThickness),e.push(this.ShapeAspectStyle),e}},Jwe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d,f){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.OverallHeight=u,this.OverallWidth=c,this.PredefinedType=p,this.PartitioningType=d,this.UserDefinedPartitioningType=f}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++],g=i[r++];return new Jwe(e,t,n,s,a,o,l,h,u,c,p,d,f,m,g)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.OverallHeight),e.push(this.OverallWidth),e.push(this.PredefinedType),e.push(this.PartitioningType),e.push(this.UserDefinedPartitioningType),e}},Qwe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ConstructionType=u,this.OperationType=c,this.ParameterTakesPrecedence=p,this.Sizeable=d}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++];return new Qwe(e,t,n,s,a,o,l,h,u,c,p,d,f,m)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ConstructionType),e.push(this.OperationType),e.push(this.ParameterTakesPrecedence),e.push(this.Sizeable),e}},eRe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d,f){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c,this.PartitioningType=p,this.ParameterTakesPrecedence=d,this.UserDefinedPartitioningType=f}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++],g=i[r++];return new eRe(e,t,n,s,a,o,l,h,u,c,p,d,f,m,g)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e.push(this.PartitioningType),e.push(this.ParameterTakesPrecedence),e.push(this.UserDefinedPartitioningType),e}},tRe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.Identification=o,this.WorkingTimes=l,this.ExceptionTimes=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new tRe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.Identification),e.push(this.WorkingTimes),e.push(this.ExceptionTimes),e.push(this.PredefinedType),e}},rRe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d,f){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.Identification=o,this.CreationDate=l,this.Creators=h,this.Purpose=u,this.Duration=c,this.TotalFloat=p,this.StartTime=d,this.FinishTime=f}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++],g=i[r++];return new rRe(e,t,n,s,a,o,l,h,u,c,p,d,f,m,g)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.Identification),e.push(this.CreationDate),e.push(this.Creators),e.push(this.Purpose),e.push(this.Duration),e.push(this.TotalFloat),e.push(this.StartTime),e.push(this.FinishTime),e}},iRe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d,f,m){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.Identification=o,this.CreationDate=l,this.Creators=h,this.Purpose=u,this.Duration=c,this.TotalFloat=p,this.StartTime=d,this.FinishTime=f,this.PredefinedType=m}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++],g=i[r++],y=i[r++];return new iRe(e,t,n,s,a,o,l,h,u,c,p,d,f,m,g,y)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.Identification),e.push(this.CreationDate),e.push(this.Creators),e.push(this.Purpose),e.push(this.Duration),e.push(this.TotalFloat),e.push(this.StartTime),e.push(this.FinishTime),e.push(this.PredefinedType),e}},nRe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d,f,m){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.Identification=o,this.CreationDate=l,this.Creators=h,this.Purpose=u,this.Duration=c,this.TotalFloat=p,this.StartTime=d,this.FinishTime=f,this.PredefinedType=m}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++],g=i[r++],y=i[r++];return new nRe(e,t,n,s,a,o,l,h,u,c,p,d,f,m,g,y)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.Identification),e.push(this.CreationDate),e.push(this.Creators),e.push(this.Purpose),e.push(this.Duration),e.push(this.TotalFloat),e.push(this.StartTime),e.push(this.FinishTime),e.push(this.PredefinedType),e}},sRe=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.Name=i,this.DataOrigin=r,this.UserDefinedDataOrigin=n,this.RecurrencePattern=s,this.Start=a,this.Finish=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new sRe(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.Name),e.push(this.DataOrigin),e.push(this.UserDefinedDataOrigin),e.push(this.RecurrencePattern),e.push(this.Start),e.push(this.Finish),e}},aRe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.ProfileType=i,this.ProfileName=r,this.Position=n,this.Depth=s,this.FlangeWidth=a,this.WebThickness=o,this.FlangeThickness=l,this.FilletRadius=h,this.EdgeRadius=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new aRe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.ProfileType),e.push(this.ProfileName),e.push(this.Position),e.push(this.Depth),e.push(this.FlangeWidth),e.push(this.WebThickness),e.push(this.FlangeThickness),e.push(this.FilletRadius),e.push(this.EdgeRadius),e}},oRe=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.LongName=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new oRe(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.LongName),e}},kde=rEt(),n8=class{constructor(){this.wasmModule=void 0,this.fs=void 0}Init(){return eEt(this,null,(function*(){kde?(this.wasmModule=yield kde({noInitialRun:!0}),this.fs=this.wasmModule.FS):console.error("Could not find wasm module at './web-ifc' from web-ifc-api.ts")}))}OpenModel(e,t){this.wasmModule.FS_createDataFile("/","filename",e,!0,!0,!0);let i=Bde({COORDINATE_TO_ORIGIN:!1,USE_FAST_BOOLS:!1,CIRCLE_SEGMENTS_LOW:5,CIRCLE_SEGMENTS_MEDIUM:8,CIRCLE_SEGMENTS_HIGH:12},t),r=this.wasmModule.OpenModel(i);return this.wasmModule.FS_unlink("/filename"),r}CreateModel(e){let t=Bde({COORDINATE_TO_ORIGIN:!1,USE_FAST_BOOLS:!1,CIRCLE_SEGMENTS_LOW:5,CIRCLE_SEGMENTS_MEDIUM:8,CIRCLE_SEGMENTS_HIGH:12},e);return this.wasmModule.CreateModel(t)}ExportFileAsIFC(e){this.wasmModule.ExportFileAsIFC(e);let t=this.fs.readFile("/export.ifc");return this.wasmModule.FS_unlink("/export.ifc"),t}GetGeometry(e,t){return this.wasmModule.GetGeometry(e,t)}GetLine(e,t,i=!1){let r=this.GetRawLineData(e,t),n=O[r.type](r);return i&&this.FlattenLine(e,n),n}WriteLine(e,t){Object.keys(t).forEach((i=>{let r=t[i];if(r&&void 0!==r.expressID)this.WriteLine(e,r),t[i]={type:5,value:r.expressID};else if(Array.isArray(r)&&r.length>0)for(let n=0;n{let r=t[i];if(r&&5===r.type)t[i]=this.GetLine(e,r.value,!0);else if(Array.isArray(r)&&r.length>0&&5===r[0].type)for(let n=0;nzo(e,t),cRe=(e,t)=>new Wt(new Float32Array(e),t),nPt=(e,t)=>new Wt(new Uint32Array(e),t),s8="default",zl={aggregates:{name:zk,relating:"RelatingObject",related:"RelatedObjects",key:"children"},spatial:{name:Wk,relating:"RelatingStructure",related:"RelatedElements",key:"children"},psets:{name:qk,relating:"RelatingPropertyDefinition",related:"RelatedObjects",key:"hasPsets"},materials:{name:jk,relating:"RelatingMaterial",related:"RelatedObjects",key:"hasMaterial"},type:{name:Yk,relating:"RelatingType",related:"RelatedObjects",key:"hasType"}},a8=class{constructor(e,t){this.state=e,this.BVH=t,this.loadedModels=0,this.currentWebIfcID=-1,this.currentModelID=-1}parse(e){return ht(this,null,(function*(){return void 0===this.state.api.wasmModule&&(yield this.state.api.Init()),this.newIfcModel(e),this.loadedModels++,this.loadAllGeometry()}))}newIfcModel(e){let t=new Uint8Array(e);this.currentWebIfcID=this.state.api.OpenModel(t,this.state.webIfcSettings),this.currentModelID=this.state.useJSON?this.loadedModels:this.currentWebIfcID,this.state.models[this.currentModelID]={modelID:this.currentModelID,mesh:{},items:{},types:{},jsonData:{}}}loadAllGeometry(){return this.saveAllPlacedGeometriesByMaterial(),this.generateAllGeometriesByMaterial()}generateAllGeometriesByMaterial(){let{geometry:e,materials:t}=this.getGeometryAndMaterials();this.BVH.applyThreeMeshBVH(e);let i=new rt(e,t);return i.modelID=this.currentModelID,this.state.models[this.currentModelID].mesh=i,i}getGeometryAndMaterials(){let e=this.state.models[this.currentModelID].items,t=[],i=[];for(let r in e){i.push(e[r].material);let n=Object.values(e[r].geometries);t.push(GT(n))}return{geometry:GT(t,!0),materials:i}}saveAllPlacedGeometriesByMaterial(){let e=this.state.api.LoadAllGeometry(this.currentWebIfcID);for(let t=0;t0?GT(e,t):new lt}isConfigValid(e){return this.isValid(e.scene)&&this.isValid(e.modelID)&&this.isValid(e.ids)&&this.isValid(e.removePrevious)}isValid(e){return null!=e}getGeomAndMat(e){let t=[],i=[];for(let r in e){let n=Object.values(e[r].geometries);n.length&&(i.push(e[r].material),n.length>1?t.push(GT(n)):t.push(...n))}return{geomsByMaterial:t,materials:i}}updatePreviousSelection(e,t){let i=this.selected[this.matID(t)];if(!i)return this.newSelectionGroup(t);e.remove(i.mesh),t.removePrevious?i.ids=new Set(t.ids):t.ids.forEach((e=>i.ids.add(e)))}newSelectionGroup(e){this.selected[this.matID(e)]={ids:new Set(e.ids),mesh:{}}}isPreviousSelection(e){if(!this.selected[this.matID(e)])return!1;if(this.containsIds(e))return!0;let t=this.selected[this.matID(e)].ids;return JSON.stringify(e.ids)===JSON.stringify(t)}containsIds(e){let t=e.ids,i=Array.from(this.selected[this.matID(e)].ids);return t.every((r=0,e=>r=i.indexOf(e,r)+1));var r}addToPreviousSelection(e){let t=this.selected[this.matID(e)],i=this.filter(e),r=Object.values(i).map((e=>Object.values(e.geometries))).flat(),n=t.mesh.geometry;t.mesh.geometry=GT([n,...r]),e.ids.forEach((e=>t.ids.add(e)))}filter(e){let t=this.selected[this.matID(e)].ids,i=this.state.models[e.modelID].items,r={};for(let e in i)r[e]={material:i[e].material,geometries:this.filterGeometries(t,i[e].geometries)};return r}filterGeometries(e,t){let i=Array.from(e);return Object.keys(t).filter((e=>i.includes(parseInt(e,10)))).reduce(((e,i)=>Cn(Br({},e),{[i]:t[i]})),{})}isEasySelection(e){let t=this.matID(e);if(!e.removePrevious&&!this.isDefaultMat(e)&&this.selected[t])return!0}isDefaultMat(e){return this.matIDNoConfig(e.modelID)===this.matID(e)}matID(e){let t;return t=e.material&&e.material.uuid||s8,t.concat(" - ").concat(e.modelID.toString())}matIDNoConfig(e,t){let i=s8;return t&&(i=t.uuid),i.concat(" - ").concat(e.toString())}},f8={103090709:"IFCPROJECT",4097777520:"IFCSITE",4031249490:"IFCBUILDING",3124254112:"IFCBUILDINGSTOREY",3856911033:"IFCSPACE",1674181508:"IFCANNOTATION",25142252:"IFCCONTROLLER",32344328:"IFCBOILER",76236018:"IFCLAMP",90941305:"IFCPUMP",177149247:"IFCAIRTERMINALBOX",182646315:"IFCFLOWINSTRUMENT",263784265:"IFCFURNISHINGELEMENT",264262732:"IFCELECTRICGENERATOR",277319702:"IFCAUDIOVISUALAPPLIANCE",310824031:"IFCPIPEFITTING",331165859:"IFCSTAIR",342316401:"IFCDUCTFITTING",377706215:"IFCMECHANICALFASTENER",395920057:"IFCDOOR",402227799:"IFCELECTRICMOTOR",413509423:"IFCSYSTEMFURNITUREELEMENT",484807127:"IFCEVAPORATOR",486154966:"IFCWINDOWSTANDARDCASE",629592764:"IFCLIGHTFIXTURE",630975310:"IFCUNITARYCONTROLELEMENT",635142910:"IFCCABLECARRIERFITTING",639361253:"IFCCOIL",647756555:"IFCFASTENER",707683696:"IFCFLOWSTORAGEDEVICE",738039164:"IFCPROTECTIVEDEVICE",753842376:"IFCBEAM",812556717:"IFCTANK",819412036:"IFCFILTER",843113511:"IFCCOLUMN",862014818:"IFCELECTRICDISTRIBUTIONBOARD",900683007:"IFCFOOTING",905975707:"IFCCOLUMNSTANDARDCASE",926996030:"IFCVOIDINGFEATURE",979691226:"IFCREINFORCINGBAR",987401354:"IFCFLOWSEGMENT",1003880860:"IFCELECTRICTIMECONTROL",1051757585:"IFCCABLEFITTING",1052013943:"IFCDISTRIBUTIONCHAMBERELEMENT",1062813311:"IFCDISTRIBUTIONCONTROLELEMENT",1073191201:"IFCMEMBER",1095909175:"IFCBUILDINGELEMENTPROXY",1156407060:"IFCPLATESTANDARDCASE",1162798199:"IFCSWITCHINGDEVICE",1329646415:"IFCSHADINGDEVICE",1335981549:"IFCDISCRETEACCESSORY",1360408905:"IFCDUCTSILENCER",1404847402:"IFCSTACKTERMINAL",1426591983:"IFCFIRESUPPRESSIONTERMINAL",1437502449:"IFCMEDICALDEVICE",1509553395:"IFCFURNITURE",1529196076:"IFCSLAB",1620046519:"IFCTRANSPORTELEMENT",1634111441:"IFCAIRTERMINAL",1658829314:"IFCENERGYCONVERSIONDEVICE",1677625105:"IFCCIVILELEMENT",1687234759:"IFCPILE",1904799276:"IFCELECTRICAPPLIANCE",1911478936:"IFCMEMBERSTANDARDCASE",1945004755:"IFCDISTRIBUTIONELEMENT",1973544240:"IFCCOVERING",1999602285:"IFCSPACEHEATER",2016517767:"IFCROOF",2056796094:"IFCAIRTOAIRHEATRECOVERY",2058353004:"IFCFLOWCONTROLLER",2068733104:"IFCHUMIDIFIER",2176052936:"IFCJUNCTIONBOX",2188021234:"IFCFLOWMETER",2223149337:"IFCFLOWTERMINAL",2262370178:"IFCRAILING",2272882330:"IFCCONDENSER",2295281155:"IFCPROTECTIVEDEVICETRIPPINGUNIT",2320036040:"IFCREINFORCINGMESH",2347447852:"IFCTENDONANCHOR",2391383451:"IFCVIBRATIONISOLATOR",2391406946:"IFCWALL",2474470126:"IFCMOTORCONNECTION",2769231204:"IFCVIRTUALELEMENT",2814081492:"IFCENGINE",2906023776:"IFCBEAMSTANDARDCASE",2938176219:"IFCBURNER",2979338954:"IFCBUILDINGELEMENTPART",3024970846:"IFCRAMP",3026737570:"IFCTUBEBUNDLE",3027962421:"IFCSLABSTANDARDCASE",3040386961:"IFCDISTRIBUTIONFLOWELEMENT",3053780830:"IFCSANITARYTERMINAL",3079942009:"IFCOPENINGSTANDARDCASE",3087945054:"IFCALARM",3101698114:"IFCSURFACEFEATURE",3127900445:"IFCSLABELEMENTEDCASE",3132237377:"IFCFLOWMOVINGDEVICE",3171933400:"IFCPLATE",3221913625:"IFCCOMMUNICATIONSAPPLIANCE",3242481149:"IFCDOORSTANDARDCASE",3283111854:"IFCRAMPFLIGHT",3296154744:"IFCCHIMNEY",3304561284:"IFCWINDOW",3310460725:"IFCELECTRICFLOWSTORAGEDEVICE",3319311131:"IFCHEATEXCHANGER",3415622556:"IFCFAN",3420628829:"IFCSOLARDEVICE",3493046030:"IFCGEOGRAPHICELEMENT",3495092785:"IFCCURTAINWALL",3508470533:"IFCFLOWTREATMENTDEVICE",3512223829:"IFCWALLSTANDARDCASE",3518393246:"IFCDUCTSEGMENT",3571504051:"IFCCOMPRESSOR",3588315303:"IFCOPENINGELEMENT",3612865200:"IFCPIPESEGMENT",3640358203:"IFCCOOLINGTOWER",3651124850:"IFCPROJECTIONELEMENT",3694346114:"IFCOUTLET",3747195512:"IFCEVAPORATIVECOOLER",3758799889:"IFCCABLECARRIERSEGMENT",3824725483:"IFCTENDON",3825984169:"IFCTRANSFORMER",3902619387:"IFCCHILLER",4074379575:"IFCDAMPER",4086658281:"IFCSENSOR",4123344466:"IFCELEMENTASSEMBLY",4136498852:"IFCCOOLEDBEAM",4156078855:"IFCWALLELEMENTEDCASE",4175244083:"IFCINTERCEPTOR",4207607924:"IFCVALVE",4217484030:"IFCCABLESEGMENT",4237592921:"IFCWASTETERMINAL",4252922144:"IFCSTAIRFLIGHT",4278956645:"IFCFLOWFITTING",4288193352:"IFCACTUATOR",4292641817:"IFCUNITARYEQUIPMENT",3009204131:"IFCGRID"},sPt={3821786052:"IFCACTIONREQUEST",2296667514:"IFCACTOR",3630933823:"IFCACTORROLE",4288193352:"IFCACTUATOR",2874132201:"IFCACTUATORTYPE",618182010:"IFCADDRESS",1635779807:"IFCADVANCEDBREP",2603310189:"IFCADVANCEDBREPWITHVOIDS",3406155212:"IFCADVANCEDFACE",1634111441:"IFCAIRTERMINAL",177149247:"IFCAIRTERMINALBOX",1411407467:"IFCAIRTERMINALBOXTYPE",3352864051:"IFCAIRTERMINALTYPE",2056796094:"IFCAIRTOAIRHEATRECOVERY",1871374353:"IFCAIRTOAIRHEATRECOVERYTYPE",3087945054:"IFCALARM",3001207471:"IFCALARMTYPE",325726236:"IFCALIGNMENT",749761778:"IFCALIGNMENT2DHORIZONTAL",3199563722:"IFCALIGNMENT2DHORIZONTALSEGMENT",2483840362:"IFCALIGNMENT2DSEGMENT",3379348081:"IFCALIGNMENT2DVERSEGCIRCULARARC",3239324667:"IFCALIGNMENT2DVERSEGLINE",4263986512:"IFCALIGNMENT2DVERSEGPARABOLICARC",53199957:"IFCALIGNMENT2DVERTICAL",2029264950:"IFCALIGNMENT2DVERTICALSEGMENT",3512275521:"IFCALIGNMENTCURVE",1674181508:"IFCANNOTATION",669184980:"IFCANNOTATIONFILLAREA",639542469:"IFCAPPLICATION",411424972:"IFCAPPLIEDVALUE",130549933:"IFCAPPROVAL",3869604511:"IFCAPPROVALRELATIONSHIP",3798115385:"IFCARBITRARYCLOSEDPROFILEDEF",1310608509:"IFCARBITRARYOPENPROFILEDEF",2705031697:"IFCARBITRARYPROFILEDEFWITHVOIDS",3460190687:"IFCASSET",3207858831:"IFCASYMMETRICISHAPEPROFILEDEF",277319702:"IFCAUDIOVISUALAPPLIANCE",1532957894:"IFCAUDIOVISUALAPPLIANCETYPE",4261334040:"IFCAXIS1PLACEMENT",3125803723:"IFCAXIS2PLACEMENT2D",2740243338:"IFCAXIS2PLACEMENT3D",1967976161:"IFCBSPLINECURVE",2461110595:"IFCBSPLINECURVEWITHKNOTS",2887950389:"IFCBSPLINESURFACE",167062518:"IFCBSPLINESURFACEWITHKNOTS",753842376:"IFCBEAM",2906023776:"IFCBEAMSTANDARDCASE",819618141:"IFCBEAMTYPE",4196446775:"IFCBEARING",3649138523:"IFCBEARINGTYPE",616511568:"IFCBLOBTEXTURE",1334484129:"IFCBLOCK",32344328:"IFCBOILER",231477066:"IFCBOILERTYPE",3649129432:"IFCBOOLEANCLIPPINGRESULT",2736907675:"IFCBOOLEANRESULT",4037036970:"IFCBOUNDARYCONDITION",1136057603:"IFCBOUNDARYCURVE",1560379544:"IFCBOUNDARYEDGECONDITION",3367102660:"IFCBOUNDARYFACECONDITION",1387855156:"IFCBOUNDARYNODECONDITION",2069777674:"IFCBOUNDARYNODECONDITIONWARPING",1260505505:"IFCBOUNDEDCURVE",4182860854:"IFCBOUNDEDSURFACE",2581212453:"IFCBOUNDINGBOX",2713105998:"IFCBOXEDHALFSPACE",644574406:"IFCBRIDGE",963979645:"IFCBRIDGEPART",4031249490:"IFCBUILDING",3299480353:"IFCBUILDINGELEMENT",2979338954:"IFCBUILDINGELEMENTPART",39481116:"IFCBUILDINGELEMENTPARTTYPE",1095909175:"IFCBUILDINGELEMENTPROXY",1909888760:"IFCBUILDINGELEMENTPROXYTYPE",1950629157:"IFCBUILDINGELEMENTTYPE",3124254112:"IFCBUILDINGSTOREY",1177604601:"IFCBUILDINGSYSTEM",2938176219:"IFCBURNER",2188180465:"IFCBURNERTYPE",2898889636:"IFCCSHAPEPROFILEDEF",635142910:"IFCCABLECARRIERFITTING",395041908:"IFCCABLECARRIERFITTINGTYPE",3758799889:"IFCCABLECARRIERSEGMENT",3293546465:"IFCCABLECARRIERSEGMENTTYPE",1051757585:"IFCCABLEFITTING",2674252688:"IFCCABLEFITTINGTYPE",4217484030:"IFCCABLESEGMENT",1285652485:"IFCCABLESEGMENTTYPE",3999819293:"IFCCAISSONFOUNDATION",3203706013:"IFCCAISSONFOUNDATIONTYPE",1123145078:"IFCCARTESIANPOINT",574549367:"IFCCARTESIANPOINTLIST",1675464909:"IFCCARTESIANPOINTLIST2D",2059837836:"IFCCARTESIANPOINTLIST3D",59481748:"IFCCARTESIANTRANSFORMATIONOPERATOR",3749851601:"IFCCARTESIANTRANSFORMATIONOPERATOR2D",3486308946:"IFCCARTESIANTRANSFORMATIONOPERATOR2DNONUNIFORM",3331915920:"IFCCARTESIANTRANSFORMATIONOPERATOR3D",1416205885:"IFCCARTESIANTRANSFORMATIONOPERATOR3DNONUNIFORM",3150382593:"IFCCENTERLINEPROFILEDEF",3902619387:"IFCCHILLER",2951183804:"IFCCHILLERTYPE",3296154744:"IFCCHIMNEY",2197970202:"IFCCHIMNEYTYPE",2611217952:"IFCCIRCLE",2937912522:"IFCCIRCLEHOLLOWPROFILEDEF",1383045692:"IFCCIRCLEPROFILEDEF",1062206242:"IFCCIRCULARARCSEGMENT2D",1677625105:"IFCCIVILELEMENT",3893394355:"IFCCIVILELEMENTTYPE",747523909:"IFCCLASSIFICATION",647927063:"IFCCLASSIFICATIONREFERENCE",2205249479:"IFCCLOSEDSHELL",639361253:"IFCCOIL",2301859152:"IFCCOILTYPE",776857604:"IFCCOLOURRGB",3285139300:"IFCCOLOURRGBLIST",3264961684:"IFCCOLOURSPECIFICATION",843113511:"IFCCOLUMN",905975707:"IFCCOLUMNSTANDARDCASE",300633059:"IFCCOLUMNTYPE",3221913625:"IFCCOMMUNICATIONSAPPLIANCE",400855858:"IFCCOMMUNICATIONSAPPLIANCETYPE",2542286263:"IFCCOMPLEXPROPERTY",3875453745:"IFCCOMPLEXPROPERTYTEMPLATE",3732776249:"IFCCOMPOSITECURVE",15328376:"IFCCOMPOSITECURVEONSURFACE",2485617015:"IFCCOMPOSITECURVESEGMENT",1485152156:"IFCCOMPOSITEPROFILEDEF",3571504051:"IFCCOMPRESSOR",3850581409:"IFCCOMPRESSORTYPE",2272882330:"IFCCONDENSER",2816379211:"IFCCONDENSERTYPE",2510884976:"IFCCONIC",370225590:"IFCCONNECTEDFACESET",1981873012:"IFCCONNECTIONCURVEGEOMETRY",2859738748:"IFCCONNECTIONGEOMETRY",45288368:"IFCCONNECTIONPOINTECCENTRICITY",2614616156:"IFCCONNECTIONPOINTGEOMETRY",2732653382:"IFCCONNECTIONSURFACEGEOMETRY",775493141:"IFCCONNECTIONVOLUMEGEOMETRY",1959218052:"IFCCONSTRAINT",3898045240:"IFCCONSTRUCTIONEQUIPMENTRESOURCE",2185764099:"IFCCONSTRUCTIONEQUIPMENTRESOURCETYPE",1060000209:"IFCCONSTRUCTIONMATERIALRESOURCE",4105962743:"IFCCONSTRUCTIONMATERIALRESOURCETYPE",488727124:"IFCCONSTRUCTIONPRODUCTRESOURCE",1525564444:"IFCCONSTRUCTIONPRODUCTRESOURCETYPE",2559216714:"IFCCONSTRUCTIONRESOURCE",2574617495:"IFCCONSTRUCTIONRESOURCETYPE",3419103109:"IFCCONTEXT",3050246964:"IFCCONTEXTDEPENDENTUNIT",3293443760:"IFCCONTROL",25142252:"IFCCONTROLLER",578613899:"IFCCONTROLLERTYPE",2889183280:"IFCCONVERSIONBASEDUNIT",2713554722:"IFCCONVERSIONBASEDUNITWITHOFFSET",4136498852:"IFCCOOLEDBEAM",335055490:"IFCCOOLEDBEAMTYPE",3640358203:"IFCCOOLINGTOWER",2954562838:"IFCCOOLINGTOWERTYPE",1785450214:"IFCCOORDINATEOPERATION",1466758467:"IFCCOORDINATEREFERENCESYSTEM",3895139033:"IFCCOSTITEM",1419761937:"IFCCOSTSCHEDULE",602808272:"IFCCOSTVALUE",1973544240:"IFCCOVERING",1916426348:"IFCCOVERINGTYPE",3295246426:"IFCCREWRESOURCE",1815067380:"IFCCREWRESOURCETYPE",2506170314:"IFCCSGPRIMITIVE3D",2147822146:"IFCCSGSOLID",539742890:"IFCCURRENCYRELATIONSHIP",3495092785:"IFCCURTAINWALL",1457835157:"IFCCURTAINWALLTYPE",2601014836:"IFCCURVE",2827736869:"IFCCURVEBOUNDEDPLANE",2629017746:"IFCCURVEBOUNDEDSURFACE",1186437898:"IFCCURVESEGMENT2D",3800577675:"IFCCURVESTYLE",1105321065:"IFCCURVESTYLEFONT",2367409068:"IFCCURVESTYLEFONTANDSCALING",3510044353:"IFCCURVESTYLEFONTPATTERN",1213902940:"IFCCYLINDRICALSURFACE",4074379575:"IFCDAMPER",3961806047:"IFCDAMPERTYPE",3426335179:"IFCDEEPFOUNDATION",1306400036:"IFCDEEPFOUNDATIONTYPE",3632507154:"IFCDERIVEDPROFILEDEF",1765591967:"IFCDERIVEDUNIT",1045800335:"IFCDERIVEDUNITELEMENT",2949456006:"IFCDIMENSIONALEXPONENTS",32440307:"IFCDIRECTION",1335981549:"IFCDISCRETEACCESSORY",2635815018:"IFCDISCRETEACCESSORYTYPE",1945343521:"IFCDISTANCEEXPRESSION",1052013943:"IFCDISTRIBUTIONCHAMBERELEMENT",1599208980:"IFCDISTRIBUTIONCHAMBERELEMENTTYPE",562808652:"IFCDISTRIBUTIONCIRCUIT",1062813311:"IFCDISTRIBUTIONCONTROLELEMENT",2063403501:"IFCDISTRIBUTIONCONTROLELEMENTTYPE",1945004755:"IFCDISTRIBUTIONELEMENT",3256556792:"IFCDISTRIBUTIONELEMENTTYPE",3040386961:"IFCDISTRIBUTIONFLOWELEMENT",3849074793:"IFCDISTRIBUTIONFLOWELEMENTTYPE",3041715199:"IFCDISTRIBUTIONPORT",3205830791:"IFCDISTRIBUTIONSYSTEM",1154170062:"IFCDOCUMENTINFORMATION",770865208:"IFCDOCUMENTINFORMATIONRELATIONSHIP",3732053477:"IFCDOCUMENTREFERENCE",395920057:"IFCDOOR",2963535650:"IFCDOORLININGPROPERTIES",1714330368:"IFCDOORPANELPROPERTIES",3242481149:"IFCDOORSTANDARDCASE",526551008:"IFCDOORSTYLE",2323601079:"IFCDOORTYPE",445594917:"IFCDRAUGHTINGPREDEFINEDCOLOUR",4006246654:"IFCDRAUGHTINGPREDEFINEDCURVEFONT",342316401:"IFCDUCTFITTING",869906466:"IFCDUCTFITTINGTYPE",3518393246:"IFCDUCTSEGMENT",3760055223:"IFCDUCTSEGMENTTYPE",1360408905:"IFCDUCTSILENCER",2030761528:"IFCDUCTSILENCERTYPE",3900360178:"IFCEDGE",476780140:"IFCEDGECURVE",1472233963:"IFCEDGELOOP",1904799276:"IFCELECTRICAPPLIANCE",663422040:"IFCELECTRICAPPLIANCETYPE",862014818:"IFCELECTRICDISTRIBUTIONBOARD",2417008758:"IFCELECTRICDISTRIBUTIONBOARDTYPE",3310460725:"IFCELECTRICFLOWSTORAGEDEVICE",3277789161:"IFCELECTRICFLOWSTORAGEDEVICETYPE",264262732:"IFCELECTRICGENERATOR",1534661035:"IFCELECTRICGENERATORTYPE",402227799:"IFCELECTRICMOTOR",1217240411:"IFCELECTRICMOTORTYPE",1003880860:"IFCELECTRICTIMECONTROL",712377611:"IFCELECTRICTIMECONTROLTYPE",1758889154:"IFCELEMENT",4123344466:"IFCELEMENTASSEMBLY",2397081782:"IFCELEMENTASSEMBLYTYPE",1623761950:"IFCELEMENTCOMPONENT",2590856083:"IFCELEMENTCOMPONENTTYPE",1883228015:"IFCELEMENTQUANTITY",339256511:"IFCELEMENTTYPE",2777663545:"IFCELEMENTARYSURFACE",1704287377:"IFCELLIPSE",2835456948:"IFCELLIPSEPROFILEDEF",1658829314:"IFCENERGYCONVERSIONDEVICE",2107101300:"IFCENERGYCONVERSIONDEVICETYPE",2814081492:"IFCENGINE",132023988:"IFCENGINETYPE",3747195512:"IFCEVAPORATIVECOOLER",3174744832:"IFCEVAPORATIVECOOLERTYPE",484807127:"IFCEVAPORATOR",3390157468:"IFCEVAPORATORTYPE",4148101412:"IFCEVENT",211053100:"IFCEVENTTIME",4024345920:"IFCEVENTTYPE",297599258:"IFCEXTENDEDPROPERTIES",4294318154:"IFCEXTERNALINFORMATION",3200245327:"IFCEXTERNALREFERENCE",1437805879:"IFCEXTERNALREFERENCERELATIONSHIP",1209101575:"IFCEXTERNALSPATIALELEMENT",2853485674:"IFCEXTERNALSPATIALSTRUCTUREELEMENT",2242383968:"IFCEXTERNALLYDEFINEDHATCHSTYLE",1040185647:"IFCEXTERNALLYDEFINEDSURFACESTYLE",3548104201:"IFCEXTERNALLYDEFINEDTEXTFONT",477187591:"IFCEXTRUDEDAREASOLID",2804161546:"IFCEXTRUDEDAREASOLIDTAPERED",2556980723:"IFCFACE",2047409740:"IFCFACEBASEDSURFACEMODEL",1809719519:"IFCFACEBOUND",803316827:"IFCFACEOUTERBOUND",3008276851:"IFCFACESURFACE",807026263:"IFCFACETEDBREP",3737207727:"IFCFACETEDBREPWITHVOIDS",24185140:"IFCFACILITY",1310830890:"IFCFACILITYPART",4219587988:"IFCFAILURECONNECTIONCONDITION",3415622556:"IFCFAN",346874300:"IFCFANTYPE",647756555:"IFCFASTENER",2489546625:"IFCFASTENERTYPE",2827207264:"IFCFEATUREELEMENT",2143335405:"IFCFEATUREELEMENTADDITION",1287392070:"IFCFEATUREELEMENTSUBTRACTION",738692330:"IFCFILLAREASTYLE",374418227:"IFCFILLAREASTYLEHATCHING",315944413:"IFCFILLAREASTYLETILES",819412036:"IFCFILTER",1810631287:"IFCFILTERTYPE",1426591983:"IFCFIRESUPPRESSIONTERMINAL",4222183408:"IFCFIRESUPPRESSIONTERMINALTYPE",2652556860:"IFCFIXEDREFERENCESWEPTAREASOLID",2058353004:"IFCFLOWCONTROLLER",3907093117:"IFCFLOWCONTROLLERTYPE",4278956645:"IFCFLOWFITTING",3198132628:"IFCFLOWFITTINGTYPE",182646315:"IFCFLOWINSTRUMENT",4037862832:"IFCFLOWINSTRUMENTTYPE",2188021234:"IFCFLOWMETER",3815607619:"IFCFLOWMETERTYPE",3132237377:"IFCFLOWMOVINGDEVICE",1482959167:"IFCFLOWMOVINGDEVICETYPE",987401354:"IFCFLOWSEGMENT",1834744321:"IFCFLOWSEGMENTTYPE",707683696:"IFCFLOWSTORAGEDEVICE",1339347760:"IFCFLOWSTORAGEDEVICETYPE",2223149337:"IFCFLOWTERMINAL",2297155007:"IFCFLOWTERMINALTYPE",3508470533:"IFCFLOWTREATMENTDEVICE",3009222698:"IFCFLOWTREATMENTDEVICETYPE",900683007:"IFCFOOTING",1893162501:"IFCFOOTINGTYPE",263784265:"IFCFURNISHINGELEMENT",4238390223:"IFCFURNISHINGELEMENTTYPE",1509553395:"IFCFURNITURE",1268542332:"IFCFURNITURETYPE",3493046030:"IFCGEOGRAPHICELEMENT",4095422895:"IFCGEOGRAPHICELEMENTTYPE",987898635:"IFCGEOMETRICCURVESET",3448662350:"IFCGEOMETRICREPRESENTATIONCONTEXT",2453401579:"IFCGEOMETRICREPRESENTATIONITEM",4142052618:"IFCGEOMETRICREPRESENTATIONSUBCONTEXT",3590301190:"IFCGEOMETRICSET",3009204131:"IFCGRID",852622518:"IFCGRIDAXIS",178086475:"IFCGRIDPLACEMENT",2706460486:"IFCGROUP",812098782:"IFCHALFSPACESOLID",3319311131:"IFCHEATEXCHANGER",1251058090:"IFCHEATEXCHANGERTYPE",2068733104:"IFCHUMIDIFIER",1806887404:"IFCHUMIDIFIERTYPE",1484403080:"IFCISHAPEPROFILEDEF",3905492369:"IFCIMAGETEXTURE",3570813810:"IFCINDEXEDCOLOURMAP",2571569899:"IFCINDEXEDPOLYCURVE",178912537:"IFCINDEXEDPOLYGONALFACE",2294589976:"IFCINDEXEDPOLYGONALFACEWITHVOIDS",1437953363:"IFCINDEXEDTEXTUREMAP",2133299955:"IFCINDEXEDTRIANGLETEXTUREMAP",4175244083:"IFCINTERCEPTOR",3946677679:"IFCINTERCEPTORTYPE",3113134337:"IFCINTERSECTIONCURVE",2391368822:"IFCINVENTORY",3741457305:"IFCIRREGULARTIMESERIES",3020489413:"IFCIRREGULARTIMESERIESVALUE",2176052936:"IFCJUNCTIONBOX",4288270099:"IFCJUNCTIONBOXTYPE",572779678:"IFCLSHAPEPROFILEDEF",3827777499:"IFCLABORRESOURCE",428585644:"IFCLABORRESOURCETYPE",1585845231:"IFCLAGTIME",76236018:"IFCLAMP",1051575348:"IFCLAMPTYPE",2655187982:"IFCLIBRARYINFORMATION",3452421091:"IFCLIBRARYREFERENCE",4162380809:"IFCLIGHTDISTRIBUTIONDATA",629592764:"IFCLIGHTFIXTURE",1161773419:"IFCLIGHTFIXTURETYPE",1566485204:"IFCLIGHTINTENSITYDISTRIBUTION",1402838566:"IFCLIGHTSOURCE",125510826:"IFCLIGHTSOURCEAMBIENT",2604431987:"IFCLIGHTSOURCEDIRECTIONAL",4266656042:"IFCLIGHTSOURCEGONIOMETRIC",1520743889:"IFCLIGHTSOURCEPOSITIONAL",3422422726:"IFCLIGHTSOURCESPOT",1281925730:"IFCLINE",3092502836:"IFCLINESEGMENT2D",388784114:"IFCLINEARPLACEMENT",1154579445:"IFCLINEARPOSITIONINGELEMENT",2624227202:"IFCLOCALPLACEMENT",1008929658:"IFCLOOP",1425443689:"IFCMANIFOLDSOLIDBREP",3057273783:"IFCMAPCONVERSION",2347385850:"IFCMAPPEDITEM",1838606355:"IFCMATERIAL",1847130766:"IFCMATERIALCLASSIFICATIONRELATIONSHIP",3708119e3:"IFCMATERIALCONSTITUENT",2852063980:"IFCMATERIALCONSTITUENTSET",760658860:"IFCMATERIALDEFINITION",2022407955:"IFCMATERIALDEFINITIONREPRESENTATION",248100487:"IFCMATERIALLAYER",3303938423:"IFCMATERIALLAYERSET",1303795690:"IFCMATERIALLAYERSETUSAGE",1847252529:"IFCMATERIALLAYERWITHOFFSETS",2199411900:"IFCMATERIALLIST",2235152071:"IFCMATERIALPROFILE",164193824:"IFCMATERIALPROFILESET",3079605661:"IFCMATERIALPROFILESETUSAGE",3404854881:"IFCMATERIALPROFILESETUSAGETAPERING",552965576:"IFCMATERIALPROFILEWITHOFFSETS",3265635763:"IFCMATERIALPROPERTIES",853536259:"IFCMATERIALRELATIONSHIP",1507914824:"IFCMATERIALUSAGEDEFINITION",2597039031:"IFCMEASUREWITHUNIT",377706215:"IFCMECHANICALFASTENER",2108223431:"IFCMECHANICALFASTENERTYPE",1437502449:"IFCMEDICALDEVICE",1114901282:"IFCMEDICALDEVICETYPE",1073191201:"IFCMEMBER",1911478936:"IFCMEMBERSTANDARDCASE",3181161470:"IFCMEMBERTYPE",3368373690:"IFCMETRIC",2998442950:"IFCMIRROREDPROFILEDEF",2706619895:"IFCMONETARYUNIT",2474470126:"IFCMOTORCONNECTION",977012517:"IFCMOTORCONNECTIONTYPE",1918398963:"IFCNAMEDUNIT",3888040117:"IFCOBJECT",219451334:"IFCOBJECTDEFINITION",3701648758:"IFCOBJECTPLACEMENT",2251480897:"IFCOBJECTIVE",4143007308:"IFCOCCUPANT",590820931:"IFCOFFSETCURVE",3388369263:"IFCOFFSETCURVE2D",3505215534:"IFCOFFSETCURVE3D",2485787929:"IFCOFFSETCURVEBYDISTANCES",2665983363:"IFCOPENSHELL",3588315303:"IFCOPENINGELEMENT",3079942009:"IFCOPENINGSTANDARDCASE",4251960020:"IFCORGANIZATION",1411181986:"IFCORGANIZATIONRELATIONSHIP",643959842:"IFCORIENTATIONEXPRESSION",1029017970:"IFCORIENTEDEDGE",144952367:"IFCOUTERBOUNDARYCURVE",3694346114:"IFCOUTLET",2837617999:"IFCOUTLETTYPE",1207048766:"IFCOWNERHISTORY",2529465313:"IFCPARAMETERIZEDPROFILEDEF",2519244187:"IFCPATH",1682466193:"IFCPCURVE",2382730787:"IFCPERFORMANCEHISTORY",3566463478:"IFCPERMEABLECOVERINGPROPERTIES",3327091369:"IFCPERMIT",2077209135:"IFCPERSON",101040310:"IFCPERSONANDORGANIZATION",3021840470:"IFCPHYSICALCOMPLEXQUANTITY",2483315170:"IFCPHYSICALQUANTITY",2226359599:"IFCPHYSICALSIMPLEQUANTITY",1687234759:"IFCPILE",1158309216:"IFCPILETYPE",310824031:"IFCPIPEFITTING",804291784:"IFCPIPEFITTINGTYPE",3612865200:"IFCPIPESEGMENT",4231323485:"IFCPIPESEGMENTTYPE",597895409:"IFCPIXELTEXTURE",2004835150:"IFCPLACEMENT",603570806:"IFCPLANARBOX",1663979128:"IFCPLANAREXTENT",220341763:"IFCPLANE",3171933400:"IFCPLATE",1156407060:"IFCPLATESTANDARDCASE",4017108033:"IFCPLATETYPE",2067069095:"IFCPOINT",4022376103:"IFCPOINTONCURVE",1423911732:"IFCPOINTONSURFACE",2924175390:"IFCPOLYLOOP",2775532180:"IFCPOLYGONALBOUNDEDHALFSPACE",2839578677:"IFCPOLYGONALFACESET",3724593414:"IFCPOLYLINE",3740093272:"IFCPORT",1946335990:"IFCPOSITIONINGELEMENT",3355820592:"IFCPOSTALADDRESS",759155922:"IFCPREDEFINEDCOLOUR",2559016684:"IFCPREDEFINEDCURVEFONT",3727388367:"IFCPREDEFINEDITEM",3778827333:"IFCPREDEFINEDPROPERTIES",3967405729:"IFCPREDEFINEDPROPERTYSET",1775413392:"IFCPREDEFINEDTEXTFONT",677532197:"IFCPRESENTATIONITEM",2022622350:"IFCPRESENTATIONLAYERASSIGNMENT",1304840413:"IFCPRESENTATIONLAYERWITHSTYLE",3119450353:"IFCPRESENTATIONSTYLE",2417041796:"IFCPRESENTATIONSTYLEASSIGNMENT",2744685151:"IFCPROCEDURE",569719735:"IFCPROCEDURETYPE",2945172077:"IFCPROCESS",4208778838:"IFCPRODUCT",673634403:"IFCPRODUCTDEFINITIONSHAPE",2095639259:"IFCPRODUCTREPRESENTATION",3958567839:"IFCPROFILEDEF",2802850158:"IFCPROFILEPROPERTIES",103090709:"IFCPROJECT",653396225:"IFCPROJECTLIBRARY",2904328755:"IFCPROJECTORDER",3843373140:"IFCPROJECTEDCRS",3651124850:"IFCPROJECTIONELEMENT",2598011224:"IFCPROPERTY",986844984:"IFCPROPERTYABSTRACTION",871118103:"IFCPROPERTYBOUNDEDVALUE",1680319473:"IFCPROPERTYDEFINITION",148025276:"IFCPROPERTYDEPENDENCYRELATIONSHIP",4166981789:"IFCPROPERTYENUMERATEDVALUE",3710013099:"IFCPROPERTYENUMERATION",2752243245:"IFCPROPERTYLISTVALUE",941946838:"IFCPROPERTYREFERENCEVALUE",1451395588:"IFCPROPERTYSET",3357820518:"IFCPROPERTYSETDEFINITION",492091185:"IFCPROPERTYSETTEMPLATE",3650150729:"IFCPROPERTYSINGLEVALUE",110355661:"IFCPROPERTYTABLEVALUE",3521284610:"IFCPROPERTYTEMPLATE",1482703590:"IFCPROPERTYTEMPLATEDEFINITION",738039164:"IFCPROTECTIVEDEVICE",2295281155:"IFCPROTECTIVEDEVICETRIPPINGUNIT",655969474:"IFCPROTECTIVEDEVICETRIPPINGUNITTYPE",1842657554:"IFCPROTECTIVEDEVICETYPE",3219374653:"IFCPROXY",90941305:"IFCPUMP",2250791053:"IFCPUMPTYPE",2044713172:"IFCQUANTITYAREA",2093928680:"IFCQUANTITYCOUNT",931644368:"IFCQUANTITYLENGTH",2090586900:"IFCQUANTITYSET",3252649465:"IFCQUANTITYTIME",2405470396:"IFCQUANTITYVOLUME",825690147:"IFCQUANTITYWEIGHT",2262370178:"IFCRAILING",2893384427:"IFCRAILINGTYPE",3024970846:"IFCRAMP",3283111854:"IFCRAMPFLIGHT",2324767716:"IFCRAMPFLIGHTTYPE",1469900589:"IFCRAMPTYPE",1232101972:"IFCRATIONALBSPLINECURVEWITHKNOTS",683857671:"IFCRATIONALBSPLINESURFACEWITHKNOTS",2770003689:"IFCRECTANGLEHOLLOWPROFILEDEF",3615266464:"IFCRECTANGLEPROFILEDEF",2798486643:"IFCRECTANGULARPYRAMID",3454111270:"IFCRECTANGULARTRIMMEDSURFACE",3915482550:"IFCRECURRENCEPATTERN",2433181523:"IFCREFERENCE",4021432810:"IFCREFERENT",3413951693:"IFCREGULARTIMESERIES",1580146022:"IFCREINFORCEMENTBARPROPERTIES",3765753017:"IFCREINFORCEMENTDEFINITIONPROPERTIES",979691226:"IFCREINFORCINGBAR",2572171363:"IFCREINFORCINGBARTYPE",3027567501:"IFCREINFORCINGELEMENT",964333572:"IFCREINFORCINGELEMENTTYPE",2320036040:"IFCREINFORCINGMESH",2310774935:"IFCREINFORCINGMESHTYPE",160246688:"IFCRELAGGREGATES",3939117080:"IFCRELASSIGNS",1683148259:"IFCRELASSIGNSTOACTOR",2495723537:"IFCRELASSIGNSTOCONTROL",1307041759:"IFCRELASSIGNSTOGROUP",1027710054:"IFCRELASSIGNSTOGROUPBYFACTOR",4278684876:"IFCRELASSIGNSTOPROCESS",2857406711:"IFCRELASSIGNSTOPRODUCT",205026976:"IFCRELASSIGNSTORESOURCE",1865459582:"IFCRELASSOCIATES",4095574036:"IFCRELASSOCIATESAPPROVAL",919958153:"IFCRELASSOCIATESCLASSIFICATION",2728634034:"IFCRELASSOCIATESCONSTRAINT",982818633:"IFCRELASSOCIATESDOCUMENT",3840914261:"IFCRELASSOCIATESLIBRARY",2655215786:"IFCRELASSOCIATESMATERIAL",826625072:"IFCRELCONNECTS",1204542856:"IFCRELCONNECTSELEMENTS",3945020480:"IFCRELCONNECTSPATHELEMENTS",4201705270:"IFCRELCONNECTSPORTTOELEMENT",3190031847:"IFCRELCONNECTSPORTS",2127690289:"IFCRELCONNECTSSTRUCTURALACTIVITY",1638771189:"IFCRELCONNECTSSTRUCTURALMEMBER",504942748:"IFCRELCONNECTSWITHECCENTRICITY",3678494232:"IFCRELCONNECTSWITHREALIZINGELEMENTS",3242617779:"IFCRELCONTAINEDINSPATIALSTRUCTURE",886880790:"IFCRELCOVERSBLDGELEMENTS",2802773753:"IFCRELCOVERSSPACES",2565941209:"IFCRELDECLARES",2551354335:"IFCRELDECOMPOSES",693640335:"IFCRELDEFINES",1462361463:"IFCRELDEFINESBYOBJECT",4186316022:"IFCRELDEFINESBYPROPERTIES",307848117:"IFCRELDEFINESBYTEMPLATE",781010003:"IFCRELDEFINESBYTYPE",3940055652:"IFCRELFILLSELEMENT",279856033:"IFCRELFLOWCONTROLELEMENTS",427948657:"IFCRELINTERFERESELEMENTS",3268803585:"IFCRELNESTS",1441486842:"IFCRELPOSITIONS",750771296:"IFCRELPROJECTSELEMENT",1245217292:"IFCRELREFERENCEDINSPATIALSTRUCTURE",4122056220:"IFCRELSEQUENCE",366585022:"IFCRELSERVICESBUILDINGS",3451746338:"IFCRELSPACEBOUNDARY",3523091289:"IFCRELSPACEBOUNDARY1STLEVEL",1521410863:"IFCRELSPACEBOUNDARY2NDLEVEL",1401173127:"IFCRELVOIDSELEMENT",478536968:"IFCRELATIONSHIP",816062949:"IFCREPARAMETRISEDCOMPOSITECURVESEGMENT",1076942058:"IFCREPRESENTATION",3377609919:"IFCREPRESENTATIONCONTEXT",3008791417:"IFCREPRESENTATIONITEM",1660063152:"IFCREPRESENTATIONMAP",2914609552:"IFCRESOURCE",2943643501:"IFCRESOURCEAPPROVALRELATIONSHIP",1608871552:"IFCRESOURCECONSTRAINTRELATIONSHIP",2439245199:"IFCRESOURCELEVELRELATIONSHIP",1042787934:"IFCRESOURCETIME",1856042241:"IFCREVOLVEDAREASOLID",3243963512:"IFCREVOLVEDAREASOLIDTAPERED",4158566097:"IFCRIGHTCIRCULARCONE",3626867408:"IFCRIGHTCIRCULARCYLINDER",2016517767:"IFCROOF",2781568857:"IFCROOFTYPE",2341007311:"IFCROOT",2778083089:"IFCROUNDEDRECTANGLEPROFILEDEF",448429030:"IFCSIUNIT",3053780830:"IFCSANITARYTERMINAL",1768891740:"IFCSANITARYTERMINALTYPE",1054537805:"IFCSCHEDULINGTIME",2157484638:"IFCSEAMCURVE",2042790032:"IFCSECTIONPROPERTIES",4165799628:"IFCSECTIONREINFORCEMENTPROPERTIES",1862484736:"IFCSECTIONEDSOLID",1290935644:"IFCSECTIONEDSOLIDHORIZONTAL",1509187699:"IFCSECTIONEDSPINE",4086658281:"IFCSENSOR",1783015770:"IFCSENSORTYPE",1329646415:"IFCSHADINGDEVICE",4074543187:"IFCSHADINGDEVICETYPE",867548509:"IFCSHAPEASPECT",3982875396:"IFCSHAPEMODEL",4240577450:"IFCSHAPEREPRESENTATION",4124623270:"IFCSHELLBASEDSURFACEMODEL",3692461612:"IFCSIMPLEPROPERTY",3663146110:"IFCSIMPLEPROPERTYTEMPLATE",4097777520:"IFCSITE",1529196076:"IFCSLAB",3127900445:"IFCSLABELEMENTEDCASE",3027962421:"IFCSLABSTANDARDCASE",2533589738:"IFCSLABTYPE",2609359061:"IFCSLIPPAGECONNECTIONCONDITION",3420628829:"IFCSOLARDEVICE",1072016465:"IFCSOLARDEVICETYPE",723233188:"IFCSOLIDMODEL",3856911033:"IFCSPACE",1999602285:"IFCSPACEHEATER",1305183839:"IFCSPACEHEATERTYPE",3812236995:"IFCSPACETYPE",1412071761:"IFCSPATIALELEMENT",710998568:"IFCSPATIALELEMENTTYPE",2706606064:"IFCSPATIALSTRUCTUREELEMENT",3893378262:"IFCSPATIALSTRUCTUREELEMENTTYPE",463610769:"IFCSPATIALZONE",2481509218:"IFCSPATIALZONETYPE",451544542:"IFCSPHERE",4015995234:"IFCSPHERICALSURFACE",1404847402:"IFCSTACKTERMINAL",3112655638:"IFCSTACKTERMINALTYPE",331165859:"IFCSTAIR",4252922144:"IFCSTAIRFLIGHT",1039846685:"IFCSTAIRFLIGHTTYPE",338393293:"IFCSTAIRTYPE",682877961:"IFCSTRUCTURALACTION",3544373492:"IFCSTRUCTURALACTIVITY",2515109513:"IFCSTRUCTURALANALYSISMODEL",1179482911:"IFCSTRUCTURALCONNECTION",2273995522:"IFCSTRUCTURALCONNECTIONCONDITION",1004757350:"IFCSTRUCTURALCURVEACTION",4243806635:"IFCSTRUCTURALCURVECONNECTION",214636428:"IFCSTRUCTURALCURVEMEMBER",2445595289:"IFCSTRUCTURALCURVEMEMBERVARYING",2757150158:"IFCSTRUCTURALCURVEREACTION",3136571912:"IFCSTRUCTURALITEM",1807405624:"IFCSTRUCTURALLINEARACTION",2162789131:"IFCSTRUCTURALLOAD",385403989:"IFCSTRUCTURALLOADCASE",3478079324:"IFCSTRUCTURALLOADCONFIGURATION",1252848954:"IFCSTRUCTURALLOADGROUP",1595516126:"IFCSTRUCTURALLOADLINEARFORCE",609421318:"IFCSTRUCTURALLOADORRESULT",2668620305:"IFCSTRUCTURALLOADPLANARFORCE",2473145415:"IFCSTRUCTURALLOADSINGLEDISPLACEMENT",1973038258:"IFCSTRUCTURALLOADSINGLEDISPLACEMENTDISTORTION",1597423693:"IFCSTRUCTURALLOADSINGLEFORCE",1190533807:"IFCSTRUCTURALLOADSINGLEFORCEWARPING",2525727697:"IFCSTRUCTURALLOADSTATIC",3408363356:"IFCSTRUCTURALLOADTEMPERATURE",530289379:"IFCSTRUCTURALMEMBER",1621171031:"IFCSTRUCTURALPLANARACTION",2082059205:"IFCSTRUCTURALPOINTACTION",734778138:"IFCSTRUCTURALPOINTCONNECTION",1235345126:"IFCSTRUCTURALPOINTREACTION",3689010777:"IFCSTRUCTURALREACTION",2986769608:"IFCSTRUCTURALRESULTGROUP",3657597509:"IFCSTRUCTURALSURFACEACTION",1975003073:"IFCSTRUCTURALSURFACECONNECTION",3979015343:"IFCSTRUCTURALSURFACEMEMBER",2218152070:"IFCSTRUCTURALSURFACEMEMBERVARYING",603775116:"IFCSTRUCTURALSURFACEREACTION",2830218821:"IFCSTYLEMODEL",3958052878:"IFCSTYLEDITEM",3049322572:"IFCSTYLEDREPRESENTATION",148013059:"IFCSUBCONTRACTRESOURCE",4095615324:"IFCSUBCONTRACTRESOURCETYPE",2233826070:"IFCSUBEDGE",2513912981:"IFCSURFACE",699246055:"IFCSURFACECURVE",2028607225:"IFCSURFACECURVESWEPTAREASOLID",3101698114:"IFCSURFACEFEATURE",2809605785:"IFCSURFACEOFLINEAREXTRUSION",4124788165:"IFCSURFACEOFREVOLUTION",2934153892:"IFCSURFACEREINFORCEMENTAREA",1300840506:"IFCSURFACESTYLE",3303107099:"IFCSURFACESTYLELIGHTING",1607154358:"IFCSURFACESTYLEREFRACTION",1878645084:"IFCSURFACESTYLERENDERING",846575682:"IFCSURFACESTYLESHADING",1351298697:"IFCSURFACESTYLEWITHTEXTURES",626085974:"IFCSURFACETEXTURE",2247615214:"IFCSWEPTAREASOLID",1260650574:"IFCSWEPTDISKSOLID",1096409881:"IFCSWEPTDISKSOLIDPOLYGONAL",230924584:"IFCSWEPTSURFACE",1162798199:"IFCSWITCHINGDEVICE",2315554128:"IFCSWITCHINGDEVICETYPE",2254336722:"IFCSYSTEM",413509423:"IFCSYSTEMFURNITUREELEMENT",1580310250:"IFCSYSTEMFURNITUREELEMENTTYPE",3071757647:"IFCTSHAPEPROFILEDEF",985171141:"IFCTABLE",2043862942:"IFCTABLECOLUMN",531007025:"IFCTABLEROW",812556717:"IFCTANK",5716631:"IFCTANKTYPE",3473067441:"IFCTASK",1549132990:"IFCTASKTIME",2771591690:"IFCTASKTIMERECURRING",3206491090:"IFCTASKTYPE",912023232:"IFCTELECOMADDRESS",3824725483:"IFCTENDON",2347447852:"IFCTENDONANCHOR",3081323446:"IFCTENDONANCHORTYPE",3663046924:"IFCTENDONCONDUIT",2281632017:"IFCTENDONCONDUITTYPE",2415094496:"IFCTENDONTYPE",2387106220:"IFCTESSELLATEDFACESET",901063453:"IFCTESSELLATEDITEM",4282788508:"IFCTEXTLITERAL",3124975700:"IFCTEXTLITERALWITHEXTENT",1447204868:"IFCTEXTSTYLE",1983826977:"IFCTEXTSTYLEFONTMODEL",2636378356:"IFCTEXTSTYLEFORDEFINEDFONT",1640371178:"IFCTEXTSTYLETEXTMODEL",280115917:"IFCTEXTURECOORDINATE",1742049831:"IFCTEXTURECOORDINATEGENERATOR",2552916305:"IFCTEXTUREMAP",1210645708:"IFCTEXTUREVERTEX",3611470254:"IFCTEXTUREVERTEXLIST",1199560280:"IFCTIMEPERIOD",3101149627:"IFCTIMESERIES",581633288:"IFCTIMESERIESVALUE",1377556343:"IFCTOPOLOGICALREPRESENTATIONITEM",1735638870:"IFCTOPOLOGYREPRESENTATION",1935646853:"IFCTOROIDALSURFACE",3825984169:"IFCTRANSFORMER",1692211062:"IFCTRANSFORMERTYPE",2595432518:"IFCTRANSITIONCURVESEGMENT2D",1620046519:"IFCTRANSPORTELEMENT",2097647324:"IFCTRANSPORTELEMENTTYPE",2715220739:"IFCTRAPEZIUMPROFILEDEF",2916149573:"IFCTRIANGULATEDFACESET",1229763772:"IFCTRIANGULATEDIRREGULARNETWORK",3593883385:"IFCTRIMMEDCURVE",3026737570:"IFCTUBEBUNDLE",1600972822:"IFCTUBEBUNDLETYPE",1628702193:"IFCTYPEOBJECT",3736923433:"IFCTYPEPROCESS",2347495698:"IFCTYPEPRODUCT",3698973494:"IFCTYPERESOURCE",427810014:"IFCUSHAPEPROFILEDEF",180925521:"IFCUNITASSIGNMENT",630975310:"IFCUNITARYCONTROLELEMENT",3179687236:"IFCUNITARYCONTROLELEMENTTYPE",4292641817:"IFCUNITARYEQUIPMENT",1911125066:"IFCUNITARYEQUIPMENTTYPE",4207607924:"IFCVALVE",728799441:"IFCVALVETYPE",1417489154:"IFCVECTOR",2799835756:"IFCVERTEX",2759199220:"IFCVERTEXLOOP",1907098498:"IFCVERTEXPOINT",1530820697:"IFCVIBRATIONDAMPER",3956297820:"IFCVIBRATIONDAMPERTYPE",2391383451:"IFCVIBRATIONISOLATOR",3313531582:"IFCVIBRATIONISOLATORTYPE",2769231204:"IFCVIRTUALELEMENT",891718957:"IFCVIRTUALGRIDINTERSECTION",926996030:"IFCVOIDINGFEATURE",2391406946:"IFCWALL",4156078855:"IFCWALLELEMENTEDCASE",3512223829:"IFCWALLSTANDARDCASE",1898987631:"IFCWALLTYPE",4237592921:"IFCWASTETERMINAL",1133259667:"IFCWASTETERMINALTYPE",3304561284:"IFCWINDOW",336235671:"IFCWINDOWLININGPROPERTIES",512836454:"IFCWINDOWPANELPROPERTIES",486154966:"IFCWINDOWSTANDARDCASE",1299126871:"IFCWINDOWSTYLE",4009809668:"IFCWINDOWTYPE",4088093105:"IFCWORKCALENDAR",1028945134:"IFCWORKCONTROL",4218914973:"IFCWORKPLAN",3342526732:"IFCWORKSCHEDULE",1236880293:"IFCWORKTIME",2543172580:"IFCZSHAPEPROFILEDEF",1033361043:"IFCZONE"},l8=class{constructor(e){this.state=e}getExpressId(e,t){if(!e.index)return;let i=e.index.array;return e.attributes[uRe].getX(i[3*t])}getItemProperties(e,t,i=!1){return this.state.useJSON?Br({},this.state.models[e].jsonData[t]):this.state.api.GetLine(e,t,i)}getAllItemsOfType(e,t,i){return this.state.useJSON?this.getAllItemsOfTypeJSON(e,t,i):this.getAllItemsOfTypeWebIfcAPI(e,t,i)}getPropertySets(e,t,i=!1){return this.state.useJSON?this.getPropertyJSON(e,t,i,zl.psets):this.getPropertyWebIfcAPI(e,t,i,zl.psets)}getTypeProperties(e,t,i=!1){return this.state.useJSON?this.getPropertyJSON(e,t,i,zl.type):this.getPropertyWebIfcAPI(e,t,i,zl.type)}getMaterialsProperties(e,t,i=!1){return this.state.useJSON?this.getPropertyJSON(e,t,i,zl.materials):this.getPropertyWebIfcAPI(e,t,i,zl.materials)}getSpatialStructure(e){return this.state.useJSON?this.getSpatialStructureJSON(e):this.getSpatialStructureWebIfcAPI(e)}getSpatialStructureJSON(e){let t=this.getSpatialTreeChunks(e),i=this.getAllItemsOfTypeJSON(e,pA,!1)[0],r=this.newIfcProject(i);return this.getSpatialNode(e,r,t),Br({},r)}getSpatialStructureWebIfcAPI(e){let t=this.getSpatialTreeChunks(e),i=this.state.api.GetLineIDsWithType(e,pA).get(0),r=this.newIfcProject(i);return this.getSpatialNode(e,r,t),r}getAllItemsOfTypeJSON(e,t,i){let r=this.state.models[e].jsonData,n=sPt[t];if(!n)throw new Error(`Type not found: ${t}`);return this.filterJSONItemsByType(r,n,i)}filterJSONItemsByType(e,t,i){let r=[];return Object.keys(e).forEach((n=>{let s=parseInt(n);e[s].type.toUpperCase()===t&&r.push(i?Br({},e[s]):s)})),r}getItemsByIDJSON(e,t){let i=this.state.models[e].jsonData,r=[];return t.forEach((e=>r.push(Br({},i[e])))),r}getPropertyJSON(e,t,i=!1,r){let n=this.getAllRelatedItemsOfTypeJSON(e,t,r),s=this.getItemsByIDJSON(e,n);return i&&s.forEach((t=>this.getJSONReferencesRecursively(e,t))),s}getJSONReferencesRecursively(e,t){if(null==t)return;let i=Object.keys(t);for(let r=0;r(5===t.type&&(t=this.getItemsByIDJSON(e,[t.value])[0],this.getJSONReferencesRecursively(e,t)),t)))}getPropertyWebIfcAPI(e,t,i=!1,r){return this.getAllRelatedItemsOfTypeWebIfcAPI(e,t,r).map((t=>this.state.api.GetLine(e,t,i)))}getAllItemsOfTypeWebIfcAPI(e,t,i){let r=[],n=this.state.api.GetLineIDsWithType(e,t);for(let e=0;ethis.state.api.GetLine(e,t))):r}newIfcProject(e){return{expressID:e,type:"IFCPROJECT",children:[]}}getSpatialTreeChunks(e){let t={};return this.state.useJSON?(this.getChunksJSON(e,t,zl.aggregates),this.getChunksJSON(e,t,zl.spatial)):(this.getChunksWebIfcAPI(e,t,zl.aggregates),this.getChunksWebIfcAPI(e,t,zl.spatial)),t}getChunksJSON(e,t,i){this.getAllItemsOfTypeJSON(e,i.name,!0).forEach((e=>{this.saveChunk(t,i,e)}))}getChunksWebIfcAPI(e,t,i){let r=this.state.api.GetLineIDsWithType(e,i.name);for(let n=0;ne.value));null==e[r]?e[r]=n:e[r]=e[r].concat(n)}getSpatialNode(e,t,i){this.getChildren(e,t,i,zl.aggregates),this.getChildren(e,t,i,zl.spatial)}getChildren(e,t,i,r){let n=i[t.expressID];null!=n&&(t[r.key]=n.map((t=>{let r=this.newNode(e,t);return this.getSpatialNode(e,r,i),r})))}newNode(e,t){return{expressID:t,type:this.getNodeType(e,t),children:[]}}getNodeType(e,t){if(this.state.useJSON)return this.state.models[e].jsonData[t].type;let i=this.state.models[e].types[t];return f8[i]}getAllRelatedItemsOfTypeJSON(e,t,i){let r=this.getAllItemsOfTypeJSON(e,i.name,!0),n=[];return r.forEach((e=>{this.isRelated(t,e,i)&&this.getRelated(e,i,n)})),n}getAllRelatedItemsOfTypeWebIfcAPI(e,t,i){let r=this.state.api.GetLineIDsWithType(e,i.name),n=[];for(let s=0;si.push(e.value))):i.push(r.value)}isRelated(e,t,i){let r=t[i.related];return Array.isArray(r)?r.map((e=>e.value)).includes(e):r.value===e}},c8=class{constructor(e){this.state=e}getAllTypes(){for(let e in this.state.models){let t=this.state.models[e].types;0==Object.keys(t).length&&this.getAllTypesOfModel(parseInt(e))}}getAllTypesOfModel(e){let t=Object.keys(f8).map((e=>parseInt(e))),i=this.state.models[e].types;t.forEach((t=>{let r=this.state.api.GetLineIDsWithType(e,t);for(let e=0;e{r[e]&&n.push(...r[e])}));let s=this.getCoordinates(e),a=this.modelCoordinates[e];i?n.forEach((e=>s.set([0,0,0],e))):n.forEach((e=>s.set([a[e],a[e+1],a[e+2]],e))),this.getAttributes(e).position.needsUpdate=!0}showAllItems(e){this.modelCoordinates[e]&&(this.resetCoordinates(e),this.getAttributes(e).position.needsUpdate=!0)}hideAllItems(e){this.getCoordinates(e).fill(0),this.getAttributes(e).position.needsUpdate=!0}initializeCoordinates(e){let t=this.getCoordinates(e);this.modelCoordinates[e]||(this.modelCoordinates[e]=new Float32Array(t))}resetCoordinates(e){let t=this.modelCoordinates[e];this.getCoordinates(e).set(t)}getCoordinates(e){return this.getAttributes(e).position.array}getAttributes(e){return this.state.models[e].mesh.geometry.attributes}},d8=class{constructor(){this.state={models:[],api:new n8,useJSON:!1},this.BVH=new h8,this.parser=new a8(this.state,this.BVH),this.subsets=new o8(this.state,this.BVH),this.properties=new l8(this.state),this.types=new c8(this.state),this.hider=new p8(this.state)}parse(e){return ht(this,null,(function*(){let t=yield this.parser.parse(e);this.state.useJSON?this.disposeMemory():this.types.getAllTypes(),this.hider.processCoordinates(t.modelID);let i=new u8(t.geometry,t.material);return i.setIFCManager(this),i}))}setWasmPath(e){this.state.api.SetWasmPath(e)}applyWebIfcConfig(e){this.state.webIfcSettings=e}useJSONData(e=!0){this.state.useJSON=e,this.disposeMemory()}addModelJSONData(e,t){let i=this.state.models[e];i&&(i.jsonData=t)}disposeMemory(){this.state.api=null,this.state.api=new n8}setupThreeMeshBVH(e,t,i){this.BVH.initializeMeshBVH(e,t,i)}close(e,t){this.state.api.CloseModel(e),t&&t.remove(this.state.models[e].mesh),delete this.state.models[e]}getExpressId(e,t){return this.properties.getExpressId(e,t)}getAllItemsOfType(e,t,i){return this.properties.getAllItemsOfType(e,t,i)}getItemProperties(e,t,i=!1){return this.properties.getItemProperties(e,t,i)}getPropertySets(e,t,i=!1){return this.properties.getPropertySets(e,t,i)}getTypeProperties(e,t,i=!1){return this.properties.getTypeProperties(e,t,i)}getMaterialsProperties(e,t,i=!1){return this.properties.getMaterialsProperties(e,t,i)}getIfcType(e,t){let i=this.state.models[e].types[t];return f8[i]}getSpatialStructure(e){return this.properties.getSpatialStructure(e)}getSubset(e,t){return this.subsets.getSubset(e,t)}removeSubset(e,t,i){this.subsets.removeSubset(e,t,i)}createSubset(e){return this.subsets.createSubset(e)}hideItems(e,t){this.hider.hideItems(e,t)}hideAllItems(e){this.hider.hideAllItems(e)}showItems(e,t){this.hider.showItems(e,t)}showAllItems(e){this.hider.showAllItems(e)}},BA=class extends ci{constructor(e){super(e),this.ifcManager=new d8}load(e,t,i,r){let n=this,s=new ui(n.manager);s.setPath(n.path),s.setResponseType("arraybuffer"),s.setRequestHeader(n.requestHeader),s.setWithCredentials(n.withCredentials),s.load(e,(function(i){return ht(this,null,(function*(){try{if("string"==typeof i)throw new Error("IFC files must be given as a buffer!");t(yield n.parse(i))}catch(t){r?r(t):console.error(t),n.manager.itemError(e)}}))}),i,r)}parse(e){return this.ifcManager.parse(e)}},kA=class extends ci{constructor(e){super(e)}load(e,t,i,r){let n=this,s=""===this.path?ks.extractUrlBase(e):this.path,a=new ui(this.manager);a.setPath(this.path),a.setRequestHeader(this.requestHeader),a.setWithCredentials(this.withCredentials),a.load(e,(function(i){try{t(n.parse(i,s))}catch(t){r?r(t):console.error(t),n.manager.itemError(e)}}),i,r)}setMaterialOptions(e){return this.materialOptions=e,this}parse(e,t){let i=e.split("\n"),r={},n=/\s+/,s={};for(let e=0;e=0?t.substring(0,a):t;o=o.toLowerCase();let l=a>=0?t.substring(a+1):"";if(l=l.trim(),"newmtl"===o)r={name:l},s[l]=r;else if("ka"===o||"kd"===o||"ks"===o||"ke"===o){let e=l.split(n,3);r[o]=[parseFloat(e[0]),parseFloat(e[1]),parseFloat(e[2])]}else r[o]=l}let a=new m8(this.resourcePath||t,this.materialOptions);return a.setCrossOrigin(this.crossOrigin),a.setManager(this.manager),a.setMaterials(s),a}},m8=class{constructor(e="",t={}){this.baseUrl=e,this.options=t,this.materialsInfo={},this.materials={},this.materialsArray=[],this.nameLookup={},this.crossOrigin="anonymous",this.side=void 0!==this.options.side?this.options.side:tn,this.wrap=void 0!==this.options.wrap?this.options.wrap:vn}setCrossOrigin(e){return this.crossOrigin=e,this}setManager(e){this.manager=e}setMaterials(e){this.materialsInfo=this.convert(e),this.materials={},this.materialsArray=[],this.nameLookup={}}convert(e){if(!this.options)return e;let t={};for(let i in e){let r=e[i],n={};t[i]=n;for(let e in r){let t=!0,i=r[e],s=e.toLowerCase();switch(s){case"kd":case"ka":case"ks":this.options&&this.options.normalizeRGB&&(i=[i[0]/255,i[1]/255,i[2]/255]),this.options&&this.options.ignoreZeroRGBs&&0===i[0]&&0===i[1]&&0===i[2]&&(t=!1)}t&&(n[s]=i)}}return t}preload(){for(let e in this.materialsInfo)this.create(e)}getIndex(e){return this.nameLookup[e]}getAsArray(){let e=0;for(let t in this.materialsInfo)this.materialsArray[e]=this.create(t),this.nameLookup[t]=e,e++;return this.materialsArray}create(e){return void 0===this.materials[e]&&this.createMaterial_(e),this.materials[e]}createMaterial_(e){let t=this,i=this.materialsInfo[e],r={name:e,side:this.side};function n(e,i){if(r[e])return;let n=t.getTextureParams(i,r),s=t.loadTexture(function(e,t){return"string"!=typeof t||""===t?"":/^https?:\/\//i.test(t)?t:e+t}(t.baseUrl,n.url));s.repeat.copy(n.scale),s.offset.copy(n.offset),s.wrapS=t.wrap,s.wrapT=t.wrap,("map"===e||"emissiveMap"===e)&&(s.encoding=gr),r[e]=s}for(let e in i){let t,s=i[e];if(""!==s)switch(e.toLowerCase()){case"kd":r.color=(new je).fromArray(s).convertSRGBToLinear();break;case"ks":r.specular=(new je).fromArray(s).convertSRGBToLinear();break;case"ke":r.emissive=(new je).fromArray(s).convertSRGBToLinear();break;case"map_kd":n("map",s);break;case"map_ks":n("specularMap",s);break;case"map_ke":n("emissiveMap",s);break;case"norm":n("normalMap",s);break;case"map_bump":case"bump":n("bumpMap",s);break;case"map_d":n("alphaMap",s),r.transparent=!0;break;case"ns":r.shininess=parseFloat(s);break;case"d":t=parseFloat(s),t<1&&(r.opacity=t,r.transparent=!0);break;case"tr":t=parseFloat(s),this.options&&this.options.invertTrProperty&&(t=1-t),t>0&&(r.opacity=1-t,r.transparent=!0)}}return this.materials[e]=new Es(r),this.materials[e]}getTextureParams(e,t){let i,r={scale:new le(1,1),offset:new le(0,0)},n=e.split(/\s+/);return i=n.indexOf("-bm"),i>=0&&(t.bumpScale=parseFloat(n[i+1]),n.splice(i,2)),i=n.indexOf("-s"),i>=0&&(r.scale.set(parseFloat(n[i+1]),parseFloat(n[i+2])),n.splice(i,4)),i=n.indexOf("-o"),i>=0&&(r.offset.set(parseFloat(n[i+1]),parseFloat(n[i+2])),n.splice(i,4)),r.url=n.join(" ").trim(),r}loadTexture(e,t,i,r,n){let s=void 0!==this.manager?this.manager:ao,a=s.getHandler(e);null===a&&(a=new bs(s)),a.setCrossOrigin&&a.setCrossOrigin(this.crossOrigin);let o=a.load(e,i,r,n);return void 0!==t&&(o.mapping=t),o}},oPt=/^[og]\s*(.+)?/,lPt=/^mtllib /,cPt=/^usemtl /,uPt=/^usemap /,hRe=/\s+/,pRe=new A,g8=new A,dRe=new A,fRe=new A,jl=new A,GA=new je;function hPt(){let e={objects:[],object:{},vertices:[],normals:[],colors:[],uvs:[],materials:{},materialLibraries:[],startObject:function(e,t){if(this.object&&!1===this.object.fromDeclaration)return this.object.name=e,void(this.object.fromDeclaration=!1!==t);let i=this.object&&"function"==typeof this.object.currentMaterial?this.object.currentMaterial():void 0;if(this.object&&"function"==typeof this.object._finalize&&this.object._finalize(!0),this.object={name:e||"",fromDeclaration:!1!==t,geometry:{vertices:[],normals:[],colors:[],uvs:[],hasUVIndices:!1},materials:[],smooth:!0,startMaterial:function(e,t){let i=this._finalize(!1);i&&(i.inherited||i.groupCount<=0)&&this.materials.splice(i.index,1);let r={index:this.materials.length,name:e||"",mtllib:Array.isArray(t)&&t.length>0?t[t.length-1]:"",smooth:void 0!==i?i.smooth:this.smooth,groupStart:void 0!==i?i.groupEnd:0,groupEnd:-1,groupCount:-1,inherited:!1,clone:function(e){let t={index:"number"==typeof e?e:this.index,name:this.name,mtllib:this.mtllib,smooth:this.smooth,groupStart:0,groupEnd:-1,groupCount:-1,inherited:!1};return t.clone=this.clone.bind(t),t}};return this.materials.push(r),r},currentMaterial:function(){if(this.materials.length>0)return this.materials[this.materials.length-1]},_finalize:function(e){let t=this.currentMaterial();if(t&&-1===t.groupEnd&&(t.groupEnd=this.geometry.vertices.length/3,t.groupCount=t.groupEnd-t.groupStart,t.inherited=!1),e&&this.materials.length>1)for(let e=this.materials.length-1;e>=0;e--)this.materials[e].groupCount<=0&&this.materials.splice(e,1);return e&&0===this.materials.length&&this.materials.push({name:"",smooth:this.smooth}),t}},i&&i.name&&"function"==typeof i.clone){let e=i.clone(0);e.inherited=!0,this.object.materials.push(e)}this.objects.push(this.object)},finalize:function(){this.object&&"function"==typeof this.object._finalize&&this.object._finalize(!0)},parseVertexIndex:function(e,t){let i=parseInt(e,10);return 3*(i>=0?i-1:i+t/3)},parseNormalIndex:function(e,t){let i=parseInt(e,10);return 3*(i>=0?i-1:i+t/3)},parseUVIndex:function(e,t){let i=parseInt(e,10);return 2*(i>=0?i-1:i+t/2)},addVertex:function(e,t,i){let r=this.vertices,n=this.object.geometry.vertices;n.push(r[e+0],r[e+1],r[e+2]),n.push(r[t+0],r[t+1],r[t+2]),n.push(r[i+0],r[i+1],r[i+2])},addVertexPoint:function(e){let t=this.vertices;this.object.geometry.vertices.push(t[e+0],t[e+1],t[e+2])},addVertexLine:function(e){let t=this.vertices;this.object.geometry.vertices.push(t[e+0],t[e+1],t[e+2])},addNormal:function(e,t,i){let r=this.normals,n=this.object.geometry.normals;n.push(r[e+0],r[e+1],r[e+2]),n.push(r[t+0],r[t+1],r[t+2]),n.push(r[i+0],r[i+1],r[i+2])},addFaceNormal:function(e,t,i){let r=this.vertices,n=this.object.geometry.normals;pRe.fromArray(r,e),g8.fromArray(r,t),dRe.fromArray(r,i),jl.subVectors(dRe,g8),fRe.subVectors(pRe,g8),jl.cross(fRe),jl.normalize(),n.push(jl.x,jl.y,jl.z),n.push(jl.x,jl.y,jl.z),n.push(jl.x,jl.y,jl.z)},addColor:function(e,t,i){let r=this.colors,n=this.object.geometry.colors;void 0!==r[e]&&n.push(r[e+0],r[e+1],r[e+2]),void 0!==r[t]&&n.push(r[t+0],r[t+1],r[t+2]),void 0!==r[i]&&n.push(r[i+0],r[i+1],r[i+2])},addUV:function(e,t,i){let r=this.uvs,n=this.object.geometry.uvs;n.push(r[e+0],r[e+1]),n.push(r[t+0],r[t+1]),n.push(r[i+0],r[i+1])},addDefaultUV:function(){let e=this.object.geometry.uvs;e.push(0,0),e.push(0,0),e.push(0,0)},addUVLine:function(e){let t=this.uvs;this.object.geometry.uvs.push(t[e+0],t[e+1])},addFace:function(e,t,i,r,n,s,a,o,l){let h=this.vertices.length,u=this.parseVertexIndex(e,h),c=this.parseVertexIndex(t,h),p=this.parseVertexIndex(i,h);if(this.addVertex(u,c,p),this.addColor(u,c,p),void 0!==a&&""!==a){let e=this.normals.length;u=this.parseNormalIndex(a,e),c=this.parseNormalIndex(o,e),p=this.parseNormalIndex(l,e),this.addNormal(u,c,p)}else this.addFaceNormal(u,c,p);if(void 0!==r&&""!==r){let e=this.uvs.length;u=this.parseUVIndex(r,e),c=this.parseUVIndex(n,e),p=this.parseUVIndex(s,e),this.addUV(u,c,p),this.object.geometry.hasUVIndices=!0}else this.addDefaultUV()},addPointGeometry:function(e){this.object.geometry.type="Points";let t=this.vertices.length;for(let i=0,r=e.length;i=7?(GA.setRGB(parseFloat(e[4]),parseFloat(e[5]),parseFloat(e[6])).convertSRGBToLinear(),t.colors.push(GA.r,GA.g,GA.b)):t.colors.push(void 0,void 0,void 0);break;case"vn":t.normals.push(parseFloat(e[1]),parseFloat(e[2]),parseFloat(e[3]));break;case"vt":t.uvs.push(parseFloat(e[1]),parseFloat(e[2]))}}else if("f"===s){let e=n.slice(1).trim().split(hRe),i=[];for(let t=0,r=e.length;t0){let e=r.split("/");i.push(e)}}let r=i[0];for(let e=1,n=i.length-1;e1){let e=r[1].trim().toLowerCase();t.object.smooth="0"!==e&&"off"!==e}else t.object.smooth=!0;let e=t.object.currentMaterial();e&&(e.smooth=t.object.smooth)}else{if("\0"===n)continue;console.warn('THREE.OBJLoader: Unexpected line: "'+n+'"')}}t.finalize();let n=new ur;if(n.materialLibraries=[].concat(t.materialLibraries),!0==!(1===t.objects.length&&0===t.objects[0].geometry.vertices.length))for(let e=0,i=t.objects.length;e0&&h.setAttribute("normal",new dt(r.normals,3)),r.colors.length>0&&(l=!0,h.setAttribute("color",new dt(r.colors,3))),!0===r.hasUVIndices&&h.setAttribute("uv",new dt(r.uvs,2));let u,c=[];for(let e=0,i=s.length;e1){for(let e=0,t=s.length;e0){let e=new jn({size:1,sizeAttenuation:!1}),i=new lt;i.setAttribute("position",new dt(t.vertices,3)),t.colors.length>0&&void 0!==t.colors[0]&&(i.setAttribute("color",new dt(t.colors,3)),e.vertexColors=!0);let r=new nn(i,e);n.add(r)}return n}},zA=new je,jA=class extends ci{constructor(e){super(e),this.propertyNameMapping={},this.customPropertyMapping={}}load(e,t,i,r){let n=this,s=new ui(this.manager);s.setPath(this.path),s.setResponseType("arraybuffer"),s.setRequestHeader(this.requestHeader),s.setWithCredentials(this.withCredentials),s.load(e,(function(i){try{t(n.parse(i))}catch(t){r?r(t):console.error(t),n.manager.itemError(e)}}),i,r)}setPropertyNameMapping(e){this.propertyNameMapping=e}setCustomPropertyNameMapping(e){this.customPropertyMapping=e}parse(e){function t(e){let t="",i=0,r=/^ply([\s\S]*)end_header(\r\n|\r|\n)/.exec(e);null!==r&&(t=r[1],i=new Blob([r[0]]).size);let n,s={comments:[],elements:[],headerLength:i,objInfo:""},a=t.split(/\r\n|\r|\n/);function o(e,t){let i={type:e[0]};return"list"===i.type?(i.name=e[3],i.countType=e[1],i.itemType=e[2]):i.name=e[1],i.name in t&&(i.name=t[i.name]),i}for(let e=0;ee.name));function i(e){for(let i=0,r=e.length;i=d.count&&(c++,p=0,d=t.elements[c],f=s(d.properties));let n=r(d.properties,i);l(a,d.name,n,f),p++}return o(a)}function o(e){let t=new lt;e.indices.length>0&&t.setIndex(e.indices),t.setAttribute("position",new dt(e.vertices,3)),e.normals.length>0&&t.setAttribute("normal",new dt(e.normals,3)),e.uvs.length>0&&t.setAttribute("uv",new dt(e.uvs,2)),e.colors.length>0&&t.setAttribute("color",new dt(e.colors,3)),e.faceVertexUvs.length>0&&(t=t.toNonIndexed(),t.setAttribute("uv",new dt(e.faceVertexUvs,2)));for(let i of Object.keys(p.customPropertyMapping))e[i].length>0&&t.setAttribute(i,new dt(e[i],p.customPropertyMapping[i].length));return t.computeBoundingSphere(),t}function l(e,t,i,r){if("vertex"===t){e.vertices.push(i[r.attrX],i[r.attrY],i[r.attrZ]),null!==r.attrNX&&null!==r.attrNY&&null!==r.attrNZ&&e.normals.push(i[r.attrNX],i[r.attrNY],i[r.attrNZ]),null!==r.attrS&&null!==r.attrT&&e.uvs.push(i[r.attrS],i[r.attrT]),null!==r.attrR&&null!==r.attrG&&null!==r.attrB&&(zA.setRGB(i[r.attrR]/255,i[r.attrG]/255,i[r.attrB]/255).convertSRGBToLinear(),e.colors.push(zA.r,zA.g,zA.b));for(let t of Object.keys(p.customPropertyMapping))for(let r of p.customPropertyMapping[t])e[t].push(i[r])}else if("face"===t){let t=i.vertex_indices||i.vertex_index,r=i.texcoord;3===t.length?(e.indices.push(t[0],t[1],t[2]),r&&6===r.length&&(e.faceVertexUvs.push(r[0],r[1]),e.faceVertexUvs.push(r[2],r[3]),e.faceVertexUvs.push(r[4],r[5]))):4===t.length&&(e.indices.push(t[0],t[1],t[3]),e.indices.push(t[1],t[2],t[3]))}}function h(e,t){let i={},r=0;for(let n=0;ne.getInt8(t),size:1};case"uint8":case"uchar":return{read:t=>e.getUint8(t),size:1};case"int16":case"short":return{read:t=>e.getInt16(t,i),size:2};case"uint16":case"ushort":return{read:t=>e.getUint16(t,i),size:2};case"int32":case"int":return{read:t=>e.getInt32(t,i),size:4};case"uint32":case"uint":return{read:t=>e.getUint32(t,i),size:4};case"float32":case"float":return{read:t=>e.getFloat32(t,i),size:4};case"float64":case"double":return{read:t=>e.getFloat64(t,i),size:8}}}for(let n=0,s=e.length;n>5&31)/31,r=(e>>10&31)/31)}for(let s=1;s<=3;s++){let a=l+12*s,o=3*e*3+3*(s-1);d[o]=h.getFloat32(a,!0),d[o+1]=h.getFloat32(a+4,!0),d[o+2]=h.getFloat32(a+8,!0),f[o]=u,f[o+1]=p,f[o+2]=m,c&&(n[o]=t,n[o+1]=i,n[o+2]=r)}}return p.setAttribute("position",new Wt(d,3)),p.setAttribute("normal",new Wt(f,3)),c&&(p.setAttribute("color",new Wt(n,3)),p.hasColors=!0,p.alpha=l),p}(i):function(e){let t,i=new lt,r=/solid([\s\S]*?)endsolid/g,n=/facet([\s\S]*?)endfacet/g,s=0,a=/[\s]+([+-]?(?:\d*)(?:\.\d*)?(?:[eE][+-]?\d+)?)/.source,o=new RegExp("vertex"+a+a+a,"g"),l=new RegExp("normal"+a+a+a,"g"),h=[],u=[],c=new A,p=0,d=0,f=0;for(;null!==(t=r.exec(e));){d=f;let e=t[0];for(;null!==(t=n.exec(e));){let e=0,i=0,r=t[0];for(;null!==(t=l.exec(r));)c.x=parseFloat(t[1]),c.y=parseFloat(t[2]),c.z=parseFloat(t[3]),i++;for(;null!==(t=o.exec(r));)h.push(parseFloat(t[1]),parseFloat(t[2]),parseFloat(t[3])),u.push(c.x,c.y,c.z),e++,f++;1!==i&&console.error("THREE.STLLoader: Something isn't right with the normal of face number "+s),3!==e&&console.error("THREE.STLLoader: Something isn't right with the vertices of face number "+s),s++}let r=d,a=f-d;i.addGroup(r,a,p),p++}return i.setAttribute("position",new dt(h,3)),i.setAttribute("normal",new dt(u,3)),i}("string"!=typeof(r=e)?(new TextDecoder).decode(r):r);var r}},kMe=kn(ARe(),1),HRe="3.7.2",bPt=HRe,xPt="function"==typeof atob,IPt="function"==typeof btoa,jT="function"==typeof Buffer,ORe="function"==typeof TextDecoder?new TextDecoder:void 0,PRe="function"==typeof TextEncoder?new TextEncoder:void 0,_Pt="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",zI=Array.prototype.slice.call(_Pt),KA=(e=>{let t={};return zI.forEach(((e,i)=>t[e]=i)),t})(),SPt=/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/,Vs=String.fromCharCode.bind(String),NRe="function"==typeof Uint8Array.from?Uint8Array.from.bind(Uint8Array):(e,t=(e=>e))=>new Uint8Array(Array.prototype.slice.call(e,0).map(t)),URe=e=>e.replace(/=/g,"").replace(/[+\/]/g,(e=>"+"==e?"-":"_")),BRe=e=>e.replace(/[^A-Za-z0-9\+\/]/g,""),kRe=e=>{let t,i,r,n,s="",a=e.length%3;for(let a=0;a255||(r=e.charCodeAt(a++))>255||(n=e.charCodeAt(a++))>255)throw new TypeError("invalid character found");t=i<<16|r<<8|n,s+=zI[t>>18&63]+zI[t>>12&63]+zI[t>>6&63]+zI[63&t]}return a?s.slice(0,a-3)+"===".substring(a):s},R8=IPt?e=>btoa(e):jT?e=>Buffer.from(e,"binary").toString("base64"):kRe,S8=jT?e=>Buffer.from(e).toString("base64"):e=>{let t=[];for(let i=0,r=e.length;it?URe(S8(e)):S8(e),wPt=e=>{if(e.length<2)return(t=e.charCodeAt(0))<128?e:t<2048?Vs(192|t>>>6)+Vs(128|63&t):Vs(224|t>>>12&15)+Vs(128|t>>>6&63)+Vs(128|63&t);var t=65536+1024*(e.charCodeAt(0)-55296)+(e.charCodeAt(1)-56320);return Vs(240|t>>>18&7)+Vs(128|t>>>12&63)+Vs(128|t>>>6&63)+Vs(128|63&t)},RPt=/[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g,GRe=e=>e.replace(RPt,wPt),LRe=jT?e=>Buffer.from(e,"utf8").toString("base64"):PRe?e=>S8(PRe.encode(e)):e=>R8(GRe(e)),zT=(e,t=!1)=>t?URe(LRe(e)):LRe(e),FRe=e=>zT(e,!0),MPt=/[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g,DPt=e=>{switch(e.length){case 4:var t=((7&e.charCodeAt(0))<<18|(63&e.charCodeAt(1))<<12|(63&e.charCodeAt(2))<<6|63&e.charCodeAt(3))-65536;return Vs(55296+(t>>>10))+Vs(56320+(1023&t));case 3:return Vs((15&e.charCodeAt(0))<<12|(63&e.charCodeAt(1))<<6|63&e.charCodeAt(2));default:return Vs((31&e.charCodeAt(0))<<6|63&e.charCodeAt(1))}},VRe=e=>e.replace(MPt,DPt),zRe=e=>{if(e=e.replace(/\s+/g,""),!SPt.test(e))throw new TypeError("malformed base64.");e+="==".slice(2-(3&e.length));let t,i,r,n="";for(let s=0;s>16&255):64===r?Vs(t>>16&255,t>>8&255):Vs(t>>16&255,t>>8&255,255&t);return n},M8=xPt?e=>atob(BRe(e)):jT?e=>Buffer.from(e,"base64").toString("binary"):zRe,jRe=jT?e=>NRe(Buffer.from(e,"base64")):e=>NRe(M8(e),(e=>e.charCodeAt(0))),WRe=e=>jRe(qRe(e)),CPt=jT?e=>Buffer.from(e,"base64").toString("utf8"):ORe?e=>ORe.decode(jRe(e)):e=>VRe(M8(e)),qRe=e=>BRe(e.replace(/[-_]/g,(e=>"-"==e?"+":"/"))),w8=e=>CPt(qRe(e)),APt=e=>{if("string"!=typeof e)return!1;let t=e.replace(/\s+/g,"").replace(/={0,2}$/,"");return!/[^\s0-9a-zA-Z\+/]/.test(t)||!/[^\s0-9a-zA-Z\-_]/.test(t)},YRe=e=>({value:e,enumerable:!1,writable:!0,configurable:!0}),XRe=function(){let e=(e,t)=>Object.defineProperty(String.prototype,e,YRe(t));e("fromBase64",(function(){return w8(this)})),e("toBase64",(function(e){return zT(this,e)})),e("toBase64URI",(function(){return zT(this,!0)})),e("toBase64URL",(function(){return zT(this,!0)})),e("toUint8Array",(function(){return WRe(this)}))},$Re=function(){let e=(e,t)=>Object.defineProperty(Uint8Array.prototype,e,YRe(t));e("toBase64",(function(e){return ZA(this,e)})),e("toBase64URI",(function(){return ZA(this,!0)})),e("toBase64URL",(function(){return ZA(this,!0)}))},OPt=()=>{XRe(),$Re()},KRe={version:HRe,VERSION:bPt,atob:M8,atobPolyfill:zRe,btoa:R8,btoaPolyfill:kRe,fromBase64:w8,toBase64:zT,encode:zT,encodeURI:FRe,encodeURL:FRe,utob:GRe,btou:VRe,decode:w8,isValid:APt,fromUint8Array:ZA,toUint8Array:WRe,extendString:XRe,extendUint8Array:$Re,extendBuiltins:OPt},Xl=kn(fMe(),1),JA=class extends Mp{constructor(e,t={}){let i=t.font;if(void 0===i)super();else{let r=i.generateShapes(e,t.size);t.depth=void 0!==t.height?t.height:50,void 0===t.bevelThickness&&(t.bevelThickness=10),void 0===t.bevelSize&&(t.bevelSize=8),void 0===t.bevelEnabled&&(t.bevelEnabled=!1),super(r,t)}this.type="TextGeometry"}},QA="BYLAYER",D8="BYBLOCK",mMe=(e=>(e[e.Mesh=-1]="Mesh",e[e.MeshWithPattern=0]="MeshWithPattern",e[e.LineWithWidth=1]="LineWithWidth",e[e.Line=2]="Line",e[e.LineWithPattern=3]="LineWithPattern",e[e.Point=4]="Point",e[e.Text=5]="Text",e))(mMe||{}),E0=["INSERT","DIMENSION"],aEr=kn(EMe(),1),eO=[0,16711680,16776960,65280,65535,255,16711935,16777215,8421504,12632256,16711680,16744319,13369344,13395558,10027008,10046540,8323072,8339263,4980736,4990502,16727808,16752511,13382400,13401958,10036736,10051404,8331008,8343359,4985600,4992806,16744192,16760703,13395456,13408614,10046464,10056268,8339200,8347455,4990464,4995366,16760576,16768895,13408512,13415014,10056192,10061132,8347392,8351551,4995328,4997670,16776960,16777087,13421568,13421670,10000384,10000460,8355584,8355647,5000192,5000230,12582656,14679935,10079232,11717734,7510016,8755276,6258432,7307071,3755008,4344870,8388352,12582783,6736896,10079334,5019648,7510092,4161280,6258495,2509824,3755046,4194048,10485631,3394560,8375398,2529280,6264908,2064128,5209919,1264640,3099686,65280,8388479,52224,6736998,38912,5019724,32512,4161343,19456,2509862,65343,8388511,52275,6737023,38950,5019743,32543,4161359,19475,2509871,65407,8388543,52326,6737049,38988,5019762,32575,4161375,19494,2509881,65471,8388575,52377,6737074,39026,5019781,32607,4161391,19513,2509890,65535,8388607,52428,6737100,39064,5019800,32639,4161407,19532,2509900,49151,8380415,39372,6730444,29336,5014936,24447,4157311,14668,2507340,32767,8372223,26316,6724044,19608,5010072,16255,4153215,9804,2505036,16383,8364031,13260,6717388,9880,5005208,8063,4149119,4940,2502476,255,8355839,204,6710988,152,5000344,127,4145023,76,2500172,4129023,10452991,3342540,8349388,2490520,6245528,2031743,5193599,1245260,3089996,8323327,12550143,6684876,10053324,4980888,7490712,4128895,6242175,2490444,3745356,12517631,14647295,10027212,11691724,7471256,8735896,6226047,7290751,3735628,4335180,16711935,16744447,13369548,13395660,9961624,9981080,8323199,8339327,4980812,4990540,16711871,16744415,13369497,13395634,9961586,9981061,8323167,8339311,4980793,4990530,16711807,16744383,13369446,13395609,9961548,9981042,8323135,8339295,4980774,4990521,16711743,16744351,13369395,13395583,9961510,9981023,8323103,8339279,4980755,4990511,3355443,5987163,8684676,11382189,14079702,16777215],WT=class{constructor(){this.pointer=0,this.eof=!1}},bMe=1e3,KI=class extends WT{constructor(e){super(),this.int8Array=new Int8Array(bMe),this.caches=new Map,this.reader=new Of(e);let t=this.reader.readBytes(22),i="";for(let e=0;e<18;e++)i+=String.fromCharCode(t[e]);if("AutoCAD Binary DXF"!=i)throw new Error("Invalid DXF file")}next(){if(!this.hasNext())throw this.eof?new Error("Cannot call 'next' after EOF group has been read"):new Error("Unexpected end of input: EOF group not read before end of file.");let e={code:this.reader.readInt16()};return e.value=this.parseGroupValue(e.code),0===e.code&&"EOF"===e.value&&(this.eof=!0),this.lastReadGroup=e,e}hasNext(){return!this.eof&&!this.reader.IsEnd()}isEOF(){return this.eof}parseGroupValue(e){if(e>=0&&e<=9)return this.readNullTerminatedString();if(e>=10&&e<=59)return this.reader.readFloat64();if(e>=60&&e<=79)return this.reader.readInt16();if(e>=90&&e<=99)return this.reader.readInt32();if(e>=100&&e<=109)return this.readNullTerminatedString();if(e>=110&&e<=149)return this.reader.readFloat64();if(e>=160&&e<=169)return this.reader.readInt64();if(e>=170&&e<=179)return this.reader.readInt16();if(e>=210&&e<=239)return this.reader.readFloat64();if(e>=270&&e<=289)return this.reader.readInt16();if(e>=290&&e<=299)return this.reader.readInt8()>0;if(e>=300&&e<=309)return this.readNullTerminatedString();if(e>=310&&e<=319){return xMe(this.ReadBinaryData())}if(e>=320&&e<=369)return this.readNullTerminatedString();if(e>=370&&e<=389)return this.reader.readInt16();if(e>=390&&e<=399)return this.readNullTerminatedString();if(e>=400&&e<=409)return this.reader.readInt16();if(e>=410&&e<=419)return this.readNullTerminatedString();if(e>=420&&e<=429)return this.reader.readInt32();if(e>=430&&e<=439)return this.readNullTerminatedString();if(e>=440&&e<=459)return this.reader.readInt32();if(e>=460&&e<=469)return this.reader.readFloat64();if(e>=470&&e<=481)return this.readNullTerminatedString();if(999===e)throw new Error("The comment group 999, is not used in binary DXF files at byte address!");if(1004===e){return xMe(this.ReadBinaryData())}return e>=1e3&&e<=1009?this.readNullTerminatedString():e>=1010&&e<=1059?this.reader.readFloat64():e>=1060&&e<=1070?this.reader.readInt16():1071===e?this.reader.readInt32():void ne.warn(`[DxfBinReader] Invalid code '${e}' at byte address ${this.reader.getPosition()}`)}readNullTerminatedString(){var e;this.decoder||(this.decoder=new TextDecoder("utf-8"));let t=0,i=this.reader.readInt8();for(;0!==i;)this.int8Array[t++]=i,i=this.reader.readInt8();if(0===t)return"";if(t>bMe)return ne.warn(`[DxfBinReader] Failed to read string! The number of bytes is ${t} !`),"";let r=this.int8Array.subarray(0,t),n=r.toString();if(this.caches.get(n))return this.caches.get(n);let s=null==(e=this.decoder)?void 0:e.decode(r);return this.caches.set(n,s),s}ReadBinaryData(){let e=this.reader.readUint8();return this.reader.readBytes(e)}};function xMe(e){return Array.prototype.map.call(e,(e=>("00"+e.toString(16)).slice(-2))).join("")}var qT=class extends WT{constructor(e){super(),this.data=e}next(){if(!this.hasNext())throw this.eof?new Error("Cannot call 'next' after EOF group has been read"):new Error("Unexpected end of input: EOF group not read before end of file. Ended on code "+this.data[this.pointer]);let e={code:parseInt(this.data[this.pointer])};return this.pointer++,e.value=jPt(e.code,this.data[this.pointer].trim()),this.pointer++,0===e.code&&"EOF"===e.value&&(this.eof=!0),this.lastReadGroup=e,e}hasNext(){return!(this.eof||this.pointer>this.data.length-2)}isEOF(){return this.eof}};function jPt(e,t){return e>=0&&e<=9?t:e>=10&&e<=59?parseFloat(t):e>=60&&e<=99?parseInt(t):e>=100&&e<=109?t:e>=110&&e<=149?parseFloat(t):e>=160&&e<=179?parseInt(t):e>=210&&e<=239?parseFloat(t):e>=270&&e<=289?parseInt(t):e>=290&&e<=299?WPt(t):e>=300&&e<=369?t:e>=370&&e<=389?parseInt(t):e>=390&&e<=399?t:e>=400&&e<=409?parseInt(t):e>=410&&e<=419?t:e>=420&&e<=429?parseInt(t):e>=430&&e<=439?t:e>=440&&e<=459?parseInt(t):e>=460&&e<=469?parseFloat(t):e>=470&&e<=481||999===e||e>=1e3&&e<=1009?t:e>=1010&&e<=1059?parseFloat(t):e>=1060&&e<=1071?parseInt(t):(ne.info("WARNING: Group code does not have a defined type: %j",{code:e,value:t}),t)}function WPt(e){if("0"===e)return!1;if("1"===e)return!0;throw TypeError("String '"+e+"' cannot be cast to Boolean type")}var SMe=kn(ql(),1),qPt="OriginalHandle",YPt="OriginalType",XPt="Outlines",IMe=["PROXY","REGION","INSERT","HATCH"];function b0(e){return eO[e]}function vt(e){let t={},i=e.lastReadGroup,r=i.code;if(t.x=i.value,r+=10,i=e.next(),i.code!=r)throw new Error(`Expected code for point value to be ${r} but got ${i.code}`);return t.y=i.value,r+=10,i=e.next(),i.code!=r||(t.z=i.value,e.next()),t}function _Me(e,t){let i=e.lastReadGroup,r=[];for(let n=0;n<16;n++){if(i.code!==t)throw new Error(`Expected code for matrix value to be ${t} but got ${i.code}`);r.push(i.value),i=e.next()}return r}function fr(e,t){switch(t.code){case 0:e.type=t.value;break;case 5:e.handle=t.value;break;case 6:e.lineType=t.value.toUpperCase();break;case 8:e.layer=t.value;break;case 48:e.lineTypeScale=t.value,e.lineTypeScale<=0&&(e.lineTypeScale=1);break;case 60:e.visible=0===t.value;break;case 62:e.isTrueColor||(e.colorIndex=t.value,e.colorIndex<0&&ne.warn("[DxfParser] a negative value of colorIndex indicates that the layer is turned off"),e.color=b0(Math.abs(t.value)));break;case 67:e.inPaperSpace=0!==t.value;break;case 100:case 1001:break;case 330:e.ownerHandle=t.value;break;case 347:e.materialObjectHandle=t.value;break;case 370:e.lineweight=t.value;break;case 410:e.layoutName=t.value;break;case 420:e.isTrueColor=!0,e.color=t.value;break;case 1e3:if(t.value&&t.value.includes(qPt)){let i=t.value.split(":").map((e=>e.trim()));e.extendedData||(e.extendedData={}),e.extendedData.originalHandle=i[1]}if(e.extendedData&&e.extendedData.outlines)try{e.extendedData.outlines=JSON.parse(t.value||"[]")}catch(t){e.extendedData.outlines=void 0}if(t.value&&t.value.includes(XPt)&&(e.extendedData||(e.extendedData={}),e.extendedData.outlines=[]),t.value&&t.value.includes(YPt)){let i=t.value.split(":").map((e=>e.trim()));e.extendedData||(e.extendedData={}),e.extendedData.originalType=i[1]}break;default:return!1}return!0}function lh(e,t){switch(t.code){case 0:e.type=t.value;break;case 5:e.handle=t.value;break;case 330:e.ownerHandle=t.value;break;case 1e3:case 1001:break;default:return!1}return!0}var JI=class{constructor(){this.ForEntityName="3DFACE"}parseEntity(e,t){let i={type:t.value,vertices:[]};for(t=e.next();!e.isEOF()&&0!==t.code;)switch(t.code){case 70:if(0!==t.value){let e=Math.log2(t.value)-1;i.vertices.splice(e,1)}t=e.next();break;case 10:i.vertices=$Pt(e,t),t=e.lastReadGroup;break;case 101:for(;0!=t.code;)t=e.next();break;default:fr(i,t),t=e.next()}return i}};function $Pt(e,t){let i=[],r=!1,n=!1;for(let s=0;s<=4;s++){let s={};for(;!e.isEOF()&&0!==t.code&&!n;){switch(t.code){case 10:case 11:case 12:case 13:if(r){n=!0;continue}s.x=t.value,r=!0;break;case 20:case 21:case 22:case 23:s.y=t.value;break;case 30:case 31:case 32:case 33:s.z=t.value;break;default:return i}t=e.next()}(0,SMe.isEmpty)(s)||i.push(s),r=!1,n=!1}return i}var QI=class{constructor(){this.ForEntityName="ARC"}parseEntity(e,t){let i={type:t.value};for(t=e.next();!e.isEOF()&&0!==t.code;)switch(t.code){case 10:i.center=vt(e),t=e.lastReadGroup;break;case 40:i.radius=t.value,t=e.next();break;case 50:i.startAngle=Math.PI/180*t.value,t=e.next();break;case 51:i.endAngle=Math.PI/180*t.value,i.angleLength=i.endAngle-i.startAngle,t=e.next();break;case 210:i.extrusionDirectionX=t.value,t=e.next();break;case 220:i.extrusionDirectionY=t.value,t=e.next();break;case 230:i.extrusionDirectionZ=t.value,t=e.next();break;case 101:for(;0!=t.code;)t=e.next();break;default:fr(i,t),t=e.next()}return i}},e_=class{constructor(){this.ForEntityName="ATTDEF"}parseEntity(e,t){let i={type:t.value,xScale:1,textStyle:"STANDARD"};for(t=e.next();!e.isEOF()&&0!==t.code;)switch(t.code){case 1:i.text=t.value,t=e.next();break;case 2:i.tag=t.value,t=e.next();break;case 3:i.prompt=t.value,t=e.next();break;case 7:i.textStyle=t.value,t=e.next();break;case 10:i.startPoint=vt(e),t=e.lastReadGroup;break;case 11:i.endPoint=vt(e),t=e.lastReadGroup;break;case 39:i.thickness=t.value,t=e.next();break;case 40:i.textHeight=t.value,t=e.next();break;case 41:i.xScale=t.value,t=e.next();break;case 50:i.rotation=t.value,t=e.next();break;case 51:i.obliqueAngle=t.value,t=e.next();break;case 70:i.invisible=!!(1&t.value),i.constant=!!(2&t.value),i.verificationRequired=!!(4&t.value),i.preset=!!(8&t.value),t=e.next();break;case 71:i.backwards=!!(2&t.value),i.mirrored=!!(4&t.value),t=e.next();break;case 72:i.horizontalJustification=t.value,t=e.next();break;case 73:i.fieldLength=t.value,t=e.next();break;case 74:i.verticalJustification=t.value,t=e.next();break;case 100:t=e.next();break;case 210:i.extrusionDirectionX=t.value,t=e.next();break;case 220:i.extrusionDirectionY=t.value,t=e.next();break;case 230:i.extrusionDirectionZ=t.value,t=e.next();break;case 101:for(;0!=t.code;)t=e.next();break;default:fr(i,t),t=e.next()}return i}},t_=class{constructor(){this.ForEntityName="ATTRIB"}parseEntity(e,t){let i={type:t.value,xScale:1,textStyle:"STANDARD"};for(t=e.next();!e.isEOF()&&0!==t.code;)switch(t.code){case 1:i.text=t.value,t=e.next();break;case 2:i.tag=t.value,t=e.next();break;case 3:i.prompt=t.value,t=e.next();break;case 7:i.textStyle=t.value,t=e.next();break;case 10:i.startPoint=vt(e),t=e.lastReadGroup;break;case 11:i.endPoint=vt(e),t=e.lastReadGroup;break;case 39:i.thickness=t.value,t=e.next();break;case 40:i.textHeight=t.value,t=e.next();break;case 41:i.xScale=t.value,t=e.next();break;case 50:i.rotation=t.value,t=e.next();break;case 51:i.obliqueAngle=t.value,t=e.next();break;case 70:i.invisible=!!(1&t.value),i.constant=!!(2&t.value),i.verificationRequired=!!(4&t.value),i.preset=!!(8&t.value),t=e.next();break;case 71:i.backwards=!!(2&t.value),i.mirrored=!!(4&t.value),t=e.next();break;case 72:i.horizontalJustification=t.value,t=e.next();break;case 73:i.fieldLength=t.value,t=e.next();break;case 74:i.verticalJustification=t.value,t=e.next();break;case 100:t=e.next();break;case 210:i.extrusionDirectionX=t.value,t=e.next();break;case 220:i.extrusionDirectionY=t.value,t=e.next();break;case 230:i.extrusionDirectionZ=t.value,t=e.next();break;case 101:for(;0!=t.code;)t=e.next();break;default:fr(i,t),t=e.next()}return i}},r_=class{constructor(){this.ForEntityName="CIRCLE"}parseEntity(e,t){let i={type:t.value};for(t=e.next();!e.isEOF()&&0!==t.code;)switch(t.code){case 10:i.center=vt(e),t=e.lastReadGroup;break;case 40:i.radius=t.value,t=e.next();break;case 50:i.startAngle=Math.PI/180*t.value,t=e.next();break;case 51:let r=Math.PI/180*t.value;r=0&&i.push({angle:e,origin:n,delta:s,dashPattern:o})}return i}function e2t(e,t){let i=[],r=t.next();for(;i.length0&&(i.colorIndex=t.value,i.color=b0(Math.abs(t.value)))))}t=e.next();break;default:fr(i,t),t=e.next()}return i}};function t2t(e){switch(e){case 40:return"DIMSCALE";case 41:return"DIMASZ";case 42:return"DIMEXO";case 44:return"DIMEXE";case 75:return"DIMSE1";case 76:return"DIMSE2";case 77:return"DIMTAD";case 140:return"DIMTXT";case 144:return"DIMLFAC";case 147:return"DIMGAP";case 176:return"DIMCLRD";case 178:return"DIMCLRT";case 271:return"DIMDEC";case 341:return"DIMLDRBLK";default:return null}}var l_=class{constructor(){this.ForEntityName="LINE"}parseEntity(e,t){let i={type:t.value,vertices:[]};for(t=e.next();!e.isEOF()&&0!==t.code;)switch(t.code){case 10:i.vertices.unshift(vt(e)),t=e.lastReadGroup;break;case 11:i.vertices.push(vt(e)),t=e.lastReadGroup;break;case 210:i.extrusionDirection=vt(e),t=e.lastReadGroup;break;case 100:t=e.next();break;case 101:for(;0!=t.code;)t=e.next();break;default:fr(i,t),t=e.next()}return i}},c_=class{constructor(){this.ForEntityName="LWPOLYLINE"}parseEntity(e,t){let i={type:t.value,vertices:[]},r=0;for(t=e.next();!e.isEOF()&&0!==t.code;)switch(t.code){case 38:i.elevation=t.value,t=e.next();break;case 39:i.thickness=t.value,t=e.next();break;case 70:i.shape=1==(1&t.value),i.hasContinuousLinetypePattern=128==(128&t.value),t=e.next();break;case 90:r=t.value,t=e.next();break;case 10:i.vertices.push(...r2t(r,e)),t=e.lastReadGroup;break;case 43:0!==t.value&&(i.constantWidth=t.value),t=e.next();break;case 210:i.extrusionDirectionX=t.value,t=e.next();break;case 220:i.extrusionDirectionY=t.value,t=e.next();break;case 230:i.extrusionDirectionZ=t.value,t=e.next();break;case 101:for(;0!=t.code;)t=e.next();break;default:fr(i,t),t=e.next()}return i}};function r2t(e,t){if(!e||e<=0)throw Error("n must be greater than 0 verticies");let i=[],r=!1,n=!1,s=t.lastReadGroup,a={};for(;!t.isEOF()&&0!==s.code&&!n;)switch(s.code){case 10:if(r){n=!0;continue}a.x=s.value,r=!0,s=t.next();break;case 20:a.y=s.value,s=t.next();break;case 30:a.z=s.value,s=t.next();break;case 40:a.startWidth=s.value,s=t.next();break;case 41:a.endWidth=s.value,s=t.next();break;case 42:0!=s.value&&(a.bulge=s.value),s=t.next();break;default:return r&&i.push(a),i}return i.push(a),r=!1,n=!1,i}var u_=class{constructor(){this.ForEntityName="MULTILEADER"}parseEntity(e,t){let i={type:t.value};function r(){for(;!e.isEOF();)switch(t.code){case 40:i.contextData.contentScale=t.value,t=e.next();break;case 10:i.contextData.contentBasePosition=vt(e),t=e.lastReadGroup;break;case 145:i.contextData.landingGap=t.value,t=e.next();break;case 290:i.contextData.hasMText=t.value,t=e.next();break;case 304:i.contextData.defaultTextContents=t.value,t=e.next();break;case 11:i.contextData.textNormalDirection=vt(e),t=e.lastReadGroup;break;case 12:i.contextData.textLocation=vt(e),t=e.lastReadGroup;break;case 13:i.contextData.textDirection=vt(e),t=e.lastReadGroup;break;case 140:i.contextData.arrowHeadSize=t.value,t=e.next();break;case 41:i.contextData.textHeight=t.value,t=e.next();break;case 42:i.contextData.textRotation=t.value,t=e.next();break;case 43:i.contextData.textWidth=t.value,t=e.next();break;case 44:default:t=e.next();break;case 45:i.contextData.textLineSpacingFactor=t.value,t=e.next();break;case 90:i.contextData.textColor=t.value,t=e.next();break;case 170:i.contextData.textLineSpacingStyle=t.value,t=e.next();break;case 171:i.contextData.textAttachment=t.value,t=e.next();break;case 172:i.contextData.textFlowDirection=t.value,t=e.next();break;case 141:i.contextData.textBackgroundScaleFactor=t.value,t=e.next();break;case 92:i.contextData.textBackgroundTransparency=t.value,t=e.next();break;case 291:i.contextData.textBackgroundColorOn=t.value,t=e.next();break;case 292:i.contextData.textBackgroundFillOn=t.value,t=e.next();break;case 293:i.contextData.textUseAutoHeight=t.value,t=e.next();break;case 173:i.contextData.textColumnType=t.value,t=e.next();break;case 142:i.contextData.textColumnWidth=t.value,t=e.next();break;case 143:i.contextData.textColumnGutterWidth=t.value,t=e.next();break;case 144:i.contextData.textColumnHeight=t.value,t=e.next();break;case 295:i.contextData.textUseWordBreak=t.value,t=e.next();break;case 296:i.contextData.hasBlock=t.value,t=e.next();break;case 341:i.contextData.blockContentId=t.value,t=e.next();break;case 14:i.contextData.blockContentNormalDirection=vt(e),t=e.lastReadGroup;break;case 15:i.contextData.blockContentPosition=vt(e),t=e.lastReadGroup;break;case 16:i.contextData.blockContentScale=t.value,t=e.next();break;case 46:i.contextData.blockContentRotation=t.value,t=e.next();break;case 93:i.contextData.blockContentColor=t.value,t=e.next();break;case 47:i.contextData.blockTransformationMatrix=_Me(e,47),t=e.lastReadGroup;break;case 110:i.contextData.planeOriginPoint=vt(e),t=e.lastReadGroup;break;case 111:i.contextData.planeXAxisDirection=vt(e),t=e.lastReadGroup;break;case 112:i.contextData.planeYAxisDirection=vt(e),t=e.lastReadGroup;break;case 297:i.contextData.planeNormalReversed=t.value,t=e.next();break;case 301:return;case 302:n(),t=e.lastReadGroup}}function n(){let r={leaderLines:[]};for(i.contextData.leaders.push(r);!e.isEOF();)switch(t.code){case 290:r.hasSetLastLeaderLinePoint=t.value,t=e.next();break;case 291:r.hasSetDoglegVector=t.value,t=e.next();break;case 10:r.lastLeaderLinePoint=vt(e),t=e.lastReadGroup;break;case 11:r.doglegVector=vt(e),t=e.lastReadGroup;break;case 90:r.leaderBranchIndex=t.value,t=e.next();break;case 40:r.doglegLength=t.value,t=e.next();break;case 303:return;case 304:s(),t=e.lastReadGroup;break;default:t=e.next()}}function s(){let r={vertices:[[]]};for(i.contextData.leaders[i.contextData.leaders.length-1].leaderLines.push(r);!e.isEOF();)switch(t.code){case 10:r.vertices[0].push(vt(e)),t=e.lastReadGroup;break;case 305:return;default:t=e.next()}}return i.contextData={leaders:[]},t=e.next(),function(){for(;!e.isEOF();)switch(t.code){case 0:return;case 340:i.leaderStyleId=t.value,t=e.next();break;case 170:i.leaderLineType=t.value,t=e.next();break;case 91:i.leaderLineColor=t.value,t=e.next();break;case 341:i.leaderLineTypeId=t.value,t=e.next();break;case 171:i.leaderLineWeight=t.value,t=e.next();break;case 41:i.doglegLength=t.value,t=e.next();break;case 290:i.enableLanding=t.value,t=e.next();break;case 291:i.enableDogLeg=t.value,t=e.next();break;case 342:i.arrowHeadId=t.value,t=e.next();break;case 42:i.arrowHeadSize=t.value,t=e.next();break;case 172:i.contentType=t.value,t=e.next();break;case 173:case 95:i.textLeftAttachmentType=t.value,t=e.next();break;case 174:i.textAngleType=t.value,t=e.next();break;case 175:i.textAlignmentType=t.value,t=e.next();break;case 343:i.textStyleId=t.value,t=e.next();break;case 92:i.textColor=t.value,t=e.next();break;case 292:i.enableFrameText=t.value,t=e.next();break;case 344:i.blockContentId=t.value,t=e.next();break;case 93:i.blockContentColor=t.value,t=e.next();break;case 10:i.blockContentScale=vt(e),t=e.lastReadGroup;break;case 43:i.blockContentRotation=t.value,t=e.next();break;case 176:i.blockContentConnectionType=t.value,t=e.next();break;case 293:i.enableAnotationScale=t.value,t=e.next();break;case 94:i.arrowHeadIndex=t.value,t=e.next();break;case 177:i.blockAttributeIndex=t.value,t=e.next();break;case 44:i.blockAttributeWidth=t.value,t=e.next();break;case 302:i.blockAttributeTextString=t.value,t=e.next();break;case 294:i.textDirectionNegative=t.value,t=e.next();break;case 178:i.textAlignInIPE=t.value,t=e.next();break;case 179:i.textAttachmentPoint=t.value,t=e.next();break;case 271:i.textAttachmentDirectionMText=t.value,t=e.next();break;case 272:i.textAttachmentDirectionBottom=t.value,t=e.next();break;case 273:i.textAttachmentDirectionTop=t.value,t=e.next();break;case 300:r(),t=e.lastReadGroup;break;case 101:for(;0!=t.code;)t=e.next();break;default:fr(i,t),t=e.next()}}(),i}},h_=class{constructor(){this.ForEntityName="MTEXT"}parseEntity(e,t){let i={type:t.value};for(t=e.next();!e.isEOF()&&0!==t.code;)switch(t.code){case 3:case 1:i.text?i.text+=t.value:i.text=t.value,t=e.next();break;case 10:i.position=vt(e),t=e.lastReadGroup;break;case 7:i.textStyle=t.value,t=e.next();break;case 44:i.lineSpaceFactor=t.value,t=e.next();break;case 11:i.directionVector=vt(e),t=e.lastReadGroup;break;case 40:i.height=t.value,t=e.next();break;case 41:i.width=t.value,t=e.next();break;case 50:i.rotation=t.value,t=e.next();break;case 71:i.attachmentPoint=t.value,t=e.next();break;case 72:i.drawingDirection=t.value,t=e.next();break;case 101:for(;0!=t.code;)t=e.next();break;default:fr(i,t),t=e.next()}return i}},p_=class{constructor(){this.ForEntityName="OLE2FRAME"}parseEntity(e,t){let i={type:t.value,binaryData:""};for(t=e.next();"OLE"!==t.value&&0!==t.code;)switch(t.code){case 3:i.documentType=t.value,t=e.next();break;case 70:i.version=t.value,t=e.next();break;case 10:i.leftUpX=t.value,t=e.next();break;case 20:i.leftUpY=t.value,t=e.next();break;case 30:i.leftUpZ=t.value,t=e.next();break;case 11:i.rightDownX=t.value,t=e.next();break;case 21:i.rightDownY=t.value,t=e.next();break;case 31:i.rightDownZ=t.value,t=e.next();break;case 90:i.lengthOfBinaryData=t.value,t=e.next();break;case 310:i.binaryData+=t.value,t=e.next();break;case 101:for(;0!=t.code;)t=e.next();break;default:fr(i,t),t=e.next()}return i}},d_=class{constructor(){this.ForEntityName="POINT"}parseEntity(e,t){let i={type:t.value};for(t=e.next();!e.isEOF()&&0!==t.code;)switch(t.code){case 10:i.position=vt(e),t=e.lastReadGroup;break;case 39:i.thickness=t.value,t=e.next();break;case 210:i.extrusionDirection=vt(e),t=e.lastReadGroup;break;case 100:t=e.next();break;case 101:for(;0!=t.code;)t=e.next();break;default:fr(i,t),t=e.next()}return i}},f_=class{constructor(){this.ForEntityName="VERTEX"}parseEntity(e,t){var i={type:t.value};for(t=e.next();!e.isEOF()&&0!==t.code;)switch(t.code){case 10:i.x=t.value,t=e.next();break;case 20:i.y=t.value,t=e.next();break;case 30:i.z=t.value,t=e.next();break;case 40:case 41:case 50:t=e.next();break;case 42:0!=t.value&&(i.bulge=t.value),t=e.next();break;case 70:i.curveFittingVertex=0!=(1&t.value),i.curveFitTangent=0!=(2&t.value),i.splineVertex=0!=(8&t.value),i.splineControlPoint=0!=(16&t.value),i.threeDPolylineVertex=0!=(32&t.value),i.threeDPolylineMesh=0!=(64&t.value),i.polyfaceMeshVertex=0!=(128&t.value),t=e.next();break;case 71:i.faceA=t.value,t=e.next();break;case 72:i.faceB=t.value,t=e.next();break;case 73:i.faceC=t.value,t=e.next();break;case 74:i.faceD=t.value,t=e.next();break;case 101:for(;0!=t.code;)t=e.next();break;default:fr(i,t),t=e.next()}return i}},m_=class{constructor(){this.ForEntityName="POLYLINE"}parseEntity(e,t){var i={type:t.value,vertices:[]};for(t=e.next();!e.isEOF()&&0!==t.code;)switch(t.code){case 10:case 20:case 30:case 40:case 41:case 71:case 72:case 73:case 74:case 75:t=e.next();break;case 39:t=e.next(),i.thickness=t.value;break;case 70:i.shape=0!=(1&t.value),i.includesCurveFitVertices=0!=(2&t.value),i.includesSplineFitVertices=0!=(4&t.value),i.is3dPolyline=0!=(8&t.value),i.is3dPolygonMesh=0!=(16&t.value),i.is3dPolygonMeshClosed=0!=(32&t.value),i.isPolyfaceMesh=0!=(64&t.value),i.hasContinuousLinetypePattern=0!=(128&t.value),t=e.next();break;case 210:i.extrusionDirection=vt(e),t=e.lastReadGroup;break;case 101:for(;0!=t.code;)t=e.next();break;default:fr(i,t),t=e.next()}return i.vertices=i2t(e,t),i}};function i2t(e,t){let i=new f_,r=[];for(;!e.isEOF();)if(0===t.code)if("VERTEX"===t.value)r.push(i.parseEntity(e,t)),t=e.lastReadGroup;else if("SEQEND"===t.value){n2t(e,t);break}return r}function n2t(e,t){let i={type:t.value};for(t=e.next();!e.isEOF()&&0!==t.code;)if(101===t.code)for(;0!=t.code;)t=e.next();else fr(i,t),t=e.next();return i}var g_=class{constructor(){this.ForEntityName="RAY"}parseEntity(e,t){let i={type:t.value,vertices:[]};for(t=e.next();!e.isEOF()&&0!==t.code;)switch(t.code){case 10:i.vertices.unshift(vt(e)),t=e.lastReadGroup;break;case 11:i.directionVector=vt(e),t=e.lastReadGroup;break;case 100:t=e.next();break;case 101:for(;0!=t.code;)t=e.next();break;default:fr(i,t),t=e.next()}return i}},v_=class{constructor(){this.ForEntityName="REGION"}parseEntity(e,t){let i={type:t.value};for(t=e.next();!e.isEOF()&&0!==t.code;)switch(t.code){case 70:i.modelerVersion=t.value,t=e.next();break;case 1:i.proprietaryData=t.value,t=e.next();break;case 3:i.proprietaryData+=t.value,t=e.next();break;case 101:for(;0!=t.code;)t=e.next();break;default:fr(i,t),t=e.next()}return i}},y_=class{constructor(){this.ForEntityName="SEQEND"}parseEntity(e,t){let i={type:t.value};for(t=e.next();!e.isEOF()&&0!==t.code;)if(-2===t.code);else fr(i,t),t=e.next();return i}},T_=class{constructor(){this.ForEntityName="SOLID"}parseEntity(e,t){let i={type:t.value,points:[]};for(t=e.next();!e.isEOF()&&0!==t.code;)switch(t.code){case 10:i.points[0]=vt(e),t=e.lastReadGroup;break;case 11:i.points[1]=vt(e),t=e.lastReadGroup;break;case 12:i.points[2]=vt(e),t=e.lastReadGroup;break;case 13:i.points[3]=vt(e),t=e.lastReadGroup;break;case 210:i.extrusionDirection=vt(e),t=e.lastReadGroup;break;case 101:for(;0!=t.code;)t=e.next();break;default:fr(i,t),t=e.next()}return i}},E_=class{constructor(){this.ForEntityName="SPLINE"}parseEntity(e,t){let i={type:t.value};for(t=e.next();!e.isEOF()&&0!==t.code;)switch(t.code){case 10:i.controlPoints||(i.controlPoints=[]),i.controlPoints.push(vt(e)),t=e.lastReadGroup;break;case 11:i.fitPoints||(i.fitPoints=[]),i.fitPoints.push(vt(e)),t=e.lastReadGroup;break;case 12:i.startTangent=vt(e),t=e.lastReadGroup;break;case 13:i.endTangent=vt(e),t=e.lastReadGroup;break;case 40:i.knotValues||(i.knotValues=[]),i.knotValues.push(t.value),t=e.next();break;case 70:1&t.value&&(i.closed=!0),2&t.value&&(i.periodic=!0),4&t.value&&(i.rational=!0),8&t.value&&(i.planar=!0),16&t.value&&(i.planar=!0,i.linear=!0),t=e.next();break;case 71:i.degreeOfSplineCurve=t.value,t=e.next();break;case 72:i.numberOfKnots=t.value,t=e.next();break;case 73:i.numberOfControlPoints=t.value,t=e.next();break;case 74:i.numberOfFitPoints=t.value,t=e.next();break;case 210:i.normalVector=vt(e),t=e.lastReadGroup;break;case 101:for(;0!=t.code;)t=e.next();break;default:fr(i,t),t=e.next()}return i}},b_=class{constructor(){this.ForEntityName="TEXT"}parseEntity(e,t){let i={type:t.value};for(t=e.next();!e.isEOF()&&0!==t.code;)switch(t.code){case 10:i.startPoint=vt(e),t=e.lastReadGroup;break;case 11:i.endPoint=vt(e),t=e.lastReadGroup;break;case 40:i.textHeight=t.value,t=e.next();break;case 41:i.xScale=t.value,t=e.next();break;case 50:i.rotation=t.value,t=e.next();break;case 1:i.text=t.value,t=e.next();break;case 72:i.halign=t.value,t=e.next();break;case 73:i.valign=t.value,t=e.next();break;case 7:i.textStyle=t.value,t=e.next();break;case 71:i.mirrored=t.value,t=e.next();break;case 101:for(;0!=t.code;)t=e.next();break;default:fr(i,t),t=e.next()}return i}},x_=class{constructor(){this.ForEntityName="VIEWPORT"}parseEntity(e,t){let i={type:t.value};for(t=e.next();!e.isEOF()&&0!==t.code;)switch(t.code){case 68:i.viewportStatus=t.value,t=e.next();break;case 40:i.width_paperSpace=t.value,t=e.next();break;case 41:i.height_paperSpace=t.value,t=e.next();break;case 69:i.viewportId=t.value,t=e.next();break;case 10:i.centerPoint=vt(e),t=e.lastReadGroup;break;case 12:i.centerPoint_dcs=vt(e),t=e.lastReadGroup;break;case 13:i.snapBasePoint_dcs=vt(e),t=e.lastReadGroup;break;case 14:i.snapSpacing_dcs=vt(e),t=e.lastReadGroup;break;case 15:i.gridSpacing_dcs=vt(e),t=e.lastReadGroup;break;case 16:i.viewDirection=vt(e),t=e.lastReadGroup;break;case 17:i.viewTarget=vt(e),t=e.lastReadGroup;break;case 42:i.perspectiveLens=t.value,t=e.next();break;case 43:i.frontClippingPlaneZ=t.value,t=e.next();break;case 44:i.backClippingPlaneZ=t.value,t=e.next();break;case 45:i.viewHeight=t.value,t=e.next();break;case 50:i.snapAngle=t.value,t=e.next();break;case 51:i.viewTwistAngle=t.value,t=e.next();break;case 72:i.circleZoomPercent=t.value,t=e.next();break;case 331:i.frozenLayerHandles=i.frozenLayerHandles||[],i.frozenLayerHandles.push(t.value),t=e.next();break;case 90:i.viewportStatusFlags=t.value,t=e.next();break;case 340:i.viewportClippingBoundaryhandleId=t.value,t=e.next();break;case 1:i.plotStyleSheetName=t.value,t=e.next();break;case 281:i.renderMode=t.value,t=e.next();break;case 71:i.viewportFlag_ucs=t.value,t=e.next();break;case 74:i.ucsIcon=t.value,t=e.next();break;case 110:i.ucsOrigin=vt(e),t=e.lastReadGroup;break;case 111:i.ucsXAxis=vt(e),t=e.lastReadGroup;break;case 112:i.ucsYAxis=vt(e),t=e.lastReadGroup;break;case 345:i.ucsTableRecordHandle=t.value,t=e.next();break;case 346:i.baseUcsTableRecordHandle=t.value,t=e.next();break;case 79:i.orthographicType=t.value,t=e.next();break;case 146:i.elevation=t.value,t=e.next();break;case 170:i.shadePlotMode=t.value,t=e.next();break;case 61:i.frequency=t.value,t=e.next();break;case 292:i.lightingFlag=t.value,t=e.next();break;case 282:i.lightingType=t.value,t=e.next();break;case 141:i.viewBrightness=t.value,t=e.next();break;case 142:i.viewContrast=t.value,t=e.next();break;case 101:for(;0!=t.code;)t=e.next();break;default:fr(i,t),t=e.next()}return i}},I_=class{constructor(){this.ForEntityName="XLINE"}parseEntity(e,t){let i={type:t.value,vertices:[]};for(t=e.next();!e.isEOF()&&0!==t.code;)switch(t.code){case 10:i.vertices.unshift(vt(e)),t=e.lastReadGroup;break;case 11:i.directionVector=vt(e),t=e.lastReadGroup;break;case 100:t=e.next();break;case 101:for(;0!=t.code;)t=e.next();break;default:fr(i,t),t=e.next()}return i}},tO=class{constructor(){this.ForObjectName="DICTIONARY"}parseObject(e,t){let i={type:t.value},r=[],n=[];for(t=e.next();!e.isEOF()&&0!==t.code;)switch(t.code){case 280:i.isHardOwner=1===t.value,t=e.next();break;case 281:i.cloningFlag=t.value,t=e.next();break;case 3:r.push(t.value),t=e.next();break;case 350:case 360:n.push(t.value),t=e.next();break;case 100:case 102:t=e.next();break;default:lh(i,t),t=e.next()}if(r.length!==n.length)throw new Error("The number of Dictionary entries does not match !");return i.entries={},r.forEach(((e,t)=>{i.entries[n[t]]=e})),i}},rO=class{constructor(){this.ForObjectName="LAYOUT"}parseObject(e,t){let i={type:t.value};for(t=e.next();!e.isEOF()&&0!==t.code;)switch(t.code){case 100:t=e.next();break;case 1:i.layoutName=t.value,t=e.next();break;case 70:i.flag=t.value,t=e.next();break;case 71:i.tabOrder=t.value,t=e.next();break;case 76:i.orthographicType=t.value,t=e.next();break;case 10:i.minLimit=vt(e),t=e.lastReadGroup;break;case 11:i.maxLimit=vt(e),t=e.lastReadGroup;break;case 12:i.basePoint=vt(e),t=e.lastReadGroup;break;case 13:i.origin=vt(e),t=e.lastReadGroup;break;case 14:i.minExtent=vt(e),t=e.lastReadGroup;break;case 15:i.maxExtent=vt(e),t=e.lastReadGroup;break;case 16:i.XAxis=vt(e),t=e.lastReadGroup;break;case 17:i.YAxis=vt(e),t=e.lastReadGroup;break;case 146:i.elevation=t.value,t=e.next();break;case 331:i.viewportHandle=t.value,t=e.next();break;default:lh(i,t),t=e.next()}return i.blockTableHandle=i.ownerHandle,i}},iO=class{constructor(){this.ForObjectName="SORTENTSTABLE"}parseObject(e,t){let i={type:t.value},r=!1;i.sortEntsObject={},i.sortEntsObject.entityHandles=[];let n=[];for(t=e.next();!e.isEOF()&&0!==t.code;)switch(t.code){case 5:r?(n.push(t.value),i.sortEntsObject.entityHandles.push(n),n=[]):i.handle=t.value,t=e.next();break;case 100:t=e.next(),r=!0;break;case 102:t=e.next();break;case 330:r?i.sortEntsObject.ownerHandle=t.value:i.ownerHandle=t.value,t=e.next();break;case 331:n.push(t.value),t=e.next();break;default:lh(i,t),t=e.next()}return i}},nO=class{constructor(){this.ForObjectName="SPATIAL_FILTER"}parseObject(e,t){let i,r,n={type:t.value};for(n.vertices=[],t=e.next();!e.isEOF()&&0!==t.code;)switch(t.code){case 11:n.origin=vt(e),t=e.lastReadGroup;break;case 70:n.numberOfPointsOnClipBoundary=t.value,2===n.numberOfPointsOnClipBoundary?(t=e.next(),i=vt(e),t=e.lastReadGroup,r=vt(e),t=e.lastReadGroup,n.vertices.push(i,{x:r.x,y:i.y},r,{x:i.x,y:r.y},i)):n.numberOfPointsOnClipBoundary>2?(n.vertices=s2t(n.numberOfPointsOnClipBoundary,e),t=e.lastReadGroup):t=e.next();break;case 71:n.clipBoundaryVisible=1===t.value,t=e.next();break;case 72:n.frontClippingPlaneFlag=1===t.value,t=e.next(),n.frontClippingPlaneFlag&&40===t.code&&(n.frontClippingPlaneDistance=t.value,t=e.next());break;case 73:n.backClippingPlaneFlag=1===t.value,t=e.next(),n.backClippingPlaneFlag&&41===t.code&&(n.backClippingPlaneDistance=t.value,t=e.next());break;case 100:case 102:t=e.next();break;case 210:n.extrusionDirectionX=t.value,t=e.next();break;case 220:n.extrusionDirectionY=t.value,t=e.next();break;case 230:n.extrusionDirectionZ=t.value,t=e.next();break;case 40:n.invertBlockMatrix=wMe(e,40),n.matrix=wMe(e,40),t=e.lastReadGroup;break;default:lh(n,t),t=e.next()}return n}};function s2t(e,t){t.next();let i=[];for(;i.length{e.on("data",(e=>{t+=e})),e.on("end",(()=>{try{r(i.parse(t))}catch(e){n(e)}})),e.on("error",(e=>{n(e)}))}))}_parse(e){let t={},i=0;if(!e.hasNext())throw Error("Empty file");let r,n=this;function s(){let t=null,i=null,n={};for(r=e.next();;){if(el(r,0,"ENDSEC")){t&&(n[t]=i);break}9===r.code?(t&&(n[t]=i),t=r.value):10===r.code?i={x:r.value}:20===r.code?i.y=r.value:30===r.code?i.z=r.value:i=r.value,r=e.next()}return r=e.next(),n}function a(){let t={};for(r=e.next();"EOF"!==r.value&&!el(r,0,"ENDSEC");)if(el(r,0,"BLOCK")){ne.trace("block {");let e=o();ne.trace("}"),m(e),e.name?t[e.name]=e:ne.error(`[DxfParser] Block with handle '${e.handle}' is missing a name, ignored!`)}else sd(r),r=e.next();return t}function o(){let t={};for(r=e.next();"EOF"!==r.value;){switch(r.code){case 1:t.xrefPath=r.value,r=e.next();break;case 2:t.name=r.value,r=e.next();break;case 3:t.name2=r.value,r=e.next();break;case 4:t.description=r.value,r=e.next();break;case 5:t.handle=r.value,r=e.next();break;case 8:t.layer=r.value,r=e.next();break;case 10:t.position=f(r),r=e.lastReadGroup;break;case 67:t.paperSpace=!(!r.value||1!==r.value),r=e.next();break;case 70:t.blockType=r.value,r=e.next();break;case 100:r=e.next();break;case 330:t.ownerHandle=r.value,r=e.next();break;case 0:if("ENDBLK"==r.value)break;t.entities=p(!0);break;default:sd(r),r=e.next()}if(el(r,0,"ENDBLK")){r=e.next();break}}return t}function l(){let t={};for(r=e.next();"EOF"!==r.value&&!el(r,0,"ENDSEC");)el(r,0,"TABLE")?(r=e.next(),c[r.value]?(ne.trace(r.value+" Table {"),t[c[r.value].tableName]=u(r),ne.trace("}")):ne.trace("Unhandled Table "+r.value)):r=e.next();return r=e.next(),t}let h="ENDTAB";function u(t){let i=c[t.value],n={},s=0;for(r=e.next();!el(r,0,h);)switch(r.code){case 5:n.handle=r.value,r=e.next();break;case 330:n.ownerHandle=r.value,r=e.next();break;case 100:"AcDbSymbolTable"===r.value||sd(r),r=e.next();break;case 70:s=r.value,r=e.next();break;case 0:r.value===i.dxfSymbolName?n[i.tableRecordsProperty]=i.parseTableRecords():(sd(r),r=e.next());break;default:sd(r),r=e.next()}let a=n[i.tableRecordsProperty];if(a){let e=a.constructor===Array?a.length:"object"==typeof a?Object.keys(a).length:void 0;s!==e&&ne.warn(`[DxfParser] Parsed ${e} ${i.dxfSymbolName}s but expected ${s}`)}return r=e.next(),n}let c={VPORT:{tableRecordsProperty:"viewPorts",tableName:"viewPort",dxfSymbolName:"VPORT",parseTableRecords:function(){let t=[],i={};for(ne.trace("ViewPort {"),r=e.next();!el(r,0,h);)switch(r.code){case 2:i.name=r.value,r=e.next();break;case 10:i.lowerLeftCorner=f(r),r=e.lastReadGroup;break;case 11:i.upperRightCorner=f(r),r=e.lastReadGroup;break;case 12:i.center=f(r),r=e.lastReadGroup;break;case 13:i.snapBasePoint=f(r),r=e.lastReadGroup;break;case 14:i.snapSpacing=f(r),r=e.lastReadGroup;break;case 15:i.gridSpacing=f(r),r=e.lastReadGroup;break;case 16:i.viewDirectionFromTarget=f(r),r=e.lastReadGroup;break;case 17:i.viewTarget=f(r),r=e.lastReadGroup;break;case 40:case 45:i.viewHeight=r.value,r=e.next();break;case 41:i.aspectRatio=r.value,r=e.next();break;case 42:i.lensLength=r.value,r=e.next();break;case 43:i.frontClippingPlane=r.value,r=e.next();break;case 44:i.backClippingPlane=r.value,r=e.next();break;case 50:i.snapRotationAngle=r.value,r=e.next();break;case 51:i.viewTwistAngle=r.value,r=e.next();break;case 79:i.orthographicType=r.value,r=e.next();break;case 110:i.ucsOrigin=f(r),r=e.lastReadGroup;break;case 111:i.ucsXAxis=f(r),r=e.lastReadGroup;break;case 112:i.ucsYAxis=f(r),r=e.lastReadGroup;break;case 281:i.renderMode=r.value,r=e.next();break;case 282:i.defaultLightingType=r.value,r=e.next();break;case 292:i.defaultLightingOn=r.value,r=e.next();break;case 330:i.ownerHandle=r.value,r=e.next();break;case 63:case 421:case 431:i.ambientColor=r.value,r=e.next();break;case 0:"VPORT"===r.value&&(ne.trace("}"),t.push(i),ne.trace("ViewPort {"),i={},r=e.next());break;default:sd(r),r=e.next()}return ne.trace("}"),t.push(i),t}},LTYPE:{tableRecordsProperty:"lineTypes",tableName:"lineType",dxfSymbolName:"LTYPE",parseTableRecords:function(){let t={},i={},s=0,a="",o=!1;for(ne.trace("LType {"),r=e.next();!el(r,0,"ENDTAB");)switch(r.code){case 2:i.name=r.value.toUpperCase(),a=i.name,r=e.next();break;case 3:i.description=r.value,r=e.next();break;case 9:case 44:case 45:case 46:case 70:case 75:default:r=e.next();break;case 40:i.patternLength=r.value,r=e.next();break;case 49:let l=r.value;o&&(l=Math.abs(l),o=!1),i.pattern.push(l),r=e.next();break;case 73:s=r.value,s>0&&(i.pattern=[]),r=e.next();break;case 74:0!==r.value&&(o=!0,n.unsupportedLineTypes[i.name]?n.unsupportedLineTypes[i.name]++:n.unsupportedLineTypes[i.name]=1),r=e.next();break;case 0:ne.trace("}"),s>0&&s!==i.pattern.length&&ne.warn("[DxfParser] lengths do not match on LTYPE pattern"),t[a]=i,i={},ne.trace("LType {"),r=e.next()}return ne.trace("}"),t[a]=i,t}},LAYER:{tableRecordsProperty:"layers",tableName:"layer",dxfSymbolName:"LAYER",parseTableRecords:function(){let t,i={},n={};for(ne.trace("Layer {"),r=e.next();!el(r,0,"ENDTAB");)switch(r.code){case 2:n.name=r.value,t=r.value,r=e.next();break;case 5:n.handle=r.value,r=e.next();break;case 62:n.visible=r.value>=0,n.colorIndex=Math.abs(r.value),n.color=c2t(n.colorIndex),r=e.next();break;case 70:n.flag=r.value,n.frozen=(1&n.flag)>0,r=e.next();break;case 420:n.color=Math.abs(r.value),r=e.next();break;case 6:n.lineType=r.value.toUpperCase(),r=e.next();break;case 370:n.lineweight=r.value,r=e.next();break;case 0:"LAYER"===r.value&&(ne.trace("}"),t&&(i[t]=n),ne.trace("Layer {"),n={},t=void 0,r=e.next());break;default:sd(r),r=e.next()}return ne.trace("}"),t&&(i[t]=n),i}},BLOCK_RECORD:{tableRecordsProperty:"blockRecords",tableName:"blockRecord",dxfSymbolName:"BLOCK_RECORD",parseTableRecords:function(){let t,i={},s={};for(ne.trace("BlockRecord {"),r=e.next();!el(r,0,"ENDTAB");)switch(r.code){case 5:s.handle=r.value,r=e.next();break;case 330:s.ownerHandle=r.value,r=e.next();break;case 2:s.blockName=r.value,t=s.blockName,r=e.next();break;case 340:s.layoutHandle=r.value,r=e.next();break;case 70:s.blockInsertUnits=r.value,r=e.next();break;case 280:s.blockExplodability=r.value,r=e.next();break;case 281:s.blockScalability=r.value,r=e.next();break;case 310:s.bitmap=r.value,r=e.next();break;case 0:if("BLOCK_RECORD"===r.value){ne.trace("}"),t&&(i[t]=s);let a=s.layoutHandle;t&&a&&a.length>0&&"0"!==a&&(n._layoutBlocks[a]=s),ne.trace("BlockRecord {"),s={},t=void 0,r=e.next()}else sd(r),r=e.next();break;default:sd(r),r=e.next()}ne.trace("}"),t&&(i[t]=s);let a=s.layoutHandle;return t&&a&&a.length>0&&"0"!==a&&(n._layoutBlocks[a]=s),i}},STYLE:{tableRecordsProperty:"styles",tableName:"style",dxfSymbolName:"STYLE",parseTableRecords:function(){let t,i={},n={};for(ne.trace("Style {"),r=e.next();!el(r,0,"ENDTAB");)switch(r.code){case 2:n.styleName=r.value,t=r.value,r=e.next();break;case 3:n.fontFile=r.value,r=e.next();break;case 4:n.bigFontFile=r.value,r=e.next();break;case 5:n.handle=r.value,r=e.next();break;case 7:n.textStyle=r.value,r=e.next();break;case 40:n.textHeight=r.value,r=e.next();break;case 41:n.xScale=r.value,r=e.next();break;case 42:n.priorTextHeight=r.value,r=e.next();break;case 50:n.rotation=r.value,r=e.next();break;case 70:default:r=e.next();break;case 71:n.mirroreType=r.value,r=e.next();break;case 330:n.ownerHandle=r.value,r=e.next();break;case 0:"STYLE"===r.value&&(ne.trace("}"),t&&(i[t]=n),ne.trace("Style {"),n={},t=void 0,r=e.next())}return ne.trace("}"),t&&(i[t]=n),i}},DIMSTYLE:{tableRecordsProperty:"dimStyles",tableName:"dimStyle",dxfSymbolName:"DIMSTYLE",parseTableRecords:function(){let t,i={},n={};for(ne.trace("DimStyle {"),r=e.next();!el(r,0,"ENDTAB");)switch(r.code){case 2:n.styleName=r.value,t=r.value,r=e.next();break;case 40:n.DIMSCALE=r.value,r=e.next();break;case 41:n.DIMASZ=r.value,r=e.next();break;case 42:n.DIMEXO=r.value,r=e.next();break;case 44:n.DIMEXE=r.value,r=e.next();break;case 75:n.DIMSE1=r.value,r=e.next();break;case 76:n.DIMSE2=r.value,r=e.next();break;case 77:n.DIMTAD=r.value,r=e.next();break;case 140:n.DIMTXT=r.value,r=e.next();break;case 144:n.DIMLFAC=r.value,r=e.next();break;case 147:n.DIMGAP=r.value,r=e.next();break;case 176:n.DIMCLRD=r.value,r=e.next();break;case 178:n.DIMCLRT=r.value,r=e.next();break;case 271:n.DIMDEC=r.value,r=e.next();break;case 341:n.DIMLDRBLK=r.value,r=e.next();break;case 70:default:r=e.next();break;case 0:"DIMSTYLE"===r.value&&(ne.trace("}"),t&&(i[t]=n),ne.trace("DimStyle {"),n={},t=void 0,r=e.next())}return ne.trace("}"),t&&(i[t]=n),i}}};function p(t){let i=[],s=t?"ENDBLK":"ENDSEC";for(t||(r=e.next());;)if(0===r.code){if(r.value===s)break;let t=n._entityHandlers[r.value];if(null==t){let t=r.value;n.unhandledEntities[t]||(n.unhandledEntities[t]=0),n.unhandledEntities[t]++,r=e.next();continue}{ne.trace(r.value+" {");let n=t.parseEntity(e,r);n&&(n.layer||(n.layer="0"),void 0===n.colorIndex&&(n.colorIndex=256),n.lineType||(n.lineType=QA)),r=e.lastReadGroup,ne.trace("}"),m(n),i.push(n)}}else r=e.next();return"ENDSEC"==s&&(r=e.next()),i}function d(){let t={};for(r=e.next();"EOF"!==r.value;)if(0===r.code){if("ENDSEC"===r.value)break;let i=n._objectHandlers[r.value];if(null==i){let t=r.value;n.unhandledObjects[t]||(n.unhandledObjects[t]=0),n.unhandledObjects[t]++,r=e.next();continue}{ne.trace(r.value+" {");let n=i.parseObject(e,r),s=r.value;r=e.lastReadGroup,ne.trace("}"),m(n),t[s]||(t[s]=[]),t[s].push(n)}}else r=e.next();return r=e.next(),t.LAYOUT&&(Object.keys(n._layoutBlocks).length!==t.LAYOUT.length&&ne.warn("[DxfParser] The number of layout and block associations does not match!"),t.LAYOUT.forEach((e=>{n._layoutBlocks[e.handle]&&(e.associatedBlockName=n._layoutBlocks[e.handle].blockName)})),t.LAYOUT.sort(((e,t)=>e.tabOrder-t.tabOrder))),t}function f(t){let i={},r=t.code;if(i.x=t.value,r+=10,(t=e.next()).code!=r)throw new Error(`Expected code for point value to be ${r} but got ${t.code}.`);return i.y=t.value,r+=10,(t=e.next()).code!=r||(i.z=t.value,t=e.next()),i}function m(e){if(!e)throw new TypeError("entity cannot be undefined or null");e.handle||(e.handle=(i++).toString())}return function(){for(r=e.next();999===r.code;)r=e.next();for(;!e.isEOF();)if(0===r.code&&"SECTION"===r.value){if(r=e.next(),2!==r.code){ne.error("Unexpected code %s after 0:SECTION",RMe(r)),r=e.next();continue}if("HEADER"===r.value)ne.trace("> HEADER"),t.header=s(),ne.trace("<");else if("TABLES"===r.value)ne.trace("> TABLES"),t.tables=l(),ne.trace("<");else if("BLOCKS"===r.value)ne.trace("> BLOCKS"),t.blocks=a(),ne.trace("<");else if("ENTITIES"===r.value)ne.trace("> ENTITIES"),t.entities=p(!1),ne.trace("<");else if("OBJECTS"===r.value)ne.trace("> OBJECTS"),t.objects=d(),ne.trace("<");else if("EOF"===r.value)ne.trace("EOF");else{let e=r.value;n.unhandledSections[e]?n.unhandledSections[e]++:n.unhandledSections[e]=1}}else r=e.next();n.unhandledSections={},n.unhandledEntities={},n.unhandledObjects={},n.unsupportedLineTypes={}}(),t}splitByLineSeparator(e){let t=[],i=0;for(let r=0,n=e.length;r(e.Added="Added",e.Removed="Removed",e.Modified="Modified",e.NoChange="NoChange",e))(L8||{}),zs=1,aO=class{constructor(e,t){if(this.changes={},this.comparedBlocks=new Map,this.isComparingBlock=!1,this.isComparingDimension=!1,this.dxf1=e,this.dxf2=t,!e||!t)throw new Error("Invalid dxf data to compare!")}getLayerFrozen(e,t){var i,r,n;let s=null==(r=null==(i=e.tables)?void 0:i.layer)?void 0:r.layers;return s&&(null==(n=s[t.layer])?void 0:n.frozen)}compare(e){return ht(this,null,(function*(){this.changes={};let t=[],i=new Map;return this.dxf1.entities.forEach((e=>{if(!0!==e.inPaperSpace){let i=!0===this.getLayerFrozen(this.dxf1,e);!aO.ignoreEntityTypes.includes(e.type)&&!i&&t.push(e)}})),this.dxf2.entities.forEach((e=>{if(!0!==e.inPaperSpace){let t=!0===this.getLayerFrozen(this.dxf2,e);!aO.ignoreEntityTypes.includes(e.type)&&!t&&i.set(e.handle,e)}})),yield this.compareEntities(t,i,void 0,e),Promise.resolve(this.changes)}))}isDimensionBlock(e){return e.includes("*D")}compareInsertOrDemensionEntities(e,t,i,r){if(!e.block||!t.block)return;let n,s=e.block;if(this.isComparingBlock=!0,this.isDimensionBlock(s)){let i=this.dxf1.blocks[e.block],r=this.dxf2.blocks[t.block],a=Date.now();this.isComparingDimension=!0,n=this.compareBlock(i,r),this.isComparingDimension=!1,ne.debug(`[DxfCompare] compare block: ${s} cost ${(Date.now()-a)/1e3}s`)}else{if(!this.comparedBlocks.has(s)){let e=this.dxf1.blocks[s],t=this.dxf2.blocks[s],i=Date.now(),r=this.compareBlock(e,t);this.comparedBlocks.set(s,r),ne.debug(`[DxfCompare] compare block: ${s} cost ${(Date.now()-i)/1e3}s`)}n=this.comparedBlocks.get(s)}return null==n||n.forEach((t=>{if(t.parentHandles||(t.parentHandles=[]),i&&r)"Added"===t.type?t.parentHandles.push(r):"Removed"===t.type&&t.parentHandles.push(i);else{let i=[...t.parentHandles,e.handle];("Added"===t.type||"Removed"===t.type)&&(this.changes[zs]=Cn(Br({id:zs},t),{parentHandles:i})),zs++}})),!i&&!r&&(this.isComparingBlock=!1),n}compareBlock(e,t){var i,r;let n=[],s=[];null==(i=null==e?void 0:e.entities)||i.forEach((e=>{"ATTDEF"!==e.type&&!this.bIgnoreChildEntitiesOriginalType(e)&&n.push(e)})),null==(r=null==t?void 0:t.entities)||r.forEach((e=>{"ATTDEF"!==e.type&&!this.bIgnoreChildEntitiesOriginalType(e)&&s.push(e)}));let a=[],o=[];for(let e=0;e0&&a.push(...n),i=!1,s.splice(e--,1);break}i=!1,s.splice(e--,1);break}i=!0}i&&(a.push({type:"Removed",handle:t.handle}),o.push(t.handle))}return s.forEach((e=>{o.includes(e.handle)||a.push({type:"Added",handle:e.handle})})),a}compareEntities(e,t,i,r){return ht(this,null,(function*(){var n,s;let a=e.length,o=Math.round(Math.pow(a,.5)),l=Date.now(),h=e=>ht(this,null,(function*(){if(r&&(e%o==0||e===a-1)){r(new ProgressEvent("compareProgress",{loaded:e+1,total:a}));let t=500,i=Date.now();(i-l>t||e===a-1)&&(yield xs.sleep(0),l=i)}}));for(let r=0;r\n\n // Clamp [0..1] range\n #define saturate(a) clamp(a, 0.0, 1.0)\n\n const float EPS = 0.000001;\n\n vec2 getWorldScale() {\n return vec2(length(modelMatrix[0].xyz), length(modelMatrix[1].xyz));\n }\n\n vec2 rotate(vec2 st, float rotation) {\n const float PI = 3.1415926;\n float angle = rotation * PI/180.0;\n float sine = sin(angle), cosine = cos(angle);\n return vec2(cosine * st.x - sine * st.y, cosine * st.y + sine * st.x);\n }\n\n vec2 translate(vec2 samplePosition, vec2 offset) {\n //move samplepoint in the opposite direction that we want to move shapes in\n return samplePosition - offset;\n }\n\n vec2 scale(vec2 samplePosition, float scale) {\n return samplePosition / scale;\n }\n\n float sdfLine(vec2 st, vec2 a, vec2 b) {\n vec2 ap = st - a;\n vec2 ab = b - a;\n return abs(((ap.x * ab.y) - (ab.x * ap.y))) / length(ab);\n }\n\n float drawSpaceLine(vec2 st, float distanceBetweenLines, float thick) {\n float dist = sdfLine(st , vec2(0.0, 0.0) , vec2(1.0, 0.0));\n \n //vec2 tt = dFdy(st);\n //float scale = (abs(tt.x)+abs(tt.y))/2.0;\n //float scale = length(fwidth(st)) * 0.5;\n // close to a pixel\n //float thick = 2.0;\n //thick = (thick * 0.5 - 0.5) * scale;\n\n float lineDistance = abs(fract(dist / distanceBetweenLines + 0.5) - 0.5) * distanceBetweenLines;\n //float distanceChange = fwidth(dist) * 0.5;\n //float thresold = smoothstep(thick - distanceChange, thick + distanceChange, lineDistance);\n //float thresold = step(thick,lineDistance);\n // remove gradient\n float thresold = step(thick,lineDistance);\n\n return saturate(thresold);\n }\n\n float drawSolidLine(PatternLine patternLine, float thick) {\n vec2 origin = patternLine.origin;\n vec2 delta = patternLine.delta;\n float distanceBetweenLines = length(delta);\n\n origin = rotate(origin,u_patternAngle);\n vec2 st = rotate(v_pos.xy - origin, -(patternLine.angle + u_patternAngle));\n\n return drawSpaceLine(st, distanceBetweenLines , thick);\n }\n\n int getPatternIndex(PatternLine patternLine, float u ) {\n u = mod(u, patternLine.patternLength);\n float distance = 0.0;\n\n #pragma unroll_loop_start\n for(int i = 1; i < patternLine.patternSum.length(); i++){\n if(u < patternLine.patternSum[i]) {\n distance = u - patternLine.patternSum[i-1];\n return i - 1;\n }\n }\n #pragma unroll_loop_end\n\n return -1;\n }\n\n float drawDashedLine(PatternLine patternLine, float thick){\n float thresold = 1.0;\n vec2 origin = patternLine.origin;\n vec2 delta = patternLine.delta; \n float distanceBetweenLines = length(delta.y);\n\n origin = rotate(origin, u_patternAngle);\n vec2 st = rotate(v_pos.xy - origin, -(patternLine.angle + u_patternAngle));\n\n float offsetX = st.y * delta.x/delta.y;\n float u = st.x - offsetX;\n int index = getPatternIndex(patternLine, u);\n if(index < 0){\n return thresold;\n }\n\n float size = patternLine.pattern[index];\n if(size >= 0.0) {\n thresold = drawSpaceLine(st, distanceBetweenLines , thick);\n }\n \n return thresold;\n }\n\n float drawLine(PatternLine patternLine, float thick) {\n float t = 0.0;\n if(patternLine.patternLength > 0.0) {\n t = drawDashedLine(patternLine, thick);\n } else {\n t = drawSolidLine(patternLine, thick);\n }\n return t;\n }\n\n void main() {\n #include \n \n if(u_cameraZoom < EPS){\n gl_FragColor = vec4(u_color, 1.0);\n return;\n }\n\n vec2 worldScale = getWorldScale();\n float averageScale = (abs(worldScale.x) + abs(worldScale.y))/2.0;\n float thick = (0.7 / averageScale) / u_cameraZoom;\n\n float total = 0.0;\n\n#if ${e.length} > 1\n #pragma unroll_loop_start\n for (int i = 0; i < u_patternLines.length(); i++) {\n PatternLine pl = u_patternLines[i];\n float t = drawLine(pl, thick);\n total += (1.0 - t);\n }\n #pragma unroll_loop_end\n#else\n float t = drawLine(u_patternLines[0], thick);\n total += (1.0 - t);\n#endif\n\n total = saturate(total);\n if (total < 0.01) {\n discard;\n }\n\n gl_FragColor = vec4(u_color * total, 1.0);\n }\n `;return new Yt({uniforms:n,vertexShader:"\n varying vec3 v_pos;\n\n #include \n void main() {\n //vec4 worldPosition = modelMatrix * vec4(position, 1.0);\n v_pos = position;\n\n #include \n #include \n #include \n }",fragmentShader:s,clipping:!0})}qn.ENTITY_COLOR_ADDED=65280,qn.ENTITY_COLOR_REMOVED=16711680,qn.ENTITY_COLOR_NO_CHANGE=10066329,qn.ENTITY_COLOR_MARKUP=16744231,qn.ignoreEntityTypes=["ATTRIB","SEQEND"];var oO=class{static createLineShaderMaterial(e,t,i,r,n){let s=0,a=[];for(let t=0;t\n\n vec2 getWorldScale() {\n return vec2(length(modelMatrix[0].xyz), length(modelMatrix[1].xyz));\n }\n\n void main() {\n\n #include \n\n // vec2 worldScale = getWorldScale();\n // float averageScale = (abs(worldScale.x) + abs(worldScale.y))/2.0;\n // When zoomed out to a certain extent, it is displayed as a solid line.\n if(patternLength * u_viewportScale * u_cameraZoom/1.5 < 1.0){\n gl_FragColor = vec4(u_color, opacity);\n return;\n }\n\n float pos = mod(vLineDistance, patternLength * u_viewportScale);\n\n for ( int i = 0; i < ${e.length}; i++ ) {\n pos = pos - abs(pattern[i] * u_viewportScale);\n if ( pos < 0.0 ) {\n if ( pattern[i] > 0.0 ) {\n gl_FragColor = vec4(u_color, opacity);\n break;\n }\n discard;\n }\n }\n }`;return new Yt({uniforms:o,vertexShader:"\n attribute float lineDistance;\n varying float vLineDistance;\n\n #include \n\n void main() {\n vLineDistance = lineDistance;\n\n #include \n #include \n #include \n }",fragmentShader:l,clipping:!0})}},B8={};QS(B8,{default:()=>U8});var H8={};QS(H8,{default:()=>F8});var F8=(e,t)=>void 0===t||0==+t?Math.round(e):(e=+e,t=+t,isNaN(e)||"number"!=typeof t||t%1!=0?NaN:(e=e.toString().split("e"),+((e=(e=Math.round(+(e[0]+"e"+(e[1]?+e[1]-t:-t)))).toString().split("e"))[0]+"e"+(e[1]?+e[1]+t:t)))),U8=(e,t,i,r,n)=>{let s=i.length,a=i[0].length;if(e<0||e>1)throw new Error("t out of bounds [0,1]: "+e);if(t<1)throw new Error("degree must be at least 1 (linear)");if(t>s-1)throw new Error("degree must be less than or equal to point count - 1");if(r){if(r.length!==s+t+1)throw new Error("bad knot vector length")}else{r=[];for(let e=0;e=r[o]&&e<=r[o+1]);o++);let c,p=[];for(let e=0;eo-t-1+i;n--){c=(e-r[n])/(r[n+t+1-i]-r[n]);for(let e=0;e{if(!e)return[];e=e.replace(/%%(.)/g,((e,t)=>u2t[t]||t));let i,r=null==t?void 0:t.encoding,n=r instanceof TextDecoder?r:void 0,s="",a=[],o=e=>{s&&(a.push(s),s=""),a.push(e)};for(let t=0;t(e=d2t(e),t?f2t(e,t):e),d2t=e=>e.replace(/\\[uU]\+([0-9a-fA-F]{4})/g,((e,t)=>String.fromCodePoint(parseInt(t,16)))),f2t=(e,t)=>{let i=t instanceof TextDecoder?t:new TextDecoder(t);return e.replace(/\\[mM]\+[0|1]([0-9a-fA-F]{2})([0-9a-fA-F]{2})/g,((e,r,n)=>(i=i||new TextDecoder(t)).decode(new Uint8Array([parseInt(r,16),parseInt(n,16)]))))},cO=(e,t)=>{let i=0,r={text:""},n=[r],s=(e=p2t(e,null==t?void 0:t.encoding)).matchAll(/%%(\d\d\d|.)/g);for(let t of s){r.text+=e.slice(i,t.index);let s=t[1].toLowerCase(),a=h2t[s];a?r.text+=a:3===s.length?r.text+=String.fromCodePoint(+s):"k"===s||"o"===s||"u"===s?(r=Cn(Br({},r),{text:""}),r[s]?delete r[s]:r[s]=1,n.push(r)):r.text+=s,i=t.index+t[0].length}return r.text+=e.slice(i),n.filter((e=>e.text))},k8=(e=>(e.Unitless="Unitless",e.Inches="Inches",e.Feet="Feet",e.Millimeters="Millimeters",e.Centimeters="Centimeters",e.Meters="Meters",e))(k8||{}),DMe=e=>"Unitless"===e?1:"Inches"===e?.0254:"Feet"===e?.3048:"Millimeters"===e?.001:"Centimeters"===e?.01:("Meters"===e||console.warn(`[Units] Unsupported unit '${e}', will return 1 for unit scale.`),1),G8=(e,t)=>DMe(e)/DMe(t),XT="0.2.28",CMe="VERSION",g2t=()=>window.localStorage.getItem(CMe),v2t=()=>{window.localStorage.setItem(CMe,XT)},AMe=()=>g2t()!==XT&&(v2t(),!0),$T=class{constructor(){this.DATABASE_NAME="gemini_viewer_db",this.TABLES=[{name:"viewpoint",options:{keyPath:"id",autoIncrement:!0},indexArray:[]},{name:"annotation",options:{keyPath:"id",autoIncrement:!0},indexArray:[]},{name:"dxfdata",options:{keyPath:"dxfDataId",autoIncrement:!1},indexArray:[]},{name:"fontdata",options:{keyPath:"url",autoIncrement:!0},indexArray:[]}],this.db=void 0}static instance(){return $T._instance||($T._instance=new $T),$T._instance}getDatabase(){return ht(this,null,(function*(){let e=yield this.getDB(this.DATABASE_NAME);return this.db||(e.close(),AMe()&&(yield this.deleteDataBase(this.DATABASE_NAME)),e=yield this.getUpgradedDB(e)),e.onclose=()=>{this.db=void 0,ne.debug(`[DB] Db ${e.name} is closed.`)},e.onerror=t=>{this.db=void 0,ne.debug(`[DB] Db ${e.name} encountered error.`,t)},e.onabort=t=>{this.db=void 0,ne.debug(`[DB] Db ${e.name} aborted.`,t)},e.onversionchange=e=>{ne.debug("onversionchange",e)},this.db=e,Promise.resolve(this.db)}))}closeDatabase(){this.db&&this.db.close()}deleteDataBase(e){return new Promise(((t,i)=>{let r=window.indexedDB.deleteDatabase(e);r.onerror=e=>{ne.debug(e),i(e)},r.onsuccess=i=>{let r=i.target;ne.debug(`[DB] Db ${e} delete old version ${i.oldVersion}.`),t(r)}}))}getDB(e){return ht(this,null,(function*(){return new Promise(((t,i)=>{let r=window.indexedDB.open(e);r.onerror=i,r.onsuccess=e=>{let i=e.target.result;ne.debug(`[DB] Db ${i.name} opened (version ${i.version}).`),t(i)}}))}))}getUpgradedDB(e){return ht(this,null,(function*(){return new Promise(((t,i)=>{ne.debug(`[DB] Upgrading db ${e.name} (version ${e.version})`);let r=window.indexedDB.open(e.name,e.version+1);r.onerror=i,r.onblocked=e=>{ne.debug("onblocked",e)},r.onupgradeneeded=e=>{e.target.transaction.oncomplete=()=>{ne.debug(`[DB] Upgrade is done (new version: ${t.version}).`)};let t=e.target.result,i=[];for(let e=0;e0&&Promise.all(i).then((()=>{ne.debug(`[DB] All(${i.length}) tables created.`)}))},r.onsuccess=e=>{let i=e.target.result;ne.debug(`[DB] Db ${i.name} opened (version ${i.version}).`),t(i)}}))}))}createTable(e,t,i,r){return ht(this,null,(function*(){return new Promise((n=>{let s=e.createObjectStore(t,i);r&&r.forEach((e=>{s.createIndex(e.name,e.fields,{unique:e.unique})})),ne.debug(`[DB] Table ${t} created.`),n(e)}))}))}},ss=$T;ss._instance=void 0;var ch=class{constructor(){if(this.db=void 0,this.isCreatingTable=!1,-1===ss.instance().TABLES.findIndex((e=>e.name===this.tableName())))throw new Error(`Make sure to add table '${this.tableName()}' to IndexedDbManager.TABLES!`)}tableName(){throw new Error("Derived class have to override 'tableName', and set a proper table name!")}add(e,t,i){let r=this.tableName();ss.instance().getDatabase().then((n=>{let s=n.transaction([r],"readwrite").objectStore(r).add(e);s.onsuccess=t,s.onerror=i})).finally((()=>{ss.instance().closeDatabase()})).catch((e=>{i&&i(e)}))}save(e,t,i){let r=this.tableName();ss.instance().getDatabase().then((n=>{let s=n.transaction([r],"readwrite").objectStore(r).put(e);s.onsuccess=t,s.onerror=i})).finally((()=>{ss.instance().closeDatabase()}))}delete(e,t,i){let r=this.tableName();ss.instance().getDatabase().then((n=>{let s=n.transaction([r],"readwrite").objectStore(r).delete(e);s.onsuccess=t,s.onerror=i})).finally((()=>{ss.instance().closeDatabase()}))}update(){ss.instance().getDatabase().then((()=>{}))}query(e,t){let i=this.tableName();ss.instance().getDatabase().then((r=>{let n=r.transaction([i],"readonly").objectStore(i).openCursor();n.onsuccess=t=>{let i=t.target.result;i&&i.continue(),e&&e(i)},n.onerror=t})).finally((()=>{ss.instance().closeDatabase()}))}queryAll(e,t){let i=this.tableName();ss.instance().getDatabase().then((r=>{let n=r.transaction([i],"readonly").objectStore(i).getAll();n.onsuccess=t=>{e&&e(n.result)},n.onerror=t})).finally((()=>{ss.instance().closeDatabase()}))}clearAll(e,t){let i=this.tableName();ss.instance().getDatabase().then((r=>{let n=r.transaction([i],"readwrite").objectStore(i).clear();n.onsuccess=t=>{e&&e(t)},n.onerror=e=>{t&&t(e)}})).finally((()=>{ss.instance().closeDatabase()}))}},KT=class extends ch{tableName(){return"annotation"}static instance(){return KT._instance||(KT._instance=new KT),KT._instance}query(e,t,i){let r=[];super.query((i=>{i?!i.value||i.value.projectId!==e||r.push(i.value):t&&t(r)}),(e=>{console.log(e)}))}},V8=KT;V8._instance=void 0;var ZT=class extends ch{tableName(){return"viewpoint"}static instance(){return ZT._instance||(ZT._instance=new ZT),ZT._instance}query(e,t,i){let r=[];super.query((i=>{i?!i.value||i.value.projectId!==e||r.push(i.value):t&&t(r)}),(e=>{i&&i(),console.log(e)}))}},z8=ZT;z8._instance=void 0;var JT=class extends ch{tableName(){return"dxfdata"}static instance(){return JT._instance||(JT._instance=new JT),JT._instance}query(e,t,i){let r=[],n=this.tableName();ss.instance().getDatabase().then((s=>{let a=s.transaction([n],"readonly").objectStore(n).get(e);a.onerror=e=>{i&&i(e),ne.info("[DxfDataTable] Failed to query !",e)},a.onsuccess=()=>{a.result&&r.push(a.result),t&&t(r)}})).finally((()=>{ss.instance().closeDatabase()}))}},QT=JT;QT._instance=void 0;var _0=class extends ch{tableName(){return"fontdata"}static instance(){return _0._instance||(_0._instance=new _0),_0._instance}query(e,t,i){let r;super.query((i=>{i?!i.value||i.value.url!==e||(r=i.value):t&&t(r)}),(e=>{i&&i(),console.log(e)}))}queryAll(){return ht(this,null,(function*(){return new Promise(((e,t)=>{U7(_0.prototype,this,"queryAll").call(this,(t=>{e(t)}),(e=>{t(e)}))}))}))}},uh=_0;uh._instance=void 0;var hO,OMe=(e=>(e[e.Horizontal=0]="Horizontal",e[e.Vertical=1]="Vertical",e[e.All=2]="All",e))(OMe||{}),S0=(e=>(e[e.Shapes=0]="Shapes",e[e.Bigfont=1]="Bigfont",e[e.Unifont=2]="Unifont",e))(S0||{}),uO=12,ad=class extends Qa{constructor(e,t){super(),this.width=0,this.lastPoint=e,this.polyLines=t,this.width=this.calcWidth(t)}offset(e){let t=[];for(let i=0;i>8}}return t.subarray(0,i)}var T2t="啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥懊澳芭捌扒叭吧笆八疤巴拔跋靶把耙坝霸罢爸白柏百摆佰败拜稗斑班搬扳般颁板版扮拌伴瓣半办绊邦帮梆榜膀绑棒磅蚌镑傍谤苞胞包褒剥薄雹保堡饱宝抱报暴豹鲍爆杯碑悲卑北辈背贝钡倍狈备惫焙被奔苯本笨崩绷甭泵蹦迸逼鼻比鄙笔彼碧蓖蔽毕毙毖币庇痹闭敝弊必辟壁臂避陛鞭边编贬扁便变卞辨辩辫遍标彪膘表鳖憋别瘪彬斌濒滨宾摈兵冰柄丙秉饼炳病并玻菠播拨钵波博勃搏铂箔伯帛舶脖膊渤泊驳捕卜哺补埠不布步簿部怖擦猜裁材才财睬踩采彩菜蔡餐参蚕残惭惨灿苍舱仓沧藏操糙槽曹草厕策侧册测层蹭插叉茬茶查碴搽察岔差诧拆柴豺搀掺蝉馋谗缠铲产阐颤昌猖场尝常长偿肠厂敞畅唱倡超抄钞朝嘲潮巢吵炒车扯撤掣彻澈郴臣辰尘晨忱沉陈趁衬撑称城橙成呈乘程惩澄诚承逞骋秤吃痴持匙池迟弛驰耻齿侈尺赤翅斥炽充冲虫崇宠抽酬畴踌稠愁筹仇绸瞅丑臭初出橱厨躇锄雏滁除楚础储矗搐触处揣川穿椽传船喘串疮窗幢床闯创吹炊捶锤垂春椿醇唇淳纯蠢戳绰疵茨磁雌辞慈瓷词此刺赐次聪葱囱匆从丛凑粗醋簇促蹿篡窜摧崔催脆瘁粹淬翠村存寸磋撮搓措挫错搭达答瘩打大呆歹傣戴带殆代贷袋待逮怠耽担丹单郸掸胆旦氮但惮淡诞弹蛋当挡党荡档刀捣蹈倒岛祷导到稻悼道盗德得的蹬灯登等瞪凳邓堤低滴迪敌笛狄涤翟嫡抵底地蒂第帝弟递缔颠掂滇碘点典靛垫电佃甸店惦奠淀殿碉叼雕凋刁掉吊钓调跌爹碟蝶迭谍叠丁盯叮钉顶鼎锭定订丢东冬董懂动栋侗恫冻洞兜抖斗陡豆逗痘都督毒犊独读堵睹赌杜镀肚度渡妒端短锻段断缎堆兑队对墩吨蹲敦顿囤钝盾遁掇哆多夺垛躲朵跺舵剁惰堕蛾峨鹅俄额讹娥恶厄扼遏鄂饿恩而儿耳尔饵洱二贰发罚筏伐乏阀法珐藩帆番翻樊矾钒繁凡烦反返范贩犯饭泛坊芳方肪房防妨仿访纺放菲非啡飞肥匪诽吠肺废沸费芬酚吩氛分纷坟焚汾粉奋份忿愤粪丰封枫蜂峰锋风疯烽逢冯缝讽奉凤佛否夫敷肤孵扶拂辐幅氟符伏俘服浮涪福袱弗甫抚辅俯釜斧脯腑府腐赴副覆赋复傅付阜父腹负富讣附妇缚咐噶嘎该改概钙盖溉干甘杆柑竿肝赶感秆敢赣冈刚钢缸肛纲岗港杠篙皋高膏羔糕搞镐稿告哥歌搁戈鸽胳疙割革葛格蛤阁隔铬个各给根跟耕更庚羹埂耿梗工攻功恭龚供躬公宫弓巩汞拱贡共钩勾沟苟狗垢构购够辜菇咕箍估沽孤姑鼓古蛊骨谷股故顾固雇刮瓜剐寡挂褂乖拐怪棺关官冠观管馆罐惯灌贯光广逛瑰规圭硅归龟闺轨鬼诡癸桂柜跪贵刽辊滚棍锅郭国果裹过哈骸孩海氦亥害骇酣憨邯韩含涵寒函喊罕翰撼捍旱憾悍焊汗汉夯杭航壕嚎豪毫郝好耗号浩呵喝荷菏核禾和何合盒貉阂河涸赫褐鹤贺嘿黑痕很狠恨哼亨横衡恒轰哄烘虹鸿洪宏弘红喉侯猴吼厚候后呼乎忽瑚壶葫胡蝴狐糊湖弧虎唬护互沪户花哗华猾滑画划化话槐徊怀淮坏欢环桓还缓换患唤痪豢焕涣宦幻荒慌黄磺蝗簧皇凰惶煌晃幌恍谎灰挥辉徽恢蛔回毁悔慧卉惠晦贿秽会烩汇讳诲绘荤昏婚魂浑混豁活伙火获或惑霍货祸击圾基机畸稽积箕肌饥迹激讥鸡姬绩缉吉极棘辑籍集及急疾汲即嫉级挤几脊己蓟技冀季伎祭剂悸济寄寂计记既忌际继纪嘉枷夹佳家加荚颊贾甲钾假稼价架驾嫁歼监坚尖笺间煎兼肩艰奸缄茧检柬碱硷拣捡简俭剪减荐槛鉴践贱见键箭件健舰剑饯渐溅涧建僵姜将浆江疆蒋桨奖讲匠酱降蕉椒礁焦胶交郊浇骄娇嚼搅铰矫侥脚狡角饺缴绞剿教酵轿较叫窖揭接皆秸街阶截劫节茎睛晶鲸京惊精粳经井警景颈静境敬镜径痉靖竟竞净炯窘揪究纠玖韭久灸九酒厩救旧臼舅咎就疚鞠拘狙疽居驹菊局咀矩举沮聚拒据巨具距踞锯俱句惧炬剧捐鹃娟倦眷卷绢撅攫抉掘倔爵桔杰捷睫竭洁结解姐戒藉芥界借介疥诫届巾筋斤金今津襟紧锦仅谨进靳晋禁近烬浸尽劲荆兢觉决诀绝均菌钧军君峻俊竣浚郡骏喀咖卡咯开揩楷凯慨刊堪勘坎砍看康慷糠扛抗亢炕考拷烤靠坷苛柯棵磕颗科壳咳可渴克刻客课肯啃垦恳坑吭空恐孔控抠口扣寇枯哭窟苦酷库裤夸垮挎跨胯块筷侩快宽款匡筐狂框矿眶旷况亏盔岿窥葵奎魁傀馈愧溃坤昆捆困括扩廓阔垃拉喇蜡腊辣啦莱来赖蓝婪栏拦篮阑兰澜谰揽览懒缆烂滥琅榔狼廊郎朗浪捞劳牢老佬姥酪烙涝勒乐雷镭蕾磊累儡垒擂肋类泪棱楞冷厘梨犁黎篱狸离漓理李里鲤礼莉荔吏栗丽厉励砾历利傈例俐痢立粒沥隶力璃哩俩联莲连镰廉怜涟帘敛脸链恋炼练粮凉梁粱良两辆量晾亮谅撩聊僚疗燎寥辽潦了撂镣廖料列裂烈劣猎琳林磷霖临邻鳞淋凛赁吝拎玲菱零龄铃伶羚凌灵陵岭领另令溜琉榴硫馏留刘瘤流柳六龙聋咙笼窿隆垄拢陇楼娄搂篓漏陋芦卢颅庐炉掳卤虏鲁麓碌露路赂鹿潞禄录陆戮驴吕铝侣旅履屡缕虑氯律率滤绿峦挛孪滦卵乱掠略抡轮伦仑沦纶论萝螺罗逻锣箩骡裸落洛骆络妈麻玛码蚂马骂嘛吗埋买麦卖迈脉瞒馒蛮满蔓曼慢漫谩芒茫盲氓忙莽猫茅锚毛矛铆卯茂冒帽貌贸么玫枚梅酶霉煤没眉媒镁每美昧寐妹媚门闷们萌蒙檬盟锰猛梦孟眯醚靡糜迷谜弥米秘觅泌蜜密幂棉眠绵冕免勉娩缅面苗描瞄藐秒渺庙妙蔑灭民抿皿敏悯闽明螟鸣铭名命谬摸摹蘑模膜磨摩魔抹末莫墨默沫漠寞陌谋牟某拇牡亩姆母墓暮幕募慕木目睦牧穆拿哪呐钠那娜纳氖乃奶耐奈南男难囊挠脑恼闹淖呢馁内嫩能妮霓倪泥尼拟你匿腻逆溺蔫拈年碾撵捻念娘酿鸟尿捏聂孽啮镊镍涅您柠狞凝宁拧泞牛扭钮纽脓浓农弄奴努怒女暖虐疟挪懦糯诺哦欧鸥殴藕呕偶沤啪趴爬帕怕琶拍排牌徘湃派攀潘盘磐盼畔判叛乓庞旁耪胖抛咆刨炮袍跑泡呸胚培裴赔陪配佩沛喷盆砰抨烹澎彭蓬棚硼篷膨朋鹏捧碰坯砒霹批披劈琵毗啤脾疲皮匹痞僻屁譬篇偏片骗飘漂瓢票撇瞥拼频贫品聘乒坪苹萍平凭瓶评屏坡泼颇婆破魄迫粕剖扑铺仆莆葡菩蒲埔朴圃普浦谱曝瀑期欺栖戚妻七凄漆柒沏其棋奇歧畦崎脐齐旗祈祁骑起岂乞企启契砌器气迄弃汽泣讫掐洽牵扦钎铅千迁签仟谦乾黔钱钳前潜遣浅谴堑嵌欠歉枪呛腔羌墙蔷强抢橇锹敲悄桥瞧乔侨巧鞘撬翘峭俏窍切茄且怯窃钦侵亲秦琴勤芹擒禽寝沁青轻氢倾卿清擎晴氰情顷请庆琼穷秋丘邱球求囚酋泅趋区蛆曲躯屈驱渠取娶龋趣去圈颧权醛泉全痊拳犬券劝缺炔瘸却鹊榷确雀裙群然燃冉染瓤壤攘嚷让饶扰绕惹热壬仁人忍韧任认刃妊纫扔仍日戎茸蓉荣融熔溶容绒冗揉柔肉茹蠕儒孺如辱乳汝入褥软阮蕊瑞锐闰润若弱撒洒萨腮鳃塞赛三叁伞散桑嗓丧搔骚扫嫂瑟色涩森僧莎砂杀刹沙纱傻啥煞筛晒珊苫杉山删煽衫闪陕擅赡膳善汕扇缮墒伤商赏晌上尚裳梢捎稍烧芍勺韶少哨邵绍奢赊蛇舌舍赦摄射慑涉社设砷申呻伸身深娠绅神沈审婶甚肾慎渗声生甥牲升绳省盛剩胜圣师失狮施湿诗尸虱十石拾时什食蚀实识史矢使屎驶始式示士世柿事拭誓逝势是嗜噬适仕侍释饰氏市恃室视试收手首守寿授售受瘦兽蔬枢梳殊抒输叔舒淑疏书赎孰熟薯暑曙署蜀黍鼠属术述树束戍竖墅庶数漱恕刷耍摔衰甩帅栓拴霜双爽谁水睡税吮瞬顺舜说硕朔烁斯撕嘶思私司丝死肆寺嗣四伺似饲巳松耸怂颂送宋讼诵搜艘擞嗽苏酥俗素速粟僳塑溯宿诉肃酸蒜算虽隋随绥髓碎岁穗遂隧祟孙损笋蓑梭唆缩琐索锁所塌他它她塔獭挞蹋踏胎苔抬台泰酞太态汰坍摊贪瘫滩坛檀痰潭谭谈坦毯袒碳探叹炭汤塘搪堂棠膛唐糖倘躺淌趟烫掏涛滔绦萄桃逃淘陶讨套特藤腾疼誊梯剔踢锑提题蹄啼体替嚏惕涕剃屉天添填田甜恬舔腆挑条迢眺跳贴铁帖厅听烃汀廷停亭庭挺艇通桐酮瞳同铜彤童桶捅筒统痛偷投头透凸秃突图徒途涂屠土吐兔湍团推颓腿蜕褪退吞屯臀拖托脱鸵陀驮驼椭妥拓唾挖哇蛙洼娃瓦袜歪外豌弯湾玩顽丸烷完碗挽晚皖惋宛婉万腕汪王亡枉网往旺望忘妄威巍微危韦违桅围唯惟为潍维苇萎委伟伪尾纬未蔚味畏胃喂魏位渭谓尉慰卫瘟温蚊文闻纹吻稳紊问嗡翁瓮挝蜗涡窝我斡卧握沃巫呜钨乌污诬屋无芜梧吾吴毋武五捂午舞伍侮坞戊雾晤物勿务悟误昔熙析西硒矽晰嘻吸锡牺稀息希悉膝夕惜熄烯溪汐犀檄袭席习媳喜铣洗系隙戏细瞎虾匣霞辖暇峡侠狭下厦夏吓掀锨先仙鲜纤咸贤衔舷闲涎弦嫌显险现献县腺馅羡宪陷限线相厢镶香箱襄湘乡翔祥详想响享项巷橡像向象萧硝霄削哮嚣销消宵淆晓小孝校肖啸笑效楔些歇蝎鞋协挟携邪斜胁谐写械卸蟹懈泄泻谢屑薪芯锌欣辛新忻心信衅星腥猩惺兴刑型形邢行醒幸杏性姓兄凶胸匈汹雄熊休修羞朽嗅锈秀袖绣墟戌需虚嘘须徐许蓄酗叙旭序畜恤絮婿绪续轩喧宣悬旋玄选癣眩绚靴薛学穴雪血勋熏循旬询寻驯巡殉汛训讯逊迅压押鸦鸭呀丫芽牙蚜崖衙涯雅哑亚讶焉咽阉烟淹盐严研蜒岩延言颜阎炎沿奄掩眼衍演艳堰燕厌砚雁唁彦焰宴谚验殃央鸯秧杨扬佯疡羊洋阳氧仰痒养样漾邀腰妖瑶摇尧遥窑谣姚咬舀药要耀椰噎耶爷野冶也页掖业叶曳腋夜液一壹医揖铱依伊衣颐夷遗移仪胰疑沂宜姨彝椅蚁倚已乙矣以艺抑易邑屹亿役臆逸肄疫亦裔意毅忆义益溢诣议谊译异翼翌绎茵荫因殷音阴姻吟银淫寅饮尹引隐印英樱婴鹰应缨莹萤营荧蝇迎赢盈影颖硬映哟拥佣臃痈庸雍踊蛹咏泳涌永恿勇用幽优悠忧尤由邮铀犹油游酉有友右佑釉诱又幼迂淤于盂榆虞愚舆余俞逾鱼愉渝渔隅予娱雨与屿禹宇语羽玉域芋郁吁遇喻峪御愈欲狱育誉浴寓裕预豫驭鸳渊冤元垣袁原援辕园员圆猿源缘远苑愿怨院曰约越跃钥岳粤月悦阅耘云郧匀陨允运蕴酝晕韵孕匝砸杂栽哉灾宰载再在咱攒暂赞赃脏葬遭糟凿藻枣早澡蚤躁噪造皂灶燥责择则泽贼怎增憎曾赠扎喳渣札轧铡闸眨栅榨咋乍炸诈摘斋宅窄债寨瞻毡詹粘沾盏斩辗崭展蘸栈占战站湛绽樟章彰漳张掌涨杖丈帐账仗胀瘴障招昭找沼赵照罩兆肇召遮折哲蛰辙者锗蔗这浙珍斟真甄砧臻贞针侦枕疹诊震振镇阵蒸挣睁征狰争怔整拯正政帧症郑证芝枝支吱蜘知肢脂汁之织职直植殖执值侄址指止趾只旨纸志挚掷至致置帜峙制智秩稚质炙痔滞治窒中盅忠钟衷终种肿重仲众舟周州洲诌粥轴肘帚咒皱宙昼骤珠株蛛朱猪诸诛逐竹烛煮拄瞩嘱主著柱助蛀贮铸筑住注祝驻抓爪拽专砖转撰赚篆桩庄装妆撞壮状椎锥追赘坠缀谆准捉拙卓桌琢茁酌啄着灼浊兹咨资姿滋淄孜紫仔籽滓子自渍字鬃棕踪宗综总纵邹走奏揍租足卒族祖诅阻组钻纂嘴醉最罪尊遵昨左佐柞做作坐座锕嗳嫒瑷暧霭谙铵鹌媪骜鳌钯呗钣鸨龅鹎贲锛荜哔滗铋筚跸苄缏笾骠飑飙镖镳鳔傧缤槟殡膑镔髌鬓禀饽钹鹁钸骖黪恻锸侪钗冁谄谶蒇忏婵骣觇禅镡伥苌怅阊鲳砗伧谌榇碜龀枨柽铖铛饬鸱铳俦帱雠刍绌蹰钏怆缍鹑辍龊鹚苁骢枞辏撺锉鹾哒鞑骀绐殚赕瘅箪谠砀裆焘镫籴诋谛绨觌镝巅钿癫铫鲷鲽铤铥岽鸫窦渎椟牍笃黩簖怼镦炖趸铎谔垩阏轭锇锷鹗颚颛鳄诶迩铒鸸鲕钫鲂绯镄鲱偾沣凫驸绂绋赙麸鲋鳆钆赅尴擀绀戆睾诰缟锆纥镉颍亘赓绠鲠诟缑觏诂毂钴锢鸪鹄鹘鸹掴诖掼鹳鳏犷匦刿妫桧鲑鳜衮绲鲧埚呙帼椁蝈铪阚绗颉灏颢诃阖蛎黉讧荭闳鲎浒鹕骅桦铧奂缳锾鲩鳇诙荟哕浍缋珲晖诨馄阍钬镬讦诘荠叽哜骥玑觊齑矶羁虿跻霁鲚鲫郏浃铗镓蛲谏缣戋戬睑鹣笕鲣鞯绛缰挢峤鹪鲛疖颌鲒卺荩馑缙赆觐刭泾迳弪胫靓阄鸠鹫讵屦榉飓钜锔窭龃锩镌隽谲珏皲剀垲忾恺铠锴龛闶钪铐骒缂轲钶锞颔龈铿喾郐哙脍狯髋诓诳邝圹纩贶匮蒉愦聩篑阃锟鲲蛴崃徕涞濑赉睐铼癞籁岚榄斓镧褴阆锒唠崂铑铹痨鳓诔缧俪郦坜苈莅蓠呖逦骊缡枥栎轹砺锂鹂疠粝跞雳鲡鳢蔹奁潋琏殓裢裣鲢魉缭钌鹩蔺廪檩辚躏绫棂蛏鲮浏骝绺镏鹨茏泷珑栊胧砻偻蒌喽嵝镂瘘耧蝼髅垆撸噜闾泸渌栌橹轳辂辘氇胪鸬鹭舻鲈脔娈栾鸾銮囵荦猡泺椤脶镙榈褛锊呒唛嬷杩劢缦镘颡鳗麽扪焖懑钔芈谧猕祢渑腼黾缈缪闵缗谟蓦馍殁镆钼铙讷铌鲵辇鲶茑袅陧蘖嗫颟蹑苎咛聍侬哝驽钕傩讴怄瓯蹒疱辔纰罴铍谝骈缥嫔钋镤镨蕲骐绮桤碛颀颃鳍佥荨悭骞缱椠钤嫱樯戗炝锖锵镪羟跄诮谯荞缲硗跷惬锲箧锓揿鲭茕蛱巯赇虮鳅诎岖阒觑鸲诠绻辁铨阕阙悫荛娆桡饪轫嵘蝾缛铷颦蚬飒毵糁缫啬铯穑铩鲨酾讪姗骟钐鳝垧殇觞厍滠畲诜谂渖谥埘莳弑轼贳铈鲥绶摅纾闩铄厮驷缌锶鸶薮馊飕锼谡稣谇荪狲唢睃闼铊鳎钛鲐昙钽锬顸傥饧铴镗韬铽缇鹈阗粜龆鲦恸钭钍抟饨箨鼍娲腽纨绾辋诿帏闱沩涠玮韪炜鲔阌莴龌邬庑怃妩骛鹉鹜饩阋玺觋硖苋莶藓岘猃娴鹇痫蚝籼跹芗饷骧缃飨哓潇骁绡枭箫亵撷绁缬陉荥馐鸺诩顼谖铉镟谑泶鳕埙浔鲟垭娅桠氩厣赝俨兖谳恹闫酽魇餍鼹炀轺鹞鳐靥谒邺晔烨诒呓峄饴怿驿缢轶贻钇镒镱瘗舣铟瘾茔莺萦蓥撄嘤滢潆璎鹦瘿颏罂镛莸铕鱿伛俣谀谕蓣嵛饫阈妪纡觎欤钰鹆鹬龉橼鸢鼋钺郓芸恽愠纭韫殒氲瓒趱錾驵赜啧帻箦谮缯谵诏钊谪辄鹧浈缜桢轸赈祯鸩诤峥钲铮筝骘栉栀轵轾贽鸷蛳絷踬踯觯锺纣绉伫槠铢啭馔颞骓缒诼镯谘缁辎赀眦锱龇鲻偬诹驺鲰镞缵躜鳟讠谫郄勐凼坂垅垴埯埝苘荬荮莜莼菰藁揸吒吣咔咝咴噘噼嚯幞岙嵴彷徼犸狍馀馇馓馕愣憷懔丬溆滟溷漤潴澹甯纟绔绱珉枧桊桉槔橥轱轷赍肷胨飚煳煅熘愍淼砜磙眍钚钷铘铞锃锍锎锏锘锝锪锫锿镅镎镢镥镩镲稆鹋鹛鹱疬疴痖癯裥襁耢颥螨麴鲅鲆鲇鲞鲴鲺鲼鳊鳋鳘鳙鞒鞴齄",NMe="啊阿埃挨哎唉哀皚癌藹矮艾礙愛隘鞍氨安俺按暗岸胺案骯昂盎凹敖熬翺襖傲奧懊澳芭捌扒叭吧笆八疤巴拔跋靶把耙壩霸罷爸白柏百擺佰敗拜稗斑班搬扳般頒板版扮拌伴瓣半辦絆邦幫梆榜膀綁棒磅蚌鎊傍謗苞胞包褒剝薄雹保堡飽寶抱報暴豹鮑爆杯碑悲卑北輩背貝鋇倍狽備憊焙被奔苯本笨崩繃甭泵蹦迸逼鼻比鄙筆彼碧蓖蔽畢斃毖幣庇痹閉敝弊必辟壁臂避陛鞭邊編貶扁便變卞辨辯辮遍標彪膘表鱉憋別癟彬斌瀕濱賓擯兵冰柄丙秉餅炳病並玻菠播撥缽波博勃搏鉑箔伯帛舶脖膊渤泊駁捕蔔哺補埠不布步簿部怖擦猜裁材才財睬踩采彩菜蔡餐參蠶殘慚慘燦蒼艙倉滄藏操糙槽曹草廁策側冊測層蹭插叉茬茶查碴搽察岔差詫拆柴豺攙摻蟬饞讒纏鏟產闡顫昌猖場嘗常長償腸廠敞暢唱倡超抄鈔朝嘲潮巢吵炒車扯撤掣徹澈郴臣辰塵晨忱沈陳趁襯撐稱城橙成呈乘程懲澄誠承逞騁秤吃癡持匙池遲弛馳恥齒侈尺赤翅斥熾充沖蟲崇寵抽酬疇躊稠愁籌仇綢瞅醜臭初出櫥廚躇鋤雛滁除楚礎儲矗搐觸處揣川穿椽傳船喘串瘡窗幢床闖創吹炊捶錘垂春椿醇唇淳純蠢戳綽疵茨磁雌辭慈瓷詞此刺賜次聰蔥囪匆從叢湊粗醋簇促躥篡竄摧崔催脆瘁粹淬翠村存寸磋撮搓措挫錯搭達答瘩打大呆歹傣戴帶殆代貸袋待逮怠耽擔丹單鄲撣膽旦氮但憚淡誕彈蛋當擋黨蕩檔刀搗蹈倒島禱導到稻悼道盜德得的蹬燈登等瞪凳鄧堤低滴迪敵笛狄滌翟嫡抵底地蒂第帝弟遞締顛掂滇碘點典靛墊電佃甸店惦奠澱殿碉叼雕雕刁掉吊釣調跌爹碟蝶叠諜疊丁盯叮釘頂鼎錠定訂丟東冬董懂動棟侗恫凍洞兜抖鬥陡豆逗痘都督毒犢獨讀堵睹賭杜鍍肚度渡妒端短鍛段斷緞堆兌隊對墩噸蹲敦頓囤鈍盾遁掇哆多奪垛躲朵跺舵剁惰墮蛾峨鵝俄額訛娥惡厄扼遏鄂餓恩而兒耳爾餌洱二貳發罰筏伐乏閥法琺藩帆番翻樊礬釩繁凡煩反返範販犯飯泛坊芳方肪房防妨仿訪紡放菲非啡飛肥匪誹吠肺廢沸費芬酚吩氛分紛墳焚汾粉奮份忿憤糞豐封楓蜂峰鋒風瘋烽逢馮縫諷奉鳳佛否夫敷膚孵扶拂輻幅氟符伏俘服浮涪福袱弗甫撫輔俯釜斧脯腑府腐赴副覆賦復傅付阜父腹負富訃附婦縛咐噶嘎該改概鈣蓋溉幹甘桿柑竿肝趕感稈敢贛岡剛鋼缸肛綱崗港杠篙臯高膏羔糕搞鎬稿告哥歌擱戈鴿胳疙割革葛格蛤閣隔鉻個各給根跟耕更庚羹埂耿梗工攻功恭龔供躬公宮弓鞏汞拱貢共鉤勾溝茍狗垢構購夠辜菇咕箍估沽孤姑鼓古蠱骨谷股故顧固雇刮瓜剮寡掛褂乖拐怪棺關官冠觀管館罐慣灌貫光廣逛瑰規圭矽歸龜閨軌鬼詭癸桂櫃跪貴劊輥滾棍鍋郭國果裹過哈骸孩海氦亥害駭酣憨邯韓含涵寒函喊罕翰撼捍旱憾悍焊汗漢夯杭航壕嚎豪毫郝好耗號浩呵喝荷菏核禾和何合盒貉閡河涸赫褐鶴賀嘿黑痕很狠恨哼亨橫衡恒轟哄烘虹鴻洪宏弘紅喉侯猴吼厚候後呼乎忽瑚壺葫胡蝴狐糊湖弧虎唬護互滬戶花嘩華猾滑畫劃化話槐徊懷淮壞歡環桓還緩換患喚瘓豢煥渙宦幻荒慌黃磺蝗簧皇凰惶煌晃幌恍謊灰揮輝徽恢蛔回毀悔慧卉惠晦賄穢會燴匯諱誨繪葷昏婚魂渾混豁活夥火獲或惑霍貨禍擊圾基機畸稽積箕肌饑跡激譏雞姬績緝吉極棘輯籍集及急疾汲即嫉級擠幾脊己薊技冀季伎祭劑悸濟寄寂計記既忌際繼紀嘉枷夾佳家加莢頰賈甲鉀假稼價架駕嫁殲監堅尖箋間煎兼肩艱奸緘繭檢柬堿鹼揀撿簡儉剪減薦檻鑒踐賤見鍵箭件健艦劍餞漸濺澗建僵姜將漿江疆蔣槳獎講匠醬降蕉椒礁焦膠交郊澆驕嬌嚼攪鉸矯僥腳狡角餃繳絞剿教酵轎較叫窖揭接皆稭街階截劫節莖睛晶鯨京驚精粳經井警景頸靜境敬鏡徑痙靖竟競凈炯窘揪究糾玖韭久灸九酒廄救舊臼舅咎就疚鞠拘狙疽居駒菊局咀矩舉沮聚拒據巨具距踞鋸俱句懼炬劇捐鵑娟倦眷卷絹撅攫抉掘倔爵桔傑捷睫竭潔結解姐戒藉芥界借介疥誡屆巾筋斤金今津襟緊錦僅謹進靳晉禁近燼浸盡勁荊兢覺決訣絕均菌鈞軍君峻俊竣浚郡駿喀咖卡咯開揩楷凱慨刊堪勘坎砍看康慷糠扛抗亢炕考拷烤靠坷苛柯棵磕顆科殼咳可渴克刻客課肯啃墾懇坑吭空恐孔控摳口扣寇枯哭窟苦酷庫褲誇垮挎跨胯塊筷儈快寬款匡筐狂框礦眶曠況虧盔巋窺葵奎魁傀饋愧潰坤昆捆困括擴廓闊垃拉喇蠟臘辣啦萊來賴藍婪欄攔籃闌蘭瀾讕攬覽懶纜爛濫瑯榔狼廊郎朗浪撈勞牢老佬姥酪烙澇勒樂雷鐳蕾磊累儡壘擂肋類淚棱楞冷厘梨犁黎籬貍離漓理李裏鯉禮莉荔吏栗麗厲勵礫歷利傈例俐痢立粒瀝隸力璃哩倆聯蓮連鐮廉憐漣簾斂臉鏈戀煉練糧涼梁粱良兩輛量晾亮諒撩聊僚療燎寥遼潦了撂鐐廖料列裂烈劣獵琳林磷霖臨鄰鱗淋凜賃吝拎玲菱零齡鈴伶羚淩靈陵嶺領另令溜琉榴硫餾留劉瘤流柳六龍聾嚨籠窿隆壟攏隴樓婁摟簍漏陋蘆盧顱廬爐擄鹵虜魯麓碌露路賂鹿潞祿錄陸戮驢呂鋁侶旅履屢縷慮氯律率濾綠巒攣孿灤卵亂掠略掄輪倫侖淪綸論蘿螺羅邏鑼籮騾裸落洛駱絡媽麻瑪碼螞馬罵嘛嗎埋買麥賣邁脈瞞饅蠻滿蔓曼慢漫謾芒茫盲氓忙莽貓茅錨毛矛鉚卯茂冒帽貌貿麽玫枚梅酶黴煤沒眉媒鎂每美昧寐妹媚門悶們萌蒙檬盟錳猛夢孟瞇醚靡糜迷謎彌米秘覓泌蜜密冪棉眠綿冕免勉娩緬面苗描瞄藐秒渺廟妙蔑滅民抿皿敏憫閩明螟鳴銘名命謬摸摹蘑模膜磨摩魔抹末莫墨默沫漠寞陌謀牟某拇牡畝姆母墓暮幕募慕木目睦牧穆拿哪吶鈉那娜納氖乃奶耐奈南男難囊撓腦惱鬧淖呢餒內嫩能妮霓倪泥尼擬妳匿膩逆溺蔫拈年碾攆撚念娘釀鳥尿捏聶孽嚙鑷鎳涅您檸獰凝寧擰濘牛扭鈕紐膿濃農弄奴努怒女暖虐瘧挪懦糯諾哦歐鷗毆藕嘔偶漚啪趴爬帕怕琶拍排牌徘湃派攀潘盤磐盼畔判叛乓龐旁耪胖拋咆刨炮袍跑泡呸胚培裴賠陪配佩沛噴盆砰抨烹澎彭蓬棚硼篷膨朋鵬捧碰坯砒霹批披劈琵毗啤脾疲皮匹痞僻屁譬篇偏片騙飄漂瓢票撇瞥拼頻貧品聘乒坪蘋萍平憑瓶評屏坡潑頗婆破魄迫粕剖撲鋪仆莆葡菩蒲埔樸圃普浦譜曝瀑期欺棲戚妻七淒漆柒沏其棋奇歧畦崎臍齊旗祈祁騎起豈乞企啟契砌器氣迄棄汽泣訖掐洽牽扡釬鉛千遷簽仟謙乾黔錢鉗前潛遣淺譴塹嵌欠歉槍嗆腔羌墻薔強搶橇鍬敲悄橋瞧喬僑巧鞘撬翹峭俏竅切茄且怯竊欽侵親秦琴勤芹擒禽寢沁青輕氫傾卿清擎晴氰情頃請慶瓊窮秋丘邱球求囚酋泅趨區蛆曲軀屈驅渠取娶齲趣去圈顴權醛泉全痊拳犬券勸缺炔瘸卻鵲榷確雀裙群然燃冉染瓤壤攘嚷讓饒擾繞惹熱壬仁人忍韌任認刃妊紉扔仍日戎茸蓉榮融熔溶容絨冗揉柔肉茹蠕儒孺如辱乳汝入褥軟阮蕊瑞銳閏潤若弱撒灑薩腮鰓塞賽三三傘散桑嗓喪搔騷掃嫂瑟色澀森僧莎砂殺剎沙紗傻啥煞篩曬珊苫杉山刪煽衫閃陜擅贍膳善汕扇繕墑傷商賞晌上尚裳梢捎稍燒芍勺韶少哨邵紹奢賒蛇舌舍赦攝射懾涉社設砷申呻伸身深娠紳神沈審嬸甚腎慎滲聲生甥牲升繩省盛剩勝聖師失獅施濕詩屍虱十石拾時什食蝕實識史矢使屎駛始式示士世柿事拭誓逝勢是嗜噬適仕侍釋飾氏市恃室視試收手首守壽授售受瘦獸蔬樞梳殊抒輸叔舒淑疏書贖孰熟薯暑曙署蜀黍鼠屬術述樹束戍豎墅庶數漱恕刷耍摔衰甩帥栓拴霜雙爽誰水睡稅吮瞬順舜說碩朔爍斯撕嘶思私司絲死肆寺嗣四伺似飼巳松聳慫頌送宋訟誦搜艘擻嗽蘇酥俗素速粟僳塑溯宿訴肅酸蒜算雖隋隨綏髓碎歲穗遂隧祟孫損筍蓑梭唆縮瑣索鎖所塌他它她塔獺撻蹋踏胎苔擡臺泰酞太態汰坍攤貪癱灘壇檀痰潭譚談坦毯袒碳探嘆炭湯塘搪堂棠膛唐糖倘躺淌趟燙掏濤滔絳萄桃逃淘陶討套特藤騰疼謄梯剔踢銻提題蹄啼體替嚏惕涕剃屜天添填田甜恬舔腆挑條迢眺跳貼鐵帖廳聽烴汀廷停亭庭挺艇通桐酮瞳同銅彤童桶捅筒統痛偷投頭透凸禿突圖徒途塗屠土吐兔湍團推頹腿蛻褪退吞屯臀拖托脫鴕陀馱駝橢妥拓唾挖哇蛙窪娃瓦襪歪外豌彎灣玩頑丸烷完碗挽晚皖惋宛婉萬腕汪王亡枉網往旺望忘妄威巍微危韋違桅圍唯惟為濰維葦萎委偉偽尾緯未蔚味畏胃餵魏位渭謂尉慰衛瘟溫蚊文聞紋吻穩紊問嗡翁甕撾蝸渦窩我斡臥握沃巫嗚鎢烏汙誣屋無蕪梧吾吳毋武五捂午舞伍侮塢戊霧晤物勿務悟誤昔熙析西硒矽晰嘻吸錫犧稀息希悉膝夕惜熄烯溪汐犀檄襲席習媳喜銑洗系隙戲細瞎蝦匣霞轄暇峽俠狹下廈夏嚇掀鍁先仙鮮纖鹹賢銜舷閑涎弦嫌顯險現獻縣腺餡羨憲陷限線相廂鑲香箱襄湘鄉翔祥詳想響享項巷橡像向象蕭硝霄削哮囂銷消宵淆曉小孝校肖嘯笑效楔些歇蠍鞋協挾攜邪斜脅諧寫械卸蟹懈泄瀉謝屑薪芯鋅欣辛新忻心信釁星腥猩惺興刑型形邢行醒幸杏性姓兄兇胸匈洶雄熊休修羞朽嗅銹秀袖繡墟戌需虛噓須徐許蓄酗敘旭序畜恤絮婿緒續軒喧宣懸旋玄選癬眩絢靴薛學穴雪血勛熏循旬詢尋馴巡殉汛訓訊遜迅壓押鴉鴨呀丫芽牙蚜崖衙涯雅啞亞訝焉咽閹煙淹鹽嚴研蜒巖延言顏閻炎沿奄掩眼衍演艷堰燕厭硯雁唁彥焰宴諺驗殃央鴦秧楊揚佯瘍羊洋陽氧仰癢養樣漾邀腰妖瑤搖堯遙窯謠姚咬舀藥要耀椰噎耶爺野冶也頁掖業葉曳腋夜液壹壹醫揖銥依伊衣頤夷遺移儀胰疑沂宜姨彜椅蟻倚已乙矣以藝抑易邑屹億役臆逸肄疫亦裔意毅憶義益溢詣議誼譯異翼翌繹茵蔭因殷音陰姻吟銀淫寅飲尹引隱印英櫻嬰鷹應纓瑩螢營熒蠅迎贏盈影穎硬映喲擁傭臃癰庸雍踴蛹詠泳湧永恿勇用幽優悠憂尤由郵鈾猶油遊酉有友右佑釉誘又幼迂淤於盂榆虞愚輿余俞逾魚愉渝漁隅予娛雨與嶼禹宇語羽玉域芋郁籲遇喻峪禦愈欲獄育譽浴寓裕預豫馭鴛淵冤元垣袁原援轅園員圓猿源緣遠苑願怨院曰約越躍鑰嶽粵月悅閱耘雲鄖勻隕允運蘊醞暈韻孕匝砸雜栽哉災宰載再在咱攢暫贊贓臟葬遭糟鑿藻棗早澡蚤躁噪造皂竈燥責擇則澤賊怎增憎曾贈紮喳渣劄軋鍘閘眨柵榨咋乍炸詐摘齋宅窄債寨瞻氈詹粘沾盞斬輾嶄展蘸棧占戰站湛綻樟章彰漳張掌漲杖丈帳賬仗脹瘴障招昭找沼趙照罩兆肇召遮折哲蟄轍者鍺蔗這浙珍斟真甄砧臻貞針偵枕疹診震振鎮陣蒸掙睜征猙爭怔整拯正政幀癥鄭證芝枝支吱蜘知肢脂汁之織職直植殖執值侄址指止趾只旨紙誌摯擲至致置幟峙制智秩稚質炙痔滯治窒中盅忠鐘衷終種腫重仲眾舟周州洲謅粥軸肘帚咒皺宙晝驟珠株蛛朱豬諸誅逐竹燭煮拄矚囑主著柱助蛀貯鑄築住註祝駐抓爪拽專磚轉撰賺篆樁莊裝妝撞壯狀椎錐追贅墜綴諄準捉拙卓桌琢茁酌啄著灼濁茲咨資姿滋淄孜紫仔籽滓子自漬字鬃棕蹤宗綜總縱鄒走奏揍租足卒族祖詛阻組鉆纂嘴醉最罪尊遵昨左佐柞做作坐座錒噯嬡璦曖靄諳銨鵪媼驁鰲鈀唄鈑鴇齙鵯賁錛蓽嗶潷鉍篳蹕芐緶籩驃颮飆鏢鑣鰾儐繽檳殯臏鑌髕鬢稟餑鈸鵓鈽驂黲惻鍤儕釵囅諂讖蕆懺嬋驏覘禪鐔倀萇悵閶鯧硨傖諶櫬磣齔棖檉鋮鐺飭鴟銃儔幬讎芻絀躕釧愴綞鶉輟齪鶿蓯驄樅輳攛銼鹺噠韃駘紿殫賧癉簞讜碭襠燾鐙糴詆諦綈覿鏑巔鈿癲銚鯛鰈鋌銩崠鶇竇瀆櫝牘篤黷籪懟鐓燉躉鐸諤堊閼軛鋨鍔鶚顎顓鱷誒邇鉺鴯鮞鈁魴緋鐨鯡僨灃鳧駙紱紼賻麩鮒鰒釓賅尷搟紺戇睪誥縞鋯紇鎘潁亙賡綆鯁詬緱覯詁轂鈷錮鴣鵠鶻鴰摑詿摜鸛鰥獷匭劌媯檜鮭鱖袞緄鯀堝咼幗槨蟈鉿闞絎頡灝顥訶闔蠣黌訌葒閎鱟滸鶘驊樺鏵奐繯鍰鯇鰉詼薈噦澮繢琿暉諢餛閽鈥鑊訐詰薺嘰嚌驥璣覬齏磯羈蠆躋霽鱭鯽郟浹鋏鎵蟯諫縑戔戩瞼鶼筧鰹韉絳韁撟嶠鷦鮫癤頜鮚巹藎饉縉贐覲剄涇逕弳脛靚鬮鳩鷲詎屨櫸颶鉅鋦窶齟錈鐫雋譎玨皸剴塏愾愷鎧鍇龕閌鈧銬騍緙軻鈳錁頷齦鏗嚳鄶噲膾獪髖誆誑鄺壙纊貺匱蕢憒聵簣閫錕鯤蠐崍徠淶瀨賚睞錸癩籟嵐欖斕鑭襤閬鋃嘮嶗銠鐒癆鰳誄縲儷酈壢藶蒞蘺嚦邐驪縭櫪櫟轢礪鋰鸝癘糲躒靂鱺鱧蘞奩瀲璉殮褳襝鰱魎繚釕鷯藺廩檁轔躪綾欞蟶鯪瀏騮綹鎦鷚蘢瀧瓏櫳朧礱僂蔞嘍嶁鏤瘺耬螻髏壚擼嚕閭瀘淥櫨櫓轤輅轆氌臚鸕鷺艫鱸臠孌欒鸞鑾圇犖玀濼欏腡鏍櫚褸鋝嘸嘜嬤榪勱縵鏝顙鰻麼捫燜懣鍆羋謐獼禰澠靦黽緲繆閔緡謨驀饃歿鏌鉬鐃訥鈮鯢輦鯰蔦裊隉蘗囁顢躡苧嚀聹儂噥駑釹儺謳慪甌蹣皰轡紕羆鈹諞駢縹嬪釙鏷鐠蘄騏綺榿磧頎頏鰭僉蕁慳騫繾槧鈐嬙檣戧熗錆鏘鏹羥蹌誚譙蕎繰磽蹺愜鍥篋鋟撳鯖煢蛺巰賕蟣鰍詘嶇闃覷鴝詮綣輇銓闋闕愨蕘嬈橈飪軔嶸蠑縟銣顰蜆颯毿糝繅嗇銫穡鎩鯊釃訕姍騸釤鱔坰殤觴厙灄畬詵諗瀋謚塒蒔弒軾貰鈰鰣綬攄紓閂鑠廝駟緦鍶鷥藪餿颼鎪謖穌誶蓀猻嗩脧闥鉈鰨鈦鮐曇鉭錟頇儻餳鐋鏜韜鋱緹鵜闐糶齠鰷慟鈄釷摶飩籜鼉媧膃紈綰輞諉幃闈溈潿瑋韙煒鮪閿萵齷鄔廡憮嫵騖鵡鶩餼鬩璽覡硤莧薟蘚峴獫嫻鷴癇蠔秈躚薌餉驤緗饗嘵瀟驍綃梟簫褻擷紲纈陘滎饈鵂詡頊諼鉉鏇謔澩鱈塤潯鱘埡婭椏氬厴贗儼兗讞懨閆釅魘饜鼴煬軺鷂鰩靨謁鄴曄燁詒囈嶧飴懌驛縊軼貽釔鎰鐿瘞艤銦癮塋鶯縈鎣攖嚶瀅瀠瓔鸚癭頦罌鏞蕕銪魷傴俁諛諭蕷崳飫閾嫗紆覦歟鈺鵒鷸齬櫞鳶黿鉞鄆蕓惲慍紜韞殞氳瓚趲鏨駔賾嘖幘簀譖繒譫詔釗謫輒鷓湞縝楨軫賑禎鴆諍崢鉦錚箏騭櫛梔軹輊贄鷙螄縶躓躑觶鍾紂縐佇櫧銖囀饌顳騅縋諑鐲諮緇輜貲眥錙齜鯔傯諏騶鯫鏃纘躦鱒訁譾郤猛氹阪壟堖垵墊檾蕒葤蓧蒓菇槁摣咤唚哢噝噅撅劈謔襆嶴脊仿僥獁麅餘餷饊饢楞怵懍爿漵灩混濫瀦淡寧糸絝緔瑉梘棬案橰櫫軲軤賫膁腖飈糊煆溜湣渺碸滾瞘鈈鉕鋣銱鋥鋶鐦鐧鍩鍀鍃錇鎄鎇鎿鐝鑥鑹鑔穭鶓鶥鸌癧屙瘂臒襇繈耮顬蟎麯鮁鮃鮎鯗鯝鯴鱝鯿鰠鰵鱅鞽韝齇";function LMe(e){return T2t.charAt(NMe.indexOf(e.charAt(0)))}var ubr=new RegExp("[一-龥]+");function FMe(e){return NMe.includes(e)}var pi=class{static GetBytes(e){switch(typeof e){case"string":{let t=new Uint16Array(e.length);for(let i=0;i4294967295?((t=new Float64Array(1))[0]=e,new Uint8Array(t.buffer)):function(t){return t[0]=e,new Uint8Array(t.buffer)}(new Int32Array(1)):function(t){return t[0]=e,new Uint8Array(t.buffer)}(new Float64Array(1));case"boolean":return function(t){return t[0]=Number(e),t}(new Uint8Array(1));default:if(e instanceof Array){let t=[];for(let i=0;ie.length&&(i-=t);let r="";for(let n=0;ne.length&&(i-=t);let r=new Uint8Array(i);for(let n=0;n1&&(n.push(s.slice()),s=[]);break;case 3:l++,i/=t[l];break;case 4:l++,i*=t[l];break;case 5:if(4===a.length)throw"The position stack is only four locations deep";a.push(r);break;case 6:r=a.pop(),s.length>1&&(n.push(s.slice()),s=[]),o&&s.push(r.clone());break;case 7:{let a,o=0,h=i*e.baseUp,u=r.clone();switch(s.length>1&&(n.push(s.slice()),s=[]),e.type){case 0:l++,o=t[l];break;case 1:l++,o=t[l],0==o&&(l++,o=pi.ToUInt16(new Uint8Array([t[l++],t[l++]]),0),u.x=t[l++]*i,u.y=t[l++]*i,h=t[l]*i);break;case 2:l+=2,o=pi.ToUInt16(new Uint8Array([t[l-1],t[l]]),0)}0!==o&&(a=e.getGraphicTextShape(o,h,u),a&&(n.push(...a.polyLines.slice()),r=a.lastPoint.clone()))}break;case 8:{let e=new le;e.x=pi.byteTosbyte(t[++l]),e.y=pi.byteTosbyte(t[++l]),r.add(e.multiplyScalar(i)),o&&s.push(r.clone())}break;case 9:for(;;){let e=new le;if(e.x=pi.byteTosbyte(t[++l]),e.y=pi.byteTosbyte(t[++l]),0==e.x&&0==e.y)break;r.add(e.multiplyScalar(i)),o&&s.push(r.clone())}break;case 10:{let e=t[++l]*i,n=pi.byteTosbyte(t[++l]),a=(112&n)>>4,h=7&n;0==h&&(h=8);let u=Math.PI/4,c=u*h,p=Yf.CICLESPAN;n<0&&(p=-p,c=-c);let d=u*a,f=d+c,m=r.clone().sub(new le(Math.cos(d)*e,Math.sin(d)*e));if(r=m.clone().add(new le(Math.cos(f)*e,Math.sin(f)*e)),o){let t=d,i=!0;for(;i&&(t+=p,n>=0&&tf);)s.push(m.clone().add(new le(e*Math.cos(t),e*Math.sin(t))));s.push(r.clone())}}break;case 11:{let e=t[++l],n=t[++l],a=(255*t[++l]+t[++l])*i,h=pi.byteTosbyte(t[++l]),u=(112&h)>>4,c=7&h;0==c&&(c=8),0!=n&&c--;let p=Math.PI/4,d=p*c,f=Yf.CICLESPAN,m=1;h<0&&(f=-f,d=-d,m=-1);let g=p*u,y=g+d;g+=p*e/256*m,y+=p*n/256*m;let v=r.clone().sub(new le(a*Math.cos(g),a*Math.sin(g)));if(r=v.clone().add(new le(a*Math.cos(y),a*Math.sin(y))),o){let e=g,t=!0;for(;t&&(e+=f,h>0&&ey);)s.push(v.clone().add(new le(a*Math.cos(e),a*Math.sin(e))));s.push(r.clone())}}break;case 12:{let e=new le;e.x=pi.byteTosbyte(t[++l])*i,e.y=pi.byteTosbyte(t[++l])*i;let n=pi.byteTosbyte(t[++l]);n<-127&&(n=-127),o&&(0==n?s.push(r.clone().add(e)):s.push(Yf._generateArcPoints(r,e,n/127))),r.add(e)}break;case 13:for(;;){let e=new le;if(e.x=pi.byteTosbyte(t[++l])*i,e.y=pi.byteTosbyte(t[++l])*i,0==e.x&&0==e.y)break;let n=pi.byteTosbyte(t[++l]);n<-127&&(n=-127),o&&(0==n?s.push(r.clone().add(e)):s.push(Yf._generateArcPoints(r.clone(),e,n/127))),r.add(e)}break;case 14:l=Yf.skipCode(e,t,++l);break;default:if(h>15){let e=(240&h)>>4,t=15&h,n=new le;switch(t){case 0:n.x=1;break;case 1:n.x=1,n.y=.5;break;case 2:n.x=1,n.y=1;break;case 3:n.x=.5,n.y=1;break;case 4:n.y=1;break;case 5:n.x=-.5,n.y=1;break;case 6:n.x=-1,n.y=1;break;case 7:n.x=-1,n.y=.5;break;case 8:n.x=-1;break;case 9:n.x=-1,n.y=-.5;break;case 10:n.x=-1,n.y=-1;break;case 11:n.x=-.5,n.y=-1;break;case 12:n.y=-1;break;case 13:n.x=.5,n.y=-1;break;case 14:n.x=1,n.y=-1;break;case 15:n.x=1,n.y=-.5}r.add(n.multiplyScalar(e*i)),o&&s.push(r.clone())}}}return new ad(r,n)}static skipCode(e,t,i){switch(t[i]){case 0:case 1:case 2:case 5:case 6:case 14:default:break;case 3:case 4:i++;break;case 7:switch(e.type){case 0:i++;break;case 1:0==t[++i]&&(i+=6);break;case 2:i+=2}break;case 8:case 10:i+=2;break;case 9:for(;;){let e=t[++i],r=t[++i];if(0==e&&0==r)break}break;case 11:i+=5;break;case 12:i+=3;break;case 13:for(;;){let e=t[++i],r=t[++i];if(0==e&&0==r)break;t[++i]}}return i}static _generateArcPoints(e,t,i){let r=e.clone().add(t),n=i<0;i=Math.abs(i);let s=t.length()/2,a=s*i,o=2*Math.atan(1/i),l=new le(t.y,-t.x);l.normalize(),l.multiplyScalar(a);let h=Math.abs(s/Math.sin(o/2)),u=e.add(t.divideScalar(2));!1!==n?u.add(l):u.sub(l);let c=e.sub(u),p=r.sub(u),d=Math.atan2(c.y,c.x),f=Math.atan2(p.y,p.x),m=Yf.CICLESPAN;n?(m=-m,df&&(d-=2*Math.PI);let g=d;for(;;){if(g+=m,!n&&gf)return u.add(new le(h*Math.cos(g),h*Math.sin(g)));break}return r}},Yl=Yf;Yl.stopFlag="0x00",Yl.FILE_STOP_FLAG=["\r","\n",""],Yl.CICLESPAN=Math.PI/18;var pO={130:[[[5,0],[5,9.5]],[[4,7.1],[2.6,6.6],[2.1,6.2],[1.7,5.4],[1.6,4],[2.1,3],[2.6,2.6],[3.9,2.2],[6.1,2.2],[7.5,2.6],[8,3.1],[8.4,3.9],[8.4,5.2],[7.9,6.1],[7.5,6.6],[6.1,7.1],[4,7.1]]],131:[[[3,0],[7,0]],[[5,0],[5,9.5]],[[4,7.1],[2.6,6.6],[2.1,6.2],[1.7,5.4],[1.6,4],[2.1,3],[2.6,2.6],[3.9,2.2],[6.1,2.2],[7.5,2.6],[8,3.1],[8.4,3.9],[8.4,5.2],[7.9,6.1],[7.5,6.6],[6.1,7.1],[4,7.1]]],132:[[[3,0],[7,0]],[[4,0],[4,9.5]],[[6,0],[6,9.5]],[[4,7.1],[2.6,6.6],[2.1,6.2],[1.7,5.4],[1.6,4],[2.1,3],[2.6,2.6],[3.9,2.2],[6.1,2.2],[7.5,2.6],[8,3.1],[8.4,3.9],[8.4,5.2],[7.9,6.1],[7.5,6.6],[6.1,7.1],[4,7.1]]],133:[[[3,0],[7,0]],[[4,0],[4,9.5]],[[6,0],[6,9.5]],[[4,7.1],[2.6,6.6],[2.1,6.2],[1.7,5.4],[1.6,4],[2.1,3],[2.6,2.6],[3.9,2.2],[6.1,2.2],[7.5,2.6],[8,3.1],[8.4,3.9],[8.4,5.2],[7.9,6.1],[7.5,6.6],[6.1,7.1],[4,7.1]],[[3,9.5],[7,9.5]]],134:[[[3,0],[7,0]],[[5,0],[5,9.5]],[[4,7.1],[2.6,6.6],[2.1,6.2],[1.7,5.4],[1.6,4],[2.1,3],[2.6,2.6],[3.9,2.2],[6.1,2.2],[7.5,2.6],[8,3.1],[8.4,3.9],[8.4,5.2],[7.9,6.1],[7.5,6.6],[6.1,7.1],[4,7.1]],[[12,10],[9,10],[9,6]],[[9,8],[11,8]]],135:[[[3,0],[7,0]],[[4,0],[4,9.5]],[[6,0],[6,9.5]],[[4,7.1],[2.6,6.6],[2.1,6.2],[1.7,5.4],[1.6,4],[2.1,3],[2.6,2.6],[3.9,2.2],[6.1,2.2],[7.5,2.6],[8,3.1],[8.4,3.9],[8.4,5.2],[7.9,6.1],[7.5,6.6],[6.1,7.1],[4,7.1]],[[12,10],[9,10],[9,6]],[[9,8],[11,8]]],136:[[[3,0],[7,0]],[[4,0],[4,9.5]],[[6,0],[6,9.5]],[[4,7.1],[2.6,6.6],[2.1,6.2],[1.7,5.4],[1.6,4],[2.1,3],[2.6,2.6],[3.9,2.2],[6.1,2.2],[7.5,2.6],[8,3.1],[8.4,3.9],[8.4,5.2],[7.9,6.1],[7.5,6.6],[6.1,7.1],[4,7.1]],[[3,9.5],[7,9.5]],[[12,10],[9,10],[9,6]],[[9,8],[11,8]]],178:[[[1.142,9.285],[1.142,9.428],[1.285,9.714],[1.428,9.857],[1.714,10],[2.285,10],[2.571,9.857],[2.714,9.714],[2.857,9.428],[2.857,9.142],[2.714,8.857],[2.428,8.428],[1,7],[3,7]]],8960:[[[2.9,8],[1.7,7.4],[.6,6.3],[0,4.6],[0,3.4],[.6,1.7],[1.7,.6],[2.9,0],[4.6,0],[5.7,.6],[6.9,1.7],[7.4,3.4],[7.4,4.6],[6.9,6.3],[5.7,7.4],[4.6,8],[2.9,8]],[[0,0],[8,8]]],20393:[[[0,0],[0,6.666]],[[0,4.761],[1.428,6.19],[2.38,6.666],[3.809,6.666],[4.761,6.19],[5.238,4.761],[5.238,0]],[[5.238,4.761],[6.666,6.19],[7.619,6.666],[9.047,6.666],[10,6.19],[10.476,4.761],[10.476,0]],[[11.142,9.285],[11.142,9.428],[11.285,9.714],[11.428,9.857],[11.714,10],[12.285,10],[12.571,9.857],[12.714,9.714],[12.857,9.428],[12.857,9.142],[12.714,8.857],[12.428,8.428],[11,7],[13,7]]],41123:[],55714:[[[2,5.9],[2.6,6.1],[3.4,7],[3.4,1]],[[2.9,8],[1.7,7.4],[.6,6.3],[0,4.6],[0,3.4],[.6,1.7],[1.7,.6],[2.9,0],[4.6,0],[5.7,.6],[6.9,1.7],[7.4,3.4],[7.4,4.6],[6.9,6.3],[5.7,7.4],[4.6,8],[2.9,8]]],55970:[[[2.3,5.6],[2.3,5.9],[2.6,6.4],[2.9,6.7],[3.4,7],[4.6,7],[5.1,6.7],[5.4,6.4],[5.7,5.9],[5.7,5.3],[5.4,4.7],[4.9,3.9],[2,1],[6,1]],[[2.9,8],[1.7,7.4],[.6,6.3],[0,4.6],[0,3.4],[.6,1.7],[1.7,.6],[2.9,0],[4.6,0],[5.7,.6],[6.9,1.7],[7.4,3.4],[7.4,4.6],[6.9,6.3],[5.7,7.4],[4.6,8],[2.9,8]]],56226:[[[2.6,7],[5.7,7],[4,4.7],[4.9,4.7],[5.4,4.4],[5.7,4.1],[6,3.3],[6,2.7],[5.7,1.9],[5.1,1.3],[4.3,1],[3.4,1],[2.6,1.3],[2.3,1.6],[2,2.1]],[[2.9,8],[1.7,7.4],[.6,6.3],[0,4.6],[0,3.4],[.6,1.7],[1.7,.6],[2.9,0],[4.6,0],[5.7,.6],[6.9,1.7],[7.4,3.4],[7.4,4.6],[6.9,6.3],[5.7,7.4],[4.6,8],[2.9,8]]],56482:[[[4.9,7],[2,3],[6.3,3]],[[4.9,7],[4.9,1]],[[2.9,8],[1.7,7.4],[.6,6.3],[0,4.6],[0,3.4],[.6,1.7],[1.7,.6],[2.9,0],[4.6,0],[5.7,.6],[6.9,1.7],[7.4,3.4],[7.4,4.6],[6.9,6.3],[5.7,7.4],[4.6,8],[2.9,8]]],56738:[[[5.4,7],[2.6,7],[2.3,4.4],[2.6,4.7],[3.4,5],[4.3,5],[5.1,4.7],[5.7,4.1],[6,3.3],[6,2.7],[5.7,1.9],[5.1,1.3],[4.3,1],[3.4,1],[2.6,1.3],[2.3,1.6],[2,2.1]],[[2.9,8],[1.7,7.4],[.6,6.3],[0,4.6],[0,3.4],[.6,1.7],[1.7,.6],[2.9,0],[4.6,0],[5.7,.6],[6.9,1.7],[7.4,3.4],[7.4,4.6],[6.9,6.3],[5.7,7.4],[4.6,8],[2.9,8]]],56994:[[[5.4,6.1],[5.1,6.7],[4.3,7],[3.7,7],[2.9,6.7],[2.3,5.9],[2,4.4],[2,3],[2.3,1.9],[2.9,1.3],[3.7,1],[4,1],[4.9,1.3],[5.4,1.9],[5.7,2.7],[5.7,3],[5.4,3.9],[4.9,4.4],[4,4.7],[3.7,4.7],[2.9,4.4],[2.3,3.9],[2,3]],[[2.9,8],[1.7,7.4],[.6,6.3],[0,4.6],[0,3.4],[.6,1.7],[1.7,.6],[2.9,0],[4.6,0],[5.7,.6],[6.9,1.7],[7.4,3.4],[7.4,4.6],[6.9,6.3],[5.7,7.4],[4.6,8],[2.9,8]]],57250:[[[2,7],[6,7],[3.1,1]],[[2.9,8],[1.7,7.4],[.6,6.3],[0,4.6],[0,3.4],[.6,1.7],[1.7,.6],[2.9,0],[4.6,0],[5.7,.6],[6.9,1.7],[7.4,3.4],[7.4,4.6],[6.9,6.3],[5.7,7.4],[4.6,8],[2.9,8]]],57506:[[[3.4,7],[2.6,6.7],[2.3,6.1],[2.3,5.6],[2.6,5],[3.1,4.7],[4.3,4.4],[5.1,4.1],[5.7,3.6],[6,3],[6,2.1],[5.7,1.6],[5.4,1.3],[4.6,1],[3.4,1],[2.6,1.3],[2.3,1.6],[2,2.1],[2,3],[2.3,3.6],[2.9,4.1],[3.7,4.4],[4.9,4.7],[5.4,5],[5.7,5.6],[5.7,6.1],[5.4,6.7],[4.6,7],[3.4,7]],[[2.9,8],[1.7,7.4],[.6,6.3],[0,4.6],[0,3.4],[.6,1.7],[1.7,.6],[2.9,0],[4.6,0],[5.7,.6],[6.9,1.7],[7.4,3.4],[7.4,4.6],[6.9,6.3],[5.7,7.4],[4.6,8],[2.9,8]]],57762:[[[5.7,5],[5.4,4.1],[4.9,3.6],[4,3.3],[3.7,3.3],[2.9,3.6],[2.3,4.1],[2,5],[2,5.3],[2.3,6.1],[2.9,6.7],[3.7,7],[4,7],[4.9,6.7],[5.4,6.1],[5.7,5],[5.7,3.6],[5.4,2.1],[4.9,1.3],[4,1],[3.4,1],[2.6,1.3],[2.3,1.9]],[[2.9,8],[1.7,7.4],[.6,6.3],[0,4.6],[0,3.4],[.6,1.7],[1.7,.6],[2.9,0],[4.6,0],[5.7,.6],[6.9,1.7],[7.4,3.4],[7.4,4.6],[6.9,6.3],[5.7,7.4],[4.6,8],[2.9,8]]],60070:[[[0,6],[10,6],[10,4]]],60326:[[[0,7],[0,5],[10,5]]]},dO=new Ni,Xf=class{constructor(e){this.type=1,this.info="",this.orientation=0,this.baseUp=0,this.baseDown=0,this.fileHeader="",this.fileVersion="",this.datas={},this.graphicData=new Map,this.url=e}getGraphicDataByCode(e,t){if(0===e)return;let i=this.datas;if(!this.graphicData.has(e)){if(!i[e]){if(pO[e]){let i=[];for(let t=0;tnew le(e[0],e[1]))));let r=new ad(new le,i),n=t/uO;return dO.identity().scale(n,n),r.transform(dO)}return}{let t=i[e],r=uO/this.baseUp,n=Yl.parserCode(this,t,r);this.graphicData.set(e,n)}}if(this.graphicData.has(e)){let i=t/uO;return dO.identity().scale(i,i),this.graphicData.get(e).transform(dO)}}getGraphicTextShape(e,t,i){var r;return null==(r=this.getGraphicDataByCode(e,t))?void 0:r.offset(i)}getFontFile(){return{url:this.url,type:this.type,datas:this.datas,info:this.info,orientation:this.orientation,baseUp:this.baseUp,baseDown:this.baseDown,fileHeader:this.fileHeader,fileVersion:this.fileVersion}}setFontFile(e){this.url=e.url,this.type=e.type,this.datas=e.datas,this.info=e.info,this.orientation=e.orientation,this.baseUp=e.baseUp,this.baseDown=e.baseDown,this.fileHeader=e.fileHeader,this.fileVersion=e.fileVersion}releaseFontData(){this.datas={},this.graphicData.clear()}setFontDataToIndexedDb(){return ht(this,null,(function*(){let e=this.getFontFile();return new Promise(((t,i)=>{uh.instance().save(e,(()=>{console.log(`[FontFile] Saved '${this.url}' (${this.fileHeader}) to indexedDb`),t()}),(e=>i(`[FontFile] Failed to save '${this.url}' (${this.fileHeader}) to indexedDb! ${e}`)))}))}))}getFontDataByIndexedDb(){return ht(this,null,(function*(){return new Promise(((e,t)=>{uh.instance().query(this.url,(t=>{e(t)}),(()=>t("[FontFile] Failed to get FontData from IndexedDB")))}))}))}},__=class extends Xf{constructor(e){super(e),this.isExtend=!1,this.type=1}init(e){pi.ToInt16(e.readBytes(2),0);let t=pi.ToInt16(e.readBytes(2),0),i=pi.ToInt16(e.readBytes(2),0);for(let t=0;t>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:t+=String.fromCharCode(r);break;case 12:case 13:n=e[i++],t+=String.fromCharCode((31&r)<<6|63&n);break;case 14:n=e[i++],s=e[i++],t+=String.fromCharCode((15&r)<<12|(63&n)<<6|(63&s)<<0)}return t}var S_=class extends Xf{constructor(e){super(e),this.type=0}init(e){e.readBytes(2),e.readBytes(2);let t=pi.ToInt16(e.readBytes(2),0),i=[];for(let r=0;rs){c?(u+=p.width+n,c=!1):(c=!0,u=0,h-=r+i),fO.set(u,h);let e=p.offset(fO);o.push(e),!c&&(u+=p.width+n)}else{fO.set(u,h);let e=p.offset(fO);o.push(e),u+=p.width+n}else this.addUnsupportedChar(l)}c=!1,u=0,h-=r+i}return o}getNotFoundTextShape(e){let t=Yl.getCode("?");return this.getGraphicDataByCode(t,e)}generateShapes(e,t=mO.DEFAULT_SIZE,i=0,r=0,n=0){return this.getGraphicData(e,t,i,r,n)}addUnsupportedChar(e){this.unsupportedChars[e]||(this.unsupportedChars[e]=0),this.unsupportedChars[e]++}static checkFontIsLoaded(e){return ht(this,null,(function*(){if(!xi.isBrowser)return!1;let t=!1,i=yield uh.instance().queryAll();if(i.length!==e.length)return!1;for(let r=0;re.setFontDataToIndexedDb()));return yield Promise.all(e).then((()=>{ne.debug("[ShxFont] Saves font data to IndexDB")}))}))}getFontData(){return ht(this,null,(function*(){if(xi.isBrowser){let e=yield uh.instance().queryAll(),t=[],i=new Map;for(let r=0;r{let i=this.parse(e);t&&t(i)})).catch((e=>{r&&r(e)}))}loadFile(e,t){return ht(this,null,(function*(){return new Promise(((i,r)=>{let n=new ui(this.manager);n.setResponseType("arraybuffer"),n.load(e,(t=>{i({url:e,arrayBuffer:t})}),t,(e=>{r(e)}))}))}))}loadAsync(e,t){return ht(this,null,(function*(){return Array.isArray(e)||(e=[e]),(yield Yc.checkFontIsLoaded(e))?Promise.resolve(new Yc):new Promise(((i,r)=>{this.load(e,i,t,r)}))}))}parse(e){return new Yc(e)}static isShxFile(e){var t;return"shx"===(null==(t=e.split(".").pop())?void 0:t.toLowerCase())}},$f=new A(1,0,0),Y8=new A(0,1,0),gO=new A(0,0,1),HMe=new A(0,0,0),Kf=0,b2t="CONTINUOUS",X8=new jn({color:Kf}),Na=new vr({color:Kf}),R_=new lr({color:Kf}),UMe=new Be,$8=new Be,Xc=new Be,ds=new A,M_=new A,D_=new le,BMe=new Hr,x2t=e=>void 0!==e.viewDirectionFromTarget,I2t=e=>{if(e){let t=e.match(/data:([a-zA-Z0-9]+\/[a-zA-Z0-9-.+]+).*,.*/);if(t&&t.length>0){let i=t[1],r=e.replace("data:"+i+";","").split(",");if(r&&2===r.length&&"base64"===r[0]){let e=r[1];return KRe.decode(e)}}}return null},eE={Math:{}};eE.Math.angle2=function(e,t){let i=new le(e.x,e.y),r=new le(t.x,t.y);return r.sub(i),r.normalize(),r.y<0?-Math.acos(r.x):Math.acos(r.x)},eE.Math.polar=function(e,t,i){return{x:e.x+t*Math.cos(i),y:e.y+t*Math.sin(i)}};var _2t=(e,t,i,r)=>{let n=e?new le(e.x,e.y):new le(0,0),s=t?new le(t.x,t.y):new le(1,0);i=i||1;let a=4*Math.atan(i),o=n.distanceTo(s)/2/Math.sin(a/2),l=eE.Math.polar(e,o,eE.Math.angle2(n,s)+(Math.PI/2-a/2));r=r||Math.max(Math.abs(Math.ceil(a/(Math.PI/18))),6);let h=eE.Math.angle2(l,n),u=a/r,c=[];c.push(new A(n.x,n.y,0));for(let e=1;e<=r-1;e++){let t=eE.Math.polar(l,Math.abs(o),h+u*e);c.push(new A(t.x,t.y,0))}return c},S2t=(e,t,i,r=2*e.length,n)=>{let s=[],a=e.map((e=>[e.x,e.y]));for(let e=0;e<1;e+=1/r){let r=U8(e,t,a,i,n);s.push(new A(r[0],r[1],0))}return s},K8=(e,t=!1)=>{let i=[],r=e.length;for(let n=0;n{let t=[];return e.faceA&&t.push(e.faceA),e.faceB&&t.push(e.faceB),e.faceC&&t.push(e.faceC),e.faceD&&t.push(e.faceD),t},R2t=e=>{let t=[],i=[];e.forEach((e=>{e.polyfaceMeshVertex&&(e.threeDPolylineMesh?t.push(new A(e.x,e.y,e.z)):i.push(w2t(e)))}));let r=[];for(let e=0;e=t.length||i<0){a=!1;break}s.push(t[i])}!a||0===s.length||(s.push(s[0]),r.push(s))}return r},Ri=class extends ci{constructor(e=!1,t=!0){super(),this.timer=Date.now(),this.ignorePaperSpace=!1,this.angBase=0,this.angDir=0,this.header=void 0,this.pointsMaterials={},this.lineBasicMaterials={},this.lineShaderMaterials={},this.meshBasicMaterials={},this.meshTextureMaterials={},this.hatchShaderMaterials=[],this.entityCount=0,this.curveCount=0,this.averageCurveSize=0,this.enableRenderOrder=!1,this.enableLocalCache=!0,this.enableReleaseData=!0,this.enableMerge=!0,this.enableSimplify=!0,this.enableRTC=!0,this.enableWidthLine=!1,this.dxfDataId=void 0,this.compareContext=void 0,this.statsInfo={unsupportedEntity:{},unsupportedEntityTypes:{},unsupportedTextStyles:{},unsupportedHatchPatterns:{},invisibleEntities:{},ignoredFrozenLayersAndEntityCount:{},ignoredInserts:{},entityTypesAndMeshCount:{},ignoredPaperSpaceEntityTypesAndCount:{},rebasedEntityCount:0},this.blockReferencesCache={},this.blockRecordsCache=void 0,this.entitiesCache=void 0,this.blocksCache=void 0,this.dictionaryOwnerHandleAndSpatialFilterHandlesCache=void 0,this.spatialFiltersCache=void 0,this.entityThreejsCache=void 0,this.entityTypesAndTimes=void 0,this.nonSnapableTypes=new Set(["ATTDEF","ATTRIB","LEADER","MTEXT","MULTILEADER","OLE2FRAME","TEXT"]),this.entityHandlesWithRenderOrder={},this.addViewport=(e,t)=>{if("VIEWPORT"===e.type){t[e.ownerHandle]||(t[e.ownerHandle]=[]);let i=e;t[e.ownerHandle].push(i)}},Ri.abortJobs=!1,this.ignorePaperSpace=e,this.enableLocalCache=t,this.pointsMaterials[Kf]=X8,this.lineBasicMaterials[Kf]=Na,this.meshBasicMaterials[Kf]=R_}setFont(e){return this.font=e,this}download(e,t){return ht(this,null,(function*(){let i=I2t(e);if(!i){let r=Date.now(),n=new ui(this.manager);n.setResponseType("arraybuffer"),n.setPath(this.path),i=yield n.loadAsync(e,t),ne.info(`[DxfLoader] ${e} dxf file downloaded in ${(Date.now()-r)/1e3}s`)}return i}))}load(e,t,i){return ht(this,null,(function*(){return this.enableLocalCache&&t&&(t=t.trim()).length>0&&(this.dxfDataId=t),this.loadAsync(e,i)}))}loadAsync(e,t){return ht(this,null,(function*(){let i=(e,i,r)=>{let n=100*e.loaded/e.total;n=n*(r-i)/100+i,t&&t(new ProgressEvent(e.type,{loaded:n,total:100}))},r=e=>i(e,10,100);if(xi.isBrowser&&this.enableLocalCache&&this.dxfDataId){let e;try{if(this.timer=Date.now(),e=yield this.getDxfDataFromIndexedDb(this.dxfDataId),e){ne.info(`[DxfLoader] Loaded DxfData from indexedDb in ${(Date.now()-this.timer)/1e3}s`);let t=yield this.loadEntities(e,r);return Promise.resolve(t)}}catch(e){ne.warn("[DxfLoader] Failed to parse data from indexedDb",e)}}let n=yield this.parse(e,(e=>i(e,0,50)));return yield this.loadEntities(n,(e=>i(e,50,100)))}))}parse(e,t){return ht(this,null,(function*(){let i=e=>{t&&t(new ProgressEvent("",{loaded:e,total:100}))},r=yield this.download(e,(e=>((e,i,r)=>{let n=100*e.loaded/e.total;n=n*(r-i)/100+i,n>r&&(ne.warn("[DxfLoader] Invalid ProgressEvent:",e),n=r),t&&t(new ProgressEvent(e.type,{loaded:n,total:100}))})(e,0,40)));if(!r)return Promise.reject(`[DxfLoader] Failed to download ${e}`);if(Ri.abortJobs)return Promise.reject("[DxfLoader] Job aborted");this.timer=Date.now(),ne.info("[DxfLoader] Start parsing...");let n=(new I0).parseSync(r);if(i(80),ne.info(`[DxfLoader] Parsed in ${(Date.now()-this.timer)/1e3}s, creating entities...`),Ri.abortJobs)return Promise.reject("[DxfLoader] Job aborted");if(n&&(n.objects.LAYOUT||(ne.warn("[DxfLoader] No layout defined! Will add a default 'Model' layout!"),n.objects.LAYOUT=[{layoutName:Ri.MODEL_LAYOUT_NAME}]),xi.isBrowser&&this.enableLocalCache&&this.dxfDataId)){let e=Date.now();try{yield this.setDxfDataToIndexedDb(this.dxfDataId,n),ne.info(`[DxfLoader] Saved to indexedDb in ${(Date.now()-e)/1e3}s`)}catch(e){ne.warn(`[DxfLoader] Failed to save '${this.dxfDataId}' to indexedDb!`,e)}}return i(100),n}))}parseHeader(e){if(!e)return void ne.error("[DxfLoader]: Invalid header!");this.header=e;let t=e.$ACADVER.toString();"AC1032"!==t&&ne.warn(`[DxfLoader] Unexpected version: ${t}. But we'll try to continue.`),this.angBase=e.$ANGBASE||0,this.angDir=e.$ANGDIR||0}loadEntities(e,t){return ht(this,null,(function*(){let i=Date.now();this.parseHeader(e.header),this.enableRenderOrder&&(this.initRenderOrderInfo(e),this.enableMerge=!1);let r=0,n=e.entities.length;this.entityCount=n,Object.keys(e.blocks).forEach((t=>{var i;this.entityCount+=(null==(i=e.blocks[t].entities)?void 0:i.length)||0}));let s=Math.round(Math.pow(n,.5)),a=Date.now(),o=e=>ht(this,null,(function*(){if(t&&(e%s==0||e===n-1)){t(new ProgressEvent("parseProgress",{loaded:e+1,total:n}));let i=500,r=Date.now();(r-a>i||e===n-1)&&(yield xs.sleep(0),a=r)}})),l={};e.objects.LAYOUT.forEach((e=>{let t=e;l[t.layoutName]=t}));let h={},u=e=>{let t=e.userData.layerName,i=h[t];i||(i=[],h[t]=i),i.push(e)},c={},p={},d=new ur;ei.setSharedVariablesOfObject(d);for(let t=0;te.name===s));a||(a=new ur,ei.setSharedVariablesOfObject(a),a.name=s,a.userData.isLayoutLevelObject=!0,d.add(a)),r++,p[s]||(p[s]={object:a,layerObjects:{}});let h,f=p[s];if(s!==Ri.MODEL_LAYOUT_NAME){let e=l[s];e.directAssociatedLeafObjectSet||(e.directAssociatedLeafObjectSet=new Set),h=e.directAssociatedLeafObjectSet}if(this.enableMerge&&n.geometry){ei.setSharedVariablesOfObject(n);let t=n.userData.layerName;!1===this.getLayerVisible(e,t)&&(n.visible=!1),f.layerObjects[t]||(f.layerObjects[t]=[]),f.layerObjects[t].push(n)}else a.add(n),n.traverse((t=>{if(ei.setSharedVariablesOfObject(t),t.geometry){let i=t.userData.layerName;!1===this.getLayerVisible(e,i)&&(t.visible=!1),u(t),h&&h.add(t)}}));yield o(t)}e.objects.LAYOUT.forEach((t=>{let i=t,r=i.layoutName;if(this.ignorePaperSpace&&r!==Ri.MODEL_LAYOUT_NAME)return;let n=i.associatedBlockName,s=e.blocks[n];s&&this.drawLayout(s,e,i,d,h,c)})),ne.debug(`[DxfLoader] Drew entities in ${(Date.now()-i)/1e3}s`);for(let e in p){let t,i=p[e],r=i.object;if(e!==Ri.MODEL_LAYOUT_NAME){let i=l[e];i.directAssociatedLeafObjectSet||(i.directAssociatedLeafObjectSet=new Set),t=i.directAssociatedLeafObjectSet}for(let e in i.layerObjects){let n=i.layerObjects[e],s=Yi.deepMerge(n,void 0,!1,!1,!0),a=s.added,o=s.removed;if(o.length!==n.length){let e=o;o.length>=100&&(e=new Set(o));let i=t=>Array.isArray(e)?e.indexOf(t)>=0:e.has(t);for(let e=0,s=n.length;e{f+=e})),this.enableRTC&&ne.debug(`[DxfLoader] Totally rebased ${this.statsInfo.rebasedEntityCount}(out of ${f}) entities`),this.enableMerge){let e=Yi.mergeInfo;ne.debug(`[DxfLoader] Inner merged ${e.removedObjects} objects to ${e.mergedMeshes} meshes, ${e.mergedLines} lines, ${e.mergedPoints} points, ${e.mergedUnknownTypeObjects?e.mergedUnknownTypeObjects+" unknown type,":""} in ${e.elapsedTime/1e3}s`)}let m=(e,t,...i)=>{Object.keys(t).length};m(0,this.statsInfo.unsupportedEntityTypes),m(0,this.statsInfo.unsupportedTextStyles),m(0,this.statsInfo.unsupportedHatchPatterns),m(0,this.statsInfo.invisibleEntities),m(0,this.statsInfo.ignoredFrozenLayersAndEntityCount),m(0,this.statsInfo.ignoredInserts),this.ignorePaperSpace&&m(0,this.statsInfo.ignoredPaperSpaceEntityTypesAndCount),this.font&&this.font.unsupportedChars&&m(0,this.font.unsupportedChars),this.enableReleaseData&&(this.releaseCachedData(),this.releaseDxfData(e)),ne.info(`[DxfLoader] loadEntities() done in ${(Date.now()-i)/1e3}s`);let g=Cn(Br({},e),{threejsObject:d,layersAndThreejsObjects:h,loadedEntityCount:r,layoutViewportsMap:c});return Promise.resolve(g)}))}loadEntitiesForCompare(e,t,i,r){return ht(this,null,(function*(){let n=e.entities.length,s=t.entities.length,a=()=>ht(this,null,(function*(){var a;let o=this.compareContext,l=o.isTheFirstFile,h=l?e:t,u=new ur,c=l?n:s,p=h.entities.length;this.entityCount=p,Object.keys(h.blocks).forEach((e=>{var t;this.entityCount+=(null==(t=h.blocks[e].entities)?void 0:t.length)||0}));let d=Math.round(Math.pow(c,.5)),f=Date.now(),m=e=>ht(this,null,(function*(){if(r&&(e%d==0||e===c-1)){let t=e+1;l||(t+=n),r(new ProgressEvent("parseProgress",{loaded:t,total:n+s}));let i=500,a=Date.now();(a-f>i||e===c-1)&&(yield xs.sleep(0),f=a)}}));this.parseHeader(h.header);let g={};for(let e=0;e{if(e.geometry){let t=e.userData.layerName;!1===this.getLayerVisible(h,t)&&(e.visible=!1);let i=g[t];i||(i=[],g[t]=i),i.push(e)}})),yield m(e)}let y=h;y.threejsObject=u,u.updateMatrixWorld(!0),y.layersAndThreejsObjects=g,y.layoutViewportsMap={},l&&(o.preservedHandles||(o.preservedHandles=new Set));for(let e in i){let t=i[e];l&&("Added"===t.type||"Modified"===t.type)&&(null==(a=o.preservedHandles)||a.add(t.handle),t.parentHandles&&t.parentHandles.forEach((e=>{var t;return null==(t=o.preservedHandles)?void 0:t.add(e)})));let r=this.entityThreejsCache&&this.entityThreejsCache[t.handle];t.parentHandles&&(r=this.entityThreejsCache&&this.entityThreejsCache[t.parentHandles[t.parentHandles.length-1]]),r&&(r=this.setObjectColorByChange(r,t)),"NoChange"!==t.type&&r&&("Added"===t.type?!l&&(t.box=(new Mt).setFromObject(r)):"Removed"===t.type?l&&(t.box=(new Mt).setFromObject(r)):"Modified"===t.type&&(t.box?t.box.union((new Mt).setFromObject(r)):t.box=(new Mt).setFromObject(r)))}Ri.merge(y)})),o=Date.now();this.compareContext={changes:i,isTheFirstFile:!0},_t.printMemory("Before loading entities for first dxf"),yield a(),ne.info(`[DxfLoader] loadEntities for first dxf in ${(Date.now()-o)/1e3}s`),_t.printMemory("After loading entities for first dxf"),this.releaseCachedData(!1),this.releaseDxfData(e),_t.printMemory("Before loading entities for second dxf"),o=Date.now(),this.compareContext.isTheFirstFile=!1,yield a(),ne.info(`[DxfLoader] loadEntities for second dxf in ${(Date.now()-o)/1e3}s`);for(let e of Object.values(i))e.box||delete i[e.handle];this.compareContext.preservedHandles=void 0,this.enableReleaseData&&(this.releaseCachedData(),this.releaseDxfData(t)),_t.printMemory("After loading entities for second dxf")}))}setObjectColorByChange(e,t){let i=(e,t)=>{e.traverse((e=>{if(e.material)if(e.material instanceof vr)e.material=this.getLineBasicMaterial(t);else if(e.material instanceof lr)e.material=this.getMeshBasicMaterial(t);else if(e.material instanceof jn)e.material=this.getPointsMaterial(t);else if(e.material instanceof Yt){let i=e.material.clone();this.updateMaterialUniforms(i),i.uniforms.u_color.value.set(t),e.material=i}}))},r=(e=>{var t;let i=qn.ENTITY_COLOR_NO_CHANGE;return"Added"===e.type?i=qn.ENTITY_COLOR_ADDED:"Removed"===e.type?i=qn.ENTITY_COLOR_REMOVED:"Modified"===e.type&&(i=null!=(t=this.compareContext)&&t.isTheFirstFile?qn.ENTITY_COLOR_REMOVED:qn.ENTITY_COLOR_ADDED),i})(t);return e.traverse((n=>{t.parentHandles?n.userData&&n.userData.handle&&n.userData.handle===t.handle&&(i(n,r),e=n):i(n,r)})),e}releaseCachedData(e=!0){e&&(this.pointsMaterials={},this.lineBasicMaterials={},this.lineShaderMaterials={},this.meshBasicMaterials={},this.meshTextureMaterials={},this.hatchShaderMaterials=[]),this.header=void 0,this.blockReferencesCache={},this.blockRecordsCache=void 0,this.blocksCache=void 0,this.entitiesCache=void 0,this.dictionaryOwnerHandleAndSpatialFilterHandlesCache=void 0,this.spatialFiltersCache=void 0,this.entityThreejsCache=void 0,this.entityTypesAndTimes=void 0,this.entityHandlesWithRenderOrder={},this.statsInfo={unsupportedEntity:{},unsupportedEntityTypes:{},unsupportedTextStyles:{},unsupportedHatchPatterns:{},invisibleEntities:{},ignoredFrozenLayersAndEntityCount:{},ignoredInserts:{},entityTypesAndMeshCount:{},ignoredPaperSpaceEntityTypesAndCount:{},rebasedEntityCount:0}}releaseEntity(e){e.vertices&&(e.vertices=void 0),e.knotValues&&(e.knotValues=void 0),e.controlPoints&&(e.controlPoints=void 0),e.binaryData&&(e.binaryData=void 0),e.text&&(e.text=void 0),e.extendedData&&(e.extendedData=void 0),e.contextData&&(e.contextData=void 0);let t=e;t.boundaryPaths&&(t.boundaryPaths=[]),t.patternLines&&(t.patternLines=void 0)}releaseDxfData(e){delete e.objects.DICTIONARY,delete e.objects.SORTENTSTABLE,delete e.objects.XRECORD,delete e.tables.dimStyle,delete e.tables.lineType,delete e.tables.style,delete e.tables.blockRecord,e.entities=[],e.blocks={}}drawEntity(e,t,i,r=!1){if(this.compareContext&&this.compareContext.preservedHandles&&this.compareContext.preservedHandles.has(e.handle)&&E0.includes(e.type)&&(r=!0),!r&&this.compareContext&&this.compareContext.preservedHandles&&!E0.includes(e.type)&&!this.compareContext.preservedHandles.has(e.handle)&&(!i||i&&!this.compareContext.preservedHandles.has(i.handle)))return;if(!0===this.getLayerFrozen(t,e)){let t=e.layer;return this.statsInfo.ignoredFrozenLayersAndEntityCount[t]||(this.statsInfo.ignoredFrozenLayersAndEntityCount[t]=0),void this.statsInfo.ignoredFrozenLayersAndEntityCount[t]++}if(!1===e.visible||e.invisible)return this.statsInfo.invisibleEntities[e.type]||(this.statsInfo.invisibleEntities[e.type]=0),void this.statsInfo.invisibleEntities[e.type]++;if(this.ignorePaperSpace&&e.inPaperSpace)return this.statsInfo.ignoredPaperSpaceEntityTypesAndCount[e.type]||(this.statsInfo.ignoredPaperSpaceEntityTypesAndCount[e.type]=0),void this.statsInfo.ignoredPaperSpaceEntityTypesAndCount[e.type]++;this.entityThreejsCache||(this.entityThreejsCache={});let n,s=Date.now(),a=!1;if(!this.compareContext&&this.entityThreejsCache[e.handle])n=this.entityThreejsCache[e.handle].clone(),a=!0;else if(!this.statsInfo.unsupportedEntity[e.handle]){if("CIRCLE"===e.type||"ARC"===e.type)n=this.drawArc(e,t,i);else if("LINE"===e.type||"POLYLINE"===e.type)n=this.drawLine(e);else if("XLINE"===e.type)n=this.drawXLine(e);else if("SEQEND"!==e.type)if("RAY"===e.type)n=this.drawRay(e);else if("LWPOLYLINE"===e.type)n=this.drawLWPolyline(e,t,i);else if("3DFACE"===e.type)n=this.draw3DFace(e);else if("TEXT"===e.type)n=this.drawText(e,t,i);else if("SOLID"===e.type)n=this.drawSolid(e,t,i);else if("POINT"===e.type)n=this.drawPoint(e,t,i);else if("INSERT"===e.type)n=this.drawInsert(e,t,r);else if("SPLINE"===e.type)n=this.drawSpline(e,i);else if("MTEXT"===e.type)n=this.drawMText(e,t,i);else if("ELLIPSE"===e.type)n=this.drawEllipse(e,t,i);else if("DIMENSION"===e.type)n=this.drawDimension(e,t);else if("REGION"!==e.type)if("ATTDEF"===e.type)n=this.drawAttDef(e,t,i);else if("ATTRIB"===e.type){if(!i)for(let r=0;r{ei.setSharedVariablesOfObject(n),n.matrixAutoUpdate=!1,n.updateMatrix(),n.geometry&&(!1===s&&(n.userData.layerVisible=!1),n.userData.layerName=r,this.setMaterial(n,e,t,i))})),a||(this.nonSnapableTypes.has(e.type)&&n.traverse((e=>{e.layers.set(10)})),this.enableRenderOrder&&(this.entityHandlesWithRenderOrder[e.handle]?n.renderOrder=parseInt(this.entityHandlesWithRenderOrder[e.handle],16)+.1:n.renderOrder=parseInt(e.handle,16)))}return E0.includes(e.type)||(this.entityTypesAndTimes||(this.entityTypesAndTimes={}),this.entityTypesAndTimes[e.type]||(this.entityTypesAndTimes[e.type]={createCount:0,totalTime:0,averageTime:0}),this.entityTypesAndTimes[e.type].createCount++,this.entityTypesAndTimes[e.type].totalTime+=Date.now()-s),n?this.statsInfo.entityTypesAndMeshCount[e.type]?this.statsInfo.entityTypesAndMeshCount[e.type]++:this.statsInfo.entityTypesAndMeshCount[e.type]=1:(this.statsInfo.unsupportedEntityTypes[e.type]?this.statsInfo.unsupportedEntityTypes[e.type]++:this.statsInfo.unsupportedEntityTypes[e.type]=1,E0.includes(e.type)||(this.statsInfo.unsupportedEntity[e.handle]?this.statsInfo.unsupportedEntity[e.handle]++:this.statsInfo.unsupportedEntity[e.handle]=1)),n}drawEllipse(e,t,i){if(!e.majorAxisEndPoint||!e.center||void 0===e.axisRatio||void 0===e.startAngle||void 0===e.endAngle)return;let r=e.startAngle,n=e.endAngle;if(e.extrusionDirection&&e.extrusionDirection.z<0&&(r=2*Math.PI-e.endAngle,n=2*Math.PI-e.startAngle),ar.areNumbersEqual(r,n,1e-5))return void ne.warn("[DxfLoader] Ellipse entity (handle '%s') contains the same start and end angle, ignored!",e.handle);let s=n-r;for(;s>2*Math.PI;)s-=2*Math.PI;Math.abs(s)<=1e-5&&(n=ar.floorNumber(r+2*Math.PI,5));let a=Math.sqrt(Math.pow(e.majorAxisEndPoint.x,2)+Math.pow(e.majorAxisEndPoint.y,2)),o=a*e.axisRatio,l=Math.atan2(e.majorAxisEndPoint.y,e.majorAxisEndPoint.x),h=new wp(e.center.x,e.center.y,a,o,r,n,!1,l),u=1,c=i;null!=c&&c.xScale&&null!=c&&c.yScale&&(u=Math.max(Math.abs(c.xScale),Math.abs(c.yScale)));let p=this.getDivision(r,n,Math.max(a,o)*u),d=h.getPoints(p),f=[],m=d.length;for(let e=0;e{e.geometry&&e.geometry.translate(u,c,0)})),e.rotation&&(a.rotation.z=e.rotation*Math.PI/180),e.directionVector){let t=e.directionVector,i=new A(t.x,t.y,t.z),r=i.clone().cross($f),n=new A(1,0,0).angleTo(i);a.rotateZ(r.z>0?-n:n)}return s.lineLength>1?a.position.y-=o.y+s.style.textHeight:a.position.y-=o.y,a}getMTextGroup(e,t,i,r,n){var s;if(0===e.length)return;let a=(n?n.style.textHeight:t.textHeight)||0;if(t.textStyle){let e=i.tables.style.styles[t.textStyle];a=a||e.textHeight}let o=a/1.5,l=a/2,h=new ur;for(let a=0;a{n&&n[n.length-1]&&n[n.length-1].colorIndex===e.colorIndex?n[n.length-1].text+=e.text:n.push(e)})),r=e.lineLength}else if("object"==typeof a)if(a.S&&3===a.S.length){let e=a.S[0]+"/"+a.S[2],t=this.getTextLineNum(e);n&&n[n.length-1]&&void 0===n[n.length-1].colorIndex?n[n.length-1].text+=e:n.push({text:a.S[0]+"/"+a.S[2],lineNum:r}),r+=t}else if(void 0!==a.C&&(s++,"string"==typeof e[s])){let t=this.getTextLineNum(e[s]);n&&n[n.length-1]&&n[n.length-1].colorIndex===a.C?n[n.length-1].text+=e[s]:n.push({colorIndex:a.C,text:e[s],lineNum:r}),r+=t}}return{text:n,lineLength:r,style:i}}getTextLineNum(e){let t=e.match(new RegExp("\\n","g"));return t?t.length:0}draw3DFace(e){if(!e.vertices||0===e.vertices.length)return void ne.warn("[DxfLoader] Entity is missing vertices:",e.handle);let t=e.vertices.map((e=>new A(e.x,e.y,e.z)));if(0===t.length)return;ar.areVector3sEqual(t[0],t[t.length-1])||t.push(t[0]);let i=new A,r=!1;this.enableRTC&&(r=kt.checkAndRebasePositionsOnRTC(t,i));let n=(new lt).setFromPoints(t),s=new Ir(n,Na);return r&&(this.setRTCUserData(s),s.position.x+=i.x,s.position.y+=i.y),s.renderOrder=2,s}drawSpline(e,t){if(!e.controlPoints||!e.degreeOfSplineCurve||!e.knotValues)return;let i=1/0,r=1/0,n=-1/0,s=-1/0;for(let t of e.controlPoints)t.xn&&(n=t.x),t.y>s&&(s=t.y);let a=1,o=t;null!=o&&o.xScale&&null!=o&&o.yScale&&(a=Math.max(Math.abs(o.xScale),Math.abs(o.yScale)));let l=Math.max(n-i,s-r),h=this.getBSplineInterpolationsPerSplineSegment(e.controlPoints.length,l*a),u=S2t(e.controlPoints,e.degreeOfSplineCurve,e.knotValues,h),c=new A,p=!1;this.enableRTC&&(p=kt.checkAndRebasePositionsOnRTC(u,c));let d=kt.getAdjacentNonRepeatPoints(u);if(d.length<2)return void ne.warn("[DxfLoader] Spline entity (handle '%s') contains less than 2 points, ignored!",e.handle);let f=(new lt).setFromPoints(d),m=new Ir(f,Na);return p&&(this.setRTCUserData(m),m.position.x+=c.x,m.position.y+=c.y),m}drawXLine(e){if(!e.vertices||0===e.vertices.length)return void ne.warn("[DxfLoader] Entity is missing vertices:",e.handle);let t=_t.arrayOrObjectToVector3(e.directionVector),i=new A(e.vertices[0].x,e.vertices[0].y,0),r=[];if(r.push(t.clone().multiplyScalar(-1e6).add(i)),r.push(t.clone().multiplyScalar(1e6).add(i)),0===r.length)return;let n=new A,s=!1;this.enableRTC&&(s=kt.checkAndRebasePositionsOnRTC(r,n));let a=(new lt).setFromPoints(r),o=new Ir(a,Na);return s&&(this.setRTCUserData(o),o.position.x+=n.x,o.position.y+=n.y),o.renderOrder=2,o}drawRay(e){if(!e.vertices||0===e.vertices.length)return void ne.warn("[DxfLoader] Entity is missing vertices:",e.handle);let t=_t.arrayOrObjectToVector3(e.directionVector),i=e.vertices.map((e=>new A(e.x,e.y,0)));if(i.push(t.multiplyScalar(1e6).add(i[0])),0===i.length)return;let r=new A,n=!1;this.enableRTC&&(n=kt.checkAndRebasePositionsOnRTC(i,r));let s=(new lt).setFromPoints(i),a=new Ir(s,Na);return n&&(this.setRTCUserData(a),a.position.x+=r.x,a.position.y+=r.y),a.renderOrder=2,a}drawLine(e){if(!e.vertices||0===e.vertices.length)return void ne.warn("[DxfLoader] Entity is missing vertices:",e.handle);let t=[];if(e.isPolyfaceMesh)t=R2t(e.vertices);else{let i=K8(e.vertices,e.shape);e.shape&&i.length>0&&i.push(i[0]),i.length>0&&(t=[i])}if(0===t.length)return;let i=[];for(let e=0;e0){if(this.enableRTC){let e=0;t.forEach((t=>{t.forEach((t=>{n.add(t),e++}))})),n.divideScalar(e),s=kt.shouldRebasePositionOnRTC(n)}let e=[],i=[],a=0,o=0,l=0,h=0;t.forEach((t=>{for(let r=0;r0&&i.push(a+r-1,a+r);a=t.length}));let u=(new lt).setFromPoints(e);u.setIndex(i),r=new li(u,Na)}if(i.length>0){this.enableRTC&&(s=kt.checkAndRebasePositionsOnRTC(i,n));let e=(new lt).setFromPoints(i);r=new nn(e,X8)}return r?(s&&(this.setRTCUserData(r),r.position.x+=n.x,r.position.y+=n.y),r):void 0}drawLWPolyline(e,t,i){var r;if(!e.vertices||e.vertices.length<2)return void ne.warn("[DxfLoader] Invalid LWPolyline entity (handle '%s'), ignored!",e.handle);let n=e;if(void 0!==n.extrusionDirectionX&&void 0!==n.extrusionDirectionY&&void 0!==n.extrusionDirectionZ){ds.set(n.extrusionDirectionX,n.extrusionDirectionY,n.extrusionDirectionZ);let e=Ri.getOcsMatrix(ds).invert(),t=0;void 0!==n.elevation&&n.elevation>0&&(t=n.elevation),n.vertices.forEach((i=>{let r=ds.set(i.x,i.y,t).applyMatrix4(e);i.x=r.x,i.y=r.y}))}let s=K8(e.vertices,e.shape);if(e.shape&&s.length>0&&!ar.areVector3sEqual(s[0],s[s.length-1])&&s.push(s[0]),s.length<2)return void ne.warn("[DxfLoader] Invalid LWPolyline entity (handle '%s'), ignored!",e.handle);null!=(r=e.extendedData)&&r.outlines&&e.extendedData.outlines.forEach((e=>{let t=e.map((e=>new A(e[0],e[1],0)));ar.areVectorsClose(t[0],t[t.length-1])||t.push(t[0]),s.push(...t)}));let a=new A,o=!1;this.enableRTC&&(o=kt.checkAndRebasePositionsOnRTC(s,a));let l,h=kt.getAdjacentNonRepeatPoints(s);if(!(h.length<2)){if(this.enableWidthLine&&void 0!==n.constantWidth&&n.constantWidth>1){let r=t.tables.lineType.lineTypes[this.getLineType(e,t,i)];if(!r||!r.pattern||0===r.pattern.length){let t=kt.convertWidthLineToMeshGeometry(h,n.constantWidth);if(t){let e=new rt(t,R_);l=new ur,l.add(e);let i=ei.createOutlineSync(t,e.matrix,Na);i.layers.set(10),l.add(i)}else ne.warn("[DxfLoader] Failed to convert width line to mesh geometry: %s ",e.handle)}}return l||(l=new Ir((new lt).setFromPoints(h),Na)),o&&(this.setRTCUserData(l),l.position.x+=a.x,l.position.y+=a.y,l.position.z+=a.z),l}ne.warn("[DxfLoader] Invalid LWPolyline entity (handle '%s'), ignored!",e.handle)}drawMLeader(e,t,i){var r,n,s,a,o,l,h,u;let c=t.tables.dimStyle.dimStyles[e.dimensionStyle]||this.getDefaultDimensionStyle(t),p=null==(r=e.contextData)?void 0:r.defaultTextContents;if(!p)return;let d=new ur,f=lO(p),m=this.mtextContentAndFormattingToTextAndStyle(f,e),g=this.getMTextGroup(m.text,e,t,i,m);if(g){null!=(n=e.contextData)&&n.textLocation&&(g.position.x+=e.contextData.textLocation.x,g.position.y+=e.contextData.textLocation.y);let t=(null==(s=e.contextData)?void 0:s.textWidth)||1;switch(m.style.horizontalAlignment){case"left":default:break;case"center":t&&(g.position.x+=t/2);break;case"right":t&&(g.position.x+=t)}let i=(new Mt).setFromObject(g).getSize(ds),r=i.x,h=i.y,u=0,c=0;switch(null==(a=e.contextData)?void 0:a.textAttachment){case 1:u=0,c=0;break;case 2:u-=r/2,c=0;break;case 3:u-=r,c=0;break;case 4:u=0,c+=h/2;break;case 5:u-=r/2,c+=h/2;break;case 6:u-=r,c+=h/2;break;case 7:u=0,c+=h;break;case 8:u-=r/2,c+=h;break;case 9:u-=r,c+=h;break;default:return}if(g.traverse((e=>{e.geometry&&e.geometry.translate(u,c,0)})),null!=(o=e.contextData)&&o.textRotation&&(g.rotation.z=e.contextData.textRotation*Math.PI/180),null!=(l=e.contextData)&&l.textDirection){let t=e.contextData.textDirection,i=new A(t.x,t.y,t.z),r=i.clone().cross(new A(1,0,0)),n=new A(1,0,0).angleTo(i);g.rotateZ(r.z>0?-n:n)}g.renderOrder=5,d.add(g)}if(0===e.leaderLineType)return g;{let i=[],r=null==(h=e.contextData)?void 0:h.leaders[0];if(!r)return d;let n=r.lastLeaderLinePoint;if(e.enableDogLeg){let e=new A(n.x,n.y,n.z),t=r.doglegLength,s=new A(r.doglegVector.x,r.doglegVector.y,r.doglegVector.z).multiplyScalar(t),a=e.clone().add(s);i.push(a,e)}let s=(null==(u=e.contextData)?void 0:u.leaders[0].leaderLines)||[];for(let r=0;rnew A(e.x,e.y,e.z))),o=new A(n.x,n.y,n.z);for(let e=0;e0?(l.add(p),Yi.merge(l,!1),l):p}drawDefaultLeadArrow(e,t,i,r){let n=i*(e.x-t.x),s=i*(e.y-t.y),a=s,o=-n,l=new A(t.x+n+a/6,t.y+s+o/6,0),h=new A(t.x+n-a/6,t.y+s-o/6,0);r.push(t,l),r.push(t,h),r.push(l,h)}getBlockByHandle(e,t){if(!this.blocksCache){this.blocksCache={};for(let t in e){let i=e[t];this.blocksCache[i.ownerHandle]||(this.blocksCache[i.ownerHandle]=i)}}return this.blocksCache[t]}static transformAngleByOcsMatrix(e,t){let i=ds.set(1*Math.cos(t),1*Math.sin(t),0).applyMatrix4(e);return Math.atan2(i.y,i.x)}static getArcAnglesByOcsMatrix(e,t,i){let r,n=ar.getArcAngleSpanInRadian(t,i),s=Ri.transformAngleByOcsMatrix(e,t),a=Ri.transformAngleByOcsMatrix(e,i);if(ar.areNumbersClose(n,Math.PI)){n=1;let i=Ri.transformAngleByOcsMatrix(e,t+n);r=ar.getArcAngleSpanInRadian(s,i)}else{if(ar.areNumbersClose(n,2*Math.PI))return[s,s+2*Math.PI];r=ar.getArcAngleSpanInRadian(s,a)}return ar.areNumbersClose(n,r,1e-5)?[s,a]:[a,s]}drawArc(e,t,i){var r,n,s;if(!e.radius||e.radius<.001)return void ne.warn(`[DxfLoader] The radius of arc (handle '${e.handle}') is undefined, ignored!`);if(!e.radius||e.radius<.001)return void ne.warn(`[DxfLoader] The radius of arc (handle '${e.handle}') is too small, ignored!`);let a=new A(0,0,1);void 0!==e.extrusionDirectionX&&void 0!==e.extrusionDirectionY&&void 0!==e.extrusionDirectionZ&&a.set(e.extrusionDirectionX,e.extrusionDirectionY,e.extrusionDirectionZ);let o,l,h=Ri.getOcsMatrix(a);if("CIRCLE"===e.type)o=e.startAngle||0,l=o+2*Math.PI;else{if(null==e.startAngle||null==e.endAngle||(o=e.startAngle,l=e.endAngle,ar.areNumbersEqual(o,l,1e-6)))return;if(!ar.areNumbersClose(ar.getArcAngleSpanInRadian(o,l),2*Math.PI)){let e=Ri.getArcAnglesByOcsMatrix(h,o,l);o=e[0],l=e[1]}}let u=new Ig(0,0,e.radius,o,l,0!==this.angBase),c=1,p=i;null!=p&&p.xScale&&null!=p&&p.yScale&&(c=Math.max(Math.abs(p.xScale),Math.abs(p.yScale)));let d=this.getDivision(o,l,e.radius*c),f=u.getPoints(d),m=new A,g=!1;this.enableRTC&&(g=kt.checkAndRebasePositionsOnRTC(f,m));let y=(new lt).setFromPoints(f),v=new Ir(y,Na),T=new A;e.center&&(T.x=e.center.x,T.y=e.center.y);let x=new A(null==(r=e.center)?void 0:r.x,null==(n=e.center)?void 0:n.y,null==(s=e.center)?void 0:s.z).applyMatrix4(h.invert());return T.x=x.x,T.y=x.y,v.position.copy(T),g?(this.setRTCUserData(v),v.position.x+=m.x,v.position.y+=m.y):kt.shouldRebasePositionOnRTC(v.position)&&this.setRTCUserData(v),v}addTriangleFacingCamera(e,t,i,r){let n=new A,s=new A;n.subVectors(i,t),s.subVectors(r,t),n.cross(s);let a=new A(t.x,t.y,t.z),o=new A(i.x,i.y,i.z),l=new A(r.x,r.y,r.z);n.z<0?e.push(l,o,a):e.push(a,o,l)}drawSolid(e,t,i){let r=e.points;if(!r||r.length<4)return;if(e.extrusionDirection&&e.extrusionDirection.z){ds.set(0,0,e.extrusionDirection.z);let t=Ri.getOcsMatrix(ds).invert();r.forEach((e=>{let i=ds.set(e.x,e.y,0).applyMatrix4(t);e.x=i.x,e.y=i.y}))}let n=[],s=[];this.addTriangleFacingCamera(n,r[0],r[1],r[2]),s.push(0,1,2),this.addTriangleFacingCamera(n,r[1],r[2],r[3]),s.push(3,4,5);let a=new A,o=!1;this.enableRTC&&(o=kt.checkAndRebasePositionsOnRTC(n,a));let l=(new lt).setFromPoints(n);l.setIndex(s);let h=new rt(l,R_);return o&&(this.setRTCUserData(h),h.position.x+=a.x,h.position.y+=a.y),h}getDefaultTextStyle(e){return e.tables.style.styles.STANDARD||e.tables.style.styles.Standard||{}}getDefaultDimensionStyle(e){return e.tables.dimStyle.dimStyles.STANDARD||e.tables.dimStyle.dimStyles.Standard||{}}getTextEncoding(e){return e.bigFontFile&&e.bigFontFile.toUpperCase().startsWith("GB")?"gbk":"utf8"}getTextMesh(e,t,i,r,n){if(!e)return;t.textStyle&&(this.statsInfo.unsupportedTextStyles[t.textStyle]||(this.statsInfo.unsupportedTextStyles[t.textStyle]=0),this.statsInfo.unsupportedTextStyles[t.textStyle]++);let s,a=(n?n.style.textHeight:t.textHeight)||0,o=.67,l={_TCH_DIM:1.45,ROMANS:1};if(t.textStyle&&l[t.textStyle]&&(o=l[t.textStyle]),t.xScale&&(o*=t.xScale),t.textStyle){let e=i.tables.style.styles[t.textStyle];o*=(null==e?void 0:e.xScale)||1,a=a||e.textHeight}let h=0;if(t.width&&(h=t.width/o+2),t.contextData&&t.contextData.textWidth&&t.contextData.textHeighte.toThreeGeometry())));r.scale(o,1,1),s=new li(r,Na)}else if(this.font instanceof Zg){let t={font:this.font,height:0,size:a||12,curveSegments:3,bevelSegments:3},i=new JA(e,t);s=new rt(i,R_)}return s}transformTextMesh(e,t){let i=(new Mt).setFromObject(t).getSize(ds),{halign:r,valign:n}=e,s=e.width||i.x,a=i.y;if(void 0===r&&void 0===n&&e.startPoint||[3,5].includes(r)&&e.startPoint?(t.position.x+=e.startPoint.x,t.position.y+=e.startPoint.y,t.position.z+=e.startPoint.z):e.endPoint&&(t.position.x+=e.endPoint.x,t.position.y+=e.endPoint.y,t.position.z+=e.endPoint.z),3!==r&&5!==r){if(e.rotation){let i=e.rotation*Math.PI/180;t.rotateZ(i)}2===e.mirrored?t.rotateY(Math.PI):4===e.mirrored&&t.rotateX(Math.PI)}switch(r){case 0:default:break;case 1:t.translateX(-s/2);break;case 2:t.translateX(-s);break;case 3:if(e.startPoint&&e.endPoint){let i=new A(e.startPoint.x,e.startPoint.y,e.startPoint.z),r=new A(e.endPoint.x,e.endPoint.y,e.endPoint.z),n=(new A).subVectors(i,r),a=n.length()/s;t.scale.multiplyScalar(a);let o=n.clone().cross($f),l=n.angleTo($f);t.rotateZ(o.z>0?Math.PI-l:l-Math.PI),(2===e.mirrored||4===e.mirrored)&&t.rotateX(Math.PI)}break;case 4:t.translateX(-s/2),t.translateY(-a/2);break;case 5:if(e.startPoint&&e.endPoint){let i=new A(e.startPoint.x,e.startPoint.y,e.startPoint.z),r=new A(e.endPoint.x,e.endPoint.y,e.endPoint.z),n=(new A).subVectors(i,r),a=n.length()/s;t.scale.setX(a);let o=n.clone().cross($f),l=n.angleTo($f);t.rotateZ(o.z>0?Math.PI-l:l-Math.PI),(2===e.mirrored||4===e.mirrored)&&t.rotateX(Math.PI)}}switch(n){case 0:case 1:default:break;case 2:t.translateY(-a/2);break;case 3:t.translateY(-a)}return t.position.z=0,t}drawText(e,t,i){let r=e.text;if(!r||!this.font)return;let n=t.tables.style.styles[e.textStyle]||this.getDefaultTextStyle(t);r=cO(r,{encoding:this.getTextEncoding(n)}).map((e=>e.text)).join("");let s=this.getTextMesh(r,e,t,i);if(!s)return;let a=s.geometry;if(s instanceof rt&&!a.getIndex()){let e=a.getAttribute("position"),t=[];for(let i=0;ie.text)).join();let n=this.getTextMesh(r,e,t,i);if(!n)return;let s=n.geometry;if(s.hasAttribute("uv")&&s.deleteAttribute("uv"),s.hasAttribute("normal")&&s.deleteAttribute("normal"),this.transformTextMesh(e,n),kt.shouldRebasePositionOnRTC(n.position))this.setRTCUserData(n);else{let e=kt.caculateGeometryCenter(s);e&&kt.shouldRebasePositionOnRTC(e)&&this.setRTCUserData(n)}return n}drawAttrib(e,t,i){let r=e.text;if(!r||!this.font)return;r=cO(r).map((e=>e.text)).join();let n=this.getTextMesh(r,e,t,i);if(!n)return;let s=n.geometry;if(s.hasAttribute("uv")&&s.deleteAttribute("uv"),s.hasAttribute("normal")&&s.deleteAttribute("normal"),this.transformTextMesh(e,n),kt.shouldRebasePositionOnRTC(n.position))this.setRTCUserData(n);else{let e=kt.caculateGeometryCenter(s);e&&kt.shouldRebasePositionOnRTC(e)&&this.setRTCUserData(n)}return n}drawPoint(e,t,i){if(!e.position)return;let r=new lt,n=[new A(e.position.x,e.position.y,e.position.z)];ds.set(0,0,0);let s=ds,a=!1;this.enableRTC&&(a=kt.checkAndRebasePositionsOnRTC(n,s)),r.setFromPoints(n);let o=new nn(r,X8);return a&&(this.setRTCUserData(o),o.position.x+=s.x,o.position.y+=s.y),o}drawDimension(e,t){if(!e.block)return;let i=t.blocks[e.block];if(!i||!i.entities)return;let r=t.tables.dimStyle.dimStyles[e.dimStyleName]||this.getDefaultDimensionStyle(t);r&&r.DIMCLRD>0&&(e.colorIndex=r.DIMCLRD,e.color=b0(e.colorIndex));let n=new ur;for(let r=0;r`,n.userData.entityType=e.type;let s=null==e?void 0:e.insertionPoint;return s&&(n.position.x+=s.x,n.position.y+=s.y),kt.shouldRebasePositionOnRTC(n.position)&&this.setRTCUserData(n),n}drawInsert(e,t,i=!1){if(!e.block)return;let r=t.blocks[e.block];if(!r.entities)return;e.blockPosition=r.position;let n=new ur;for(let s=0;s`,n.userData.entityType=e.type,null!=e&&e.blockPosition&&(n.position.x-=e.blockPosition.x,n.position.y-=e.blockPosition.y,n.updateMatrix());let s=ds.set(1,1,1);e.xScale&&(s.x=e.xScale),e.yScale&&(s.y=e.yScale);let a=new xr;e.rotation&&(a.z=e.rotation*Math.PI/180),BMe.setFromEuler(a,!1);let o=M_.set(0,0,0);e.position&&(o.x=e.position.x,o.y=e.position.y),Xc.compose(o,BMe,s),e.extrusionDirection&&e.extrusionDirection.z<0&&Xc.premultiply(UMe.identity().makeScale(-1,1,1)),$8.copy(n.matrix),n.applyMatrix4(Xc),kt.shouldRebasePositionOnRTC(n.position)&&this.setRTCUserData(n);let l=this.findSpatialFilterByHandle(e.handle,t);if(l){let t=this.drawSpatialFilter(l),i=l;i&&i.clipPolylines&&i.clipPolylines.length>0&&(n.userData.spatialFilterHandle=l.handle,this.cloneMaterialsForSpatialFilter(n),t&&t.applyMatrix4($8.invert()),ne.debug("[DxfLoader] Spatial filter:",e.associatedSpatialFilter))}return n}drawSpatialFilter(e){let t=e;if(t.threejsObject)return t.threejsObject.clone();let i=e.invertBlockMatrix;Xc.set(i[0],i[1],i[2],i[3],i[4],i[5],i[6],i[7],i[8],i[9],i[10],i[11],0,0,0,1);let r=[];e.vertices.forEach((e=>{r.push(new A(e.x,e.y,0))}));let n={polyline:[],bConcave:!1,bReversed:!1};if(2===e.numberOfPointsOnClipBoundary)n.polyline=r;else{let t=e.numberOfPointsOnClipBoundary,i=3;if(te;n--){let o=r[n];if(ar.areVector3sEqual(i,o)&&e+10)break;s.push(i)}if(a>0)for(let e=a+1;e{o.push(new le(e.x,e.y)),l.push([e.x,e.y])})),!kt.isConvex(o)){ne.warn(`[DxfLoader] Concave polygon is not supported for spatial filter (handle '${e.handle}'), converting to convex polygon!`);let t=(0,kMe.default)(l,1/0);s=[],t.forEach((e=>{s.push(new A(e[0],e[1],0))}))}ar.areVector3sEqual(s[0],s[s.length-1])||s.push(s[0]),n.polyline=s,n.bReversed=a>0}return this.enableReleaseData&&(e.vertices=[],e.matrix=[],e.invertBlockMatrix=[]),t.localMatrix=Xc.clone(),t.clipPolylines=[],void t.clipPolylines.push(n)}drawLayout(e,t,i,r,n,s){if(!e.entities)return;let a;if(i.layoutName!==Ri.MODEL_LAYOUT_NAME){let e=i;e.directAssociatedLeafObjectSet||(e.directAssociatedLeafObjectSet=new Set),a=e.directAssociatedLeafObjectSet}let o=new ur;ei.setSharedVariablesOfObject(o);for(let i=0;i{if(e.geometry){let i=e.userData.layerName;!1===this.getLayerVisible(t,i)&&(e.visible=!1);let r=n[i];r||(r=[],n[i]=r),r.push(e),a&&a.add(e)}})))}if(0===o.children.length)return;o.userData.layerName=e.layer;let l=i.layoutName,h=r.children.find((e=>e.name===l));h||(h=new ur,ei.setSharedVariablesOfObject(h),h.name=l,h.userData.isLayoutLevelObject=!0,r.add(h)),h.add(o),e.position&&o.position.set(e.position.x,e.position.y,e.position.z||0),o.matrixAutoUpdate=!1,o.updateMatrix()}convertEdgeToPoints(e){let t=[];switch(e.type){case 1:{let i=e;t.push(new le(i.startPoint.x,i.startPoint.y)),t.push(new le(i.endPoint.x,i.endPoint.y));break}case 2:{let i=e,r=i.startAngle*_r.DEG2RAD,n=i.endAngle*_r.DEG2RAD;i.bCounterclockwise||(r=2*Math.PI-r,n=2*Math.PI-n);let s=new Ig(i.center.x,i.center.y,i.radius,r,n,!i.bCounterclockwise),a=this.getDivision(r,n,i.radius);t.push(...s.getPoints(a));break}case 3:{let i=e,r=Math.sqrt(Math.pow(i.majorAxisEndPoint.x,2)+Math.pow(i.majorAxisEndPoint.y,2)),n=r*i.minorRatio,s=Math.atan2(i.majorAxisEndPoint.y,i.majorAxisEndPoint.x),a=i.startAngle*_r.DEG2RAD,o=i.endAngle*_r.DEG2RAD;i.bCounterclockwise||(a=2*Math.PI-a,o=2*Math.PI-o);let l=new wp(i.center.x,i.center.y,r,n,a,o,!i.bCounterclockwise,s),h=this.getDivision(a,o,Math.max(r,n));t.push(...l.getPoints(h));break}case 4:{let i=e;t.push(...i.controlPoints);break}case 0:{let i=e;t.push(...K8(i.points,i.isClosed));break}}return t}drawHatch(e,t,i){var r;let n=e;if(0==n.boundaryPaths.length)return;let s=[],a=[],o=[];if(n.boundaryPaths.forEach(((e,t)=>{if(this.IsfilteredByPathTypeFlag(e.pathTypeFlag)){let i="[DxfLoader] The %d path type flag is filtered at the %dth boundrayPath (hatch handle '%s')";return void ne.info(i,e.pathTypeFlag,t,n.handle)}let i=e.edges;if(0===i.length)return;let r=[];for(let e=0;e31&&!(e=>{for(let t=1;tnew le(_t.roundNumber(e.x,7),_t.roundNumber(e.y,7))));if((null==l?void 0:l.length)>0){s.push(l);let e=(new rs).setFromPoints(l);a.push(e);let t=e.getSize(D_),i=t.x*t.y;o.push({area:i,index:s.length-1})}})),0===s.length)return;let l=new le,h=this.checkAndRebasePolygonsOnRTC(s,l);o.sort(((e,t)=>e.area-t.area));let u=[];o.forEach((e=>{u.push(e.index)}));let c,p=this.buildContainHierarchyTree(s,a,u),d=[];if(this.buildHatchGeometry(s,p,d),d.length>0&&(c=zo(d)),!c||!c.getIndex()||0===(null==(r=c.getIndex())?void 0:r.count))return void ne.warn("[DxfLoader] Failed to convert hatch boundaries!");let f=new rt(c,R_);f.layers.set(10),this.setHatchMaterial(f,n,t,l,i);let m=f;return h?(this.setRTCUserData(f),m.position.x+=l.x,m.position.y+=l.y):kt.shouldRebasePositionOnRTC(m.position)&&this.setRTCUserData(m),m}drawOle2frame(e,t){let{leftUpX:i,leftUpY:r,rightDownX:n,rightDownY:s}=e;if(!(i&&r&&n&&s))return;let a=[new le(i,r),new le(i,s),new le(n,s),new le(n,r),new le(i,r)],o=new A,l=!1;this.enableRTC&&(l=kt.checkAndRebasePositionsOnRTC(a,o));let h=(new lt).setFromPoints(a),u=this.getLineBasicMaterial(16777215),c=new Ir(h,u);l&&(this.setRTCUserData(c),c.position.x+=o.x,c.position.y+=o.y);let p=new ur;p.add(c);let d,f,m=t.objects.DICTIONARY;for(let t of m){let i=t;for(let t in i.entries)if(i.entries[t]===e.handle){d=t;break}}if(d)if(this.meshTextureMaterials[d])f=this.meshTextureMaterials[d];else for(let e=0;e1?p:c}static getOcsMatrix(e){let t=$f,i=Y8,r=gO,n=new A(0,1,0),s=new A(0,0,1);return ar.areVectorsClose(e,s)?Xc.identity():(r=e.clone().normalize(),ar.areVectorsClose(r,s)||(t=Math.abs(r.x)<1/64&&Math.abs(r.y)<1/64?n.cross(r).normalize():s.cross(r).normalize(),i=r.clone().cross(t).normalize()),Xc.set(t.x,t.y,t.z,0,i.x,i.y,i.z,0,r.x,r.y,r.z,0,0,0,0,1))}static getDcs2WcsMatrix(e,t){let i;i=x2t(e)?e.viewDirectionFromTarget:e.viewDirection;let r,n,s,a=new A(ar.roundNumber(i.x,7),ar.roundNumber(i.y,7),i.z),o=new A(e.viewTarget.x,e.viewTarget.y,e.viewTarget.z),l=e.viewTwistAngle;s=a.clone().normalize(),r=gO.clone().cross(a),r.length()>0?(r.normalize(),n=s.clone().cross(r)):s.z<0?(r=$f.clone().negate(),n=Y8,s=gO.clone().negate()):(r=$f,n=Y8,s=gO);let h=new Be,u=Xc.identity();return u.makeBasis(r,n,s),h.premultiply(u),h.premultiply(Xc.identity().compose(o.clone(),(new Hr).setFromAxisAngle(new A(0,0,1),_r.degToRad(t?l:-l)),new A(1,1,1))),h}getViewportMsToPsMatrix(e){let t=new A(e.centerPoint_dcs.x,e.centerPoint_dcs.y,0),i=new A(e.centerPoint.x,e.centerPoint.y,e.centerPoint.z),r=e.viewHeight/e.height_paperSpace,n=Ri.getDcs2WcsMatrix(e,this.angDir),s=new Be;s.setPosition(HMe.clone().sub(i));let a=UMe.identity();a.scale(ds.set(r,r,r));let o=$8.identity().setPosition(HMe.clone().sub(i));a.premultiply(o.clone().invert()).multiply(o),s.multiply(a);let l=Xc.identity();l.setPosition(t),n.multiply(l);let h=Xc.identity();return s.invert().multiply(h).multiply(n.invert())}drawViewport(e,t,i){let r=e;if("1"==r.viewportId)return e.psBBox=new Mt,void(e.msToPsMatrix=new Be);let n=[],s=r.centerPoint,a=r.width_paperSpace/2,o=r.height_paperSpace/2;n.push(new A(s.x-a,s.y-o,0)),n.push(new A(s.x-a,s.y+o,0)),n.push(new A(s.x+a,s.y+o,0)),n.push(new A(s.x+a,s.y-o,0)),n.push(n[0]),e.psBBox=new Mt(n[0],n[2]),e.msToPsMatrix=this.getViewportMsToPsMatrix(r);let l=new A,h=!1;this.enableRTC&&(h=kt.checkAndRebasePositionsOnRTC(n,l));let u=(new lt).setFromPoints(n),c=new Ir(u,Na);h&&(this.setRTCUserData(c),c.position.x+=l.x,c.position.y+=l.y),c.userData.entityType=e.type;let p=new ur;p.add(c);let d=e.psBBox.clone();d.applyMatrix4(e.msToPsMatrix.clone().invert()),d.min.z=0,d.max.z=0;let f=[];f.push(d.min),f.push(new A(d.min.x,d.max.y,0)),f.push(d.max),f.push(new A(d.max.x,d.min.y,0)),f.push(f[0]);let m=new A,g=!1;this.enableRTC&&(g=kt.checkAndRebasePositionsOnRTC(f,m));let y=(new lt).setFromPoints(f),v=new Ir(y,Na);return g&&(this.setRTCUserData(v),v.position.x+=m.x,v.position.y+=m.y),v.userData.entityType=e.type,v.userData.inPaperSpace=!0,p.add(v),c}getColor(e,t,i){var r,n,s,a,o,l;if(this.compareContext){let t=e.compareChangeType;return"Added"===t?qn.ENTITY_COLOR_ADDED:"Removed"===t?qn.ENTITY_COLOR_REMOVED:"Modified"===t?this.compareContext.isTheFirstFile?qn.ENTITY_COLOR_REMOVED:qn.ENTITY_COLOR_ADDED:qn.ENTITY_COLOR_NO_CHANGE}let h=e;if(h&&h.isGradientColor){let t=h.gradientColors;if(t&&t.length>=2){if(t[0]!==t[1]){let t=`[DxfLoader] Gradient colors are not supported for hatch '${e.handle}', will use the first color!`;ne.warn(t)}return t[0]}}if(e.isTrueColor||e.colorIndex>0&&e.colorIndex<256)return e.color;if(0===e.colorIndex)return i?this.getColor(i,t):null==(n=null==(r=t.tables)?void 0:r.layer)?void 0:n.layers[0].color;if(256===e.colorIndex){let r=null==(a=null==(s=t.tables)?void 0:s.layer)?void 0:a.layers,n=r&&r[e.layer],h=r&&i&&r[i.layer],u=Kf;return u=n&&"0"!==n.name?n.color:h?h.color:n?n.color:null==(l=null==(o=t.tables)?void 0:o.layer)?void 0:l.layers[0].color,u}return ne.warn("[DxfLoader] Unknown colorIndex"),Kf}getLineType(e,t,i){var r,n;if(i&&"DIMENSION"===i.type)return this.getLineType(i,t);if(e.lineType!==QA&&e.lineType!==D8)return e.lineType;if(e.lineType===D8)return i?this.getLineType(i,t):e.lineType;let s=null==(n=null==(r=t.tables)?void 0:r.layer)?void 0:n.layers,a=b2t;if("0"!==e.layer){let t=s&&s[e.layer];if(t)return t.lineType}else if(i){let e=s&&s[i.layer];if(e)return e.lineType}return a}getLayerName(e,t,i){var r,n;let s=null==(n=null==(r=t.tables)?void 0:r.layer)?void 0:n.layers,a=s&&s[e.layer],o=s&&i&&s[i.layer],l=a.name;return a&&"0"===a.name&&o&&(l=o.name),l||"0"}setMaterial(e,t,i,r){let n=e;if(!n.geometry||(this.setRenderOrderByObjectType(e),"OLE2FRAME"===t.type))return;if("MTEXT"===t.type)return void(e.renderOrder=5);if("HATCH"===t.type)return D_.set(0,0),void this.setHatchMaterial(e,t,i,D_,r);let s,a=this.getColor(t,i,r);if("LWPOLYLINE"===t.type&&(n.isMesh?(s=this.getMeshBasicMaterial(a),e.renderOrder=1):e.userData.isOutline&&(s=this.getLineBasicMaterial(a),e.renderOrder=3),s))n.material=s;else{if("SOLID"===t.type)s=this.getMeshBasicMaterial(a);else if("TEXT"===t.type||"ATTDEF"===t.type||"ATTRIB"===t.type)s=this.getLineBasicMaterial(a),e.renderOrder=5;else if("LEADER"===t.type||"MULTILEADER"===t.type||"VIEWPORT"===t.type)s=this.getLineBasicMaterial(a);else if("POINT"===t.type)s=this.getPointsMaterial(a);else{if(e.material instanceof jn)return s=this.getPointsMaterial(a),void(n.material=s);let o=i.tables.lineType.lineTypes[this.getLineType(t,i,r)],l=t.lineTypeScale||1;o&&o.pattern&&0!==o.pattern.length?(s=this.getLineShaderMaterial(o,a,l),e.renderOrder=3):s=this.getLineBasicMaterial(a)}n.material=s}}setHatchMaterial(e,t,i,r,n){let s=e;if(!s.geometry)return;let a=this.getColor(t,i,n);if(s.isLine)return void(s.material=this.getLineBasicMaterial(a));let o,l=-1;if(t.solidFill)o=this.getMeshBasicMaterial(a);else{if(s.material instanceof Yt){o=s.material;let e=new je(a);s.material.uniforms.u_color.value.equals(e)||(o=s.material.clone(),this.updateMaterialUniforms(o),o.uniforms.u_color.value.set(a))}else o=this.getHatchShaderMaterial(t,a,r);l=0}o||(o=this.getMeshBasicMaterial(a),l=-1),s.material=o,s.renderOrder=l}setRenderOrderByObjectType(e){let t=e,i=0;t.isMesh?i=-1:t.isLine?i=2:t.isPoints&&(i=4),e.renderOrder=i}getPointsMaterial(e){return this.pointsMaterials[e]||(this.pointsMaterials[e]=new jn({size:.2,color:e})),this.pointsMaterials[e]}getLineBasicMaterial(e){return this.lineBasicMaterials[e]||(this.lineBasicMaterials[e]=new vr({color:e})),this.lineBasicMaterials[e]}getLineShaderMaterial(e,t,i){let r=`${e.name}_${t}_${i}`;if(!this.lineShaderMaterials[r]){let n=this.getLineTypeScales(),s=n.ltScale*n.celtScale*i;this.lineShaderMaterials[r]=oO.createLineShaderMaterial(e.pattern,t,s,Ri.viewportScaleUniform,Ri.cameraZoomUniform)}return this.lineShaderMaterials[r]}getMeshBasicMaterial(e){return this.meshBasicMaterials[e]||(this.meshBasicMaterials[e]=new lr({color:e})),this.meshBasicMaterials[e]}getHatchShaderMaterial(e,t,i){if(!e.patternLines||e.patternLines.length<1)return;let r=this.findMatchedHatchShaderMaterial(e,t);if(r)return r;let n=2;e.patternLines.forEach((e=>{n=Math.max(e.dashPattern.length,n)}));let s=0,a=[],o=new le;for(let t of e.patternLines){let r=new le(t.origin.x,t.origin.y).sub(i).rotateAround(o,-_r.degToRad(e.patternAngle)),l=new le(t.delta.x,t.delta.y).rotateAround(o,-_r.degToRad(t.angle));if(0===l.y)return void ne.warn("[DxfLoader] delta.y is equal to zero !");let h=t.dashPattern.length,u=!0,c=0;for(let e=0;e0&&(u=!1),c+=Math.abs(i)}let p=u?.05:.005,d=[],f=[],m=0;f[0]=m;for(let e=0;eRi.maxFragmentUniforms){ne.warn("[DxfLoader] There will be warning in fragment shader when number of uniforms exceeds 1024, so extra hatch line patterns are ignored here!");break}a.push(g)}let l=MMe(a,e.patternAngle,Ri.cameraZoomUniform,new je(t));return l.defines={MAX_PATTERN_SEGMENT_COUNT:n},this.hatchShaderMaterials.push({patternLines:e.patternLines,patternAngle:e.patternAngle,color:t,material:l}),l}getDivision(e,t,i){let r=Math.round(5e4/this.entityCount);r=Math.max(r,2),r=Math.min(r,10);let n=5*r,s=2*r;if(this.averageCurveSize){s*=Math.pow(i/this.averageCurveSize,.5),s=Math.max(s,r),s=Math.min(s,n)}let a=t-e;a<0&&(a+=2*Math.PI),s=Math.ceil(s*(a/Math.PI));let o=8;return a<.087?o=2:a<.174?o=3:a<.52?o=4:a<1.57?o=5:a<3.14?o=6:a<4.71&&(o=7),s=Math.max(s,o),this.averageCurveSize=(this.averageCurveSize*this.curveCount+i)/(this.curveCount+1),this.curveCount++,Math.max(s,12)}getBSplineInterpolationsPerSplineSegment(e,t){let i=1;this.averageCurveSize&&(i=Math.pow(t/this.averageCurveSize,.5),i=Math.max(i,.5),i=Math.min(i,2)),this.averageCurveSize=(this.averageCurveSize*this.curveCount+t)/(this.curveCount+1),this.curveCount++;let r=2*e*i;if(e>20){r/=Math.log10(e)}return r}getSimplifyTolerance(){return.03}setDxfDataToIndexedDb(e,t){return ht(this,null,(function*(){let i={dxfDataId:e,dxf:t};return new Promise(((t,r)=>{QT.instance().add(i,(()=>{ne.info(`[DxfLoader] Saved '${e}' to indexedDb`),t()}),(e=>{r(e)}))}))}))}getDxfDataFromIndexedDb(e){return ht(this,null,(function*(){return new Promise(((t,i)=>{QT.instance().query(e,(e=>{e&&e.length>0&&t(e[0].dxf),t(void 0)}),(()=>i()))}))}))}buildContainHierarchyTree(e,t,i){var r;let n=new Map,s=i.length;for(let e=0;e{0===e.children.length?r.push(e.index):n.set(e.index,e.children.map((e=>e.index)))}));let s=e=>{try{let t=new Dp(e);t.hasAttribute("uv")&&t.deleteAttribute("uv"),t.hasAttribute("normal")&&t.deleteAttribute("normal"),i.push(t)}catch(t){ne.warn(`[DxfLoader] triangulate shape error: ${e.getPoints().map((e=>e.toArray())).toString()}`)}};r.forEach((t=>{let i=e[t];if(0===i.length)return;let r=new Qa(i);s(r)}));let a=e=>e.map((e=>e.toArray()));for(let t of n){let i=new Qa(e[t[0]]),r={regions:[],inverted:!1},n=this.findIntersectHole(e,t[1]);n.forEach((t=>{let n={regions:[],inverted:!1};try{t.forEach(((t,s)=>{if(Xl.epsilon(ar.getVector2RelativeEps(e[t][0]),1e-6),0===s)n=Xl.segments({regions:[a(e[t])],inverted:!1});else{let s=Xl.segments({regions:[a(e[t])],inverted:!1}),o=Xl.combine(n,s);r=Xl.polygon(Xl.selectUnion(o)),r.regions.length>0?r.regions.forEach((e=>{if(0===e.length)return;let t=e.map((e=>new le(e[0],e[1])));i.holes.push(new ku(t))})):ne.warn("[DxfLoader] mergedHoles.regions is empty")}}))}catch(e){ne.warn(`[DxfLoader] polybooljs has error: ${e}, epsilon is ${Xl.epsilon()}`)}}));let o=n.flat(2);for(let r=0;r{t.children.forEach((t=>{this.buildHatchGeometry(e,t,i)}))}))}findIntersectHole(e,t){let i=t.length,r=[];for(let n=0;n{e.forEach((e=>{t.add(e),i++}))})),t.divideScalar(i);let r=!1;if(this.enableRTC&&kt.shouldRebasePositionOnRTC(t)){r=!0;for(let i=0;i{i.entries[e]&&"ACAD_SORTENTS"===i.entries[e]&&t.add(e)}))}if(0===t.size)return;let r=e.objects.SORTENTSTABLE;if(r)for(let e=0;eMath.abs(e-t)<1e-5,n=(e,t)=>r(e.angle,t.angle)&&r(e.delta.x,t.delta.x)&&r(e.delta.y,t.delta.y)&&r(e.origin.x,t.origin.x)&&r(e.origin.y,t.origin.y)&&((e,t)=>{if(e.length!==t.length)return!1;for(let i=0;ir.color===t&&r.patternAngle===e.patternAngle&&((e,t)=>{if(e.length!==t.length)return!1;for(let i=0;i{t[e.handle]=e.layoutHandle}))}let i=this.blockRecordsCache[t.ownerHandle];if(i){let t=e.objects.LAYOUT.find((e=>e.handle===i));if(t)return t}if(!this.entitiesCache){this.entitiesCache={};let t=this.entitiesCache;Object.values(e.entities).forEach((e=>{t[e.handle]=e}))}let r=this.entitiesCache[t.ownerHandle];return r?this.getLayout(e,r):(ne.warn("[DxfLoader] Failed to find layout name for entity:",t),e.objects.LAYOUT.find((e=>e.layoutName===Ri.MODEL_LAYOUT_NAME)))}getLayerVisible(e,t){var i,r,n;let s=null==(r=null==(i=e.tables)?void 0:i.layer)?void 0:r.layers;return s&&(null==(n=s[t])?void 0:n.visible)}getLayerFrozen(e,t){var i,r,n;let s=null==(r=null==(i=e.tables)?void 0:i.layer)?void 0:r.layers;return s&&(null==(n=s[t.layer])?void 0:n.frozen)}updateMaterialUniforms(e){e instanceof Yt&&(e.uniforms.u_cameraZoom&&(e.uniforms.u_cameraZoom=Ri.cameraZoomUniform),e.uniforms.u_viewportScale&&(e.uniforms.u_viewportScale=Ri.viewportScaleUniform))}cloneMaterialsForSpatialFilter(e){let t=new Map,i=e=>{let i;return Array.isArray(e)?(i=[],e.forEach((e=>{if(t.has(e.id))i.push(t.get(e.id));else{let r=e.clone();this.updateMaterialUniforms(r),t.set(e.id,r),i.push(r)}}))):e&&(t.has(e.id)?i=t.get(e.id):(i=e.clone(),this.updateMaterialUniforms(i),t.set(e.id,i))),i};e.traverse((e=>{e.material&&(e.material=i(e.material))}))}getLineTypeScales(){let e={ltScale:1,celtScale:1};return this.header&&(e.ltScale=this.header.$LTSCALE||1,e.celtScale=this.header.$CELTSCALE||1),e}static getDxfUnits(e){switch(e||0){case 0:return"Unitless";case 1:return"Inches";case 2:return"Feet";case 4:return"Millimeters";case 5:return"Centimeters";case 6:return"Meters";default:ne.warn(`[DxfLoader] Unsupported $INSUNITS '${e}'`)}return"Unitless"}static computeLineDistance(e){let t=!0===e.isLineSegments,i=e.geometry,r=e.matrixWorld;if(i.index&&(ne.debug(`[DxfLoader] Line with id '${e.id}' contains index buffer, going to convert it to non-indexed.`),i=kt.convertGeometryWithIndexedToNonIndexed(i)),null===i.index){let n=i.attributes.position;if(!n||0===n.count)return;let s=[];if(t)for(let e=0,t=n.count;e{let t=e;t.isLine&&t.material instanceof Yt&&Ri.computeLineDistance(t)})),ne.debug(`[DxfLoader] Computed line distances in ${(Date.now()-t)/1e3}s`)}static merge(e){let t={};e.objects.LAYOUT.forEach((e=>{var i;let r=e;t[r.layoutName]=r,null==(i=r.directAssociatedLeafObjectSet)||i.clear()}));let i=Date.now(),r={},n={},s=0,a=0,o=()=>{let e=Date.now();for(let e in r){let t=r[e];Ri.removeEmptyObjectsFromRemovingMarkedObjects(t.children,t.object),t.children=[]}s=0,a+=Date.now()-e};for(let i in e.layersAndThreejsObjects){let l=e.layersAndThreejsObjects[i];if(l.length<=1)continue;let h=Date.now(),u={};for(let e of l){let t,i=e;for(;i;){if(i.userData.isLayoutLevelObject){t=i;break}i=i.parent}if(!t)continue;let r=t.name;u[r]||(u[r]={object:t,children:[]}),u[r].children.push(e)}let c=[];for(let e in u){let i;if(e!==Ri.MODEL_LAYOUT_NAME){let r=t[e];r.directAssociatedLeafObjectSet||(r.directAssociatedLeafObjectSet=new Set),i=r.directAssociatedLeafObjectSet}let l=u[e],h=Yi.deepMerge(l.children,l.object,!1,!1,!0),p=h.added,d=h.removed;r[e]||(r[e]={object:l.object,children:[]}),n[e]||(n[e]={object:l.object,children:[]});let f=d.length>15e3;if(f){let e=Date.now();Ri.removeEmptyObjectsFromRemovingMarkedObjects(d,l.object),a+=Date.now()-e}else s+=d.length;if(d.length===l.children.length)f||d.forEach((t=>{r[e].children.push(t)}));else{let t=d;d.length>=100&&(t=new Set(d));let n=e=>Array.isArray(t)?t.indexOf(e)>=0:t.has(e);for(let t=0;t15e3&&o()}e.layersAndThreejsObjects[i]=c,ne.debug(`[DxfLoader] Merged layer '${i}' in ${(Date.now()-h)/1e3}s`)}s>0&&o();for(let t in n){let i=n[t];e.threejsObject.children.find((e=>e.name===t))||e.threejsObject.add(i.object),i.children.forEach((e=>{i.object.add(e),e.updateWorldMatrix(!1,!1)})),i.children=[]}ne.debug(`[DxfLoader] MergeUtils.deepMerge costed ${Yi.mergeInfo.elapsedTime/1e3}s`),ne.debug(`[DxfLoader] The remove operation of deep merge costed ${a/1e3}s`),ne.debug(`[DxfLoader] Deep merge totally costed ${(Date.now()-i)/1e3}s`);let l=Yi.mergeInfo;ne.debug(`[DxfLoader] Totally merged ${l.removedObjects} objects to ${l.mergedMeshes} meshes, ${l.mergedLines} lines, ${l.mergedPoints} points, ${l.mergedUnknownTypeObjects?l.mergedUnknownTypeObjects+" unknown type,":""} `)}static statLayoutAndLayerObjects(e){let t=new WeakSet,i=0;for(let r in e.layersAndThreejsObjects)e.layersAndThreejsObjects[r].forEach((e=>{e.geometry&&(i++,t.has(e)?console.warn(e):t.add(e))}));let r=new WeakSet,n=0;if(e.threejsObject.traverse((e=>{e.geometry&&(n++,r.has(e)?console.warn(e):r.add(e))})),i!=n)for(let t in e.layersAndThreejsObjects)e.layersAndThreejsObjects[t].forEach((e=>{e.geometry&&(r.has(e)||console.warn(e))}));ne.info(`[DxfLoader] The count of layer objects is ${i},The count of layout objects is ${n} `)}static removeEmptyObjectsFromRemovingMarkedObjects(e,t){if(0===e.length)return;let i=e=>{let r=[];for(let i of e){i.userData.validCount=0;let e=i.parent;e&&e!==t&&(void 0===e.userData.validCount&&(e.userData.validCount=e.children.length),0==--e.userData.validCount&&r.push(e))}r.length>0&&i(r)};i(e),this.removeEmptyObjectsFromMark(t)}static removeEmptyObjectsFromMark(e){if(0===e.userData.validCount||ei.isEmptyObject(e))return e.removeFromParent(),!0;for(let t=0;t>3]&128>>t)>>7-t}setBit(e,t){var i=e>>3,r=this.u8[i],n=7&e;this.u8[i]=t?r|128>>n:r&~(128>>n)}getInt12(e){var t=e/8|0,i=this.u8[t],r=this.u8[t+1],n=this.u8[t+2],s=e%8,a=8-s,o=Math.min(12-a,8);return(((i&=~(255<>12-s)-2048}setInt12(e,t){var i=e/8|0,r=e%8,n=(t+=2048)<<12-r,s=(16711680&n)>>16,a=(65280&n)>>8,o=255&n,l=8-r,h=Math.min(12-l,8),u=Math.max(12-l-h,0),c=255<>8-(2-n))))<<8)+(r&=255<<8-Math.max(6-s,0))>>10-n)-32}setInt6(e,t){var i=e/8|0,r=e%8,n=(t+=32)<<10-r,s=(65280&n)>>8,a=255&n,o=8-r,l=Math.max(6-o,0),h=(255<>8-(2-r));this.u8[i]=(this.u8[i]&h)+s;var u=~(255<<8-l);this.u8[i+1]=(this.u8[i+1]&u)+a}test(){var e,t,i=new ArrayBuffer(3),r=new R0(i);for(t=0;t<12;t++)for(e=-2048;e<2048;e++)if(r.setInt12(t,e),r.getInt12(t)!=e){console.log("12-bit prob at",t,e),console.log("expected",e,"got",r.getInt12(t));break}for(t=0;t<18;t++)for(e=-32;e<32;e++)if(r.setInt6(t,e),r.getInt6(t)!=e){console.log("6-bit prob at",t,e),console.log("expected",e,"got",r.getInt6(t));break}return r}},GMe=(e=>(e[e.NULL=0]="NULL",e[e.POINT=1]="POINT",e[e.POLYLINE=3]="POLYLINE",e[e.POLYGON=5]="POLYGON",e))(GMe||{}),vO=class{parse(e){var t={},i=new DataView(e),r=0;if(t.fileCode=i.getInt32(r,!1),9994!=t.fileCode)throw new Error("Unknown file code: "+t.fileCode);for(r+=24,t.wordLength=i.getInt32(r,!1),t.byteLength=2*t.wordLength,r+=4,t.version=i.getInt32(r,!0),r+=4,t.shapeType=i.getInt32(r,!0),r+=4,t.minX=i.getFloat64(r,!0),t.minY=i.getFloat64(r+8,!0),t.maxX=i.getFloat64(r+16,!0),t.maxY=i.getFloat64(r+24,!0),t.minZ=i.getFloat64(r+32,!0),t.maxZ=i.getFloat64(r+40,!0),t.minM=i.getFloat64(r+48,!0),t.maxM=i.getFloat64(r+56,!0),r+=64,t.records=[];rn.push(...e)));let s=new lt;s.setFromPoints(e),s.setIndex(n),t.push(s);let a=new lt;e.length>2&&!e[0].equals(e[e.length-1])&&e.push(e[0]),a.setFromPoints(e),i.push(a)}else{let t=new lt;t.setFromPoints(e),i.push(t)}}}var p=new sr;for(r=0;r1023||Math.abs(s-e[o+1])>1023?(i.push(r),a+=1,r=[],n=e[o],s=e[o+1],r.push(n,s),a+=4,o++):(r.push((e[o]-n)/8,(e[o+1]-s)/8),n+=8*((e[o]-n)/8|0),s+=8*((e[o+1]-s)/8|0),a+=2,o++):(i.push(r),t.push(i),i=[],r=[],a+=3);return this.storeDeltas(a,t)}deltaEncode6(e){var t=[],i=[],r=[],n=0,s=0,a=0,o=0;for(a=0;a31||Math.abs(s-e[a+1])>31?(i.push(r),o+=1,r=[],n=e[a],s=e[a+1],r.push(n,s),o+=4,a++):(r.push(e[a]-n,e[a+1]-s),n+=e[a]-n,s+=e[a+1]-s,o+=2,a++):(i.push(r),t.push(i),i=[],r=[],o+=3);return this.storeDeltas6(o,t)}storeDeltas(e,t){for(var i=new ArrayBuffer(e),r=new DataView(i),n=0,s=0;s{this.updateProgress(i,50);let e=(new vO).parse(n.response),r=(new yO).createModel(e);this.updateProgress(i,99),t(r)},n.onerror=r,n.open("GET",e),n.send(null)}))}updateProgress(e,t){if(e){e(new ProgressEvent("progress",{lengthComputable:!0,loaded:t,total:100}))}}},M2t="three/js/libs/draco/gltf/",$c=class{constructor(e){this.manager=e}loadLocalModel(e,t,i){return ht(this,null,(function*(){let r=t.toLowerCase();return r.endsWith("fbx")?this.loadFbx(e,i):r.endsWith("obj")?this.loadObj(e,i):r.endsWith("stl")?this.loadStl(e,i):r.endsWith("ifc")?this.loadIfc(e,i):r.endsWith("shp")?this.loadShp(e,i):r.endsWith("dae")?this.loadDae(e,i):r.endsWith("dxf")?this.loadDxf(e,i):r.endsWith("jpg")||r.endsWith("jpeg")||r.endsWith("png")?this.loadImage(e,i):this.loadGltf(e,i)}))}loadModel(e,t,i){return ht(this,null,(function*(){let r=e;if(!r)return Promise.resolve();let n=(null==t?void 0:t.toLowerCase())||"";if(!n){let e=r.split("?")[0].toLowerCase();if(e){let t=e.lastIndexOf(".");-1!==t&&(n=e.slice(t+1))}}return n.endsWith("fbx")?this.loadFbx(r,i):n.endsWith("obj")?this.loadObj(r,i):n.endsWith("stl")?this.loadStl(r,i):n.endsWith("ifc")?this.loadIfc(r,i):n.endsWith("shp")?this.loadShp(r,i):n.endsWith("dae")?this.loadDae(r,i):n.endsWith("dxf")?this.loadDxf(r,i):n.endsWith("jpg")||n.endsWith("jpeg")||n.endsWith("png")?this.loadImage(r,i):this.loadGltf(r,i)}))}loadGltf(e,t){return ht(this,null,(function*(){let i=this.getGltfLoader();-1!==e.indexOf("#")&&console.warn(`[LoadingHelper] '#' is not allowed in filename ${e}`),e=e.replace(/#/g,encodeURIComponent("#"));let r=yield i.loadAsync(e,t);return Promise.resolve(r.scene)}))}parseGltf(e,t,i,r){return this.getGltfLoader().parse(e,t,(e=>i(e.scene)),r)}loadFbx(e,t){return ht(this,null,(function*(){let i=yield new lA(this.manager).loadAsync(e,t);return Promise.resolve(i)}))}loadObj(e,t){return ht(this,null,(function*(){let i=new VA(this.manager),r=new kA(this.manager),n=e.replace(".obj",".mtl"),s=yield r.loadAsync(n,t);s.preload(),i.setMaterials(s);let a=yield i.loadAsync(e,t);return Promise.resolve(a)}))}loadStl(e,t){return ht(this,null,(function*(){let i=yield new WA(this.manager).loadAsync(e,t);return Promise.resolve(new rt(i))}))}loadIfc(e,t){return ht(this,null,(function*(){let i=new BA(this.manager),r=i.ifcManager;r&&"function"==typeof r.setWasmPath&&r.setWasmPath("../three/js/libs/ifc/");let n=yield i.loadAsync(e,t);return Promise.resolve(n.mesh)}))}loadShp(e,t){return ht(this,null,(function*(){let i=new TO;return new Promise(((r,n)=>{i.load(e,(e=>{r(e)}),t,(e=>{n(e)}))}))}))}loadDae(e,t){return ht(this,null,(function*(){let i=yield new nA(this.manager).loadAsync(e,t);return Promise.resolve(i.scene)}))}loadDxf(e,t){return ht(this,null,(function*(){this.font||console.warn("[LoadingHelper] Should set font first!");let i=new Er;try{let r=yield i.loadAsync(e,t);return Promise.resolve(r.threejsObject)}catch(e){let t=new ErrorEvent("");return Promise.reject(t)}}))}loadPly(e,t){return ht(this,null,(function*(){let i=yield new jA(this.manager).loadAsync(e,t);return Promise.resolve(new rt(i))}))}loadImage(e,t){return ht(this,null,(function*(){let i=yield new bs(this.manager).loadAsync(e,t);if(!i)return Promise.reject("Failed to load image!");let r=i.image,n=r&&r.height||10,s=r&&r.width||10;n*=10/s,s=10;let a=new lr({map:i,side:gi,transparent:!0}),o=new ts(s,n),l=new rt(o,a);return Promise.resolve(l)}))}loadDxfDataAsync(e,t,i,r,n,s){return ht(this,null,(function*(){var a;this.font||console.warn("[LoadingHelper] Should set font first!");let o=new Er(n,s);return o.setFont(this.font),o.manager.onLoad=()=>{r&&r()},this.font&&this.font.getFontData&&(yield null==(a=this.font)?void 0:a.getFontData()),o.load(e,t,i)}))}setFont(e){this.font=e}getGltfLoader(){if(!this.gltfLoader){this.gltfLoader=new $u(this.manager);let e=new sA(this.manager);e.setDecoderPath(M2t),this.gltfLoader.setDRACOLoader(e)}return this.gltfLoader}},tE=class{constructor(e){this.running=!1,this.workers=[];let t=1;e?t=e:window.navigator&&(t=Math.max(t,window.navigator.hardwareConcurrency-1));for(let e=0;e{let r=this.workers.length,n=e.length,s=[],a=Math.floor(n/r),o=n%r,l=0,h=0;for(let i=0;i=h)break;ne.debug("startIndex: "+l+" endIndex: "+h),s.push(r.generate(e.slice(l,h),t))}Promise.allSettled(s).then((()=>{this.running=!1,i()}))}));ne.warn("[BVHHelper] Worker has been disposed.")}}))}dispose(){for(let e=0;e{e.traverse((e=>{let r=e;if(r.isMesh&&r.geometry&&Yi.isMergedMesh(r)&&!(r instanceof rn)){if(i.has(r.geometry.id))return;r.geometry.index&&t.saveOriginalIndex&&(r.geometry.userData.originalIndex=r.geometry.index.array.slice()),r.geometry.boundsTree=new Pc(r.geometry,t),i.add(r.geometry.id)}}))}))}static createMeshBvhAsync(e,t={}){let i=new Set,r=[];e.forEach((e=>{e.traverse((e=>{let t=e;if(t.isMesh&&t.geometry&&Yi.isMergedMesh(t)&&!(t instanceof rn)){if(i.has(t.geometry.id))return;r.push(t.geometry),i.add(t.geometry.id)}}))}));let n=new tE;n.generate(r,t).then((()=>{n.dispose()}))}},D2t=(e=>(e[e.NONE=-1]="NONE",e[e.ROTATE=0]="ROTATE",e[e.DOLLY=1]="DOLLY",e[e.PAN=2]="PAN",e[e.TOUCH_ROTATE=3]="TOUCH_ROTATE",e[e.TOUCH_DOLLY=4]="TOUCH_DOLLY",e))(D2t||{}),C2t=(e=>(e.LEFT="ArrowLeft",e.UP="ArrowUp",e.RIGHT="ArrowRight",e.BOTTOM="ArrowDown",e))(C2t||{});function rE(e){return{type:e}}var hh={movable:!1,startDistBetweenFingers:0,scale:1},iE=2*Math.PI,VMe=1e-6,EO=class extends Bo{constructor(e,t,i=!1){super(),this.enabled=!0,this.target=new A,this.enableZoom=!1,this.enablePan=!1,this.enableRotate=!0,this.state=-1,this.rotateSpeed=1,this.zoomSpeed=1,this.panSpeed=1,this.scale=1,this.minZoom=0,this.maxZoom=1/0,this.screenSpacePanning=!0,this.autoRotate=!0,this.autoRotateSpeed=2,this.enableDamping=!1,this.dampingFactor=.05,this.minAzimuthAngle=-1/0,this.maxAzimuthAngle=1/0,this.minPolarAngle=0,this.maxPolarAngle=Math.PI,this.minDistance=0,this.maxDistance=1/0,this.keyPanSpeed=7,this.minFov=50,this.maxFov=95,this.zoomChanged=!1,this.panOffset=new A,this.pointerPositions={},this.rotateStart=new le,this.rotateEnd=new le,this.rotateDelta=new le,this.dollyStart=new le,this.dollyEnd=new le,this.dollyDelta=new le,this.panStart=new le,this.panEnd=new le,this.panDelta=new le,this.pointers=[],this.spherical=new ff,this.sphericalDelta=new ff,this.update=function(e){let t=new A,i=new A,r=new Hr;return function(){let n=e.quat,s=n.clone().invert(),a=e.object.position;t.copy(a).sub(e.target),t.applyQuaternion(n),e.spherical.setFromVector3(t),e.autoRotate&&-1===e.state&&(e.isVRMode?e.sphericalDelta.theta+=iE/60/60*e.autoRotateSpeed:e.sphericalDelta.theta-=iE/60/60*e.autoRotateSpeed),e.enableDamping?(e.spherical.theta+=e.sphericalDelta.theta*e.dampingFactor,e.spherical.phi+=e.sphericalDelta.phi*e.dampingFactor):(e.spherical.theta+=e.sphericalDelta.theta,e.spherical.phi+=e.sphericalDelta.phi);let o=e.minAzimuthAngle,l=e.maxAzimuthAngle;return isFinite(o)&&isFinite(l)&&(o<-Math.PI?o+=iE:o>Math.PI&&(o-=iE),l<-Math.PI?l+=iE:l>Math.PI&&(l-=iE),e.spherical.theta=o<=l?Math.max(o,Math.min(l,e.spherical.theta)):e.spherical.theta>(o+l)/2?Math.max(o,e.spherical.theta):Math.min(l,e.spherical.theta)),e.spherical.phi=Math.max(e.minPolarAngle,Math.min(e.maxPolarAngle,e.spherical.phi)),e.spherical.makeSafe(),e.spherical.radius*=e.scale,e.spherical.radius=Math.max(e.minDistance,Math.min(e.maxDistance,e.spherical.radius)),!0===e.enableDamping?e.target.addScaledVector(e.panOffset,e.dampingFactor):e.target.add(e.panOffset),t.setFromSpherical(e.spherical),t.applyQuaternion(s),a.copy(e.target).add(t),e.object.lookAt(e.target),!0===e.enableDamping?(e.sphericalDelta.theta*=1-e.dampingFactor,e.sphericalDelta.phi*=1-e.dampingFactor,e.panOffset.multiplyScalar(1-e.dampingFactor)):(e.sphericalDelta.set(0,0,0),e.panOffset.set(0,0,0)),e.scale=1,!!(e.zoomChanged||i.distanceToSquared(e.object.position)>VMe||8*(1-r.dot(e.object.quaternion))>VMe)&&(e.dispatchEvent(rE("change")),i.copy(e.object.position),r.copy(e.object.quaternion),e.zoomChanged=!1,!0)}}(this),this.onContextMenu=function(e){return t=>{!1!==e.enabled&&t.preventDefault()}}(this),this.onPointerDown=function(e){return t=>{!1!==e.enabled&&(0===e.pointers.length&&(e.domElement.setPointerCapture(t.pointerId),e.domElement.addEventListener("pointermove",e.onPointerMove),e.domElement.addEventListener("pointerup",e.onPointerUp)),e.addPointer(t),"touch"===t.pointerType?e.onTouchStart(t):e.onMouseDown(t))}}(this),this.onPointerMove=function(e){return t=>{!1!==e.enabled&&("touch"===t.pointerType?e.onTouchMove(t):e.onMouseMove(t))}}(this),this.onPointerUp=function(e){return t=>{e.removePointer(t),0===e.pointers.length&&(e.domElement.releasePointerCapture(t.pointerId),e.domElement.removeEventListener("pointermove",e.onPointerMove),e.domElement.removeEventListener("pointerup",e.onPointerUp)),"touch"===t.pointerType&&e.handlerTouchEnd(t),e.dispatchEvent(rE("end")),e.state=-1}}(this),this.onPointerCancel=function(e){return t=>{e.removePointer(t),e.handlerTouchEnd(t)}}(this),this.onMouseWheel=function(e){return t=>{!1===e.enabled||!1===e.enableZoom||-1!==e.state||(t.preventDefault(),t.stopPropagation(),e.dispatchEvent(rE("start")),e.handleMouseWheel(t),e.dispatchEvent(rE("end")))}}(this),this.pan=function(e){let t=new A;return function(i,r){let n=e.domElement;if(e.object instanceof Vr){let s=e.object.position;t.copy(s).sub(e.target);let a=t.length();a*=Math.tan(e.object.fov/2*Math.PI/180),e.panLeft(2*i*a/n.clientHeight,e.object.matrix),e.panUp(2*r*a/n.clientHeight,e.object.matrix)}else console.warn("WARNING: VRControls.js encountered an unknown camera type - pan disabled."),e.enablePan=!1}}(this),this.panLeft=function(e){let t=new A;return function(i,r){t.setFromMatrixColumn(r,0),t.multiplyScalar(-i),e.panOffset.add(t)}}(this),this.panUp=function(e){let t=new A;return function(i,r){!0===e.screenSpacePanning?t.setFromMatrixColumn(r,1):(t.setFromMatrixColumn(r,0),t.crossVectors(e.object.up,t)),t.multiplyScalar(i),e.panOffset.add(t)}}(this),this.onKeyDown=e=>{!1===this.enabled||!1===this.enablePan||this.handleKeyDown(e)},this.object=e,this.domElement=t,this.isVRMode=i,this.quat=(new Hr).setFromUnitVectors(this.object.up,new A(0,1,0)),this.domElement&&this.domElement.style&&(this.domElement.style.touchAction="none"),this.domElement.addEventListener("contextmenu",this.onContextMenu),this.domElement.addEventListener("pointerdown",this.onPointerDown),this.domElement.addEventListener("pointercancel",this.onPointerCancel),this.domElement.addEventListener("wheel",this.onMouseWheel,{passive:!1}),this.update()}dispose(){this.domElement.removeEventListener("contextmenu",this.onContextMenu),this.domElement.removeEventListener("pointerdown",this.onPointerDown),this.domElement.removeEventListener("pointercancel",this.onPointerCancel),this.domElement.removeEventListener("wheel",this.onMouseWheel),this.domElement.removeEventListener("pointermove",this.onPointerMove),this.domElement.removeEventListener("pointerup",this.onPointerUp),this.domElementKeyEvents&&this.domElementKeyEvents.removeEventListener("keydown",this.onKeyDown)}addPointer(e){this.pointers.push(e)}removePointer(e){delete this.pointerPositions[e.pointerId];for(let t=0;t0&&this.dollyOut(t),this.update()}handleMouseDownRotate(e){this.rotateStart.set(e.clientX,e.clientY)}handleMouseDownDolly(e){this.dollyStart.set(e.clientX,e.clientY)}handleMouseDownPan(e){this.panStart.set(e.clientX,e.clientY)}handleTouchStartRotate(){if(1===this.pointers.length)this.rotateStart.set(this.pointers[0].pageX,this.pointers[0].pageY);else{let e=.5*(this.pointers[0].pageX+this.pointers[1].pageX),t=.5*(this.pointers[0].pageY+this.pointers[1].pageY);this.rotateStart.set(e,t)}}handleTouchStartDolly(e){if(e.length<2)return;let t=e[0],i=e[1];hh.startDistBetweenFingers=this.getDist([t.pageX,t.pageY],[i.pageX,i.pageY]),hh.movable=!0,hh.scale=1}updateRotate(){let e=this.isVRMode,t=this.sphericalDelta;this.rotateDelta.subVectors(this.rotateEnd,this.rotateStart).multiplyScalar(this.rotateSpeed);let i=this.domElement;e?(t.theta+=2*Math.PI*this.rotateDelta.x/i.clientHeight,t.phi+=2*Math.PI*this.rotateDelta.y/i.clientHeight):(t.theta-=2*Math.PI*this.rotateDelta.x/i.clientHeight,t.phi-=2*Math.PI*this.rotateDelta.y/i.clientHeight),this.rotateStart.copy(this.rotateEnd)}handleMouseMoveRotate(e){this.rotateEnd.set(e.clientX,e.clientY),this.updateRotate()}dollyOut(e){this.object instanceof Vr?this.scale/=e:(console.warn("WARNING: VRControls.js encountered an unknown camera type - dolly/zoom disabled."),this.enableZoom=!1)}dollyIn(e){this.object instanceof Vr?this.scale*=e:(console.warn("WARNING: VRControls.js encountered an unknown camera type - dolly/zoom disabled."),this.enableZoom=!1)}handleMouseMoveDolly(e){this.dollyEnd.set(e.clientX,e.clientY),this.dollyDelta.subVectors(this.dollyEnd,this.dollyStart);let t=Math.pow(.95,this.zoomSpeed);this.dollyDelta.y>0?this.dollyOut(t):this.dollyIn(t),this.dollyStart.copy(this.dollyEnd)}handleMouseMovePan(e){this.panEnd.set(e.clientX,e.clientY),this.panDelta.subVectors(this.panEnd,this.panStart).multiplyScalar(this.panSpeed),this.pan(this.panDelta.x,this.panDelta.y),this.panStart.copy(this.panEnd)}getSecondPointerPosition(e){let t=e.pointerId===this.pointers[0].pointerId?this.pointers[1]:this.pointers[0];return this.pointerPositions[t.pointerId]}handleTouchMoveRotate(e){if(1==this.pointers.length)this.rotateEnd.set(e.pageX,e.pageY);else{let t=this.getSecondPointerPosition(e),i=.5*(e.pageX+t.x),r=.5*(e.pageY+t.y);this.rotateEnd.set(i,r)}this.updateRotate()}updateFov(e){var t;let i=this.object;if(!(i&&i instanceof Vr))return void console.warn("WARNING: VRControls.js encountered an unknown camera type - updateFov disabled.");let r=this.minFov,n=this.maxFov,s=e=>{let t=i.fov+e;t=Math.min(t,n),t=Math.max(t,r),i.fov!==t&&(i.fov=t,i.updateProjectionMatrix(),this.dispatchEvent({type:"change"}))},a=e/20;for(let e=0;e<20;++e)setTimeout((()=>s(a)),5*e);this.autoRotate&&(null==(t=this.controlsHelper)||t.delayAutoRotate())}handleTouchMoveDolly(e){if(!hh.movable||this.pointers.length<2)return;let t=this.getSecondPointerPosition(e),i=[e.pageX,e.pageY],r=[t.x,t.y],n=hh.startDistBetweenFingers,s=this.getDist(i,r);if(!n||!s||Math.abs(n-s)<10)return;let a=s/n;console.log(a);a=Math.min(a,3),a=Math.max(a,1/3);let o=a-hh.scale;if(Math.abs(o)<.05)return;let l=0;l=o>0?10*-o:10*(hh.scale/a-1),this.updateFov(l),hh.scale=a}handleKeyDown(e){let t=!1;switch(e.code){case"ArrowUp":this.pan(0,this.keyPanSpeed),t=!0;break;case"ArrowDown":this.pan(0,-this.keyPanSpeed),t=!0;break;case"ArrowLeft":this.pan(this.keyPanSpeed,0),t=!0;break;case"ArrowRight":this.pan(-this.keyPanSpeed,0),t=!0}t&&(e.preventDefault(),this.update())}listenToKeyEvents(e){e.addEventListener("keydown",this.onKeyDown),this.domElementKeyEvents=e}},M0=class extends Cs{constructor(e){super(),this.enable=!0,this.mouseDownPositionX=0,this.mouseDownPositionY=0,this.downClickTime=0,this.upClickTime=0,this.handleClick=e=>{if(!this.enable)return;this.stop(e);let t=this.getBaseEvent(e);this.dispatchEvent("click",t)},this.handlePointerDown=e=>{if(!this.enable)return;this.stop(e);let t,i=this.getBaseEvent(e);this.mouseDownPositionX=i.x,this.mouseDownPositionY=i.y,this.downClickTime=i.timestamp,0===i.button&&this.downClickTime-this.upClickTime<300&&(t&&clearTimeout(t),t=setTimeout((()=>{this.dispatchEvent("dblclick",i)}),300)),this.dispatchEvent("pointerdown",i),"touch"===e.pointerType?this.dispatchEvent("touchstart",i):this.dispatchEvent("mousedown",i)},this.handlePointerMove=e=>{if(!this.enable)return;this.stop(e);let t=this.getBaseEvent(e);(Math.abs(t.x-this.mouseDownPositionX)>5||Math.abs(t.y-this.mouseDownPositionY)>5)&&(this.dispatchEvent("pointermove",t),"touch"===e.pointerType?this.dispatchEvent("touchmove",t):this.dispatchEvent("mousemove",t))},this.handlePointerUp=e=>{if(!this.enable)return;this.stop(e);let t=this.getBaseEvent(e);0===t.button&&(this.upClickTime=t.timestamp),this.dispatchEvent("pointerup",t),"touch"===e.pointerType?this.dispatchEvent("touchend",t):this.dispatchEvent("mouseup",t),this.mouseDownPositionX=-1,this.mouseDownPositionY=-1},this.handlePointerCancel=e=>{this.enable&&(this.stop(e),this.dispatchEvent("pointercancel",this.getBaseEvent(e)))},this.handleMouseWheel=e=>{this.enable&&(this.stop(e),this.dispatchEvent("wheel",this.getBaseEvent(e)))},this.handleContextMenu=e=>{if(this.enable)return this.stop(e),this.dispatchEvent("contextmenu",this.getBaseEvent(e)),!1},this.handlePointerEnter=e=>{this.enable&&(this.stop(e),this.dispatchEvent("pointerenter",this.getBaseEvent(e)))},this.handlePointerLeave=e=>{this.enable&&(this.stop(e),this.dispatchEvent("pointerleave",this.getBaseEvent(e)))},this.handleResize=e=>{this.enable&&(this.stop(e),this.dispatchEvent("resize",this.getBaseEvent(e)))},this.handleKeydown=e=>{this.enable&&this.dispatchEvent("keydown",this.getBaseEvent(e))},this.handleKeyup=e=>{this.enable&&this.dispatchEvent("keyup",this.getBaseEvent(e))},this.style={},this.element=e,this.bindEvents()}setEnable(e){this.enable=e}setCursor(e){this.element.style&&(this.element.style.cursor=e||"default")}bindEvents(){this.element.style.touchAction="none",this.element.style.userSelect="none",this.element.style.webkitUserSelect="none",this.element.addEventListener("click",this.handleClick),this.element.addEventListener("pointerdown",this.handlePointerDown),this.element.addEventListener("pointermove",this.handlePointerMove),this.element.addEventListener("pointerup",this.handlePointerUp),this.element.addEventListener("pointercancel",this.handlePointerCancel),this.element.addEventListener("pointerenter",this.handlePointerEnter),this.element.addEventListener("pointerleave",this.handlePointerLeave),this.element.addEventListener("contextmenu",this.handleContextMenu),this.element.addEventListener("wheel",this.handleMouseWheel),window.addEventListener("resize",this.handleResize),window.addEventListener("keydown",this.handleKeydown),window.addEventListener("keyup",this.handleKeyup)}unBindEvents(){this.element.removeEventListener("pointerdown",this.handlePointerDown),this.element.removeEventListener("pointermove",this.handlePointerMove),this.element.removeEventListener("pointerup",this.handlePointerUp),this.element.removeEventListener("pointerenter",this.handlePointerEnter),this.element.removeEventListener("pointerleave",this.handlePointerLeave),this.element.removeEventListener("contextmenu",this.handleContextMenu),this.element.removeEventListener("wheel",this.handleMouseWheel),window.removeEventListener("resize",this.handleResize),window.removeEventListener("keydown",this.handleKeydown),window.removeEventListener("keyup",this.handleKeyup),this.element.style.touchAction="",this.element.style.userSelect="",this.element.style.webkitUserSelect=""}getBaseEvent(e){let t={x:0,y:0,pageX:0,pageY:0,clientX:0,clientY:0,deltaX:0,deltaY:0,movementX:0,movementY:0,deltaMode:0,pointerId:0,timestamp:0,buttons:0,pointerType:"mouse",altKey:!1,ctrlKey:!1,shiftKey:!1,metaKey:!1};if(t.timestamp=e.timeStamp,bO(e,"clientX"))if(t.altKey=e.altKey,t.ctrlKey=e.ctrlKey,t.shiftKey=e.shiftKey,t.clientX=e.clientX,t.clientY=e.clientY,t.button=e.button,bO(e,"pointerId")){t.pointerType=e.pointerType,t.buttons=e.buttons,t.pageX=e.pageX,t.pageY=e.pageY,t.pointerId=e.pointerId;let i=Ai.getScreenPointByEvent(e,this.element);t.x=i.x,t.y=i.y,t.movementX=e.movementX,t.movementY=e.movementY}else bO(e,"deltaX")&&(t.deltaMode=e.deltaMode,t.deltaX=e.deltaX,t.deltaY=e.deltaY);else bO(e,"code")&&(t.altKey=e.altKey,t.ctrlKey=e.ctrlKey,t.shiftKey=e.shiftKey,t.metaKey=e.metaKey,t.code=e.code);return t}stop(e){e.preventDefault()}getBoundingClientRect(){return this.element.getBoundingClientRect()}};function bO(e,t){return void 0!==e[t]}var Dr={LEFT:1,RIGHT:2,MIDDLE:4},et=Object.freeze({NONE:0,ROTATE:1,TRUCK:2,OFFSET:4,DOLLY:8,ZOOM:16,TOUCH_ROTATE:32,TOUCH_TRUCK:64,TOUCH_OFFSET:128,TOUCH_DOLLY:256,TOUCH_ZOOM:512,TOUCH_DOLLY_TRUCK:1024,TOUCH_DOLLY_OFFSET:2048,TOUCH_DOLLY_ROTATE:4096,TOUCH_ZOOM_TRUCK:8192,TOUCH_ZOOM_OFFSET:16384,TOUCH_ZOOM_ROTATE:32768});function Zf(e){return e.isPerspectiveCamera}function ph(e){return e.isOrthographicCamera}var D0=2*Math.PI,Z8=Math.PI/2,nE=Math.PI/180;function C0(e,t,i){return Math.max(t,Math.min(i,e))}function Sn(e,t=1e-5){return Math.abs(e)0==d>u&&(d=u,i.value=(d-u)/s),d}function Q8(e,t,i,r,n=1/0,s,a){let o=2/(r=Math.max(1e-4,r)),l=o*s,h=1/(1+l+.48*l*l+.235*l*l*l),u=t.x,c=t.y,p=t.z,d=e.x-u,f=e.y-c,m=e.z-p,g=u,y=c,v=p,T=n*r,x=d*d+f*f+m*m;if(x>T*T){let e=Math.sqrt(x);d=d/e*T,f=f/e*T,m=m/e*T}u=e.x-d,c=e.y-f,p=e.z-m;let b=(i.x+o*d)*s,_=(i.y+o*f)*s,E=(i.z+o*m)*s;i.x=(i.x-o*b)*h,i.y=(i.y-o*_)*h,i.z=(i.z-o*E)*h,a.x=u+(d+b)*h,a.y=c+(f+_)*h,a.z=p+(m+E)*h;let w=g-e.x,S=y-e.y,I=v-e.z;return w*(a.x-g)+S*(a.y-y)+I*(a.z-v)>0&&(a.x=g,a.y=y,a.z=v,i.x=(a.x-g)/s,i.y=(a.y-y)/s,i.z=(a.z-v)/s),a}function xO(e,t){t.set(0,0),e.forEach((e=>{t.x+=e.clientX,t.y+=e.clientY})),t.x/=e.length,t.y/=e.length}function IO(e,t){return!!ph(e)&&(console.warn(`${t} is not supported in OrthographicCamera`),!0)}var Cr,zMe,wO,eG,yo,Nr,an,oE,dh,fh,A0,jMe,WMe,Kc,A_,lE,qMe,tG,YMe,rG,iG,RO,_O=class{constructor(){this._listeners={}}addEventListener(e,t){let i=this._listeners;void 0===i[e]&&(i[e]=[]),-1===i[e].indexOf(t)&&i[e].push(t)}hasEventListener(e,t){let i=this._listeners;return void 0!==i[e]&&-1!==i[e].indexOf(t)}removeEventListener(e,t){let i=this._listeners[e];if(void 0!==i){let e=i.indexOf(t);-1!==e&&i.splice(e,1)}}removeAllEventListeners(e){e?Array.isArray(this._listeners[e])&&(this._listeners[e].length=0):this._listeners={}}dispatchEvent(e){let t=this._listeners[e.type];if(void 0!==t){e.target=this;let i=t.slice(0);for(let t=0,r=i.length;t{},this._enabled=!0,this._state=et.NONE,this._viewport=null,this._dollyControlAmount=0,this._hasRested=!0,this._boundaryEnclosesCamera=!1,this._needsUpdate=!0,this._updatedLastTime=!1,this._elementRect=xi.isBrowser?new DOMRect:{x:0,y:0,width:0,height:0,left:0,right:0,top:0,bottom:0},this._activePointers=[],this._isUserControllingRotate=!1,this._isUserControllingDolly=!1,this._isUserControllingTruck=!1,this._isUserControllingOffset=!1,this._isUserControllingZoom=!1,this._thetaVelocity={value:0},this._phiVelocity={value:0},this._radiusVelocity={value:0},this._targetVelocity=new Cr.Vector3,this._focalOffsetVelocity=new Cr.Vector3,this._zoomVelocity={value:0},this._truckInternal=(e,t,i)=>{if(Zf(this._camera)){let r=Nr.copy(this._camera.position).sub(this._target),n=this._camera.getEffectiveFOV()*nE,s=r.length()*Math.tan(.5*n),a=this.truckSpeed*e*s/this._elementRect.height,o=this.truckSpeed*t*s/this._elementRect.height;this.verticalDragToForward?(i?this.setFocalOffset(this._focalOffsetEnd.x+a,this._focalOffsetEnd.y,this._focalOffsetEnd.z,!0):this.truck(a,0,!0),this.forward(-o,!0)):i?this.setFocalOffset(this._focalOffsetEnd.x+a,this._focalOffsetEnd.y+o,this._focalOffsetEnd.z,!0):this.truck(a,o,!0)}else if(ph(this._camera)){let r=this._camera,n=e*(r.right-r.left)/r.zoom/this._elementRect.width,s=t*(r.top-r.bottom)/r.zoom/this._elementRect.height;i?this.setFocalOffset(this._focalOffsetEnd.x+n,this._focalOffsetEnd.y+s,this._focalOffsetEnd.z,!0):this.truck(n,s,!0)}},this._rotateInternal=(e,t)=>{let i=D0*this.azimuthRotateSpeed*e/this._elementRect.height,r=D0*this.polarRotateSpeed*t/this._elementRect.height;this.rotate(i,r,!0)},this._dollyInternal=(e,t,i)=>{let r=Math.pow(.95,-e*this.dollySpeed),n=this._sphericalEnd.radius*r,s=this._sphericalEnd.radius,a=s*(e>=0?-1:1);this.dollyTo(n),this.infinityDolly&&(n{let r=Math.pow(.95,e*this.dollySpeed),n=this._zoomEnd;this.zoomTo(this._zoom*r),this.dollyToCursor&&(this._dollyControlAmount+=this._zoomEnd-n,this._dollyControlCoord.set(t,i))},void 0===Cr&&console.error("camera-controls: `THREE` is undefined. You must first run `CameraControls.install( { THREE: THREE } )`. Check the docs for further information."),this._camera=e,this._yAxisUpSpace=(new Cr.Quaternion).setFromUnitVectors(this._camera.up,wO),this._yAxisUpSpaceInverse=this._yAxisUpSpace.clone().invert(),this._state=et.NONE,this._target=new Cr.Vector3,this._targetEnd=this._target.clone(),this._focalOffset=new Cr.Vector3,this._focalOffsetEnd=this._focalOffset.clone(),this._spherical=(new Cr.Spherical).setFromVector3(Nr.copy(this._camera.position).applyQuaternion(this._yAxisUpSpace)),this._sphericalEnd=this._spherical.clone(),this._zoom=this._camera.zoom,this._zoomEnd=this._zoom,this._nearPlaneCorners=[new Cr.Vector3,new Cr.Vector3,new Cr.Vector3,new Cr.Vector3],this._updateNearPlaneCorners(),this._boundary=new Cr.Box3(new Cr.Vector3(-1/0,-1/0,-1/0),new Cr.Vector3(1/0,1/0,1/0)),this._target0=this._target.clone(),this._position0=this._camera.position.clone(),this._zoom0=this._zoom,this._focalOffset0=this._focalOffset.clone(),this._dollyControlAmount=0,this._dollyControlCoord=new Cr.Vector2,this.mouseButtons={left:et.ROTATE,middle:et.DOLLY,right:et.TRUCK,wheel:Zf(this._camera)?et.DOLLY:ph(this._camera)?et.ZOOM:et.NONE},this.touches={one:et.TOUCH_ROTATE,two:Zf(this._camera)?et.TOUCH_DOLLY_TRUCK:ph(this._camera)?et.TOUCH_ZOOM_TRUCK:et.NONE,three:et.TOUCH_TRUCK};let i=new Cr.Vector2,r=new Cr.Vector2,n=new Cr.Vector2,s=e=>{if(!this._enabled||!this._domElement)return;let t="mouse"!==e.pointerType?null:(e.buttons&Dr.LEFT)===Dr.LEFT?Dr.LEFT:(e.buttons&Dr.MIDDLE)===Dr.MIDDLE?Dr.MIDDLE:(e.buttons&Dr.RIGHT)===Dr.RIGHT?Dr.RIGHT:null;if(null!==t){let e=this._findPointerByMouseButton(t);e&&this._activePointers.splice(this._activePointers.indexOf(e),1)}let i={pointerId:e.pointerId,clientX:e.clientX,clientY:e.clientY,deltaX:0,deltaY:0,mouseButton:t};this._activePointers.push(i),this._domElement.removeEventListener("pointermove",o),this._domElement.removeEventListener("pointerup",h),this._domElement.addEventListener("pointermove",o),this._domElement.addEventListener("pointerup",h),f(e)},a=e=>{if(!this._enabled||!this._domElement)return;let t=(e.buttons&Dr.LEFT)===Dr.LEFT?Dr.LEFT:(e.buttons&Dr.MIDDLE)===Dr.MIDDLE?Dr.MIDDLE:(e.buttons&Dr.RIGHT)===Dr.RIGHT?Dr.RIGHT:null;if(null!==t){let e=this._findPointerByMouseButton(t);e&&this._activePointers.splice(this._activePointers.indexOf(e),1)}let i={pointerId:0,clientX:e.clientX,clientY:e.clientY,deltaX:0,deltaY:0,mouseButton:(e.buttons&Dr.LEFT)===Dr.LEFT?Dr.LEFT:(e.buttons&Dr.MIDDLE)===Dr.LEFT?Dr.MIDDLE:(e.buttons&Dr.RIGHT)===Dr.LEFT?Dr.RIGHT:null};this._activePointers.push(i),this._domElement.removeEventListener("mousemove",l),this._domElement.removeEventListener("mouseup",u),this._domElement.addEventListener("mousemove",l),this._domElement.addEventListener("mouseup",u),f(e)},o=e=>{let t=e.pointerId,i=this._findPointerById(t);if(i){if(i.clientX=e.clientX,i.clientY=e.clientY,i.deltaX=e.movementX,i.deltaY=e.movementY,"touch"===e.pointerType)switch(this._activePointers.length){case 1:this._state=this.touches.one;break;case 2:this._state=this.touches.two;break;case 3:this._state=this.touches.three}else this._state=0,(e.buttons&Dr.LEFT)===Dr.LEFT&&(this._state=this._state|this.mouseButtons.left),(e.buttons&Dr.MIDDLE)===Dr.MIDDLE&&(this._state=this._state|this.mouseButtons.middle),(e.buttons&Dr.RIGHT)===Dr.RIGHT&&(this._state=this._state|this.mouseButtons.right);m()}},l=e=>{let t=this._findPointerById(0);t&&(t.clientX=e.clientX,t.clientY=e.clientY,t.deltaX=e.movementX,t.deltaY=e.movementY,this._state=0,(e.buttons&Dr.LEFT)===Dr.LEFT&&(this._state=this._state|this.mouseButtons.left),(e.buttons&Dr.MIDDLE)===Dr.MIDDLE&&(this._state=this._state|this.mouseButtons.middle),(e.buttons&Dr.RIGHT)===Dr.RIGHT&&(this._state=this._state|this.mouseButtons.right),m())},h=e=>{let t=e.pointerId,i=this._findPointerById(t);if(i&&this._activePointers.splice(this._activePointers.indexOf(i),1),"touch"===e.pointerType)switch(this._activePointers.length){case 0:this._state=et.NONE;break;case 1:this._state=this.touches.one;break;case 2:this._state=this.touches.two;break;case 3:this._state=this.touches.three}else this._state=et.NONE;g()},u=()=>{let e=this._findPointerById(0);e&&this._activePointers.splice(this._activePointers.indexOf(e),1),this._state=et.NONE,g()},c=-1,p=e=>{if(!this._enabled||this.mouseButtons.wheel===et.NONE)return;if(this.dollyToCursor||this.mouseButtons.wheel===et.ROTATE||this.mouseButtons.wheel===et.TRUCK){let e=performance.now();c-e<1e3&&this._getClientRect(this._elementRect),c=e}let t=A2t?-1:-3,i=1===e.deltaMode?e.deltaY/t:e.deltaY/(10*t),r=this.dollyToCursor?(e.clientX-this._elementRect.x)/this._elementRect.width*2-1:0,n=this.dollyToCursor?(e.clientY-this._elementRect.y)/this._elementRect.height*-2+1:0;switch(this.mouseButtons.wheel){case et.ROTATE:this._rotateInternal(e.deltaX,e.deltaY),this._isUserControllingRotate=!0;break;case et.TRUCK:this._truckInternal(e.deltaX,e.deltaY,!1),this._isUserControllingTruck=!0;break;case et.OFFSET:this._truckInternal(e.deltaX,e.deltaY,!0),this._isUserControllingOffset=!0;break;case et.DOLLY:this._dollyInternal(-i,r,n),this._isUserControllingDolly=!0;break;case et.ZOOM:this._zoomInternal(-i,r,n),this._isUserControllingZoom=!0}this.dispatchEvent({type:"control"})},d=e=>{if(this._domElement&&this._enabled&&this.mouseButtons.right===Jf.ACTION.NONE){let t=e instanceof PointerEvent?e.pointerId:(MouseEvent,0),i=this._findPointerById(t);return i&&this._activePointers.splice(this._activePointers.indexOf(i),1),this._domElement.removeEventListener("pointermove",o),this._domElement.removeEventListener("pointerup",h),this._domElement.removeEventListener("mousemove",l),void this._domElement.removeEventListener("mouseup",u)}},f=e=>{if(this._enabled){if(xO(this._activePointers,yo),this._getClientRect(this._elementRect),i.copy(yo),r.copy(yo),this._activePointers.length>=2){let e=yo.x-this._activePointers[1].clientX,t=yo.y-this._activePointers[1].clientY,i=Math.sqrt(e*e+t*t);n.set(0,i);let s=.5*(this._activePointers[0].clientX+this._activePointers[1].clientX),a=.5*(this._activePointers[0].clientY+this._activePointers[1].clientY);r.set(s,a)}if("pointerType"in e&&"touch"===e.pointerType)switch(this._activePointers.length){case 1:this._state=this.touches.one;break;case 2:this._state=this.touches.two;break;case 3:this._state=this.touches.three}else this._state=0,(e.buttons&Dr.LEFT)===Dr.LEFT&&(this._state=this._state|this.mouseButtons.left),(e.buttons&Dr.MIDDLE)===Dr.MIDDLE&&(this._state=this._state|this.mouseButtons.middle),(e.buttons&Dr.RIGHT)===Dr.RIGHT&&(this._state=this._state|this.mouseButtons.right);((this._state&et.ROTATE)===et.ROTATE||(this._state&et.TOUCH_ROTATE)===et.TOUCH_ROTATE||(this._state&et.TOUCH_DOLLY_ROTATE)===et.TOUCH_DOLLY_ROTATE||(this._state&et.TOUCH_ZOOM_ROTATE)===et.TOUCH_ZOOM_ROTATE)&&(this._sphericalEnd.theta=this._spherical.theta,this._sphericalEnd.phi=this._spherical.phi,this._thetaVelocity.value=0,this._phiVelocity.value=0),((this._state&et.TRUCK)===et.TRUCK||(this._state&et.TOUCH_TRUCK)===et.TOUCH_TRUCK||(this._state&et.TOUCH_DOLLY_TRUCK)===et.TOUCH_DOLLY_TRUCK||(this._state&et.TOUCH_ZOOM_TRUCK)===et.TOUCH_ZOOM_TRUCK)&&(this._targetEnd.copy(this._target),this._targetVelocity.set(0,0,0)),((this._state&et.DOLLY)===et.DOLLY||(this._state&et.TOUCH_DOLLY)===et.TOUCH_DOLLY||(this._state&et.TOUCH_DOLLY_TRUCK)===et.TOUCH_DOLLY_TRUCK||(this._state&et.TOUCH_DOLLY_OFFSET)===et.TOUCH_DOLLY_OFFSET||(this._state&et.TOUCH_DOLLY_ROTATE)===et.TOUCH_DOLLY_ROTATE)&&(this._sphericalEnd.radius=this._spherical.radius,this._radiusVelocity.value=0),((this._state&et.ZOOM)===et.ZOOM||(this._state&et.TOUCH_ZOOM)===et.TOUCH_ZOOM||(this._state&et.TOUCH_ZOOM_TRUCK)===et.TOUCH_ZOOM_TRUCK||(this._state&et.TOUCH_ZOOM_OFFSET)===et.TOUCH_ZOOM_OFFSET||(this._state&et.TOUCH_ZOOM_ROTATE)===et.TOUCH_ZOOM_ROTATE)&&(this._zoomEnd=this._zoom,this._zoomVelocity.value=0),((this._state&et.OFFSET)===et.OFFSET||(this._state&et.TOUCH_OFFSET)===et.TOUCH_OFFSET||(this._state&et.TOUCH_DOLLY_OFFSET)===et.TOUCH_DOLLY_OFFSET||(this._state&et.TOUCH_ZOOM_OFFSET)===et.TOUCH_ZOOM_OFFSET)&&(this._focalOffsetEnd.copy(this._focalOffset),this._focalOffsetVelocity.set(0,0,0)),this.dispatchEvent({type:"controlstart"})}},m=()=>{if(!this._enabled)return;xO(this._activePointers,yo);let e=!!xi.isBrowser&&(this._domElement&&document.pointerLockElement===this._domElement),t=e?-this._activePointers[0].deltaX:r.x-yo.x,s=e?-this._activePointers[0].deltaY:r.y-yo.y;if(r.copy(yo),((this._state&et.ROTATE)===et.ROTATE||(this._state&et.TOUCH_ROTATE)===et.TOUCH_ROTATE||(this._state&et.TOUCH_DOLLY_ROTATE)===et.TOUCH_DOLLY_ROTATE||(this._state&et.TOUCH_ZOOM_ROTATE)===et.TOUCH_ZOOM_ROTATE)&&(this._rotateInternal(t,s),this._isUserControllingRotate=!0),(this._state&et.DOLLY)===et.DOLLY||(this._state&et.ZOOM)===et.ZOOM){let e=this.dollyToCursor?(i.x-this._elementRect.x)/this._elementRect.width*2-1:0,t=this.dollyToCursor?(i.y-this._elementRect.y)/this._elementRect.height*-2+1:0;(this._state&et.DOLLY)===et.DOLLY?(this._dollyInternal(s*SO,e,t),this._isUserControllingDolly=!0):(this._zoomInternal(s*SO,e,t),this._isUserControllingZoom=!0)}if((this._state&et.TOUCH_DOLLY)===et.TOUCH_DOLLY||(this._state&et.TOUCH_ZOOM)===et.TOUCH_ZOOM||(this._state&et.TOUCH_DOLLY_TRUCK)===et.TOUCH_DOLLY_TRUCK||(this._state&et.TOUCH_ZOOM_TRUCK)===et.TOUCH_ZOOM_TRUCK||(this._state&et.TOUCH_DOLLY_OFFSET)===et.TOUCH_DOLLY_OFFSET||(this._state&et.TOUCH_ZOOM_OFFSET)===et.TOUCH_ZOOM_OFFSET||(this._state&et.TOUCH_DOLLY_ROTATE)===et.TOUCH_DOLLY_ROTATE||(this._state&et.TOUCH_ZOOM_ROTATE)===et.TOUCH_ZOOM_ROTATE){let e=yo.x-this._activePointers[1].clientX,t=yo.y-this._activePointers[1].clientY,i=Math.sqrt(e*e+t*t),s=n.y-i;n.set(0,i);let a=this.dollyToCursor?(r.x-this._elementRect.x)/this._elementRect.width*2-1:0,o=this.dollyToCursor?(r.y-this._elementRect.y)/this._elementRect.height*-2+1:0;(this._state&et.TOUCH_DOLLY)===et.TOUCH_DOLLY||(this._state&et.TOUCH_DOLLY_ROTATE)===et.TOUCH_DOLLY_ROTATE||(this._state&et.TOUCH_DOLLY_TRUCK)===et.TOUCH_DOLLY_TRUCK||(this._state&et.TOUCH_DOLLY_OFFSET)===et.TOUCH_DOLLY_OFFSET?(this._dollyInternal(s*SO,a,o),this._isUserControllingDolly=!0):(this._zoomInternal(s*SO,a,o),this._isUserControllingZoom=!0)}((this._state&et.TRUCK)===et.TRUCK||(this._state&et.TOUCH_TRUCK)===et.TOUCH_TRUCK||(this._state&et.TOUCH_DOLLY_TRUCK)===et.TOUCH_DOLLY_TRUCK||(this._state&et.TOUCH_ZOOM_TRUCK)===et.TOUCH_ZOOM_TRUCK)&&(this._truckInternal(t,s,!1),this._isUserControllingTruck=!0),((this._state&et.OFFSET)===et.OFFSET||(this._state&et.TOUCH_OFFSET)===et.TOUCH_OFFSET||(this._state&et.TOUCH_DOLLY_OFFSET)===et.TOUCH_DOLLY_OFFSET||(this._state&et.TOUCH_ZOOM_OFFSET)===et.TOUCH_ZOOM_OFFSET)&&(this._truckInternal(t,s,!0),this._isUserControllingOffset=!0),this.dispatchEvent({type:"control"})},g=()=>{xO(this._activePointers,yo),r.copy(yo),0===this._activePointers.length&&this._domElement&&(this._domElement.removeEventListener("pointermove",o),this._domElement.removeEventListener("mousemove",l),this._domElement.removeEventListener("pointerup",h),this._domElement.removeEventListener("mouseup",u),this.dispatchEvent({type:"controlend"}))};this._addAllEventListeners=e=>{this._domElement=e,this._domElement.style.touchAction="none",this._domElement.style.userSelect="none",this._domElement.style.webkitUserSelect="none",this._domElement.addEventListener("pointerdown",s),O2t&&this._domElement.addEventListener("mousedown",a),this._domElement.addEventListener("pointercancel",h),this._domElement.addEventListener("wheel",p),this._domElement.addEventListener("contextmenu",d)},this._removeAllEventListeners=()=>{this._domElement&&(this._domElement.style.touchAction="",this._domElement.style.userSelect="",this._domElement.style.webkitUserSelect="",this._domElement.removeEventListener("pointerdown",s),this._domElement.removeEventListener("mousedown",a),this._domElement.removeEventListener("pointercancel",h),this._domElement.removeEventListener("wheel",p),this._domElement.removeEventListener("contextmenu",d),this._domElement.removeEventListener("pointermove",o),this._domElement.removeEventListener("mousemove",l),this._domElement.removeEventListener("pointerup",h),this._domElement.removeEventListener("mouseup",u))},this.cancel=()=>{this._state!==et.NONE&&(this._state=et.NONE,this._activePointers.length=0,g())},t&&this.connect(t),this.update(0)}static install(e){Cr=e.THREE,zMe=Object.freeze(new Cr.Vector3(0,0,0)),wO=Object.freeze(new Cr.Vector3(0,1,0)),eG=Object.freeze(new Cr.Vector3(0,0,1)),yo=new Cr.Vector2,Nr=new Cr.Vector3,an=new Cr.Vector3,oE=new Cr.Vector3,dh=new Cr.Vector3,fh=new Cr.Vector3,A0=new Cr.Vector3,jMe=new Cr.Vector3,WMe=new Cr.Vector3,Kc=new Cr.Spherical,A_=new Cr.Spherical,lE=new Cr.Box3,qMe=new Cr.Box3,tG=new Cr.Sphere,YMe=new Cr.Quaternion,rG=new Cr.Quaternion,iG=new Cr.Matrix4,RO=new Cr.Raycaster}static get ACTION(){return et}get camera(){return this._camera}set camera(e){this._camera=e,this.updateCameraUp(),this._camera.updateProjectionMatrix(),this._updateNearPlaneCorners(),this._needsUpdate=!0}get enabled(){return this._enabled}set enabled(e){this._enabled=e,this._domElement&&(e?(this._domElement.style.touchAction="none",this._domElement.style.userSelect="none",this._domElement.style.webkitUserSelect="none"):(this.cancel(),this._domElement.style.touchAction="",this._domElement.style.userSelect="",this._domElement.style.webkitUserSelect=""))}get active(){return!this._hasRested}get currentAction(){return this._state}get distance(){return this._spherical.radius}set distance(e){this._spherical.radius===e&&this._sphericalEnd.radius===e||(this._spherical.radius=e,this._sphericalEnd.radius=e,this._needsUpdate=!0)}get azimuthAngle(){return this._spherical.theta}set azimuthAngle(e){this._spherical.theta===e&&this._sphericalEnd.theta===e||(this._spherical.theta=e,this._sphericalEnd.theta=e,this._needsUpdate=!0)}get polarAngle(){return this._spherical.phi}set polarAngle(e){this._spherical.phi===e&&this._sphericalEnd.phi===e||(this._spherical.phi=e,this._sphericalEnd.phi=e,this._needsUpdate=!0)}get boundaryEnclosesCamera(){return this._boundaryEnclosesCamera}set boundaryEnclosesCamera(e){this._boundaryEnclosesCamera=e,this._needsUpdate=!0}addEventListener(e,t){super.addEventListener(e,t)}removeEventListener(e,t){super.removeEventListener(e,t)}rotate(e,t,i=!1){return this.rotateTo(this._sphericalEnd.theta+e,this._sphericalEnd.phi+t,i)}rotateAzimuthTo(e,t=!1){return this.rotateTo(e,this._sphericalEnd.phi,t)}rotatePolarTo(e,t=!1){return this.rotateTo(this._sphericalEnd.theta,e,t)}rotateTo(e,t,i=!1){this._isUserControllingRotate=!1;let r=C0(e,this.minAzimuthAngle,this.maxAzimuthAngle),n=C0(t,this.minPolarAngle,this.maxPolarAngle);this._sphericalEnd.theta=r,this._sphericalEnd.phi=n,this._sphericalEnd.makeSafe(),this._needsUpdate=!0,i||(this._spherical.theta=this._sphericalEnd.theta,this._spherical.phi=this._sphericalEnd.phi);let s=!i||wn(this._spherical.theta,this._sphericalEnd.theta,this.restThreshold)&&wn(this._spherical.phi,this._sphericalEnd.phi,this.restThreshold);return this._createOnRestPromise(s)}dolly(e,t=!1){return this.dollyTo(this._sphericalEnd.radius-e,t)}dollyTo(e,t=!1){this._isUserControllingDolly=!1;let i=this._sphericalEnd.radius,r=C0(e,this.minDistance,this.maxDistance);if(this.colliderMeshes.length>=1){let e=this._collisionTest(),t=wn(e,this._spherical.radius);if(!(i>r)&&t)return Promise.resolve();this._sphericalEnd.radius=Math.min(r,e)}else this._sphericalEnd.radius=r;this._needsUpdate=!0,t||(this._spherical.radius=this._sphericalEnd.radius);let n=!t||wn(this._spherical.radius,this._sphericalEnd.radius,this.restThreshold);return this._createOnRestPromise(n)}zoom(e,t=!1){return this.zoomTo(this._zoomEnd+e,t)}zoomTo(e,t=!1){this._isUserControllingZoom=!1,this._zoomEnd=C0(e,this.minZoom,this.maxZoom),this._needsUpdate=!0,t||(this._zoom=this._zoomEnd);let i=!t||wn(this._zoom,this._zoomEnd,this.restThreshold);return this._createOnRestPromise(i)}pan(e,t,i=!1){return console.warn("`pan` has been renamed to `truck`"),this.truck(e,t,i)}truck(e,t,i=!1){this._camera.updateMatrix(),dh.setFromMatrixColumn(this._camera.matrix,0),fh.setFromMatrixColumn(this._camera.matrix,1),dh.multiplyScalar(e),fh.multiplyScalar(-t);let r=Nr.copy(dh).add(fh),n=an.copy(this._targetEnd).add(r);return this.moveTo(n.x,n.y,n.z,i)}forward(e,t=!1){Nr.setFromMatrixColumn(this._camera.matrix,0),Nr.crossVectors(this._camera.up,Nr),Nr.multiplyScalar(e);let i=an.copy(this._targetEnd).add(Nr);return this.moveTo(i.x,i.y,i.z,t)}elevate(e,t=!1){return Nr.copy(this._camera.up).multiplyScalar(e),this.moveTo(this._targetEnd.x+Nr.x,this._targetEnd.y+Nr.y,this._targetEnd.z+Nr.z,t)}moveTo(e,t,i,r=!1){this._isUserControllingTruck=!1;let n=Nr.set(e,t,i).sub(this._targetEnd);this._encloseToBoundary(this._targetEnd,n,this.boundaryFriction),this._needsUpdate=!0,r||this._target.copy(this._targetEnd);let s=!r||wn(this._target.x,this._targetEnd.x,this.restThreshold)&&wn(this._target.y,this._targetEnd.y,this.restThreshold)&&wn(this._target.z,this._targetEnd.z,this.restThreshold);return this._createOnRestPromise(s)}lookInDirectionOf(e,t,i,r=!1){let n=Nr.set(e,t,i).sub(this._targetEnd).normalize().multiplyScalar(-this._sphericalEnd.radius);return this.setPosition(n.x,n.y,n.z,r)}fitToBox(e,t,{cover:i=!1,paddingLeft:r=0,paddingRight:n=0,paddingBottom:s=0,paddingTop:a=0}={}){let o=[],l=e.isBox3?lE.copy(e):lE.setFromObject(e);l.isEmpty()&&(console.warn("camera-controls: fitTo() cannot be used with an empty box. Aborting"),Promise.resolve());let h=J8(this._sphericalEnd.theta,Z8),u=J8(this._sphericalEnd.phi,Z8);o.push(this.rotateTo(h,u,t));let c=Nr.setFromSpherical(this._sphericalEnd).normalize(),p=YMe.setFromUnitVectors(c,eG),d=wn(Math.abs(c.y),1);d&&p.multiply(rG.setFromAxisAngle(wO,h)),p.multiply(this._yAxisUpSpaceInverse);let f=qMe.makeEmpty();an.copy(l.min).applyQuaternion(p),f.expandByPoint(an),an.copy(l.min).setX(l.max.x).applyQuaternion(p),f.expandByPoint(an),an.copy(l.min).setY(l.max.y).applyQuaternion(p),f.expandByPoint(an),an.copy(l.max).setZ(l.min.z).applyQuaternion(p),f.expandByPoint(an),an.copy(l.min).setZ(l.max.z).applyQuaternion(p),f.expandByPoint(an),an.copy(l.max).setY(l.min.y).applyQuaternion(p),f.expandByPoint(an),an.copy(l.max).setX(l.min.x).applyQuaternion(p),f.expandByPoint(an),an.copy(l.max).applyQuaternion(p),f.expandByPoint(an),f.min.x-=r,f.min.y-=s,f.max.x+=n,f.max.y+=a,p.setFromUnitVectors(eG,c),d&&p.premultiply(rG.invert()),p.premultiply(this._yAxisUpSpace);let m=f.getSize(Nr),g=f.getCenter(an).applyQuaternion(p);if(Zf(this._camera)){let e=this.getDistanceToFitBox(m.x,m.y,m.z,i);o.push(this.moveTo(g.x,g.y,g.z,t)),o.push(this.dollyTo(e,t)),o.push(this.setFocalOffset(0,0,0,t))}else if(ph(this._camera)){let e=this._camera,r=e.right-e.left,n=e.top-e.bottom,s=i?Math.max(r/m.x,n/m.y):Math.min(r/m.x,n/m.y);o.push(this.moveTo(g.x,g.y,g.z,t)),o.push(this.zoomTo(s,t)),o.push(this.setFocalOffset(0,0,0,t))}return Promise.all(o)}fitToSphere(e,t){let i=[],r=e instanceof Cr.Sphere?tG.copy(e):Jf.createBoundingSphere(e,tG);if(i.push(this.moveTo(r.center.x,r.center.y,r.center.z,t)),Zf(this._camera)){let e=this.getDistanceToFitSphere(r.radius);i.push(this.dollyTo(e,t))}else if(ph(this._camera)){let e=this._camera.right-this._camera.left,n=this._camera.top-this._camera.bottom,s=2*r.radius,a=Math.min(e/s,n/s);i.push(this.zoomTo(a,t))}return i.push(this.setFocalOffset(0,0,0,t)),Promise.all(i)}setLookAt(e,t,i,r,n,s,a=!1){this._isUserControllingRotate=!1,this._isUserControllingDolly=!1,this._isUserControllingTruck=!1;let o=an.set(r,n,s),l=Nr.set(e,t,i);this._targetEnd.copy(o),this._sphericalEnd.setFromVector3(l.sub(o).applyQuaternion(this._yAxisUpSpace)),this.normalizeRotations(),this._needsUpdate=!0,a||(this._target.copy(this._targetEnd),this._spherical.copy(this._sphericalEnd));let h=!a||wn(this._target.x,this._targetEnd.x,this.restThreshold)&&wn(this._target.y,this._targetEnd.y,this.restThreshold)&&wn(this._target.z,this._targetEnd.z,this.restThreshold)&&wn(this._spherical.theta,this._sphericalEnd.theta,this.restThreshold)&&wn(this._spherical.phi,this._sphericalEnd.phi,this.restThreshold)&&wn(this._spherical.radius,this._sphericalEnd.radius,this.restThreshold);return this._createOnRestPromise(h)}lerpLookAt(e,t,i,r,n,s,a,o,l,h,u,c,p,d=!1){this._isUserControllingRotate=!1,this._isUserControllingDolly=!1,this._isUserControllingTruck=!1;let f=Nr.set(r,n,s),m=an.set(e,t,i);Kc.setFromVector3(m.sub(f).applyQuaternion(this._yAxisUpSpace));let g=oE.set(h,u,c),y=an.set(a,o,l);A_.setFromVector3(y.sub(g).applyQuaternion(this._yAxisUpSpace)),this._targetEnd.copy(f.lerp(g,p));let v=A_.theta-Kc.theta,T=A_.phi-Kc.phi,x=A_.radius-Kc.radius;this._sphericalEnd.set(Kc.radius+x*p,Kc.phi+T*p,Kc.theta+v*p),this.normalizeRotations(),this._needsUpdate=!0,d||(this._target.copy(this._targetEnd),this._spherical.copy(this._sphericalEnd));let b=!d||wn(this._target.x,this._targetEnd.x,this.restThreshold)&&wn(this._target.y,this._targetEnd.y,this.restThreshold)&&wn(this._target.z,this._targetEnd.z,this.restThreshold)&&wn(this._spherical.theta,this._sphericalEnd.theta,this.restThreshold)&&wn(this._spherical.phi,this._sphericalEnd.phi,this.restThreshold)&&wn(this._spherical.radius,this._sphericalEnd.radius,this.restThreshold);return this._createOnRestPromise(b)}setPosition(e,t,i,r=!1){return this.setLookAt(e,t,i,this._targetEnd.x,this._targetEnd.y,this._targetEnd.z,r)}setTarget(e,t,i,r=!1){let n=this.getPosition(Nr),s=this.setLookAt(n.x,n.y,n.z,e,t,i,r);return this._sphericalEnd.phi=C0(this.polarAngle,this.minPolarAngle,this.maxPolarAngle),s}setFocalOffset(e,t,i,r=!1){this._isUserControllingOffset=!1,this._focalOffsetEnd.set(e,t,i),this._needsUpdate=!0,r||this._focalOffset.copy(this._focalOffsetEnd);let n=!r||wn(this._focalOffset.x,this._focalOffsetEnd.x,this.restThreshold)&&wn(this._focalOffset.y,this._focalOffsetEnd.y,this.restThreshold)&&wn(this._focalOffset.z,this._focalOffsetEnd.z,this.restThreshold);return this._createOnRestPromise(n)}setOrbitPoint(e,t,i){this._camera.updateMatrixWorld(),dh.setFromMatrixColumn(this._camera.matrixWorldInverse,0),fh.setFromMatrixColumn(this._camera.matrixWorldInverse,1),A0.setFromMatrixColumn(this._camera.matrixWorldInverse,2);let r=Nr.set(e,t,i),n=r.distanceTo(this._camera.position),s=r.sub(this._camera.position);dh.multiplyScalar(s.x),fh.multiplyScalar(s.y),A0.multiplyScalar(s.z),Nr.copy(dh).add(fh).add(A0),Nr.z=Nr.z+n,this.dollyTo(n,!1),this.setFocalOffset(-Nr.x,Nr.y,-Nr.z,!1),this.moveTo(e,t,i,!1)}setBoundary(e){if(!e)return this._boundary.min.set(-1/0,-1/0,-1/0),this._boundary.max.set(1/0,1/0,1/0),void(this._needsUpdate=!0);this._boundary.copy(e),this._boundary.clampPoint(this._targetEnd,this._targetEnd),this._needsUpdate=!0}setViewport(e,t,i,r){null!==e?(this._viewport=this._viewport||new Cr.Vector4,"number"==typeof e?this._viewport.set(e,t,i,r):this._viewport.copy(e)):this._viewport=null}getDistanceToFitBox(e,t,i,r=!1){if(IO(this._camera,"getDistanceToFitBox"))return this._spherical.radius;let n=e/t,s=this._camera.getEffectiveFOV()*nE,a=this._camera.aspect;return.5*((r?n>a:nt.pointerId===e))}_findPointerByMouseButton(e){return this._activePointers.find((t=>t.mouseButton===e))}_encloseToBoundary(e,t,i){let r=t.lengthSq();if(0===r)return e;let n=an.copy(t).add(e),s=this._boundary.clampPoint(n,oE).sub(n),a=s.lengthSq();if(0===a)return e.add(t);if(a===r)return e;if(0===i)return e.add(t).add(s);{let r=1+i*a/t.dot(s);return e.add(an.copy(t).multiplyScalar(r)).add(s.multiplyScalar(1-i))}}_updateNearPlaneCorners(){if(Zf(this._camera)){let e=this._camera,t=e.near,i=e.getEffectiveFOV()*nE,r=Math.tan(.5*i)*t,n=r*e.aspect;this._nearPlaneCorners[0].set(-n,-r,0),this._nearPlaneCorners[1].set(n,-r,0),this._nearPlaneCorners[2].set(n,r,0),this._nearPlaneCorners[3].set(-n,r,0)}else if(ph(this._camera)){let e=this._camera,t=1/e.zoom,i=e.left*t,r=e.right*t,n=e.top*t,s=e.bottom*t;this._nearPlaneCorners[0].set(i,n,0),this._nearPlaneCorners[1].set(r,n,0),this._nearPlaneCorners[2].set(r,s,0),this._nearPlaneCorners[3].set(i,s,0)}}_collisionTest(){let e=1/0;if(!(this.colliderMeshes.length>=1)||IO(this._camera,"_collisionTest"))return e;let t=Nr.setFromSpherical(this._spherical).divideScalar(this._spherical.radius);iG.lookAt(zMe,t,this._camera.up);for(let i=0;i<4;i++){let r=an.copy(this._nearPlaneCorners[i]);r.applyMatrix4(iG);let n=oE.addVectors(this._target,r);RO.set(n,t),RO.far=this._spherical.radius+1;let s=RO.intersectObjects(this.colliderMeshes);0!==s.length&&s[0].distance{let t=()=>{this.removeEventListener("rest",t),e()};this.addEventListener("rest",t)})))}_addAllEventListeners(e){}_removeAllEventListeners(){}get dampingFactor(){return console.warn(".dampingFactor has been deprecated. use smoothTime (in seconds) instead."),0}set dampingFactor(e){console.warn(".dampingFactor has been deprecated. use smoothTime (in seconds) instead.")}get draggingDampingFactor(){return console.warn(".draggingDampingFactor has been deprecated. use draggingSmoothTime (in seconds) instead."),0}set draggingDampingFactor(e){console.warn(".draggingDampingFactor has been deprecated. use draggingSmoothTime (in seconds) instead.")}static createBoundingSphere(e,t=new Cr.Sphere){let i=t,r=i.center;lE.makeEmpty(),e.traverseVisible((e=>{e.isMesh&&lE.expandByObject(e)})),lE.getCenter(r);let n=0;return e.traverseVisible((e=>{if(!e.isMesh)return;let t=e,i=t.geometry.clone();if(i.applyMatrix4(t.matrixWorld),i.isBufferGeometry){let e=i.attributes.position;for(let t=0,i=e.count;t{if(this.enabled){switch(e.code){case this.keys.up:e.ctrlKey||e.metaKey||e.shiftKey?(this._rotateInternal(0,1),this._isUserControllingRotate=!0):(this._truckInternal(0,this.keyTruckSpeed,!1),this._isUserControllingTruck=!0);break;case this.keys.bottom:e.ctrlKey||e.metaKey||e.shiftKey?(this._rotateInternal(0,-1),this._isUserControllingRotate=!0):(this._truckInternal(0,-this.keyTruckSpeed,!1),this._isUserControllingTruck=!0);break;case this.keys.left:e.ctrlKey||e.metaKey||e.shiftKey?(this._rotateInternal(1,0),this._isUserControllingRotate=!0):(this._truckInternal(this.keyTruckSpeed,0,!1),this._isUserControllingTruck=!0);break;case this.keys.right:e.ctrlKey||e.metaKey||e.shiftKey?(this._rotateInternal(-1,0),this._isUserControllingRotate=!0):(this._truckInternal(-this.keyTruckSpeed,0,!1),this._isUserControllingTruck=!0)}this.dispatchEvent({type:"control"})}},this.onKeyUp=e=>{this.dispatchEvent({type:"controlend"})},this.dollySpeedBackup=this.dollySpeed,this.azimuthRotateSpeedBackup=this.azimuthRotateSpeed,this.polarRotateSpeedBackup=this.polarRotateSpeed,this.truckSpeedBackup=this.truckSpeed}get enableZoom(){return!!this.dollySpeed}set enableZoom(e){e?this.dollySpeed=this.dollySpeedBackup:(this.dollySpeedBackup=this.dollySpeed,this.dollySpeed=0)}get enableRotate(){return!!this.azimuthRotateSpeed||!!this.polarRotateSpeed}set enableRotate(e){e?(this.azimuthRotateSpeed=this.azimuthRotateSpeedBackup,this.polarRotateSpeed=this.polarRotateSpeedBackup):(this.azimuthRotateSpeedBackup=this.azimuthRotateSpeed,this.polarRotateSpeedBackup=this.polarRotateSpeed,this.azimuthRotateSpeed=0,this.polarRotateSpeed=0)}get enableTruck(){return!!this.truckSpeed}set enableTruck(e){e?this.truckSpeed=this.truckSpeedBackup:(this.truckSpeedBackup=this.truckSpeed,this.truckSpeed=0)}listenToKeyEvents(){var e,t;null==(e=this._domElement)||e.addEventListener("keydown",this.onKeyDown),null==(t=this._domElement)||t.addEventListener("keyup",this.onKeyUp)}stopListenToKeyEvents(){var e,t;null==(e=this._domElement)||e.removeEventListener("keydown",this.onKeyDown),null==(t=this._domElement)||t.removeEventListener("keyup",this.onKeyUp)}dispose(){super.dispose(),this.stopListenToKeyEvents()}},XMe=class{constructor(e,t,i,r,n){this.targetPixelHeight=100,this.canvasHeight=800,this.camera=e,this.object=i,this.targetPixelHeight=r,this.canvasHeight=n,this.adjustSize(),t.addEventListener("update",(()=>{this.adjustSize()}))}adjustSize(){let e=new Mt;if(this.object.updateMatrix(),e.expandByObject(this.object),!e)return;let t=e.max.x-e.min.x,i=this.camera.position.distanceTo(this.object.position),r=P2t(t,i,this.canvasHeight);if(Math.abs(r-this.targetPixelHeight)<5)return;let n=this.object.scale.x;n*=this.targetPixelHeight/r,this.object.scale.set(n,n,n),this.object.updateMatrix()}},P2t=(e,t,i=800,r=45)=>{let n=r*(Math.PI/180);return i*(e/(2*Math.tan(n/2)*t))},tl=class extends Aa{constructor(e){super(_t.guid()),this.needsFrustumCulled=!1,this.snapType="Dot",this.snapLineVisible=!1,this.snapType=e,this.drawSnapFunctions={Dot:this.drawDot.bind(this),Square:this.drawSquare.bind(this),Cross:this.drawCross.bind(this),Triangle:this.drawTriangle.bind(this),Perpendicular:this.drawPerpendicular.bind(this)}}setSnapLineVisible(e){this.snapLineVisible=e}draw(e,t){this.osnapInfo&&(this.snapLineVisible&&this.drawSnapLine(e,t),e.save(),e.fillStyle=tl.FILL_COLOR,e.strokeStyle=tl.LINE_COLOR,e.lineWidth=tl.LINE_WIDTH,e.beginPath(),this.drawSnapFunctions[this.snapType](e,t),MO&&this.drawDebug(e,t),e.closePath(),e.fill(),e.stroke(),e.restore())}drawDebug(e,t){null==MO||MO.forEach((i=>{let r=this.transToScreenCoord(i.start,t),n=this.transToScreenCoord(i.end,t);e.moveTo(r.x,r.y),e.lineTo(n.x,n.y)}))}drawSelect(e,t){}isPointInPath(e){return!1}drawSnapLine(e,t){e.save(),e.strokeStyle=tl.SNAP_LINE_COLOR,e.lineWidth=tl.LINE_WIDTH;let i=this.transToScreenCoord(this.osnapInfo.line.start,t),r=this.transToScreenCoord(this.osnapInfo.line.end,t);e.moveTo(i.x,i.y),e.lineTo(r.x,r.y),e.stroke(),e.restore()}drawDot(e,t){let i=this.transToScreenCoord(this.osnapInfo.point,t);e.arc(i.x,i.y,tl.SNAP_ICON_SIZE/3,0,2*Math.PI)}drawSquare(e,t){let i=this.transToScreenCoord(this.osnapInfo.point,t),r=tl.SNAP_ICON_SIZE/1.2,n=tl.SNAP_ICON_SIZE/1.2;e.rect(i.x-r/2,i.y-n/2,r,n)}drawTriangle(e,t){let i=this.transToScreenCoord(this.osnapInfo.point,t),r=tl.SNAP_ICON_SIZE/1.2/2,n=new le(0,-r).add(i),s=new le(-.87*r,r/2).add(i),a=new le(.87*r,r/2).add(i);e.moveTo(n.x,n.y),e.lineTo(s.x,s.y),e.lineTo(a.x,a.y),e.closePath()}drawCross(e,t){let i=this.transToScreenCoord(this.osnapInfo.point,t),r=tl.SNAP_ICON_SIZE/1.2/2,n=new le(-r,-r).add(i),s=new le(r,r).add(i),a=new le(r,-r).add(i),o=new le(-r,r).add(i);e.moveTo(n.x,n.y),e.lineTo(s.x,s.y),e.moveTo(a.x,a.y),e.lineTo(o.x,o.y)}drawPerpendicular(e,t){let i=this.transToScreenCoord(this.osnapInfo.point,t),r=tl.SNAP_ICON_SIZE/1.2/2;[new le(0,0).add(i),new le(-r,0).add(i),new le(0,0).add(i),new le(0,r).add(i),new le(r,r).add(i),new le(-r,r).add(i),new le(-r,r).add(i),new le(-r,-r).add(i)].forEach(((t,i)=>{0===i?e.moveTo(t.x,t.y):e.lineTo(t.x,t.y)}))}update(e){this.osnapInfo=e}getClassType(){return"SnapDrawable"}},rl=tl;rl.LINE_COLOR="rgba(255, 240, 0, 0.8)",rl.FILL_COLOR="rgba(135, 206, 250, 0.5)",rl.SNAP_LINE_COLOR="rgba(255, 240, 0, 0.3)",rl.LINE_WIDTH=2.5,rl.SNAP_ICON_SIZE=10,wr._registerDrawableClass(rl);var N2t=(e=>(e[e.None=0]="None",e[e.PointOnLine=1]="PointOnLine",e[e.StartPoint=2]="StartPoint",e[e.EndPoint=4]="EndPoint",e[e.MiddlePoint=8]="MiddlePoint",e[e.FootOfPerpendicular=16]="FootOfPerpendicular",e[e.Intersection=32]="Intersection",e))(N2t||{}),L2t=1e-5,DO=class{constructor(e){var t;this.drawableList=new Xu("snap"),this.markers={},this.activeOSnapType=0,this.snapTolerance=1,this.overlayRender=e,null==(t=this.overlayRender)||t.addDrawableList(this.drawableList),this.initOSnapMarkers()}initOSnapMarkers(){let e=new rl("Square"),t=new rl("Triangle"),i=new rl("Dot"),r=new rl("Cross"),n=new rl("Perpendicular");this.markers[2]=e,this.markers[4]=e,this.markers[8]=t,this.markers[1]=i,this.markers[32]=r,this.markers[16]=n,Object.values(this.markers).forEach((e=>{e.visible=!1,this.drawableList.addDrawable(e)}))}updateSnapTolerance(e){this.snapTolerance=e}getSnapTolerance(){return this.snapTolerance}getMarker(e){return this.markers[e]}deactivate(){this.activeOSnapType&&(this.markers[this.activeOSnapType].visible=!1),this.activeOSnapType=0}destroy(){}handleSnap(e,t,i,r){if(null==t||!t.length)return void this.activateMarker(0);let n=this.getInteractionLines(e,t);if(n){let t=this.getSnapInfo(e,n,r);return t&&0!==t.type?(this.activateMarker(t.type,i,t),t.point):void this.activateMarker(0)}this.activateMarker(0)}activateMarker(e,t=!1,i){var r;this.activeOSnapType&&(this.markers[this.activeOSnapType].visible=!1),this.activeOSnapType=e;let n=this.markers[e];n&&i&&(n.setSnapLineVisible(t),n.update(i),n.visible=!0),null==(r=this.overlayRender)||r.render()}getFootOfPerpendicular(e,t,i=L2t){let{start:r,end:n}=t,s=r.x-n.x,a=r.y-n.y,o=r.z-n.z;if(r.distanceTo(n)t.type-e.type)),n[0]}},nG=kn(ql(),1),mh=class{constructor(e,t,i){this.follow=e=>{let{x:t,y:i}=Ai.getScreenPointByEvent(e,this.parentNode);this.node.style.left=t+15+"px",this.node.style.top=i-30+"px"},this.show=()=>this.node.hasAttribute("hidden")&&this.node.removeAttribute("hidden"),this.hide=()=>!this.node.hasAttribute("hidden")&&this.node.setAttribute("hidden",""),this.destroy=()=>{this.target?this.target.removeEventListener(Mf,this.follow):document.removeEventListener(Mf,this.follow),this.parentNode.removeChild(this.node)},this.node=document.createElement("div"),this.node.id=e,t&&this.node.append(t),this.childNode=document.createElement("div"),this.target=null==i?void 0:i.target,this.parentNode=(null==i?void 0:i.parentNode)||document.body,null!=i&&i.followPointer&&(this.node.classList.add("follow-tooltip"),this.target?this.target.addEventListener(Mf,this.follow):document.addEventListener(Mf,this.follow)),this.parentNode.appendChild(this.node),(null==i||!i.showOnCreate)&&this.node.setAttribute("hidden","")}setContent(e){this.node.textContent&&(this.node.textContent=null),(0,nG.forEach)(this.node.children,(e=>{this.node.removeChild(e)})),this.node.append(e),this.node.appendChild(this.childNode)}updateChildContent(e){this.childNode.textContent&&(this.childNode.textContent=null),(0,nG.forEach)(this.childNode.children,(e=>{this.childNode.removeChild(e)})),this.childNode.append(e)}},CO=class{constructor(e){this.mouseDown=!1,this.mouseMove=!1,this.mouseDownPositionX=-1,this.mouseDownPositionY=-1,this.tempEnableRotate=!1,this.actived=!1,this.isResolvedOrRejected=!1,this.mousedown=e=>{var t,i;if(0===e.button){this.mouseDown=!0;let r=new le(e.x,e.y);this.mouseDownPositionX=r.x,this.mouseDownPositionY=r.y,null==(t=this.tooltip)||t.hide(),null==(i=this.tooltip)||i.destroy(),this.tooltip=void 0}},this.mousemove=e=>{if(!this.mouseDown)return;let t=new le(e.x,e.y);if(this.mouseDownPositionX>=0&&this.mouseDownPositionY>=0&&(Math.abs(t.x-this.mouseDownPositionX)>=5||Math.abs(t.y-this.mouseDownPositionY)>=5)){this.mouseMove=!0;let e=new le(Math.min(this.mouseDownPositionX,t.x),Math.min(this.mouseDownPositionY,t.y)),i=new le(Math.max(this.mouseDownPositionX,t.x),Math.max(this.mouseDownPositionY,t.y));this.drawRect(e,i)}},this.mouseup=e=>{if(this.mouseDown&&this.mouseMove){let t=new le(e.x,e.y),i=new le(Math.min(this.mouseDownPositionX,t.x),Math.min(this.mouseDownPositionY,t.y)),r=new le(Math.max(this.mouseDownPositionX,t.x),Math.max(this.mouseDownPositionY,t.y)),n=new rs(i,r);this.deactivate(),this.setRectDomVisible(!1),this.resolve&&(this.resolve(n),this.isResolvedOrRejected=!0)}this.mouseDown=!1,this.mouseMove=!1,this.mouseDownPositionX=-1,this.mouseDownPositionY=-1},this.viewer=e,this.input=e.getInputManager()}get viewerContainer(){return this.viewer.viewerContainer}isActived(){return this.actived}activate(){var e;if(this.isActived())return void(this.reject&&(this.reject("BoxSelectHelper is already actived!"),this.isResolvedOrRejected=!0));this.actived=!0,this.input.addEventListener("pointerdown",this.mousedown),this.input.addEventListener("pointermove",this.mousemove),this.input.addEventListener("pointerup",this.mouseup);let t=this.viewer.controls;this.tempKey=t.mouseButtons.left,this.tempEnableRotate=t.enableRotate,t.mouseButtons.left=et.NONE,t.enableRotate=!1;let i=this.viewer.translate;if(i){this.tooltip=new mh("box-select-tooltip",i("Tooltip.boxSelect"),{followPointer:!0,showOnCreate:!0,parentNode:this.viewer.widgetContainer,target:this.viewerContainer});let t=document.getElementById("box-select-tooltip");t&&(t.style.pointerEvents="none");let r=i("Tooltip.boxSelect");r&&this.tooltip&&(null==(e=this.tooltip)||e.setContent(r))}}deactivate(){var e,t;this.actived=!1,this.input.removeEventListener("pointerdown",this.mousedown),this.input.removeEventListener("pointermove",this.mousemove),this.input.removeEventListener("pointerup",this.mouseup),null==(e=this.tooltip)||e.hide(),null==(t=this.tooltip)||t.destroy(),this.tooltip=void 0,this.viewer.controls.mouseButtons.left=this.tempKey,this.viewer.controls.enableRotate=this.tempEnableRotate}drawRect(e,t){this.rectDom||(this.rectDom=document.createElement("div"),this.rectDom.style.cssText=`position: absolute;border: ${CO.BORDER_WIDTH} solid ${CO.BORDER_COLOR};`,this.viewerContainer.appendChild(this.rectDom)),this.setRectDomVisible(!0),this.rectDom.style.left=`${e.x}px`,this.rectDom.style.top=`${e.y}px`;let i=Math.abs(t.x-e.x),r=Math.abs(t.y-e.y);this.rectDom.style.width=`${i}px`,this.rectDom.style.height=`${r}px`}setRectDomVisible(e){this.rectDom&&(this.rectDom.style.display=e?"inline-block":"none")}select(){return ht(this,null,(function*(){return new Promise(((e,t)=>{this.resolve=e,this.reject=t,this.activate()}))}))}destroy(){var e;this.deactivate(),null==(e=this.rectDom)||e.remove(),this.rectDom=void 0,this.isResolvedOrRejected||this.reject&&this.reject("BoxSelectHelper is not done for some reason!")}},Qf=CO;Qf.BORDER_COLOR="#fff000",Qf.BORDER_WIDTH="2px";var $Me=kn(ql(),1),cE=class{constructor(e){this.history=[],this.step=0,this.maxCount=50,this.maxCount=e||this.maxCount}addRecord(e,t){this.history.length===this.maxCount&&this.history.shift(),this.step!==this.history.length&&this.history.splice(this.step),this.history.push({type:e,payload:(0,$Me.cloneDeep)(t)}),this.step++}undo(){if(0!==this.step)return this.step--,this.history[this.step]}redo(){if(this.step!==this.history.length)return this.step++,this.history[this.step-1]}clear(){this.history=[],this.step=0}destroy(){this.clear(),this.maxCount=0}};function Zc(e){return(Zc="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})(e)}function Kl(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function KMe(e,t){for(var i=0;ie.length)&&(t=e.length);for(var i=0,r=new Array(t);i1&&void 0!==arguments[1]?arguments[1]:{};Kl(this,e),this.init(t,i)}return Zl(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||F2t,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),r=1;r-1?e.replace(/###/g,"."):e}function n(){return!e||"string"==typeof e}for(var s="string"!=typeof t?[].concat(t):t.split(".");s.length>1;){if(n())return{};var a=r(s.shift());!e[a]&&i&&(e[a]=new i),e=Object.prototype.hasOwnProperty.call(e,a)?e[a]:{}}return n()?{}:{obj:e,k:r(s.shift())}}function eDe(e,t,i){var r=hG(e,t,Object);r.obj[r.k]=i}function B2t(e,t,i,r){var n=hG(e,t,Object),s=n.obj,a=n.k;s[a]=s[a]||[],r&&(s[a]=s[a].concat(i)),r||s[a].push(i)}function NO(e,t){var i=hG(e,t),r=i.obj,n=i.k;if(r)return r[n]}function tDe(e,t,i){var r=NO(e,i);return void 0!==r?r:NO(t,i)}function dDe(e,t,i){for(var r in t)"__proto__"!==r&&"constructor"!==r&&(r in e?"string"==typeof e[r]||e[r]instanceof String||"string"==typeof t[r]||t[r]instanceof String?i&&(e[r]=t[r]):dDe(e[r],t[r],i):e[r]=t[r]);return e}function hE(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}var k2t={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"};function G2t(e){return"string"==typeof e?e.replace(/[&<>"'\/]/g,(function(e){return k2t[e]})):e}var FO="undefined"!=typeof window&&window.navigator&&window.navigator.userAgent&&window.navigator.userAgent.indexOf("MSIE")>-1,V2t=[" ",",","?","!",";"];function z2t(e,t,i){t=t||"",i=i||"";var r=V2t.filter((function(e){return t.indexOf(e)<0&&i.indexOf(e)<0}));if(0===r.length)return!0;var n=new RegExp("(".concat(r.map((function(e){return"?"===e?"\\?":e})).join("|"),")")),s=!n.test(e);if(!s){var a=e.indexOf(i);a>0&&!n.test(e.substring(0,a))&&(s=!0)}return s}function rDe(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,r)}return i}function OO(e){for(var t=1;t2&&void 0!==arguments[2]?arguments[2]:".";if(e){if(e[t])return e[t];for(var r=t.split(i),n=e,s=0;ss+a;)a++,l=n[o=r.slice(s,s+a).join(i)];if(void 0===l)return;if(t.endsWith(o)){if("string"==typeof l)return l;if(o&&"string"==typeof l[o])return l[o]}var h=r.slice(s+a).join(i);return h?fDe(l,h,i):void 0}n=n[r[s]]}return n}}var q2t=function(e){uE(i,tm);var t=j2t(i);function i(e){var r,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{ns:["translation"],defaultNS:"translation"};return Kl(this,i),r=t.call(this),FO&&tm.call(Jc(r)),r.data=e||{},r.options=n,void 0===r.options.keySeparator&&(r.options.keySeparator="."),void 0===r.options.ignoreJSONStructure&&(r.options.ignoreJSONStructure=!0),r}return Zl(i,[{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 r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},n=void 0!==r.keySeparator?r.keySeparator:this.options.keySeparator,s=void 0!==r.ignoreJSONStructure?r.ignoreJSONStructure:this.options.ignoreJSONStructure,a=[e,t];i&&"string"!=typeof i&&(a=a.concat(i)),i&&"string"==typeof i&&(a=a.concat(n?i.split(n):i)),e.indexOf(".")>-1&&(a=e.split("."));var o=NO(this.data,a);return o||!s||"string"!=typeof i?o:fDe(this.data&&this.data[e]&&this.data[e][t],i,n)}},{key:"addResource",value:function(e,t,i,r){var n=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{silent:!1},s=this.options.keySeparator;void 0===s&&(s=".");var a=[e,t];i&&(a=a.concat(s?i.split(s):i)),e.indexOf(".")>-1&&(r=t,t=(a=e.split("."))[1]),this.addNamespaces(t),eDe(this.data,a,r),n.silent||this.emit("added",e,t,i,r)}},{key:"addResources",value:function(e,t,i){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{silent:!1};for(var n in i)("string"==typeof i[n]||"[object Array]"===Object.prototype.toString.apply(i[n]))&&this.addResource(e,t,n,i[n],{silent:!0});r.silent||this.emit("added",e,t,i)}},{key:"addResourceBundle",value:function(e,t,i,r,n){var s=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{silent:!1},a=[e,t];e.indexOf(".")>-1&&(r=i,i=t,t=(a=e.split("."))[1]),this.addNamespaces(t);var o=NO(this.data,a)||{};r?dDe(o,i,n):o=OO(OO({},o),i),eDe(this.data,a,o),s.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?OO(OO({},{}),this.getResource(e,t)):this.getResource(e,t)}},{key:"getDataByLanguage",value:function(e){return this.data[e]}},{key:"hasLanguageSomeTranslations",value:function(e){var t=this.getDataByLanguage(e);return!!(t&&Object.keys(t)||[]).find((function(e){return t[e]&&Object.keys(t[e]).length>0}))}},{key:"toJSON",value:function(){return this.data}}]),i}(),mDe={processors:{},addPostProcessor:function(e){this.processors[e.name]=e},handle:function(e,t,i,r,n){var s=this;return e.forEach((function(e){s.processors[e]&&(t=s.processors[e].process(t,i,r,n))})),t}};function iDe(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,r)}return i}function La(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:{};return Kl(this,i),r=t.call(this),FO&&tm.call(Jc(r)),U2t(["resourceStore","languageUtils","pluralResolver","interpolator","backendConnector","i18nFormat","utils"],e,Jc(r)),r.options=n,void 0===r.options.keySeparator&&(r.options.keySeparator="."),r.logger=yh.create("translator"),r}return Zl(i,[{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 r=void 0!==t.keySeparator?t.keySeparator:this.options.keySeparator,n=t.ns||this.options.defaultNS||[],s=i&&e.indexOf(i)>-1,a=!(this.options.userDefinedKeySeparator||t.keySeparator||this.options.userDefinedNsSeparator||t.nsSeparator||z2t(e,i,r));if(s&&!a){var o=e.match(this.interpolator.nestingRegexp);if(o&&o.length>0)return{key:e,namespaces:n};var l=e.split(i);(i!==r||i===r&&this.options.ns.indexOf(l[0])>-1)&&(n=l.shift()),e=l.join(r)}return"string"==typeof n&&(n=[n]),{key:e,namespaces:n}}},{key:"translate",value:function(e,t,r){var n=this;if("object"!==Zc(t)&&this.options.overloadTranslationOptionHandler&&(t=this.options.overloadTranslationOptionHandler(arguments)),t||(t={}),null==e)return"";Array.isArray(e)||(e=[String(e)]);var s=void 0!==t.returnDetails?t.returnDetails:this.options.returnDetails,a=void 0!==t.keySeparator?t.keySeparator:this.options.keySeparator,o=this.extractFromKey(e[e.length-1],t),l=o.key,h=o.namespaces,u=h[h.length-1],c=t.lng||this.language,p=t.appendNamespaceToCIMode||this.options.appendNamespaceToCIMode;if(c&&"cimode"===c.toLowerCase()){if(p){var d=t.nsSeparator||this.options.nsSeparator;return s?(f.res="".concat(u).concat(d).concat(l),f):"".concat(u).concat(d).concat(l)}return s?(f.res=l,f):l}var f=this.resolve(e,t),m=f&&f.res,g=f&&f.usedKey||l,y=f&&f.exactUsedKey||l,v=Object.prototype.toString.apply(m),T=["[object Number]","[object Function]","[object RegExp]"],x=void 0!==t.joinArrays?t.joinArrays:this.options.joinArrays,b=!this.i18nFormat||this.i18nFormat.handleAsObject,_="string"!=typeof m&&"boolean"!=typeof m&&"number"!=typeof m;if(b&&m&&_&&T.indexOf(v)<0&&("string"!=typeof x||"[object Array]"!==v)){if(!t.returnObjects&&!this.options.returnObjects){this.options.returnedObjectHandler||this.logger.warn("accessing an object - but returnObjects options is not enabled!");var E=this.options.returnedObjectHandler?this.options.returnedObjectHandler(g,m,La(La({},t),{},{ns:h})):"key '".concat(l," (").concat(this.language,")' returned an object instead of string.");return s?(f.res=E,f):E}if(a){var w="[object Array]"===v,S=w?[]:{},I=w?y:g;for(var M in m)if(Object.prototype.hasOwnProperty.call(m,M)){var A="".concat(I).concat(a).concat(M);S[M]=this.translate(A,La(La({},t),{joinArrays:!1,ns:h})),S[M]===A&&(S[M]=m[M])}m=S}}else if(b&&"string"==typeof x&&"[object Array]"===v)(m=m.join(x))&&(m=this.extendTranslation(m,e,t,r));else{var D=!1,O=!1,R=void 0!==t.count&&"string"!=typeof t.count,C=i.hasDefaultValue(t),N=R?this.pluralResolver.getSuffix(c,t.count,t):"",P=t["defaultValue".concat(N)]||t.defaultValue;!this.isValidLookup(m)&&C&&(D=!0,m=P),this.isValidLookup(m)||(O=!0,m=l);var L=t.missingKeyNoValueFallbackToKey||this.options.missingKeyNoValueFallbackToKey,F=L&&O?void 0:m,U=C&&P!==m&&this.options.updateMissing;if(O||D||U){if(this.logger.log(U?"updateKey":"missingKey",c,u,l,U?P:m),a){var k=this.resolve(l,La(La({},t),{},{keySeparator:!1}));k&&k.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 B=[],H=this.languageUtils.getFallbackCodes(this.options.fallbackLng,t.lng||this.language);if("fallback"===this.options.saveMissingTo&&H&&H[0])for(var G=0;G1&&void 0!==arguments[1]?arguments[1]:{};return"string"==typeof e&&(e=[e]),e.forEach((function(e){if(!a.isValidLookup(t)){var l=a.extractFromKey(e,o),h=l.key;i=h;var u=l.namespaces;a.options.fallbackNS&&(u=u.concat(a.options.fallbackNS));var c=void 0!==o.count&&"string"!=typeof o.count,p=c&&!o.ordinal&&0===o.count&&a.pluralResolver.shouldUseIntlApi(),d=void 0!==o.context&&("string"==typeof o.context||"number"==typeof o.context)&&""!==o.context,f=o.lngs?o.lngs:a.languageUtils.toResolveHierarchy(o.lng||a.language,o.fallbackLng);u.forEach((function(e){a.isValidLookup(t)||(s=e,!nDe["".concat(f[0],"-").concat(e)]&&a.utils&&a.utils.hasLoadedNamespace&&!a.utils.hasLoadedNamespace(s)&&(nDe["".concat(f[0],"-").concat(e)]=!0,a.logger.warn('key "'.concat(i,'" for languages "').concat(f.join(", "),'" won\'t get resolved as namespace "').concat(s,'" 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(!a.isValidLookup(t)){n=i;var s,l=[h];if(a.i18nFormat&&a.i18nFormat.addLookupKeys)a.i18nFormat.addLookupKeys(l,h,i,e,o);else{var u;c&&(u=a.pluralResolver.getSuffix(i,o.count,o));var f="_zero";if(c&&(l.push(h+u),p&&l.push(h+f)),d){var m="".concat(h).concat(a.options.contextSeparator).concat(o.context);l.push(m),c&&(l.push(m+u),p&&l.push(m+f))}}for(;s=l.pop();)a.isValidLookup(t)||(r=s,t=a.getResource(i,e,s,o))}})))}))}})),{res:t,usedKey:i,exactUsedKey:r,usedLng:n,usedNS:s}}},{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 r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return this.i18nFormat&&this.i18nFormat.getResource?this.i18nFormat.getResource(e,t,i,r):this.resourceStore.getResource(e,t,i,r)}}],[{key:"hasDefaultValue",value:function(e){var t="defaultValue";for(var i in e)if(Object.prototype.hasOwnProperty.call(e,i)&&t===i.substring(0,t.length)&&void 0!==e[i])return!0;return!1}}]),i}();function uG(e){return e.charAt(0).toUpperCase()+e.slice(1)}var $2t=function(){function e(t){Kl(this,e),this.options=t,this.supportedLngs=this.options.supportedLngs||!1,this.logger=yh.create("languageUtils")}return Zl(e,[{key:"getScriptPartFromCode",value:function(e){if(!e||e.indexOf("-")<0)return null;var t=e.split("-");return 2===t.length||(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]=uG(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]=uG(i[1].toLowerCase())),t.indexOf(i[2].toLowerCase())>-1&&(i[2]=uG(i[2].toLowerCase()))),i.join("-")}return this.options.cleanCode||this.options.lowerCaseLng?e.toLowerCase():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 r=i.formatLanguageCode(e);(!i.options.supportedLngs||i.isSupportedCode(r))&&(t=r)}})),!t&&this.options.supportedLngs&&e.forEach((function(e){if(!t){var r=i.getLanguagePartFromCode(e);if(i.isSupportedCode(r))return t=r;t=i.options.supportedLngs.find((function(e){if(0===e.indexOf(r))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,r=this.getFallbackCodes(t||this.options.fallbackLng||[],e),n=[],s=function(e){e&&(i.isSupportedCode(e)?n.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&&s(this.formatLanguageCode(e)),"languageOnly"!==this.options.load&&"currentOnly"!==this.options.load&&s(this.getScriptPartFromCode(e)),"currentOnly"!==this.options.load&&s(this.getLanguagePartFromCode(e))):"string"==typeof e&&s(this.formatLanguageCode(e)),r.forEach((function(e){n.indexOf(e)<0&&s(i.formatLanguageCode(e))})),n}}]),e}(),K2t=[{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}],Z2t={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)}},J2t=["v1","v2","v3"],aDe={zero:0,one:1,two:2,few:3,many:4,other:5};function Q2t(){var e={};return K2t.forEach((function(t){t.lngs.forEach((function(i){e[i]={numbers:t.nr,plurals:Z2t[t.fc]}}))})),e}var eNt=function(){function e(t){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};Kl(this,e),this.languageUtils=t,this.options=i,this.logger=yh.create("pluralResolver"),(!this.options.compatibilityJSON||"v4"===this.options.compatibilityJSON)&&("undefined"==typeof Intl||!Intl.PluralRules)&&(this.options.compatibilityJSON="v3",this.logger.error("Your environment seems not to be Intl API compatible, use an Intl.PluralRules polyfill. Will fallback to the compatibilityJSON v3 format handling.")),this.rules=Q2t()}return Zl(e,[{key:"addRule",value:function(e,t){this.rules[e]=t}},{key:"getRule",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(this.shouldUseIntlApi())try{return new Intl.PluralRules(e,{type:t.ordinal?"ordinal":"cardinal"})}catch(e){return}return this.rules[e]||this.rules[this.languageUtils.getLanguagePartFromCode(e)]}},{key:"needsPlural",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=this.getRule(e,t);return this.shouldUseIntlApi()?i&&i.resolvedOptions().pluralCategories.length>1:i&&i.numbers.length>1}},{key:"getPluralFormsOfKey",value:function(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return this.getSuffixes(e,i).map((function(e){return"".concat(t).concat(e)}))}},{key:"getSuffixes",value:function(e){var t=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=this.getRule(e,i);return r?this.shouldUseIntlApi()?r.resolvedOptions().pluralCategories.sort((function(e,t){return aDe[e]-aDe[t]})).map((function(e){return"".concat(t.options.prepend).concat(e)})):r.numbers.map((function(r){return t.getSuffix(e,r,i)})):[]}},{key:"getSuffix",value:function(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=this.getRule(e,i);return r?this.shouldUseIntlApi()?"".concat(this.options.prepend).concat(r.select(t)):this.getSuffixRetroCompatible(r,t):(this.logger.warn("no plural rule found for: ".concat(e)),"")}},{key:"getSuffixRetroCompatible",value:function(e,t){var i=this,r=e.noAbs?e.plurals(t):e.plurals(Math.abs(t)),n=e.numbers[r];this.options.simplifyPluralSuffix&&2===e.numbers.length&&1===e.numbers[0]&&(2===n?n="plural":1===n&&(n=""));var s=function(){return i.options.prepend&&n.toString()?i.options.prepend+n.toString():n.toString()};return"v1"===this.options.compatibilityJSON?1===n?"":"number"==typeof n?"_plural_".concat(n.toString()):s():"v2"===this.options.compatibilityJSON||this.options.simplifyPluralSuffix&&2===e.numbers.length&&1===e.numbers[0]?s():this.options.prepend&&r.toString()?this.options.prepend+r.toString():r.toString()}},{key:"shouldUseIntlApi",value:function(){return!J2t.includes(this.options.compatibilityJSON)}}]),e}();function oDe(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,r)}return i}function Qc(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:{};Kl(this,e),this.logger=yh.create("interpolator"),this.options=t,this.format=t.interpolation&&t.interpolation.format||function(e){return e},this.init(t)}return Zl(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:G2t,this.escapeValue=void 0===t.escapeValue||t.escapeValue,this.useRawValueToEscape=void 0!==t.useRawValueToEscape&&t.useRawValueToEscape,this.prefix=t.prefix?hE(t.prefix):t.prefixEscaped||"{{",this.suffix=t.suffix?hE(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?hE(t.nestingPrefix):t.nestingPrefixEscaped||hE("$t("),this.nestingSuffix=t.nestingSuffix?hE(t.nestingSuffix):t.nestingSuffixEscaped||hE(")"),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,r){var n,s,a,o=this,l=this.options&&this.options.interpolation&&this.options.interpolation.defaultVariables||{};function h(e){return e.replace(/\$/g,"$$$$")}var u=function(e){if(e.indexOf(o.formatSeparator)<0){var n=tDe(t,l,e);return o.alwaysFormat?o.format(n,void 0,i,Qc(Qc(Qc({},r),t),{},{interpolationkey:e})):n}var s=e.split(o.formatSeparator),a=s.shift().trim(),h=s.join(o.formatSeparator).trim();return o.format(tDe(t,l,a),h,i,Qc(Qc(Qc({},r),t),{},{interpolationkey:a}))};this.resetRegExp();var c=r&&r.missingInterpolationHandler||this.options.missingInterpolationHandler,p=r&&r.interpolation&&void 0!==r.interpolation.skipOnVariables?r.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables;return[{regex:this.regexpUnescape,safeValue:function(e){return h(e)}},{regex:this.regexp,safeValue:function(e){return o.escapeValue?h(o.escape(e)):h(e)}}].forEach((function(t){for(a=0;n=t.regex.exec(e);){var i=n[1].trim();if(void 0===(s=u(i)))if("function"==typeof c){var l=c(e,n,r);s="string"==typeof l?l:""}else if(r&&r.hasOwnProperty(i))s="";else{if(p){s=n[0];continue}o.logger.warn("missed to pass in variable ".concat(i," for interpolating ").concat(e)),s=""}else"string"!=typeof s&&!o.useRawValueToEscape&&(s=QMe(s));var h=t.safeValue(s);if(e=e.replace(n[0],h),p?(t.regex.lastIndex+=h.length,t.regex.lastIndex-=n[0].length):t.regex.lastIndex=0,++a>=o.maxReplaces)break}})),e}},{key:"nest",value:function(e,t){var i,r,n=this,s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},a=Qc({},s);function o(e,t){var i=this.nestingOptionsSeparator;if(e.indexOf(i)<0)return e;var r=e.split(new RegExp("".concat(i,"[ ]*{"))),n="{".concat(r[1]);e=r[0],n=(n=this.interpolate(n,a)).replace(/'/g,'"');try{a=JSON.parse(n),t&&(a=Qc(Qc({},t),a))}catch(t){return this.logger.warn("failed parsing options string in nesting for key ".concat(e),t),"".concat(e).concat(i).concat(n)}return delete a.defaultValue,e}for(a.applyPostProcessor=!1,delete a.defaultValue;i=this.nestingRegexp.exec(e);){var l=[],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(),l=u,h=!0}if((r=t(o.call(this,i[1].trim(),a),a))&&i[0]===e&&"string"!=typeof r)return r;"string"!=typeof r&&(r=QMe(r)),r||(this.logger.warn("missed to resolve ".concat(i[1]," for nesting ").concat(e)),r=""),h&&(r=l.reduce((function(e,t){return n.format(e,t,s.lng,Qc(Qc({},s),{},{interpolationkey:i[1].trim()}))}),r.trim())),e=e.replace(i[0],r),this.regexp.lastIndex=0}return e}}]),e}();function lDe(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,r)}return i}function em(e){for(var t=1;t-1){var r=e.split("(");t=r[0].toLowerCase().trim();var n=r[1].substring(0,r[1].length-1);if("currency"===t&&n.indexOf(":")<0)i.currency||(i.currency=n.trim());else if("relativetime"===t&&n.indexOf(":")<0)i.range||(i.range=n.trim());else{n.split(";").forEach((function(e){if(e){var t=cG(e.split(":")),r=t[0],n=t.slice(1).join(":");i[r.trim()]||(i[r.trim()]=n.trim()),"false"===n.trim()&&(i[r.trim()]=!1),"true"===n.trim()&&(i[r.trim()]=!0),isNaN(n.trim())||(i[r.trim()]=parseInt(n.trim(),10))}}))}}return{formatName:t,formatOptions:i}}var iNt=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};Kl(this,e),this.logger=yh.create("formatter"),this.options=t,this.formats={number:function(e,t,i){return new Intl.NumberFormat(t,i).format(e)},currency:function(e,t,i){return new Intl.NumberFormat(t,em(em({},i),{},{style:"currency"})).format(e)},datetime:function(e,t,i){return new Intl.DateTimeFormat(t,em({},i)).format(e)},relativetime:function(e,t,i){return new Intl.RelativeTimeFormat(t,em({},i)).format(e,i.range||"day")},list:function(e,t,i){return new Intl.ListFormat(t,em({},i)).format(e)}},this.init(t)}return Zl(e,[{key:"init",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{interpolation:{}},i=t.interpolation;this.formatSeparator=i.formatSeparator?i.formatSeparator:i.formatSeparator||","}},{key:"add",value:function(e,t){this.formats[e.toLowerCase().trim()]=t}},{key:"format",value:function(e,t,i,r){var n=this;return t.split(this.formatSeparator).reduce((function(e,t){var s=rNt(t),a=s.formatName,o=s.formatOptions;if(n.formats[a]){var l=e;try{var h=r&&r.formatParams&&r.formatParams[r.interpolationkey]||{},u=h.locale||h.lng||r.locale||r.lng||i;l=n.formats[a](e,u,em(em(em({},o),r),h))}catch(e){n.logger.warn(e)}return l}return n.logger.warn("there was no format function for ".concat(a)),e}),e)}}]),e}();function cDe(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,r)}return i}function uDe(e){for(var t=1;t3&&void 0!==arguments[3]?arguments[3]:{};return Kl(this,i),s=t.call(this),FO&&tm.call(Jc(s)),s.backend=e,s.store=r,s.services=n,s.languageUtils=n.languageUtils,s.options=a,s.logger=yh.create("backendConnector"),s.waitingReads=[],s.maxParallelReads=a.maxParallelReads||10,s.readingCalls=0,s.state={},s.queue=[],s.backend&&s.backend.init&&s.backend.init(n,a.backend,a),s}return Zl(i,[{key:"queueLoad",value:function(e,t,i,r){var n=this,s={},a={},o={},l={};return e.forEach((function(e){var r=!0;t.forEach((function(t){var o="".concat(e,"|").concat(t);!i.reload&&n.store.hasResourceBundle(e,t)?n.state[o]=2:n.state[o]<0||(1===n.state[o]?void 0===a[o]&&(a[o]=!0):(n.state[o]=1,r=!1,void 0===a[o]&&(a[o]=!0),void 0===s[o]&&(s[o]=!0),void 0===l[t]&&(l[t]=!0)))})),r||(o[e]=!0)})),(Object.keys(s).length||Object.keys(a).length)&&this.queue.push({pending:a,pendingCount:Object.keys(a).length,loaded:{},errors:[],callback:r}),{toLoad:Object.keys(s),pending:Object.keys(a),toLoadLanguages:Object.keys(o),toLoadNamespaces:Object.keys(l)}}},{key:"loaded",value:function(e,t,i){var r=e.split("|"),n=r[0],s=r[1];t&&this.emit("failedLoading",n,s,t),i&&this.store.addResourceBundle(n,s,i),this.state[e]=t?-1:2;var a={};this.queue.forEach((function(i){B2t(i.loaded,[n],s),aNt(i,e),t&&i.errors.push(t),0===i.pendingCount&&!i.done&&(Object.keys(i.loaded).forEach((function(e){a[e]||(a[e]={});var t=Object.keys(a[e]);t.length&&t.forEach((function(i){void 0!==t[i]&&(a[e][i]=!0)}))})),i.done=!0,i.errors.length?i.callback(i.errors):i.callback())})),this.emit("loaded",a),this.queue=this.queue.filter((function(e){return!e.done}))}},{key:"read",value:function(e,t,i){var r=this,n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:350,a=arguments.length>5?arguments[5]:void 0;return e.length?this.readingCalls>=this.maxParallelReads?void this.waitingReads.push({lng:e,ns:t,fcName:i,tried:n,wait:s,callback:a}):(this.readingCalls++,this.backend[i](e,t,(function(o,l){if(o&&l&&n<5)setTimeout((function(){r.read.call(r,e,t,i,n+1,2*s,a)}),s);else{if(r.readingCalls--,r.waitingReads.length>0){var h=r.waitingReads.shift();r.read(h.lng,h.ns,h.fcName,h.tried,h.wait,h.callback)}a(o,l)}}))):a(null,{})}},{key:"prepareLoading",value:function(e,t){var i=this,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},n=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."),n&&n();"string"==typeof e&&(e=this.languageUtils.toResolveHierarchy(e)),"string"==typeof t&&(t=[t]);var s=this.queueLoad(e,t,r,n);if(!s.toLoad.length)return s.pending.length||n(),null;s.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]:"",r=e.split("|"),n=r[0],s=r[1];this.read(n,s,"read",void 0,void 0,(function(r,a){r&&t.logger.warn("".concat(i,"loading namespace ").concat(s," for language ").concat(n," failed"),r),!r&&a&&t.logger.log("".concat(i,"loaded namespace ").concat(s," for language ").concat(n),a),t.loaded(e,r,a)}))}},{key:"saveMissing",value:function(e,t,i,r,n){var s=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,r,null,uDe(uDe({},s),{},{isUpdate:n})),e&&e[0]&&this.store.addResource(e[0],t,i,r))}}]),i}();function lNt(){return{debug:!1,initImmediate:!0,ns:["translation"],defaultNS:["translation"],fallbackLng:["dev"],fallbackNS:!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"===Zc(e[1])&&(t=e[1]),"string"==typeof e[1]&&(t.defaultValue=e[1]),"string"==typeof e[2]&&(t.tDescription=e[2]),"object"===Zc(e[2])||"object"===Zc(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,r){return e},prefix:"{{",suffix:"}}",formatSeparator:",",unescapePrefix:"-",nestingPrefix:"$t(",nestingSuffix:")",nestingOptionsSeparator:",",maxReplaces:1e3,skipOnVariables:!0}}}function hDe(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.supportedLngs&&e.supportedLngs.indexOf("cimode")<0&&(e.supportedLngs=e.supportedLngs.concat(["cimode"])),e}function pDe(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,r)}return i}function vh(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1?arguments[1]:void 0;if(Kl(this,i),e=t.call(this),FO&&tm.call(Jc(e)),e.options=hDe(r),e.services={},e.logger=yh,e.modules={external:[]},hNt(Jc(e)),n&&!e.isInitialized&&!r.isClone){if(!e.options.initImmediate)return e.init(r,n),O0(e,Jc(e));setTimeout((function(){e.init(r,n)}),0)}return e}return Zl(i,[{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"==typeof t&&(i=t,t={}),!t.defaultNS&&t.ns&&("string"==typeof t.ns?t.defaultNS=t.ns:t.ns.indexOf("translation")<0&&(t.defaultNS=t.ns[0]));var r=lNt();function n(e){return e?"function"==typeof e?new e:e:null}if(this.options=vh(vh(vh({},r),this.options),hDe(t)),"v1"!==this.options.compatibilityAPI&&(this.options.interpolation=vh(vh({},r.interpolation),this.options.interpolation)),void 0!==t.keySeparator&&(this.options.userDefinedKeySeparator=t.keySeparator),void 0!==t.nsSeparator&&(this.options.userDefinedNsSeparator=t.nsSeparator),!this.options.isClone){var s;this.modules.logger?yh.init(n(this.modules.logger),this.options):yh.init(null,this.options),this.modules.formatter?s=this.modules.formatter:"undefined"!=typeof Intl&&(s=iNt);var a=new $2t(this.options);this.store=new q2t(this.options.resources,this.options);var o=this.services;o.logger=yh,o.resourceStore=this.store,o.languageUtils=a,o.pluralResolver=new eNt(a,{prepend:this.options.pluralSeparator,compatibilityJSON:this.options.compatibilityJSON,simplifyPluralSuffix:this.options.simplifyPluralSuffix}),s&&(!this.options.interpolation.format||this.options.interpolation.format===r.interpolation.format)&&(o.formatter=n(s),o.formatter.init(o,this.options),this.options.interpolation.format=o.formatter.format.bind(o.formatter)),o.interpolator=new tNt(this.options),o.utils={hasLoadedNamespace:this.hasLoadedNamespace.bind(this)},o.backendConnector=new oNt(n(this.modules.backend),o.resourceStore,o,this.options),o.backendConnector.on("*",(function(t){for(var i=arguments.length,r=new Array(i>1?i-1:0),n=1;n1?i-1:0),n=1;n0&&"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");var h=["getResource","hasResourceBundle","getResourceBundle","getDataByLanguage"];h.forEach((function(t){e[t]=function(){var i;return(i=e.store)[t].apply(i,arguments)}}));var u=["addResource","addResources","addResourceBundle","removeResourceBundle"];u.forEach((function(t){e[t]=function(){var i;return(i=e.store)[t].apply(i,arguments),e}}));var c=P_(),p=function(){var t=function(t,r){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(r),i(t,r)};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?p():setTimeout(p,0),c}},{key:"loadResources",value:function(e){var t=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:PO,r=i,n="string"==typeof e?e:this.language;if("function"==typeof e&&(r=e),!this.options.resources||this.options.partialBundledLanguages){if(n&&"cimode"===n.toLowerCase())return r();var s=[],a=function(e){e&&t.services.languageUtils.toResolveHierarchy(e).forEach((function(e){s.indexOf(e)<0&&s.push(e)}))};if(n)a(n);else{var o=this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);o.forEach((function(e){return a(e)}))}this.options.preload&&this.options.preload.forEach((function(e){return a(e)})),this.services.backendConnector.load(s,this.options.ns,(function(e){!e&&!t.resolvedLanguage&&t.language&&t.setResolvedLanguage(t.language),r(e)}))}else r(null)}},{key:"reloadResources",value:function(e,t,i){var r=P_();return e||(e=this.languages),t||(t=this.options.ns),i||(i=PO),this.services.backendConnector.reload(e,t,(function(e){r.resolve(),i(e)})),r}},{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&&mDe.addPostProcessor(e),"formatter"===e.type&&(this.modules.formatter=e),"3rdParty"===e.type&&this.modules.external.push(e),this}},{key:"setResolvedLanguage",value:function(e){if(e&&this.languages&&!(["cimode","dev"].indexOf(e)>-1))for(var t=0;t-1)&&this.store.hasLanguageSomeTranslations(i)){this.resolvedLanguage=i;break}}}},{key:"changeLanguage",value:function(e,t){var i=this;this.isLanguageChangingTo=e;var r=P_();this.emit("languageChanging",e);var n=function(e){i.language=e,i.languages=i.services.languageUtils.toResolveHierarchy(e),i.resolvedLanguage=void 0,i.setResolvedLanguage(e)},s=function(s){!e&&!s&&i.services.languageDetector&&(s=[]);var a="string"==typeof s?s:i.services.languageUtils.getBestMatchFromCodes(s);a&&(i.language||n(a),i.translator.language||i.translator.changeLanguage(a),i.services.languageDetector&&i.services.languageDetector.cacheUserLanguage(a)),i.loadResources(a,(function(e){!function(e,s){s?(n(s),i.translator.changeLanguage(s),i.isLanguageChangingTo=void 0,i.emit("languageChanged",s),i.logger.log("languageChanged",s)):i.isLanguageChangingTo=void 0,r.resolve((function(){return i.t.apply(i,arguments)})),t&&t(e,(function(){return i.t.apply(i,arguments)}))}(e,a)}))};return e||!this.services.languageDetector||this.services.languageDetector.async?!e&&this.services.languageDetector&&this.services.languageDetector.async?this.services.languageDetector.detect(s):s(e):s(this.services.languageDetector.detect()),r}},{key:"getFixedT",value:function(e,t,i){var r=this,n=function e(t,n){var s;if("object"!==Zc(n)){for(var a=arguments.length,o=new Array(a>2?a-2:0),l=2;l1&&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 r=this.resolvedLanguage||this.languages[0],n=!!this.options&&this.options.fallbackLng,s=this.languages[this.languages.length-1];if("cimode"===r.toLowerCase())return!0;var a=function(e,i){var r=t.services.backendConnector.state["".concat(e,"|").concat(i)];return-1===r||2===r};if(i.precheck){var o=i.precheck(this,a);if(void 0!==o)return o}return!!(this.hasResourceBundle(r,e)||!this.services.backendConnector.backend||this.options.resources&&!this.options.partialBundledLanguages||a(r,e)&&(!n||a(s,e)))}},{key:"loadNamespaces",value:function(e,t){var i=this,r=P_();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){r.resolve(),t&&t(e)})),r):(t&&t(),Promise.resolve())}},{key:"loadLanguages",value:function(e,t){var i=P_();"string"==typeof e&&(e=[e]);var r=this.options.preload||[],n=e.filter((function(e){return r.indexOf(e)<0}));return n.length?(this.options.preload=r.concat(n),this.loadResources((function(e){i.resolve(),t&&t(e)})),i):(t&&t(),Promise.resolve())}},{key:"dir",value:function(e){if(e||(e=this.resolvedLanguage||(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","ckb"].indexOf(this.services.languageUtils.getLanguagePartFromCode(e))>-1||e.toLowerCase().indexOf("-arab")>1?"rtl":"ltr"}},{key:"cloneInstance",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:PO,n=vh(vh(vh({},this.options),t),{isClone:!0}),s=new i(n),a=["store","services","language"];return a.forEach((function(t){s[t]=e[t]})),s.services=vh({},this.services),s.services.utils={hasLoadedNamespace:s.hasLoadedNamespace.bind(s)},s.translator=new sDe(s.services,s.options),s.translator.on("*",(function(e){for(var t=arguments.length,i=new Array(t>1?t-1:0),r=1;r0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0;return new LO(e,t)}));var Fa=LO.createInstance();Fa.createInstance=LO.createInstance;var BSr=Fa.createInstance,kSr=Fa.init,GSr=Fa.loadResources,VSr=Fa.reloadResources,zSr=Fa.use,jSr=Fa.changeLanguage,WSr=Fa.getFixedT,Th=Fa.t,qSr=Fa.exists,YSr=Fa.setDefaultNamespace,XSr=Fa.hasLoadedNamespace,$Sr=Fa.loadNamespaces,KSr=Fa.loadLanguages,pG=Fa,pE=(e=>(e.BaseViewer="BaseViewer",e.BimViewer="BimViewer",e.DxfViewer="DxfViewer",e.VRViewer="BaseViewer",e))(pE||{}),rm=class extends Cs{constructor(e){super(),this.name="BaseViewer",this.translate=this.initLocalization(),this.height=0,this.width=0,this.enableOverlayRenderer=!0,this.viewerCfg=e,this.initLogLevel(),this.initLocalization(),xi.isBrowser&&!e.context&&(this.initViewerContainer(),this.initWidgetContainer())}initLogLevel(){let e=this.viewerCfg.logLevel;e&&lpe(e)}initLocalization(){var e;let t=(null==(e=this.viewerCfg)?void 0:e.language)||"cn";return pG.init({lng:t,debug:!1,resources:{en:{translation:Dpe},cn:{translation:Cpe}}}),pG.t}initViewerContainer(){let e=document.getElementById(this.viewerCfg.containerId);e||(ne.error("[BaseViewer] containerId:",this.viewerCfg.containerId,"is not found in dom tree! will append to document body"),e=document.body);let t=document.createElement("div");t.classList.add("viewer-container"),t.style.cssText="width: 100%; height: 100%; position: absolute; overflow: hidden;",e.appendChild(t),this.width=t.clientWidth,this.height=t.clientHeight,this.viewerContainer=t}initWidgetContainer(){var e;let t=document.createElement("div");t.classList.add("widget-container"),null==(e=this.viewerContainer)||e.appendChild(t),this.widgetContainer=t}destroy(){var e,t,i;null==(e=this.widgetContainer)||e.remove(),this.widgetContainer=void 0,null==(t=this.viewerContainer)||t.remove(),this.viewerContainer=void 0,null==(i=this.scene)||i.clear(),this.scene=void 0,this.renderer&&(this.renderer.domElement.remove(),this.renderer.clear(),this.renderer.dispose(),this.renderer.forceContextLoss(),this.renderer=void 0),this.overlayRender&&(this.overlayRender.destroy(),this.overlayRender=void 0),this.camera=void 0,this.controls&&(this.controls.dispose(),this.controls=void 0),this.groundPlane&&(this.groundPlane.geometry.dispose(),this.groundPlane.clear(),this.groundPlane=void 0)}getInputManager(){return this.inputManager}getViewConfig(){return this.viewerCfg}enableRender(){}getRaycaster(){}getRaycastableObjectsByMouse(e){return[]}getBBox(){}getActiveSection(){}flyTo(e,t){}is3d(){return!0}getMeasurementManager(){}getMarkupManager(){}deactivateMeasurement(){}setMeasurementVisibility(e,t){return!1}screenshot(e){return ht(this,null,(function*(){}))}showStats(){}hideStats(){}},dE=class{constructor(e){this.viewer=e,this.boxSelectHelper=new Qf(e)}get viewerContainer(){return this.viewer.viewerContainer}get camera(){return this.viewer.camera}get raycaster(){return this.viewer.getRaycaster()}activate(){var e;null==(e=this.boxSelectHelper)||e.select().then((e=>{this.handleZoomToRect(e.min,e.max)}))}deactivate(){var e;null==(e=this.boxSelectHelper)||e.deactivate(),this.boxSelectHelper=void 0}pickPositionByScreenPoint(e){let t=Ai.screenPoint2NdcPoint(e,this.camera,this.viewerContainer);this.raycaster.setFromCamera(t,this.camera);let i=[];"BimViewer"===this.viewer.name?i=this.viewer.getRaycastableObjectsByMouse({clientX:e.x,clientY:e.y}):"DxfViewer"===this.viewer.name&&(i=[this.viewer.groundPlane]);let r=this.raycaster.intersectObjects(i)||[];if(r.length>0)return r[0].point}handleZoomToRect(e,t){let i=this.pickPositionByScreenPoint(e),r=this.pickPositionByScreenPoint(t);if(i&&r){let e=new A(Math.min(i.x,r.x),Math.min(i.y,r.y),Math.min(i.z,r.z)),t=new A(Math.max(i.x,r.x),Math.max(i.y,r.y),Math.max(i.z,r.z)),n=new Mt(e,t);this.viewer.zoomToBBox(n)}}destroy(){this.deactivate()}},HO=class extends cE{constructor(e,t){super(t),this.manager=e}undo(){let e=super.undo();switch(null==e?void 0:e.type){case"Add":{let t=this.manager.getMarkupById(e.payload.id);t&&this.manager.removeMarkup(t,!1)}break;case"Remove":{let t=this.manager.createMarkup(e.payload);t&&this.manager.addMarkup(t,!1)}break;case"Update":{let{from:t,to:i}=e.payload,r=this.manager.getMarkupById(t.id);r&&this.manager.updateMarkup(r,t,!1)}}return e}redo(){let e=super.redo();switch(null==e?void 0:e.type){case"Add":{let t=this.manager.createMarkup(e.payload);t&&this.manager.addMarkup(t,!1)}break;case"Remove":{let t=this.manager.getMarkupById(e.payload.id);t&&this.manager.removeMarkup(t,!1)}break;case"Update":{let{from:t,to:i}=e.payload,r=this.manager.getMarkupById(i.id);r&&this.manager.updateMarkup(r,i,!1)}}return e}},gDe=new A,N_=class extends Cs{constructor(e,t){var i;super(),this.drawableList=new Xu("markup"),this.lineWidth=2,this.lineColor="#ff0000",this.fillColor="rgba(255, 0, 0, 0.3)",this.fontSize=20,this.mouseDown=!1,this.mouseDownPositionX=void 0,this.mouseDownPositionY=void 0,this.isDrawing=!1,this.tempPoints=[],this.actived=!1,this.undoRedoHelper=new HO(this),this.mousedown=e=>{var t;let i=this.pickThreejsPositionByMouse(e);if(this.mouseDownPositionX=i.x,this.mouseDownPositionY=i.y,0===e.button&&(this.mouseDown=!0),2===e.button&&(this.creatingShape&&this.tempPoints.length<2?(this.removeMarkup(this.creatingShape,!1),this.creatingShape=void 0):null==(t=this.creatingShape)||t.update(this.tempPoints),this.isDrawing&&this.endDraw(this.creatingShape)),this.selectedShape&&(this.selectedShape.selected=!1,this.selectedShape=void 0,this.render()),!this.isDrawing){let e=this.drawableList.getDrawableByPosition(i);e&&(this.selectedShape=e,e.selected=!0,this.render(),this.textInput&&(this.textInput.style.display="none"))}if(this.isCreateTextMode()&&this.mouseDown&&!this.selectedShape&&((!this.textInitialPosition||this.textInput&&0===this.textInput.value.length)&&(this.textInitialPosition=i.clone()),this.addInput(e.clientX,e.clientY)),this.isCreateLineMode()&&this.mouseDown&&!this.selectedShape){if(this.tempPoints.length>0){let e=this.tempPoints[0];if(gDe.subVectors(e,i).length(){let t=this.pickThreejsPositionByMouse(e);if(this.selectedShape){if(this.mouseDown&&void 0!==this.mouseDownPositionX&&void 0!==this.mouseDownPositionY){this.isEditing()||(this.initialDataForEditing=this.selectedShape.getData());let e=t.x-this.mouseDownPositionX,i=t.y-this.mouseDownPositionY;this.selectedShape.translate(e,i),this.render(),this.mouseDownPositionX=t.x,this.mouseDownPositionY=t.y}}else{if(this.isCreateDotMode())return;if(this.mouseDown&&this.isCreateShapeMode()&&void 0!==this.mouseDownPositionX&&void 0!==this.mouseDownPositionY){let e=new A(this.mouseDownPositionX,this.mouseDownPositionY,0);if(!this.creatingShape){let i=this.creatingShape=this.drawShape(e,t);i&&this.addMarkup(i,!1)}this.creatingShape.update([e,t]),this.isDrawing=!0,this.render()}if(this.isCreateLineMode()&&this.tempPoints.length>0&&this.isDrawing){if(!this.creatingShape){let e=this.creatingShape=this.drawLine([...this.tempPoints,t]);e&&this.addMarkup(e,!1)}let e=this.tempPoints[0];gDe.subVectors(e,t).length(){this.mouseDown=!1,this.selectedShape&&this.isEditing()&&this.endEdit(this.selectedShape),this.isCreateShapeMode()&&this.isDrawing&&this.endDraw(this.creatingShape)},this.keydown=e=>{"Delete"===e.code?this.selectedShape&&(this.viewer.hasEventListener("BeforeRemoveMarkup")?this.viewer.dispatchEvent("BeforeRemoveMarkup",this.confirmToRemove.bind(this)):(this.removeMarkup(this.selectedShape),this.viewer.dispatchEvent("MarkupRemoved",this.selectedShape.getData()),this.selectedShape=void 0)):e.ctrlKey&&"KeyZ"===e.code?this.undo():e.ctrlKey&&"KeyY"===e.code?this.redo():"Escape"===e.code&&this.cancelDraw(this.creatingShape)},this.viewer=e,this.inputManager=t,this.overlayRender=this.viewer.overlayRender,null==(i=this.overlayRender)||i.addDrawableList(this.drawableList)}get viewerCanvas(){var e;return null==(e=this.viewer.renderer)?void 0:e.domElement}get camera(){return this.viewer.camera}get raycaster(){return this.viewer.getRaycaster()}setMarkupVisibility(e,t){let i=this.drawableList.getDrawables().get(e);return!!i&&(i.visible=t,!0)}setMarkupsVisibility(e){this.drawableList.getDrawables().forEach((t=>t.visible=e))}clearAll(){this.drawableList.clear(),this.textInput&&(this.textInput.style.display="none"),this.undoRedoHelper.clear(),this.isDrawing&&this.reset(),this.render()}isMarkupActive(){return this.actived}activate(){this.actived=!0,this.inputManager.addEventListener("pointerdown",this.mousedown),this.inputManager.addEventListener("pointermove",this.mousemove),this.inputManager.addEventListener("pointerup",this.mouseup),this.inputManager.addEventListener("keydown",this.keydown);let e=this.viewer.controls;this.tempKey=e.mouseButtons.left,e.mouseButtons.left=et.NONE,this.tempArrowKeys=e.keys,e.keys={},this.render()}deactivate(){this.actived=!1,this.inputManager.removeEventListener("pointerdown",this.mousedown),this.inputManager.removeEventListener("pointermove",this.mousemove),this.inputManager.removeEventListener("pointerup",this.mouseup),this.inputManager.removeEventListener("keydown",this.keydown),this.viewer.controls.mouseButtons.left=this.tempKey,this.viewer.controls.keys=this.tempArrowKeys,this.textInput&&this.textInput.remove(),this.textInput=void 0,this.textInitialPosition=void 0,this.mouseDown=!1,this.tempPoints=[],this.isDrawing=!1,this.creatingShape=void 0,this.selectedShape&&(this.selectedShape.selected=!1,this.selectedShape=void 0)}getActiveMarkupType(){return this.type}setDrawType(e){this.type=e,this.reset()}setLineWidth(e){this.lineWidth=e}getLineWidth(){return this.lineWidth}setLineColor(e){this.lineColor=e}getLineColor(){return this.lineColor}setFillColor(e){this.fillColor=e}getFillColor(){return this.fillColor}setFontSize(e){this.fontSize=e}getFontSize(){return this.fontSize}pickPositionByScreenPoint(e){let t=new A,i=Ai.screenPoint2NdcPoint(e,this.camera,this.viewerCanvas);this.raycaster.setFromCamera(i,this.camera);let r=this.viewer.scene,n=this.raycaster.intersectObject(this.viewer.groundPlane||r)||[];return n.length>0&&t.copy(n[0].point),t}pickThreejsPositionByMouse(e){return this.pickPositionByScreenPoint(new le(e.x,e.y))}confirmToRemove(e){this.selectedShape&&e&&(this.removeMarkup(this.selectedShape),this.viewer.dispatchEvent("MarkupRemoved",this.selectedShape.getData()),this.selectedShape=void 0)}isEditing(){return!!this.initialDataForEditing}endEdit(e){let t=e.getData();this.undoRedoHelper.addRecord("Update",{from:this.initialDataForEditing,to:t}),this.initialDataForEditing=void 0,this.viewer.dispatchEvent("MarkupUpdated",t)}endDraw(e){if(e){let t=e.getData();this.undoRedoHelper.addRecord("Add",t),this.viewer.dispatchEvent("MarkupAdded",t)}this.reset()}cancelDraw(e){e&&this.removeMarkup(e,!1),this.reset()}reset(){this.textInput&&(this.textInput.style.display="none",this.textInput.value=""),this.textInitialPosition=void 0,this.tempPoints=[],this.isDrawing=!1,this.creatingShape=void 0,this.mouseDownPositionX=void 0,this.mouseDownPositionY=void 0,this.selectedShape&&(this.selectedShape.selected=!1,this.selectedShape=void 0),this.render()}render(){var e;null==(e=this.overlayRender)||e.render()}addMarkup(e,t=!0){this.drawableList.addDrawable(e),this.render(),t&&this.undoRedoHelper.addRecord("Add",e.getData())}updateMarkup(e,t,i=!0){this.drawableList.updateDrawable(e,t),this.render(),i&&this.undoRedoHelper.addRecord("Update",e.getData())}removeMarkup(e,t=!0){this.drawableList.removeDrawable(e),this.render(),t&&this.undoRedoHelper.addRecord("Remove",e.getData())}removeMarkupById(e,t=!0){let i=this.getMarkupById(e);return!!i&&(this.drawableList.removeDrawable(i),this.render(),t&&this.undoRedoHelper.addRecord("Remove",i.getData()),!0)}createMarkup(e){return wr.createDrawable(e)}getMarkupById(e){return this.drawableList.getDrawableById(e)}getMarkupData(){return this.drawableList.getDrawableDatas()}setMarkupData(e){this.drawableList.clear(),this.drawableList.setDrawableDatas(e),this.render()}isCreateLineMode(){return["PolylineMarkup","CloudLineMarkup"].includes(this.type)}isCreateDotMode(){return["DotMarkup"].includes(this.type)}isCreateTextMode(){return["TextMarkup"].includes(this.type)}isCreateShapeMode(){return["XMarkup","RectMarkup","CloudRectMarkup","CircleMarkup","EllipseMarkup","ArrowMarkup","DotMarkup"].includes(this.type)}drawShape(e,t){let i=[[e.x,e.y]];return t&&i.push([t.x,t.y]),wr.createDrawable({id:_t.guid(),lineWidth:this.lineWidth,lineColor:this.lineColor,fillColor:this.fillColor,type:this.type,points:i})}drawLine(e){return wr.createDrawable({id:_t.guid(),lineWidth:this.lineWidth,lineColor:this.lineColor,fillColor:this.fillColor,type:this.type,points:e.map((e=>[e.x,e.y]))})}drawText(e,t){return wr.createDrawable({id:_t.guid(),lineWidth:this.lineWidth,lineColor:this.lineColor,fillColor:this.fillColor,fontSize:this.fontSize*this.overlayRender.getPixelSize(1,this.camera),type:this.type,text:t,points:[[e.x,e.y]]})}addInput(e,t){var i;if(!this.textInput){let e,t=document.createElement("textarea");t.style.cssText=`\n position: fixed;\n border: 1px solid red;\n background: transparent;\n outline: none;\n resize: none;\n overflow: hidden;\n z-index: 1000;\n box-sizing: content-box;\n padding: 0px 2px;\n color: ${this.lineColor}`,t.setAttribute("wrap","off"),t.onkeydown=e=>{if("Enter"===e.key){let e=parseInt(t.style.height);t.style.height=`${e+this.fontSize}px`}this.isDrawing=!0},t.onkeyup=t=>{var i;let r=t.target.value,n=(null==(i=this.overlayRender)?void 0:i.measureTextLength(r,`${this.fontSize}px Arial`))||0;n>50&&(e&&clearTimeout(e),e=setTimeout((()=>{t.target.style.width=`${n+4}px`}),0))},t.onchange=e=>{console.log(e)},t.onblur=e=>{let t=e.target.value;if(t.length>0&&this.textInitialPosition){let e=this.creatingShape=this.drawText(this.textInitialPosition,t);e.setTolerance(this.overlayRender.getPixelSize(1,this.camera)),this.addMarkup(e,!1),this.endDraw(this.creatingShape)}},null==(i=this.viewer.viewerContainer)||i.appendChild(t),this.textInput=t}setTimeout((()=>{this.textInput.blur(),this.textInput.focus()}),0),this.textInput.style.width="50px",this.textInput.style.height=`${this.fontSize}px`,this.textInput.style.lineHeight=`${this.fontSize}px`,this.textInput.style.fontSize=`${this.fontSize}px`,this.textInput.style.color=this.lineColor,this.textInput.style.display="inline-block",this.textInput.style.left=e+4+"px",this.textInput.style.top=t-this.fontSize+"px"}undo(){let e=this.undoRedoHelper.undo();if(e){let t={Add:"MarkupRemoved",Update:"MarkupUpdated",Remove:"MarkupAdded"};this.viewer.dispatchEvent(t[e.type],e.payload.to?e.payload.to:e.payload)}}redo(){let e=this.undoRedoHelper.redo();if(e){let t={Add:"MarkupAdded",Update:"MarkupUpdated",Remove:"MarkupRemoved"};this.viewer.dispatchEvent(t[e.type],e.payload.to?e.payload.to:e.payload)}}clearUndoRedo(){this.undoRedoHelper.clear()}destroy(){this.deactivate(),this.clearAll()}},vDe=new A,P0=class extends Aa{constructor(e,t){super(e),this.lineSegments=[],this.boxes=t,this.lineColor="red",this.lineWidth=2,this.calculateCloudLineSegments(t)}calculateCloudLineSegments(e){var t;for(let i=0;it.visible=e)),this.viewer.enableRender()}},Yn=kn(ql(),1);function fE(e){return{all:e=e||new Map,on:function(t,i){var r=e.get(t);r?r.push(i):e.set(t,[i])},off:function(t,i){var r=e.get(t);r&&(i?r.splice(r.indexOf(i)>>>0,1):e.set(t,[]))},emit:function(t,i){var r=e.get(t);r&&r.slice().map((function(e){e(i)})),(r=e.get("*"))&&r.slice().map((function(e){e(t,i)}))}}}var UO=(e=>(e[e.ClickEvent=1]="ClickEvent",e[e.Popup=2]="Popup",e[e.SubMenu=3]="SubMenu",e[e.Switch=4]="Switch",e))(UO||{}),L_=(e=>(e.HomeView="HomeView",e.OrthoMode="OrthoMode",e.Measure="Measure",e.MeasureDistance="MeasureDistance",e.MeasureArea="MeasureArea",e.MeasureAngle="MeasureAngle",e.MeasureCoordinate="MeasureCoordinate",e.MeasureClear="MeasureClear",e.Markup="Markup",e.MarkupArrow="Arrow",e.MarkupRect="Rect",e.MarkupCloudRect="CloudRect",e.MarkupPolyLine="PolyLine",e.MarkupCloudLine="CloudLine",e.MarkupEllipse="Ellipse",e.MarkupCircle="Circle",e.MarkupDot="Dot",e.MarkupText="Text",e.MarkupX="X",e.MarkupStrokeStyle="StrokeStyle",e.MarkupLineWidth="LineWidth",e.MarkupLineWidth2="LineWidth2",e.MarkupLineWidth5="LineWidth5",e.MarkupLineWidth10="LineWidth10",e.MarkupFontSize="FontSize",e.MarkupFontSize14="FontSize14",e.MarkupFontSize18="FontSize18",e.MarkupFontSize24="FontSize24",e.MarkupClear="MarkupClear",e.MarkupQuit="MarkupQuit",e.Section="Section",e.SectionBox="SectionBox",e.SectionPlane="SectionPlane",e.SectionAxis="SectionAxis",e.BimTree="BimTree",e.Viewpoint="Viewpoint",e.Annotation="Annotation",e.Property="Property",e.Settings="Settings",e.Compared="Compared",e.QuitCompare="QuitCompare",e.Fullscreen="FullScreen",e.SceneClear="SceneClear",e.Layers="Layers",e.ZoomToRectangle="ZoomToRectangle",e.Screenshot="GetScreenshot",e))(L_||{}),TDe=[["HomeView","OrthoMode","FullScreen","ZoomToRectangle","GetScreenshot"],["Measure","Markup","Section"],["BimTree","Viewpoint","Annotation","Property","Compared","QuitCompare","Layers"],["Settings"]],Eh=class{constructor(e,t,i=[...TDe]){this.bimViewer=e,this.menuConfig=t,this.groupConfig=i,this.visible=!0,this.menuList=new Map,this.keydown=e=>{var t,i;if(this.visible&&"Escape"===e.code){if(null!=(t=this.bimViewer.getMeasurementManager())&&t.isMeasurementMeasuring()||null!=(i=this.bimViewer.getMarkupManager())&&i.isMarkupActive())return;this.clearActive()}},this.init(),window.addEventListener("keydown",this.keydown,!1)}init(){var e;let t=document.createElement("div");t.classList.add("toolbar"),this.groupConfig.forEach(((e,i)=>{let r=document.createElement("div");r.classList.add("toolbar-group");let n=document.createElement("div");n.classList.add("toolbar-group-division"),e.forEach((e=>{let t=(0,Yn.get)(this.menuConfig,e);if(t&&!1!==t.visible){let i=this.createToolbarMenu(this.bimViewer,e,t);r.appendChild(i.element)}})),r.hasChildNodes()&&(i&&t.appendChild(n),t.appendChild(r))})),this.element=t,null==(e=this.bimViewer.widgetContainer)||e.appendChild(t),t.oncontextmenu=e=>{e.preventDefault()}}clearActive(){if(this.activateMenuId){let e=this.menuList.get(this.activateMenuId);null==e||e.setActive(!1),this.activateMenuId=void 0}}createToolbarMenu(e,t,i,r){let n=new dG(e,this,t,i,r);if(this.menuList.set(t,n),i.children){let t=document.createElement("div");t.classList.add("toolbar-sub-menu");let r=document.createElement("div");r.classList.add("toolbar-sub-menu-list"),t.appendChild(r),(0,Yn.forIn)(i.children,((t,i)=>{if(t&&!1!==t.visible){let s=this.createToolbarMenu(e,i,t,n);r.appendChild(s.element)}})),n.element.appendChild(t)}return n}updateMenu(e,t){(0,Yn.assign)(this.menuConfig[e],t),this.refresh()}updateMenus(e){(0,Yn.forEach)(e,(({menuId:e,config:t})=>{(0,Yn.assign)(this.menuConfig[e],t)})),this.refresh()}addMenu(e,t,i){if((0,Yn.keys)(this.menuConfig).includes(e))ne.error("[Toolbar]",e,"exists.");else{if((0,Yn.assign)(this.menuConfig,{[e]:t}),i){let[t,r]=i;if(t>this.groupConfig.length-1)this.groupConfig=(0,Yn.concat)(this.groupConfig,[[e]]);else{let i=this.groupConfig[t];this.groupConfig[t]=r>i.length-1?(0,Yn.concat)(i,e):(0,Yn.concat)((0,Yn.take)(i,r),e,(0,Yn.takeRight)(i,i.length-r))}}else this.groupConfig=(0,Yn.concat)(this.groupConfig,[[e]]);this.refresh()}}refresh(){this.element&&this.element.remove(),this.element=void 0,this.menuList.clear(),this.init()}show(){this.element&&(this.element.style.display=""),this.visible=!0}hide(){this.element&&(this.element.style.display="none"),this.visible=!1}destroy(){this.element&&this.element.remove(),this.element=void 0,this.menuList.clear(),window.removeEventListener("keydown",this.keydown,!1)}},dG=class{constructor(e,t,i,r,n){this.bimViewer=e,this.toolbar=t,this.menuId=i,this.eventBus=fE(),this.active=r.defaultActive||!1,this.element=r.customElement&&r.customElement(e,this.menuId,r)||this.createButton(e,this.menuId,r),this.eventBus.on("activeChange",(t=>{t?(this.element.classList.add("active"),(0,Yn.forEach)(r.mutexIds,(e=>{var t;let i=null==(t=this.toolbar)?void 0:t.menuList.get(e);i&&i.active&&i.setActive(!1)})),r.onActive&&r.onActive(e)):(this.element.classList.remove("active"),r.onDeactive&&r.onDeactive(e)),this.element.firstChild instanceof HTMLElement&&LC(this.element.firstChild.classList,r.icon,this.active),n&&n.setActive(t)})),this.element.onclick=t=>{switch(t.stopPropagation(),r.type){case 1:r.onClick&&r.onClick(e,this.toolbar,t);break;case 4:r.onClick&&r.onClick(e,this.toolbar,t),this.active=!this.active,this.toolbar.activateMenuId=this.menuId,this.eventBus.emit("activeChange",this.active)}}}createButton(e,t,i){let r=document.createElement("div");r.id=t,r.classList.add("toolbar-menu"),i.defaultActive&&r.classList.add("active"),i.children&&r.classList.add("toolbar-parent-menu");let{default:n="icon-new",iconFont:s=uo}=i.icon;return r.innerHTML=`
`,r.title=Th(i.menuName),r.innerHTML+=`${r.title}`,r}setActive(e){this.active=e,this.eventBus.emit("activeChange",this.active)}},EDe={Arrow:{menuName:"Toolbar.markupArrow",icon:{default:"icon-arrow",iconFont:"iconfont"},type:4,onActive:e=>{e.activateMarkup("ArrowMarkup")},onDeactive(e){e.deactivateMarkup()},mutexIds:["Rect","CloudRect","PolyLine","CloudLine","Ellipse","Circle","Dot","Text","X"]},Rect:{defaultActive:!1,menuName:"Toolbar.markupRect",icon:{default:"icon-rectangle",iconFont:"iconfont"},type:4,onActive:e=>{e.activateMarkup("RectMarkup")},onDeactive(e){e.deactivateMarkup()},mutexIds:["Arrow","CloudRect","PolyLine","CloudLine","Ellipse","Circle","Dot","Text","X"]},CloudRect:{defaultActive:!0,menuName:"Toolbar.markupCloudRect",icon:{default:"icon-cloud",iconFont:"iconfont"},type:4,onActive:e=>{e.activateMarkup("CloudRectMarkup")},onDeactive(e){e.deactivateMarkup()},mutexIds:["Rect","Arrow","PolyLine","CloudLine","Ellipse","Circle","Dot","Text","X"]},PolyLine:{menuName:"Toolbar.markupPolyLine",icon:{default:"icon-polyline",iconFont:"iconfont"},type:4,onActive:e=>{e.activateMarkup("PolylineMarkup")},onDeactive(e){e.deactivateMarkup()},mutexIds:["Rect","Arrow","CloudRect","CloudLine","Ellipse","Circle","Dot","Text","X"]},CloudLine:{menuName:"Toolbar.markupCloudLine",icon:{default:"icon-cloud-segment",iconFont:"iconfont"},type:4,onActive:e=>{e.activateMarkup("CloudLineMarkup")},onDeactive(e){e.deactivateMarkup()},mutexIds:["Rect","CloudRect","PolyLine","Arrow","Ellipse","Circle","Dot","Text","X"]},Ellipse:{menuName:"Toolbar.markupEllipse",icon:{default:"icon-oval",iconFont:"iconfont"},type:4,onActive:e=>{e.activateMarkup("EllipseMarkup")},onDeactive(e){e.deactivateMarkup()},mutexIds:["Rect","CloudRect","PolyLine","CloudLine","Arrow","Circle","Dot","Text","X"]},Circle:{menuName:"Toolbar.markupCircle",icon:{default:"icon-round",iconFont:"iconfont"},type:4,onActive:e=>{e.activateMarkup("CircleMarkup")},onDeactive(e){e.deactivateMarkup()},mutexIds:["Rect","CloudRect","PolyLine","CloudLine","Ellipse","Arrow","Dot","Text","X"]},Dot:{menuName:"Toolbar.markupDot",icon:{default:"icon-round",iconFont:"iconfont"},type:4,onActive:e=>{e.activateMarkup("DotMarkup")},onDeactive(e){e.deactivateMarkup()},mutexIds:["Rect","CloudRect","PolyLine","CloudLine","Ellipse","Arrow","Circle","Text","X"]},X:{menuName:"Toolbar.markupX",icon:{default:"icon-cross",iconFont:"iconfont"},type:4,onActive:e=>{e.activateMarkup("XMarkup")},onDeactive(e){e.deactivateMarkup()},mutexIds:["Rect","CloudRect","PolyLine","CloudLine","Ellipse","Circle","Dot","Arrow","Text"]},Text:{menuName:"Toolbar.markupText",icon:{default:"icon-text",iconFont:"iconfont"},type:4,onActive:e=>{e.activateMarkup("TextMarkup")},onDeactive(e){e.deactivateMarkup()},mutexIds:["Rect","CloudRect","PolyLine","CloudLine","Ellipse","Circle","Dot","Arrow","X"]},StrokeStyle:{menuName:"Toolbar.markupStroke",icon:{default:"icon-color-red",iconFont:"iconfont"},type:1,onClick:(e,t,i)=>{let r=i.target.parentElement,n=null==r?void 0:r.firstElementChild,s=document.createElement("input");s.setAttribute("type","color"),s.style.position="absolute",s.style.left=`${i.x}px`,s.style.top=`${i.y}px`,s.value=e.getMarkupLineColor(),s.click(),s.oninput=t=>{let i=t.target.value;e.setMarkupLineColor(i),n.style.color=i}}},LineWidth:{menuName:"Toolbar.markupLineWidth",icon:{default:"icon-line",iconFont:"iconfont"},customElement(e,t,i){let r=document.createElement("div");return r.id=t,r.classList.add("toolbar-menu"),i.children&&r.classList.add("toolbar-parent-menu"),r.title=Th(i.menuName),r.innerHTML+=`${r.title}`,r},type:3,children:{LineWidth2:{defaultActive:!0,icon:{default:"icon-line-2",iconFont:"iconfont"},onClick:e=>{e.setMarkupLineWidth(2)},type:4,menuName:"Toolbar.markupLineWidth2",mutexIds:["LineWidth5","LineWidth10"]},LineWidth5:{icon:{default:"icon-line-3",iconFont:"iconfont"},onClick:e=>{e.setMarkupLineWidth(3)},type:4,menuName:"Toolbar.markupLineWidth5",mutexIds:["LineWidth2","LineWidth10"]},LineWidth10:{icon:{default:"icon-line-4",iconFont:"iconfont"},onClick:e=>{e.setMarkupLineWidth(4)},type:4,menuName:"Toolbar.markupLineWidth10",mutexIds:["LineWidth2","LineWidth5"]}}},FontSize:{menuName:"Toolbar.markupFontSize",icon:{default:"icon-font"},customElement(e,t,i){let r=document.createElement("div");return r.id=t,r.classList.add("toolbar-menu"),i.children&&r.classList.add("toolbar-parent-menu"),r.title=Th(i.menuName),r.innerHTML+=`${r.title}`,r},type:3,children:{FontSize14:{icon:{default:"icon-font14",iconFont:"iconfont"},onClick:e=>{e.setMarkupFontSize(14)},type:4,menuName:"",mutexIds:["FontSize18","FontSize24"]},FontSize18:{defaultActive:!0,icon:{default:"icon-font18",iconFont:"iconfont"},onClick:e=>{e.setMarkupFontSize(18)},type:4,menuName:"",mutexIds:["FontSize14","FontSize24"]},FontSize24:{icon:{default:"icon-font24",iconFont:"iconfont"},onClick:e=>{e.setMarkupFontSize(24)},type:4,menuName:"",mutexIds:["FontSize14","FontSize18"]}}},MarkupClear:{icon:{default:"icon-eraser",iconFont:"iconfont"},onClick:e=>{ne.info("[Toolbar]","Clear Markup",e),e.clearMarkups()},type:1,menuName:"Toolbar.clearMarkup"},MarkupQuit:{icon:{default:""},customElement(e,t,i){let r=document.createElement("div");return r.id=t,r.classList.add("toolbar-menu"),i.children&&r.classList.add("toolbar-parent-menu"),r.title=Th(i.menuName),r.innerHTML+=`${r.title}`,r},onClick:(e,t)=>{var i;e.deactivateMarkup(),t.destroy(),null==(i=e.toolbar)||i.show()},type:1,menuName:"Toolbar.quitMarkup"}},pNt=[["Arrow","Rect","CloudRect","PolyLine","Ellipse","Circle","Text","StrokeStyle","FontSize","MarkupClear","MarkupQuit"]],BO=class extends Eh{constructor(e,t,i=[...pNt]){super(e,t,i),this.keydown=()=>{}}},mE=class{constructor(e,t,i=document.body){this.container=i,this.isFollowing=!1,this.diffX=0,this.diffY=0,this.start=e=>{this.isFollowing=!0,this.diffX=e.clientX-this.element.offsetLeft,this.diffY=e.clientY-this.element.offsetTop},this.stop=()=>{this.isFollowing=!1},this.follow=e=>{if(!this.isFollowing)return;let t=e.clientX-this.diffX,i=e.clientY-this.diffY;this.element.style.left=t+"px",this.element.style.top=i+"px"},this.element=document.createElement("div"),this.element.id=e,this.element.classList.add("pop-panel");let r=document.createElement("div");r.classList.add("pop-panel-header"),r.append(t),this.element.appendChild(r),this.header=r;let n=document.createElement("div");n.classList.add("pop-panel-body"),this.element.appendChild(n),this.body=n,r.addEventListener(AB,this.start),r.addEventListener(CB,this.stop),document.body.addEventListener(Mf,this.follow),this.container.appendChild(this.element)}destroy(){document.body.removeEventListener(Mf,this.follow),this.element.removeEventListener(AB,this.start),this.element.removeEventListener(CB,this.stop),this.element.remove()}},Ha=new A(1,0,0),im=new A(0,1,0),nm=new A(0,0,1),bDe=new A(0,1,0),F_=new Be,fG=2,eu=class extends ur{constructor(e=Ha){super(),this.redMaterial=new lr({color:16711680,depthTest:!1}),this.greenMaterial=new lr({color:65280,depthTest:!1}),this.blueMaterial=new lr({color:255,depthTest:!1}),this.highlightMaterial=new lr({color:16776960,depthTest:!1}),this.pickableMaterial=new lr({color:9807270,depthTest:!1}),this.initIgnoreClipMaterial(),this.initOrUpdateByAxis(e)}initIgnoreClipMaterial(){[this.redMaterial,this.greenMaterial,this.blueMaterial,this.highlightMaterial,this.pickableMaterial].forEach((e=>{e.onBeforeCompile=function(e,t){e.fragmentShader=e.fragmentShader.replace("#include ","").replace("#include ",""),e.vertexShader=e.vertexShader.replace("#include ","").replace("#include ","")}}))}setDirection(e){let t=new Hr;t.setFromUnitVectors(Ha,e),this.applyQuaternion(t)}initOrUpdateByAxis(e){this.clear(),[{actionType:"TranslateX",direction:Ha,material:this.redMaterial},{actionType:"TranslateY",direction:im,material:this.greenMaterial},{actionType:"TranslateZ",direction:nm,material:this.blueMaterial}].forEach((t=>{let{actionType:i,direction:r,material:n}=t,s=this.createTranslateGizmo(i,r,fG,0===r.angleTo(e)?n:this.pickableMaterial);this.add(s)})),[{actionType:"RotateX",direction:Ha,material:this.redMaterial,degree:90},{actionType:"RotateY",direction:im,material:this.greenMaterial,degree:90},{actionType:"RotateZ",direction:nm,material:this.blueMaterial,degree:90}].forEach((t=>{let{actionType:i,direction:r,material:n,degree:s}=t;if(0!==r.angleTo(e)){let e=this.createRotateGizmo(i,r,fG,n,s);this.add(e)}})),this.createSphere(1,this.pickableMaterial)}createTranslateGizmo(e,t,i,r){let n=t.angleTo(bDe),s=bDe.clone().cross(t);F_.makeRotationAxis(s,n);let a=new Rl(i/5,i/5,20*i),o=10*i;a.translate(0,o,0),a.applyMatrix4(F_);let l=new Rl(0,i,3*i),h=2*o;l.translate(0,h,0),l.applyMatrix4(F_);let u=zo([l,a]),c=new rt(u,r);return c.userData.actionType=e,r===this.pickableMaterial&&c.layers.set(11),c}createRotateGizmo(e,t,i,r,n){let s=new A(0,0,1),a=t.clone().cross(s),o=t.angleTo(s);F_.makeRotationAxis(a,o);let l=new Cp(12*i,i/5,8,36,_r.degToRad(n));l.applyMatrix4(F_);let h=new rt(l,r);return h.userData.actionType=e,h}createSphere(e,t){let i=new ro(e,32,16),r=new rt(i,t);r.layers.set(11),this.add(r)}setActiveAxis(e){this.initOrUpdateByAxis(e)}createHoverRotateObjectByAxis(e){let t=Ha;switch(e){case"RotateX":t=Ha;break;case"RotateY":t=im;break;case"RotateZ":t=nm}return this.createRotateGizmo("",t,fG,this.highlightMaterial,360)}setActive(e,t){var i;let r=t.userData.actionType;["RotateX","RotateY","RotateZ"].includes(r)?e?(this.hoverObject=this.createHoverRotateObjectByAxis(r),this.add(this.hoverObject),t.visible=!1):(null==(i=this.hoverObject)||i.removeFromParent(),t.visible=!0,this.hoverObject=void 0):e?(this.originalMaterial=t.material,t.material=this.highlightMaterial):this.originalMaterial&&(t.material=this.originalMaterial)}adjustSize(e){let t=new A;this.getWorldPosition(t);let i=e.position,r=1;e instanceof qi?r=(e.top-e.bottom)/e.zoom:e instanceof Vr&&(r=t.distanceTo(i)*Math.min(1.9*Math.tan(Math.PI*e.fov/360)/e.zoom,7)),this.scale.set(1,1,1).multiplyScalar(r/180)}},sm=class{constructor(e,t){if(this.mouseDown=!1,this.lastWorldPos=new A,this.mouseMoved=!1,this.dragStarted=!1,this.refrencePlane=new bi,this.isShowSectionPlane=!1,this.mousedown=e=>{0===e.button&&this.camera&&this.selectedObject&&(this.mouseDown=!0)},this.mousemove=e=>{if(this.dragStarted)this.updateRaycasterByMouse(e),this.onDragMove(e);else{this.activateSelectedObject(!1);let t=this.getIntersections(e);t?(this.selectedObject=t.object,this.activateSelectedObject(!0),this.mouseDown&&(this.dragStarted||(this.dragStarted=!0,this.onDragStart(e)))):this.selectedObject=void 0}this.viewer.enableRender()},this.mouseup=e=>{0===e.button&&(this.mouseDown&&this.dragStarted&&(this.onDragEnd(e),this.dragStarted=!1),this.mouseDown=!1,this.selectedObject=void 0)},this.keydown=e=>{"Escape"===e.code&&this.deactivate()},!(e.camera&&e.renderer&&e.controls&&e.scene))throw new Error("Invalid bimViewer!");this.viewer=e,this.inputManager=t,this.scene=e.scene,this.renderer=e.renderer;let i=e.getBBox();if(!i)throw new Error("Need to set sectionBox first!");this.sectionBox=i.clone()}get canvas(){var e;return null==(e=this.viewer.renderer)?void 0:e.domElement}get isActive(){return!!this.raycaster}get camera(){return this.viewer.camera}get controls(){return this.viewer.controls}setGlobalClippingEnable(e){this.clipPlanes&&(e?(this.renderer.localClippingEnabled=!0,this.renderer.clippingPlanes=this.clipPlanes):(this.renderer.localClippingEnabled=!1,this.renderer.clippingPlanes=[]))}activate(){this.inputManager.addEventListener("pointerdown",this.mousedown),this.inputManager.addEventListener("pointermove",this.mousemove),this.inputManager.addEventListener("pointerup",this.mouseup),this.inputManager.addEventListener("keydown",this.keydown),this.raycaster=this.viewer.getRaycaster()}deactivate(){var e;this.inputManager.removeEventListener("pointerdown",this.mousedown),this.inputManager.removeEventListener("pointermove",this.mousemove),this.inputManager.removeEventListener("pointerup",this.mouseup),this.inputManager.removeEventListener("keydown",this.keydown),this.setGlobalClippingEnable(!1),null==(e=this.selectedObject)||e.removeFromParent(),this.selectedObject=void 0,this.dragStarted=!1,this.raycaster=void 0}getIntersections(e){if(!this.raycaster)return;this.updateRaycasterByMouse(e);let t=this.raycaster.intersectObjects(this.getIntersectObjects())||[];return t.find((e=>e.object&&e.object.parent instanceof eu))||t[0]}updateRaycasterByMouse(e){if(!this.raycaster)return;let t=new le(e.x,e.y),i=Ai.screenPoint2NdcPoint(t,this.camera,this.canvas);this.raycaster&&this.raycaster.layers.disable(11),this.raycaster.setFromCamera(i,this.camera)}destroy(){this.deactivate()}},IDe=new Mt,_De=new Hr,kO=class extends rt{constructor(e,t){super(),this.vertices=[],this.actionType=e,this.geometry=new lt,this.vertices=t,this.geometry.setFromPoints(t),this.geometry.setIndex([0,1,2,0,2,3]),this.material=new lr({depthTest:!1,color:kO.normalPlaneColor,transparent:!0,opacity:.1,side:gi}),this.createIgnoreClipMateriasl(this.material),this.geometry.computeVertexNormals(),this.edge=this.createEdge(t),this.add(this.edge)}createIgnoreClipMateriasl(e){e.onBeforeCompile=function(e,t){e.fragmentShader=e.fragmentShader.replace("#include ","").replace("#include ",""),e.vertexShader=e.vertexShader.replace("#include ","").replace("#include ","")}}createEdge(e){let t=new lt;t.setFromPoints(e),t.setIndex([0,1,1,2,2,3,3,0]);let i=new vr({color:kO.normalLineColor});this.createIgnoreClipMateriasl(i);let r=new Ir(t,i);return r.layers.set(11),r}update(e){this.geometry.setFromPoints(e),this.geometry.computeBoundingSphere(),this.geometry.computeVertexNormals(),this.edge.geometry.setFromPoints(e),this.vertices=e}rotatePlane(e,t){let i=this.getPlaneCenter();_De.setFromAxisAngle(e,t),this.vertices=this.vertices.map((e=>e.sub(i).applyQuaternion(_De).add(i))),this.update(this.vertices)}setDirection(e){let t=new Hr;t.setFromUnitVectors(Ha,e);let i=this.getPlaneCenter();this.vertices=this.vertices.map((e=>e.sub(i).applyQuaternion(t).add(i))),this.update(this.vertices)}getPlaneNormal(){let[e,t,i]=this.vertices,r=new A;return hn.getNormal(e,t,i,r),r}setActive(e){this.material.opacity=e?.2:.1}getPlaneCenter(){IDe.setFromPoints(this.vertices);let e=new A;return IDe.getCenter(e),e}},on=kO;on.normalPlaneColor=new je(0,.855,.718),on.activePlaneColor=new je(1,1,0),on.normalLineColor=16777215;var SDe=(e=>(e.X="X",e.Y="Y",e.Z="Z",e))(SDe||{}),GO=class extends sm{constructor(e,t){super(e,t),this.activeAxis="X",this.center=new A,this.sectionBox.getCenter(this.center),this.axisInfoMap={X:{normal:new A(1,0,0)},Y:{normal:new A(0,1,0)},Z:{normal:new A(0,0,1)}},this.viewer.addEventListener("RenderAfter",(()=>{var e;this.isActive&&(null==(e=this.gizmo)||e.adjustSize(this.camera))}))}activate(){super.activate(),this.setActiveAxis("X")}deactivate(){var e,t;super.deactivate(),null==(e=this.planeMesh)||e.removeFromParent(),null==(t=this.gizmo)||t.removeFromParent(),this.setGlobalClippingEnable(!1),this.planeMesh=void 0,this.gizmo=void 0}resetSection(){var e,t;null==(e=this.planeMesh)||e.removeFromParent(),null==(t=this.gizmo)||t.removeFromParent(),this.setGlobalClippingEnable(!1),this.planeMesh=void 0,this.gizmo=void 0,this.setActiveAxis("X")}setActiveAxis(e){this.activeAxis=e,this.initOrUpdateGizmo(),this.initOrUpdateSectionPlane(),this.initOrUpdateClipPlane(),this.setGlobalClippingEnable(!0),this.viewer.enableRender()}setSectionVisible(e){this.gizmo&&this.planeMesh&&(this.gizmo.visible=e,this.planeMesh.visible=e),this.isShowSectionPlane=e,this.viewer.enableRender()}initOrUpdateClipPlane(){switch(this.activeAxis){case"X":this.clipPlane=new bi(new A(-1,0,0),this.center.x);break;case"Y":this.clipPlane=new bi(new A(0,-1,0),this.center.y);break;case"Z":this.clipPlane=new bi(new A(0,0,-1),this.center.z)}this.clipPlane&&(this.clipPlanes=[this.clipPlane])}initOrUpdateSectionPlane(){var e;let t=new A;this.sectionBox.getSize(t);let i=t.length(),r=this.center,n=(new Mt).setFromCenterAndSize(r,new A(i,i,i)),{min:s,max:a}=n;switch(null==(e=this.planeMesh)||e.removeFromParent(),this.activeAxis){case"X":this.planeMesh=new on("X",[new A(r.x,a.y,s.z),new A(r.x,a.y,a.z),new A(r.x,s.y,a.z),new A(r.x,s.y,s.z)]);break;case"Y":this.planeMesh=new on("Y",[new A(a.x,r.y,s.z),new A(s.x,r.y,s.z),new A(s.x,r.y,a.z),new A(a.x,r.y,a.z)]);break;case"Z":this.planeMesh=new on("Z",[new A(a.x,a.y,r.z),new A(s.x,a.y,r.z),new A(s.x,s.y,r.z),new A(a.x,s.y,r.z)])}this.planeMesh&&this.scene.add(this.planeMesh),this.viewer.enableRender()}initOrUpdateGizmo(){var e,t;null==(e=this.gizmo)||e.removeFromParent();let i=this.axisInfoMap[this.activeAxis].normal;this.gizmo=new eu,this.gizmo.setDirection(i),this.sectionBox.getCenter(this.gizmo.position),null==(t=this.scene)||t.add(this.gizmo)}onDragStart(e){var t;if(this.selectedObject instanceof on)return;this.controls&&this.dragStarted&&this.selectedObject&&!(this.selectedObject instanceof on)&&(this.controls.enableRotate=!1),ne.info("[AxisPlaneSection] onDragStart:",e);let i=new A;this.sectionBox.getCenter(i),this.refrencePlane.setFromNormalAndCoplanarPoint(this.camera.getWorldDirection(this.refrencePlane.normal),i),null==(t=this.raycaster)||t.ray.intersectPlane(this.refrencePlane,this.lastWorldPos)}onDragMove(e){var t,i,r;if(!this.lastWorldPos||!this.selectedObject||!this.clipPlane||!this.planeMesh||!this.gizmo||this.selectedObject&&this.selectedObject instanceof on)return;let n=new A;null==(t=this.raycaster)||t.ray.intersectPlane(this.refrencePlane,n);let s=this.selectedObject.userData.actionType,a=(new A).subVectors(this.lastWorldPos,this.center).normalize(),o=(new A).subVectors(n,this.center).normalize(),l=(new A).subVectors(n,this.lastWorldPos).projectOnVector(Ha.clone().applyQuaternion(this.gizmo.quaternion)),h=a.angleTo(o),u=(new A).crossVectors(a,o),c=new A;this.sectionBox.getSize(c);let p,d=Math.max(c.x,c.y,c.z);switch(s){case"TranslateX":case"TranslateY":case"TranslateZ":p=(new A).addVectors(this.gizmo.position,l),this.sectionBox.clone().setFromCenterAndSize(this.center,new A(d,d,d)).containsPoint(p)&&(null==(i=this.gizmo)||i.position.add(l),null==(r=this.planeMesh)||r.position.add(l));break;case"RotateX":{let e=Ha.clone().applyQuaternion(this.gizmo.quaternion);u.dot(e)<0&&(h=-h),this.gizmo.rotateX(h),this.planeMesh.rotatePlane(e,h)}break;case"RotateY":{let e=im.clone().applyQuaternion(this.gizmo.quaternion);u.dot(e)<0&&(h=-h),this.gizmo.rotateY(h),this.planeMesh.rotatePlane(e,h)}break;case"RotateZ":{let e=nm.clone().applyQuaternion(this.gizmo.quaternion);u.dot(e)<0&&(h=-h),this.gizmo.rotateZ(h),this.planeMesh.rotatePlane(e,h)}}this.clipPlane.setFromNormalAndCoplanarPoint(this.planeMesh.getPlaneNormal().negate(),this.gizmo.position),this.lastWorldPos=n}onDragEnd(e){this.selectedObject instanceof on||(this.controls&&!this.controls.enableRotate&&(this.controls.enableRotate=!0),this.activateSelectedObject(!1),this.dragStarted=!1,this.selectedObject=void 0,ne.info("[AxisPlaneSection] onDragEnd:",e))}getIntersectObjects(){return this.planeMesh&&this.gizmo?[this.planeMesh,this.gizmo]:[]}activateSelectedObject(e){this.selectedObject&&(this.selectedObject instanceof on?this.selectedObject.setActive(e):this.selectedObject.parent instanceof eu&&this.selectedObject.parent.setActive(e,this.selectedObject))}},VO=class extends mE{constructor(e){super("axis-section-pop-panel","轴向剖切",e.widgetContainer),this.axis="x",this.isVisible=!0,this.keydown=e=>{"Escape"===e.code&&this.destroy()},this.section=e.getActiveSection(),this.createGroupSelectLayout(),this.addGroupSelectItems(),this.createActiveSelectLayout(),this.addActiveItems(),window.addEventListener("keydown",this.keydown)}destroy(){super.destroy(),window.removeEventListener("keydown",this.keydown)}createGroupSelectLayout(){let e=document.createElement("div");e.classList.add("pop-panel-group-select"),this.body.appendChild(e),this.groupSelectNode=e}addGroupSelectItems(){let e=(e,t,i=!1)=>{let r=document.createElement("div");return r.classList.add("pop-panel-item"),r.setAttribute("itemName",e),r.append(t),i&&r.classList.add("active"),this.groupSelectNode&&this.groupSelectNode.appendChild(r),r},t=(e,t)=>s=>{s.stopPropagation(),this.activeItem!==e&&(i.classList.remove("active"),r.classList.remove("active"),n.classList.remove("active"),this.activeItem=e,t.classList.add("active"),this.section.setActiveAxis(e))},i=e("X","X",!0);i.onclick=t("X",i);let r=e("Y","Y");r.onclick=t("Y",r);let n=e("Z","Z");n.onclick=t("Z",n)}createActiveSelectLayout(){let e=document.createElement("div");e.classList.add("pop-panel-active-select"),this.body.appendChild(e),this.activeSelectNode=e}addActiveItems(){let e=(e,t)=>{let i=document.createElement("i");i.classList.add(uo),i.classList.add(t),e.innerHTML="",e.appendChild(i)},t=((t,i,r="")=>{let n=document.createElement("div");return n.classList.add("pop-panel-item"),i&&n.setAttribute("title",i),n.setAttribute("itemName",t),n.setAttribute("isActive","false"),e(n,r),n})("visible","隐藏剖切面","icon-hidesectionplane");t.onclick=()=>{this.isVisible=!this.isVisible,this.isVisible?(e(t,"icon-hidesectionplane"),t.setAttribute("title","隐藏剖切面")):(e(t,"icon-showsectionplane"),t.setAttribute("title","显示剖切面")),this.section.setSectionVisible(this.isVisible)}}},zO=class extends mE{constructor(e){super("pick-section-pop-panel","拾取面剖切",e.widgetContainer),this.isVisible=!0,this.enabled=!0,this.keydown=e=>{"Escape"===e.code&&this.destroy()},this.section=e.getActiveSection(),this.createActiveSelectLayout(),this.addActiveItems(),window.addEventListener("keydown",this.keydown)}destroy(){super.destroy(),window.removeEventListener("keydown",this.keydown)}createActiveSelectLayout(){let e=document.createElement("div");e.classList.add("pop-panel-active-select"),this.body.appendChild(e),this.activeSelectNode=e}addActiveItems(){let e=(e,t)=>{let i=document.createElement("i");i.classList.add(uo),i.classList.add(t),e.innerHTML="",e.appendChild(i)},t=(t,i,r="")=>{let n=document.createElement("div");return n.classList.add("pop-panel-item"),i&&n.setAttribute("title",i),n.setAttribute("itemName",t),n.setAttribute("isActive","false"),e(n,r),n},i=t("visible","隐藏剖切面","icon-hidesectionplane");i.onclick=()=>{this.enabled&&(this.isVisible=!this.isVisible,this.isVisible?(e(i,"icon-hidesectionplane"),i.setAttribute("title","隐藏剖切面")):(e(i,"icon-showsectionplane"),i.setAttribute("title","显示剖切面")),this.section.setSectionVisible(this.isVisible))},this.activeSelectNode&&this.activeSelectNode.appendChild(i),this.visibleNode=i;let r=t("reset","重置","icon-reset");r.onclick=t=>{t.stopPropagation(),this.enabled&&(this.isVisible=!0,e(i,"icon-hidesectionplane"),i.setAttribute("title","隐藏剖切面"),this.section.resetSection())},this.activeSelectNode&&this.activeSelectNode.appendChild(r),this.resetNode=r}enable(){this.enabled=!0,this.visibleNode&&this.visibleNode.classList.remove("disable")}disable(){this.enabled=!1,this.visibleNode&&this.visibleNode.classList.add("disable")}},Ql=(e=>(e.Distance="Distance",e.Area="Area",e.Angle="Angle",e.Coordinate="Coordinate",e))(Ql||{}),tu=class extends Cs{constructor(e,t,i,r,n){super(),this.mouseMoved=!1,this.mouseDowned=!1,this.mouseDownPositionX=-1,this.mouseDownPositionY=-1,this.tempEdgeMaterial=new vr({color:16711680}),this.snapPoint=void 0,this.mousedown=e=>{this.mouseDownPositionX=e.x,this.mouseDownPositionY=e.y,this.mouseMoved=!1,this.mouseDowned=!0},this.mousemove=e=>{if(this.lastMoveEvent=e,this.mouseDownPositionX>=0&&this.mouseDownPositionY>=0&&(Math.abs(e.x-this.mouseDownPositionX)>5||Math.abs(e.y-this.mouseDownPositionY)>5)&&(this.mouseMoved=!0),this.mouseDowned)return;let t=this.getIntersections(e);if(!t.length)return;let i=Date.now();this.handleSnap(t),ne.debug(`[BaseMeasurement] this.handleSnap costs ${(Date.now()-i)/1e3}s`),this.onMouseMove(this.snapPoint),this.viewer.enableRender()},this.mouseup=e=>{this.mouseDowned=!1,this.mouseMoved||this.onMouseClick(e)},this.dblclick=()=>{ne.info("[Measure] Double clicked")},this.keydown=e=>{if("Enter"===e.code){let e={x:0,y:0,pageX:0,pageY:0,clientX:0,clientY:0,deltaX:0,deltaY:0,button:2,movementX:0,movementY:0,deltaMode:0,pointerId:0,timestamp:0,buttons:0,pointerType:"mouse",altKey:!1,ctrlKey:!1,shiftKey:!1,metaKey:!1};this.onMouseClick(e)}else"Escape"===e.code&&this.cancel()},this.getIntersections=e=>{if(!this.raycaster)return[];this.raycaster&&this.raycaster.layers.disable(10);let t=this.viewer.getRaycastableObjectsByMouse(e);ne.debug(`[BaseMeasurement] The count of raycastable object is ${t.length}`,t);let i=Date.now(),r=this.raycaster.intersectObjects(t,!0)||[];return ne.debug(`[BaseMeasurement] this.raycaster.intersectObjects costs ${(Date.now()-i)/1e3}s`),this.renderer.clippingPlanes.length>0&&(r=r.filter((e=>this.renderer.clippingPlanes.every((function(t){return t.distanceToPoint(e.point)>0}))))),r},this.type=e,this.viewer=t,this.inputManager=i,this.drawList=r,this.osnapHelper=n}get canvas(){var e;return null==(e=this.viewer.renderer)?void 0:e.domElement}get camera(){return this.viewer.camera}get renderer(){return this.viewer.renderer}get isActive(){return!!this.raycaster}get isMeasuring(){return this.isActive&&!this.completed}activate(){this.inputManager.addEventListener("pointerdown",this.mousedown),this.inputManager.addEventListener("pointermove",this.mousemove),this.inputManager.addEventListener("pointerup",this.mouseup),this.inputManager.addEventListener("dblclick",this.dblclick),this.inputManager.addEventListener("keydown",this.keydown);let e=this.viewer.translate;if(e){this.tooltip=new mh("measure-tooltip",e("Tooltip.measure"),{followPointer:!0,showOnCreate:!0,parentNode:this.viewer.widgetContainer,target:this.canvas});let t=document.getElementById("measure-tooltip");t&&(t.style.pointerEvents="none")}this.setTooltipContent(),this.raycaster=this.viewer.getRaycaster()}deactivate(){var e,t;this.inputManager.removeEventListener("pointerdown",this.mousedown),this.inputManager.removeEventListener("pointermove",this.mousemove),this.inputManager.removeEventListener("pointerup",this.mouseup),this.inputManager.removeEventListener("dblclick",this.dblclick),this.inputManager.removeEventListener("keydown",this.keydown),null==(e=this.tooltip)||e.hide(),null==(t=this.tooltip)||t.destroy(),this.tooltip=void 0,this.raycaster=void 0,this.currentMeasureDrawable&&this.removeDrawable(this.currentMeasureDrawable),this.osnapHelper.deactivate(),this.drawingPoints=void 0,this.currentMeasureDrawable=void 0,this.lastMouseDownPosition=void 0}removeDrawable(e){this.drawList.removeDrawable(e)}clearClickedDrawable(){this.clickedOnMeasurementDrawable&&(this.clickedOnMeasurementDrawable.selected=!1,this.clickedOnMeasurementDrawable=void 0)}onMouseClick(e){let t=Date.now();if(!(this.lastClickTime&&t-this.lastClickTime<500)&&(this.lastClickTime=t,this.clickedOnMeasurementDrawable=void 0,null==this.completed||!0===this.completed)){let t=this.getIntersections(e)[0];if(t){let e=this.drawList.getDrawableByPosition(t.point,this.raycaster);e&&(this.dispatchEvent("clickedonmeasurement",e),this.clickedOnMeasurementDrawable=e)}}}getIntersectsOutline(e){var t,i;let r=[];for(let i=0;ie instanceof nn?0:e instanceof li?2:e instanceof Ir?1:3;n.sort(((t,i)=>{let r=e(t.object),n=e(i.object);return r!==n?r-n:t.distance-i.distance}))}}n=this.getIntersectsOutline(n),ne.debug("[BaseMeasurement] filteredIntersections:",n),this.snapPoint=(null==(i=this.osnapHelper.handleSnap(r,n,this.viewer.is3d(),this.lastMouseDownPosition))?void 0:i.clone())||e[0].point.clone(),this.snapPoint||(this.viewer.is3d()?this.snapPoint=e[0].point:this.snapPoint=r)}};tu.MAX_DISTANCE=5e3;var ia=class extends Aa{constructor(e,t){super(e),this.type="Distance",this.labelBounds=new rs,this.drawing=!1,this.update(t)}setDrawingState(e){this.drawing=e}drawSelect(e,t){let i=this.getVertexs();this.drawPoints(e,t,i)}drawPoints(e,t,i){e.save(),e.fillStyle=ia.MAJOR_COLOR,e.strokeStyle=ia.MINOR_COLOR,e.lineWidth=ia.LINE_WIDTH,e.beginPath(),i.forEach((i=>{let r=this.transToScreenCoord(i,t);e.moveTo(r.x+ia.POINT_RADIUS,r.y),e.arc(r.x,r.y,ia.POINT_RADIUS,0,2*Math.PI)})),e.closePath(),e.fill(),e.stroke(),e.restore()}drawText(e,t){if(!this.label||!this.labelPositon)return;e.font=`${ia.LABEL_FONT_SIZE}px Arial`;let i=1.2*e.measureText(this.label).width,r=1.5*ia.LABEL_FONT_SIZE;this.labelBounds.setFromCenterAndSize(this.labelPositon,new le(i,r)),this.drawRoundRect(e,this.labelPositon.x-i/2,this.labelPositon.y-r/2,i,r,4),e.save(),e.fillStyle=ia.MINOR_COLOR,e.textBaseline="middle",e.textAlign="center",e.fillText(this.label,this.labelPositon.x,this.labelPositon.y),e.restore()}drawRoundRect(e,t,i,r,n,s){r<2*s&&(s=r/2),n<2*s&&(s=n/2),e.save(),e.fillStyle=ia.MAJOR_COLOR,e.strokeStyle=ia.MINOR_COLOR,e.lineWidth=ia.LINE_WIDTH,e.beginPath(),e.moveTo(t+s,i),e.arcTo(t+r,i,t+r,i+n,s),e.arcTo(t+r,i+n,t,i+n,s),e.arcTo(t,i+n,t,i,s),e.arcTo(t,i,t+r,i,s),e.closePath(),e.fill(),this.selected&&e.stroke(),e.restore()}getVertexs(){return this.points}update(e){let{min:t,max:i}=(new Mt).setFromPoints(e);return this.x=t.x,this.y=t.y,this.width=Math.abs(i.x-t.x),this.height=Math.abs(i.y-t.y),this.points=e,this}getBounds(){let e=this.getVertexs();return(new Mt).setFromPoints(e)}getData(){return{id:this.id,type:this.type,points:this.points.map((e=>[e.x,e.y,e.z]))}}setData(e){super.setData(e),this.setLineColor(ia.MAJOR_COLOR),this.setFillColor(ia.AREA_FILL_COLOR),this.setLineWidth(ia.LINE_WIDTH)}isPointInPath(e,t){let i=null==t?void 0:t.ray;if(!i)return!1;let r=3*this.tolerance,n=this.transToScreenCoord(e,t.camera);if(this.labelBounds.containsPoint(n))return!0;let s=new A,a=new A,o=this.points;for(let e=0;e{let n=this.transToScreenCoord(i,t);0===r?e.moveTo(n.x,n.y):e.lineTo(n.x,n.y)})),3===this.points.length){let[i,r,n]=this.points.map((e=>this.transToScreenCoord(e,t))),s=(new le).subVectors(i,r).normalize(),a=(new le).subVectors(n,r).normalize(),o=Math.min(i.distanceTo(r),n.distanceTo(r)),l=s.angle(),h=a.angle();e.moveTo(r.x,r.y),e.arc(r.x,r.y,o/5,l,h,s.cross(a)<0)}e.stroke(),e.restore(),this.drawing&&this.drawPoints(e,t,this.points.slice(0,this.points.length-1)),this.drawText(e,t)}drawText(e,t){if(this.points.length<3)return;let[i,r,n]=this.points,s=this.getAngleBisector(i,r,n),a=this.calculateAngle(i,r,n);this.label=`${Wu(a,2)} ${this.getUnitString()}`;let o=.3*Math.min(i.distanceTo(r),n.distanceTo(r));this.labelPositon=this.transToScreenCoord(r.clone().add(new A(s.x*o,s.y*o,s.z*o)),t),super.drawText(e,t)}getAngleBisector(e,t,i){let r=e,n=t,s=i,a=new A(r.x-n.x,r.y-n.y,r.z-n.z).normalize(),o=new A(s.x-n.x,s.y-n.y,s.z-n.z).normalize();return new A(a.x+o.x,a.y+o.y,a.z+o.z).normalize()}calculateAngle(e,t,i){let r=e,n=t,s=i,a=new A(r.x-n.x,r.y-n.y,r.z-n.z),o=new A(s.x-n.x,s.y-n.y,s.z-n.z);return 180*a.angleTo(o)/Math.PI}getClassType(){return"Angle"}};wr._registerDrawableClass(H_);var jO=class extends tu{constructor(e,t,i,r){super("Angle",e,t,i,r)}onMouseMove(e){this.createOrUpdateAngleMeasureDrawable(e)}onMouseClick(e){var t;if(super.onMouseClick(e),this.clickedOnMeasurementDrawable)return;if(this.drawingPoints||(this.drawingPoints=[]),2===e.button)return this.drawingPoints=void 0,this.currentMeasureDrawable&&(this.removeDrawable(this.currentMeasureDrawable),this.currentMeasureDrawable=void 0),this.completed=void 0,void(this.lastMouseDownPosition=void 0);let i=this.getIntersections(e)[0];if(!i)return;let r=null!=(t=this.snapPoint)?t:null==i?void 0:i.point,n=this.drawingPoints;n.push(r),this.lastMouseDownPosition=r,1===n.length&&(this.dispatchEvent("firstpointpicked"),this.completed=!1),this.createOrUpdateAngleMeasureDrawable(),n.length>=3&&this.complete()}complete(){var e;null==(e=this.currentMeasureDrawable)||e.setDrawingState(!1),this.dispatchEvent("complete",this.currentMeasureDrawable),this.completed=!0,this.currentMeasureDrawable=void 0,this.drawingPoints=void 0,this.lastMouseDownPosition=void 0}cancel(){let e=this.drawingPoints;if(e&&e.length>0){if(e.pop(),0===e.length&&(this.currentMeasureDrawable&&(this.removeDrawable(this.currentMeasureDrawable),this.currentMeasureDrawable=void 0),this.completed=!0),this.lastMoveEvent){let e=this.getIntersections(this.lastMoveEvent)[0];e&&this.onMouseMove(e.point)}}else this.deactivate(),this.dispatchEvent("deactivate",this.type);this.osnapHelper.deactivate(),this.lastMouseDownPosition=void 0}deactivate(){super.deactivate(),this.currentMeasureDrawable&&this.removeDrawable(this.currentMeasureDrawable)}setTooltipContent(){var e;let t=this.viewer.translate;if(!t)return;let i=t("Tooltip.measure");i&&this.tooltip&&(null==(e=this.tooltip)||e.setContent(i))}createOrUpdateAngleMeasureDrawable(e){if(!this.drawingPoints||this.drawingPoints&&this.drawingPoints.length<1)return;let t=[...this.drawingPoints];this.currentMeasureDrawable||(this.currentMeasureDrawable=new H_(_t.guid(),this.drawingPoints),this.drawList.addDrawable(this.currentMeasureDrawable)),e&&t.push(e),this.currentMeasureDrawable.update(t),this.currentMeasureDrawable.setDrawingState(!0)}},U_=class extends Mi{constructor(e,t){super(e,t),this.type="Area",this.update(t)}draw(e,t){let i=this.points;e.save(),e.lineWidth=Mi.LINE_WIDTH,e.strokeStyle=Mi.MAJOR_COLOR,e.fillStyle=Mi.AREA_FILL_COLOR,e.beginPath(),i.forEach(((i,r)=>{let n=this.transToScreenCoord(i,t);0===r?e.moveTo(n.x,n.y):e.lineTo(n.x,n.y)})),e.closePath(),e.fill(),e.stroke(),e.restore(),this.drawing&&this.drawPoints(e,t,this.points.slice(0,this.points.length-1)),this.drawText(e,t)}drawText(e,t){let i=this.points,r=this.calculateArea(i);this.label=`${Wu(r,2)}`,this.labelPositon=this.transToScreenCoord(this.getBarycenter(i),t),super.drawText(e,t)}calculateArea(e){let t=0,i=Cf.getFaces(e);for(let r=0;r{i+=e.x,r+=e.y,n+=e.z})),new A(i/t,r/t,n/t)}isPointInPath(e,t){let i=null==t?void 0:t.ray;if(!i)return!1;let r=this.transToScreenCoord(e,t.camera);if(this.labelBounds.containsPoint(r))return!0;let n=Cf.getFaces(this.points);for(let t=0;t=3&&!Cf.arePointsCoplanar([...r,s])?ne.warn("[Measure] The position is not coplanar with other points"):(r.push(s),this.lastMouseDownPosition=s,1===r.length&&(this.dispatchEvent("firstpointpicked"),this.completed=!1),this.createOrUpdateAreaMeasureDrawable())}complete(){var e;null==(e=this.currentMeasureDrawable)||e.setDrawingState(!1),this.dispatchEvent("complete",this.currentMeasureDrawable),this.completed=!0,this.drawingPoints=void 0,this.currentMeasureDrawable=void 0,this.lastMouseDownPosition=void 0}cancel(){let e=this.drawingPoints;if(e&&e.length>0){if(e.pop(),0===e.length&&(this.currentMeasureDrawable&&(this.removeDrawable(this.currentMeasureDrawable),this.currentMeasureDrawable=void 0),this.completed=!0),this.lastMoveEvent){let e=this.getIntersections(this.lastMoveEvent)[0];e&&this.onMouseMove(e.point)}}else this.deactivate(),this.dispatchEvent("deactivate",this.type);this.osnapHelper.deactivate(),this.lastMouseDownPosition=void 0}deactivate(){super.deactivate(),this.currentMeasureDrawable&&this.removeDrawable(this.currentMeasureDrawable)}setTooltipContent(){var e;let t=this.viewer.translate;if(t){let i=t("Tooltip.areaMeasurement");i&&this.tooltip&&(null==(e=this.tooltip)||e.setContent(i))}}createOrUpdateAreaMeasureDrawable(e){if(!this.drawingPoints||this.drawingPoints&&this.drawingPoints.length<1)return;let t=[...this.drawingPoints];this.currentMeasureDrawable||(this.currentMeasureDrawable=new U_(_t.guid(),this.drawingPoints),this.drawList.addDrawable(this.currentMeasureDrawable)),e&&t.push(e),this.currentMeasureDrawable.update(t),this.currentMeasureDrawable.setDrawingState(!0)}},B_=class extends Mi{constructor(e,t){super(e,t),this.type="Coordinate",this.update(t)}draw(e,t){this.drawText(e,t),e.save(),e.lineWidth=Mi.LINE_WIDTH,e.strokeStyle=Mi.MAJOR_COLOR,e.fillStyle=Mi.AREA_FILL_COLOR;let i=this.points;e.beginPath(),i.forEach((i=>{let r=this.transToScreenCoord(i,t);e.arc(r.x,r.y,Mi.POINT_RADIUS,0,2*Math.PI)})),e.fill(),e.stroke(),e.restore()}drawText(e,t){let i=this.points[0];ar.areNumbersEqual(i.x,0);let r=ar.areNumbersEqual(i.x,0)?0:i.x,n=ar.areNumbersEqual(i.y,0)?0:i.y,s=ar.areNumbersEqual(i.z,0)?0:i.z;this.label=`${Wu(r,2)}, ${Wu(n,2)}, ${Wu(s,2)}`,e.font=`${Mi.LABEL_FONT_SIZE}px Arial`;let a=1.2*e.measureText(this.label).width,o=1.5*Mi.LABEL_FONT_SIZE;this.labelPositon=this.transToScreenCoord(i,t),this.labelPositon.y-=o/2,this.labelBounds.setFromCenterAndSize(this.labelPositon,new le(a,o)),this.drawRoundRect(e,this.labelPositon.x-a/2,this.labelPositon.y-o/2,a,o,4),e.save(),e.fillStyle=Mi.MINOR_COLOR,e.textBaseline="middle",e.textAlign="center",e.fillText(this.label,this.labelPositon.x,this.labelPositon.y),e.restore()}getClassType(){return"Coordinate"}};wr._registerDrawableClass(B_);var qO=class extends tu{constructor(e,t,i,r){super("Coordinate",e,t,i,r)}onMouseMove(e){this.createOrUpdatePointMarker(e)}onMouseClick(e){var t;if(super.onMouseClick(e),this.clickedOnMeasurementDrawable)return;if(this.drawingPoints||(this.drawingPoints=[]),2===e.button)return this.drawingPoints=void 0,this.currentMeasureDrawable&&(this.removeDrawable(this.currentMeasureDrawable),this.currentMeasureDrawable=void 0),this.completed=void 0,void(this.lastMouseDownPosition=void 0);let i=this.getIntersections(e)[0];if(!i)return;let r=null!=(t=this.snapPoint)?t:null==i?void 0:i.point,n=this.drawingPoints;n.push(r),this.lastMouseDownPosition=r,1===n.length&&(this.dispatchEvent("firstpointpicked"),this.completed=!1),this.createOrUpdatePointMarker(r),n.length>=1&&this.complete()}complete(){this.dispatchEvent("complete",this.currentMeasureDrawable),this.completed=!0,this.drawingPoints=void 0,this.currentMeasureDrawable=void 0,this.lastMouseDownPosition=void 0}cancel(){let e=this.drawingPoints;if(e&&e.length>0){if(e.pop(),0===e.length&&(this.completed=!0),this.lastMoveEvent){let e=this.getIntersections(this.lastMoveEvent)[0];e&&this.onMouseMove(e.point)}}else this.deactivate(),this.dispatchEvent("deactivate",this.type);this.osnapHelper.deactivate(),this.drawingPoints=void 0,this.currentMeasureDrawable=void 0,this.lastMouseDownPosition=void 0}setTooltipContent(){var e;let t=this.viewer.translate;if(t){let i=t("Tooltip.measure");i&&this.tooltip&&(null==(e=this.tooltip)||e.setContent(i))}}createOrUpdatePointMarker(e){if(!this.drawingPoints||this.drawingPoints&&this.drawingPoints.length<1)return;let t=[...this.drawingPoints];this.currentMeasureDrawable||(this.currentMeasureDrawable=new B_(_t.guid(),this.drawingPoints),this.currentMeasureDrawable.selected=!0,this.drawList.addDrawable(this.currentMeasureDrawable)),e&&t.push(e),this.currentMeasureDrawable.update(t)}},mG=class extends Mi{constructor(e,t){super(e,t),this.type="Distance",this.update(t)}draw(e,t){let i=this.points;e.save(),e.lineWidth=Mi.LINE_WIDTH,e.strokeStyle=Mi.MAJOR_COLOR,e.beginPath(),i.forEach(((i,r)=>{let n=this.transToScreenCoord(i,t);0===r?e.moveTo(n.x,n.y):e.lineTo(n.x,n.y)})),e.closePath(),e.stroke(),e.restore(),this.drawing?this.drawPoints(e,t,this.points.slice(0,this.points.length-1)):this.selected||this.drawVerticalLine(e,t),this.drawText(e,t)}drawText(e,t){if(this.points.length<2)return;let[i,r]=this.points,n=i.distanceTo(r);this.label=`${Wu(n,2)}`,this.labelPositon=this.transToScreenCoord(i.clone().add(r).divideScalar(2),t),super.drawText(e,t)}drawVerticalLine(e,t){if(this.points.length<2)return;let[i,r]=this.points.map((e=>this.transToScreenCoord(e,t))),[n,s]=this.getShortLineBySegments(i,r),[a,o]=this.getShortLineBySegments(r,i);e.save(),e.lineWidth=Mi.LINE_WIDTH,e.strokeStyle=Mi.MAJOR_COLOR,e.beginPath(),e.moveTo(n.x,n.y),e.lineTo(s.x,s.y),e.moveTo(a.x,a.y),e.lineTo(o.x,o.y),e.stroke(),e.restore()}getShortLineBySegments(e,t){let i=(new le).subVectors(t,e).normalize(),r=mG.SHORT_LINE_LENGTH/2,n=Math.PI/2;return[i.clone().rotateAround(new le,n).normalize().multiplyScalar(r).add(e),i.clone().rotateAround(new le,-n).normalize().multiplyScalar(r).add(e)]}getClassType(){return"Distance"}},vE=mG;vE.SHORT_LINE_LENGTH=12,wr._registerDrawableClass(vE);var na,YO=class extends tu{constructor(e,t,i,r){super("Distance",e,t,i,r)}onMouseMove(e){this.createOrUpdateDistanceMeasureDrawable(e)}onMouseClick(e){var t;if(super.onMouseClick(e),this.clickedOnMeasurementDrawable)return;if(this.drawingPoints||(this.drawingPoints=[]),2===e.button)return this.drawingPoints=void 0,this.currentMeasureDrawable&&(this.removeDrawable(this.currentMeasureDrawable),this.currentMeasureDrawable=void 0),this.completed=void 0,void(this.lastMouseDownPosition=void 0);let i=this.getIntersections(e)[0];if(!i)return;let r=null!=(t=this.snapPoint)?t:null==i?void 0:i.point,n=this.drawingPoints;n.length<2&&n.push(r),this.lastMouseDownPosition=r,1===n.length&&(this.dispatchEvent("firstpointpicked"),this.completed=!1),this.createOrUpdateDistanceMeasureDrawable(),n.length>=2&&this.complete()}complete(){var e;null==(e=this.currentMeasureDrawable)||e.setDrawingState(!1),this.dispatchEvent("complete",this.currentMeasureDrawable),this.completed=!0,this.drawingPoints=void 0,this.currentMeasureDrawable=void 0,this.lastMouseDownPosition=void 0}cancel(){let e=this.drawingPoints;e&&e.length>0?(e.pop(),0===e.length&&(this.completed=!0),this.currentMeasureDrawable&&this.removeDrawable(this.currentMeasureDrawable)):(this.deactivate(),this.dispatchEvent("deactivate",this.type)),this.osnapHelper.deactivate(),this.drawingPoints=void 0,this.currentMeasureDrawable=void 0,this.lastMouseDownPosition=void 0}deactivate(){super.deactivate(),this.currentMeasureDrawable&&this.removeDrawable(this.currentMeasureDrawable)}setTooltipContent(){var e;let t=this.viewer.translate;if(t){let i=t("Tooltip.measure");i&&this.tooltip&&(null==(e=this.tooltip)||e.setContent(i))}}createOrUpdateDistanceMeasureDrawable(e){if(!this.drawingPoints||this.drawingPoints&&this.drawingPoints.length<1)return;let t=[...this.drawingPoints];this.currentMeasureDrawable||(this.currentMeasureDrawable=new vE(_t.guid(),this.drawingPoints),this.drawList.addDrawable(this.currentMeasureDrawable)),e&&t.push(e),this.currentMeasureDrawable.update(t),this.currentMeasureDrawable.setDrawingState(!0)}},XO=class extends cE{constructor(e,t=30){super(t),this.manager=e}undo(){let e=super.undo();switch(null==e?void 0:e.type){case"ADD":{let t=e.payload.id;t&&this.manager.removeMeasurementById(t,!1)}break;case"REMOVE":{let t=e.payload,i=this.manager.createMeasurement(t);this.manager.addMeasurement(i,!1)}}return e}redo(){let e=super.redo();switch(null==e?void 0:e.type){case"ADD":{let t=e.payload,i=this.manager.createMeasurement(t);this.manager.addMeasurement(i,!1)}break;case"REMOVE":{let t=e.payload.id;t&&this.manager.removeMeasurementById(t,!1)}}return e}},ru=class{constructor(e,t){var i;this.selectedMeasurementDrawable=void 0,this.drawableList=new Xu("measure"),this.measurements={},this.activeMeasurementType=void 0,this.undoRedoHelper=new XO(this),this.keydown=e=>{let t,i=this.getActiveMeasurementType();i&&(t=this.measurements[i]);let r=this.selectedMeasurementDrawable;r&&"Delete"===e.code&&(this.removeMeasurement(r),this.activeMeasurementType&&this.measurements[this.activeMeasurementType].clearClickedDrawable()),e.ctrlKey&&"KeyZ"===e.code&&(null!=t&&t.isMeasuring?t.cancel():this.undo()),e.ctrlKey&&"KeyY"===e.code&&(null!=t&&t.isMeasuring||this.redo()),this.viewer.enableRender()},this.viewer=e,this.inputManager=t,this.overlayRender=this.viewer.overlayRender,null==(i=this.overlayRender)||i.addDrawableList(this.drawableList),this.scene=new Nn,this.osnapHelper=new DO(this.overlayRender),this.measurements.Distance=new YO(this.viewer,t,this.drawableList,this.osnapHelper),this.measurements.Area=new WO(this.viewer,t,this.drawableList,this.osnapHelper),this.measurements.Angle=new jO(this.viewer,t,this.drawableList,this.osnapHelper),this.measurements.Coordinate=new qO(this.viewer,t,this.drawableList,this.osnapHelper),this.inputManager.addEventListener("wheel",(()=>{this.updateSnapTolerance()})),this.initEvents()}initEvents(){Object.values(this.measurements).forEach((e=>{e.addEventListener("complete",(e=>{this.undoRedoHelper.addRecord("ADD",e.getData()),this.selectMeasurement(e)})),e.addEventListener("deactivate",(()=>{this.osnapHelper.deactivate(),this.viewer.deactivateMeasurement()})),e.addEventListener("firstpointpicked",(()=>{this.unselectMeasurement()})),e.addEventListener("clickedonmeasurement",(e=>{this.selectMeasurement(e)}))}))}get canvas(){var e;return null==(e=this.viewer.renderer)?void 0:e.domElement}get raycaster(){return this.viewer.getRaycaster()}getPixelSizeInWorldCoord(){let e=this.viewer.camera,{width:t,height:i}=this.canvas,r=0;if("OrthographicCamera"===e.type){let n=e;r=Math.max(n.right-n.left,n.top-n.bottom)/n.zoom/Math.max(t,i)}else if("PerspectiveCamera"===e.type){let t=e,n=this.viewer.cameraCfg,s=n&&_t.arrayToVector3(n.eye),a=n&&_t.arrayToVector3(n.look);r=s.distanceTo(a)*Math.tan(t.fov/2*Math.PI/180)*2/i}return r}addMeasurement(e,t=!0){this.drawableList.addDrawable(e),this.selectedMeasurementDrawable=e,t&&this.undoRedoHelper.addRecord("ADD",e.getData()),this.viewer.enableRender()}createMeasurement(e){return wr.createDrawable(e)}removeMeasurement(e,t=!0){this.drawableList.removeDrawable(e),this.selectedMeasurementDrawable=void 0,t&&this.undoRedoHelper.addRecord("REMOVE",e.getData()),this.viewer.enableRender()}updateSnapTolerance(e=3){let t=this.getPixelSizeInWorldCoord()*e;this.osnapHelper.updateSnapTolerance(t)}activateMeasurement(e){this.activeMeasurementType&&this.deactivateMeasurement(),this.measurements[e]?(this.measurements[e].activate(),this.activeMeasurementType=e,this.updateSnapTolerance()):(this.activeMeasurementType=void 0,ne.error("[Measure] Failed to activate measurement, type:",e)),this.inputManager.addEventListener("keydown",this.keydown)}deactivateMeasurement(){this.unselectMeasurement();let e=this.activeMeasurementType;e&&this.measurements[e].deactivate(),this.activeMeasurementType=void 0,this.inputManager.removeEventListener("keydown",this.keydown)}getActiveMeasurementType(){return this.activeMeasurementType}isMeasurementActive(){let e=this.activeMeasurementType;return e?this.measurements[e].isActive:!!this.getActiveMeasurementType()}isMeasurementMeasuring(){let e=this.activeMeasurementType;return!!e&&this.measurements[e].isMeasuring}getMeasurementsData(){return this.drawableList.getDrawableDatas()}setMeasurementsData(e){this.drawableList.clear(),e.forEach((e=>{this.measurements[e.type]?e.points.length>=2?this.addMeasurement(wr.createDrawable(e),!1):ne.info("[Measure] Invalid points found in MeasurementData:",e):ne.warn("[Measure] Failed to add measurement data for",e)}))}setMeasurementVisibility(e,t){let i=this.drawableList.getDrawables().get(e);return!!i&&(i.visible=t,this.viewer.enableRender(),!0)}setMeasurementsVisibility(e){this.drawableList.getDrawables().forEach((t=>t.visible=e)),this.viewer.enableRender()}clearMeasurements(){this.drawableList.clear(),this.viewer.enableRender()}removeMeasurementById(e,t=!0){let i=this.drawableList.getDrawableById(e);i&&(this.removeMeasurement(i,t),ne.warn("[Measure] Failed to find measurement by id:",e))}selectMeasurementById(e){this.unselectMeasurement();let t=this.drawableList.getDrawableById(e);t&&(t.selected=!0,this.selectedMeasurementDrawable=t),this.viewer.enableRender()}selectMeasurement(e){this.unselectMeasurement(),e.selected=!0,this.selectedMeasurementDrawable=e,this.viewer.enableRender()}unselectMeasurement(){this.selectedMeasurementDrawable&&(this.selectedMeasurementDrawable.selected=!1),this.selectedMeasurementDrawable=void 0,this.viewer.enableRender()}undo(){this.undoRedoHelper.undo()}redo(){this.undoRedoHelper.redo()}clearUndoRedo(){this.undoRedoHelper.clear()}destroy(){var e;this.deactivateMeasurement(),this.clearMeasurements(),this.measurements={},null==(e=this.osnapHelper)||e.destroy(),this.scene.clear(),this.undoRedoHelper.destroy()}},wDe={HomeView:{icon:{default:"icon-home",active:"icon-home-filled"},menuName:"Toolbar.homeView",type:1,onClick:e=>{e.goToHomeView()}},OrthoMode:{icon:{default:"icon-orthomode",active:"icon-orthomode-filled"},menuName:"Toolbar.orthoView",type:4,onActive:e=>{ne.info("[Toolbar]","Enter OrthoMode"),e.setToOrthographicCamera(!0)},onDeactive:e=>{ne.info("[Toolbar]","Exit OrthoMode"),e.setToOrthographicCamera(!1)}},Measure:{icon:{default:"icon-measure",active:"icon-measure-filled"},menuName:"Toolbar.measurement",type:3,children:{MeasureDistance:{icon:{default:"icon-distancemeasure",active:"icon-distancemeasure-filled"},menuName:"Toolbar.distanceMeasurement",onActive:e=>{e.deactivateSection(),e.activateMeasurement("Distance")},onDeactive:e=>{e.deactivateMeasurement()},type:4,mutexIds:["MeasureArea","MeasureAngle","MeasureCoordinate"]},MeasureArea:{icon:{default:"icon-areameasure",active:"icon-areameasure-filled"},onActive:e=>{e.deactivateSection(),e.activateMeasurement("Area")},onDeactive:e=>{e.deactivateMeasurement()},type:4,menuName:"Toolbar.areaMeasurement",mutexIds:["MeasureDistance","MeasureAngle","MeasureCoordinate"]},MeasureAngle:{menuName:"Toolbar.angleMeasurement",icon:{default:"icon-anglemeasure"},type:4,onActive:e=>{e.deactivateSection(),e.activateMeasurement("Angle")},onDeactive:e=>{e.deactivateMeasurement()},mutexIds:["MeasureDistance","MeasureArea","MeasureCoordinate"]},MeasureCoordinate:{menuName:"Toolbar.coordinateMeasurement",icon:{default:"icon-distancemeasure"},type:4,onActive:e=>{e.deactivateSection(),e.activateMeasurement("Coordinate")},onDeactive:e=>{e.deactivateMeasurement()},mutexIds:["MeasureDistance","MeasureArea","MeasureAngle"]},MeasureClear:{icon:{default:"icon-clear",active:"icon-clear-filled"},onClick:e=>{ne.debug("[Toolbar]","Clearing Measure",e),e.clearMeasurements()},type:1,menuName:"Toolbar.clearMeasurement"}},mutexIds:["Section","SectionAxis","SectionBox","SectionPlane"]},Section:{icon:{default:"icon-section",active:"icon-section-filled"},menuName:"Toolbar.section",type:3,children:{SectionAxis:{icon:{default:"icon-sectionplane",active:"icon-sectionplane-filled"},menuName:"Toolbar.axisSection",type:4,onActive:e=>{e.deactivateMeasurement(),e.getMeasurements().forEach((t=>e.setMeasurementVisibility(t.id,!1))),null==na||na.destroy(),e.activateSection("AxisPlaneSection"),na=new VO(e)},onDeactive:e=>{e.getMeasurements().forEach((t=>e.setMeasurementVisibility(t.id,!0))),e.deactivateSection(),null==na||na.destroy(),na=void 0},mutexIds:["SectionBox","SectionPlane"]},SectionPlane:{icon:{default:"icon-choosesectionplane",active:"icon-choosesectionplane-filled"},menuName:"Toolbar.pickSectionPlane",type:4,onActive:e=>{e.deactivateMeasurement(),e.getMeasurements().forEach((t=>e.setMeasurementVisibility(t.id,!1))),null==na||na.destroy(),e.activateSection("PickPlaneSection"),na=new zO(e)},onDeactive:e=>{e.getMeasurements().forEach((t=>e.setMeasurementVisibility(t.id,!0))),e.deactivateSection(),null==na||na.destroy(),na=void 0},mutexIds:["SectionAxis","SectionBox"]},SectionBox:{icon:{default:"icon-sectionbox",active:"icon-sectionbox-filled"},menuName:"Toolbar.sectionBox",type:4,onActive:e=>{e.deactivateMeasurement(),e.getMeasurements().forEach((t=>e.setMeasurementVisibility(t.id,!1))),e.activateSection()},onDeactive:e=>{e.getMeasurements().forEach((t=>e.setMeasurementVisibility(t.id,!0))),e.deactivateSection()},mutexIds:["SectionAxis","SectionPlane"]}},mutexIds:["Measure","MeasureDistance","MeasureArea","MeasureAngle","MeasureCoordinate"]},BimTree:{icon:{default:"icon-bimtree",active:"icon-bimtree-filled"},menuName:"Toolbar.bimTree",type:4,onActive:()=>{ne.info("[Toolbar]","Activate Bim Tree")},onDeactive:()=>{ne.info("[Toolbar]","Deactivate Bim Tree")}},Viewpoint:{icon:{default:"icon-viewpoint",active:"icon-viewpoint-filled"},menuName:"Toolbar.viewpoint",type:4,onActive:()=>{ne.info("[Toolbar]","Activate Viewpoint")},onDeactive:()=>{ne.info("[Toolbar]","Deactivate Viewpoint")},visible:!1},Annotation:{icon:{default:"icon-annotation",active:"icon-annotation-filled"},menuName:"Toolbar.annotation",type:4,onActive:()=>{ne.info("[Toolbar]","Activate Annotation")},onDeactive:()=>{ne.info("[Toolbar]","Deactivate Annotation")},visible:!1},Property:{icon:{default:"icon-property",active:"icon-property-filled"},menuName:"Toolbar.property",type:4,onActive:()=>{ne.info("[Toolbar]","Activate Property")},onDeactive:()=>{ne.info("[Toolbar]","Deactivate Property")},visible:!1},Settings:{icon:{default:"icon-settings",active:"icon-settings-filled"},menuName:"Toolbar.settings",type:4,onActive:()=>{ne.info("[Toolbar]","Activate Settings")},onDeactive:()=>{ne.info("[Toolbar]","Deactivate Settings")},visible:!1},FullScreen:{icon:{default:"icon-fullscreen",active:"icon-fullscreen-filled"},menuName:"Toolbar.fullscreen",type:4,onClick:(e,t)=>{let i=()=>{let e=null==t?void 0:t.menuList.get("FullScreen");e&&e.setActive(_t.isFullScreen())};_t.isFullScreen()?(_t.exitFullscreen(),window.removeEventListener("resize",i)):_t.fullScreen(e.viewerContainer),window.addEventListener("resize",i)}}},RDe={SceneClear:{icon:{default:"icon-clear",active:"icon-clear-filled"},menuName:"clear",type:1,onClick:()=>{}}},MDe={HomeView:{icon:{default:"icon-zhushitu",active:"icon-zhushitu",iconFont:"iconfont"},menuName:"Toolbar.homeView",type:1,onClick:e=>{e.goToHomeView()}},ZoomToRectangle:{icon:{default:"icon-kuangxuanfangda",active:"icon-kuangxuanfangda",iconFont:"iconfont"},menuName:"Toolbar.zoomToRectangle",type:1,onClick:e=>{e.zoomToRect()}},GetScreenshot:{icon:{default:"icon-frame-clipping",active:"icon-frame-clipping",iconFont:"iconfont"},menuName:"Toolbar.screenshot",type:1,onClick:e=>{e.getScreenshot().then((e=>{ne.info("[Toolbar] getScreenshot() returns:",e),e||ne.error("[Toolbar] Failed to get screenshot!");let t=document.createElement("a");t.href=e,t.download="",t.click()})).catch((e=>{ne.error("[Toolbar] Failed to get screenshot, reason:",e)}))}},Measure:{icon:{default:"icon-celiang1",active:"icon-celiang1",iconFont:"iconfont"},menuName:"Toolbar.measurement",type:3,children:{MeasureDistance:{icon:{default:"icon-distancemeasure",active:"icon-distancemeasure-filled"},menuName:"Toolbar.distanceMeasurement",onActive:e=>{e.activateMeasurement("Distance")},onDeactive:e=>{e.deactivateMeasurement()},type:4,mutexIds:["MeasureArea","MeasureAngle","MeasureCoordinate"]},MeasureArea:{icon:{default:"icon-areameasure",active:"icon-areameasure-filled"},onActive:e=>{e.activateMeasurement("Area")},onDeactive:e=>{e.deactivateMeasurement()},type:4,menuName:"Toolbar.areaMeasurement",mutexIds:["MeasureDistance","MeasureAngle","MeasureCoordinate"]},MeasureAngle:{menuName:"Toolbar.angleMeasurement",icon:{default:"icon-anglemeasure"},type:4,onActive:e=>{e.activateMeasurement("Angle")},onDeactive:e=>{e.deactivateMeasurement()},mutexIds:["MeasureDistance","MeasureArea","MeasureCoordinate"]},MeasureCoordinate:{menuName:"Toolbar.coordinateMeasurement",icon:{default:"icon-distancemeasure"},type:4,onActive:e=>{e.activateMeasurement("Coordinate")},onDeactive:e=>{e.deactivateMeasurement()},visible:!1,mutexIds:["MeasureDistance","MeasureArea","MeasureAngle"]},MeasureClear:{icon:{default:"icon-clear",active:"icon-clear-filled"},onClick:e=>{ne.debug("[Toolbar]","Clearing Measure",e),e.clearMeasurements()},type:1,menuName:"Toolbar.clearMeasurement"}}},Markup:{icon:{default:"icon-tianjiapizhu",iconFont:"iconfont"},menuName:"Toolbar.markup",type:1,onClick:(e,t)=>{e.activateMarkup("CloudRectMarkup"),t.hide(),e.deactivateMeasurement(),new BO(e,Br({},EDe))}},Settings:{icon:{default:"icon-settings",active:"icon-settings-filled"},menuName:"Toolbar.settings",type:4,onActive:()=>{ne.info("[Toolbar]","Activate Settings")},onDeactive:()=>{ne.info("[Toolbar]","Deactivate Settings")},visible:!0},Compared:{icon:{default:"icon-compared",iconFont:"iconfont"},menuName:"Toolbar.compared",type:4,onActive:()=>{ne.info("[Toolbar]","Activate Compare")},onDeactive:()=>{ne.info("[Toolbar]","Deactivate Compare")},visible:!1},QuitCompare:{icon:{default:"icon-compared",iconFont:"iconfont"},menuName:"Toolbar.quitCompare",type:4,onActive:()=>{ne.info("[Toolbar]","Activate Compare")},onDeactive:()=>{ne.info("[Toolbar]","Deactivate Compare")},visible:!1},Layers:{icon:{default:"icon-tucengkongzhi",active:"icon-tucengkongzhi",iconFont:"iconfont"},menuName:"Toolbar.layers",type:4,onClick:()=>{}},FullScreen:{icon:{default:"icon-quanping",active:"icon-quanping",iconFont:"iconfont"},menuName:"Toolbar.fullscreen",type:4,onClick:(e,t)=>{let i=()=>{let e=null==t?void 0:t.menuList.get("FullScreen");e&&e.setActive(_t.isFullScreen())};_t.isFullScreen()?(_t.exitFullscreen(),window.removeEventListener("resize",i)):_t.fullScreen(e.viewerContainer),window.addEventListener("resize",i)}}},DDe={enableNavCube:!0,enableAxisGizmo:!0,enableToolbar:!0,enableBottomBar:!0,enableContextMenu:!0,enableSpinner:!0,containerId:"myCanvas",units:"meters"},rAr={enableNavCube:!1,enableAxisGizmo:!1,enableToolbar:!1,enableBottomBar:!1,enableContextMenu:!1,containerId:"myCanvas"},k_=class{constructor(e="uploadModelFile"){this.input=document.createElement("input"),this.input.id=e,this.input.type="file",this.input.multiple=!0,this.input.accept=this.formats().map((e=>"."+e)).join(","),this.input.style.display="none",this.input.onchange=e=>{let t=e.target.files;!t||t.length<=0?ne.error("[Uploader] No files to be uploaded!"):this.uploadFiles(t)}}formats(){return ne.warn("[Uploader]: Should call derived class instead!"),[]}uploadFiles(e){ne.warn(`[Uploader]: Should call derived class instead! files: ${e}`)}openFileBrowserToUpload(){this.input.click()}},$O=class extends k_{constructor(e,t){super(t),this.defaultModelConfig={src:"",position:[0,0,0],rotation:[0,0,0],scale:[1,1,1],instantiate:!1,merge:!1},this.viewer=e}formats(){return["gltf","glb","dxf","obj","stl","fbx","ifc","dae","*"]}uploadFiles(e){let t=e.length;if(0===t)return;let i,r,n,s=Br({},this.defaultModelConfig),a=new Map;for(let i=0;i{n&&(i=URL.createObjectURL(n),o.push(i),s.src=n.name)};if(n){l();let e=ks.extractUrlBase(i);r=new Lp,r.setURLModifier((t=>{let i=decodeURI(t).replace(e,"").replace(/^(\.?\/)/,"");if(a.has(i)){let e=a.get(i),t=URL.createObjectURL(e);return o.push(t),t}return t}))}else n=e[0],l();this.viewer.loadLocalModel(i,s,r,(e=>{let t=Math.floor(100*e.loaded/e.total);ne.info(`[Uploader] Loading ${null==n?void 0:n.name}, ${t}%`)})).then((()=>{ne.info(`[Uploader] Loaded ${null==n?void 0:n.name}`),o.forEach(URL.revokeObjectURL)}))}},CDe=class extends k_{constructor(e,t){super(t),this.defaultModelConfig={src:"",position:[0,0,0],rotation:[0,0,0],scale:[1,1,1],instantiate:!1,merge:!0},this.viewer=e}formats(){return["dxf"]}uploadFiles(e){let t=e=>{let t=(100*e.loaded/e.total).toFixed(1);ne.info(`[Uploader] Progress: ${t}%`)};if(2===e.length){let i=e[0],r=e[1],n=URL.createObjectURL(i),s=URL.createObjectURL(r);this.viewer.compare({src:n,modelId:i.name},{src:s,modelId:r.name},t).then((()=>{this.onSuccess&&this.onSuccess({compare:!0}),ne.debug(`[Uploader] Compared models: ${n}, ${s}`)})).catch((e=>{ne.error(`[Uploader] Failed to compare models: ${n}, ${s}. reason: ${e}`)}))}else{let i=e[0],r=URL.createObjectURL(i),n=Br({},this.defaultModelConfig);n.src=r,n.modelId=i.name;try{this.viewer.loadModelAsync(n,t).then((()=>{this.onSuccess&&this.onSuccess({}),ne.info(`[Uploader] Loaded model '${n.src}'`)}))}catch(e){ne.info(e)}}}},ADe=class extends k_{constructor(e,t){super(t),this.viewer=e}formats(){return["png","jpg","jpeg"]}uploadFiles(e){let t={panoramas:[],id:"viewpoint_1",name:"",position:[0,1,0],initialDirection:[0,0,1]};if(1===e.length){let i=[];i.push(URL.createObjectURL(e[0])),t.panoramas.push({id:"panorama_1",images:i}),this.viewer.setViewpoints([t]),this.viewer.activatePanoramaById(t.id,t.panoramas[0].id)}else if(6===e.length){let i=t=>{let i="";for(let r=0;r({position:new A(e,t,i),rotation:new xr(r,n,s)}),mNt={Front:Cn(Br({},Ns([0,0,1],[0,0,0])),{label:"NavCube.front"}),Right:Cn(Br({},Ns([1,0,0],[0,Ki,0])),{label:"NavCube.right"}),Back:Cn(Br({},Ns([0,0,-1],[0,Math.PI,0])),{label:"NavCube.back"}),Left:Cn(Br({},Ns([-1,0,0],[0,-Ki,0])),{label:"NavCube.left"}),Top:Cn(Br({},Ns([0,1,0],[-Ki,0,0])),{label:"NavCube.top"}),Bottom:Cn(Br({},Ns([0,-1,0],[Ki,0,0])),{label:"NavCube.bottom"})},gNt=[Ns([0,1,1],[-vi,0,-Ki]),Ns([0,1,-1],[-3*vi,0,-Ki]),Ns([0,-1,1],[vi,0,-Ki]),Ns([0,-1,-1],[3*vi,0,-Ki]),Ns([1,1,0],[-Ki,vi,0]),Ns([1,-1,0],[-Ki,3*vi,0]),Ns([-1,1,0],[-Ki,-vi,0]),Ns([-1,-1,0],[-Ki,-3*vi,0]),Ns([1,0,1],[0,vi,0]),Ns([1,0,-1],[0,3*vi,0]),Ns([-1,0,1],[0,-vi,0]),Ns([-1,0,-1],[0,-3*vi,0])],vNt=[{position:new A(1,1,1),rotation:[new xr(-Ki,Ki,-vi),new xr(-Ki,0,vi),new xr(0,0,3*vi)]},{position:new A(1,1,-1),rotation:[new xr(0,Ki,3*vi),new xr(-Ki,0,3*vi),new xr(0,Math.PI,-3*vi)]},{position:new A(-1,1,-1),rotation:[new xr(Math.PI,-Ki,vi),new xr(-Ki,0,-3*vi),new xr(0,Math.PI,3*vi)]},{position:new A(-1,1,1),rotation:[new xr(0,-Ki,3*vi),new xr(-Ki,0,-vi),new xr(0,0,-3*vi)]},{position:new A(1,-1,1),rotation:[new xr(0,Ki,-vi),new xr(-Ki,Math.PI,-vi),new xr(0,0,vi)]},{position:new A(1,-1,-1),rotation:[new xr(-Ki,Ki,3*vi),new xr(Ki,0,vi),new xr(0,Math.PI,-vi)]},{position:new A(-1,-1,1),rotation:[new xr(0,-Ki,vi),new xr(Ki,0,-3*vi),new xr(0,0,-vi)]},{position:new A(-1,-1,-1),rotation:[new xr(0,-Ki,-vi),new xr(Ki,0,-vi),new xr(0,Math.PI,vi)]}],ZO=class extends sr{constructor(e={}){super(),this.NAVCUBE_SIZE=100,this.clickHandler=e.onClick,(0,L0.forEach)(mNt,(e=>{this.createPlane(e)})),(0,L0.forEach)(gNt,(e=>{this.createEdge(e)})),(0,L0.forEach)(vNt,((e,t)=>{this.createCorner(e,t)}))}createPlane(e){let t=e.position.clone().multiplyScalar(this.NAVCUBE_SIZE/2),{rotation:i,label:r}=e,n=document.createElement("div");n.style.width=this.NAVCUBE_SIZE+"px",n.style.height=this.NAVCUBE_SIZE+"px",n.classList.add("navcube-plane"),n.classList.add("outer");let s=document.createElement("div");s.style.width=this.NAVCUBE_SIZE-4+"px",s.style.height=this.NAVCUBE_SIZE-4+"px",s.innerHTML=Th(r),s.classList.add("navcube-plane"),s.classList.add("inner"),n.appendChild(s);let a=new N0(n);a.position.copy(t),a.rotation.copy(i),this.add(a),n.addEventListener("click",(()=>{this.clickHandler&&this.clickHandler(t.clone().normalize(),i)}))}createEdge(e){let t=e.position.clone().multiplyScalar(this.NAVCUBE_SIZE/2),i=document.createElement("div");i.style.width="4px",i.style.height=this.NAVCUBE_SIZE-40+"px",i.style.background=NDe,i.classList.add("navcube-edge");let r=new N0(i);r.position.copy(t),r.rotation.copy(e.rotation),this.add(r),i.addEventListener("click",(()=>{this.clickHandler&&this.clickHandler(t.clone().normalize(),e.rotation)}))}createCorner(e,t){let i=i=>{i.addEventListener("click",(()=>{this.clickHandler&&this.clickHandler(e.position.clone().normalize(),new xr)})),i.addEventListener("mouseenter",(()=>{let e=document.getElementsByClassName("group-"+t);(0,L0.forEach)(e,(e=>{e instanceof HTMLElement&&e.classList.add("highlight")}))})),i.addEventListener("mouseleave",(()=>{let e=document.getElementsByClassName("group-"+t);(0,L0.forEach)(e,(e=>{e instanceof HTMLElement&&e.classList.remove("highlight")}))}))},r=e.position.clone().multiplyScalar(this.NAVCUBE_SIZE/2+.5),n=document.createElement("div");n.style.borderTop=14*Math.sqrt(3)+"px solid #efefef",n.style.borderLeft="14px solid transparent",n.style.borderRight="14px solid transparent",n.classList.add("navcube-corner"),n.classList.add("group-"+t);let s=new N0(n);s.position.copy(r).lerp(e.position,.14);let a=Math.atan2(r.z,r.x);s.rotateY(r.z*r.x<0?Math.PI+a:a);let o=(new xr).setFromVector3(r.clone().normalize());s.rotateX(-o.y),r.y<0&&s.rotateZ(Math.PI),this.add(s);let l=(t,n,s)=>{let a=document.createElement("div");a.style.borderTop=`13px solid ${NDe}`,a.style.borderLeft="13px solid transparent",a.style.borderRight="13px solid transparent",a.classList.add("navcube-corner-plane"),a.classList.add("group-"+n);let o=new N0(a),l=e.position.clone();l.setComponent(s,0),o.position.copy(r).sub(l),o.rotateX(t.x),o.rotateY(t.y),o.rotateZ(t.z),this.add(o),i(a)};(0,L0.forEach)(e.rotation,((e,i)=>{l(e,t,i)})),i(n)}},JO=class{constructor(e,t){this.height=150,this.width=150,this.width=e||this.width,this.height=t||this.height,this.init()}init(){this.initRenderer(),this.initScene(),this.animate()}initRenderer(){this.renderer=new KO,this.renderer.setSize(this.width,this.height),this.renderer.domElement.classList.add("css3d-navcube"),document.body.appendChild(this.renderer.domElement)}initScene(){this.scene=new Nn;let e=window.innerWidth/window.innerHeight,t=200;this.camera=new qi(t*e/-2,t*e/2,100,-100,1,1e3),this.camera.position.set(-200,200,200),this.scene.add(this.camera);this.navCube=new ZO({onClick:e=>{if(!(this.camera&&e&&this.hostViewer&&this.hostViewer.camera&&this.hostViewer.controls))return;let t=this.hostViewer.controls instanceof $l?this.hostViewer.controls.getTarget(new A):this.hostViewer.controls.target,i=this.hostViewer.camera.position.distanceTo(t);this.hostViewer.flyTo(t.clone().add(e.clone().multiplyScalar(i)),t)}}),this.scene.add(this.navCube)}render(){this.renderer&&this.scene&&this.camera&&(this.update(),this.renderer.render(this.scene,this.camera))}animate(){requestAnimationFrame(this.animate.bind(this)),this.render()}setHostViewer(e){this.hostViewer=e,this.update()}update(){if(!this.hostViewer||!this.hostViewer.camera)return;let e=this.hostViewer.camera;if(e){let t=new A;e.getWorldDirection(t);let i=e.up;this.updateCameraDirection(t,i)}}updateCameraDirection(e,t){if(!this.camera||!e)return;e.normalize();this.camera.position.set(20*-e.x+0,20*-e.y+0,20*-e.z+0),this.camera.lookAt(0,0,0),this.camera.up=t}dispose(){!this.scene||!this.camera||!this.navCube||(this.scene.clear(),this.hostViewer=void 0,this.camera=void 0,this.navCube=void 0,this.scene=void 0)}},yNt=new A(1,0,0),TNt=new A(0,1,0),ENt=new A(0,0,1),QO=class extends sm{constructor(e,t){super(e,t);let{min:i,max:r}=this.sectionBox;this.sectionRange={x:[i.x,r.x],y:[i.y,r.y],z:[i.z,r.z]}}activate(){super.activate(),this.initOrUpdateClipPlane(),this.initOrUpdateVertices(),this.initOrUpdateSectionPlane(),this.setGlobalClippingEnable(!0)}deactivate(){super.deactivate(),this.planesMesh&&this.scene.remove(...this.planesMesh),this.planesMesh=void 0}initOrUpdateVertices(){if(!this.sectionBox)return;let{min:e,max:t}=this.sectionBox;this.vertices=[new A(t.x,t.y,t.z),new A(e.x,t.y,t.z),new A(e.x,e.y,t.z),new A(t.x,e.y,t.z),new A(t.x,t.y,e.z),new A(e.x,t.y,e.z),new A(e.x,e.y,e.z),new A(t.x,e.y,e.z)]}initOrUpdateClipPlane(){let{min:e,max:t}=this.sectionBox;this.clipPlanes?(this.clipPlanes[0].constant=t.x,this.clipPlanes[1].constant=-e.x,this.clipPlanes[2].constant=t.y,this.clipPlanes[3].constant=-e.y,this.clipPlanes[4].constant=t.z,this.clipPlanes[5].constant=-e.z):this.clipPlanes=[new bi(new A(-1,0,0),t.x),new bi(new A(1,0,0),-e.x),new bi(new A(0,-1,0),t.y),new bi(new A(0,1,0),-e.y),new bi(new A(0,0,-1),t.z),new bi(new A(0,0,1),-e.z)],this.renderer.clippingPlanes=this.clipPlanes}initOrUpdateSectionPlane(){let e=this.vertices;if(e){if(this.planesMesh)this.planesMesh[0].update([e[4],e[0],e[3],e[7]]),this.planesMesh[1].update([e[1],e[5],e[6],e[2]]),this.planesMesh[2].update([e[4],e[5],e[1],e[0]]),this.planesMesh[3].update([e[6],e[7],e[3],e[2]]),this.planesMesh[4].update([e[0],e[1],e[2],e[3]]),this.planesMesh[5].update([e[5],e[4],e[7],e[6]]);else{let t=[new on("Right",[e[4],e[0],e[3],e[7]]),new on("Left",[e[1],e[5],e[6],e[2]]),new on("Top",[e[4],e[5],e[1],e[0]]),new on("Bottom",[e[6],e[7],e[3],e[2]]),new on("Front",[e[0],e[1],e[2],e[3]]),new on("Back",[e[5],e[4],e[7],e[6]])];this.planesMesh=t,this.scene.add(...t)}this.viewer.enableRender()}}activateSelectedObject(e){var t;null==(t=this.selectedObject)||t.setActive(e)}onDragStart(e){var t;this.selectedObject&&(this.controls&&this.dragStarted&&(this.controls.enableRotate=!1),ne.info("[ObjectsBoxSection] onDragStart:",e),this.refrencePlane.setFromNormalAndCoplanarPoint(this.camera.getWorldDirection(this.refrencePlane.normal),this.selectedObject.getPlaneCenter()),null==(t=this.raycaster)||t.ray.intersectPlane(this.refrencePlane,this.lastWorldPos))}onDragMove(e){var t;if(!this.lastWorldPos||!this.selectedObject)return;let i=new A;null==(t=this.raycaster)||t.ray.intersectPlane(this.refrencePlane,i);let r=this.selectedObject.actionType;switch(r){case"Top":case"Bottom":this.dragTranslateSectionPlane(TNt,this.lastWorldPos,i,r);break;case"Left":case"Right":this.dragTranslateSectionPlane(yNt,this.lastWorldPos,i,r);break;case"Front":case"Back":this.dragTranslateSectionPlane(ENt,this.lastWorldPos,i,r)}this.lastWorldPos=i}onDragEnd(e){this.controls&&!this.controls.enableRotate&&(this.controls.enableRotate=!0),this.activateSelectedObject(!1),this.dragStarted=!1,this.selectedObject=void 0,ne.info("[ObjectsBoxSection] onDragEnd:",e)}dragTranslateSectionPlane(e,t,i,r){let n,{min:s,max:a}=this.sectionBox,o=i.clone().sub(t).projectOnVector(e);switch(r){case"Top":n=a.y+o.y,this.isInRange(n,this.sectionRange.y)&&(a.y=n);break;case"Bottom":n=s.y+o.y,this.isInRange(n,this.sectionRange.y)&&(s.y=n);break;case"Left":n=s.x+o.x,this.isInRange(n,this.sectionRange.x)&&(s.x=n);break;case"Right":n=a.x+o.x,this.isInRange(n,this.sectionRange.x)&&(a.x=n);break;case"Front":n=a.z+o.z,this.isInRange(n,this.sectionRange.z)&&(a.z=n);break;case"Back":n=s.z+o.z,this.isInRange(n,this.sectionRange.z)&&(s.z=n)}this.initOrUpdateVertices(),this.initOrUpdateSectionPlane(),this.initOrUpdateClipPlane(),this.viewer.enableRender()}isInRange(e,t){return e>t[0]&&et.visible=e)),this.isShowSectionPlane=e,this.viewer.enableRender()}},e3=class extends sm{constructor(e,t){super(e,t),this.mousedown=e=>{var t;if(0===e.button){if(!this.faceInfo){let i=this.pickFace(e);if(i&&i.face){let e=i.face.normal,r=new Ni;e.applyNormalMatrix(r.getNormalMatrix(i.object.matrixWorld)),this.faceInfo={position:i.point,normal:e.normalize()},this.setSection(),null==(t=this.tooltip)||t.hide()}return}this.camera&&this.selectedObject&&(this.mouseDown=!0)}},this.mousemove=e=>{var t,i,r;if(this.faceInfo){if(this.dragStarted)this.updateRaycasterByMouse(e),this.onDragMove(e);else{this.activateSelectedObject(!1);let t=this.getIntersections(e);t?(this.selectedObject=t.object,this.activateSelectedObject(!0),this.mouseDown&&(null==(r=this.selectedObject)?void 0:r.parent)instanceof eu&&(this.dragStarted||(this.dragStarted=!0,this.onDragStart(e)))):this.selectedObject=void 0}this.viewer.enableRender()}else this.pickFace(e)?null==(t=this.tooltip)||t.show():null==(i=this.tooltip)||i.hide()},this.center=new A,this.sectionBox.getCenter(this.center),this.viewer.addEventListener("RenderAfter",(()=>{var e;this.isActive&&(null==(e=this.gizmo)||e.adjustSize(this.camera))}))}activate(){super.activate(),this.tooltip=new mh("pick-section-plane",Th("Tooltip.section"),{parentNode:this.viewer.widgetContainer,followPointer:!0})}deactivate(){var e,t,i;super.deactivate(),null==(e=this.planeMesh)||e.removeFromParent(),null==(t=this.gizmo)||t.removeFromParent(),this.planeMesh=void 0,this.gizmo=void 0,this.faceInfo=void 0,null==(i=this.tooltip)||i.destroy(),this.tooltip=void 0}setSection(){this.initOrUpdateGizmo(),this.initOrUpdateSectionPlane(),this.initOrUpdateClipPlane(),this.setGlobalClippingEnable(!0),this.viewer.enableRender()}resetSection(){var e,t,i;null==(e=this.planeMesh)||e.removeFromParent(),null==(t=this.gizmo)||t.removeFromParent(),this.setGlobalClippingEnable(!1),this.planeMesh=void 0,this.gizmo=void 0,this.faceInfo=void 0,null==(i=this.tooltip)||i.show(),this.viewer.enableRender()}setSectionVisible(e){this.gizmo&&this.planeMesh&&(this.gizmo.visible=e,this.planeMesh.visible=e),this.isShowSectionPlane=e,this.viewer.enableRender()}initOrUpdateClipPlane(){if(!this.faceInfo)return;let{normal:e,position:t}=this.faceInfo;this.clipPlane=(new bi).setFromNormalAndCoplanarPoint(e.clone().negate(),t),this.clipPlane&&(this.clipPlanes=[this.clipPlane])}initOrUpdateSectionPlane(){var e;if(!this.faceInfo)return;let{normal:t,position:i}=this.faceInfo,r=new A;this.sectionBox.getSize(r);let n=r.length(),s=i,a=(new Mt).setFromCenterAndSize(s,new A(n,n,n)),{min:o,max:l}=a;null==(e=this.planeMesh)||e.removeFromParent(),this.planeMesh=new on("Plane",[new A(s.x,l.y,o.z),new A(s.x,l.y,l.z),new A(s.x,o.y,l.z),new A(s.x,o.y,o.z)]),this.planeMesh.setDirection(t),this.planeMesh&&this.scene.add(this.planeMesh),this.viewer.enableRender()}initOrUpdateGizmo(){var e,t;if(!this.faceInfo)return;null==(e=this.gizmo)||e.removeFromParent();let{normal:i,position:r}=this.faceInfo;this.gizmo=new eu,this.gizmo.setDirection(i),this.gizmo.position.copy(r),null==(t=this.scene)||t.add(this.gizmo)}onDragStart(e){var t;if(!this.faceInfo||this.selectedObject instanceof on)return;this.controls&&this.dragStarted&&this.selectedObject&&!(this.selectedObject instanceof on)&&(this.controls.enableRotate=!1),ne.info("[PickPlaneSection] onDragStart:",e);let{position:i}=this.faceInfo;this.refrencePlane.setFromNormalAndCoplanarPoint(this.camera.getWorldDirection(this.refrencePlane.normal),i),null==(t=this.raycaster)||t.ray.intersectPlane(this.refrencePlane,this.lastWorldPos)}onDragMove(e){var t,i,r;if(!this.lastWorldPos||!this.selectedObject||!this.clipPlane||!this.planeMesh||!this.gizmo||!this.faceInfo||this.selectedObject&&this.selectedObject instanceof on)return;let n=new A;null==(t=this.raycaster)||t.ray.intersectPlane(this.refrencePlane,n);let s=this.selectedObject.userData.actionType,{position:a}=this.faceInfo,o=(new A).subVectors(this.lastWorldPos,a).normalize(),l=(new A).subVectors(n,a).normalize(),h=(new A).subVectors(n,this.lastWorldPos).projectOnVector(Ha.clone().applyQuaternion(this.gizmo.quaternion)),u=o.angleTo(l),c=(new A).crossVectors(o,l),p=new A;this.sectionBox.getSize(p);let d,f=Math.max(p.x,p.y,p.z);switch(s){case"TranslateX":case"TranslateY":case"TranslateZ":d=(new A).addVectors(this.gizmo.position,h),this.sectionBox.clone().setFromCenterAndSize(this.center,new A(f,f,f)).containsPoint(d)&&(null==(i=this.gizmo)||i.position.add(h),null==(r=this.planeMesh)||r.position.add(h));break;case"RotateX":{let e=Ha.clone().applyQuaternion(this.gizmo.quaternion);c.dot(e)<0&&(u=-u),this.gizmo.rotateX(u),this.planeMesh.rotatePlane(e,u)}break;case"RotateY":{let e=im.clone().applyQuaternion(this.gizmo.quaternion);c.dot(e)<0&&(u=-u),this.gizmo.rotateY(u),this.planeMesh.rotatePlane(e,u)}break;case"RotateZ":{let e=nm.clone().applyQuaternion(this.gizmo.quaternion);c.dot(e)<0&&(u=-u),this.gizmo.rotateZ(u),this.planeMesh.rotatePlane(e,u)}}this.clipPlane.setFromNormalAndCoplanarPoint(this.planeMesh.getPlaneNormal().negate(),this.gizmo.position),this.lastWorldPos=n}onDragEnd(e){this.selectedObject instanceof on||(this.controls&&!this.controls.enableRotate&&(this.controls.enableRotate=!0),this.activateSelectedObject(!1),this.dragStarted=!1,this.selectedObject=void 0,ne.info("[PickPlaneSection] onDragEnd:",e))}getIntersectObjects(){return this.planeMesh&&this.gizmo?[this.planeMesh,this.gizmo]:[]}activateSelectedObject(e){this.selectedObject&&(this.selectedObject instanceof on?this.selectedObject.setActive(e):this.selectedObject.parent instanceof eu&&this.selectedObject.parent.setActive(e,this.selectedObject))}pickFace(e){if(!this.raycaster)return;let t=new le(e.x,e.y),i=Ai.screenPoint2NdcPoint(t,this.camera,this.canvas);this.raycaster.setFromCamera(i,this.camera);let r=[];return Object.values(this.viewer.loadedModels).forEach((e=>{let t=this.scene&&this.scene.getObjectById(e.id);t&&t.visible&&r.push(t)})),(this.raycaster.intersectObjects(this.viewer.getRaycastableObjectsByMouse(e))||[]).find((e=>{let t=e.object;return t.visible&&(!1!==t.userData.selectable||t instanceof rt)}))}},t3=class{constructor(e,t){this.sections={},this.viewer=e,this.sections.ObjectsBoxSection=new QO(e,t),this.sections.AxisPlaneSection=new GO(e,t),this.sections.PickPlaneSection=new e3(e,t)}get raycaster(){return this.viewer.getRaycaster()}activateSection(e){this.activeSectionType&&this.deactivateSection(),this.activeSectionType=e,this.sections[e].activate()}deactivateSection(){let e=this.activeSectionType;e&&this.sections[e].deactivate(),this.activeSectionType=void 0}resetSection(){}isSectionActive(){let e=this.activeSectionType;return e?this.sections[e].isActive:!!this.getActiveSectionType()}getActiveSectionType(){return this.activeSectionType}getActiveSection(){if(this.activeSectionType)return this.sections[this.activeSectionType]}destroy(){this.deactivateSection(),this.activeSectionType=void 0}};function gG(e){let t;try{t=new URL(e,"http://fakehost.com/")}catch(e){return null}let i=t.pathname.split("/").pop(),r=i.lastIndexOf(".");return-1===r||r===i.length-1?null:i.substring(r+1)}function bNt(e){Promise.resolve().then(e)}var r3=class{constructor(){this.maxSize=800,this.minSize=600,this.unloadPercent=.05,this.itemSet=new Map,this.itemList=[],this.usedSet=new Set,this.callbacks=new Map,this.unloadPriorityCallback=null;let e=this.itemSet;this.defaultPriorityCallback=t=>e.get(t)}isFull(){return this.itemSet.size>=this.maxSize}add(e,t){let i=this.itemSet;if(i.has(e)||this.isFull())return!1;let r=this.usedSet,n=this.itemList,s=this.callbacks;return n.push(e),r.add(e),i.set(e,Date.now()),s.set(e,t),!0}remove(e){let t=this.usedSet,i=this.itemSet,r=this.itemList,n=this.callbacks;if(i.has(e)){n.get(e)(e);let s=r.indexOf(e);return r.splice(s,1),t.delete(e),i.delete(e),n.delete(e),!0}return!1}markUsed(e){let t=this.itemSet,i=this.usedSet;t.has(e)&&!i.has(e)&&(t.set(e,Date.now()),i.add(e))}markAllUnused(){this.usedSet.clear()}unloadUnusedContent(){let e=this.unloadPercent,t=this.minSize,i=this.itemList,r=this.itemSet,n=this.usedSet,s=this.callbacks,a=i.length-n.size,o=i.length-t,l=this.unloadPriorityCallback||this.defaultPriorityCallback;if(o>0&&a>0){i.sort(((e,t)=>{let i=n.has(e),r=n.has(t);return i&&r?0:i||r?i?1:-1:l(t)-l(e)}));let h=Math.min(o,a),u=Math.max(t*e,h*e),c=Math.min(u,a);c=Math.ceil(c);let p=i.splice(0,c);for(let e=0,t=p.length;e{this.scheduled=!1,this.unloadUnusedContent(),e&&this.markAllUnused()})))}},G_=class{constructor(){this.maxJobs=6,this.items=[],this.callbacks=new Map,this.currJobs=0,this.scheduled=!1,this.autoUpdate=!0,this.priorityCallback=()=>{throw new Error("PriorityQueue: PriorityCallback function not defined.")},this.schedulingCallback=e=>{requestAnimationFrame(e)},this._runjobs=()=>{this.tryRunJobs(),this.scheduled=!1}}sort(){let e=this.priorityCallback;this.items.sort(e)}add(e,t){return new Promise(((i,r)=>{let n=this.items,s=this.callbacks;n.push(e),s.set(e,((...e)=>t(...e).then(i).catch(r))),this.autoUpdate&&this.scheduleJobRun()}))}remove(e){let t=this.items,i=this.callbacks,r=t.indexOf(e);-1!==r&&(t.splice(r,1),i.delete(e))}tryRunJobs(){this.sort();let e=this.items,t=this.callbacks,i=this.maxJobs,r=this.currJobs;for(;i>r&&e.length>0;){r++;let i=e.pop(),n=t.get(i);t.delete(i),n(i).then((()=>{this.currJobs--,this.autoUpdate&&this.scheduleJobRun()})).catch((()=>{this.currJobs--,this.autoUpdate&&this.scheduleJobRun()}))}this.currJobs=r}scheduleJobRun(){this.scheduled||(this.schedulingCallback(this._runjobs),this.scheduled=!0)}},xNt=.0033528106647474805,LDe=-(6378137*xNt-6378137);function yG(e){return 3===e||4===e}function F0(e,t){return e.__lastFrameVisited===t&&e.__used}function FDe(e,t){e.__lastFrameVisited!==t&&(e.__lastFrameVisited=t,e.__used=!1,e.__inFrustum=!1,e.__isLeaf=!1,e.__visible=!1,e.__active=!1,e.__error=1/0,e.__distanceFromCamera=1/0,e.__childrenWereVisible=!1,e.__allChildrenLoaded=!1)}function HDe(e,t,i){if(FDe(e,t),e.__used=!0,i.markUsed(e),e.__contentEmpty){let r=e.children;for(let e=0,n=r.length;e0&&e.__depth+1>=s))return!0;let h=!1,u=e.children;for(let e=0,i=u.length;ee.__depth!==t.__depth?e.__depth>t.__depth?-1:1:e.__inFrustum!==t.__inFrustum?e.__inFrustum?1:-1:e.__used!==t.__used?e.__used?1:-1:e.__error!==t.__error?e.__error>t.__error?1:-1:e.__distanceFromCamera!==t.__distanceFromCamera?e.__distanceFromCamera>t.__distanceFromCamera?-1:1:0,INt=e=>1/(e.__depthFromRenderedParent+1),s3=class{get rootTileSet(){let e=this.tileSets[this.rootURL];return!e||e instanceof Promise?null:e}get root(){let e=this.rootTileSet;return e?e.root:null}constructor(e){this.tileSets={},this.rootURL=e,this.fetchOptions={},this.preprocessURL=null;let t=new r3;t.unloadPriorityCallback=INt;let i=new G_;i.maxJobs=4,i.priorityCallback=kDe;let r=new G_;r.maxJobs=1,r.priorityCallback=kDe,this.lruCache=t,this.downloadQueue=i,this.parseQueue=r,this.stats={parsing:0,downloading:0,failed:0,inFrustum:0,used:0,active:0,visible:0},this.frameCount=0,this.errorTarget=6,this.errorThreshold=1/0,this.loadSiblings=!0,this.displayActiveTiles=!1,this.maxDepth=1/0,this.stopAtEmptyTiles=!0}traverse(e,t){let i=this.tileSets[this.rootURL];!i||!i.root||n3(i.root,e,t)}update(){let e=this.stats,t=this.lruCache,i=this.tileSets,r=i[this.rootURL];if(!(this.rootURL in i))return void this.loadRootTileSet(this.rootURL);if(!r||!r.root)return;let n=r.root;e.inFrustum=0,e.used=0,e.active=0,e.visible=0,this.frameCount++,TG(n,this),EG(n,this),bG(n,this),xG(n,this),t.scheduleUnload()}parseTile(e,t,i){return null}disposeTile(e){}preprocessNode(e,t,i){if(e.content&&(!("uri"in e.content)&&"url"in e.content&&(e.content.uri=e.content.url,delete e.content.url),e.content.uri&&(e.content.uri=new URL(e.content.uri,i+"/").toString()),e.content.boundingVolume&&!("box"in e.content.boundingVolume||"sphere"in e.content.boundingVolume||"region"in e.content.boundingVolume)&&delete e.content.boundingVolume),e.parent=t,e.children=e.children||[],e.content&&e.content.uri){let t=gG(e.content.uri),i=Boolean(t&&"json"===t.toLowerCase());e.__externalTileSet=i,e.__contentEmpty=i}else e.__externalTileSet=!1,e.__contentEmpty=!0;e.__distanceFromCamera=1/0,e.__error=1/0,e.__inFrustum=!1,e.__isLeaf=!1,e.__usedLastFrame=!1,e.__used=!1,e.__wasSetVisible=!1,e.__visible=!1,e.__childrenWereVisible=!1,e.__allChildrenLoaded=!1,e.__wasSetActive=!1,e.__active=!1,e.__loadingState=0,e.__loadIndex=0,e.__loadAbort=null,e.__depthFromRenderedParent=-1,null===t?(e.__depth=0,e.refine=e.refine||"REPLACE"):(e.__depth=t.__depth+1,e.refine=e.refine||t.refine)}setTileActive(e,t){}setTileVisible(e,t){}calculateError(e){return 0}tileInView(e){return!0}resetFailedTiles(){let e=this.stats;0!==e.failed&&(this.traverse((e=>{4===e.__loadingState&&(e.__loadingState=0)})),e.failed=0)}fetchTileSet(e,t,i=null){return fetch(e,t).then((t=>{if(t.ok)return t.json();throw new Error(`TilesRenderer: Failed to load tileset "${e}" with status ${t.status} : ${t.statusText}`)})).then((t=>{let r=t.asset.version;console.assert("1.0"===r||"0.0"===r,'asset.version is expected to be a string of "1.0" or "0.0"');let n=e.replace(/\/[^\/]*\/?$/,"");return n=new URL(n,window.location.href).toString(),n3(t.root,((e,t)=>this.preprocessNode(e,t,n)),null,i,i?i.__depth:0),t}))}loadRootTileSet(e){let t=this.tileSets;if(e in t)return t[e]instanceof Error?Promise.reject(t[e]):Promise.resolve(t[e]);{let i=this.fetchTileSet(this.preprocessURL?this.preprocessURL(e):e,this.fetchOptions).then((i=>{t[e]=i}));return i.catch((i=>{console.error(i),t[e]=i})),t[e]=i,i}}requestTileContents(e){if(0!==e.__loadingState)return;let t=this.stats,i=this.lruCache,r=this.downloadQueue,n=this.parseQueue,s=e.__externalTileSet;i.add(e,(e=>{1===e.__loadingState?(e.__loadAbort.abort(),e.__loadAbort=null):s?e.children.length=0:this.disposeTile(e),1===e.__loadingState?t.downloading--:2===e.__loadingState&&t.parsing--,e.__loadingState=0,e.__loadIndex++,n.remove(e),r.remove(e)})),e.__loadIndex++;let a=e.__loadIndex,o=new AbortController,l=o.signal;t.downloading++,e.__loadAbort=o,e.__loadingState=1;let h=s=>{e.__loadIndex===a&&("AbortError"!==s.name?(n.remove(e),r.remove(e),2===e.__loadingState?t.parsing--:1===e.__loadingState&&t.downloading--,t.failed++,console.error(`TilesRenderer : Failed to load tile at url "${e.content.uri}".`),console.error(s),e.__loadingState=4):i.remove(e))};s?r.add(e,(e=>{if(e.__loadIndex!==a)return Promise.resolve();let t=this.preprocessURL?this.preprocessURL(e.content.uri):e.content.uri;return this.fetchTileSet(t,Object.assign({signal:l},this.fetchOptions),e)})).then((i=>{e.__loadIndex===a&&(t.downloading--,e.__loadAbort=null,e.__loadingState=3,e.children.push(i.root))})).catch(h):r.add(e,(e=>{if(e.__loadIndex!==a)return Promise.resolve();let t=this.preprocessURL?this.preprocessURL(e.content.uri):e.content.uri;return fetch(t,Object.assign({signal:l},this.fetchOptions))})).then((t=>{if(e.__loadIndex===a){if(t.ok)return t.arrayBuffer();throw new Error(`Failed to load model with error code ${t.status}`)}})).then((i=>{if(e.__loadIndex===a)return t.downloading--,t.parsing++,e.__loadAbort=null,e.__loadingState=2,n.add(e,(e=>{if(e.__loadIndex!==a)return Promise.resolve();let t=gG(e.content.uri);return this.parseTile(i,e,t)}))})).then((()=>{e.__loadIndex===a&&(t.parsing--,e.__loadingState=3,e.__wasSetVisible&&this.setTileVisible(e,!0),e.__wasSetActive&&this.setTileActive(e,!0))})).catch(h)}dispose(){let e=this.lruCache;this.traverse((t=>{e.remove(t)})),this.stats={parsing:0,downloading:0,failed:0,inFrustum:0,used:0,active:0,visible:0},this.frameCount=0}};function a3(e){return(new TextDecoder).decode(e)}var od=class{constructor(e,t,i,r){this.buffer=e,this.binOffset=t+i,this.binLength=r;let n=null;if(0!==i){let r=new Uint8Array(e,t,i);n=JSON.parse(a3(r))}else n={};this.header=n}getKeys(){return Object.keys(this.header)}getData(e,t,i=null,r=null){let n=this.header;if(!(e in n))return null;let s=n[e];if(s instanceof Object){if(Array.isArray(s))return s;{let n,{buffer:a,binOffset:o,binLength:l}=this,h=s.byteOffset||0,u=s.type||r,c=s.componentType||i;if("type"in s&&r&&s.type!==r)throw new Error("FeatureTable: Specified type does not match expected type.");switch(u){case"SCALAR":n=1;break;case"VEC2":n=2;break;case"VEC3":n=3;break;case"VEC4":n=4;break;default:throw new Error(`FeatureTable : Feature type not provided for "${e}".`)}let p,d=o+h,f=t*n;switch(c){case"BYTE":p=new Int8Array(a,d,f);break;case"UNSIGNED_BYTE":p=new Uint8Array(a,d,f);break;case"SHORT":p=new Int16Array(a,d,f);break;case"UNSIGNED_SHORT":p=new Uint16Array(a,d,f);break;case"INT":p=new Int32Array(a,d,f);break;case"UNSIGNED_INT":p=new Uint32Array(a,d,f);break;case"FLOAT":p=new Float32Array(a,d,f);break;case"DOUBLE":p=new Float64Array(a,d,f);break;default:throw new Error(`FeatureTable : Feature component type not provided for "${e}".`)}if(d+f*p.BYTES_PER_ELEMENT>o+l)throw new Error("FeatureTable: Feature data read outside binary body length.");return p}}return s}},am=class extends od{constructor(e,t,i,r,n){super(e,i,r,n),this.batchSize=t}getData(e,t=null,i=null){return super.getData(e,this.batchSize,t,i)}},ec=class{constructor(){this.fetchOptions={},this.workingPath=""}load(e){return fetch(e,this.fetchOptions).then((t=>{if(!t.ok)throw new Error(`Failed to load file "${e}" with status ${t.status} : ${t.statusText}`);return t.arrayBuffer()})).then((t=>(""===this.workingPath&&(this.workingPath=this.workingPathForURL(e)),this.parse(t))))}resolveExternalURL(e){return/^[^\\/]/.test(e)?this.workingPath+"/"+e:e}workingPathForURL(e){let t=e.split(/[\\/]/g);return t.pop(),t.join("/")+"/"}parse(e){throw new Error("LoaderBase: Parse not implemented.")}};function iu(e){let t;if(t=e instanceof DataView?e:new DataView(e),"{"===String.fromCharCode(t.getUint8(0)))return null;let i="";for(let e=0;e<4;e++)i+=String.fromCharCode(t.getUint8(e));return i}var o3=class extends ec{parse(e){let t=new DataView(e),i=iu(t);console.assert("b3dm"===i);let r=t.getUint32(4,!0);console.assert(1===r);let n=t.getUint32(8,!0);console.assert(n===e.byteLength);let s=t.getUint32(12,!0),a=t.getUint32(16,!0),o=t.getUint32(20,!0),l=t.getUint32(24,!0),h=e.slice(28,28+s+a),u=new od(h,0,s,a),c=28+s+a,p=e.slice(c,c+o+l),d=new am(p,u.getData("BATCH_LENGTH"),0,o,l),f=c+o+l;return{version:r,featureTable:u,batchTable:d,glbBytes:new Uint8Array(e,f,n-f)}}},yE=class extends o3{constructor(e=ao){super(),this.manager=e,this.adjustmentTransform=new Be}parse(e){let t=super.parse(e),i=t.glbBytes.slice().buffer;return new Promise(((e,r)=>{let n=this.manager,s=this.fetchOptions,a=n.getHandler("path.gltf")||new $u(n);"include"===s.credentials&&"cors"===s.mode&&a.setCrossOrigin("use-credentials"),"credentials"in s&&a.setWithCredentials("include"===s.credentials),s.headers&&a.setRequestHeader(s.headers);let o=this.workingPath;!/[\\/]$/.test(o)&&o.length&&(o+="/");let l=this.adjustmentTransform;a.parse(i,o,(i=>{let{batchTable:r,featureTable:n}=t,{scene:s}=i,a=n.getData("RTC_CENTER");a&&(s.position.x+=a[0],s.position.y+=a[1],s.position.z+=a[2]),i.scene.updateMatrix(),i.scene.matrix.multiply(l),i.scene.matrix.decompose(i.scene.position,i.scene.quaternion,i.scene.scale),i.batchTable=r,i.featureTable=n,s.batchTable=r,s.featureTable=n,e(i)}),r)}))}},l3=class extends ec{parse(e){let t=new DataView(e),i=iu(t);console.assert("pnts"===i);let r=t.getUint32(4,!0);console.assert(1===r);let n=t.getUint32(8,!0);console.assert(n===e.byteLength);let s=t.getUint32(12,!0),a=t.getUint32(16,!0),o=t.getUint32(20,!0),l=t.getUint32(24,!0),h=e.slice(28,28+s+a),u=new od(h,0,s,a),c=28+s+a,p=e.slice(c,c+o+l),d=new am(p,u.getData("BATCH_LENGTH")||u.getData("POINTS_LENGTH"),0,o,l);return Promise.resolve({version:r,featureTable:u,batchTable:d})}},TE=class extends l3{constructor(e=ao){super(),this.manager=e}parse(e){return super.parse(e).then((e=>{let{featureTable:t}=e,i=t.getData("POINTS_LENGTH"),r=t.getData("POSITION",i,"FLOAT","VEC3"),n=t.getData("RGB",i,"UNSIGNED_BYTE","VEC3");["QUANTIZED_VOLUME_OFFSET","QUANTIZED_VOLUME_SCALE","CONSTANT_RGBA","BATCH_LENGTH","POSITION_QUANTIZED","RGBA","RGB565","NORMAL","NORMAL_OCT16P"].forEach((e=>{e in t.header&&console.warn(`PNTSLoader: Unsupported FeatureTable feature "${e}" detected.`)}));let s=new lt;s.setAttribute("position",new Wt(r,3,!1));let a=new jn;a.size=2,a.sizeAttenuation=!1,null!==n&&(s.setAttribute("color",new Wt(n,3,!0)),a.vertexColors=!0);let o=new nn(s,a);e.scene=o,e.scene.featureTable=t;let l=t.getData("RTC_CENTER");return l&&(e.scene.position.x+=l[0],e.scene.position.y+=l[1],e.scene.position.z+=l[2]),e}))}},c3=class extends ec{parse(e){let t=new DataView(e),i=iu(t);console.assert("i3dm"===i);let r=t.getUint32(4,!0);console.assert(1===r);let n=t.getUint32(8,!0);console.assert(n===e.byteLength);let s=t.getUint32(12,!0),a=t.getUint32(16,!0),o=t.getUint32(20,!0),l=t.getUint32(24,!0),h=t.getUint32(28,!0),u=e.slice(32,32+s+a),c=new od(u,0,s,a),p=32+s+a,d=e.slice(p,p+o+l),f=new am(d,c.getData("INSTANCES_LENGTH"),0,o,l),m=p+o+l,g=new Uint8Array(e,m,n-m),y=null,v=null;if(h)y=g,v=Promise.resolve();else{let e=this.resolveExternalURL(a3(g));v=fetch(e,this.fetchOptions).then((t=>{if(!t.ok)throw new Error(`I3DMLoaderBase : Failed to load file "${e}" with status ${t.status} : ${t.statusText}`);return t.arrayBuffer()})).then((e=>{y=new Uint8Array(e)}))}return v.then((()=>({version:r,featureTable:c,batchTable:f,glbBytes:y})))}},GDe=new A,SG=new A,wG=new A,VDe=new A,RG=new Hr,u3=new A,h3=new Be,EE=class extends c3{constructor(e=ao){super(),this.manager=e,this.adjustmentTransform=new Be}resolveExternalURL(e){return this.manager.resolveURL(super.resolveExternalURL(e))}parse(e){return super.parse(e).then((e=>{let{featureTable:t,batchTable:i}=e,r=e.glbBytes.slice().buffer;return new Promise(((e,n)=>{let s=this.fetchOptions,a=this.manager,o=a.getHandler("path.gltf")||new $u(a);"include"===s.credentials&&"cors"===s.mode&&o.setCrossOrigin("use-credentials"),"credentials"in s&&o.setWithCredentials("include"===s.credentials),s.headers&&o.setRequestHeader(s.headers);let l=this.workingPath;/[\\/]$/.test(l)||(l+="/");let h=this.adjustmentTransform;o.parse(r,l,(r=>{let n=t.getData("INSTANCES_LENGTH"),s=t.getData("POSITION",n,"FLOAT","VEC3"),a=t.getData("NORMAL_UP",n,"FLOAT","VEC3"),o=t.getData("NORMAL_RIGHT",n,"FLOAT","VEC3"),l=t.getData("SCALE_NON_UNIFORM",n,"FLOAT","VEC3"),u=t.getData("SCALE",n,"FLOAT","SCALAR");["RTC_CENTER","QUANTIZED_VOLUME_OFFSET","QUANTIZED_VOLUME_SCALE","EAST_NORTH_UP","POSITION_QUANTIZED","NORMAL_UP_OCT32P","NORMAL_RIGHT_OCT32P"].forEach((e=>{e in t.header&&console.warn(`I3DMLoader: Unsupported FeatureTable feature "${e}" detected.`)}));let c=new Map,p=[];r.scene.traverse((e=>{if(e.isMesh){let{geometry:t,material:i}=e,r=new rn(t,i,n);r.position.copy(e.position),r.rotation.copy(e.rotation),r.scale.copy(e.scale),p.push(r),c.set(e,r)}}));let d=new A;for(let e=0;e{let i=t.parent;i&&(i.remove(t),i.add(e),e.updateMatrixWorld(),e.position.copy(d).applyMatrix4(e.matrixWorld))}));for(let e=0;e{let t=new ur;return e.forEach((e=>{t.add(e.scene)})),{tiles:e,scene:t}}))}},f3=class{constructor(){this.name="CESIUM_RTC"}afterRoot(e){if(e.parser.json.extensions&&e.parser.json.extensions.CESIUM_RTC){let{center:t}=e.parser.json.extensions.CESIUM_RTC;t&&(e.scene.position.x+=t[0],e.scene.position.y+=t[1],e.scene.position.z+=t[2])}}},m3=class extends ec{constructor(e=ao){super(),this.manager=e}parse(e){return new Promise(((t,i)=>{let r=this.manager,n=this.fetchOptions,s=r.getHandler("path.gltf")||r.getHandler("path.glb");s||(s=new $u(r),s.register((()=>new f3)),"include"===n.credentials&&"cors"===n.mode&&s.setCrossOrigin("use-credentials"),"credentials"in n&&s.setWithCredentials("include"===n.credentials),n.headers&&s.setRequestHeader(n.headers));let a=s.resourcePath||s.path||this.workingPath;!/[\\/]$/.test(a)&&a.length&&(a+="/"),s.parse(e,a,(e=>{t(e)}),i)}))}},g3=new Be,v3=class extends ur{constructor(e){super(),this.name="TilesRenderer.TilesGroup",this.tilesRenderer=e}raycast(e,t){this.tilesRenderer.optimizeRaycast&&this.tilesRenderer.raycast(e,t)}updateMatrixWorld(e){if(this.matrixAutoUpdate&&this.updateMatrix(),this.matrixWorldNeedsUpdate||e){null===this.parent?g3.copy(this.matrix):g3.multiplyMatrices(this.parent.matrixWorld,this.matrix),this.matrixWorldNeedsUpdate=!1;let e=g3.elements,t=this.matrixWorld.elements,i=!1;for(let r=0;r<16;r++){let n=e[r],s=t[r];if(Math.abs(n-s)>Number.EPSILON){i=!0;break}}if(i){this.matrixWorld.copy(g3);let e=this.children;for(let t=0,i=e.length;t=t&&a<=i&&o>=r&&o<=n){let t=SNt(e);c.push(t),this.getCartographicToPosition(a,o,l,t)}}}return c}getBoundingBox(e,t){WDe();let{latStart:i,latEnd:r,lonStart:n,lonEnd:s}=this;if(r-i{Object.getPrototypeOf(e).raycast.call(e,t,i)}))}function AG(e,t,i,r){if(i.has(e)){if(CG(e.cached.scene,r,tc),tc.length>0){tc.length>1&&tc.sort(DG);let e=tc[0];return tc.length=0,e}return null}let n=[],s=e.children;for(let e=0,i=s.length;e1e-6&&console.warn("ThreeTilesRenderer : Non uniform scale used for tile which may cause issues when raycasting.");let t={distance:1/0,tile:null};n.push(t),t.distance=qDe.distanceToSquared(_E.origin)*e*e,t.tile=i}}}n.sort(DG);let a=1/0,o=null;for(let e=0,s=n.length;ea)break;{let e=s.tile,n=e.cached.scene,l=null;if(i.has(e)?(CG(n,r,tc),tc.length>0&&(tc.length>1&&tc.sort(DG),l=tc[0])):l=AG(e,t,i,r),l){let e=l.distance*l.distance;e{e.frustumCulled=e[$De]&&t}))}var W_=class extends s3{get autoDisableRendererCulling(){return this._autoDisableRendererCulling}set autoDisableRendererCulling(e){this._autoDisableRendererCulling!==e&&(super._autoDisableRendererCulling=e,this.forEachLoadedModel((t=>{XDe(t,!e)})))}constructor(...e){super(...e),this.group=new v3(this),this.cameras=[],this.cameraMap=new Map,this.cameraInfo=[],this.activeTiles=new Set,this.visibleTiles=new Set,this._autoDisableRendererCulling=!0,this.optimizeRaycast=!0,this.onLoadTileSet=null,this.onLoadModel=null,this.onDisposeModel=null,this.onTileVisibilityChange=null;let t=new Lp;t.setURLModifier((e=>this.preprocessURL?this.preprocessURL(e):e)),this.manager=t;let i=this;this._overridenRaycast=function(e,t){i.optimizeRaycast||Object.getPrototypeOf(this).raycast.call(this,e,t)}}getBounds(e){if(!this.root)return!1;let t=this.root.cached,i=t.box,r=t.boxTransform;return!!i&&(e.copy(i),e.applyMatrix4(r),!0)}getOrientedBounds(e,t){if(!this.root)return!1;let i=this.root.cached,r=i.box,n=i.boxTransform;return!!r&&(e.copy(r),t.copy(n),!0)}getBoundingSphere(e){if(!this.root)return!1;let t=this.root.cached.sphere;return!!t&&(e.copy(t),!0)}forEachLoadedModel(e){this.traverse((t=>{let i=t.cached.scene;i&&e(i,t)}))}raycast(e,t){if(this.root)if(e.firstHitOnly){let i=AG(this.root,this.group,this.activeTiles,e);i&&t.push(i)}else OG(this.root,this.group,this.activeTiles,e,t)}hasCamera(e){return this.cameraMap.has(e)}setCamera(e){let t=this.cameras,i=this.cameraMap;return!i.has(e)&&(i.set(e,new le),t.push(e),!0)}setResolution(e,t,i){let r=this.cameraMap;return!!r.has(e)&&(t instanceof le?r.get(e).copy(t):r.get(e).set(t,i),!0)}setResolutionFromRenderer(e,t){let i=this.cameraMap;if(!i.has(e))return!1;let r=i.get(e);return t.getSize(r),r.multiplyScalar(t.getPixelRatio()),!0}deleteCamera(e){let t=this.cameras,i=this.cameraMap;if(i.has(e)){let r=t.indexOf(e);return t.splice(r,1),i.delete(e),!0}return!1}fetchTileSet(e,...t){let i=super.fetchTileSet(e,...t);return i.then((t=>{this.onLoadTileSet&&Promise.resolve().then((()=>{this.onLoadTileSet(t,e)}))})),i}update(){let e=this.group,t=this.cameras,i=this.cameraMap,r=this.cameraInfo;if(0===t.length)return void console.warn("TilesRenderer: no cameras defined. Cannot update 3d tiles.");for(;r.length>t.length;)r.pop();for(;r.length1e-6&&console.warn("ThreeTilesRenderer : Non uniform scale used for tile which may cause issues when calculating screen space error.");for(let s=0,a=r.length;se.scene));break}case"pnts":{let t=new TE(a);t.workingPath=n,t.fetchOptions=s,l=t.parse(e).then((e=>e.scene));break}case"i3dm":{let t=new EE(a);t.workingPath=n,t.fetchOptions=s,t.adjustmentTransform.copy(nu),l=t.parse(e).then((e=>e.scene));break}case"cmpt":{let t=new d3(a);t.workingPath=n,t.fetchOptions=s,t.adjustmentTransform.copy(nu),l=t.parse(e).then((e=>e.scene));break}case"gltf":case"glb":let t=new m3(a);t.workingPath=n,t.fetchOptions=s,l=t.parse(e).then((e=>e.scene));break;default:console.warn(`TilesRenderer: Content type "${p}" not supported.`),l=Promise.resolve(null)}return l.then((e=>{if(t._loadIndex!==o)return;e.updateMatrix(),("glb"===p||"gltf"===p)&&e.matrix.multiply(nu),e.matrix.premultiply(c),e.matrix.decompose(e.position,e.quaternion,e.scale),e.traverse((e=>{e[$De]=e.frustumCulled})),XDe(e,!this.autoDisableRendererCulling),u.scene=e,e.traverse((e=>{e.raycast=this._overridenRaycast}));let i=[],r=[],n=[];e.traverse((e=>{if(e.geometry&&r.push(e.geometry),e.material){let t=e.material;i.push(e.material);for(let e in t){let i=t[e];i&&i.isTexture&&n.push(i)}}})),u.materials=i,u.geometry=r,u.textures=n,this.onLoadModel&&this.onLoadModel(e,t)}))}disposeTile(e){let t=e.cached;if(t.scene){let i=t.materials,r=t.geometry,n=t.textures,s=t.scene.parent;for(let e=0,t=r.length;e=s+1e3&&(o.update(1e3*a/(e-s),100),s=e,a=0,h)){var t=performance.memory;h.update(t.usedJSHeapSize/1048576,t.jsHeapSizeLimit/1048576)}return e},update:function(){n=this.end()},domElement:t,setMode:r}};X_.Panel=function(e,t,i){var r=1/0,n=0,s=Math.round,a=s(window.devicePixelRatio||1),o=80*a,l=48*a,h=3*a,u=2*a,c=3*a,p=15*a,d=74*a,f=30*a,m=document.createElement("canvas");m.width=o,m.height=l,m.style.cssText="width:80px;height:48px";var g=m.getContext("2d");return g.font="bold "+9*a+"px Helvetica,Arial,sans-serif",g.textBaseline="top",g.fillStyle=i,g.fillRect(0,0,o,l),g.fillStyle=t,g.fillText(e,h,u),g.fillRect(c,p,d,f),g.fillStyle=i,g.globalAlpha=.9,g.fillRect(c,p,d,f),{dom:m,update:function(l,y){r=Math.min(r,l),n=Math.max(n,l),g.fillStyle=i,g.globalAlpha=1,g.fillRect(0,0,o,p),g.fillStyle=t,g.fillText(s(l)+" "+e+" ("+s(r)+"-"+s(n)+")",h,u),g.drawImage(m,c+a,p,d-a,f,c,p,d-a,f),g.fillRect(c+d-a,p,a,f),g.fillStyle=i,g.globalAlpha=.9,g.fillRect(c+d-a,p,a,s((1-l/y)*f))}}};var I3=X_,as=class{constructor(){this.enabled=!0,this.needsSwap=!0,this.clear=!1,this.renderToScreen=!1}setSize(){}render(){console.error("THREE.Pass: .render() must be implemented in derived pass.")}dispose(){}},MNt=new qi(-1,1,1,-1,0,1),NG=new lt;NG.setAttribute("position",new dt([-1,3,0,-1,-1,0,3,-1,0],3)),NG.setAttribute("uv",new dt([0,2,0,0,2,0],2));var sa=class{constructor(e){this._mesh=new rt(NG,e)}dispose(){this._mesh.geometry.dispose()}render(e){e.render(this._mesh,MNt)}get material(){return this._mesh.material}set material(e){this._mesh.material=e}},LG={defines:{KERNEL_SIZE_FLOAT:"25.0",KERNEL_SIZE_INT:"25"},uniforms:{tDiffuse:{value:null},uImageIncrement:{value:new le(.001953125,0)},cKernel:{value:[]}},vertexShader:"\n\n\t\tuniform vec2 uImageIncrement;\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv - ( ( KERNEL_SIZE_FLOAT - 1.0 ) / 2.0 ) * uImageIncrement;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}",fragmentShader:"\n\n\t\tuniform float cKernel[ KERNEL_SIZE_INT ];\n\n\t\tuniform sampler2D tDiffuse;\n\t\tuniform vec2 uImageIncrement;\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvec2 imageCoord = vUv;\n\t\t\tvec4 sum = vec4( 0.0, 0.0, 0.0, 0.0 );\n\n\t\t\tfor( int i = 0; i < KERNEL_SIZE_INT; i ++ ) {\n\n\t\t\t\tsum += texture2D( tDiffuse, imageCoord ) * cKernel[ i ];\n\t\t\t\timageCoord += uImageIncrement;\n\n\t\t\t}\n\n\t\t\tgl_FragColor = sum;\n\n\t\t}",buildKernel:function(e){let t=2*Math.ceil(3*e)+1;t>25&&(t=25);let i=.5*(t-1),r=new Array(t),n=0;for(let s=0;s0){e.getClearColor(this._oldClearColor),this.oldClearAlpha=e.getClearAlpha();let t=e.autoClear;e.autoClear=!1,n&&e.state.buffers.stencil.setTest(!1),e.setClearColor(16777215,1),this.changeVisibilityOfSelectedObjects(!1);let r=this.renderScene.background;if(this.renderScene.background=null,this.renderScene.overrideMaterial=this.depthMaterial,e.setRenderTarget(this.renderTargetDepthBuffer),e.clear(),e.render(this.renderScene,this.renderCamera),this.changeVisibilityOfSelectedObjects(!0),this._visibilityCache.clear(),this.updateTextureMatrix(),this.changeVisibilityOfNonSelectedObjects(!1),this.renderScene.overrideMaterial=this.prepareMaskMaterial,this.prepareMaskMaterial.uniforms.cameraNearFar.value.set(this.renderCamera.near,this.renderCamera.far),this.prepareMaskMaterial.uniforms.depthTexture.value=this.renderTargetDepthBuffer.texture,this.prepareMaskMaterial.uniforms.textureMatrix.value=this.textureMatrix,e.setRenderTarget(this.renderTargetMaskBuffer),e.clear(),e.render(this.renderScene,this.renderCamera),this.renderScene.overrideMaterial=null,this.changeVisibilityOfNonSelectedObjects(!0),this._visibilityCache.clear(),this.renderScene.background=r,this.fsQuad.material=this.materialCopy,this.copyUniforms.tDiffuse.value=this.renderTargetMaskBuffer.texture,e.setRenderTarget(this.renderTargetMaskDownSampleBuffer),e.clear(),this.fsQuad.render(e),this.tempPulseColor1.copy(this.visibleEdgeColor),this.tempPulseColor2.copy(this.hiddenEdgeColor),this.pulsePeriod>0){let e=.625+.75*Math.cos(.01*performance.now()/this.pulsePeriod)/2;this.tempPulseColor1.multiplyScalar(e),this.tempPulseColor2.multiplyScalar(e)}this.fsQuad.material=this.edgeDetectionMaterial,this.edgeDetectionMaterial.uniforms.maskTexture.value=this.renderTargetMaskDownSampleBuffer.texture,this.edgeDetectionMaterial.uniforms.texSize.value.set(this.renderTargetMaskDownSampleBuffer.width,this.renderTargetMaskDownSampleBuffer.height),this.edgeDetectionMaterial.uniforms.visibleEdgeColor.value=this.tempPulseColor1,this.edgeDetectionMaterial.uniforms.hiddenEdgeColor.value=this.tempPulseColor2,e.setRenderTarget(this.renderTargetEdgeBuffer1),e.clear(),this.fsQuad.render(e),this.fsQuad.material=this.separableBlurMaterial1,this.separableBlurMaterial1.uniforms.colorTexture.value=this.renderTargetEdgeBuffer1.texture,this.separableBlurMaterial1.uniforms.direction.value=au.BlurDirectionX,this.separableBlurMaterial1.uniforms.kernelRadius.value=this.edgeThickness,e.setRenderTarget(this.renderTargetBlurBuffer1),e.clear(),this.fsQuad.render(e),this.separableBlurMaterial1.uniforms.colorTexture.value=this.renderTargetBlurBuffer1.texture,this.separableBlurMaterial1.uniforms.direction.value=au.BlurDirectionY,e.setRenderTarget(this.renderTargetEdgeBuffer1),e.clear(),this.fsQuad.render(e),this.fsQuad.material=this.separableBlurMaterial2,this.separableBlurMaterial2.uniforms.colorTexture.value=this.renderTargetEdgeBuffer1.texture,this.separableBlurMaterial2.uniforms.direction.value=au.BlurDirectionX,e.setRenderTarget(this.renderTargetBlurBuffer2),e.clear(),this.fsQuad.render(e),this.separableBlurMaterial2.uniforms.colorTexture.value=this.renderTargetBlurBuffer2.texture,this.separableBlurMaterial2.uniforms.direction.value=au.BlurDirectionY,e.setRenderTarget(this.renderTargetEdgeBuffer2),e.clear(),this.fsQuad.render(e),this.fsQuad.material=this.overlayMaterial,this.overlayMaterial.uniforms.maskTexture.value=this.renderTargetMaskBuffer.texture,this.overlayMaterial.uniforms.edgeTexture1.value=this.renderTargetEdgeBuffer1.texture,this.overlayMaterial.uniforms.edgeTexture2.value=this.renderTargetEdgeBuffer2.texture,this.overlayMaterial.uniforms.patternTexture.value=this.patternTexture,this.overlayMaterial.uniforms.edgeStrength.value=this.edgeStrength,this.overlayMaterial.uniforms.edgeGlow.value=this.edgeGlow,this.overlayMaterial.uniforms.usePatternTexture.value=this.usePatternTexture,n&&e.state.buffers.stencil.setTest(!0),e.setRenderTarget(i),this.fsQuad.render(e),e.setClearColor(this._oldClearColor,this.oldClearAlpha),e.autoClear=t}this.renderToScreen&&(this.fsQuad.material=this.materialCopy,this.copyUniforms.tDiffuse.value=i.texture,e.setRenderTarget(null),this.fsQuad.render(e))}getPrepareMaskMaterial(){return new Yt({uniforms:{depthTexture:{value:null},cameraNearFar:{value:new le(.5,.5)},textureMatrix:{value:null}},vertexShader:"#include \n\t\t\t\t#include \n\n\t\t\t\tvarying vec4 projTexCoord;\n\t\t\t\tvarying vec4 vPosition;\n\t\t\t\tuniform mat4 textureMatrix;\n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\t#include \n\t\t\t\t\t#include \n\t\t\t\t\t#include \n\t\t\t\t\t#include \n\t\t\t\t\t#include \n\n\t\t\t\t\tvPosition = mvPosition;\n\n\t\t\t\t\tvec4 worldPosition = vec4( transformed, 1.0 );\n\n\t\t\t\t\t#ifdef USE_INSTANCING\n\n\t\t\t\t\t\tworldPosition = instanceMatrix * worldPosition;\n\n\t\t\t\t\t#endif\n\t\t\t\t\t\n\t\t\t\t\tworldPosition = modelMatrix * worldPosition;\n\n\t\t\t\t\tprojTexCoord = textureMatrix * worldPosition;\n\n\t\t\t\t}",fragmentShader:"#include \n\t\t\t\tvarying vec4 vPosition;\n\t\t\t\tvarying vec4 projTexCoord;\n\t\t\t\tuniform sampler2D depthTexture;\n\t\t\t\tuniform vec2 cameraNearFar;\n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tfloat depth = unpackRGBAToDepth(texture2DProj( depthTexture, projTexCoord ));\n\t\t\t\t\tfloat viewZ = - DEPTH_TO_VIEW_Z( depth, cameraNearFar.x, cameraNearFar.y );\n\t\t\t\t\tfloat depthTest = (-vPosition.z > viewZ) ? 1.0 : 0.0;\n\t\t\t\t\tgl_FragColor = vec4(0.0, depthTest, 1.0, 1.0);\n\n\t\t\t\t}"})}getEdgeDetectionMaterial(){return new Yt({uniforms:{maskTexture:{value:null},texSize:{value:new le(.5,.5)},visibleEdgeColor:{value:new A(1,1,1)},hiddenEdgeColor:{value:new A(1,1,1)}},vertexShader:"varying vec2 vUv;\n\n\t\t\t\tvoid main() {\n\t\t\t\t\tvUv = uv;\n\t\t\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\t\t\t\t}",fragmentShader:"varying vec2 vUv;\n\n\t\t\t\tuniform sampler2D maskTexture;\n\t\t\t\tuniform vec2 texSize;\n\t\t\t\tuniform vec3 visibleEdgeColor;\n\t\t\t\tuniform vec3 hiddenEdgeColor;\n\n\t\t\t\tvoid main() {\n\t\t\t\t\tvec2 invSize = 1.0 / texSize;\n\t\t\t\t\tvec4 uvOffset = vec4(1.0, 0.0, 0.0, 1.0) * vec4(invSize, invSize);\n\t\t\t\t\tvec4 c1 = texture2D( maskTexture, vUv + uvOffset.xy);\n\t\t\t\t\tvec4 c2 = texture2D( maskTexture, vUv - uvOffset.xy);\n\t\t\t\t\tvec4 c3 = texture2D( maskTexture, vUv + uvOffset.yw);\n\t\t\t\t\tvec4 c4 = texture2D( maskTexture, vUv - uvOffset.yw);\n\t\t\t\t\tfloat diff1 = (c1.r - c2.r)*0.5;\n\t\t\t\t\tfloat diff2 = (c3.r - c4.r)*0.5;\n\t\t\t\t\tfloat d = length( vec2(diff1, diff2) );\n\t\t\t\t\tfloat a1 = min(c1.g, c2.g);\n\t\t\t\t\tfloat a2 = min(c3.g, c4.g);\n\t\t\t\t\tfloat visibilityFactor = min(a1, a2);\n\t\t\t\t\tvec3 edgeColor = 1.0 - visibilityFactor > 0.001 ? visibleEdgeColor : hiddenEdgeColor;\n\t\t\t\t\tgl_FragColor = vec4(edgeColor, 1.0) * vec4(d);\n\t\t\t\t}"})}getSeperableBlurMaterial(e){return new Yt({defines:{MAX_RADIUS:e},uniforms:{colorTexture:{value:null},texSize:{value:new le(.5,.5)},direction:{value:new le(.5,.5)},kernelRadius:{value:1}},vertexShader:"varying vec2 vUv;\n\n\t\t\t\tvoid main() {\n\t\t\t\t\tvUv = uv;\n\t\t\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\t\t\t\t}",fragmentShader:"#include \n\t\t\t\tvarying vec2 vUv;\n\t\t\t\tuniform sampler2D colorTexture;\n\t\t\t\tuniform vec2 texSize;\n\t\t\t\tuniform vec2 direction;\n\t\t\t\tuniform float kernelRadius;\n\n\t\t\t\tfloat gaussianPdf(in float x, in float sigma) {\n\t\t\t\t\treturn 0.39894 * exp( -0.5 * x * x/( sigma * sigma))/sigma;\n\t\t\t\t}\n\n\t\t\t\tvoid main() {\n\t\t\t\t\tvec2 invSize = 1.0 / texSize;\n\t\t\t\t\tfloat sigma = kernelRadius/2.0;\n\t\t\t\t\tfloat weightSum = gaussianPdf(0.0, sigma);\n\t\t\t\t\tvec4 diffuseSum = texture2D( colorTexture, vUv) * weightSum;\n\t\t\t\t\tvec2 delta = direction * invSize * kernelRadius/float(MAX_RADIUS);\n\t\t\t\t\tvec2 uvOffset = delta;\n\t\t\t\t\tfor( int i = 1; i <= MAX_RADIUS; i ++ ) {\n\t\t\t\t\t\tfloat x = kernelRadius * float(i) / float(MAX_RADIUS);\n\t\t\t\t\t\tfloat w = gaussianPdf(x, sigma);\n\t\t\t\t\t\tvec4 sample1 = texture2D( colorTexture, vUv + uvOffset);\n\t\t\t\t\t\tvec4 sample2 = texture2D( colorTexture, vUv - uvOffset);\n\t\t\t\t\t\tdiffuseSum += ((sample1 + sample2) * w);\n\t\t\t\t\t\tweightSum += (2.0 * w);\n\t\t\t\t\t\tuvOffset += delta;\n\t\t\t\t\t}\n\t\t\t\t\tgl_FragColor = diffuseSum/weightSum;\n\t\t\t\t}"})}getOverlayMaterial(){return new Yt({uniforms:{maskTexture:{value:null},edgeTexture1:{value:null},edgeTexture2:{value:null},patternTexture:{value:null},edgeStrength:{value:1},edgeGlow:{value:1},usePatternTexture:{value:0}},vertexShader:"varying vec2 vUv;\n\n\t\t\t\tvoid main() {\n\t\t\t\t\tvUv = uv;\n\t\t\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\t\t\t\t}",fragmentShader:"varying vec2 vUv;\n\n\t\t\t\tuniform sampler2D maskTexture;\n\t\t\t\tuniform sampler2D edgeTexture1;\n\t\t\t\tuniform sampler2D edgeTexture2;\n\t\t\t\tuniform sampler2D patternTexture;\n\t\t\t\tuniform float edgeStrength;\n\t\t\t\tuniform float edgeGlow;\n\t\t\t\tuniform bool usePatternTexture;\n\n\t\t\t\tvoid main() {\n\t\t\t\t\tvec4 edgeValue1 = texture2D(edgeTexture1, vUv);\n\t\t\t\t\tvec4 edgeValue2 = texture2D(edgeTexture2, vUv);\n\t\t\t\t\tvec4 maskColor = texture2D(maskTexture, vUv);\n\t\t\t\t\tvec4 patternColor = texture2D(patternTexture, 6.0 * vUv);\n\t\t\t\t\tfloat visibilityFactor = 1.0 - maskColor.g > 0.0 ? 1.0 : 0.5;\n\t\t\t\t\tvec4 edgeValue = edgeValue1 + edgeValue2 * edgeGlow;\n\t\t\t\t\tvec4 finalColor = edgeStrength * maskColor.r * edgeValue;\n\t\t\t\t\tif(usePatternTexture)\n\t\t\t\t\t\tfinalColor += + visibilityFactor * (1.0 - maskColor.r) * (1.0 - patternColor.r);\n\t\t\t\t\tgl_FragColor = finalColor;\n\t\t\t\t}",blending:vp,depthTest:!1,depthWrite:!1,transparent:!0})}};au.BlurDirectionX=new le(1,0),au.BlurDirectionY=new le(0,1);var w3=class extends as{constructor(e,t,i,r,n){super(),this.scene=e,this.camera=t,this.overrideMaterial=i,this.clearColor=r,this.clearAlpha=void 0!==n?n:0,this.clear=!0,this.clearDepth=!1,this.needsSwap=!1,this._oldClearColor=new je}render(e,t,i){let r,n,s=e.autoClear;e.autoClear=!1,void 0!==this.overrideMaterial&&(n=this.scene.overrideMaterial,this.scene.overrideMaterial=this.overrideMaterial),this.clearColor&&(e.getClearColor(this._oldClearColor),r=e.getClearAlpha(),e.setClearColor(this.clearColor,this.clearAlpha)),this.clearDepth&&e.clearDepth(),e.setRenderTarget(this.renderToScreen?null:i),this.clear&&e.clear(e.autoClearColor,e.autoClearDepth,e.autoClearStencil),e.render(this.scene,this.camera),this.clearColor&&e.setClearColor(this._oldClearColor,r),void 0!==this.overrideMaterial&&(this.scene.overrideMaterial=n),e.autoClear=s}},K_={defines:{NUM_SAMPLES:7,NUM_RINGS:4,NORMAL_TEXTURE:0,DIFFUSE_TEXTURE:0,DEPTH_PACKING:1,PERSPECTIVE_CAMERA:1},uniforms:{tDepth:{value:null},tDiffuse:{value:null},tNormal:{value:null},size:{value:new le(512,512)},cameraNear:{value:1},cameraFar:{value:100},cameraProjectionMatrix:{value:new Be},cameraInverseProjectionMatrix:{value:new Be},scale:{value:1},intensity:{value:.1},bias:{value:.5},minResolution:{value:0},kernelRadius:{value:100},randomSeed:{value:0}},vertexShader:"\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\t\t\tvUv = uv;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\t\t}",fragmentShader:"\n\n\t\t#include \n\n\t\tvarying vec2 vUv;\n\n\t\t#if DIFFUSE_TEXTURE == 1\n\t\tuniform sampler2D tDiffuse;\n\t\t#endif\n\n\t\tuniform sampler2D tDepth;\n\n\t\t#if NORMAL_TEXTURE == 1\n\t\tuniform sampler2D tNormal;\n\t\t#endif\n\n\t\tuniform float cameraNear;\n\t\tuniform float cameraFar;\n\t\tuniform mat4 cameraProjectionMatrix;\n\t\tuniform mat4 cameraInverseProjectionMatrix;\n\n\t\tuniform float scale;\n\t\tuniform float intensity;\n\t\tuniform float bias;\n\t\tuniform float kernelRadius;\n\t\tuniform float minResolution;\n\t\tuniform vec2 size;\n\t\tuniform float randomSeed;\n\n\t\t// RGBA depth\n\n\t\t#include \n\n\t\tvec4 getDefaultColor( const in vec2 screenPosition ) {\n\t\t\t#if DIFFUSE_TEXTURE == 1\n\t\t\treturn texture2D( tDiffuse, vUv );\n\t\t\t#else\n\t\t\treturn vec4( 1.0 );\n\t\t\t#endif\n\t\t}\n\n\t\tfloat getDepth( const in vec2 screenPosition ) {\n\t\t\t#if DEPTH_PACKING == 1\n\t\t\treturn unpackRGBAToDepth( texture2D( tDepth, screenPosition ) );\n\t\t\t#else\n\t\t\treturn texture2D( tDepth, screenPosition ).x;\n\t\t\t#endif\n\t\t}\n\n\t\tfloat getViewZ( const in float depth ) {\n\t\t\t#if PERSPECTIVE_CAMERA == 1\n\t\t\treturn perspectiveDepthToViewZ( depth, cameraNear, cameraFar );\n\t\t\t#else\n\t\t\treturn orthographicDepthToViewZ( depth, cameraNear, cameraFar );\n\t\t\t#endif\n\t\t}\n\n\t\tvec3 getViewPosition( const in vec2 screenPosition, const in float depth, const in float viewZ ) {\n\t\t\tfloat clipW = cameraProjectionMatrix[2][3] * viewZ + cameraProjectionMatrix[3][3];\n\t\t\tvec4 clipPosition = vec4( ( vec3( screenPosition, depth ) - 0.5 ) * 2.0, 1.0 );\n\t\t\tclipPosition *= clipW; // unprojection.\n\n\t\t\treturn ( cameraInverseProjectionMatrix * clipPosition ).xyz;\n\t\t}\n\n\t\tvec3 getViewNormal( const in vec3 viewPosition, const in vec2 screenPosition ) {\n\t\t\t#if NORMAL_TEXTURE == 1\n\t\t\treturn unpackRGBToNormal( texture2D( tNormal, screenPosition ).xyz );\n\t\t\t#else\n\t\t\treturn normalize( cross( dFdx( viewPosition ), dFdy( viewPosition ) ) );\n\t\t\t#endif\n\t\t}\n\n\t\tfloat scaleDividedByCameraFar;\n\t\tfloat minResolutionMultipliedByCameraFar;\n\n\t\tfloat getOcclusion( const in vec3 centerViewPosition, const in vec3 centerViewNormal, const in vec3 sampleViewPosition ) {\n\t\t\tvec3 viewDelta = sampleViewPosition - centerViewPosition;\n\t\t\tfloat viewDistance = length( viewDelta );\n\t\t\tfloat scaledScreenDistance = scaleDividedByCameraFar * viewDistance;\n\n\t\t\treturn max(0.0, (dot(centerViewNormal, viewDelta) - minResolutionMultipliedByCameraFar) / scaledScreenDistance - bias) / (1.0 + pow2( scaledScreenDistance ) );\n\t\t}\n\n\t\t// moving costly divides into consts\n\t\tconst float ANGLE_STEP = PI2 * float( NUM_RINGS ) / float( NUM_SAMPLES );\n\t\tconst float INV_NUM_SAMPLES = 1.0 / float( NUM_SAMPLES );\n\n\t\tfloat getAmbientOcclusion( const in vec3 centerViewPosition ) {\n\t\t\t// precompute some variables require in getOcclusion.\n\t\t\tscaleDividedByCameraFar = scale / cameraFar;\n\t\t\tminResolutionMultipliedByCameraFar = minResolution * cameraFar;\n\t\t\tvec3 centerViewNormal = getViewNormal( centerViewPosition, vUv );\n\n\t\t\t// jsfiddle that shows sample pattern: https://jsfiddle.net/a16ff1p7/\n\t\t\tfloat angle = rand( vUv + randomSeed ) * PI2;\n\t\t\tvec2 radius = vec2( kernelRadius * INV_NUM_SAMPLES ) / size;\n\t\t\tvec2 radiusStep = radius;\n\n\t\t\tfloat occlusionSum = 0.0;\n\t\t\tfloat weightSum = 0.0;\n\n\t\t\tfor( int i = 0; i < NUM_SAMPLES; i ++ ) {\n\t\t\t\tvec2 sampleUv = vUv + vec2( cos( angle ), sin( angle ) ) * radius;\n\t\t\t\tradius += radiusStep;\n\t\t\t\tangle += ANGLE_STEP;\n\n\t\t\t\tfloat sampleDepth = getDepth( sampleUv );\n\t\t\t\tif( sampleDepth >= ( 1.0 - EPSILON ) ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tfloat sampleViewZ = getViewZ( sampleDepth );\n\t\t\t\tvec3 sampleViewPosition = getViewPosition( sampleUv, sampleDepth, sampleViewZ );\n\t\t\t\tocclusionSum += getOcclusion( centerViewPosition, centerViewNormal, sampleViewPosition );\n\t\t\t\tweightSum += 1.0;\n\t\t\t}\n\n\t\t\tif( weightSum == 0.0 ) discard;\n\n\t\t\treturn occlusionSum * ( intensity / weightSum );\n\t\t}\n\n\t\tvoid main() {\n\t\t\tfloat centerDepth = getDepth( vUv );\n\t\t\tif( centerDepth >= ( 1.0 - EPSILON ) ) {\n\t\t\t\tdiscard;\n\t\t\t}\n\n\t\t\tfloat centerViewZ = getViewZ( centerDepth );\n\t\t\tvec3 viewPosition = getViewPosition( vUv, centerDepth, centerViewZ );\n\n\t\t\tfloat ambientOcclusion = getAmbientOcclusion( viewPosition );\n\n\t\t\tgl_FragColor = getDefaultColor( vUv );\n\t\t\tgl_FragColor.xyz *= 1.0 - ambientOcclusion;\n\t\t}"},pd={defines:{KERNEL_RADIUS:4,DEPTH_PACKING:1,PERSPECTIVE_CAMERA:1},uniforms:{tDiffuse:{value:null},size:{value:new le(512,512)},sampleUvOffsets:{value:[new le(0,0)]},sampleWeights:{value:[1]},tDepth:{value:null},cameraNear:{value:10},cameraFar:{value:1e3},depthCutoff:{value:10}},vertexShader:"\n\n\t\t#include \n\n\t\tuniform vec2 size;\n\n\t\tvarying vec2 vUv;\n\t\tvarying vec2 vInvSize;\n\n\t\tvoid main() {\n\t\t\tvUv = uv;\n\t\t\tvInvSize = 1.0 / size;\n\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\t\t}",fragmentShader:"\n\n\t\t#include \n\t\t#include \n\n\t\tuniform sampler2D tDiffuse;\n\t\tuniform sampler2D tDepth;\n\n\t\tuniform float cameraNear;\n\t\tuniform float cameraFar;\n\t\tuniform float depthCutoff;\n\n\t\tuniform vec2 sampleUvOffsets[ KERNEL_RADIUS + 1 ];\n\t\tuniform float sampleWeights[ KERNEL_RADIUS + 1 ];\n\n\t\tvarying vec2 vUv;\n\t\tvarying vec2 vInvSize;\n\n\t\tfloat getDepth( const in vec2 screenPosition ) {\n\t\t\t#if DEPTH_PACKING == 1\n\t\t\treturn unpackRGBAToDepth( texture2D( tDepth, screenPosition ) );\n\t\t\t#else\n\t\t\treturn texture2D( tDepth, screenPosition ).x;\n\t\t\t#endif\n\t\t}\n\n\t\tfloat getViewZ( const in float depth ) {\n\t\t\t#if PERSPECTIVE_CAMERA == 1\n\t\t\treturn perspectiveDepthToViewZ( depth, cameraNear, cameraFar );\n\t\t\t#else\n\t\t\treturn orthographicDepthToViewZ( depth, cameraNear, cameraFar );\n\t\t\t#endif\n\t\t}\n\n\t\tvoid main() {\n\t\t\tfloat depth = getDepth( vUv );\n\t\t\tif( depth >= ( 1.0 - EPSILON ) ) {\n\t\t\t\tdiscard;\n\t\t\t}\n\n\t\t\tfloat centerViewZ = -getViewZ( depth );\n\t\t\tbool rBreak = false, lBreak = false;\n\n\t\t\tfloat weightSum = sampleWeights[0];\n\t\t\tvec4 diffuseSum = texture2D( tDiffuse, vUv ) * weightSum;\n\n\t\t\tfor( int i = 1; i <= KERNEL_RADIUS; i ++ ) {\n\n\t\t\t\tfloat sampleWeight = sampleWeights[i];\n\t\t\t\tvec2 sampleUvOffset = sampleUvOffsets[i] * vInvSize;\n\n\t\t\t\tvec2 sampleUv = vUv + sampleUvOffset;\n\t\t\t\tfloat viewZ = -getViewZ( getDepth( sampleUv ) );\n\n\t\t\t\tif( abs( viewZ - centerViewZ ) > depthCutoff ) rBreak = true;\n\n\t\t\t\tif( ! rBreak ) {\n\t\t\t\t\tdiffuseSum += texture2D( tDiffuse, sampleUv ) * sampleWeight;\n\t\t\t\t\tweightSum += sampleWeight;\n\t\t\t\t}\n\n\t\t\t\tsampleUv = vUv - sampleUvOffset;\n\t\t\t\tviewZ = -getViewZ( getDepth( sampleUv ) );\n\n\t\t\t\tif( abs( viewZ - centerViewZ ) > depthCutoff ) lBreak = true;\n\n\t\t\t\tif( ! lBreak ) {\n\t\t\t\t\tdiffuseSum += texture2D( tDiffuse, sampleUv ) * sampleWeight;\n\t\t\t\t\tweightSum += sampleWeight;\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tgl_FragColor = diffuseSum / weightSum;\n\t\t}"},Z_={createSampleWeights:function(e,t){let i=[];for(let r=0;r<=e;r++)i.push(CNt(r,t));return i},createSampleOffsets:function(e,t){let i=[];for(let r=0;r<=e;r++)i.push(t.clone().multiplyScalar(r));return i},configure:function(e,t,i,r){e.defines.KERNEL_RADIUS=t,e.uniforms.sampleUvOffsets.value=Z_.createSampleOffsets(t,r),e.uniforms.sampleWeights.value=Z_.createSampleWeights(t,i),e.needsUpdate=!0}};function CNt(e,t){return Math.exp(-e*e/(t*t*2))/(Math.sqrt(2*Math.PI)*t)}var R3={uniforms:{tDiffuse:{value:null},opacity:{value:1}},vertexShader:"\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}",fragmentShader:"\n\n\t\tuniform float opacity;\n\n\t\tuniform sampler2D tDiffuse;\n\n\t\tvarying vec2 vUv;\n\n\t\t#include \n\n\t\tvoid main() {\n\n\t\t\tfloat depth = 1.0 - unpackRGBAToDepth( texture2D( tDiffuse, vUv ) );\n\t\t\tgl_FragColor = vec4( vec3( depth ), opacity );\n\n\t\t}"},J_=class extends as{constructor(e,t,i=!1,r=!1,n=new le(256,256)){let s;super(),this.scene=e,this.camera=t,this.clear=!0,this.needsSwap=!1,this.supportsDepthTextureExtension=i,this.supportsNormalTexture=r,this.originalClearColor=new je,this._oldClearColor=new je,this.oldClearAlpha=1,this.params={output:0,saoBias:.5,saoIntensity:.18,saoScale:1,saoKernelRadius:100,saoMinResolution:0,saoBlur:!0,saoBlurRadius:8,saoBlurStdDev:4,saoBlurDepthCutoff:.01},this.resolution=new le(n.x,n.y),this.saoRenderTarget=new zr(this.resolution.x,this.resolution.y),this.blurIntermediateRenderTarget=this.saoRenderTarget.clone(),this.beautyRenderTarget=this.saoRenderTarget.clone(),this.normalRenderTarget=new zr(this.resolution.x,this.resolution.y,{minFilter:Ci,magFilter:Ci}),this.depthRenderTarget=this.normalRenderTarget.clone(),this.supportsDepthTextureExtension&&(s=new cf,s.type=Ax,this.beautyRenderTarget.depthTexture=s,this.beautyRenderTarget.depthBuffer=!0),this.depthMaterial=new Ip,this.depthMaterial.depthPacking=Wy,this.depthMaterial.blending=Ui,this.normalMaterial=new pf,this.normalMaterial.blending=Ui,this.saoMaterial=new Yt({defines:Object.assign({},K_.defines),fragmentShader:K_.fragmentShader,vertexShader:K_.vertexShader,uniforms:pn.clone(K_.uniforms)}),this.saoMaterial.extensions.derivatives=!0,this.saoMaterial.defines.DEPTH_PACKING=this.supportsDepthTextureExtension?0:1,this.saoMaterial.defines.NORMAL_TEXTURE=this.supportsNormalTexture?1:0,this.saoMaterial.defines.PERSPECTIVE_CAMERA=this.camera.isPerspectiveCamera?1:0,this.saoMaterial.uniforms.tDepth.value=this.supportsDepthTextureExtension?s:this.depthRenderTarget.texture,this.saoMaterial.uniforms.tNormal.value=this.normalRenderTarget.texture,this.saoMaterial.uniforms.size.value.set(this.resolution.x,this.resolution.y),this.saoMaterial.uniforms.cameraInverseProjectionMatrix.value.copy(this.camera.projectionMatrixInverse),this.saoMaterial.uniforms.cameraProjectionMatrix.value=this.camera.projectionMatrix,this.saoMaterial.blending=Ui,this.vBlurMaterial=new Yt({uniforms:pn.clone(pd.uniforms),defines:Object.assign({},pd.defines),vertexShader:pd.vertexShader,fragmentShader:pd.fragmentShader}),this.vBlurMaterial.defines.DEPTH_PACKING=this.supportsDepthTextureExtension?0:1,this.vBlurMaterial.defines.PERSPECTIVE_CAMERA=this.camera.isPerspectiveCamera?1:0,this.vBlurMaterial.uniforms.tDiffuse.value=this.saoRenderTarget.texture,this.vBlurMaterial.uniforms.tDepth.value=this.supportsDepthTextureExtension?s:this.depthRenderTarget.texture,this.vBlurMaterial.uniforms.size.value.set(this.resolution.x,this.resolution.y),this.vBlurMaterial.blending=Ui,this.hBlurMaterial=new Yt({uniforms:pn.clone(pd.uniforms),defines:Object.assign({},pd.defines),vertexShader:pd.vertexShader,fragmentShader:pd.fragmentShader}),this.hBlurMaterial.defines.DEPTH_PACKING=this.supportsDepthTextureExtension?0:1,this.hBlurMaterial.defines.PERSPECTIVE_CAMERA=this.camera.isPerspectiveCamera?1:0,this.hBlurMaterial.uniforms.tDiffuse.value=this.blurIntermediateRenderTarget.texture,this.hBlurMaterial.uniforms.tDepth.value=this.supportsDepthTextureExtension?s:this.depthRenderTarget.texture,this.hBlurMaterial.uniforms.size.value.set(this.resolution.x,this.resolution.y),this.hBlurMaterial.blending=Ui,this.materialCopy=new Yt({uniforms:pn.clone(aa.uniforms),vertexShader:aa.vertexShader,fragmentShader:aa.fragmentShader,blending:Ui}),this.materialCopy.transparent=!0,this.materialCopy.depthTest=!1,this.materialCopy.depthWrite=!1,this.materialCopy.blending=Fp,this.materialCopy.blendSrc=Vy,this.materialCopy.blendDst=mf,this.materialCopy.blendEquation=Sa,this.materialCopy.blendSrcAlpha=Gy,this.materialCopy.blendDstAlpha=mf,this.materialCopy.blendEquationAlpha=Sa,this.depthCopy=new Yt({uniforms:pn.clone(R3.uniforms),vertexShader:R3.vertexShader,fragmentShader:R3.fragmentShader,blending:Ui}),this.fsQuad=new sa(null)}render(e,t,i){if(this.renderToScreen&&(this.materialCopy.blending=Ui,this.materialCopy.uniforms.tDiffuse.value=i.texture,this.materialCopy.needsUpdate=!0,this.renderPass(e,this.materialCopy,null)),1===this.params.output)return;e.getClearColor(this._oldClearColor),this.oldClearAlpha=e.getClearAlpha();let r=e.autoClear;e.autoClear=!1,e.setRenderTarget(this.depthRenderTarget),e.clear(),this.saoMaterial.uniforms.bias.value=this.params.saoBias,this.saoMaterial.uniforms.intensity.value=this.params.saoIntensity,this.saoMaterial.uniforms.scale.value=this.params.saoScale,this.saoMaterial.uniforms.kernelRadius.value=this.params.saoKernelRadius,this.saoMaterial.uniforms.minResolution.value=this.params.saoMinResolution,this.saoMaterial.uniforms.cameraNear.value=this.camera.near,this.saoMaterial.uniforms.cameraFar.value=this.camera.far;let n=this.params.saoBlurDepthCutoff*(this.camera.far-this.camera.near);this.vBlurMaterial.uniforms.depthCutoff.value=n,this.hBlurMaterial.uniforms.depthCutoff.value=n,this.vBlurMaterial.uniforms.cameraNear.value=this.camera.near,this.vBlurMaterial.uniforms.cameraFar.value=this.camera.far,this.hBlurMaterial.uniforms.cameraNear.value=this.camera.near,this.hBlurMaterial.uniforms.cameraFar.value=this.camera.far,this.params.saoBlurRadius=Math.floor(this.params.saoBlurRadius),(this.prevStdDev!==this.params.saoBlurStdDev||this.prevNumSamples!==this.params.saoBlurRadius)&&(Z_.configure(this.vBlurMaterial,this.params.saoBlurRadius,this.params.saoBlurStdDev,new le(0,1)),Z_.configure(this.hBlurMaterial,this.params.saoBlurRadius,this.params.saoBlurStdDev,new le(1,0)),this.prevStdDev=this.params.saoBlurStdDev,this.prevNumSamples=this.params.saoBlurRadius),e.setClearColor(0),e.setRenderTarget(this.beautyRenderTarget),e.clear(),e.render(this.scene,this.camera),this.supportsDepthTextureExtension||this.renderOverride(e,this.depthMaterial,this.depthRenderTarget,0,1),this.supportsNormalTexture&&this.renderOverride(e,this.normalMaterial,this.normalRenderTarget,7829503,1),this.renderPass(e,this.saoMaterial,this.saoRenderTarget,16777215,1),this.params.saoBlur&&(this.renderPass(e,this.vBlurMaterial,this.blurIntermediateRenderTarget,16777215,1),this.renderPass(e,this.hBlurMaterial,this.saoRenderTarget,16777215,1));let s=this.materialCopy;3===this.params.output?this.supportsDepthTextureExtension?(this.materialCopy.uniforms.tDiffuse.value=this.beautyRenderTarget.depthTexture,this.materialCopy.needsUpdate=!0):(this.depthCopy.uniforms.tDiffuse.value=this.depthRenderTarget.texture,this.depthCopy.needsUpdate=!0,s=this.depthCopy):4===this.params.output?(this.materialCopy.uniforms.tDiffuse.value=this.normalRenderTarget.texture,this.materialCopy.needsUpdate=!0):(this.materialCopy.uniforms.tDiffuse.value=this.saoRenderTarget.texture,this.materialCopy.needsUpdate=!0),0===this.params.output?s.blending=Fp:s.blending=Ui,this.renderPass(e,s,this.renderToScreen?null:i),e.setClearColor(this._oldClearColor,this.oldClearAlpha),e.autoClear=r}renderPass(e,t,i,r,n){e.getClearColor(this.originalClearColor);let s=e.getClearAlpha(),a=e.autoClear;e.setRenderTarget(i),e.autoClear=!1,null!=r&&(e.setClearColor(r),e.setClearAlpha(n||0),e.clear()),this.fsQuad.material=t,this.fsQuad.render(e),e.autoClear=a,e.setClearColor(this.originalClearColor),e.setClearAlpha(s)}renderOverride(e,t,i,r,n){e.getClearColor(this.originalClearColor);let s=e.getClearAlpha(),a=e.autoClear;e.setRenderTarget(i),e.autoClear=!1,r=t.clearColor||r,n=t.clearAlpha||n,null!=r&&(e.setClearColor(r),e.setClearAlpha(n||0),e.clear()),this.scene.overrideMaterial=t,e.render(this.scene,this.camera),this.scene.overrideMaterial=null,e.autoClear=a,e.setClearColor(this.originalClearColor),e.setClearAlpha(s)}setSize(e,t){this.beautyRenderTarget.setSize(e,t),this.saoRenderTarget.setSize(e,t),this.blurIntermediateRenderTarget.setSize(e,t),this.normalRenderTarget.setSize(e,t),this.depthRenderTarget.setSize(e,t),this.saoMaterial.uniforms.size.value.set(e,t),this.saoMaterial.uniforms.cameraInverseProjectionMatrix.value.copy(this.camera.projectionMatrixInverse),this.saoMaterial.uniforms.cameraProjectionMatrix.value=this.camera.projectionMatrix,this.saoMaterial.needsUpdate=!0,this.vBlurMaterial.uniforms.size.value.set(e,t),this.vBlurMaterial.needsUpdate=!0,this.hBlurMaterial.uniforms.size.value.set(e,t),this.hBlurMaterial.needsUpdate=!0}dispose(){this.saoRenderTarget.dispose(),this.blurIntermediateRenderTarget.dispose(),this.beautyRenderTarget.dispose(),this.normalRenderTarget.dispose(),this.depthRenderTarget.dispose(),this.depthMaterial.dispose(),this.normalMaterial.dispose(),this.saoMaterial.dispose(),this.vBlurMaterial.dispose(),this.hBlurMaterial.dispose(),this.materialCopy.dispose(),this.depthCopy.dispose(),this.fsQuad.dispose()}};J_.OUTPUT={Beauty:1,Default:0,SAO:2,Depth:3,Normal:4};var M3=class extends as{constructor(e,t,i,r){super(),this.scene=e,this.camera=t,this.sampleLevel=4,this.unbiased=!0,this.clearColor=void 0!==i?i:0,this.clearAlpha=void 0!==r?r:0,this._oldClearColor=new je;let n=aa;this.copyUniforms=pn.clone(n.uniforms),this.copyMaterial=new Yt({uniforms:this.copyUniforms,vertexShader:n.vertexShader,fragmentShader:n.fragmentShader,transparent:!0,depthTest:!1,depthWrite:!1,blending:Fp,blendEquation:Sa,blendDst:ky,blendDstAlpha:ky,blendSrc:Dx,blendSrcAlpha:ky}),this.fsQuad=new sa(this.copyMaterial)}dispose(){this.sampleRenderTarget&&(this.sampleRenderTarget.dispose(),this.sampleRenderTarget=null),this.copyMaterial.dispose(),this.fsQuad.dispose()}setSize(e,t){this.sampleRenderTarget&&this.sampleRenderTarget.setSize(e,t)}render(e,t,i){this.sampleRenderTarget||(this.sampleRenderTarget=new zr(i.width,i.height),this.sampleRenderTarget.texture.name="SSAARenderPass.sample");let r=ANt[Math.max(0,Math.min(this.sampleLevel,5))],n=e.autoClear;e.autoClear=!1,e.getClearColor(this._oldClearColor);let s=e.getClearAlpha(),a=1/r.length;this.copyUniforms.tDiffuse.value=this.sampleRenderTarget.texture;let o={fullWidth:i.width,fullHeight:i.height,offsetX:0,offsetY:0,width:i.width,height:i.height},l=Object.assign({},this.camera.view);l.enabled&&Object.assign(o,l);for(let i=0;id?(s=1,a=0):(s=0,a=1);let f=p-s+u,m=d-a+u,g=p-1+2*u,y=d-1+2*u,v=255&l,T=255&h,x=this.perm[v+this.perm[T]]%12,b=this.perm[v+s+this.perm[T+a]]%12,_=this.perm[v+1+this.perm[T+1]]%12,E=.5-p*p-d*d;E<0?i=0:(E*=E,i=E*E*this.dot(this.grad3[x],p,d));let w=.5-f*f-m*m;w<0?r=0:(w*=w,r=w*w*this.dot(this.grad3[b],f,m));let S=.5-g*g-y*y;return S<0?n=0:(S*=S,n=S*S*this.dot(this.grad3[_],g,y)),70*(i+r+n)}noise3d(e,t,i){let r,n,s,a,o,l,h,u,c,p,d=.3333333333333333*(e+t+i),f=Math.floor(e+d),m=Math.floor(t+d),g=Math.floor(i+d),y=1/6,v=(f+m+g)*y,T=e-(f-v),x=t-(m-v),b=i-(g-v);T>=x?x>=b?(o=1,l=0,h=0,u=1,c=1,p=0):T>=b?(o=1,l=0,h=0,u=1,c=0,p=1):(o=0,l=0,h=1,u=1,c=0,p=1):xb?32:0)+(x>_?16:0)+(b>_?8:0)+(x>E?4:0)+(b>E?2:0)+(_>E?1:0),S=u[w][0]>=3?1:0,I=u[w][1]>=3?1:0,M=u[w][2]>=3?1:0,A=u[w][3]>=3?1:0,D=u[w][0]>=2?1:0,O=u[w][1]>=2?1:0,R=u[w][2]>=2?1:0,C=u[w][3]>=2?1:0,N=u[w][0]>=1?1:0,P=u[w][1]>=1?1:0,L=u[w][2]>=1?1:0,F=u[w][3]>=1?1:0,U=x-S+d,k=b-I+d,B=_-M+d,H=E-A+d,G=x-D+2*d,z=b-O+2*d,V=_-R+2*d,j=E-C+2*d,W=x-N+3*d,Y=b-P+3*d,X=_-L+3*d,q=E-F+3*d,Z=x-1+4*d,K=b-1+4*d,$=_-1+4*d,J=E-1+4*d,Q=255&m,ee=255&g,te=255&y,ie=255&v,re=c[Q+c[ee+c[te+c[ie]]]]%32,ne=c[Q+S+c[ee+I+c[te+M+c[ie+A]]]]%32,se=c[Q+D+c[ee+O+c[te+R+c[ie+C]]]]%32,ae=c[Q+N+c[ee+P+c[te+L+c[ie+F]]]]%32,oe=c[Q+1+c[ee+1+c[te+1+c[ie+1]]]]%32,le=.6-x*x-b*b-_*_-E*E;le<0?n=0:(le*=le,n=le*le*this.dot4(h[re],x,b,_,E));let he=.6-U*U-k*k-B*B-H*H;he<0?s=0:(he*=he,s=he*he*this.dot4(h[ne],U,k,B,H));let ue=.6-G*G-z*z-V*V-j*j;ue<0?a=0:(ue*=ue,a=ue*ue*this.dot4(h[se],G,z,V,j));let ce=.6-W*W-Y*Y-X*X-q*q;ce<0?o=0:(ce*=ce,o=ce*ce*this.dot4(h[ae],W,Y,X,q));let pe=.6-Z*Z-K*K-$*$-J*J;return pe<0?l=0:(pe*=pe,l=pe*pe*this.dot4(h[oe],Z,K,$,J)),27*(n+s+a+o+l)}},Q_={defines:{PERSPECTIVE_CAMERA:1,KERNEL_SIZE:32},uniforms:{tDiffuse:{value:null},tNormal:{value:null},tDepth:{value:null},tNoise:{value:null},kernel:{value:null},cameraNear:{value:null},cameraFar:{value:null},resolution:{value:new le},cameraProjectionMatrix:{value:new Be},cameraInverseProjectionMatrix:{value:new Be},kernelRadius:{value:8},minDistance:{value:.005},maxDistance:{value:.05}},vertexShader:"\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}",fragmentShader:"\n\n\t\tuniform sampler2D tDiffuse;\n\t\tuniform sampler2D tNormal;\n\t\tuniform sampler2D tDepth;\n\t\tuniform sampler2D tNoise;\n\n\t\tuniform vec3 kernel[ KERNEL_SIZE ];\n\n\t\tuniform vec2 resolution;\n\n\t\tuniform float cameraNear;\n\t\tuniform float cameraFar;\n\t\tuniform mat4 cameraProjectionMatrix;\n\t\tuniform mat4 cameraInverseProjectionMatrix;\n\n\t\tuniform float kernelRadius;\n\t\tuniform float minDistance; // avoid artifacts caused by neighbour fragments with minimal depth difference\n\t\tuniform float maxDistance; // avoid the influence of fragments which are too far away\n\n\t\tvarying vec2 vUv;\n\n\t\t#include \n\n\t\tfloat getDepth( const in vec2 screenPosition ) {\n\n\t\t\treturn texture2D( tDepth, screenPosition ).x;\n\n\t\t}\n\n\t\tfloat getLinearDepth( const in vec2 screenPosition ) {\n\n\t\t\t#if PERSPECTIVE_CAMERA == 1\n\n\t\t\t\tfloat fragCoordZ = texture2D( tDepth, screenPosition ).x;\n\t\t\t\tfloat viewZ = perspectiveDepthToViewZ( fragCoordZ, cameraNear, cameraFar );\n\t\t\t\treturn viewZToOrthographicDepth( viewZ, cameraNear, cameraFar );\n\n\t\t\t#else\n\n\t\t\t\treturn texture2D( tDepth, screenPosition ).x;\n\n\t\t\t#endif\n\n\t\t}\n\n\t\tfloat getViewZ( const in float depth ) {\n\n\t\t\t#if PERSPECTIVE_CAMERA == 1\n\n\t\t\t\treturn perspectiveDepthToViewZ( depth, cameraNear, cameraFar );\n\n\t\t\t#else\n\n\t\t\t\treturn orthographicDepthToViewZ( depth, cameraNear, cameraFar );\n\n\t\t\t#endif\n\n\t\t}\n\n\t\tvec3 getViewPosition( const in vec2 screenPosition, const in float depth, const in float viewZ ) {\n\n\t\t\tfloat clipW = cameraProjectionMatrix[2][3] * viewZ + cameraProjectionMatrix[3][3];\n\n\t\t\tvec4 clipPosition = vec4( ( vec3( screenPosition, depth ) - 0.5 ) * 2.0, 1.0 );\n\n\t\t\tclipPosition *= clipW; // unprojection.\n\n\t\t\treturn ( cameraInverseProjectionMatrix * clipPosition ).xyz;\n\n\t\t}\n\n\t\tvec3 getViewNormal( const in vec2 screenPosition ) {\n\n\t\t\treturn unpackRGBToNormal( texture2D( tNormal, screenPosition ).xyz );\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tfloat depth = getDepth( vUv );\n\t\t\tfloat viewZ = getViewZ( depth );\n\n\t\t\tvec3 viewPosition = getViewPosition( vUv, depth, viewZ );\n\t\t\tvec3 viewNormal = getViewNormal( vUv );\n\n\t\t\tvec2 noiseScale = vec2( resolution.x / 4.0, resolution.y / 4.0 );\n\t\t\tvec3 random = vec3( texture2D( tNoise, vUv * noiseScale ).r );\n\n\t\t\t// compute matrix used to reorient a kernel vector\n\n\t\t\tvec3 tangent = normalize( random - viewNormal * dot( random, viewNormal ) );\n\t\t\tvec3 bitangent = cross( viewNormal, tangent );\n\t\t\tmat3 kernelMatrix = mat3( tangent, bitangent, viewNormal );\n\n\t\t float occlusion = 0.0;\n\n\t\t for ( int i = 0; i < KERNEL_SIZE; i ++ ) {\n\n\t\t\t\tvec3 sampleVector = kernelMatrix * kernel[ i ]; // reorient sample vector in view space\n\t\t\t\tvec3 samplePoint = viewPosition + ( sampleVector * kernelRadius ); // calculate sample point\n\n\t\t\t\tvec4 samplePointNDC = cameraProjectionMatrix * vec4( samplePoint, 1.0 ); // project point and calculate NDC\n\t\t\t\tsamplePointNDC /= samplePointNDC.w;\n\n\t\t\t\tvec2 samplePointUv = samplePointNDC.xy * 0.5 + 0.5; // compute uv coordinates\n\n\t\t\t\tfloat realDepth = getLinearDepth( samplePointUv ); // get linear depth from depth texture\n\t\t\t\tfloat sampleDepth = viewZToOrthographicDepth( samplePoint.z, cameraNear, cameraFar ); // compute linear depth of the sample view Z value\n\t\t\t\tfloat delta = sampleDepth - realDepth;\n\n\t\t\t\tif ( delta > minDistance && delta < maxDistance ) { // if fragment is before sample point, increase occlusion\n\n\t\t\t\t\tocclusion += 1.0;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tocclusion = clamp( occlusion / float( KERNEL_SIZE ), 0.0, 1.0 );\n\n\t\t\tgl_FragColor = vec4( vec3( 1.0 - occlusion ), 1.0 );\n\n\t\t}"},eS={defines:{PERSPECTIVE_CAMERA:1},uniforms:{tDepth:{value:null},cameraNear:{value:null},cameraFar:{value:null}},vertexShader:"varying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}",fragmentShader:"uniform sampler2D tDepth;\n\n\t\tuniform float cameraNear;\n\t\tuniform float cameraFar;\n\n\t\tvarying vec2 vUv;\n\n\t\t#include \n\n\t\tfloat getLinearDepth( const in vec2 screenPosition ) {\n\n\t\t\t#if PERSPECTIVE_CAMERA == 1\n\n\t\t\t\tfloat fragCoordZ = texture2D( tDepth, screenPosition ).x;\n\t\t\t\tfloat viewZ = perspectiveDepthToViewZ( fragCoordZ, cameraNear, cameraFar );\n\t\t\t\treturn viewZToOrthographicDepth( viewZ, cameraNear, cameraFar );\n\n\t\t\t#else\n\n\t\t\t\treturn texture2D( tDepth, screenPosition ).x;\n\n\t\t\t#endif\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tfloat depth = getLinearDepth( vUv );\n\t\t\tgl_FragColor = vec4( vec3( 1.0 - depth ), 1.0 );\n\n\t\t}"},tS={uniforms:{tDiffuse:{value:null},resolution:{value:new le}},vertexShader:"varying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}",fragmentShader:"uniform sampler2D tDiffuse;\n\n\t\tuniform vec2 resolution;\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvec2 texelSize = ( 1.0 / resolution );\n\t\t\tfloat result = 0.0;\n\n\t\t\tfor ( int i = - 2; i <= 2; i ++ ) {\n\n\t\t\t\tfor ( int j = - 2; j <= 2; j ++ ) {\n\n\t\t\t\t\tvec2 offset = ( vec2( float( i ), float( j ) ) ) * texelSize;\n\t\t\t\t\tresult += texture2D( tDiffuse, vUv + offset ).r;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tgl_FragColor = vec4( vec3( result / ( 5.0 * 5.0 ) ), 1.0 );\n\n\t\t}"},rc=class extends as{constructor(e,t,i,r){super(),this.width=void 0!==i?i:512,this.height=void 0!==r?r:512,this.clear=!0,this.camera=t,this.scene=e,this.kernelRadius=8,this.kernelSize=32,this.kernel=[],this.noiseTexture=null,this.output=0,this.minDistance=.005,this.maxDistance=.1,this._visibilityCache=new Map,this.generateSampleKernel(),this.generateRandomKernelRotations();let n=new cf;n.format=Tp,n.type=gp,this.beautyRenderTarget=new zr(this.width,this.height),this.normalRenderTarget=new zr(this.width,this.height,{minFilter:Ci,magFilter:Ci,depthTexture:n}),this.ssaoRenderTarget=new zr(this.width,this.height),this.blurRenderTarget=this.ssaoRenderTarget.clone(),this.ssaoMaterial=new Yt({defines:Object.assign({},Q_.defines),uniforms:pn.clone(Q_.uniforms),vertexShader:Q_.vertexShader,fragmentShader:Q_.fragmentShader,blending:Ui}),this.ssaoMaterial.uniforms.tDiffuse.value=this.beautyRenderTarget.texture,this.ssaoMaterial.uniforms.tNormal.value=this.normalRenderTarget.texture,this.ssaoMaterial.uniforms.tDepth.value=this.normalRenderTarget.depthTexture,this.ssaoMaterial.uniforms.tNoise.value=this.noiseTexture,this.ssaoMaterial.uniforms.kernel.value=this.kernel,this.ssaoMaterial.uniforms.cameraNear.value=this.camera.near,this.ssaoMaterial.uniforms.cameraFar.value=this.camera.far,this.ssaoMaterial.uniforms.resolution.value.set(this.width,this.height),this.ssaoMaterial.uniforms.cameraProjectionMatrix.value.copy(this.camera.projectionMatrix),this.ssaoMaterial.uniforms.cameraInverseProjectionMatrix.value.copy(this.camera.projectionMatrixInverse),this.normalMaterial=new pf,this.normalMaterial.blending=Ui,this.blurMaterial=new Yt({defines:Object.assign({},tS.defines),uniforms:pn.clone(tS.uniforms),vertexShader:tS.vertexShader,fragmentShader:tS.fragmentShader}),this.blurMaterial.uniforms.tDiffuse.value=this.ssaoRenderTarget.texture,this.blurMaterial.uniforms.resolution.value.set(this.width,this.height),this.depthRenderMaterial=new Yt({defines:Object.assign({},eS.defines),uniforms:pn.clone(eS.uniforms),vertexShader:eS.vertexShader,fragmentShader:eS.fragmentShader,blending:Ui}),this.depthRenderMaterial.uniforms.tDepth.value=this.normalRenderTarget.depthTexture,this.depthRenderMaterial.uniforms.cameraNear.value=this.camera.near,this.depthRenderMaterial.uniforms.cameraFar.value=this.camera.far,this.copyMaterial=new Yt({uniforms:pn.clone(aa.uniforms),vertexShader:aa.vertexShader,fragmentShader:aa.fragmentShader,transparent:!0,depthTest:!1,depthWrite:!1,blendSrc:Vy,blendDst:mf,blendEquation:Sa,blendSrcAlpha:Gy,blendDstAlpha:mf,blendEquationAlpha:Sa}),this.fsQuad=new sa(null),this.originalClearColor=new je}dispose(){this.beautyRenderTarget.dispose(),this.normalRenderTarget.dispose(),this.ssaoRenderTarget.dispose(),this.blurRenderTarget.dispose(),this.normalMaterial.dispose(),this.blurMaterial.dispose(),this.copyMaterial.dispose(),this.depthRenderMaterial.dispose(),this.fsQuad.dispose()}render(e,t){switch(!1===e.capabilities.isWebGL2&&(this.noiseTexture.format=nC),e.setRenderTarget(this.beautyRenderTarget),e.clear(),e.render(this.scene,this.camera),this.overrideVisibility(),this.renderOverride(e,this.normalMaterial,this.normalRenderTarget,7829503,1),this.restoreVisibility(),this.ssaoMaterial.uniforms.kernelRadius.value=this.kernelRadius,this.ssaoMaterial.uniforms.minDistance.value=this.minDistance,this.ssaoMaterial.uniforms.maxDistance.value=this.maxDistance,this.renderPass(e,this.ssaoMaterial,this.ssaoRenderTarget),this.renderPass(e,this.blurMaterial,this.blurRenderTarget),this.output){case rc.OUTPUT.SSAO:this.copyMaterial.uniforms.tDiffuse.value=this.ssaoRenderTarget.texture,this.copyMaterial.blending=Ui,this.renderPass(e,this.copyMaterial,this.renderToScreen?null:t);break;case rc.OUTPUT.Blur:this.copyMaterial.uniforms.tDiffuse.value=this.blurRenderTarget.texture,this.copyMaterial.blending=Ui,this.renderPass(e,this.copyMaterial,this.renderToScreen?null:t);break;case rc.OUTPUT.Beauty:this.copyMaterial.uniforms.tDiffuse.value=this.beautyRenderTarget.texture,this.copyMaterial.blending=Ui,this.renderPass(e,this.copyMaterial,this.renderToScreen?null:t);break;case rc.OUTPUT.Depth:this.renderPass(e,this.depthRenderMaterial,this.renderToScreen?null:t);break;case rc.OUTPUT.Normal:this.copyMaterial.uniforms.tDiffuse.value=this.normalRenderTarget.texture,this.copyMaterial.blending=Ui,this.renderPass(e,this.copyMaterial,this.renderToScreen?null:t);break;case rc.OUTPUT.Default:this.copyMaterial.uniforms.tDiffuse.value=this.beautyRenderTarget.texture,this.copyMaterial.blending=Ui,this.renderPass(e,this.copyMaterial,this.renderToScreen?null:t),this.copyMaterial.uniforms.tDiffuse.value=this.blurRenderTarget.texture,this.copyMaterial.blending=Fp,this.renderPass(e,this.copyMaterial,this.renderToScreen?null:t);break;default:console.warn("THREE.SSAOPass: Unknown output type.")}}renderPass(e,t,i,r,n){e.getClearColor(this.originalClearColor);let s=e.getClearAlpha(),a=e.autoClear;e.setRenderTarget(i),e.autoClear=!1,null!=r&&(e.setClearColor(r),e.setClearAlpha(n||0),e.clear()),this.fsQuad.material=t,this.fsQuad.render(e),e.autoClear=a,e.setClearColor(this.originalClearColor),e.setClearAlpha(s)}renderOverride(e,t,i,r,n){e.getClearColor(this.originalClearColor);let s=e.getClearAlpha(),a=e.autoClear;e.setRenderTarget(i),e.autoClear=!1,r=t.clearColor||r,n=t.clearAlpha||n,null!=r&&(e.setClearColor(r),e.setClearAlpha(n||0),e.clear()),this.scene.overrideMaterial=t,e.render(this.scene,this.camera),this.scene.overrideMaterial=null,e.autoClear=a,e.setClearColor(this.originalClearColor),e.setClearAlpha(s)}setSize(e,t){this.width=e,this.height=t,this.beautyRenderTarget.setSize(e,t),this.ssaoRenderTarget.setSize(e,t),this.normalRenderTarget.setSize(e,t),this.blurRenderTarget.setSize(e,t),this.ssaoMaterial.uniforms.resolution.value.set(e,t),this.ssaoMaterial.uniforms.cameraProjectionMatrix.value.copy(this.camera.projectionMatrix),this.ssaoMaterial.uniforms.cameraInverseProjectionMatrix.value.copy(this.camera.projectionMatrixInverse),this.blurMaterial.uniforms.resolution.value.set(e,t)}generateSampleKernel(){let e=this.kernelSize,t=this.kernel;for(let i=0;i\n\t\t\t\tvarying vec2 vUv;\n\t\t\t\tuniform sampler2D colorTexture;\n\t\t\t\tuniform vec2 texSize;\n\t\t\t\tuniform vec2 direction;\n\n\t\t\t\tfloat gaussianPdf(in float x, in float sigma) {\n\t\t\t\t\treturn 0.39894 * exp( -0.5 * x * x/( sigma * sigma))/sigma;\n\t\t\t\t}\n\t\t\t\tvoid main() {\n\t\t\t\t\tvec2 invSize = 1.0 / texSize;\n\t\t\t\t\tfloat fSigma = float(SIGMA);\n\t\t\t\t\tfloat weightSum = gaussianPdf(0.0, fSigma);\n\t\t\t\t\tvec3 diffuseSum = texture2D( colorTexture, vUv).rgb * weightSum;\n\t\t\t\t\tfor( int i = 1; i < KERNEL_RADIUS; i ++ ) {\n\t\t\t\t\t\tfloat x = float(i);\n\t\t\t\t\t\tfloat w = gaussianPdf(x, fSigma);\n\t\t\t\t\t\tvec2 uvOffset = direction * invSize * x;\n\t\t\t\t\t\tvec3 sample1 = texture2D( colorTexture, vUv + uvOffset).rgb;\n\t\t\t\t\t\tvec3 sample2 = texture2D( colorTexture, vUv - uvOffset).rgb;\n\t\t\t\t\t\tdiffuseSum += (sample1 + sample2) * w;\n\t\t\t\t\t\tweightSum += 2.0 * w;\n\t\t\t\t\t}\n\t\t\t\t\tgl_FragColor = vec4(diffuseSum/weightSum, 1.0);\n\t\t\t\t}"})}getCompositeMaterial(e){return new Yt({defines:{NUM_MIPS:e},uniforms:{blurTexture1:{value:null},blurTexture2:{value:null},blurTexture3:{value:null},blurTexture4:{value:null},blurTexture5:{value:null},bloomStrength:{value:1},bloomFactors:{value:null},bloomTintColors:{value:null},bloomRadius:{value:0}},vertexShader:"varying vec2 vUv;\n\t\t\t\tvoid main() {\n\t\t\t\t\tvUv = uv;\n\t\t\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\t\t\t\t}",fragmentShader:"varying vec2 vUv;\n\t\t\t\tuniform sampler2D blurTexture1;\n\t\t\t\tuniform sampler2D blurTexture2;\n\t\t\t\tuniform sampler2D blurTexture3;\n\t\t\t\tuniform sampler2D blurTexture4;\n\t\t\t\tuniform sampler2D blurTexture5;\n\t\t\t\tuniform float bloomStrength;\n\t\t\t\tuniform float bloomRadius;\n\t\t\t\tuniform float bloomFactors[NUM_MIPS];\n\t\t\t\tuniform vec3 bloomTintColors[NUM_MIPS];\n\n\t\t\t\tfloat lerpBloomFactor(const in float factor) {\n\t\t\t\t\tfloat mirrorFactor = 1.2 - factor;\n\t\t\t\t\treturn mix(factor, mirrorFactor, bloomRadius);\n\t\t\t\t}\n\n\t\t\t\tvoid main() {\n\t\t\t\t\tgl_FragColor = bloomStrength * ( lerpBloomFactor(bloomFactors[0]) * vec4(bloomTintColors[0], 1.0) * texture2D(blurTexture1, vUv) +\n\t\t\t\t\t\tlerpBloomFactor(bloomFactors[1]) * vec4(bloomTintColors[1], 1.0) * texture2D(blurTexture2, vUv) +\n\t\t\t\t\t\tlerpBloomFactor(bloomFactors[2]) * vec4(bloomTintColors[2], 1.0) * texture2D(blurTexture3, vUv) +\n\t\t\t\t\t\tlerpBloomFactor(bloomFactors[3]) * vec4(bloomTintColors[3], 1.0) * texture2D(blurTexture4, vUv) +\n\t\t\t\t\t\tlerpBloomFactor(bloomFactors[4]) * vec4(bloomTintColors[4], 1.0) * texture2D(blurTexture5, vUv) );\n\t\t\t\t}"})}};dd.BlurDirectionX=new le(1,0),dd.BlurDirectionY=new le(0,1);var JDe={uniforms:{tDiffuse:{value:null},resolution:{value:new le(1/1024,1/512)}},vertexShader:"\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}",fragmentShader:"\n\tprecision highp float;\n\n\tuniform sampler2D tDiffuse;\n\n\tuniform vec2 resolution;\n\n\tvarying vec2 vUv;\n\n\t// FXAA 3.11 implementation by NVIDIA, ported to WebGL by Agost Biro (biro@archilogic.com)\n\n\t//----------------------------------------------------------------------------------\n\t// File: es3-keplerFXAAassetsshaders/FXAA_DefaultES.frag\n\t// SDK Version: v3.00\n\t// Email: gameworks@nvidia.com\n\t// Site: http://developer.nvidia.com/\n\t//\n\t// Copyright (c) 2014-2015, NVIDIA CORPORATION. All rights reserved.\n\t//\n\t// Redistribution and use in source and binary forms, with or without\n\t// modification, are permitted provided that the following conditions\n\t// are met:\n\t// * Redistributions of source code must retain the above copyright\n\t// notice, this list of conditions and the following disclaimer.\n\t// * Redistributions in binary form must reproduce the above copyright\n\t// notice, this list of conditions and the following disclaimer in the\n\t// documentation and/or other materials provided with the distribution.\n\t// * Neither the name of NVIDIA CORPORATION nor the names of its\n\t// contributors may be used to endorse or promote products derived\n\t// from this software without specific prior written permission.\n\t//\n\t// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ''AS IS'' AND ANY\n\t// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n\t// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\n\t// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR\n\t// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n\t// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n\t// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n\t// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY\n\t// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n\t// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n\t// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\t//\n\t//----------------------------------------------------------------------------------\n\n\t#ifndef FXAA_DISCARD\n\t\t\t//\n\t\t\t// Only valid for PC OpenGL currently.\n\t\t\t// Probably will not work when FXAA_GREEN_AS_LUMA = 1.\n\t\t\t//\n\t\t\t// 1 = Use discard on pixels which don't need AA.\n\t\t\t// For APIs which enable concurrent TEX+ROP from same surface.\n\t\t\t// 0 = Return unchanged color on pixels which don't need AA.\n\t\t\t//\n\t\t\t#define FXAA_DISCARD 0\n\t#endif\n\n\t/*--------------------------------------------------------------------------*/\n\t#define FxaaTexTop(t, p) texture2D(t, p, -100.0)\n\t#define FxaaTexOff(t, p, o, r) texture2D(t, p + (o * r), -100.0)\n\t/*--------------------------------------------------------------------------*/\n\n\t#define NUM_SAMPLES 5\n\n\t// assumes colors have premultipliedAlpha, so that the calculated color contrast is scaled by alpha\n\tfloat contrast( vec4 a, vec4 b ) {\n\t\t\tvec4 diff = abs( a - b );\n\t\t\treturn max( max( max( diff.r, diff.g ), diff.b ), diff.a );\n\t}\n\n\t/*============================================================================\n\n\t\t\t\t\t\t\t\t\tFXAA3 QUALITY - PC\n\n\t============================================================================*/\n\n\t/*--------------------------------------------------------------------------*/\n\tvec4 FxaaPixelShader(\n\t\t\tvec2 posM,\n\t\t\tsampler2D tex,\n\t\t\tvec2 fxaaQualityRcpFrame,\n\t\t\tfloat fxaaQualityEdgeThreshold,\n\t\t\tfloat fxaaQualityinvEdgeThreshold\n\t) {\n\t\t\tvec4 rgbaM = FxaaTexTop(tex, posM);\n\t\t\tvec4 rgbaS = FxaaTexOff(tex, posM, vec2( 0.0, 1.0), fxaaQualityRcpFrame.xy);\n\t\t\tvec4 rgbaE = FxaaTexOff(tex, posM, vec2( 1.0, 0.0), fxaaQualityRcpFrame.xy);\n\t\t\tvec4 rgbaN = FxaaTexOff(tex, posM, vec2( 0.0,-1.0), fxaaQualityRcpFrame.xy);\n\t\t\tvec4 rgbaW = FxaaTexOff(tex, posM, vec2(-1.0, 0.0), fxaaQualityRcpFrame.xy);\n\t\t\t// . S .\n\t\t\t// W M E\n\t\t\t// . N .\n\n\t\t\tbool earlyExit = max( max( max(\n\t\t\t\t\tcontrast( rgbaM, rgbaN ),\n\t\t\t\t\tcontrast( rgbaM, rgbaS ) ),\n\t\t\t\t\tcontrast( rgbaM, rgbaE ) ),\n\t\t\t\t\tcontrast( rgbaM, rgbaW ) )\n\t\t\t\t\t< fxaaQualityEdgeThreshold;\n\t\t\t// . 0 .\n\t\t\t// 0 0 0\n\t\t\t// . 0 .\n\n\t\t\t#if (FXAA_DISCARD == 1)\n\t\t\t\t\tif(earlyExit) FxaaDiscard;\n\t\t\t#else\n\t\t\t\t\tif(earlyExit) return rgbaM;\n\t\t\t#endif\n\n\t\t\tfloat contrastN = contrast( rgbaM, rgbaN );\n\t\t\tfloat contrastS = contrast( rgbaM, rgbaS );\n\t\t\tfloat contrastE = contrast( rgbaM, rgbaE );\n\t\t\tfloat contrastW = contrast( rgbaM, rgbaW );\n\n\t\t\tfloat relativeVContrast = ( contrastN + contrastS ) - ( contrastE + contrastW );\n\t\t\trelativeVContrast *= fxaaQualityinvEdgeThreshold;\n\n\t\t\tbool horzSpan = relativeVContrast > 0.;\n\t\t\t// . 1 .\n\t\t\t// 0 0 0\n\t\t\t// . 1 .\n\n\t\t\t// 45 deg edge detection and corners of objects, aka V/H contrast is too similar\n\t\t\tif( abs( relativeVContrast ) < .3 ) {\n\t\t\t\t\t// locate the edge\n\t\t\t\t\tvec2 dirToEdge;\n\t\t\t\t\tdirToEdge.x = contrastE > contrastW ? 1. : -1.;\n\t\t\t\t\tdirToEdge.y = contrastS > contrastN ? 1. : -1.;\n\t\t\t\t\t// . 2 . . 1 .\n\t\t\t\t\t// 1 0 2 ~= 0 0 1\n\t\t\t\t\t// . 1 . . 0 .\n\n\t\t\t\t\t// tap 2 pixels and see which ones are \"outside\" the edge, to\n\t\t\t\t\t// determine if the edge is vertical or horizontal\n\n\t\t\t\t\tvec4 rgbaAlongH = FxaaTexOff(tex, posM, vec2( dirToEdge.x, -dirToEdge.y ), fxaaQualityRcpFrame.xy);\n\t\t\t\t\tfloat matchAlongH = contrast( rgbaM, rgbaAlongH );\n\t\t\t\t\t// . 1 .\n\t\t\t\t\t// 0 0 1\n\t\t\t\t\t// . 0 H\n\n\t\t\t\t\tvec4 rgbaAlongV = FxaaTexOff(tex, posM, vec2( -dirToEdge.x, dirToEdge.y ), fxaaQualityRcpFrame.xy);\n\t\t\t\t\tfloat matchAlongV = contrast( rgbaM, rgbaAlongV );\n\t\t\t\t\t// V 1 .\n\t\t\t\t\t// 0 0 1\n\t\t\t\t\t// . 0 .\n\n\t\t\t\t\trelativeVContrast = matchAlongV - matchAlongH;\n\t\t\t\t\trelativeVContrast *= fxaaQualityinvEdgeThreshold;\n\n\t\t\t\t\tif( abs( relativeVContrast ) < .3 ) { // 45 deg edge\n\t\t\t\t\t\t\t// 1 1 .\n\t\t\t\t\t\t\t// 0 0 1\n\t\t\t\t\t\t\t// . 0 1\n\n\t\t\t\t\t\t\t// do a simple blur\n\t\t\t\t\t\t\treturn mix(\n\t\t\t\t\t\t\t\t\trgbaM,\n\t\t\t\t\t\t\t\t\t(rgbaN + rgbaS + rgbaE + rgbaW) * .25,\n\t\t\t\t\t\t\t\t\t.4\n\t\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\thorzSpan = relativeVContrast > 0.;\n\t\t\t}\n\n\t\t\tif(!horzSpan) rgbaN = rgbaW;\n\t\t\tif(!horzSpan) rgbaS = rgbaE;\n\t\t\t// . 0 . 1\n\t\t\t// 1 0 1 -> 0\n\t\t\t// . 0 . 1\n\n\t\t\tbool pairN = contrast( rgbaM, rgbaN ) > contrast( rgbaM, rgbaS );\n\t\t\tif(!pairN) rgbaN = rgbaS;\n\n\t\t\tvec2 offNP;\n\t\t\toffNP.x = (!horzSpan) ? 0.0 : fxaaQualityRcpFrame.x;\n\t\t\toffNP.y = ( horzSpan) ? 0.0 : fxaaQualityRcpFrame.y;\n\n\t\t\tbool doneN = false;\n\t\t\tbool doneP = false;\n\n\t\t\tfloat nDist = 0.;\n\t\t\tfloat pDist = 0.;\n\n\t\t\tvec2 posN = posM;\n\t\t\tvec2 posP = posM;\n\n\t\t\tint iterationsUsed = 0;\n\t\t\tint iterationsUsedN = 0;\n\t\t\tint iterationsUsedP = 0;\n\t\t\tfor( int i = 0; i < NUM_SAMPLES; i++ ) {\n\t\t\t\t\titerationsUsed = i;\n\n\t\t\t\t\tfloat increment = float(i + 1);\n\n\t\t\t\t\tif(!doneN) {\n\t\t\t\t\t\t\tnDist += increment;\n\t\t\t\t\t\t\tposN = posM + offNP * nDist;\n\t\t\t\t\t\t\tvec4 rgbaEndN = FxaaTexTop(tex, posN.xy);\n\t\t\t\t\t\t\tdoneN = contrast( rgbaEndN, rgbaM ) > contrast( rgbaEndN, rgbaN );\n\t\t\t\t\t\t\titerationsUsedN = i;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(!doneP) {\n\t\t\t\t\t\t\tpDist += increment;\n\t\t\t\t\t\t\tposP = posM - offNP * pDist;\n\t\t\t\t\t\t\tvec4 rgbaEndP = FxaaTexTop(tex, posP.xy);\n\t\t\t\t\t\t\tdoneP = contrast( rgbaEndP, rgbaM ) > contrast( rgbaEndP, rgbaN );\n\t\t\t\t\t\t\titerationsUsedP = i;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(doneN || doneP) break;\n\t\t\t}\n\n\n\t\t\tif ( !doneP && !doneN ) return rgbaM; // failed to find end of edge\n\n\t\t\tfloat dist = min(\n\t\t\t\t\tdoneN ? float( iterationsUsedN ) / float( NUM_SAMPLES - 1 ) : 1.,\n\t\t\t\t\tdoneP ? float( iterationsUsedP ) / float( NUM_SAMPLES - 1 ) : 1.\n\t\t\t);\n\n\t\t\t// hacky way of reduces blurriness of mostly diagonal edges\n\t\t\t// but reduces AA quality\n\t\t\tdist = pow(dist, .5);\n\n\t\t\tdist = 1. - dist;\n\n\t\t\treturn mix(\n\t\t\t\t\trgbaM,\n\t\t\t\t\trgbaN,\n\t\t\t\t\tdist * .5\n\t\t\t);\n\t}\n\n\tvoid main() {\n\t\t\tconst float edgeDetectionQuality = .2;\n\t\t\tconst float invEdgeDetectionQuality = 1. / edgeDetectionQuality;\n\n\t\t\tgl_FragColor = FxaaPixelShader(\n\t\t\t\t\tvUv,\n\t\t\t\t\ttDiffuse,\n\t\t\t\t\tresolution,\n\t\t\t\t\tedgeDetectionQuality, // [0,1] contrast needed, otherwise early discard\n\t\t\t\t\tinvEdgeDetectionQuality\n\t\t\t);\n\n\t}\n\t"},UG=kn(ql(),1),ONt="bottomBar",PNt={stats:{icon:{default:"icon-showsectionplane"},mutexIds:["statistics","cameraInfo","tips"],onActive:e=>{e.viewer.showStats()},onDeactive:e=>{e.viewer.hideStats()}},statistics:{icon:{default:"icon-info",active:"icon-info-filled"},mutexIds:["stats","cameraInfo","tips"],onActive:e=>{let t=document.createElement("span");if(!e.viewer.scene)return void(t.textContent="Failed!");t.textContent="Comupting...";let i={components:{},points:0,faces:0,materials:{},lights:{}},r=["SKYBOX","GROUND_GRID","GRASS_GROUND","BIM_VIEWER_BOX_HELPER"];e.viewer.scene.traverse((e=>{(e instanceof rt||e instanceof Ir||e instanceof nn)&&!r.includes(e.name)?((e,t)=>{if(t.components[e.type]?t.components[e.type]++:t.components[e.type]=1,e.geometry){let i=e.geometry;if(e instanceof rt)if(i.index&&i.index.count){let r=Math.round(i.index.count/3);e instanceof rn&&(r*=e.count),t.faces+=r}else if(i.groups.length>0)for(let e=0;e{t.materials[e]?t.materials[e]++:t.materials[e]=1},r=e.material;r instanceof jr?i(r.id):Array.isArray(r)&&r.forEach((e=>i(e.id)))})(e,i):e instanceof Dl&&(i.lights[e.type]?i.lights[e.type]++:i.lights[e.type]=1)}));let n=(e,i)=>{t.innerHTML+=`

${e}:${i}

`};t.innerHTML="";let s=` (${(e=>{var t;let i=null==(t=e.renderer)?void 0:t.domElement;return null==i?void 0:i.dataset.engine})(e.viewer)})`;if(n("Version",`${XT}${s}`),n("Components",JSON.stringify(i.components)),n("Points",i.points),n("Faces",i.faces),n("Materials",Object.keys(i.materials).length),n("Lights",JSON.stringify(i.lights)),"DxfViewer"===e.viewer.name){n("Entities",e.viewer.getEntitiesCount())}e.tooltip.setContent(t),e.tooltip.show()},onDeactive:e=>{e.tooltip.hide()},onUpdate:e=>{let t=e.viewer.renderer,i=document.createElement("span"),r=(e,t)=>{i.innerHTML+=`

${e}:${t}

`};i.innerHTML="

-- Renderer Info --

";let n=null==t?void 0:t.info;r("Drawcalls",JSON.stringify(null==n?void 0:n.render.calls)),r("Points",JSON.stringify(null==n?void 0:n.render.points)),r("Lines",JSON.stringify(null==n?void 0:n.render.lines)),r("Triangles",JSON.stringify(null==n?void 0:n.render.triangles)),r("Geometries",JSON.stringify(null==n?void 0:n.memory.geometries)),r("Textures",JSON.stringify(null==n?void 0:n.memory.textures)),e.tooltip.updateChildContent(i)}},cameraInfo:{icon:{default:"icon-view",active:"icon-view-filled"},mutexIds:["stats","statistics","tips"],onActive:e=>{let t=()=>{if(!e.viewer||!e.viewer.camera||!e.viewer.controls)return;let i=e.viewer.camera,r=e.viewer.controls,n=e=>_t.numberToString(e),s=e=>_t.vectorToString(e),a=i.position,o=r instanceof $l?r.getTarget(new A):r.target;if(a){let t=document.createElement("span");t.innerHTML=`\n

Camera position:${s(a)}

\n

Camera target:${s(o)}

`,i instanceof qi&&(t.innerHTML+=`\n

top: ${n(i.top)}, bottom: ${n(i.bottom)}, left: ${n(i.left)}, right: ${n(i.right)}

\n

zoom: ${n(i.zoom)}

`),e.tooltip.setContent(t)}e.active||window.removeEventListener("mouseup",t)};if(t(),window.addEventListener("mouseup",t),"BimViewer"===e.viewer.name){let i=e.viewer.controls;null==i||i.addEventListener("update",t)}else e.viewer.controls.addEventListener("change",t);e.tooltip.show()},onDeactive:e=>{e.tooltip.hide()}},tips:{icon:{default:"icon-more"},mutexIds:["stats","cameraInfo","cameraInfo"],onActive:e=>{let t=document.createElement("span");"BimViewer"===e.viewer.name?t.innerHTML="\n

W: Move forward

\n

A: Move backward

\n

S: Move left

\n

D: Move right

\n

Q: Rise up

\n

E: Lower down

\n

↑: Rotate up

\n

↓: Rotate down

\n

←: Rotate to left

\n

→: Rotate to right

\n ":"DxfViewer"===e.viewer.name?t.innerHTML="\n

↑: Move up

\n

↓: Move down

\n

←: Move to left

\n

→: Move to right

\n ":"BaseViewer"===e.viewer.name?t.innerHTML="\n

↑: Rotate up

\n

↓: Rotate down

\n

←: Rotate to left

\n

→: Rotate to right

\n ":t.innerHTML="\n

Nothing to show

\n ",e.tooltip.setContent(t),e.tooltip.show()},onDeactive:e=>{e.tooltip.hide()}}},lm=class{constructor(e){this.viewer=e,this.itemList=new Map,this.init()}update(){this.itemList.forEach((e=>{e.update()}))}init(){var e;let t=document.createElement("div");t.id=ONt,t.classList.add("bottom-bar"),(0,UG.forEach)(PNt,((e,i)=>{let r=this.createItem(this.viewer,i,e);t.appendChild(r.element)})),this.element=t,null==(e=this.viewer.widgetContainer)||e.appendChild(this.element)}createItem(e,t,i){let r=new HG(e,this,t,i);return this.itemList.set(t,r),r}},HG=class{constructor(e,t,i,r){this.viewer=e,this.bottomBar=t,this.menuId=i,this.cfg=r,this.eventBus=fE(),this.active=!1,this.itemconfig=r,this.element=this.createButton(this.menuId,r),this.tooltip=new mh(i+"-tooltip",null,{parentNode:e.widgetContainer}),this.eventBus.on("activeChange",(e=>{e?(this.element.classList.add("active"),(0,UG.forEach)(r.mutexIds,(e=>{var t;let i=null==(t=this.bottomBar)?void 0:t.itemList.get(e);i&&i.active&&i.setActive(!1)})),r.onActive&&r.onActive(this)):(this.element.classList.remove("active"),r.onDeactive&&r.onDeactive(this)),this.element instanceof HTMLElement&&LC(this.element.classList,r.icon,this.active)}))}createButton(e,t){let i=document.createElement("i");i.id=e;let{default:r="icon-new",iconFont:n=uo}=t.icon;return i.classList.add("icon"),i.classList.add(n),i.classList.add(r),i.onclick=()=>{this.active=!this.active,t.onClick&&t.onClick(this),this.eventBus.emit("activeChange",this.active)},i}setActive(e){this.active=e,this.eventBus.emit("activeChange",this.active)}update(){this.active&&this.itemconfig.onUpdate&&this.itemconfig.onUpdate(this)}},rS=kn(ql(),1),NNt="gemini-context-menu",C3=class{constructor(e){this.itemList=[],this.id=e.id||NNt,this.container=e.container||document.body,this.context=e.context||{},this.element=this.createMenuUI(e.items||[]),this.handleClick=()=>{this.hide()},!1!==e.hideOnMouseDown&&document.addEventListener("click",this.handleClick),this.hide()}isEnable(e){return e.getEnabled?e.getEnabled(this.context):void 0===e.enabled||e.enabled}isShown(e){return e.getShown?e.getShown(this.context):void 0===e.shown||e.shown}getTitle(e){return e.title||e.getTitle&&e.getTitle(this.context)||""}createMenuUI(e){let t=document.createElement("div");t.id=this.id,t.classList.add("context-menu");let i=this.createMenuGroup(e);return t.append(...i),this.container.appendChild(t),t}createMenuGroup(e){return(0,rS.map)(e,(e=>{let t=document.createElement("ul");return(0,rS.forEach)(e,(e=>{let i=this.createMenuItem(e);t.append(i)})),t}))}createMenuItem(e){let t=document.createElement("li");return t.innerHTML=this.getTitle(e),t.onclick=()=>e.doAction&&e.doAction(this.context),this.isEnable(e)?t.classList.remove("disabled"):t.classList.add("disabled"),this.isShown(e)?t.removeAttribute("hidden"):t.setAttribute("hidden",""),this.itemList.push([e,t]),t}updateMenuItems(){(0,rS.forEach)(this.itemList,(([e,t])=>{this.isEnable(e)?t.classList.remove("disabled"):t.classList.add("disabled"),this.isShown(e)?t.removeAttribute("hidden"):t.setAttribute("hidden",""),t.innerHTML=this.getTitle(e)}))}showMenuElement(e,t){let i=this.element.offsetHeight,r=this.element.offsetWidth;t+i>window.innerHeight&&(t=window.innerHeight-i-5),e+r>window.innerWidth&&(e=window.innerWidth-r-5),this.element.style.left=e+"px",this.element.style.top=t+"px"}show(e,t){this.updateMenuItems(),this.element.removeAttribute("hidden"),this.showMenuElement(e,t)}hide(){this.element.setAttribute("hidden","")}destroy(){document.removeEventListener("click",this.handleClick),this.container.removeChild(this.element)}},To=e=>({bimViewer:t})=>t.translate(`ContextMenu.${e}`),eCe=e=>{var t;let i=0;return null==(t=e.scene)||t.traverseVisible((e=>{e instanceof rt&&i++})),i>0},LNt=e=>{var t,i;let r=0;return null==(t=e.scene)||t.traverse((e=>{e instanceof rt&&r++})),null==(i=e.scene)||i.traverseVisible((e=>{e instanceof rt&&r--})),r>0},BG=e=>e.hasTransparentObject(),A3=e=>!1!==e.userData.selectable,QDe=(e,t,i,r)=>{let n=e.selectedObject;return!(!n||!t||n.id!==t.id)&&(null!=i&&n.isInstancedMesh?i===n.userData.instanceId:null==r||!Yi.isMergedMesh(n)||r===n.userData.batchId)},FNt={getTitle:To("viewFitEntity"),getShown:({hit:e})=>e,doAction:({bimViewer:e,hit:t})=>{e.flyToObject(t)}},HNt={getTitle:To("viewFitAll"),getEnabled:({bimViewer:e})=>eCe(e),doAction:({bimViewer:e})=>e.viewFitAll()},UNt={getTitle:To("hideEntity"),getShown:({hit:e})=>e,doAction:({bimViewer:e,hit:t})=>{A3(t)&&(t.visible=!1,e.enableRender())}},BNt={getTitle:To("hideOthers"),getShown:({hit:e})=>e,doAction:({bimViewer:e,hit:t})=>{var i;null==(i=e.scene)||i.traverse((e=>{e instanceof rt&&A3(e)&&(e.visible=!1)})),t.visible=!0,e.enableRender()}},kNt={getTitle:To("hideAll"),getEnabled:({bimViewer:e})=>eCe(e),doAction:({bimViewer:e})=>{var t;null==(t=e.scene)||t.traverse((e=>{e instanceof rt&&A3(e)&&(e.visible=!1)})),e.enableRender()}},GNt={getTitle:To("showAll"),getEnabled:({bimViewer:e})=>LNt(e),doAction:({bimViewer:e})=>{var t;null==(t=e.scene)||t.traverse((e=>{e instanceof rt&&A3(e)&&(e.visible=!0)})),e.enableRender()}},VNt={getTitle:({hit:e,bimViewer:t,instanceId:i,batchId:r})=>QDe(t,e,i,r)?To("deselect")({bimViewer:t}):To("select")({bimViewer:t}),getShown:({hit:e})=>e,doAction:({hit:e,bimViewer:t,instanceId:i,batchId:r})=>{!1!==e.userData.selectable?QDe(t,e,i,r)?t.clearSelection():t.selectObject(e,e.instanceId,r):ne.debug(`[ContextMenu] object(type: ${e.type}, name: ${e.name}) not selectable!`)}},zNt={getTitle:To("selectNone"),getEnabled:({bimViewer:e})=>e.selectedObject,doAction:({bimViewer:e})=>e.clearSelection()},jNt={getTitle:To("xRayAll"),getShown:({bimViewer:e})=>!BG(e),doAction:({bimViewer:e})=>{e.addOrRemoveObjectOpacity(!0),e.enableRender()}},WNt={getTitle:To("xRayNone"),getEnabled:({bimViewer:e})=>BG(e),doAction:({bimViewer:e})=>{BG(e)&&(e.addOrRemoveObjectOpacity(!1),e.enableRender())}},qNt={getTitle:To("xRayEntity"),getShown:({hit:e})=>e,doAction:({bimViewer:e,hit:t})=>{e.addOrRemoveObjectOpacity(!0,void 0,[t.id],void 0)}},YNt={getTitle:To("xRayOthers"),getShown:({hit:e})=>e,doAction:({bimViewer:e,hit:t})=>{e.addOrRemoveObjectOpacity(!0,.1,void 0,[t.id]),e.enableRender()}},XNt={getTitle:({bimViewer:e})=>{let t="";switch(e.sectionType){case"PickPlaneSection":t="*showSectionPlane";break;case"AxisPlaneSection":t="showAxisSection";break;case"ObjectsBoxSection":t="*showSectionBox"}return e.translate(`ContextMenu.${t}`)},getShown:({bimViewer:e,section:t})=>("PickPlaneSection"===e.sectionType||"AxisPlaneSection"===e.sectionType)&&(!!t&&!t.isShowSectionPlane),doAction:({bimViewer:e,section:t})=>{("PickPlaneSection"===e.sectionType||"AxisPlaneSection"===e.sectionType)&&(null==t||t.setSectionVisible(!0))}},$Nt={getTitle:({bimViewer:e})=>{let t="";switch(e.sectionType){case"PickPlaneSection":t="hideSectionPlane";break;case"AxisPlaneSection":t="hideAxisSection";break;case"ObjectsBoxSection":t="hideSectionBox"}return e.translate(`ContextMenu.${t}`)},getShown:e=>tCe(e),doAction:({bimViewer:e,section:t})=>{("PickPlaneSection"===e.sectionType||"AxisPlaneSection"===e.sectionType)&&(null==t||t.setSectionVisible(!1))}},KNt={getTitle:To("undoSection"),getShown:e=>tCe(e),doAction:({bimViewer:e,toolbar:t})=>{if("PickPlaneSection"===e.sectionType){let e=null==t?void 0:t.menuList.get("SectionPlane");null==e||e.setActive(!1)}else if("AxisPlaneSection"===e.sectionType){let e=null==t?void 0:t.menuList.get("SectionAxis");null==e||e.setActive(!1)}else if("ObjectsBoxSection"===e.sectionType){let e=null==t?void 0:t.menuList.get("SectionBox");null==e||e.setActive(!1)}}},tCe=({bimViewer:e,hit:t,section:i})=>("PickPlaneSection"===e.sectionType||"AxisPlaneSection"===e.sectionType)&&!!i&&i.isShowSectionPlane&&(null==t?void 0:t.name)===OB,rCe=[[XNt],[$Nt,KNt],[FNt,HNt],[UNt,BNt,kNt,GNt],[qNt,YNt,jNt,WNt],[VNt,zNt]];function ZNt(e){if(e&&"undefined"!=typeof window){var t=document.createElement("style");return t.setAttribute("type","text/css"),t.innerHTML=e,document.head.appendChild(t),e}}function DE(e,t){var i=e.__state.conversionName.toString(),r=Math.round(e.r),n=Math.round(e.g),s=Math.round(e.b),a=e.a,o=Math.round(e.h),l=e.s.toFixed(1),h=e.v.toFixed(1);if(t||"THREE_CHAR_HEX"===i||"SIX_CHAR_HEX"===i){for(var u=e.hex.toString(16);u.length<6;)u="0"+u;return"#"+u}return"CSS_RGB"===i?"rgb("+r+","+n+","+s+")":"CSS_RGBA"===i?"rgba("+r+","+n+","+s+","+a+")":"HEX"===i?"0x"+e.hex.toString(16):"RGB_ARRAY"===i?"["+r+","+n+","+s+"]":"RGBA_ARRAY"===i?"["+r+","+n+","+s+","+a+"]":"RGB_OBJ"===i?"{r:"+r+",g:"+n+",b:"+s+"}":"RGBA_OBJ"===i?"{r:"+r+",g:"+n+",b:"+s+",a:"+a+"}":"HSV_OBJ"===i?"{h:"+o+",s:"+l+",v:"+h+"}":"HSVA_OBJ"===i?"{h:"+o+",s:"+l+",v:"+h+",a:"+a+"}":"unknown format"}var iCe=Array.prototype.forEach,iS=Array.prototype.slice,mt={BREAK:{},extend:function(e){return this.each(iS.call(arguments,1),(function(t){(this.isObject(t)?Object.keys(t):[]).forEach(function(i){this.isUndefined(t[i])||(e[i]=t[i])}.bind(this))}),this),e},defaults:function(e){return this.each(iS.call(arguments,1),(function(t){(this.isObject(t)?Object.keys(t):[]).forEach(function(i){this.isUndefined(e[i])&&(e[i]=t[i])}.bind(this))}),this),e},compose:function(){var e=iS.call(arguments);return function(){for(var t=iS.call(arguments),i=e.length-1;i>=0;i--)t=[e[i].apply(this,t)];return t[0]}},each:function(e,t,i){if(e)if(iCe&&e.forEach&&e.forEach===iCe)e.forEach(t,i);else if(e.length===e.length+0){var r,n=void 0;for(n=0,r=e.length;n1?mt.toArray(arguments):arguments[0];return mt.each(JNt,(function(t){if(t.litmus(e))return mt.each(t.conversions,(function(t,i){if(nS=t.read(e),!1===O3&&!1!==nS)return O3=nS,nS.conversionName=i,nS.conversion=t,mt.BREAK})),mt.BREAK})),O3},nCe=void 0,N3={hsv_to_rgb:function(e,t,i){var r=Math.floor(e/60)%6,n=e/60-Math.floor(e/60),s=i*(1-t),a=i*(1-n*t),o=i*(1-(1-n)*t),l=[[i,o,s],[a,i,s],[s,i,o],[s,a,i],[o,s,i],[i,s,a]][r];return{r:255*l[0],g:255*l[1],b:255*l[2]}},rgb_to_hsv:function(e,t,i){var r=Math.min(e,t,i),n=Math.max(e,t,i),s=n-r,a=void 0;return 0===n?{h:NaN,s:0,v:0}:(a=e===n?(t-i)/s:t===n?2+(i-e)/s:4+(e-t)/s,(a/=6)<0&&(a+=1),{h:360*a,s:s/n,v:n/255})},rgb_to_hex:function(e,t,i){var r=this.hex_with_component(0,2,e);return r=this.hex_with_component(r,1,t),r=this.hex_with_component(r,0,i)},component_from_hex:function(e,t){return e>>8*t&255},hex_with_component:function(e,t,i){return i<<(nCe=8*t)|e&~(255<-1?t.length-t.indexOf(".")-1:0}var gCe=function(e){function t(e,i,r){ou(this,t);var n=hm(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,i)),s=r||{};return n.__min=s.min,n.__max=s.max,n.__step=s.step,mt.isUndefined(n.__step)?0===n.initialValue?n.__impliedStep=1:n.__impliedStep=Math.pow(10,Math.floor(Math.log(Math.abs(n.initialValue))/Math.LN10))/10:n.__impliedStep=n.__step,n.__precision=sCe(n.__impliedStep),n}return um(t,U0),lu(t,[{key:"setValue",value:function(e){var i=e;return void 0!==this.__min&&ithis.__max&&(i=this.__max),void 0!==this.__step&&i%this.__step!=0&&(i=Math.round(i/this.__step)*this.__step),cm(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"setValue",this).call(this,i)}},{key:"min",value:function(e){return this.__min=e,this}},{key:"max",value:function(e){return this.__max=e,this}},{key:"step",value:function(e){return this.__step=e,this.__impliedStep=e,this.__precision=sCe(e),this}}]),t}();function nLt(e,t){var i=Math.pow(10,t);return Math.round(e*i)/i}var L3=function(e){function t(e,i,r){ou(this,t);var n=hm(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,i,r));n.__truncationSuspended=!1;var s=n,a=void 0;function o(){s.__onFinishChange&&s.__onFinishChange.call(s,s.getValue())}function l(e){var t=a-e.clientY;s.setValue(s.getValue()+t*s.__impliedStep),a=e.clientY}function h(){Ye.unbind(window,"mousemove",l),Ye.unbind(window,"mouseup",h),o()}return n.__input=document.createElement("input"),n.__input.setAttribute("type","text"),Ye.bind(n.__input,"change",(function(){var e=parseFloat(s.__input.value);mt.isNaN(e)||s.setValue(e)})),Ye.bind(n.__input,"blur",(function(){o()})),Ye.bind(n.__input,"mousedown",(function(e){Ye.bind(window,"mousemove",l),Ye.bind(window,"mouseup",h),a=e.clientY})),Ye.bind(n.__input,"keydown",(function(e){13===e.keyCode&&(s.__truncationSuspended=!0,this.blur(),s.__truncationSuspended=!1,o())})),n.updateDisplay(),n.domElement.appendChild(n.__input),n}return um(t,gCe),lu(t,[{key:"updateDisplay",value:function(){return this.__input.value=this.__truncationSuspended?this.getValue():nLt(this.getValue(),this.__precision),cm(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"updateDisplay",this).call(this)}}]),t}();function aCe(e,t,i,r,n){return r+(e-t)/(i-t)*(n-r)}var VG=function(e){function t(e,i,r,n,s){ou(this,t);var a=hm(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,i,{min:r,max:n,step:s})),o=a;function l(e){e.preventDefault();var t=o.__background.getBoundingClientRect();return o.setValue(aCe(e.clientX,t.left,t.right,o.__min,o.__max)),!1}function h(){Ye.unbind(window,"mousemove",l),Ye.unbind(window,"mouseup",h),o.__onFinishChange&&o.__onFinishChange.call(o,o.getValue())}function u(e){var t=e.touches[0].clientX,i=o.__background.getBoundingClientRect();o.setValue(aCe(t,i.left,i.right,o.__min,o.__max))}function c(){Ye.unbind(window,"touchmove",u),Ye.unbind(window,"touchend",c),o.__onFinishChange&&o.__onFinishChange.call(o,o.getValue())}return a.__background=document.createElement("div"),a.__foreground=document.createElement("div"),Ye.bind(a.__background,"mousedown",(function(e){document.activeElement.blur(),Ye.bind(window,"mousemove",l),Ye.bind(window,"mouseup",h),l(e)})),Ye.bind(a.__background,"touchstart",(function(e){1===e.touches.length&&(Ye.bind(window,"touchmove",u),Ye.bind(window,"touchend",c),u(e))})),Ye.addClass(a.__background,"slider"),Ye.addClass(a.__foreground,"slider-fg"),a.updateDisplay(),a.__background.appendChild(a.__foreground),a.domElement.appendChild(a.__background),a}return um(t,gCe),lu(t,[{key:"updateDisplay",value:function(){var e=(this.getValue()-this.__min)/(this.__max-this.__min);return this.__foreground.style.width=100*e+"%",cm(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"updateDisplay",this).call(this)}}]),t}(),vCe=function(e){function t(e,i,r){ou(this,t);var n=hm(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,i)),s=n;return n.__button=document.createElement("div"),n.__button.innerHTML=void 0===r?"Fire":r,Ye.bind(n.__button,"click",(function(e){return e.preventDefault(),s.fire(),!1})),Ye.addClass(n.__button,"button"),n.domElement.appendChild(n.__button),n}return um(t,U0),lu(t,[{key:"fire",value:function(){this.__onChange&&this.__onChange.call(this),this.getValue().call(this.object),this.__onFinishChange&&this.__onFinishChange.call(this,this.getValue())}}]),t}(),zG=function(e){function t(e,i){ou(this,t);var r=hm(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,i));r.__color=new Ls(r.getValue()),r.__temp=new Ls(0);var n=r;r.domElement=document.createElement("div"),Ye.makeSelectable(r.domElement,!1),r.__selector=document.createElement("div"),r.__selector.className="selector",r.__saturation_field=document.createElement("div"),r.__saturation_field.className="saturation-field",r.__field_knob=document.createElement("div"),r.__field_knob.className="field-knob",r.__field_knob_border="2px solid ",r.__hue_knob=document.createElement("div"),r.__hue_knob.className="hue-knob",r.__hue_field=document.createElement("div"),r.__hue_field.className="hue-field",r.__input=document.createElement("input"),r.__input.type="text",r.__input_textShadow="0 1px 1px ",Ye.bind(r.__input,"keydown",(function(e){13===e.keyCode&&u.call(this)})),Ye.bind(r.__input,"blur",u),Ye.bind(r.__selector,"mousedown",(function(){Ye.addClass(this,"drag").bind(window,"mouseup",(function(){Ye.removeClass(n.__selector,"drag")}))})),Ye.bind(r.__selector,"touchstart",(function(){Ye.addClass(this,"drag").bind(window,"touchend",(function(){Ye.removeClass(n.__selector,"drag")}))}));var s=document.createElement("div");function a(e){p(e),Ye.bind(window,"mousemove",p),Ye.bind(window,"touchmove",p),Ye.bind(window,"mouseup",l),Ye.bind(window,"touchend",l)}function o(e){d(e),Ye.bind(window,"mousemove",d),Ye.bind(window,"touchmove",d),Ye.bind(window,"mouseup",h),Ye.bind(window,"touchend",h)}function l(){Ye.unbind(window,"mousemove",p),Ye.unbind(window,"touchmove",p),Ye.unbind(window,"mouseup",l),Ye.unbind(window,"touchend",l),c()}function h(){Ye.unbind(window,"mousemove",d),Ye.unbind(window,"touchmove",d),Ye.unbind(window,"mouseup",h),Ye.unbind(window,"touchend",h),c()}function u(){var e=GG(this.value);!1!==e?(n.__color.__state=e,n.setValue(n.__color.toOriginal())):this.value=n.__color.toString()}function c(){n.__onFinishChange&&n.__onFinishChange.call(n,n.__color.toOriginal())}function p(e){-1===e.type.indexOf("touch")&&e.preventDefault();var t=n.__saturation_field.getBoundingClientRect(),i=e.touches&&e.touches[0]||e,r=i.clientX,s=i.clientY,a=(r-t.left)/(t.right-t.left),o=1-(s-t.top)/(t.bottom-t.top);return o>1?o=1:o<0&&(o=0),a>1?a=1:a<0&&(a=0),n.__color.v=o,n.__color.s=a,n.setValue(n.__color.toOriginal()),!1}function d(e){-1===e.type.indexOf("touch")&&e.preventDefault();var t=n.__hue_field.getBoundingClientRect(),i=1-((e.touches&&e.touches[0]||e).clientY-t.top)/(t.bottom-t.top);return i>1?i=1:i<0&&(i=0),n.__color.h=360*i,n.setValue(n.__color.toOriginal()),!1}return mt.extend(r.__selector.style,{width:"122px",height:"102px",padding:"3px",backgroundColor:"#222",boxShadow:"0px 1px 3px rgba(0,0,0,0.3)"}),mt.extend(r.__field_knob.style,{position:"absolute",width:"12px",height:"12px",border:r.__field_knob_border+(r.__color.v<.5?"#fff":"#000"),boxShadow:"0px 1px 3px rgba(0,0,0,0.5)",borderRadius:"12px",zIndex:1}),mt.extend(r.__hue_knob.style,{position:"absolute",width:"15px",height:"2px",borderRight:"4px solid #fff",zIndex:1}),mt.extend(r.__saturation_field.style,{width:"100px",height:"100px",border:"1px solid #555",marginRight:"3px",display:"inline-block",cursor:"pointer"}),mt.extend(s.style,{width:"100%",height:"100%",background:"none"}),oCe(s,"top","rgba(0,0,0,0)","#000"),mt.extend(r.__hue_field.style,{width:"15px",height:"100px",border:"1px solid #555",cursor:"ns-resize",position:"absolute",top:"3px",right:"3px"}),aLt(r.__hue_field),mt.extend(r.__input.style,{outline:"none",textAlign:"center",color:"#fff",border:0,fontWeight:"bold",textShadow:r.__input_textShadow+"rgba(0,0,0,0.7)"}),Ye.bind(r.__saturation_field,"mousedown",a),Ye.bind(r.__saturation_field,"touchstart",a),Ye.bind(r.__field_knob,"mousedown",a),Ye.bind(r.__field_knob,"touchstart",a),Ye.bind(r.__hue_field,"mousedown",o),Ye.bind(r.__hue_field,"touchstart",o),r.__saturation_field.appendChild(s),r.__selector.appendChild(r.__field_knob),r.__selector.appendChild(r.__saturation_field),r.__selector.appendChild(r.__hue_field),r.__hue_field.appendChild(r.__hue_knob),r.domElement.appendChild(r.__input),r.domElement.appendChild(r.__selector),r.updateDisplay(),r}return um(t,U0),lu(t,[{key:"updateDisplay",value:function(){var e=GG(this.getValue());if(!1!==e){var t=!1;mt.each(Ls.COMPONENTS,(function(i){if(!mt.isUndefined(e[i])&&!mt.isUndefined(this.__color.__state[i])&&e[i]!==this.__color.__state[i])return t=!0,{}}),this),t&&mt.extend(this.__color.__state,e)}mt.extend(this.__temp.__state,this.__color.__state),this.__temp.a=1;var i=this.__color.v<.5||this.__color.s>.5?255:0,r=255-i;mt.extend(this.__field_knob.style,{marginLeft:100*this.__color.s-7+"px",marginTop:100*(1-this.__color.v)-7+"px",backgroundColor:this.__temp.toHexString(),border:this.__field_knob_border+"rgb("+i+","+i+","+i+")"}),this.__hue_knob.style.marginTop=100*(1-this.__color.h/360)+"px",this.__temp.s=1,this.__temp.v=1,oCe(this.__saturation_field,"left","#fff",this.__temp.toHexString()),this.__input.value=this.__color.toString(),mt.extend(this.__input.style,{backgroundColor:this.__color.toHexString(),color:"rgb("+i+","+i+","+i+")",textShadow:this.__input_textShadow+"rgba("+r+","+r+","+r+",.7)"})}}]),t}(),sLt=["-moz-","-o-","-webkit-","-ms-",""];function oCe(e,t,i,r){e.style.background="",mt.each(sLt,(function(n){e.style.cssText+="background: "+n+"linear-gradient("+t+", "+i+" 0%, "+r+" 100%); "}))}function aLt(e){e.style.background="",e.style.cssText+="background: -moz-linear-gradient(top, #ff0000 0%, #ff00ff 17%, #0000ff 34%, #00ffff 50%, #00ff00 67%, #ffff00 84%, #ff0000 100%);",e.style.cssText+="background: -webkit-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);",e.style.cssText+="background: -o-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);",e.style.cssText+="background: -ms-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);",e.style.cssText+="background: linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);"}var oLt={load:function(e,t){var i=t||document,r=i.createElement("link");r.type="text/css",r.rel="stylesheet",r.href=e,i.getElementsByTagName("head")[0].appendChild(r)},inject:function(e,t){var i=t||document,r=document.createElement("style");r.type="text/css",r.innerHTML=e;var n=i.getElementsByTagName("head")[0];try{n.appendChild(r)}catch(e){}}},lLt='
\n\n Here\'s the new load parameter for your GUI\'s constructor:\n\n \n\n
\n\n Automatically save\n values to localStorage on exit.\n\n
The values saved to localStorage will\n override those passed to dat.GUI\'s constructor. This makes it\n easier to work incrementally, but localStorage is fragile,\n and your friends may not see the same values you do.\n\n
\n\n
\n\n
',cLt=function(e,t){var i=e[t];return mt.isArray(arguments[2])||mt.isObject(arguments[2])?new rLt(e,t,arguments[2]):mt.isNumber(i)?mt.isNumber(arguments[2])&&mt.isNumber(arguments[3])?mt.isNumber(arguments[4])?new VG(e,t,arguments[2],arguments[3],arguments[4]):new VG(e,t,arguments[2],arguments[3]):mt.isNumber(arguments[4])?new L3(e,t,{min:arguments[2],max:arguments[3],step:arguments[4]}):new L3(e,t,{min:arguments[2],max:arguments[3]}):mt.isString(i)?new iLt(e,t):mt.isFunction(i)?new vCe(e,t,""):mt.isBoolean(i)?new mCe(e,t):null};function uLt(e){setTimeout(e,1e3/60)}var hLt=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||uLt,pLt=function(){function e(){ou(this,e),this.backgroundElement=document.createElement("div"),mt.extend(this.backgroundElement.style,{backgroundColor:"rgba(0,0,0,0.8)",top:0,left:0,display:"none",zIndex:"1000",opacity:0,WebkitTransition:"opacity 0.2s linear",transition:"opacity 0.2s linear"}),Ye.makeFullscreen(this.backgroundElement),this.backgroundElement.style.position="fixed",this.domElement=document.createElement("div"),mt.extend(this.domElement.style,{position:"fixed",display:"none",zIndex:"1001",opacity:0,WebkitTransition:"-webkit-transform 0.2s ease-out, opacity 0.2s linear",transition:"transform 0.2s ease-out, opacity 0.2s linear"}),document.body.appendChild(this.backgroundElement),document.body.appendChild(this.domElement);var t=this;Ye.bind(this.backgroundElement,"click",(function(){t.hide()}))}return lu(e,[{key:"show",value:function(){var e=this;this.backgroundElement.style.display="block",this.domElement.style.display="block",this.domElement.style.opacity=0,this.domElement.style.webkitTransform="scale(1.1)",this.layout(),mt.defer((function(){e.backgroundElement.style.opacity=1,e.domElement.style.opacity=1,e.domElement.style.webkitTransform="scale(1)"}))}},{key:"hide",value:function(){var e=this,t=function t(){e.domElement.style.display="none",e.backgroundElement.style.display="none",Ye.unbind(e.domElement,"webkitTransitionEnd",t),Ye.unbind(e.domElement,"transitionend",t),Ye.unbind(e.domElement,"oTransitionEnd",t)};Ye.bind(this.domElement,"webkitTransitionEnd",t),Ye.bind(this.domElement,"transitionend",t),Ye.bind(this.domElement,"oTransitionEnd",t),this.backgroundElement.style.opacity=0,this.domElement.style.opacity=0,this.domElement.style.webkitTransform="scale(1.1)"}},{key:"layout",value:function(){this.domElement.style.left=window.innerWidth/2-Ye.getWidth(this.domElement)/2+"px",this.domElement.style.top=window.innerHeight/2-Ye.getHeight(this.domElement)/2+"px"}}]),e}(),dLt=ZNt(".dg ul{list-style:none;margin:0;padding:0;width:100%;clear:both}.dg.ac{position:fixed;top:0;left:0;right:0;height:0;z-index:0}.dg:not(.ac) .main{overflow:hidden}.dg.main{-webkit-transition:opacity .1s linear;-o-transition:opacity .1s linear;-moz-transition:opacity .1s linear;transition:opacity .1s linear}.dg.main.taller-than-window{overflow-y:auto}.dg.main.taller-than-window .close-button{opacity:1;margin-top:-1px;border-top:1px solid #2c2c2c}.dg.main ul.closed .close-button{opacity:1 !important}.dg.main:hover .close-button,.dg.main .close-button.drag{opacity:1}.dg.main .close-button{-webkit-transition:opacity .1s linear;-o-transition:opacity .1s linear;-moz-transition:opacity .1s linear;transition:opacity .1s linear;border:0;line-height:19px;height:20px;cursor:pointer;text-align:center;background-color:#000}.dg.main .close-button.close-top{position:relative}.dg.main .close-button.close-bottom{position:absolute}.dg.main .close-button:hover{background-color:#111}.dg.a{float:right;margin-right:15px;overflow-y:visible}.dg.a.has-save>ul.close-top{margin-top:0}.dg.a.has-save>ul.close-bottom{margin-top:27px}.dg.a.has-save>ul.closed{margin-top:0}.dg.a .save-row{top:0;z-index:1002}.dg.a .save-row.close-top{position:relative}.dg.a .save-row.close-bottom{position:fixed}.dg li{-webkit-transition:height .1s ease-out;-o-transition:height .1s ease-out;-moz-transition:height .1s ease-out;transition:height .1s ease-out;-webkit-transition:overflow .1s linear;-o-transition:overflow .1s linear;-moz-transition:overflow .1s linear;transition:overflow .1s linear}.dg li:not(.folder){cursor:auto;height:27px;line-height:27px;padding:0 4px 0 5px}.dg li.folder{padding:0;border-left:4px solid rgba(0,0,0,0)}.dg li.title{cursor:pointer;margin-left:-4px}.dg .closed li:not(.title),.dg .closed ul li,.dg .closed ul li>*{height:0;overflow:hidden;border:0}.dg .cr{clear:both;padding-left:3px;height:27px;overflow:hidden}.dg .property-name{cursor:default;float:left;clear:left;width:40%;overflow:hidden;text-overflow:ellipsis}.dg .cr.function .property-name{width:100%}.dg .c{float:left;width:60%;position:relative}.dg .c input[type=text]{border:0;margin-top:4px;padding:3px;width:100%;float:right}.dg .has-slider input[type=text]{width:30%;margin-left:0}.dg .slider{float:left;width:66%;margin-left:-5px;margin-right:0;height:19px;margin-top:4px}.dg .slider-fg{height:100%}.dg .c input[type=checkbox]{margin-top:7px}.dg .c select{margin-top:5px}.dg .cr.function,.dg .cr.function .property-name,.dg .cr.function *,.dg .cr.boolean,.dg .cr.boolean *{cursor:pointer}.dg .cr.color{overflow:visible}.dg .selector{display:none;position:absolute;margin-left:-9px;margin-top:23px;z-index:10}.dg .c:hover .selector,.dg .selector.drag{display:block}.dg li.save-row{padding:0}.dg li.save-row .button{display:inline-block;padding:0px 6px}.dg.dialogue{background-color:#222;width:460px;padding:15px;font-size:13px;line-height:15px}#dg-new-constructor{padding:10px;color:#222;font-family:Monaco, monospace;font-size:10px;border:0;resize:none;box-shadow:inset 1px 1px 1px #888;word-wrap:break-word;margin:12px 0;display:block;width:440px;overflow-y:scroll;height:100px;position:relative}#dg-local-explain{display:none;font-size:11px;line-height:17px;border-radius:3px;background-color:#333;padding:8px;margin-top:10px}#dg-local-explain code{font-size:10px}#dat-gui-save-locally{display:none}.dg{color:#eee;font:11px 'Lucida Grande', sans-serif;text-shadow:0 -1px 0 #111}.dg.main::-webkit-scrollbar{width:5px;background:#1a1a1a}.dg.main::-webkit-scrollbar-corner{height:0;display:none}.dg.main::-webkit-scrollbar-thumb{border-radius:5px;background:#676767}.dg li:not(.folder){background:#1a1a1a;border-bottom:1px solid #2c2c2c}.dg li.save-row{line-height:25px;background:#dad5cb;border:0}.dg li.save-row select{margin-left:5px;width:108px}.dg li.save-row .button{margin-left:5px;margin-top:1px;border-radius:2px;font-size:9px;line-height:7px;padding:4px 4px 5px 4px;background:#c5bdad;color:#fff;text-shadow:0 1px 0 #b0a58f;box-shadow:0 -1px 0 #b0a58f;cursor:pointer}.dg li.save-row .button.gears{background:#c5bdad url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAANCAYAAAB/9ZQ7AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAQJJREFUeNpiYKAU/P//PwGIC/ApCABiBSAW+I8AClAcgKxQ4T9hoMAEUrxx2QSGN6+egDX+/vWT4e7N82AMYoPAx/evwWoYoSYbACX2s7KxCxzcsezDh3evFoDEBYTEEqycggWAzA9AuUSQQgeYPa9fPv6/YWm/Acx5IPb7ty/fw+QZblw67vDs8R0YHyQhgObx+yAJkBqmG5dPPDh1aPOGR/eugW0G4vlIoTIfyFcA+QekhhHJhPdQxbiAIguMBTQZrPD7108M6roWYDFQiIAAv6Aow/1bFwXgis+f2LUAynwoIaNcz8XNx3Dl7MEJUDGQpx9gtQ8YCueB+D26OECAAQDadt7e46D42QAAAABJRU5ErkJggg==) 2px 1px no-repeat;height:7px;width:8px}.dg li.save-row .button:hover{background-color:#bab19e;box-shadow:0 -1px 0 #b0a58f}.dg li.folder{border-bottom:0}.dg li.title{padding-left:16px;background:#000 url(data:image/gif;base64,R0lGODlhBQAFAJEAAP////Pz8////////yH5BAEAAAIALAAAAAAFAAUAAAIIlI+hKgFxoCgAOw==) 6px 10px no-repeat;cursor:pointer;border-bottom:1px solid rgba(255,255,255,0.2)}.dg .closed li.title{background-image:url(data:image/gif;base64,R0lGODlhBQAFAJEAAP////Pz8////////yH5BAEAAAIALAAAAAAFAAUAAAIIlGIWqMCbWAEAOw==)}.dg .cr.boolean{border-left:3px solid #806787}.dg .cr.color{border-left:3px solid}.dg .cr.function{border-left:3px solid #e61d5f}.dg .cr.number{border-left:3px solid #2FA1D6}.dg .cr.number input[type=text]{color:#2FA1D6}.dg .cr.string{border-left:3px solid #1ed36f}.dg .cr.string input[type=text]{color:#1ed36f}.dg .cr.function:hover,.dg .cr.boolean:hover{background:#111}.dg .c input[type=text]{background:#303030;outline:none}.dg .c input[type=text]:hover{background:#3c3c3c}.dg .c input[type=text]:focus{background:#494949;color:#fff}.dg .c .slider{background:#303030;cursor:ew-resize}.dg .c .slider-fg{background:#2FA1D6;max-width:100%}.dg .c .slider:hover{background:#3c3c3c}.dg .c .slider:hover .slider-fg{background:#44abda}\n");oLt.inject(dLt);var lCe="dg",cCe=72,uCe=20,lS="Default",sS=function(){try{return!!window.localStorage}catch(e){return!1}}(),aS=void 0,hCe=!0,RE=void 0,kG=!1,yCe=[],bn=function e(t){var i=this,r=t||{};this.domElement=document.createElement("div"),this.__ul=document.createElement("ul"),this.domElement.appendChild(this.__ul),Ye.addClass(this.domElement,lCe),this.__folders={},this.__controllers=[],this.__rememberedObjects=[],this.__rememberedObjectIndecesToControllers=[],this.__listening=[],r=mt.defaults(r,{closeOnTop:!1,autoPlace:!0,width:e.DEFAULT_WIDTH}),r=mt.defaults(r,{resizable:r.autoPlace,hideable:r.autoPlace}),mt.isUndefined(r.load)?r.load={preset:lS}:r.preset&&(r.load.preset=r.preset),mt.isUndefined(r.parent)&&r.hideable&&yCe.push(this),r.resizable=mt.isUndefined(r.parent)&&r.resizable,r.autoPlace&&mt.isUndefined(r.scrollable)&&(r.scrollable=!0);var n,s=sS&&"true"===localStorage.getItem(ME(this,"isLocal")),a=void 0,o=void 0;if(Object.defineProperties(this,{parent:{get:function(){return r.parent}},scrollable:{get:function(){return r.scrollable}},autoPlace:{get:function(){return r.autoPlace}},closeOnTop:{get:function(){return r.closeOnTop}},preset:{get:function(){return i.parent?i.getRoot().preset:r.load.preset},set:function(e){i.parent?i.getRoot().preset=e:r.load.preset=e,vLt(this),i.revert()}},width:{get:function(){return r.width},set:function(e){r.width=e,qG(i,e)}},name:{get:function(){return r.name},set:function(e){r.name=e,o&&(o.innerHTML=r.name)}},closed:{get:function(){return r.closed},set:function(t){r.closed=t,r.closed?Ye.addClass(i.__ul,e.CLASS_CLOSED):Ye.removeClass(i.__ul,e.CLASS_CLOSED),this.onResize(),i.__closeButton&&(i.__closeButton.innerHTML=t?e.TEXT_OPEN:e.TEXT_CLOSED)}},load:{get:function(){return r.load}},useLocalStorage:{get:function(){return s},set:function(e){sS&&(s=e,e?Ye.bind(window,"unload",a):Ye.unbind(window,"unload",a),localStorage.setItem(ME(i,"isLocal"),e))}}}),mt.isUndefined(r.parent)){if(this.closed=r.closed||!1,Ye.addClass(this.domElement,e.CLASS_MAIN),Ye.makeSelectable(this.domElement,!1),sS&&s){i.useLocalStorage=!0;var l=localStorage.getItem(ME(this,"gui"));l&&(r.load=JSON.parse(l))}this.__closeButton=document.createElement("div"),this.__closeButton.innerHTML=e.TEXT_CLOSED,Ye.addClass(this.__closeButton,e.CLASS_CLOSE_BUTTON),r.closeOnTop?(Ye.addClass(this.__closeButton,e.CLASS_CLOSE_TOP),this.domElement.insertBefore(this.__closeButton,this.domElement.childNodes[0])):(Ye.addClass(this.__closeButton,e.CLASS_CLOSE_BOTTOM),this.domElement.appendChild(this.__closeButton)),Ye.bind(this.__closeButton,"click",(function(){i.closed=!i.closed}))}else{void 0===r.closed&&(r.closed=!0);var h=document.createTextNode(r.name);Ye.addClass(h,"controller-name"),o=$G(i,h);Ye.addClass(this.__ul,e.CLASS_CLOSED),Ye.addClass(o,"title"),Ye.bind(o,"click",(function(e){return e.preventDefault(),i.closed=!i.closed,!1})),r.closed||(this.closed=!1)}r.autoPlace&&(mt.isUndefined(r.parent)&&(hCe&&(RE=document.createElement("div"),Ye.addClass(RE,lCe),Ye.addClass(RE,e.CLASS_AUTO_PLACE_CONTAINER),document.body.appendChild(RE),hCe=!1),RE.appendChild(this.domElement),Ye.addClass(this.domElement,e.CLASS_AUTO_PLACE)),this.parent||qG(i,r.width)),this.__resizeHandler=function(){i.onResizeDebounced()},Ye.bind(window,"resize",this.__resizeHandler),Ye.bind(this.__ul,"webkitTransitionEnd",this.__resizeHandler),Ye.bind(this.__ul,"transitionend",this.__resizeHandler),Ye.bind(this.__ul,"oTransitionEnd",this.__resizeHandler),this.onResize(),r.resizable&&gLt(this),a=function(){sS&&"true"===localStorage.getItem(ME(i,"isLocal"))&&localStorage.setItem(ME(i,"gui"),JSON.stringify(i.getSaveObject()))},this.saveToLocalStorageIfPossible=a,r.parent||((n=i.getRoot()).width+=1,mt.defer((function(){n.width-=1})))};function $G(e,t,i){var r=document.createElement("li");return t&&r.appendChild(t),i?e.__ul.insertBefore(r,i):e.__ul.appendChild(r),e.onResize(),r}function pCe(e){Ye.unbind(window,"resize",e.__resizeHandler),e.saveToLocalStorageIfPossible&&Ye.unbind(window,"unload",e.saveToLocalStorageIfPossible)}function jG(e,t){var i=e.__preset_select[e.__preset_select.selectedIndex];i.innerHTML=t?i.value+"*":i.value}function fLt(e,t,i){if(i.__li=t,i.__gui=e,mt.extend(i,{options:function(t){if(arguments.length>1){var r=i.__li.nextElementSibling;return i.remove(),oS(e,i.object,i.property,{before:r,factoryArgs:[mt.toArray(arguments)]})}if(mt.isArray(t)||mt.isObject(t)){var n=i.__li.nextElementSibling;return i.remove(),oS(e,i.object,i.property,{before:n,factoryArgs:[t]})}},name:function(e){return i.__li.firstElementChild.firstElementChild.innerHTML=e,i},listen:function(){return i.__gui.listen(i),i},remove:function(){return i.__gui.remove(i),i}}),i instanceof VG){var r=new L3(i.object,i.property,{min:i.__min,max:i.__max,step:i.__step});mt.each(["updateDisplay","onChange","onFinishChange","step","min","max"],(function(e){var t=i[e],n=r[e];i[e]=r[e]=function(){var e=Array.prototype.slice.call(arguments);return n.apply(r,e),t.apply(i,e)}})),Ye.addClass(t,"has-slider"),i.domElement.insertBefore(r.domElement,i.domElement.firstElementChild)}else if(i instanceof L3){var n=function(t){if(mt.isNumber(i.__min)&&mt.isNumber(i.__max)){var r=i.__li.firstElementChild.firstElementChild.innerHTML,n=i.__gui.__listening.indexOf(i)>-1;i.remove();var s=oS(e,i.object,i.property,{before:i.__li.nextElementSibling,factoryArgs:[i.__min,i.__max,i.__step]});return s.name(r),n&&s.listen(),s}return t};i.min=mt.compose(n,i.min),i.max=mt.compose(n,i.max)}else i instanceof mCe?(Ye.bind(t,"click",(function(){Ye.fakeEvent(i.__checkbox,"click")})),Ye.bind(i.__checkbox,"click",(function(e){e.stopPropagation()}))):i instanceof vCe?(Ye.bind(t,"click",(function(){Ye.fakeEvent(i.__button,"click")})),Ye.bind(t,"mouseover",(function(){Ye.addClass(i.__button,"hover")})),Ye.bind(t,"mouseout",(function(){Ye.removeClass(i.__button,"hover")}))):i instanceof zG&&(Ye.addClass(t,"color"),i.updateDisplay=mt.compose((function(e){return t.style.borderLeftColor=i.__color.toString(),e}),i.updateDisplay),i.updateDisplay());i.setValue=mt.compose((function(t){return e.getRoot().__preset_select&&i.isModified()&&jG(e.getRoot(),!0),t}),i.setValue)}function TCe(e,t){var i=e.getRoot(),r=i.__rememberedObjects.indexOf(t.object);if(-1!==r){var n=i.__rememberedObjectIndecesToControllers[r];if(void 0===n&&(n={},i.__rememberedObjectIndecesToControllers[r]=n),n[t.property]=t,i.load&&i.load.remembered){var s=i.load.remembered,a=void 0;if(s[e.preset])a=s[e.preset];else{if(!s[lS])return;a=s[lS]}if(a[r]&&void 0!==a[r][t.property]){var o=a[r][t.property];t.initialValue=o,t.setValue(o)}}}}function oS(e,t,i,r){if(void 0===t[i])throw new Error('Object "'+t+'" has no property "'+i+'"');var n=void 0;if(r.color)n=new zG(t,i);else{var s=[t,i].concat(r.factoryArgs);n=cLt.apply(e,s)}r.before instanceof U0&&(r.before=r.before.__li),TCe(e,n),Ye.addClass(n.domElement,"c");var a=document.createElement("span");Ye.addClass(a,"property-name"),a.innerHTML=n.property;var o=document.createElement("div");o.appendChild(a),o.appendChild(n.domElement);var l=$G(e,o,r.before);return Ye.addClass(l,bn.CLASS_CONTROLLER_ROW),n instanceof zG?Ye.addClass(l,"color"):Ye.addClass(l,QNt(n.getValue())),fLt(e,l,n),e.__controllers.push(n),n}function ME(e,t){return document.location.href+"."+t}function WG(e,t,i){var r=document.createElement("option");r.innerHTML=t,r.value=t,e.__preset_select.appendChild(r),i&&(e.__preset_select.selectedIndex=e.__preset_select.length-1)}function dCe(e,t){t.style.display=e.useLocalStorage?"block":"none"}function mLt(e){var t=e.__save_row=document.createElement("li");Ye.addClass(e.domElement,"has-save"),e.__ul.insertBefore(t,e.__ul.firstChild),Ye.addClass(t,"save-row");var i=document.createElement("span");i.innerHTML=" ",Ye.addClass(i,"button gears");var r=document.createElement("span");r.innerHTML="Save",Ye.addClass(r,"button"),Ye.addClass(r,"save");var n=document.createElement("span");n.innerHTML="New",Ye.addClass(n,"button"),Ye.addClass(n,"save-as");var s=document.createElement("span");s.innerHTML="Revert",Ye.addClass(s,"button"),Ye.addClass(s,"revert");var a=e.__preset_select=document.createElement("select");if(e.load&&e.load.remembered?mt.each(e.load.remembered,(function(t,i){WG(e,i,i===e.preset)})):WG(e,lS,!1),Ye.bind(a,"change",(function(){for(var t=0;t0&&(e.preset=this.preset,e.remembered||(e.remembered={}),e.remembered[this.preset]=P3(this)),e.folders={},mt.each(this.__folders,(function(t,i){e.folders[i]=t.getSaveObject()})),e},save:function(){this.load.remembered||(this.load.remembered={}),this.load.remembered[this.preset]=P3(this),jG(this,!1),this.saveToLocalStorageIfPossible()},saveAs:function(e){this.load.remembered||(this.load.remembered={},this.load.remembered[lS]=P3(this,!0)),this.load.remembered[e]=P3(this),this.preset=e,WG(this,e,!0),this.saveToLocalStorageIfPossible()},revert:function(e){mt.each(this.__controllers,(function(t){this.getRoot().load.remembered?TCe(e||this.getRoot(),t):t.setValue(t.initialValue),t.__onFinishChange&&t.__onFinishChange.call(t,t.getValue())}),this),mt.each(this.__folders,(function(e){e.revert(e)})),e||jG(this.getRoot(),!1)},listen:function(e){var t=0===this.__listening.length;this.__listening.push(e),t&&ECe(this.__listening)},updateDisplay:function(){mt.each(this.__controllers,(function(e){e.updateDisplay()})),mt.each(this.__folders,(function(e){e.updateDisplay()}))}});var bCe=bn,xCe=[["requestFullscreen","exitFullscreen","fullscreenElement","fullscreenEnabled","fullscreenchange","fullscreenerror"],["webkitRequestFullscreen","webkitExitFullscreen","webkitFullscreenElement","webkitFullscreenEnabled","webkitfullscreenchange","webkitfullscreenerror"],["webkitRequestFullScreen","webkitCancelFullScreen","webkitCurrentFullScreenElement","webkitCancelFullScreen","webkitfullscreenchange","webkitfullscreenerror"],["mozRequestFullScreen","mozCancelFullScreen","mozFullScreenElement","mozFullScreenEnabled","mozfullscreenchange","mozfullscreenerror"],["msRequestFullscreen","msExitFullscreen","msFullscreenElement","msFullscreenEnabled","MSFullscreenChange","MSFullscreenError"]],fd=(()=>{let e=xCe[0],t={};for(let i of xCe)if((null==i?void 0:i[1])in document){for(let[r,n]of i.entries())t[e[r]]=n;return t}return!1})(),ICe={change:fd.fullscreenchange,error:fd.fullscreenerror},il={request:(e=document.documentElement,t)=>new Promise(((i,r)=>{let n=()=>{il.off("change",n),i()};il.on("change",n);let s=e[fd.requestFullscreen](t);s instanceof Promise&&s.then(n).catch(r)})),exit:()=>new Promise(((e,t)=>{if(!il.isFullscreen)return void e();let i=()=>{il.off("change",i),e()};il.on("change",i);let r=document[fd.exitFullscreen]();r instanceof Promise&&r.then(i).catch(t)})),toggle:(e,t)=>il.isFullscreen?il.exit():il.request(e,t),onchange(e){il.on("change",e)},onerror(e){il.on("error",e)},on(e,t){let i=ICe[e];i&&document.addEventListener(i,t,!1)},off(e,t){let i=ICe[e];i&&document.removeEventListener(i,t,!1)},raw:fd};Object.defineProperties(il,{isFullscreen:{get:()=>Boolean(document[fd.fullscreenElement])},element:{enumerable:!0,get:()=>{var e;return null!=(e=document[fd.fullscreenElement])?e:void 0}},isEnabled:{enumerable:!0,get:()=>Boolean(document[fd.fullscreenEnabled])}}),fd||(il={isEnabled:!1});var F3=il;function _Ce(e,t,i,r,n,s,a){let o=e.addFolder(t);o.add(i,"x",n,s,a).onChange(r),o.add(i,"y",n,s,a).onChange(r),o.add(i,"z",n,s,a).onChange(r)}var H3=class{constructor(e){this.exploderDict={},this.controls={showGroundGrid:!1,showGrassGround:!1,skyMode:["None","Black Background","White Background","Gradient ramp","Cloudy"],environments:["None","Default (City Streat 64x32)","Venice Sunset","Footprint Court (HDR Labs)","City Street"],homeView:()=>console.log("[DGH] Go to home view"),views:["Top","Bottom","Front","Back","Left","Right"],OrthographicCamera:!1,viewpoints:!1,annotations:!1,takeSnapshot:()=>console.log("[DGH] Taking snapshot..."),fullScreen:()=>console.log("[DGH] Full screen..."),webcam:!1,uploadFile:()=>console.log("[DGH] Upload file..."),showBimTree:!1,showPropertyPanel:!1,transparentMode:!1,showVertexNormals:!1,sectionMode:["No section","Box section","Plane section"],alVisible:!0,alColor:"#cccccc",alIntensity:1,dlColor:"#dddddd",showDlHelper:!1,hlVisible:!0,hlIntensity:1,hlColor:[255,255,255,.6],hlGroundColor:[200,255,200,.6],fogEnabled:!1,fogColor:14540253,fogNearDistance:1,fogFarDistance:1e3,composerEnabled:!1,renderPassEnabled:!1,fxaaEnabled:!1,saoEnabled:!1,ssaoEnabled:!1,outlineEnabled:!1,ssaaEnabled:!1,bloomEnabled:!1,unrealBloomEnabled:!1},this.viewer=e,this.init()}init(){if(!this.viewer||!this.viewer.renderer||!this.viewer.scene)throw new Error("Need to initialize renderer, scene first!");let e=this.viewer,t=this.viewer.scene,i=this.controls;this.gui=new bCe({name:"controls",autoPlace:!0,width:300,closed:!0}),this.gui.domElement.style.opacity="0.6";let r=this.gui.addFolder("Common settings");r.add(i,"showGroundGrid").name("Show ground grid").onChange((i=>{e.groundGrid?e.groundGrid.visible=i:i&&(e.groundGrid=Js.createGroundGrid(),t.add(e.groundGrid),e.enableRender()),e.enableRender()})),r.add(i,"showGrassGround").name("Show grass ground").onChange((i=>{e.grassGround?e.grassGround.visible=i:i&&ht(this,null,(function*(){e.grassGround=yield Js.createGrassGround(),t.add(e.grassGround),e.enableRender()})),e.enableRender()}));let n=r.add(i,"skyMode",i.skyMode).name("Sky mode");n.onChange((i=>{if(e.skyOfGradientRamp&&(e.skyOfGradientRamp.visible="Gradient ramp"===i),"Black Background"===i)t.background=new je(0);else if("White Background"===i)t.background=new je(16777215);else if("Gradient ramp"===i)e.skyOfGradientRamp||(e.skyOfGradientRamp=qo.createSkyOfGradientRamp(),t.add(e.skyOfGradientRamp)),e.skyOfGradientRamp.visible=!0;else if("Cloudy"===i){let e=["right.jpg","left.jpg","top.jpg","bottom.jpg","front.jpg","back.jpg"];e=e.map((e=>`${window.location.origin}/images/skybox/cloudy/${e}`)),qo.createSkyFromTextures(e).then((e=>{t.background=e}))}else t.background=e.sceneBackgroundColor;e.enableRender()})),n.setValue("Gradient ramp"),r.add(i,"environments",i.environments).name("Environments").onChange((i=>{let r="";if("Default (City Streat 64x32)"===i){if(e.pmremGenerator)return Nc.createEnvTextureFromDataArray(e.pmremGenerator).then((e=>{t.environment=e})),void e.enableRender()}else"Venice Sunset"===i?r="venice_sunset_1k.hdr":"Footprint Court (HDR Labs)"===i?r="footprint_court_2k.hdr":"City Street"===i&&(r="city_street_256.hdr");""===r?t.environment=null:(r=`${window.location.origin}/images/envmap/${r}`,Nc.createEnvTexture(e.pmremGenerator,r).then((e=>{t.environment=e}))),e.enableRender()})),r.add(i,"homeView").name("Go to home view").onChange((()=>{e.goToHomeView()})),r.add(i,"views",i.views).name("Views").onChange((i=>{var r;let n=new A,s=new A,a=Tn.getVisibleObjectBoundingBox(t),o=xs.getCameraDirectionByView(i);xs.getCameraPositionByBboxAndDirection(a,n,s,null==(r=e.camera)?void 0:r.projectionMatrix,o),e.flyTo(n,s)})),r.add(i,"OrthographicCamera").name("Orth Camera").onChange((t=>{e.setToOrthographicCamera(t)})),r.add(i,"takeSnapshot").name("Take snapshot").onChange((()=>{})),r.add(i,"fullScreen").name("Full screen").onChange((()=>{F3&&F3.isEnabled&&F3.request(),e.enableRender()})),r.add(i,"uploadFile").name("Upload file").onChange((()=>{new $O(e).openFileBrowserToUpload()}));let s=this.gui.addFolder("Model operations");s.add(i,"transparentMode",i.transparentMode).name("Transparent mode").onChange((t=>{e.addOrRemoveObjectOpacity(t),e.enableRender()})),s.add(i,"showVertexNormals",i.showVertexNormals).name("Show Vertex Normals").onChange((t=>{e.showVertexNormals(t),e.enableRender()})),s.add(i,"sectionMode",i.sectionMode).name("Section mode").onChange((t=>{"No section"===t?e.deactivateSection():"Box section"===t?e.activateSection("ObjectsBoxSection"):"Plane section"===t&&e.activateSection("PickPlaneSection"),e.enableRender()}));let a=this.viewer.ambientLight,o=this.gui.addFolder("Ambient light");o.add(i,"alVisible",i.alVisible).name("visible").onChange((t=>{a&&(a.visible=t),e.enableRender()})),o.addColor(i,"alColor").name("color").onChange((t=>{a&&(a.color=new je(t)),e.enableRender()})),o.add(i,"alIntensity",0,5).name("intensity").onChange((t=>{a&&(a.intensity=t),e.enableRender()}));let l=this.viewer.directionalLight;if(l){let t=this.gui.addFolder("Directional light");t.add(l,"visible").name("visible").onChange((t=>{l&&(l.visible=t),e.enableRender()})),t.addColor(i,"dlColor").name("color").onChange((t=>{l&&(l.color=new je(t)),e.enableRender()})),t.add(l,"intensity",0,5).name("intensity").onChange((t=>{l&&(l.intensity=t),e.enableRender()})),t.add(l,"castShadow").name("castShadow").onChange((t=>{l&&(l.castShadow=t),e.enableRender()})),t.add(i,"showDlHelper").name("showDlHelper").onChange((t=>{e.showDirectionalLightHelper(t),e.enableRender()}));let r=()=>{e.updateDirectionalLight(),e.enableRender()};_Ce(t,"position",l.position,r),_Ce(t,"target",l.target.position,r);let n=t.addFolder("shadow");n.add(l.shadow.camera,"near").name("near").onChange(r),n.add(l.shadow.camera,"far").name("far").onChange(r),n.add(l.shadow.camera,"zoom").name("zoom").onChange(r)}let h=this.viewer.hemisphereLight,u=this.gui.addFolder("Hemisphere Light");u.add(i,"hlVisible",i.hlVisible).name("visible").onChange((t=>{h&&(h.visible=t),e.enableRender()})),u.add(i,"hlIntensity",0,5).name("intensity").onChange((t=>{h&&(h.intensity=t),e.enableRender()})),u.addColor(i,"hlColor").name("color").onChange((t=>{h&&(h.color=new je(t)),e.enableRender()})),u.addColor(i,"hlGroundColor").name("groundColor").onChange((t=>{h&&(h.groundColor=new je(t)),e.enableRender()}));let c=this.gui.addFolder("Fog");c.add(i,"fogEnabled",i.fogEnabled).name("Enabled").onChange((r=>{t.fog=r?new Uu(i.fogColor,i.fogNearDistance,i.fogFarDistance):null,e.enableRender()})),c.add(i,"fogNearDistance",0,100).name("Near").onChange((r=>{i.fogEnabled&&t&&(t.fog=new Uu(i.fogColor,r,i.fogFarDistance)),e.enableRender()})),c.add(i,"fogFarDistance",100,2e3).name("Far").onChange((r=>{i.fogEnabled&&t&&(t.fog=new Uu(i.fogColor,i.fogNearDistance,r)),e.enableRender()}));let p=this.gui.addFolder("Composer");p.add(i,"composerEnabled",i.composerEnabled).name("Composer Enabled").onChange((t=>{e.enableComposer(t)})),p.add(i,"renderPassEnabled",i.renderPassEnabled).name("RenderPass Enabled").onChange((t=>{e.enableRenderPass(t)})),p.add(i,"fxaaEnabled",i.fxaaEnabled).name("Effect FXAA Enabled").onChange((t=>{e.enableFxaaPass(t)})),p.add(i,"saoEnabled",i.saoEnabled).name("SAO Enabled").onChange((t=>{e.enableSaoPass(t)})),p.add(i,"ssaoEnabled",i.ssaoEnabled).name("SSAO Enabled").onChange((t=>{e.enableSsaoPass(t)})),p.add(i,"outlineEnabled",i.outlineEnabled).name("OutlinePass Enabled").onChange((t=>{e.enableOutlinePass(t)})),p.add(i,"ssaaEnabled",i.ssaaEnabled).name("SSAA Enabled").onChange((t=>{e.enableSsaaPass(t)})),p.add(i,"bloomEnabled",i.bloomEnabled).name("Bloom Enabled").onChange((t=>{e.enableBloomPass(t)})),p.add(i,"unrealBloomEnabled",i.unrealBloomEnabled).name("Unreal Bloom Enabled").onChange((t=>{e.enableUnrealBloomPass(t)}))}setExplodeMode(e,t=!1){!this.viewer||!this.viewer.scene||!this.viewer.loadedModels||!this.exploderDict||(e?Tn.explodeObjects(this.viewer.scene,this.exploderDict,Object.values(this.viewer.loadedModels).map((e=>e.id)),t):Tn.unexplodeObjects(this.viewer.scene,this.exploderDict||{}))}open(){this.gui&&this.gui.open()}close(){this.gui&&this.gui.close()}beforeDestroy(){this.viewer=void 0,this.gui&&this.gui.destroy(),this.gui=void 0,this.exploderDict=[]}},U3=class{constructor(){this.vertexShader="\n varying vec2 vUv;\n void main( void ) {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position,1.0);\n }",this.fragmentShader="\n uniform vec3 keyColor;\n uniform float similarity;\n uniform float smoothness;\n varying vec2 vUv;\n uniform sampler2D map;\n void main() {\n vec4 videoColor = texture2D(map, vUv);\n\n float Y1 = 0.299 * keyColor.r + 0.587 * keyColor.g + 0.114 * keyColor.b;\n float Cr1 = keyColor.r - Y1;\n float Cb1 = keyColor.b - Y1;\n \n float Y2 = 0.299 * videoColor.r + 0.587 * videoColor.g + 0.114 * videoColor.b;\n float Cr2 = videoColor.r - Y2; \n float Cb2 = videoColor.b - Y2; \n \n float blend = smoothstep(similarity, similarity + smoothness, distance(vec2(Cr2, Cb2), vec2(Cr1, Cb1)));\n gl_FragColor = vec4(videoColor.rgb, videoColor.a * blend); \n }";let e=document.createElement("video");this.webcam=e;navigator.mediaDevices.getUserMedia({video:{width:600,height:400}}).then((t=>{e.srcObject=t,e.onloadedmetadata=()=>{e.setAttribute("autoplay","true"),e.setAttribute("playsinline","true"),e.play()}})).catch((function(e){alert(e.name+": "+e.message)})),this.webcamCanvas=document.createElement("canvas");let t=this.webcamCanvas.getContext("2d");this.canvasCtx=t,t.fillStyle="#000000",t.fillRect(0,0,this.webcamCanvas.width,this.webcamCanvas.height);let i=new Bi(this.webcamCanvas);this.webcamTexture=i,i.minFilter=oi,i.magFilter=oi,this.shaderMaterial=new Yt({transparent:!0,uniforms:{map:{value:i},keyColor:{value:[0,1,0]},similarity:{value:.3},smoothness:{value:0}},vertexShader:this.vertexShader,fragmentShader:this.fragmentShader})}getShaderMaterial(){return this.shaderMaterial}createWebCamPlane(e=5,t=4){let i=new ts(e,t);return new rt(i,this.shaderMaterial)}animate(){this.webcam.readyState===this.webcam.HAVE_ENOUGH_DATA&&(this.canvasCtx.drawImage(this.webcam,0,0,this.webcamCanvas.width,this.webcamCanvas.height),this.webcamTexture.needsUpdate=!0)}},SCe=new A,wCe=new Wi,RCe=class extends rm{constructor(e,t){var i;super(e),this.name="BimViewer",this.timer=Date.now(),this.selectedObject=void 0,this.sceneBackgroundColor=new je(15463159),this.loadedModels={},this.loaded3dTiles={},this.composerRenderEnabled=!0,this.composerEnabled=!1,this.savedMaterialsForOpacity=[],this.raf=new dT,this.clock=new Al,this.renderEnabled=!0,this.isFrustumInsectChecking=!1,this.lastFrameExecuteTime=Date.now(),this.maxFps=60,this.settings=cT,this.jobCount=0,this.twoDModelCount=0,this.bbox=new Mt,this.onResize=()=>{var e;let t=null==(e=this.renderer)?void 0:e.domElement;t&&t.parentElement&&this.resize(t.parentElement.clientWidth,t.parentElement.clientHeight)},this.onKeyDown=e=>{let t=this.camera,i=this.controls;if(!t||!i)return;let r=this.settings.keyboard.sensitivity||3,n=i.getPosition(new A),s=i.getTarget(new A),a=s.clone();if("ArrowLeft"===e.code||"ArrowRight"===e.code){let t=Math.PI*r/180;"ArrowLeft"===e.code&&(t=-t),a.x=(s.x-n.x)*Math.cos(t)-(s.z-n.z)*Math.sin(t)+n.x,a.z=(s.z-n.z)*Math.cos(t)+(s.x-n.x)*Math.sin(t)+n.z,i.setTarget(a.x,a.y,a.z)}else if("ArrowUp"===e.code||"ArrowDown"===e.code){let t=Math.PI*r/180,o=new A(s.x-n.x,s.y-n.y,s.z-n.z).length(),l=s.y-n.y;"ArrowDown"===e.code&&(t=-t);let h=Math.asin(l/o)+t;if(h<-Math.PI/2||h>Math.PI/2)return;let u=Math.sin(h)*o;a.y=s.y+(u-l),i.setTarget(a.x,a.y,a.z)}else if("KeyW"===e.code){let e=.01*r,a=n.distanceTo(s);if(a<10*t.near){let e=i.getTarget(new A).lerp(n,-t.near/a);i.setTarget(e.x,e.y,e.z)}n.lerp(s,e),i.setLookAt(n.x,n.y,n.z,s.x,s.y,s.z)}else if("KeyS"===e.code){let e=.01*r;n.lerp(s,-e),i.setLookAt(n.x,n.y,n.z,s.x,s.y,s.z,!1)}else if("KeyF"===e.code)this.flyToSelectedObject();else if("KeyT"===e.code){let e=this.getIntersections();if(e.length>0){let r=e.find((e=>{let t=e.object;return t.visible&&t instanceof rt}));if(r&&r.point&&this.camera&&this.controls){let e=this.camera.position,n=r.point,s=i.getTarget(new A),a=e.distanceTo(n);if(a>t.near&&a{this.renderEnabled=!0,this.raf&&(this.timeoutSymbol&&this.raf.clearTimeout(this.timeoutSymbol),this.timeoutSymbol=this.raf.setTimeout((()=>{this.renderEnabled=!1,this.composerRenderEnabled=!0}),e))},this.applyOptionsAndAddToScene=(e,t,i)=>{ne.info(`[BimViewer] '${e}' is loaded in ${(Date.now()-this.timer)/1e3}s, adding to scene...`),this.timer=Date.now();let r=i.src&&i.src.toLowerCase();if(r&&r.endsWith("dxf")&&this.twoDModelCount++,i.matrix&&16===i.matrix.length){let e=new Be;e.elements=i.matrix,t.applyMatrix4(e)}else{let e=i.position||[0,0,0],r=i.rotation||[0,0,0],n=i.scale||[1,1,1];t.position.set(e[0],e[1],e[2]),t.rotation.set(r[0]*Math.PI/180,r[1]*Math.PI/180,r[2]*Math.PI/180),t.scale.set(n[0],n[1],n[2])}t.matrixAutoUpdate=!1,t.updateMatrix(),t.traverse((e=>{e.matrixAutoUpdate&&(e.matrixAutoUpdate=!1,e.updateMatrix())}));let n=i.instantiate,s=i.merge;n?setTimeout((()=>{this.instantiate(t),setTimeout((()=>{s&&this.merge(t),this.addLoadedModelToScene(t,i)}),0)}),0):s?setTimeout((()=>{this.merge(t),setTimeout((()=>this.addLoadedModelToScene(t,i)),0)}),0):this.addLoadedModelToScene(t,i)},this.onAnchorPointerDown=e=>{var t,i;null==(t=this.controls)||!t.enableRotate||!this.renderer||null!=(i=this.sectionManager)&&i.isSectionActive()||this.setOrbitPoint(e)},this.onAnchorPointerUp=()=>{this.anchor&&(this.anchor.className="anchor")},this.viewerCfg=Br(Br({},DDe),e),ne.info("[BimViewer]","viewerCfg:",this.viewerCfg),this.settings=cT,this.cameraCfg=t,this.cameraCfg&&this.cameraCfg.near&&(this.settings.camera.near=this.cameraCfg.near),this.cameraCfg&&this.cameraCfg.far&&(this.settings.camera.far=this.cameraCfg.far),this.increaseJobCount(),this.init(),this.animate(),this.renderer&&(null==(i=this.viewerContainer)||i.append(this.renderer.domElement)),this.decreaseJobCount(),ne.info(`[BimViewer] Initialized in ${(Date.now()-this.timer)/1e3}s`)}init(){let e=this.viewerCfg;this.initThree(),xi.isBrowser&&!e.context&&this.initDom(),this.initEvents(),this.initControls()}initThree(){this.initScene(),this.initRenderer(),this.initCamera(),this.initLights()}initDom(){let e=this.viewerCfg;this.initSpinner(),!0===e.enableDatGui&&this.initDatGui(),this.initOthers(),!0===e.enableAxisGizmo&&(this.axes=this.initAxes()),!0===e.enableStats&&(this.stats=this.initStats()),e.enableToolbar&&(this.toolbar=this.initToolbar()),e.enableBottomBar&&(this.bottomBar=this.initBottomBar()),e.enableNavCube&&(this.navCube=this.initNavCube()),e.enableContextMenu&&(this.contextMenu=this.initContextMenu())}initScene(){this.scene=new Nn,this.scene.matrixAutoUpdate=!1}initRenderer(){this.renderer=new Ol({antialias:!0,preserveDrawingBuffer:!0}),this.renderer.setPixelRatio(window.devicePixelRatio),this.renderer.setSize(this.width,this.height),this.renderer.outputEncoding=gr,this.renderer.toneMappingExposure=1,this.renderer.physicallyCorrectLights=!0,this.renderer.setClearColor(11119017,1),this.renderer.shadowMap.enabled=!0,this.renderer.shadowMap.type=By,_t.printGpuInfo(this.renderer.getContext()),this.pmremGenerator=new xp(this.renderer),this.pmremGenerator.compileEquirectangularShader(),this.enableOverlayRenderer&&(this.overlayRender=new wr(this)),this.setEnvironmentFromDataArray()}initCamera(){this.scene&&(this.perspectiveCamera=new Vr(45,this.width/this.height,this.settings.camera.near,this.settings.camera.far),this.perspectiveCamera.layers.enable(11),this.perspectiveCamera.position.set(0,100,0),this.scene.add(this.perspectiveCamera),this.camera=this.perspectiveCamera)}initControls(e=!1){if(!this.renderer)return;xi.printDeviceInfo();let t,i=e?this.orthoCamera:this.perspectiveCamera;i&&this.inputManager&&((!this.perspectiveCameraControls||!this.orthoCameraConrols)&&(t=new $l(i,this.inputManager),t.dollySpeed=.1,t.dollyToCursor=!0,t.enabled=!0,t.keyTruckSpeed=10,t.restThreshold=0,t.keys={left:"KeyD",up:"KeyE",right:"KeyA",bottom:"KeyQ"},t.listenToKeyEvents(),t.update(0)),t&&(e?(this.orthoCameraConrols=t,t.minZoom=3):(this.perspectiveCameraControls=t,this.bbox&&(t.minDistance=.1,t.maxDistance=3*this.bbox.getSize(new A).length())),this.controls=t))}initRotateToCursor(){this.anchor=this.createAnchor()}initLights(){if(!this.scene)return;let e=16777215,t=new Ks(e,1.5);t.name="sun",t.castShadow=!0,t.position.set(-2,2,4),t.shadow.autoUpdate=!1,t.shadow.mapSize.width=1024,t.shadow.mapSize.height=1024,this.directionalLight=t,this.scene.add(t),this.scene.add(t.target),this.directionalLightHelper=new wx(this.directionalLight),this.directionalLightHelper.traverse((e=>{e.layers.set(11)})),this.directionalLightHelper.visible=!1,this.scene.add(this.directionalLightHelper),this.shadowCameraHelper=new Rx(this.directionalLight.shadow.camera),this.shadowCameraHelper.layers.set(11),this.shadowCameraHelper.visible=!1,this.scene.add(this.shadowCameraHelper),this.ambientLight=new Cl(3158064),this.hemisphereLight=new df(e,14540253,2),this.hemisphereLight.position.set(0,300,0),this.scene.add(this.ambientLight),this.scene.add(this.hemisphereLight)}initEvents(){if(!this.renderer)return;let e=new M0(this.renderer.domElement);this.inputManager=e;let t,i=!1,r=!1;e.addEventListener("pointerdown",(e=>{r=!1,i=!0,0===e.button&&this.onAnchorPointerDown(e)})),e.addEventListener("pointermove",(()=>{i&&(r=!0)})),e.addEventListener("pointerup",(()=>{i=!1,this.onAnchorPointerUp()})),e.addEventListener("click",(e=>{var i;r?r=!1:(t&&clearTimeout(t),t=setTimeout((()=>{if(0===e.button)this.handleMouseClick(e)}),300),(!this.selectedObject||this.selectedObject&&this.selectedObject instanceof sr)&&(null==(i=this.contextMenu)||i.hide()))})),e.addEventListener("dblclick",(e=>{var i,n;!r&&null!=(i=this.sectionManager)&&i.isSectionActive()&&null!=(n=this.measurementManager)&&n.isMeasurementActive()||(t&&clearTimeout(t),this.handleMouseClick(e),this.flyToSelectedObject(),this.enableRender())})),e.addEventListener("keydown",(e=>{this.onKeyDown(e)})),e.addEventListener("contextmenu",(e=>{r||this.handleRightClick(e)})),e.addEventListener("resize",this.onResize),this.initRotateToCursor(),this.raycaster=new Oc}initDatGui(){this.datGui=new H3(this),this.datGui.close()}initSpinner(){var e;if(!this.viewerCfg.enableSpinner)return;let t=document.createElement("div");t.classList.add("bim-viewer-spinner");let i=document.createElement("div");i.classList.add(uo,"icon-loading"),t.append(i),null==(e=this.widgetContainer)||e.appendChild(t),this.spinner=t,this.setSpinnerVisibility(this.jobCount>0)}initOthers(){if(!this.scene||!this.renderer||!this.camera)return;let e=this.datGui&&this.datGui.controls;e&&(e.showGroundGrid&&(this.groundGrid=Js.createGroundGrid(),this.scene.add(this.groundGrid)),e.showGrassGround&&ht(this,null,(function*(){this.grassGround=yield Js.createGrassGround(),this.scene&&this.scene.add(this.grassGround),this.enableRender()})),e.webcam&&this.enableWebCam(),this.composerEnabled=e.composerEnabled,this.composerEnabled&&(this.enableComposer(!0),this.enableRenderPass(e.renderPassEnabled),this.enableFxaaPass(e.fxaaEnabled),this.enableSaoPass(e.saoEnabled),this.enableSsaoPass(e.ssaoEnabled),this.enableOutlinePass(e.outlineEnabled),this.enableSsaaPass(e.ssaaEnabled),this.enableBloomPass(e.bloomEnabled),this.enableUnrealBloomPass(e.unrealBloomEnabled))),this.renderer.domElement.style.outlineWidth="0"}initNavCube(){var e;let t=document.createElement("div");t.id="navCube";let i=new JO;return i.renderer&&(t.appendChild(i.renderer.domElement),i.setHostViewer(this)),null==(e=this.widgetContainer)||e.appendChild(t),i}initAxes(){var e,t;let i=document.createElement("div");i.classList.add("axesRenderer");let r=new Sf(i,this.camera);return null==(e=this.widgetContainer)||e.append(i),this.axesInScene=new oT(!1),null==(t=this.scene)||t.add(this.axesInScene),r}initStats(){var e;let t=I3();t.setMode(0);let i=document.createElement("div");return i.classList.add("statsOutput"),i.appendChild(t.domElement),null==(e=this.widgetContainer)||e.append(i),t}initContextMenu(){let e=new C3({items:rCe,context:{bimViewer:this,toolbar:this.toolbar,section:this.section},container:this.widgetContainer});return window.oncontextmenu=e=>e.preventDefault(),e}initToolbar(){let e=this.viewerCfg;return new Eh(this,(0,pm.merge)({},wDe,e.toolbarMenuConfig))}initBottomBar(){return new lm(this)}get has2dModel(){return this.twoDModelCount>0}showContextMenu(e){if(!this.contextMenu||!this.widgetContainer)return;let t=this.getAllIntersections(e);ne.debug("[BimViewer] showContextMenu intersections = ",t);let i,r=(0,pm.find)(t,(e=>{let t=e.object;return t instanceof rt&&t.visible})),n=this.contextMenu.context,s=null==r?void 0:r.instanceId,a=null==r?void 0:r.faceIndex;a&&(i=Yi.getBatchIdByFaceIndex(null==r?void 0:r.object,a)),this.contextMenu.context=Cn(Br({},n),{hit:null==r?void 0:r.object,instanceId:s,batchId:i});let{x:o,y:l}=e;this.contextMenu.show(o,l)}handleRightClick(e){this.showContextMenu(e)}sycnCameraPosition(e,t){let i=e.position;if(t.position.set(i.x,i.y,i.z),this.scene){let e=this.scene.position;t.lookAt(e)}}sycnControls(e,t){let i=e.getTarget(new A),r=e.getPosition(new A);t.setPosition(r.x,r.y,r.z),t.setTarget(i.x,i.y,i.z)}setToOrthographicCamera(e=!1){var t;if(!this.scene||!this.controls)return;let i=this.perspectiveCamera,r=this.perspectiveCameraControls,n=this.orthoCamera,s=this.orthoCameraConrols;e?(n||(n=new qi(-this.width/2,this.width/2,this.height/2,-this.height/2,this.settings.camera.near,this.settings.camera.far),n.layers.enable(11),n.position.set(0,100,0),n.zoom=10,n.updateProjectionMatrix(),this.scene&&this.scene.add(n),this.orthoCamera=n),s||(this.initControls(!0),s=this.orthoCameraConrols),i&&(this.sycnCameraPosition(i,n),n.zoom=10,n.updateProjectionMatrix()),r&&s&&i&&this.sycnControls(r,s),this.camera=n,this.controls=s):(i&&n&&this.sycnCameraPosition(n,i),r&&s&&n&&this.sycnControls(s,r),this.camera=i,this.controls=r),null==(t=this.axes)||t.setHostCamera(this.camera),this.resize(this.width,this.height),this.dispatchEvent("CameraChanged")}animate(){var e,t,i;requestAnimationFrame(this.animate.bind(this));let r=this.clock.getDelta(),n=this.controls&&this.controls.update(r);if(this.maxFps>0){if(Date.now()-this.lastFrameExecuteTime<1e3/this.maxFps)return;this.lastFrameExecuteTime=Date.now()}this.webcam&&this.webcam.animate(),this.scene&&this.camera&&(this.renderEnabled||n)&&(this.update3dTiles(),null==(e=this.renderer)||e.render(this.scene,this.camera),this.dispatchEvent("RenderAfter")),this.composerRenderEnabled&&this.composer&&this.composerEnabled&&(this.composer.render(),this.composerRenderEnabled=!1),this.frustrumCullingByModelBBox(),null==(t=this.stats)||t.update(),null==(i=this.bottomBar)||i.update()}update3dTiles(){if(!this.camera)return;let e=Object.values(this.loaded3dTiles);0!==e.length&&(this.camera.updateMatrixWorld(),e.forEach((e=>{e.renderer.update()})))}frustrumCullingByModelBBox(){let e=new $s,t=new Be;this.isFrustumInsectChecking=!0,this.camera&&(t.multiplyMatrices(this.camera.projectionMatrix,this.camera.matrixWorldInverse),e.setFromProjectionMatrix(t),Object.values(this.loadedModels).forEach((t=>{let i=this.scene&&this.scene.getObjectById(t.id),r=t.bbox;i&&r&&this.scene&&(void 0===i.userData._visible&&(i.userData._visible=!0,Object.defineProperties(i,{visible:{set:e=>{i.userData._visible=e,this.isFrustumInsectChecking||(i.userData.userConfigVisibility=!0)},get:()=>i.userData._visible}})),void 0===i.userData.userConfigVisibility&&(r.geometry.computeBoundingBox(),r.geometry.boundingBox&&(i.visible=e.intersectsBox(r.geometry.boundingBox))))})),Object.values(this.loaded3dTiles).forEach((t=>{let i=t.renderer.group;i&&!t.bbox.isEmpty()&&this.scene&&(void 0===i.userData._visible&&(i.userData._visible=!0,Object.defineProperties(i,{visible:{set:e=>{i.userData._visible=e,this.isFrustumInsectChecking||(i.userData.userConfigVisibility=!0)},get:()=>i.userData._visible}})),void 0===i.userData.userConfigVisibility&&(i.visible=e.intersectsBox(t.bbox)))}))),this.isFrustumInsectChecking=!1}destroy(){var e,t,i,r;null==(e=this.inputManager)||e.removeEventListener(),this.datGui&&this.datGui.gui&&(this.datGui.beforeDestroy(),this.datGui=void 0);let n=this.webcamPlane;this.scene&&n&&(this.scene.remove(n),n.geometry.dispose(),n.material.dispose(),this.webcamPlane=void 0),this.webcam=void 0,this.composer=void 0,this.renderPass=void 0,this.effectFxaaPass=void 0,this.saoPass=void 0,this.ssaoPass=void 0,this.outlinePass=void 0,this.ambientLight=void 0,this.directionalLight=void 0,this.hemisphereLight=void 0,this.directionalLightHelper&&(this.directionalLightHelper.dispose(),this.directionalLightHelper=void 0),this.controls&&(this.disposeRotateToCursor(),this.controls.dispose(),this.controls=void 0),this.perspectiveCameraControls&&(this.perspectiveCameraControls.dispose(),this.perspectiveCameraControls=void 0),this.shadowCameraHelper&&(this.shadowCameraHelper.dispose(),this.shadowCameraHelper=void 0),this.stats=void 0,this.raycaster=void 0,this.selectedObject=void 0,this.groundGrid&&(this.groundGrid.geometry.dispose(),this.groundGrid.material.dispose(),this.groundGrid.clear(),this.groundGrid=void 0),this.grassGround&&(this.grassGround.geometry.dispose(),this.grassGround.material.dispose(),this.grassGround.clear(),this.grassGround=void 0),this.skyOfGradientRamp&&(this.skyOfGradientRamp.geometry.dispose(),this.skyOfGradientRamp.material.dispose(),this.skyOfGradientRamp.clear(),this.skyOfGradientRamp=void 0),this.savedMaterialsForOpacity=void 0,this.section=void 0,this.sectionType=void 0,Object.keys(this.loadedModels).forEach((e=>{delete this.loadedModels[e]})),Object.values(this.loaded3dTiles).forEach((e=>{e.renderer.dispose()})),this.loaded3dTiles={},this.perspectiveCamera=void 0,this.perspectiveCameraControls=void 0,this.raf&&(this.timeoutSymbol&&this.raf.clearTimeout(this.timeoutSymbol),this.raf=void 0),this.contextMenu&&(this.contextMenu.destroy(),this.contextMenu=void 0),this.navCube&&(this.navCube.dispose(),this.navCube=void 0),this.axes&&(this.axes.dispose(),this.axes=void 0),this.axesInScene&&(this.axesInScene.clear(),this.axesInScene=void 0),this.toolbar&&(this.toolbar.destroy(),this.toolbar=void 0),this.spinner&&(this.spinner.remove(),this.spinner=void 0),this.bottomBar=void 0,this.pmremGenerator&&(this.pmremGenerator.dispose(),this.pmremGenerator=void 0),null==(t=this.measurementManager)||t.destroy(),this.measurementManager=void 0,null==(i=this.zoomToRectHelper)||i.destroy(),this.zoomToRectHelper=void 0,null==(r=this.sectionManager)||r.destroy(),this.sectionManager=void 0,super.destroy()}loadLocalModel(e,t,i,r){return ht(this,null,(function*(){let n;this.timer=Date.now(),this.increaseJobCount();try{n=yield new $c(i).loadLocalModel(e,t.src,r)}catch(e){let i=`Error loading ${t.src}`;return ne.error(i,e),Promise.reject(i)}finally{this.decreaseJobCount()}return n?(this.applyOptionsAndAddToScene(e,n,t),Promise.resolve()):Promise.reject()}))}loadModel(e,t){return ht(this,null,(function*(){let i;this.timer=Date.now(),this.increaseJobCount();try{i=yield(new $c).loadModel(e.src,e.fileFormat,t)}catch(t){let i=`Error loading ${e.src}`;return ne.error(i,t),Promise.reject(i)}finally{this.decreaseJobCount()}return i?(this.applyOptionsAndAddToScene(e.src,i,e),Promise.resolve()):Promise.reject()}))}load3dTiles(e){return ht(this,null,(function*(){var t;this.timer=Date.now(),this.increaseJobCount();let i=new W_(e.src),r=new Mt,n=yield new Promise(((t,n)=>{i.onLoadTileSet=()=>{i.getBounds(r)||(i.getBoundingSphere(wCe)?wCe.getBoundingBox(r):(ne.warn(`[BimViewer] Can't get the correct bounding box of 3dTiles '${e.src}'!`),n())),ne.debug(r),i.onLoadTileSet=null;let s=i.group;ne.debug(s),t(s)},i.onLoadModel=e=>{e.traverse((e=>{e.matrixAutoUpdate&&(e.matrixAutoUpdate=!1,e.updateMatrix()),e.isMesh&&(e.castShadow=!0,e.receiveShadow=!0)})),e.updateWorldMatrix(!1,!0),this.updateDirectionalLightShadow(),this.enableRender()},i.setCamera(this.camera),i.setResolutionFromRenderer(this.camera,this.renderer),i.update()}));if(n){let s=Date.now(),a=e.modelId||e.src;if(this.loaded3dTiles[a]){let e=1;for(;this.loaded3dTiles[`${a}_${e}`];)e++;a=`${a}_${e}`,ne.warn(`[BimViewer] 3dTiles '${a}' is loaded more than once!`)}if(this.loaded3dTiles[a]={id:n.id,bbox:r,renderer:i},e.matrix&&16===e.matrix.length){let t=new Be;t.elements=e.matrix,n.applyMatrix4(t)}else{let t=e.position||[0,0,0],i=e.rotation||[0,0,0],r=e.scale||[1,1,1];n.position.set(t[0],t[1],t[2]),n.rotation.set(i[0]*Math.PI/180,i[1]*Math.PI/180,i[2]*Math.PI/180),n.scale.set(r[0],r[1],r[2])}if(n.matrixAutoUpdate=!1,n.updateMatrix(),n.updateMatrixWorld(!0),null==(t=this.scene)||t.add(n),r.applyMatrix4(n.matrix),this.computeBoundingBox(),this.tryAdjustDirectionalLight(),0===Object.keys(this.loadedModels).length&&1===Object.keys(this.loaded3dTiles).length){let e=this.datGui&&this.datGui.controls;this.regenSkyOfGradientRamp(),e&&e.showGroundGrid&&this.regenGroundGrid(),this.tryAdjustCameraNearAndFar(),this.goToHomeView()}return ne.info(`[BimViewer] Added 3dTiles '${e.src}' to scene in ${(Date.now()-s)/1e3}s`),this.enableRender(),this.decreaseJobCount(),Promise.resolve()}return this.decreaseJobCount(),Promise.reject()}))}addLoadedModelToScene(e,t){if(!this.scene)return;if(t.merge){let t=Date.now();tE.createMeshBvhAsync([e],{saveOriginalIndex:!0}),ne.info(`[BimViewer] Creates mesh bvh cost ${(Date.now()-t)/1e3}s`)}e.traverse((e=>{e.isMesh&&(e.castShadow=!0,e.receiveShadow=!0)})),this.scene.add(e);let i=new Ug(e);i.name="BIM_VIEWER_BOX_HELPER",i.visible=!1,i.matrixAutoUpdate=!1;let r=t.modelId||t.src;if(this.loadedModels[r]){let e=1;for(;this.loadedModels[`${r}_${e}`];)e++;r=`${r}_${e}`,ne.warn(`[BimViewer] Model '${r}' is loaded more than once!`)}this.loadedModels[r]={id:e.id,bbox:i},this.computeBoundingBox(),this.tryAdjustDirectionalLight();let n=Object.values(this.loadedModels).map((e=>e.id));if(Object.values(this.loaded3dTiles).forEach((e=>n.push(e.id))),!n||n.length<=1){if(this.has2dModel)this.setToOrthographicCamera(!0),this.skyOfGradientRamp&&this.scene.remove(this.skyOfGradientRamp);else{let e=this.datGui&&this.datGui.controls;this.regenSkyOfGradientRamp(),e&&e.showGroundGrid&&this.regenGroundGrid()}this.tryAdjustCameraNearAndFar(),this.goToHomeView()}this.scene.add(i),t.edges&&ei.addOutlines(e),ne.info(`[BimViewer] Added '${t.src}' to scene in ${(Date.now()-this.timer)/1e3}s`),this.enableRender(),this.decreaseJobCount()}addOrRemoveObjectOpacity(e=!0,t=.3,i,r){if(this.savedMaterialsForOpacity||(this.savedMaterialsForOpacity=[]),!this.scene)return;let n=this.scene,s=[],a=Object.values(this.loadedModels).map((e=>e.id));Object.values(this.loaded3dTiles).forEach((e=>a.push(e.id))),a.forEach((a=>{if(e){this.savedMaterialsForOpacity&&this.savedMaterialsForOpacity.length>0&&ei.revertObjectOpacityById(n,a,this.savedMaterialsForOpacity);let e=ei.setObjectOpacityById(n,a,t,i,r);s.push(...e)}else this.savedMaterialsForOpacity&&ei.revertObjectOpacityById(n,a,this.savedMaterialsForOpacity)})),this.savedMaterialsForOpacity=e?s:[],this.enableRender()}hasTransparentObject(){return!!(this.savedMaterialsForOpacity&&this.savedMaterialsForOpacity.length>0)}showVertexNormals(e,t=.1){var i,r,n;e?(this.vertexNormalsHelpers||(this.vertexNormalsHelpers=new ur),null==(i=this.scene)||i.traverseVisible((e=>{var i;if(e instanceof rt&&!["SKYBOX","GROUND_GRID","GRASS_GROUND","BIM_VIEWER_BOX_HELPER"].includes(e.name)){if(!e.geometry.attributes.normal)return;let r=new x3(e,t,16711680);null==(i=this.vertexNormalsHelpers)||i.add(r)}})),null==(r=this.scene)||r.add(this.vertexNormalsHelpers)):this.vertexNormalsHelpers&&(null==(n=this.scene)||n.remove(this.vertexNormalsHelpers),this.vertexNormalsHelpers=void 0)}resize(e,t){let i=this.camera;i&&(this.width=e||window.innerWidth,this.height=t||window.innerHeight,i instanceof Vr?i.aspect=this.width/this.height:i instanceof qi&&(i.left=-this.width/2,i.right=this.width/2,i.top=this.height/2,i.bottom=-this.height/2),i.updateProjectionMatrix(),this.renderer&&this.renderer.setSize(this.width,this.height),this.composer&&this.composer.setSize(this.width,this.height),this.effectFxaaPass&&this.effectFxaaPass.uniforms.resolution.value.set(1/this.width,1/this.height),this.overlayRender&&this.overlayRender.setSize(this.width,this.height)),this.enableRender()}getRaycaster(){return this.raycaster}getRaycastableObjectsByMouse(e){let t=[];if(!(this.raycaster&&this.camera&&this.scene&&e&&this.viewerContainer))return t;let i=new le(e.x,e.y),r=Ai.screenPoint2NdcPoint(i,this.camera,this.viewerContainer);return this.camera.updateMatrixWorld(),this.raycaster.setFromCamera(r,this.camera),t=this.getRaycastableObjects(),t}getRaycastableObjects(){let e=[];return Object.values(this.loadedModels).forEach((t=>{let i=this.scene&&this.scene.getObjectById(t.id);i&&i.visible&&e.push(i)})),Object.values(this.loaded3dTiles).forEach((t=>{let i=this.scene&&this.scene.getObjectById(t.id);i&&i.visible&&e.push(i)})),e}getIntersections(e){let t=this.getRaycastableObjectsByMouse(e);return this.raycaster&&this.raycaster.intersectObjects(t,!0)||[]}getAllIntersections(e){if(!(this.raycaster&&this.camera&&this.scene&&this.viewerContainer))return[];let t=new le(null==e?void 0:e.x,null==e?void 0:e.y),i=Ai.screenPoint2NdcPoint(t,this.camera,this.viewerContainer);this.raycaster.setFromCamera(i,this.camera);let r=this.scene.children;return this.raycaster.intersectObjects(r,!0)||[]}handleMouseClick(e){var t,i,r;if(null!=(t=this.measurementManager)&&t.isMeasurementActive()||null!=(i=this.sectionManager)&&i.isSectionActive())return;let n=Date.now(),s=this.getIntersections(e);ne.debug(`[BimViewer] getIntersections costs ${(Date.now()-n)/1e3}s`);let a,o,l=s.find((e=>{let t=e.object;return t.visible&&(!1!==t.userData.selectable||t instanceof rt)})),h=l&&l.object||void 0;if(h)if(h instanceof rn)a=l.instanceId,this.selectedObject&&this.selectedObject.id===h.id&&this.selectedObject.userData.instanceId===a&&(h=void 0);else if(Yi.isMergedMesh(h)){let e=l&&l.faceIndex||-1;e>=0?(o=Yi.getBatchIdByFaceIndex(h,e),this.selectedObject&&this.selectedObject.id===h.id&&this.selectedObject.userData.batchId===o&&(h=void 0)):h=void 0}else this.selectedObject&&this.selectedObject.id===h.id&&(h=void 0);if(s.length>0&&s[0].point){let e=null==(r=this.overlayRender)?void 0:r.getDrawablesByPosition(s[0].point,this.raycaster);e&&e.length>0&&(h=e[0])}this.selectedObject&&this.clearSelection(),h?this.selectObject(h,a,o):this.clearSelection()}selectObject(e,t,i,r){if(e instanceof Aa)return this.selectedObject=e,void(this.selectedObject.selected=!0);if(this.selectedObject){let t=this.selectedObject.userData;if(null!=t.instanceId&&t.originalMatrix&&t.clonedMesh){this.scene&&this.scene.remove(t.clonedMesh);let i=this.selectedObject;if(i.setMatrixAt(t.instanceId,t.originalMatrix),i.instanceMatrix.needsUpdate=!0,i.updateMatrix(),delete t.instanceId,delete t.originalMatrix,e===t.clonedMesh)return t.clonedMesh.geometry.dispose(),delete t.clonedMesh,this.selectedObject=void 0,void(this.outlinePass&&(this.outlinePass.selectedObjects=[]));t.clonedMesh.geometry.dispose(),delete t.clonedMesh}else if(null!=t.batchId&&t.clonedMesh){if(this.scene&&this.scene.remove(t.clonedMesh),delete t.batchId,e===t.clonedMesh)return t.clonedMesh.geometry.dispose(),delete t.clonedMesh,this.selectedObject=void 0,void(this.outlinePass&&(this.outlinePass.selectedObjects=[]));t.clonedMesh.geometry.dispose(),delete t.clonedMesh}else if(t.originalMaterial){if(this.selectedObject.material){let e=this.selectedObject.material;Array.isArray(e)?e.forEach((e=>e.dispose())):e instanceof jr&&e.dispose()}this.selectedObject.material=t.originalMaterial,delete t.originalMaterial}this.selectedObject=void 0,this.outlinePass&&(this.outlinePass.selectedObjects=[])}if(this.scene&&e){if(e instanceof rn&&null!=t){let i=e,n=new Be,s=new Be;s.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),i.getMatrixAt(t,n),this.selectedObject=e,this.outlinePass&&(this.outlinePass.selectedObjects=[e]);let a=As.clonedHighlightMaterials(e,{depthTest:r});if(a){let r=new rt(i.geometry.clone(),a);r.applyMatrix4(e.matrixWorld.multiply(n)),r.matrixWorldNeedsUpdate=!0,r.name="Cloned mesh for highlighting";let o=n.clone();o.multiplyMatrices(n,s),i.setMatrixAt(t,o),i.instanceMatrix.needsUpdate=!0,i.updateMatrix(),this.selectedObject.userData.instanceId=t,this.selectedObject.userData.originalMatrix=n,this.selectedObject.userData.clonedMesh=r,this.scene.add(r)}}else if(Yi.isMergedMesh(e)&&null!=i){let t=Yi.getBatchByBatchId(e,i),n=`[BimViewer] Clicked on merged mesh(id: ${e.id}).`;n+=` Original mesh batchId: ${i}, name: ${null==t?void 0:t.name}`,ne.info(n);let s=As.clonedHighlightMaterials(e,{depthTest:r}),a=Yi.cloneGeometryForBatch(e,t);if(s&&a){let t=new rt(a,s);t.applyMatrix4(e.matrixWorld),t.matrixWorldNeedsUpdate=!0,t.name="Cloned mesh for highlighting",this.selectedObject=e,this.selectedObject.userData.batchId=i,this.selectedObject.userData.clonedMesh=t,this.scene.add(t)}}else{let t=As.clonedHighlightMaterials(e,{depthTest:r});t&&(this.selectedObject=e,this.selectedObject.userData.originalMaterial=this.selectedObject.material,this.selectedObject.material=t,this.outlinePass&&(this.outlinePass.selectedObjects=[e]))}this.enableRender()}else this.enableRender()}clearSelection(){this.selectedObject&&this.selectedObject instanceof Aa?this.selectedObject.selected=!1:this.selectObject(),this.selectedObject=void 0}getBBox(){return this.bbox}flyToObjects(e){if(!e||0===e.length||!this.camera)return;let t=new A,i=new A,r=new Mt;e.forEach((e=>{let t=Tn.getBoundingBox(e);r.union(t)}));let n=new A;this.camera.getWorldDirection(n),xs.getCameraPositionByBboxAndDirection(r,t,i,this.camera.projectionMatrix,n);let s=(new A).subVectors(t,i).length();if(this.controls.moveTo(t.x,t.y,t.z,!0),this.camera instanceof qi){let e=this.camera.right-this.camera.left,t=this.camera.top-this.camera.bottom,i=new A;r.getSize(i);let n=Math.min(e/i.x,t/i.y);this.controls.zoomTo(n,!0)}else this.camera instanceof Vr&&this.controls.dollyTo(s,!0);this.controls.setFocalOffset(0,0,0,!0)}flyToObject(e){this.flyToObjects([e])}flyToSelectedObject(){if(!this.selectedObject)return;let e=this.selectedObject;(e instanceof rn&&e.userData.clonedMesh||Yi.isMergedMesh(e)&&e.userData.clonedMesh)&&(e=e.userData.clonedMesh),this.flyToObject(e)}flyToRandomObject(){var e,t,i;let r=Object.values(this.loadedModels).map((e=>e.id));Object.values(this.loaded3dTiles).forEach((e=>r.push(e.id)));let n=r.length;if(n<=0)return;let s=Math.floor(Math.random()*n),a=r[s];if(!(null==(e=this.scene)?void 0:e.getObjectById(a)))return;let o=[];if(null==(t=this.scene)||t.traverseVisible((e=>{(e instanceof rt||e instanceof Ir)&&!["SKYBOX","GROUND_GRID","GRASS_GROUND","BIM_VIEWER_BOX_HELPER"].includes(e.name)&&o.push(e.id)})),o.length<1)return;let l=Math.floor(Math.random()*o.length),h=null==(i=this.scene)?void 0:i.getObjectById(o[l]);h&&(ne.info(`[BimViewer] Flying to random object: ${h.name}, type: ${h.type}`),this.selectObject(h,void 0,void 0,!0),this.flyToObject(h))}flyTo(e,t){let i=this.camera,r=this.controls;if(!i||!r)return;if(e.equals(t))return void ne.error("[BimViewer] camera position and lookAt cannot be the same!");if(!_t.isVectorValid(e)||!_t.isVectorValid(t))return void ne.error("[BimViewer] invalid position or lookAt!");let n=e.distanceTo(t);ni.far&&(e=e.clone().sub(t).normalize().multiplyScalar(.9*i.far),ne.warn("[BimViewer] camera could be too far to see the object!")),r.setLookAt(e.x,e.y,e.z,t.x,t.y,t.z,!0)}viewFitAll(){var e;if(!this.scene||!this.camera)return;let t=new A,i=new A,r=Tn.getVisibleObjectBoundingBox(this.scene),n=new A;null==(e=this.camera)||e.getWorldDirection(n),xs.getCameraPositionByBboxAndDirection(r,t,i,this.camera.projectionMatrix,n),this.flyTo(t,i)}goToHomeView(){let e=this.camera,t=this.cameraCfg,i=t&&_t.arrayToVector3(t.eye),r=t&&_t.arrayToVector3(t.look);if(i&&r)this.controls.setLookAt(i.x,i.y,i.z,r.x,r.y,r.z,!0),this.controls.setFocalOffset(0,0,0,!0);else if(this.scene){let t=new A,i=new A,r=new A(-1,-.5,-1);if(this.has2dModel){let e=this.bbox.max.x-this.bbox.min.x,t=this.bbox.max.y-this.bbox.min.y,i=this.bbox.max.z-this.bbox.min.z,n=Math.min(e,t,i);e-n<=0?r.set(1,0,0):t-n<=0?r.set(0,-1,0):i-n<=0&&r.set(0,0,-1)}if(xs.getCameraPositionByBboxAndDirection(this.bbox,t,i,null==e?void 0:e.projectionMatrix,r),(!this.cameraCfg||this.cameraCfg&&(!this.cameraCfg.eye||!this.cameraCfg.look))&&(this.cameraCfg={eye:t.toArray(),look:i.toArray()}),e instanceof qi){let t=this.bbox,i=t.max.x-t.min.x,r=t.max.z-t.min.z,n=e.right-e.left,s=e.top-e.bottom;e.zoom=Math.max(n,s)/Math.max(i,r),e.zoom/=2,e.updateProjectionMatrix()}t.equals(i)||this.flyTo(t,i)}}zoomToBBox(e){var t,i;let r=new A,n=new A,s=new A;null==(t=this.camera)||t.getWorldDirection(s),xs.getCameraPositionByBboxAndDirection(e,r,n,null==(i=this.camera)?void 0:i.projectionMatrix,s),r.equals(n)||this.flyTo(r,n)}tryAdjustCameraNearAndFar(){let e=this.camera;if(!this.scene||!e)return;let t=this.bbox,i=e.near,r=e.far,n=t.max.x-t.min.x,s=t.max.y-t.min.y,a=t.max.z-t.min.z,o=Math.max(n,s,a),l=o/5,h=5*o;if(i>l||r_t.numberToString(e);ne.info(`[BimViewer] BBox's longest side is: ${t(o)}`),i>l&&(ne.warn(`[BimViewer] camera.near(${t(i)}) shouldn't bigger than ${t(l)}, will change it!`),e.near=l),re.id));if(Object.values(this.loaded3dTiles).forEach((t=>e.push(t.id))),e){let t=this.cameraCfg,i=t&&_t.arrayToVector3(t.eye),r=t&&_t.arrayToVector3(t.look),n=new Mt;if(i&&r){let e=i,t=r;n.expandByPoint(new A(e.x,e.y,e.z)),n.expandByPoint(new A(t.x,t.y,t.z))}else n=Tn.getObjectsBoundingBox(this.scene,e);this.skyOfGradientRamp=qo.createSkyOfGradientRampByBoundingBox(n),this.scene.add(this.skyOfGradientRamp)}}regenGroundGrid(){if(!this.scene)return;this.groundGrid&&(this.groundGrid.geometry.dispose(),this.groundGrid.material.dispose(),this.scene.remove(this.groundGrid));let e=Object.values(this.loadedModels).map((e=>e.id));if(Object.values(this.loaded3dTiles).forEach((t=>e.push(t.id))),e){let e=this.cameraCfg,t=e&&_t.arrayToVector3(e.look);t&&(t.y=0),this.groundGrid=Js.createGroundGrid(void 0,void 0,t),this.scene.add(this.groundGrid)}}setOrbitPoint(e){let t=this.controls;if(this.camera&&this.renderer&&this.controls&&this.scene&&this.raycaster&&this.viewerContainer)if(this.selectedObject&&this.selectedObject instanceof sr){let e=(new Mt).setFromObject(this.selectedObject),i=new A;e.getCenter(i),null==t||t.setOrbitPoint(i.x,i.y,i.z);let r=Ai.worldPosition2ScreenPoint(i,this.camera,this.viewerContainer);this.setAnchorPosition(r)}else{let i=this.getIntersections(e),r=new le(e.x,e.y);if(i&&0!==i.length){let e=i[0].point;null==t||t.setOrbitPoint(e.x,e.y,e.z),this.setAnchorPosition(r),this.lastOrbPoint=i[0].point}else{let e=this.bbox.getCenter(new A);t.setOrbitPoint(e.x,e.y,e.z);let i=Ai.worldPosition2ScreenPoint(e,this.camera,this.renderer.domElement);this.setAnchorPosition(i),this.lastOrbPoint=e}}}setAnchorPosition(e){this.anchor&&(this.anchor.className="anchor active",this.anchor.style.left=`${e.x}px`,this.anchor.style.top=`${e.y}px`)}createAnchor(){var e;let t=document.createElement("div");return t.className="anchor",null==(e=this.viewerContainer)||e.appendChild(t),t}disposeAnchor(){var e;this.anchor&&(null==(e=this.viewerContainer)||e.removeChild(this.anchor),this.anchor=void 0)}disposeRotateToCursor(){this.disposeAnchor()}enableComposer(e){!this.scene||!this.camera||!this.renderer||(this.composerEnabled=e,e&&!this.composer&&(this.composer=new S3(this.renderer)),this.enableRender())}enableRenderPass(e){if(this.scene&&this.camera&&this.renderer&&this.composer){if(e&&!this.renderPass){let e=new w3(this.scene,this.camera);e.setSize(this.width,this.height),this.composer.addPass(e),this.renderPass=e}this.renderPass&&(this.renderPass.enabled=e),this.enableRender()}}enableFxaaPass(e){if(this.scene&&this.camera&&this.renderer&&this.composer){if(e&&!this.effectFxaaPass){let e=new wE(JDe);e.uniforms.resolution.value.set(1/this.width,1/this.height),e.setSize(this.width,this.height),e.renderToScreen=!0,this.composer.addPass(e),this.effectFxaaPass=e}this.effectFxaaPass&&(this.effectFxaaPass.enabled=e),this.enableRender()}}enableSaoPass(e){if(this.scene&&this.camera&&this.renderer&&this.composer){if(e&&!this.saoPass){let e=new J_(this.scene,this.camera,!1,!0,new le(1/this.width,1/this.height));e.setSize(this.width,this.height),e.params.output=0,e.params.saoBias=.5,e.params.saoIntensity=5e-5,e.params.saoScale=5,e.params.saoKernelRadius=40,e.params.saoMinResolution=0,this.composer.addPass(e),this.saoPass=e}this.saoPass&&(this.saoPass.enabled=e),this.enableRender()}}enableSsaoPass(e){if(this.scene&&this.camera&&this.renderer&&this.composer){if(e&&!this.ssaoPass){let e=new rc(this.scene,this.camera,this.width,this.height);e.kernelRadius=16,e.minDistance=.005,e.maxDistance=.1,this.composer.addPass(e),this.ssaoPass=e}this.ssaoPass&&(this.ssaoPass.enabled=e),this.enableRender()}}enableOutlinePass(e){if(this.scene&&this.camera&&this.renderer&&this.composer){if(e&&!this.outlinePass){let e=new au(new le(this.width,this.height),this.scene,this.camera);e.edgeStrength=3,e.edgeGlow=0,e.edgeThickness=2,e.pulsePeriod=0,e.visibleEdgeColor.set(16711680),e.hiddenEdgeColor.set(16752768),this.composer.addPass(e),this.outlinePass=e}this.outlinePass&&(this.outlinePass.enabled=e),this.enableRender()}}enableSsaaPass(e){if(this.scene&&this.camera&&this.renderer&&this.composer){if(e&&!this.ssaaRenderPass){let e=new M3(this.scene,this.camera,16777215,0);this.composer.addPass(e),this.ssaaRenderPass=e}this.ssaaRenderPass&&(this.ssaaRenderPass.enabled=e),this.enableRender()}}enableBloomPass(e){if(this.scene&&this.camera&&this.renderer&&this.composer){if(e&&!this.bloomPass){let e=new xh(1,25,4);e.renderToScreen=!0,this.composer.addPass(e),this.bloomPass=e}this.bloomPass&&(this.bloomPass.enabled=e),this.enableRender()}}enableUnrealBloomPass(e){if(this.scene&&this.camera&&this.renderer&&this.composer){if(e&&!this.unrealBloomPass){let e=new dd(new le(this.width,this.height),1,0,0);e.threshold=0,e.strength=.5,e.radius=0,this.composer.addPass(e),this.unrealBloomPass=e}this.unrealBloomPass&&(this.unrealBloomPass.enabled=e),this.enableRender()}}activateSection(e="ObjectsBoxSection"){this.inputManager&&(this.sectionType=e,this.clearSelection(),this.sectionManager||(this.sectionManager=new t3(this,this.inputManager)),this.sectionManager.activateSection(e),this.enableRender())}deactivateSection(){var e;null==(e=this.sectionManager)||e.deactivateSection(),this.enableRender()}getActiveSection(){var e;return null==(e=this.sectionManager)?void 0:e.getActiveSection()}getMeasurementManager(){return this.measurementManager}getMeasurements(){return this.inputManager?(this.measurementManager||(this.measurementManager=new ru(this,this.inputManager)),this.measurementManager.getMeasurementsData()):[]}activateMeasurement(e){this.inputManager&&(this.measurementManager||(this.measurementManager=new ru(this,this.inputManager)),this.measurementManager.activateMeasurement(e),this.clearSelection())}deactivateMeasurement(){var e;null==(e=this.measurementManager)||e.deactivateMeasurement()}setMeasurementVisibility(e,t){return!!(this.inputManager&&this.measurementManager&&e)&&this.measurementManager.setMeasurementVisibility(e,t)}clearMeasurements(){var e;null==(e=this.measurementManager)||e.clearMeasurements()}zoomToRect(){this.zoomToRectHelper||(this.zoomToRectHelper=new dE(this)),this.zoomToRectHelper.activate()}enableWebCam(){this.scene&&(this.webcam||(this.webcam=new U3),this.webcamPlane||(this.webcamPlane=this.webcam.createWebCamPlane(),this.webcamPlane.position.set(10,2,0)),this.scene.add(this.webcamPlane))}disableWebCam(){this.scene&&this.webcamPlane&&(this.webcamPlane.geometry.dispose(),this.webcamPlane.material.dispose(),this.scene.remove(this.webcamPlane))}setEnvironment(e){Nc.createEnvTexture(this.pmremGenerator,e).then((e=>{this.scene&&(this.scene.environment=e)}))}setEnvironmentFromDataArray(e){Nc.createEnvTextureFromDataArray(this.pmremGenerator,e).then((e=>{this.scene&&(this.scene.environment=e)}))}takeObjectsScreenshot(e){return ht(this,null,(function*(){return new Promise(((t,i)=>{var r;this.renderer||i("renderer is undefined"),null==(r=this.scene)||r.traverse((t=>{t instanceof rt&&((0,pm.includes)(e,(0,pm.get)(t.userData,"UniqueId"))?t.visible=!0:t.visible=!1)})),this.enableRender(),setTimeout((()=>{var e;t(null==(e=this.renderer)?void 0:e.domElement.toDataURL("image/png"))}),1e3)}))}))}updateRaycasterThreshold(){let e=this.camera;if(!e||!this.raycaster)return;let t=12/e.zoom,i=this.raycaster.params;i.Line?i.Line.threshold=t:i.Line={threshold:t},i.Points?i.Points.threshold=t:i.Points={threshold:t}}instantiate(e){new iA(e).instantiate()}merge(e){this.increaseJobCount();try{let t=[];e.traverse((e=>{e.geometry&&e.material&&t.push(e)})),Yi.deepMerge(t,e)}finally{this.decreaseJobCount()}}setSpinnerVisibility(e){this.spinner&&(e?this.spinner.classList.remove("hidden"):this.spinner.classList.add("hidden"))}increaseJobCount(){this.setSpinnerVisibility(++this.jobCount>0)}decreaseJobCount(){this.setSpinnerVisibility(--this.jobCount>0)}updateProjectSettings(e){this.settings=e;let t=(e,t)=>{e&&t&&(e.near=t.near,e.far=t.far,e.updateProjectionMatrix())};t(this.perspectiveCamera,this.settings.camera),t(this.orthoCamera,this.settings.camera),this.enableRender(10)}dynamicallyUpdateControllerTarget(e){let t=this.getIntersections(e);if(t.length<0)return;let i=this.camera,r=this.controls;if(!i||!r)return;let n=t.find((e=>{if(e.distancei.far)return!1;let t=e.object;return t.visible&&t instanceof rt}));if(null!=n&&n.point&&r){let e=i.position,t=r.getTarget(new A),s=n.distance,a=e.distanceTo(t),o=e.clone().lerp(t,s/a);r.setTarget(o.x,o.y,o.z)}}computeBoundingBox(){let e=new Mt;return Object.values(this.loadedModels).forEach((t=>{if(t.bbox){t.bbox.geometry.computeBoundingBox();let i=t.bbox.geometry.boundingBox;i&&!i.isEmpty()&&e.union(i)}})),Object.values(this.loaded3dTiles).forEach((t=>{t.bbox.isEmpty()||e.union(t.bbox)})),this.bbox=e,this.controls&&(this.controls.minDistance=.1,this.controls.maxDistance=3*this.bbox.getSize(new A).length()),e}},ACe=kn(ql(),1),B3=class{constructor(e){this.viewer=e,this.itemList={},this.handleMouseWheel=e=>{e.preventDefault(),this.element&&(this.element.scrollLeft+=e.deltaY)},e.addEventListener("ModelLoaded",(()=>{this.init()}))}init(){var e;let t=document.createElement("div");t.classList.add("model-layout-switch-bar");let i=document.createElement("div");i.classList.add("model-layout-switch-bar-content"),i.addEventListener("wheel",this.handleMouseWheel),this.viewer.getLayoutNames().forEach(((e,t)=>{let r=this.createItem(e,t);this.itemList[e]=r,r.resetActivate=()=>{for(let e in this.itemList)this.itemList[e].resetActive()},null==i||i.appendChild(r.element)})),this.element=t,this.content=i,this.element.appendChild(this.content),null==(e=this.viewer.widgetContainer)||e.appendChild(this.element)}createItem(e,t){let i=new KG(this.viewer,e);return 0===t&&i.setActive(!0),i}destroy(){var e,t;for(let t in this.itemList){let i=this.itemList[t];i.destroy(),null==(e=this.content)||e.removeChild(i.element)}this.itemList={},this.element&&this.content&&(this.element.removeChild(this.content),this.element.removeEventListener("wheel",this.handleMouseWheel),null==(t=this.viewer.widgetContainer)||t.removeChild(this.element),this.element=void 0)}show(){this.element&&(this.element.style.display="block")}hide(){this.element&&(this.element.style.display="none")}},KG=class{constructor(e,t){this.viewer=e,this.eventBus=fE(),this.active=!1,this.element=this.createItem(t),this.eventBus.on("activechange",(e=>{this.resetActivate&&this.resetActivate(),e?(this.element.classList.add("activate"),this.viewer.activateLayout(t)):this.element.classList.remove("activate")}))}createItem(e){let t=document.createElement("div"),i=document.createElement("span");return t.classList.add("model-layout-switch-item"),t.onclick=()=>{this.active=!this.active,this.eventBus.emit("activechange",this.active)},i.innerText=e,t.appendChild(i),t}setActive(e){this.active!==e&&(this.active=e,this.eventBus.emit("activechange",e))}resetActive(){this.active=!1,this.element.classList.remove("activate")}destroy(){this.eventBus.off("activechange")}},k3=class{constructor(e){this.progresseItems=[],this.element=document.createElement("div"),this.element.classList.add("progress-bar"),e.appendChild(this.element)}setVisibility(e){this.element&&(e?this.element.classList.remove("hidden"):this.element.classList.add("hidden"))}addProgressItem(e,t){let i=this.progresseItems.find((t=>t.id===e));if(!i){let r=document.createElement("div");r.classList.add("progress-bar-item"),r.innerHTML=t||"",this.element.append(r),i={id:e,div:r},this.progresseItems.push(i)}this.setVisibility(!0)}updateProgress(e,t,i){let r=this.progresseItems.find((t=>t.id===e));if(!r)return;let n=t?`${t}`:"";t&&i&&(n+=": "),i&&(n+=`${i.toFixed(2)}%`),r.div.innerHTML=n}removeProgressItem(e){let t=this.progresseItems.find((t=>t.id===e));t&&t.div.remove(),0===this.progresseItems.length&&this.setVisibility(!1)}delayRemoveProgressItem(e,t=3e3){setTimeout((()=>{this.removeProgressItem(e)}),t)}},cS=new Be,MCe=new Be,DCe=new $s,ZG=new A,CCe=class extends rm{constructor(e){super(e),this.name="DxfViewer",this.CAMERA_Z_POSITION=100,this.CAMERA_MIN_ZOOM=1e-6,this.timer=Date.now(),this.loadedModels={},this.masterModelId="",this.raycaster=new Oc,this.mouseMoved=!1,this.mouseDoubleClicked=!1,this.selected=!0,this.raf=new dT,this.clock=new Al,this.renderEnabled=!1,this.jobCount=0,this.enableHideVisuallySmallObjects=!0,this.sortedHidableObjects={},this.lastCameraZoom=1/0,this.activeLayoutName="",this.layoutInfos={},this.units=void 0,this.fpsUtils=new HC,this.onResize=()=>{var e;let t=null==(e=this.renderer)?void 0:e.domElement;t&&t.parentElement&&this.resize(t.parentElement.clientWidth,t.parentElement.clientHeight)},this.enableRender=(e=1e3)=>{this.renderEnabled=!0,this.raf&&(this.timeoutSymbol&&this.raf.clearTimeout(this.timeoutSymbol),this.timeoutSymbol=this.raf.setTimeout((()=>{this.renderEnabled=!1}),e))},this.loadingDxfCount=0,this.compareMode=!1,this.viewerCfg=e,this.increaseJobCount(),this.init(),this.animate(),this.enableRender(),this.decreaseJobCount(),ne.info(`[DxfViewer] Initialized in ${(Date.now()-this.timer)/1e3}s`)}init(){let e=this.viewerCfg;this.initThree(),xi.isBrowser&&!e.context&&this.initDom(),this.initInputManager(),this.initEvents(),this.initControls(),this.initOthers(),this.enableSelection=e.enableSelection}initInputManager(){this.renderer&&(this.inputManager=new M0(this.renderer.domElement))}initThree(){this.initScene(),this.initRenderer(),this.initCamera()}initDom(){let e=this.viewerCfg;this.initSpinner(),this.initCSS2DRenderer(),!0===e.enableAxisGizmo&&(this.axes=this.initAxes()),!0===e.enableStats&&(this.stats=this.initStats()),e.enableToolbar&&(this.toolbar=this.initToolbar()),e.enableBottomBar&&(this.bottomBar=this.initBottomBar()),e.enableProgressBar&&(this.loadingProgressBar=this.initLoadingProgressBar()),e.enableLayoutBar&&(this.dxfLayoutBar=new B3(this))}initScene(){let e=new Nn;e.background=new je(2172976),e.matrixAutoUpdate=!1,e.matrixWorldAutoUpdate=!1,this.scene=e}initRenderer(){var e;let{context:t}=this.viewerCfg,i={context:t,antialias:!0,preserveDrawingBuffer:!0,alpha:!1,stencil:!1};!xi.isBrowser&&t&&Object.assign(i,{context:t,canvas:xi.creatReactNativeCanvas(t)}),t&&(this.width=t.drawingBufferWidth,this.height=t.drawingBufferHeight),this.renderer=new Ol(i),this.renderer.setClearColor(11119017,1),this.renderer.localClippingEnabled=!0,xi.isBrowser&&(!t&&this.renderer.setPixelRatio(window.devicePixelRatio),this.renderer.domElement.classList.add("webgl-renderer"),null==(e=this.viewerContainer)||e.appendChild(this.renderer.domElement)),this.renderer.setSize(this.width,this.height),_t.printGpuInfo(this.renderer.getContext()),Er.maxFragmentUniforms=this.renderer.capabilities.maxFragmentUniforms-20,this.enableOverlayRenderer&&(this.overlayRender=new wr(this))}initCSS2DRenderer(){var e;let t=new _f;t.setSize(this.width,this.height),t.domElement.style.height="0",t.domElement.style.width="0",t.domElement.style.position="absolute",t.domElement.style.top="0",t.domElement.style.left="0",t.domElement.style.overflow="visible",t.domElement.classList.add("css2d-renderer"),null==(e=this.viewerContainer)||e.appendChild(t.domElement),this.css2dRenderer=t}initCamera(){if(!this.scene)return;let e=new qi(-this.width/2,this.width/2,this.height/2,-this.height/2,.1,1e5);e.layers.enable(10),e.position.set(0,0,this.CAMERA_Z_POSITION),e.zoom=10,e.updateProjectionMatrix(),this.scene.add(e),this.camera=e}initControls(){let e=this.camera;if(!this.inputManager||!e)return;let t=new $l(e,this.inputManager);t.enableRotate=!1,t.enabled=!0,t.keyTruckSpeed=10,t.dollyToCursor=!0,t.dollySpeed=.5,t.truckSpeed=1,t.mouseButtons={left:et.TRUCK,middle:et.TRUCK,wheel:et.ZOOM,right:et.TRUCK},t.touches={one:et.TOUCH_TRUCK,two:et.TOUCH_ZOOM_TRUCK,three:et.NONE},t.listenToKeyEvents(),t.update(0),this.controls=t,t.addEventListener("control",this.onControlsChange(this)),t.addEventListener("controlend",this.onControlsEnd(this))}onControlsChange(e){return()=>{e.enableRender()}}onControlsEnd(e){return()=>{e.enableRender()}}initSpinner(){var e;if(!this.viewerCfg.enableSpinner)return;let t=document.createElement("div");t.classList.add("bim-viewer-spinner");let i=document.createElement("div");i.classList.add(uo,"icon-loading"),t.append(i),null==(e=this.widgetContainer)||e.appendChild(t),this.spinner=t,this.setSpinnerVisibility(this.jobCount>0)}initEvents(){if(!this.inputManager||!this.renderer)return;let e=!1,t=!1;this.inputManager.addEventListener("pointerdown",(i=>{var r;t=!1,e=!0,1===i.button&&(null==(r=this.inputManager)||r.setCursor("move"))})),this.inputManager.addEventListener("pointermove",(()=>{var i;e&&(t=!0,null==(i=this.inputManager)||i.setCursor("move"))})),this.inputManager.addEventListener("pointerup",(i=>{var r;if(e=!1,null==(r=this.inputManager)||r.setCursor("default"),t)return void(t=!1);this.handleMouseClick(i);let n={evt:i};this.selectedObject&&this.selectedObject instanceof Rn&&(n.markupData=this.selectedObject.getData()),this.selectedObject&&this.selectedObject instanceof Mi&&(n.measureData=this.selectedObject.getData()),this.dispatchEvent("MouseClicked",n)})),this.inputManager.addEventListener("keydown",(e=>{e.altKey&&"KeyR"===e.code&&this.flyToRandomObject()})),this.inputManager.addEventListener("resize",this.onResize)}initOthers(){!this.scene||!this.renderer||!this.camera||(this.renderer.domElement.style.outlineWidth="0")}initAxes(){var e;let t=document.createElement("div");t.classList.add("axesRenderer");let i=new Sf(t,this.camera,!0);return null==(e=this.widgetContainer)||e.append(t),i}initStats(){var e;let t=I3();t.setMode(0);let i=document.createElement("div");return i.classList.add("statsOutput"),i.appendChild(t.domElement),t.domElement.style.position="absolute",null==(e=this.widgetContainer)||e.append(i),t}showStats(){this.stats||(this.stats=this.initStats()),this.stats.showPanel(0)}hideStats(){this.stats&&this.stats.showPanel(-1)}initToolbar(){let e=this.viewerCfg;return new Eh(this,(0,ACe.merge)({},MDe,e.toolbarMenuConfig))}initBottomBar(){return new lm(this)}initLoadingProgressBar(){return new k3(this.widgetContainer)}showLayoutBar(){var e;null==(e=this.dxfLayoutBar)||e.show()}hideLayoutBar(){var e;null==(e=this.dxfLayoutBar)||e.hide()}animate(){var e,t,i,r,n,s;requestAnimationFrame(this.animate.bind(this));let a=this.clock.getDelta(),o=null==(e=this.controls)?void 0:e.update(a);if(this.scene&&this.camera&&(this.renderEnabled||o)){if(this.updateRaycasterThreshold(),this.updateCameraZoomUniform(this.camera.zoom),Er.resolutionUniform.value.set(this.width,this.height),null==(t=this.renderer)||t.render(this.scene,this.camera),!xi.isBrowser){let e=null==(i=this.renderer)?void 0:i.getContext();e&&e.endFrameEXP&&(e.flush(),e.endFrameEXP())}this.hotpointRoot&&this.hotpointRoot.children.length>0&&(null==(r=this.css2dRenderer)||r.render(this.scene,this.camera)),this.dispatchEvent("RenderAfter")}null==(n=this.stats)||n.update(),this.fpsUtils.update(),null==(s=this.bottomBar)||s.update()}getFps(){return this.fpsUtils.fps}is3d(){return!1}destroy(){var e,t,i,r,n,s;Er.abortJobs=!0,this.dxfLayoutBar&&(this.dxfLayoutBar.destroy(),this.dxfLayoutBar=void 0),null==(e=this.measurementManager)||e.destroy(),this.measurementManager=void 0,null==(t=this.markupManager)||t.destroy(),this.markupManager=void 0,null==(i=this.zoomToRectHelper)||i.destroy(),this.zoomToRectHelper=void 0,null==(r=this.boxSelectHelper)||r.destroy(),this.boxSelectHelper=void 0,this.sortedHidableObjects={},this.layoutInfos={},this.raycastableObjects=void 0,this.changes={},Object.keys(this.loadedModels).forEach((e=>{delete this.loadedModels[e]})),this.loadedModels={},this.css2dRenderer&&(null==(n=this.viewerContainer)||n.removeChild(this.css2dRenderer.domElement),this.css2dRenderer=void 0),this.stats=void 0,this.raycaster=void 0,this.selectedObject=void 0,this.raf&&(this.timeoutSymbol&&this.raf.clearTimeout(this.timeoutSymbol),this.raf=void 0),this.contextMenu&&(this.contextMenu.destroy(),this.contextMenu=void 0),this.axes&&(this.axes.dispose(),this.axes=void 0),this.toolbar&&(this.toolbar.destroy(),this.toolbar=void 0),this.spinner&&(this.spinner.remove(),this.spinner=void 0),this.bottomBar=void 0,this.font=void 0,null==(s=this.inputManager)||s.removeEventListener(),super.destroy()}loadModelAsync(e,t){return ht(this,null,(function*(){var i,r;this.loadingDxfCount++,this.timer=Date.now(),this.increaseJobCount();let n=e.modelId||e.src;this.masterModelId||(this.masterModelId=n);let s=e.ignorePaperSpace||this.masterModelId!==n;!1===e.ignorePaperSpace&&s&&ne.warn(`[DxfViewer] Paper space will be ignored for '${n}' although 'ignorePaperSpace' is false!`),_t.printMemory("Before loadModelAsync");let a=new $c;a.setFont(this.font);let o=n,l=this.translate("ProgressBar.Loading"),h=e=>{var i;null==(i=this.loadingProgressBar)||i.updateProgress(o,l,e),t&&t(new ProgressEvent("LoadProgress",{loaded:e,total:100}))},u=(e,i,r)=>{var n;let s=100*e.loaded/e.total;s=s*(r-i)/100+i,null==(n=this.loadingProgressBar)||n.updateProgress(o,l,s),t&&t(new ProgressEvent("LoadProgress",{loaded:s,total:100}))};null==(i=this.loadingProgressBar)||i.addProgressItem(o),h(0);let c=this.viewerCfg,p=yield a.loadDxfDataAsync(e.src,e.modelId,(e=>u(e,0,90)),void 0,s,c.enableLocalCache).finally((()=>{this.loadingDxfCount--,0===this.loadingDxfCount&&this.font&&this.font.releaseFontData&&this.font.releaseFontData()}));if(ne.info(`[DxfViewer] Loaded '${e.src}' in ${(Date.now()-this.timer)/1e3}s, adding to scene...`),Er.abortJobs&&Promise.reject("[DxfViewer] abort load dxf"),0===p.threejsObject.children.length){let t=`[DxfViewer] Nothing was loaded from ${e.src}`;return ne.warn(t),this.decreaseJobCount(),Promise.reject(t)}let d=p.threejsObject;d.name=n;let f=this.getDxfUnits(p);if(this.masterModelId===e.modelId&&(this.units=f),ne.info(`[DxfViewer] Units of '${e.src}' is '${f}'`),f){let t=1;this.units&&f!==this.units&&(t=G8(f,this.units)),e.scale?e.scale=[e.scale[0]*t,e.scale[0]*t,e.scale[0]*t]:e.scale=[t,t,t]}if(e.matrix&&16===e.matrix.length){let t=new Be;t.elements=e.matrix,d.applyMatrix4(t)}else{let t=e.position||[0,0,0],i=e.rotation||[0,0,0],r=e.scale||[1,1,1];d.position.set(t[0],t[1],t[2]),d.rotation.set(i[0]*Math.PI/180,i[1]*Math.PI/180,i[2]*Math.PI/180),d.scale.set(r[0],r[1],r[2])}return this.addLoadedModelToScene(d,e,p),_t.printMemory("After addLoadedModelToScene"),ne.info(`[DxfViewer] Added '${e.src}' to scene in ${(Date.now()-this.timer)/1e3}s`),this.decreaseJobCount(),h(100),null==(r=this.loadingProgressBar)||r.delayRemoveProgressItem(o),this.dispatchEvent("ModelLoaded"),Promise.resolve()}))}unloadDxf(){throw new Error("Not implemented yet!")}isCompareMode(){return this.compareMode}compare(e,t,i){return ht(this,null,(function*(){var r,n,s,a,o;let{src:l,modelId:h}=e,{src:u}=t;if(this.compareMode)return Promise.reject("[DxfViewer] It is already under comparing mode!");if(this.masterModelId||Object.keys(this.loadedModels).length>0)return Promise.reject("[DxfViewer] Shouldn't load anything else before compare!");if(this.compareMode=!0,this.timer=Date.now(),this.increaseJobCount(),!this.font)return Promise.reject("[DxfViewer] Should set font first!");let c=new Er(!0);c.setFont(this.font),this.font instanceof Yc&&this.font.getFontData&&(yield this.font.getFontData());let p=l+u,d=this.translate("ProgressBar.Comparing"),f=e=>{var t;null==(t=this.loadingProgressBar)||t.updateProgress(p,d,e),i&&i(new ProgressEvent("CompareProgress",{loaded:e,total:100}))},m=(e,t,r)=>{var n;let s=100*e.loaded/e.total;s=s*(r-t)/100+t,null==(n=this.loadingProgressBar)||n.updateProgress(p,d,s),i&&i(new ProgressEvent("CompareProgress",{loaded:s,total:100}))};_t.printMemory("Before comparing"),this.masterModelId=h||l,this.loadingDxfCount+=2,null==(r=this.loadingProgressBar)||r.addProgressItem(p),f(0);let g=Date.now(),y=yield c.parse(l,(e=>m(e,0,15))),v=yield c.parse(u,(e=>m(e,15,30))),[T,x]=yield Promise.allSettled([y,v]);if("rejected"===T.status)return Promise.reject(`[DxfViewer] Failed to parse ${l}`);if("rejected"===x.status)return Promise.reject(`[DxfViewer] Failed to parse ${u}`);if(ne.info(`[DxfViewer] loadFiles in ${(Date.now()-g)/1e3}s`),Er.abortJobs)return Promise.reject("[DxfViewer] compare loadFile aborted");let b=T.value,_=x.value;g=Date.now();let E=yield new qn(b,_).compare((e=>m(e,30,60)));if(ne.info(`[DxfViewer] Compared in ${(Date.now()-g)/1e3}s`),ne.debug("Compared results:",E),Er.abortJobs)return Promise.reject("[DxfViewer] compare change aborted");_t.printMemory("After getting the comparison results"),g=Date.now(),yield c.loadEntitiesForCompare(b,_,E,(e=>m(e,60,95))),_t.printMemory("After Creating threejs objects based on comparison result"),null==(n=this.font)||n.releaseFontData(),this.changes=E,ne.info(`[DxfViewer] Creates threejs objects based on comparison result in ${(Date.now()-g)/1e3}s`);let w=b,S=_;if(this.loadingDxfCount-=2,this.decreaseJobCount(),Object.keys(E).length||ne.info("[DxfViewer] No change found"),0===(null==(s=w.threejsObject)?void 0:s.children.length)&&0===(null==(a=S.threejsObject)?void 0:a.children.length)){let e=`[DxfViewer] Nothing was loaded from ${l} and ${u}`;return ne.warn(e),Promise.reject(e)}let I=w.threejsObject,M=S.threejsObject;return I.name=l,M.name=u,g=Date.now(),this.addLoadedModelToScene(I,Br({},e),w),_t.printMemory("After adding first loaded Model to scene"),f(95),this.addLoadedModelToScene(M,Br({},t),S),_t.printMemory("After adding second loaded Model to scene"),ne.info(`[DxfViewer] Added compared objects to scene in ${(Date.now()-g)/1e3}s`),ne.info(`[DxfViewer] The comparison between ${l}' and '${u}' is completed in ${(Date.now()-this.timer)/1e3}s !`),f(100),null==(o=this.loadingProgressBar)||o.delayRemoveProgressItem(p),Promise.resolve()}))}getEntitiesCount(){let e=0;return Object.values(this.loadedModels).forEach((t=>{var i;e+=(null==(i=t.dxfData)?void 0:i.loadedEntityCount)||0})),e}getLoadedDxfModelIds(){return Object.keys(this.loadedModels)}getLayoutNames(){let e=[];return this.getLayouts().forEach((t=>{e.push(t.layoutName)})),e}getLayouts(){let e=[],t=this.loadedModels[this.masterModelId];if(t){let i=t.dxfData,r=null==i?void 0:i.objects.LAYOUT;null==r||r.forEach((t=>{e.push(t)}))}return e}handleOverlayDxf(e){var t;let i=this.loadedModels[e];if(!i)return void ne.warn(`[DxfViewer] Can't find model for modelId '${e}'!`);this.increaseJobCount(),this.switchTransformMs(Er.MODEL_LAYOUT_NAME,e);let r=null==(t=i.dxfData)?void 0:t.threejsObject,n=null==r?void 0:r.children.find((e=>e.name===Er.MODEL_LAYOUT_NAME));n&&(n.traverse((e=>{this.addSpatialFilterSection(e,i.dxfData)})),this.calcBoundingBoxOfLayoutChild(n)),this.showLayoutObjects(this.activeLayoutName),this.decreaseJobCount()}activateLayout(e){var t,i,r;if(this.increaseJobCount(),0==e.length)return ne.warn("[DxfViewer] layout name is empty !"),void this.decreaseJobCount();if(e===this.activeLayoutName)return void this.decreaseJobCount();let n=Date.now(),s=this.camera,a=this.getLayoutByName(e);if(!a)return ne.warn(`[DxfViewer] Can't find layout of ${e} !`),void this.decreaseJobCount();let o=this.loadedModels[this.masterModelId];if(!o)return ne.warn(`[DxfViewer] Can't find master model for modelId '${this.masterModelId}'!`),void this.decreaseJobCount();if(this.raycastableObjects=void 0,this.activeLayoutName){let e=this.getActiveLayoutInfo();e.lastCameraPosition||(e.lastCameraPosition=new A),null==(t=this.camera)||t.getWorldPosition(e.lastCameraPosition),e.lastCameraZoom=s.zoom}if(!(e=>{let t=this.layoutInfos[e];return!(null==t||!t.lastCameraZoom)})(e)){this.switchTransformMs(e,this.masterModelId);let t=this.getLayoutViewports(a),n=[];t.length>0&&(n=t[0].frozenLayerHandles);let s=e!==Er.MODEL_LAYOUT_NAME,l=null==(i=o.dxfData)?void 0:i.threejsObject,h=null==l?void 0:l.children.find((t=>t.name===e));if(h){let t=[],i=null==(r=o.dxfData)?void 0:r.layersAndThreejsObjects;h.traverse((r=>{this.addSpatialFilterSection(r,o.dxfData);let a=r;if(s&&a.material&&a.geometry){let r=a.userData.layerName;if(!this.isLayerFrozenForViewport(o.dxfData,r,n))return;t.push(a);let s=-1;i&&i[r]&&(s=i[r].indexOf(a),s>=0&&i[r].splice(s,1)),s<0&&ne.warn(`[DxfViewer] Failed to find object for modelId '${this.masterModelId}', layer '${r}', layout '${e}'`)}})),t.forEach((e=>{e.removeFromParent()}))}let u=this.getFilteredViewports(a);ne.debug("[DxfViewer] Active layout:",e,", viewports:",u);let c=Date.now();u.forEach((t=>{this.generateObjectsByViewport(e,t,o.dxfData)})),ne.info(`[DxfViewer] generateObjectsByViewport in ${(Date.now()-c)/1e3}s`),e!==Er.MODEL_LAYOUT_NAME&&this.switchTransformMs(Er.MODEL_LAYOUT_NAME,this.masterModelId),e!==Er.MODEL_LAYOUT_NAME&&h&&this.setLayoutHidableObjectArray(h),h&&this.calcBoundingBoxOfLayoutChild(h)}let l=this.getActiveLayoutInfo();this.measurementManager&&(l.measurementDataArray=this.measurementManager.getMeasurementsData()||[],l.measurementDataArray.forEach((e=>{e.layoutName=this.activeLayoutName,this.setMeasurementVisibility(e.id,!1)})),this.measurementManager.clearUndoRedo()),this.markupManager&&(l.markupDataArray=this.markupManager.getMarkupData()||[],l.markupDataArray.forEach((e=>{e.layoutName=this.activeLayoutName,this.setMarkupVisibility(e.id,!1)})),this.markupManager.clearUndoRedo()),this.showLayoutObjects(e),this.activeLayoutName=e,l=this.getActiveLayoutInfo();let h=l.measurementDataArray||[];this.measurementManager&&(this.measurementManager.setMeasurementsData(h),h.forEach((e=>this.setMeasurementVisibility(e.id,!0))));let u=l.markupDataArray||[];if(this.markupManager&&(this.markupManager.setMarkupData(u),u.forEach((e=>this.setMarkupVisibility(e.id,!0)))),l.lastCameraPosition)this.goTo(l.lastCameraPosition,l.lastCameraZoom,!1);else{l.extent=this.computeBoundingBox();let e=this.getLayoutExtentEx(a);if(e){let t=e.max.x-e.min.x,i=e.max.y-e.min.y;(t<1e-16||i<1e-16||t>1e16||i>1e16)&&(ne.warn(`[BimViewer] Got wired bbox, max: ${e.max.toArray()}, min: ${e.min.toArray()}, going to calculate one...`),e=this.computeBoundingBox()),l.homeViewExtent=e,this.activeLayoutName!==Er.MODEL_LAYOUT_NAME&&this.updateGroundPlane(),this.zoomToBBox(e)}}this.dispatchEvent("LayoutChanged"),_t.printMemory(`After activated layout '${this.activeLayoutName}'`),this.enableRender(),this.decreaseJobCount(),ne.info(`[DxfViewer] Activated layout '${e}' in ${(Date.now()-n)/1e3}s`)}calcBoundingBoxOfLayoutChild(e){let t=e.children.length;for(let i=0;i0?t.userData.boundingBox=Tn.getBoundingBox(t):t.userData.boundingBox&&delete t.userData.boundingBox}}getActiveLayoutName(){return this.activeLayoutName}getLayers(){var e,t;let i=[];if(this.masterModelId){let t=this.loadedModels[this.masterModelId],r=null==(e=null==t?void 0:t.dxfData)?void 0:e.tables.layer.layers;r&&i.push({modelId:this.masterModelId,layers:r})}for(let[e,r]of Object.entries(this.loadedModels)){if(e===this.masterModelId)continue;let n=null==(t=null==r?void 0:r.dxfData)?void 0:t.tables.layer.layers;n&&i.push({modelId:e,layers:n})}return i}setModelVisibility(e,t){let i=this.loadedModels[e];if(!i||!i.dxfData)throw new Error(`Failed to find model by modelId '${e}'!`);i.dxfData.threejsObject.visible=t,this.enableRender()}setLayerVisibility(e,t,i){let r=this.camera;i=i||this.masterModelId;let n=this.loadedModels[i];if(!n)throw new Error(`Failed to find layer by modelId '${i}'!`);let s=n.dxfData,a=null==s?void 0:s.tables.layer.layers[e];a?a.visible=t:ne.warn(`[DxfViewer] Layer '${e}' not found from dxfData!`);let o=null==s?void 0:s.layersAndThreejsObjects[e];if(o){let e=r.zoom;o.forEach((i=>{this.enableHideVisuallySmallObjects&&t&&e&&i.userData.visibleMinZoom&&e{let i=e;i.material&&As.setMaterialColor(i.material,new je(t))})):ne.warn(`[DxfViewer] No object found for layer '${e}'`),this.enableRender()}setFont(e){return ht(this,null,(function*(){let t=Date.now();w0.isShxFile(e[0])?this.font=yield(new w0).loadAsync(e):(e.length>1&&ne.warn("[DxfViewer] Only support 1 typeface font file for now, others will be ignored!"),this.font=yield(new mT).loadAsync(e[0])),ne.info(`[DxfViewer] Font file(s) load time in ${(Date.now()-t)/1e3}s`)}))}setDisplayLengthUnits(){throw new Error("Not implemented yet!")}setDisplayAreaUnits(){throw new Error("Not implemented yet!")}setDisplayPrecision(){throw new Error("Not implemented yet!")}getCurrentViewExtent(){return{min:this.getHitResultByNdcCoordinate({x:-1,y:-1}),max:this.getHitResultByNdcCoordinate({x:1,y:1})}}getScreenshot(){return ht(this,null,(function*(){var e;let t,i="image/png",r=.8,n=null==(e=this.renderer)?void 0:e.domElement;if(!n)return;this.boxSelectHelper||(this.boxSelectHelper=new Qf(this)),t=yield this.boxSelectHelper.select();let s=yield _t.canvasToImage(n),a=document.createElement("canvas");a.width=n.width,a.height=n.height;let o=window.devicePixelRatio,l=a.getContext("2d");if(l.drawImage(s,0,0,s.width/o,s.height/o),this.overlayRender){let e=this.overlayRender.getCanvas(),t=yield _t.canvasToImage(e);l.drawImage(t,0,0,t.width/o,t.height/o)}return _t.renderingContextToImage(l,t,i,r)}))}getMeasurementManager(){return this.measurementManager}activateMeasurement(e){this.inputManager&&(this.measurementManager||(this.measurementManager=new ru(this,this.inputManager)),this.measurementManager.activateMeasurement(e),this.clearSelection())}deactivateMeasurement(){var e;null==(e=this.measurementManager)||e.deactivateMeasurement()}getActiveMeasurementType(){var e;return null==(e=this.measurementManager)?void 0:e.getActiveMeasurementType()}getMeasurements(){var e,t;let i=this.getActiveLayoutInfo();i.measurementDataArray=(null==(e=this.measurementManager)?void 0:e.getMeasurementsData())||[],i.measurementDataArray.forEach((e=>{e.layoutName||(e.layoutName=this.activeLayoutName)}));let r=[];for(let e of Object.values(this.layoutInfos))null==(t=e.measurementDataArray)||t.forEach((e=>r.push(e)));return r}setMeasurements(e){if(!this.inputManager)return;e.forEach((e=>{var t;let i=e.layoutName||Er.MODEL_LAYOUT_NAME;null==(t=this.getLayoutInfo(i).measurementDataArray)||t.push(e)}));let t=this.getActiveLayoutInfo();this.measurementManager||(this.measurementManager=new ru(this,this.inputManager));let i=this.measurementManager;t.measurementDataArray&&i.setMeasurementsData(t.measurementDataArray)}selectMeasurement(e){this.inputManager&&(this.measurementManager||(this.measurementManager=new ru(this,this.inputManager)),this.measurementManager.selectMeasurementById(e))}unselectMeasurement(){this.inputManager&&(this.measurementManager||(this.measurementManager=new ru(this,this.inputManager)),this.measurementManager.unselectMeasurement())}removeMeasurement(e){this.inputManager&&(this.measurementManager||(this.measurementManager=new ru(this,this.inputManager)),this.measurementManager.removeMeasurementById(e))}setMeasurementVisibility(e,t){return!!(this.inputManager&&this.measurementManager&&e)&&this.measurementManager.setMeasurementVisibility(e,t)}clearMeasurements(){var e;null==(e=this.measurementManager)||e.clearMeasurements();for(let e of Object.values(this.layoutInfos))e.measurementDataArray=[]}getMarkupManager(){return this.markupManager}activateMarkup(e){this.inputManager&&(this.markupManager||(this.markupManager=new N_(this,this.inputManager)),this.markupManager.isMarkupActive()||this.markupManager.activate(),this.markupManager.setDrawType(e),this.clearSelection())}deactivateMarkup(){this.markupManager&&this.markupManager.deactivate(),this.dispatchEvent("MarkupDeactived")}getActiveMarkupType(){var e;return null==(e=this.markupManager)?void 0:e.getActiveMarkupType()}setMarkupLineColor(e){var t;null==(t=this.markupManager)||t.setLineColor(e)}getMarkupLineColor(){var e;return null==(e=this.markupManager)?void 0:e.getLineColor()}setMarkupFillColor(e){var t;null==(t=this.markupManager)||t.setFillColor(e)}getMarkupFillColor(){var e;return null==(e=this.markupManager)?void 0:e.getFillColor()}setMarkupLineWidth(e){var t;null==(t=this.markupManager)||t.setLineWidth(e)}getMarkupLineWidth(){var e;return null==(e=this.markupManager)?void 0:e.getLineWidth()}setMarkupFontSize(e){var t;null==(t=this.markupManager)||t.setFontSize(e)}getMarkupFontSize(){var e;return null==(e=this.markupManager)?void 0:e.getFontSize()}getMarkups(){var e,t;let i=this.getActiveLayoutInfo();i.markupDataArray=(null==(e=this.markupManager)?void 0:e.getMarkupData())||[],i.markupDataArray.forEach((e=>{e.layoutName||(e.layoutName=this.activeLayoutName)}));let r=[];for(let e of Object.values(this.layoutInfos))null==(t=e.markupDataArray)||t.forEach((e=>r.push(e)));return r}setMarkups(e){if(!this.inputManager)return;this.clearMarkups(),e.forEach((e=>{var t;let i=e.layoutName||Er.MODEL_LAYOUT_NAME;null==(t=this.getLayoutInfo(i).markupDataArray)||t.push(e)}));let t=this.getActiveLayoutInfo();this.markupManager||(this.markupManager=new N_(this,this.inputManager));let i=this.markupManager;t.markupDataArray&&i.setMarkupData(t.markupDataArray),this.enableRender()}setMarkupVisibility(e,t){return!!(this.inputManager&&this.markupManager&&e)&&this.markupManager.setMarkupVisibility(e,t)}updateMarkup(e){if(!(this.inputManager&&this.markupManager&&e&&e.id))return!1;let t=!1;for(let i of Object.values(this.layoutInfos)){let r=i.markupDataArray||[];for(let i=0;i{var i;return(null==(i=t.userData.hotpoint)?void 0:i.hotpointId)===e}))}getHitResult(e){let t=this.viewerContainer;if(!this.camera||!this.raycaster||!this.groundPlane)return;let i=Ai.getScreenPointByEvent(e,t),r=Ai.screenPoint2NdcPoint(i,this.camera,t);return this.getHitResultByNdcCoordinate(r)}getHitResultByNdcCoordinate(e){if(!this.camera||!this.raycaster||!this.groundPlane)return;this.raycaster.setFromCamera(e,this.camera),this.raycaster.layers.enable(10);let t=this.raycaster.intersectObject(this.groundPlane,!0);return t&&t.length>0?t[0].point:void 0}zoomToRect(){this.zoomToRectHelper||(this.zoomToRectHelper=new dE(this)),this.zoomToRectHelper.activate()}getLayoutByName(e){let t,i=this.getLayouts();for(let r of i)if(r.layoutName===e){t=r;break}return t}getActiveLayoutInfo(){return this.getLayoutInfo(this.activeLayoutName)}getMsTransformMatrix(e){var t,i;let r=this.loadedModels[e],n=null==(t=r.dxfData)?void 0:t.header;if(!n)return;let s=n.$ANGDIR,a=this.getDxfUnits(r.dxfData),o=null==(i=r.dxfData)?void 0:i.tables.viewPort.viewPorts.filter((e=>"*ACTIVE"===e.name.toLocaleUpperCase()));if(!o)return;let l=new Be,h=Er.getDcs2WcsMatrix(o[0],s),u=new A(o[0].center.x,o[0].center.y,0).applyMatrix4(h),c=1;this.units&&a!==this.units&&(c=G8(a,this.units)),u.multiplyScalar(c),l.makeTranslation(u.x,u.y,0),l.multiply((new Be).makeRotationZ(_r.degToRad(o[0].viewTwistAngle))),l.multiply((new Be).makeTranslation(-u.x,-u.y,0)),this.loadedModels[e].msTransformMatrix=l}switchTransformMs(e,t){var i;let r=this.loadedModels[t];if(!r)return void ne.warn(`[DxfViewer] Can't find model whose modelId is ${t}`);let n=r.msTransformMatrix;if(cS.identity(),!n||n.equals(cS))return;let s=null==(i=r.dxfData)?void 0:i.threejsObject,a=null==s?void 0:s.children.find((e=>e.name===Er.MODEL_LAYOUT_NAME));a&&(e===Er.MODEL_LAYOUT_NAME?a.applyMatrix4(n):a.applyMatrix4(n.clone().invert()),a.updateMatrixWorld(!0))}getLayoutExtentEx(e){return e.layoutName===Er.MODEL_LAYOUT_NAME?this.getModelSpaceExtent():this.getLayoutExtent(e)}getModelSpaceExtent(){var e,t;let i=this.loadedModels[this.masterModelId],r=null==(e=i.dxfData)?void 0:e.header,n=new A,s=new A;if(!r)throw new Error(`Header is undefined in ${this.masterModelId}!`);let a=null==(t=i.dxfData)?void 0:t.tables.viewPort.viewPorts,o=r.$EXTMIN,l=r.$EXTMAX,h=r.$ANGDIR;if(a&&a.length>0)for(let e=0;e0){let e,t=s.filter((e=>1===parseInt(e.viewportId)));e=t.length>0?t[0]:s[0];let{centerPoint:i,width_paperSpace:r,height_paperSpace:n}=e,h=Er.getDcs2WcsMatrix(e,l),u=new A(i.x,i.y,0);u.applyMatrix4(h),a={x:u.x-r/2,y:u.y-n/2,z:0},o={x:u.x+r/2,y:u.y+n/2,z:0}}return r.set(a.x,a.y,a.z),n.set(o.x,o.y,o.z),new Mt(r,n)}showLayoutObjects(e){Object.values(this.loadedModels).forEach((t=>{var i;let r=0,n=0,s=null==(i=t.dxfData)?void 0:i.threejsObject;null==s||s.children.forEach((t=>{let i=t.name===e;t.visible=i,i?r++:n++})),ne.debug(`[DxfViewer] showLayoutObjects('${e}') sets ${r} layout level object(s) to visible and ${n} to hidden for model '${null==s?void 0:s.name}'`)}))}getLayoutViewports(e){var t;let i=this.loadedModels[this.masterModelId],r=e.ownerHandle;return(null==(t=i.dxfData)?void 0:t.layoutViewportsMap[r])||[]}setMaterialUniforms(e,t){e instanceof Yt&&(e.uniforms.u_cameraZoom&&(e.uniforms.u_cameraZoom=Er.cameraZoomUniform),e.uniforms.u_viewportScale&&1===(null==t?void 0:t.header.$PSLTSCALE)&&(e.uniforms.u_viewportScale=Er.viewportScaleUniform))}isLayerFrozenForViewport(e,t,i){if(!e||!t)return!1;let r=e.tables.layer.layers[t];return!!(r&&(1&r.flag)>0)||!(!i||i.length<=0)&&(r&&i.indexOf(r.handle)>=0)}getFilteredViewports(e){let t=this.getLayoutViewports(e),i=t.filter((e=>"1"!==e.viewportId));return i.length===t.length&&(i=t.filter(((e,t)=>0!==t))),i}generateObjectsByViewport(e,t,i,r=[]){let n=t;if("1"==t.viewportId)return;if(!n.psBBox||!n.msToPsMatrix)throw new Error("The bbox or matrix is invalid in the viewport!");Er.transformMatrixUniform={value:n.msToPsMatrix},Er.viewportScaleUniform={value:t.viewHeight/t.height_paperSpace};let s=n.psBBox.clone();s.applyMatrix4(n.msToPsMatrix.clone().invert()),s.min.setZ(-1),s.max.setZ(1);let a=this.getObjectsByBoundingBox(s);if(0===a.length)return;let o,l=n.psBBox.min,h=n.psBBox.max,u=new rs(new le(l.x,l.y),new le(h.x,h.y)),c=Yu.generateSectionPlanesByBox(u),p=[],d=e=>(p[e.id]||(p[e.id]=e.clone(),this.setMaterialUniforms(p[e.id],i),Yu.setMaterialSection(p[e.id],c)),p[e.id]),f=[...r,...t.frozenLayerHandles||[]];if(e!==Er.MODEL_LAYOUT_NAME){let e=t;e.associatedLeafObjectSet||(e.associatedLeafObjectSet=new Set),o=e.associatedLeafObjectSet}let m=new ur;m.name=t.viewportId;let g=null==i?void 0:i.layersAndThreejsObjects,y=[];if(a.forEach((t=>{let r=t.clone();r.traverse((t=>{if(t.material&&t.geometry){let r=t.userData.layerName;if(this.isLayerFrozenForViewport(i,r,f))return void y.push(t);!1!==t.userData.layerVisible&&(t.visible=!0),t.material=(e=>{if(Array.isArray(e)){let t=[];return e.forEach((e=>{let i=d(e);t.push(i)})),t}return d(e)})(t.material),null==o||o.add(t),g&&g[r]?g[r].push(t):ne.warn(`[DxfViewer] Failed to find object for modelId '${this.masterModelId}', layer '${r}', layout '${e}'`)}})),r.userData.boundingBox&&(r.visible=!0,delete r.userData.boundingBox),m.add(r)})),o&&0===o.size)return;ei.removeEmptyObjectsFromRemovingObjects(y,m);let v=null==i?void 0:i.threejsObject,T=null==v?void 0:v.children.find((t=>t.name===e));T||(T=new ur,ei.setSharedVariablesOfObject(T),T.name=e,null==v||v.add(T)),T.add(m),m.applyMatrix4(n.msToPsMatrix),m.updateMatrixWorld(!0),m.traverse((e=>{ei.setSharedVariablesOfObject(e),this.addSpatialFilterSection(e,i,!0)}))}findSpatialFilter(e,t){let i,r=t.objects.SPATIAL_FILTER;if(r){for(let t of r)if(t.handle===e){i=t;break}return i}}getAnyMaterial(e){let t,i=e;if(i.material)return Array.isArray(i.material)?i.material[0]:i.material;for(let i=0;i0),n=s.clipIntersection),t&&n!==r.clipPolylines[0].bReversed)return void ne.warn("[DxfViewer] Material cannot set clipIntersection to different values at the same time. clipIntersection needs to be set to true here!");n=r.clipPolylines[0].bReversed;let a=this.generateSectionsBySpatialFilter(r,e.matrixWorld);if(a){let i=e=>{let t=0;return e.clippingPlanes&&(t=e.clippingPlanes.length),t+a.length>Er.maxFragmentUniforms},r=new Set,s=e=>{r.has(e.id)||(r.add(e.id),i(e)||Yu.setMaterialSection(e,a,t,n))};e.traverse((e=>{let t=e.material;Array.isArray(t)?t.forEach((e=>{s(e)})):t&&s(t)}))}}}getObjectsByBoundingBox(e){var t;let i=[];if(e.isEmpty())return ne.warn("[DxfViewer] bbox is empty !"),i;let r=null==(t=this.loadedModels[this.masterModelId].dxfData)?void 0:t.threejsObject,n=null==r?void 0:r.children.find((e=>e.name===Er.MODEL_LAYOUT_NAME));return n&&n.children.forEach((t=>{(t=>{let r=Tn.getBoundingBox(t,!1);e.intersectsBox(r)&&i.push(t)})(t)})),i}getDxfUnits(e){if(e||Object.keys(this.loadedModels).length>0&&(e=this.loadedModels[this.masterModelId].dxfData),!e)return"Unitless";let t=null==e?void 0:e.header;if(!t)return ne.warn("DxfData or its header is undefined!"),"Unitless";let i=t.$INSUNITS;return Er.getDxfUnits(i)}generateSectionsBySpatialFilter(e,t){let i=e.clipPolylines[0];if(i.bConcave)return void ne.warn("[DxfViewer] clipPolyline.bConcave = true is not supported yet in spatialFilter !");cS.copy(t),e.localMatrix&&cS.multiply(e.localMatrix);let r=i.polyline,n=[];r.forEach((e=>{let t=e.clone().applyMatrix4(cS);n.push(new le(t.x,t.y))}));let s=es.isClockWise(n),a=!s&&!i.bReversed||s&&i.bReversed;return Yu.generateSectionPlanesByPoints(n,a)}addLoadedModelToScene(e,t,i){if(!this.scene)return;let r=t.modelId||t.src;if(this.loadedModels[r]){let e=1;for(;this.loadedModels[`${r}_${e}`];)e++;r=`${r}_${e}`,ne.warn(`[DxfViewer] Model '${r}' is loaded more than once!`)}this.loadedModels[r]={dxfData:i},e.matrixAutoUpdate=!1,e.updateMatrix(),_t.printMemory("Before merge"),t.merge&&(Er.merge(i),_t.printMemory("After merged")),e.updateMatrixWorld(!0),Er.computeLineDistances(e),this.getMsTransformMatrix(r),this.masterModelId===r?this.activateLayout(Er.MODEL_LAYOUT_NAME):this.handleOverlayDxf(r),ne.debug(i),this.scene.add(e);let n=null==i?void 0:i.threejsObject.children.find((e=>e.name===Er.MODEL_LAYOUT_NAME));n&&this.setLayoutHidableObjectArray(n),this.updateGroundPlane(),this.raycastableObjects=void 0,this.masterModelId===r||this.enableRender()}resize(e,t){let i=this.camera;if(i){let r=e||window.innerWidth,n=t||window.innerHeight,s=r/n;i.left=-this.height*s/2,i.right=this.height*s/2,i.top=this.height/2,i.bottom=-this.height/2,i.updateProjectionMatrix(),this.renderer&&this.renderer.setSize(r,n),this.css2dRenderer&&(this.css2dRenderer.setSize(r,n),this.css2dRenderer.domElement.style.width="0",this.css2dRenderer.domElement.style.height="0"),this.overlayRender&&this.overlayRender.setSize(r,n)}this.enableRender()}getRaycaster(){return this.raycaster}getRaycastableObjects(){var e;if(this.raycastableObjects)return this.raycastableObjects;let t=Date.now(),i=[];for(let t of Object.values(this.loadedModels)){let r=null==(e=t.dxfData)?void 0:e.threejsObject,n=r&&r.children.find((e=>e.name===this.activeLayoutName));n&&n.traverseVisible((e=>{ei.isLeafObject(e)&&i.push(e)}))}return this.groundPlane&&i.push(this.groundPlane),this.raycastableObjects=i,ne.debug(`[DxfViewer] getRaycastableObjects() finds ${i.length} objects`),ne.debug(`[DxfViewer] getRaycastableObjects() costs ${(Date.now()-t)/1e3} s`),i}getViewportByPoint(e){if(0===this.activeLayoutName.length||this.activeLayoutName===Er.MODEL_LAYOUT_NAME)return;let t=this.getLayoutByName(this.activeLayoutName);if(!t)return;let i=t=>e.xt.max.x||e.yt.max.y,r=this.getFilteredViewports(t);for(let e=0,t=r.length;e{i.visible&&(t.push(i),e.add(i))}))}let r=this.getViewportByPoint(this.raycaster.ray.origin);r&&r.associatedLeafObjectSet?(this.getRaycastableObjects().forEach((i=>{var n;null!=(n=r.associatedLeafObjectSet)&&n.has(i)&&!e.has(i)&&i.visible&&(t.push(i),e.add(i))})),ne.debug("[DxfViewer] getRaycastableObjectsByMouse() from inside of viewport:",r.viewportId)):ne.debug("[DxfViewer] getRaycastableObjectsByMouse() from out of viewport"),this.groundPlane&&t.push(this.groundPlane)}return ne.debug(`[DxfViewer] getRaycastableObjectsByMouse() costs ${(Date.now()-r)/1e3} s`),t}getIntersections(e){this.raycaster&&this.raycaster.layers.enable(10);let t=this.getRaycastableObjectsByMouse(e);return this.raycaster&&this.raycaster.intersectObjects(t,!0)||[]}handleMouseClick(e){if(this.selectDrawableByEvent(e),this.selectedObject||!this.enableSelection||this.measurementManager&&this.measurementManager.isMeasurementActive()||this.markupManager&&this.markupManager.isMarkupActive())return;let t=this.getIntersections(e);if(t.length>0){let e=e=>_t.vectorToString(e);ne.debug(`[DxfViewer] Clicked at: ${e(t[0].point)}`)}let i=t.find((e=>{let t=e.object;return t.visible&&!1!==t.userData.selectable})),r=i&&i.object||void 0;this.selectedObject&&this.clearSelection(),r&&this.selectedObject&&this.selectedObject.id===r.id&&(r=void 0),r?this.selectObject(r):this.clearSelection()}selectDrawableByEvent(e){var t;this.clearSelection();let i=this.getHitResult(e);if(!i)return;let r=null==(t=this.overlayRender)?void 0:t.getDrawablesByPosition(i,this.raycaster);r&&r.length>0&&(r[0].selected=!0,this.selectedObject=r[0])}selectObject(e,t){if(!this.enableSelection)return;let i=e=>{if(e.children.length>0&&e.children.forEach((e=>i(e))),e instanceof rt||e instanceof Ir){let i=As.clonedHighlightMaterials(e,{depthTest:t});i&&(e.userData.originalMaterial=e.material,e.material=i)}},r=e=>{if(e.children.length>0&&e.children.forEach((e=>r(e))),(e instanceof rt||e instanceof Ir)&&e.userData.originalMaterial){let t=e.material;e.material=e.userData.originalMaterial,delete e.userData.originalMaterial,Array.isArray(t)?t.forEach((e=>e.dispose())):t instanceof jr&&t.dispose()}};this.selectedObject&&(r(this.selectedObject),this.selectedObject=void 0),e&&(i(e),this.selectedObject=e,e.userData.dxfEntity?ne.info("[DxfViewer] Selected entity:",e.userData.dxfEntity):ne.info("[DxfViewer] Selected object:",e)),this.enableRender()}clearSelection(){this.selectedObject&&this.selectedObject instanceof Aa?this.selectedObject.selected=!1:this.selectObject(),this.selectedObject=void 0}flyToObjects(e){if(!e||0===e.length||!this.camera)return;let t=new Mt;e.forEach((e=>{let i=Tn.getBoundingBox(e);i.isEmpty()||t.union(i)})),this.zoomToBBox(t)}flyToObject(e){this.flyToObjects([e])}flyToSelectedObject(){if(!this.selectedObject)return;let e=this.selectedObject;(e instanceof rn&&e.userData.clonedMesh||e instanceof rt&&Yi.isMergedMesh(e)&&e.userData.clonedMesh)&&(e=e.userData.clonedMesh),this.flyToObject(e)}flyToRandomObject(){var e;let t=this.scene,i=[];for(let t of Object.values(this.loadedModels)){let r=null==(e=t.dxfData)?void 0:e.threejsObject;r&&i.push(r.id)}let r=i.length;if(r<=0)return;let n=i[Math.floor(Math.random()*r)];if(!t.getObjectByProperty("id",n.toString()))return;let s=[];if(t.traverseVisible((e=>{(e instanceof rt||e instanceof Ir)&&!["SKYBOX","GROUND_GRID","GRASS_GROUND","BIM_VIEWER_BOX_HELPER"].includes(e.name)&&s.push(e.id)})),s.length<1)return;let a=Math.floor(Math.random()*s.length),o=t.getObjectById(s[a]);o&&(ne.info(`[DxfViewer] Flying to random object: ${o.name}, type: ${o.type}`),this.selectObject(o,void 0),this.flyToObject(o))}flyTo(e,t,i,r){let n=this.camera,s=this.controls;if(!n||!s)return;if(i&&(i=this.checkAndGetLimitedCameraZoom(i)),e.equals(t))return void ne.error("[DxfViewer] Camera position and lookAt cannot be the same!");if(!_t.isVectorValid(e)||!_t.isVectorValid(t))return void ne.error("[DxfViewer] Invalid position or lookAt!",e,t);let a=e.distanceTo(t);an.far&&(e=e.clone().sub(t).normalize().multiplyScalar(.9*n.far),ne.warn("[DxfViewer] Camera could be too far to see the object!"));let o=(e,t,i)=>{i&&Number.isFinite(i)&&s.zoomTo(i),s.setLookAt(e.x,e.y,e.z,t.x,t.y,t.z)};if(!1===r)return this.cameraUpdateInterval&&clearInterval(this.cameraUpdateInterval),void o(e,t,i);let l=n.position.clone(),h=s.getTarget(new A),u=n.zoom,c=300,p=Date.now();this.cameraUpdateInterval&&clearInterval(this.cameraUpdateInterval),this.cameraUpdateInterval=setInterval((()=>{let r=Date.now()-p;r>c&&(r=c);let n,s=(e,t,i)=>{let r=e.x+(t.x-e.x)*i,n=e.y+(t.y-e.y)*i,s=e.z+(t.z-e.z)*i;return new A(r,n,s)},a=s(l,e,r/c),d=s(h,t,r/c);i&&(n=u+(i-u)*r/c),o(a,d,n),r>=c&&(clearInterval(this.cameraUpdateInterval),this.cameraUpdateInterval=void 0)}),10)}goTo(e,t,i){let r=this.camera,n=this.controls;if(!r||!n)return;let s=new A(e.x,e.y,r.position.z),a=n.getTarget(new A),o=new A(e.x,e.y,a.z);this.flyTo(s,o,t,i)}goToHomeView(){let e=this.getActiveLayoutInfo();e.homeViewExtent?this.zoomToBBox(e.homeViewExtent):ne.error(`[DxfViewer] Failed to find extent for ${this.activeLayoutName}`)}zoomToBBox(e){let t=this.camera;if(!t)return;let i=e.max.x-e.min.x,r=e.max.y-e.min.y,n=t.right-t.left,s=t.top-t.bottom,a=Math.min(n/i,s/r);a/=1.1;let o=new Mt(new A(e.min.x,e.min.y,0),new A(e.max.x,e.max.y,0)),l=new A;o.getCenter(l),l.z=0;let h=l.clone().setZ(this.CAMERA_Z_POSITION);h.equals(l)||this.flyTo(h,l,a,!1)}zoomToExtent(){let e=this.getActiveLayoutInfo();e.extent?this.zoomToBBox(e.extent):(console.error("[DxfViewer] Failed to find extent of current layout! Will go to home view."),this.goToHomeView())}zoomToCompareChange(e){if(this.changes){let t=this.changes[e];if(!t)return;let i=t.box;i&&this.zoomToBBox(i.clone().expandByScalar(1.2))}}getCompareChanges(){return this.changes}setBackgroundColor(e,t,i){this.scene&&(this.scene.background=new je(e,t,i),this.enableRender())}setSpinnerVisibility(e){this.spinner&&(e?this.spinner.classList.remove("hidden"):this.spinner.classList.add("hidden"))}increaseJobCount(){this.setSpinnerVisibility(++this.jobCount>0)}decreaseJobCount(){this.setSpinnerVisibility(--this.jobCount>0)}getLayoutInfo(e){return this.layoutInfos[e]||(this.layoutInfos[e]={measurementDataArray:[],markupDataArray:[]}),this.layoutInfos[e]}updateGroundPlane(){if(!this.scene)return;let e=this.getActiveLayoutInfo();if(!e.homeViewExtent)return;let t=e.homeViewExtent.clone();_t.expandBoxByScale(t,3);let i=t.min,r=t.max,n=r.x-i.x+r.y-i.y+r.z-i.z;_t.expandBoxByMinSize(t,n);let s=[],a=(e,t,i)=>{s.push(new A(e,t,i))},o=t.getSize(new A),l=t.getCenter(new A);if(a(-o.x/2,-o.y/2,0),a(o.x/2,-o.y/2,0),a(o.x/2,o.y/2,0),a(-o.x/2,o.y/2,0),this.groundPlane)this.groundPlane.geometry.setFromPoints(s),this.groundPlane.geometry.computeBoundingSphere(),this.groundPlane.geometry.computeBoundingBox(),this.groundPlane.geometry.computeVertexNormals();else{let e=new lt;e.setFromPoints(s),e.setIndex([0,3,2,0,2,1]),e.computeVertexNormals();let t=new lr({color:"#888",transparent:!0,opacity:0,side:gi});this.groundPlane=new rt(e,t),this.groundPlane.frustumCulled=!1,this.groundPlane.position.copy(l),this.groundPlane.scale.set(1e5,1e5,1),this.groundPlane.name="groundPlane",this.groundPlane.userData.selectable=!1,this.groundPlane.renderOrder=-1e3,this.scene.add(this.groundPlane)}this.groundPlane.updateMatrixWorld()}computeBoundingBox(){var e;let t=new Mt;for(let i of Object.values(this.loadedModels)){let r=null==(e=i.dxfData)?void 0:e.threejsObject;for(let e=0;r&&e{e.visible&&e.children.forEach((e=>{e.userData.boundingBox&&(DCe.intersectsBox(e.userData.boundingBox)?e.visible=!0:e.visible=!1)}))}))}ne.debug(`[DxfViewer] setVisibilityByCameraFrustum cost: ${(Date.now()-t)/1e3}s`)}getVisiblePixelSize(e){let t=6.5*_r.smoothstep(e,1e4,3e4)+.5;return ne.debug("[DxfViewer] visiblePixelSize:",t),t}setLayoutHidableObjectArray(e){let t=this.camera;if(!this.enableHideVisuallySmallObjects||!t)return;let i=Date.now(),r=e.name;this.sortedHidableObjects[r]||(this.sortedHidableObjects[r]=[]);let n=this.sortedHidableObjects[r],s=t.zoom;this.lastCameraZoom=s;let a=e=>{if(!this.isCompareMode()||!e.material)return!1;let t;return t=e.material instanceof Yt?e.material.uniforms.u_color.value:e.material.color,t.equals(new je(qn.ENTITY_COLOR_ADDED))||t.equals(new je(qn.ENTITY_COLOR_REMOVED))},o=1;e.traverse((e=>{if(this.isCompareMode()&&a(e)||!ei.isLeafObject(e))return;let t=e.geometry;t.boundingBox||t.computeBoundingBox();let i=t.boundingBox.clone();if(!i||!_t.isBoxValid(i))return;i.applyMatrix4(e.matrixWorld),i.getSize(ZG);let r=Math.max(ZG.x,ZG.y),s=o/r;s<1/0?n.push({visibleMinZoom:s,object:e}):e instanceof nn?n.push({visibleMinZoom:o,object:e}):ne.warn("[DxfViewer] The size of bbox is 0 ! ",e)})),o=this.getVisiblePixelSize(n.length);let l=0;n.forEach((e=>{let t=e.visibleMinZoom*o;e.visibleMinZoom=t,e.object.userData.visibleMinZoom=t,t>s&&(e.object.visible=!1,l++)})),n.sort(((e,t)=>e.visibleMinZoom-t.visibleMinZoom)),ne.debug(`[DxfViewer] setLayoutHidableObjectArray cost: ${(Date.now()-i)/1e3}s, ${l} objects changed to hidden`)}statObjects(e){let t=this.sortedHidableObjects[this.activeLayoutName],i=t.length,r={},n=0;t.forEach((t=>{let i=t.object;if(i.geometry&&i.material){n++;let i=(t=>{let i=0,r=t;for(;r&&(i++,r!==e);)r=r.parent;return i})(t.object);r[i]||(r[i]=0),r[i]++}}));let s=0;e.traverse((e=>{let t=e;t.geometry&&t.material&&s++})),ne.info(`[DxfViewer] hidableObjects count:${i}, real count:${n}, layout count: ${s}, level:`,r),ne.info("[DxfViewer] scene:",this.scene)}updateHidableObjectsVisibility(){let e=this.camera;if(!e)return;let t=Date.now(),i=e.zoom;if(Math.abs(i-this.lastCameraZoom)<1e-5||(this.updateRaycasterThreshold(),this.updateCameraZoomUniform(i),this.raycastableObjects=void 0,!this.sortedHidableObjects[this.activeLayoutName]))return;let r=this.sortedHidableObjects[this.activeLayoutName];if(0===r.length)return;let n=i>this.lastCameraZoom,s=Math.min(i,this.lastCameraZoom),a=Math.max(i,this.lastCameraZoom),o=[],l=0;for(let e=0;ea)break;r[e].object.visible=n,n&&o.push(r[e].object),l++}this.lastCameraZoom=i,ne.debug(`[DxfViewer] updateHidableObjectsVisibility cost: ${(Date.now()-t)/1e3}s, ${l}(out of ${r.length}) objects changed to ${n?"visible":"hidden"}`),this.groundPlane&&o.push(this.groundPlane),this.raycastableObjects=o}updateRaycasterThreshold(){let e=this.camera;if(!e||!this.raycaster)return;let t=12/e.zoom,i=this.raycaster.params;i.Line?i.Line.threshold=t:i.Line={threshold:t},i.Points?i.Points.threshold=t:i.Points={threshold:t}}updateCameraZoomUniform(e){Er.cameraZoomUniform.value=e}},G3=kn(ql(),1),TLt=(e=>(e[e.Browser=0]="Browser",e[e.Browserless=1]="Browserless",e[e.Headless=2]="Headless",e))(TLt||{}),OCe=class{constructor(e,t,i){if(this.scene=this.initScene(),this.selectedObject=void 0,this.loadedModels={},this.clock=new Al,this.viewerMode=0,this.raycaster=new Oc,this.savedMaterialsForOpacity=[],this.jobCount=0,this.bbox=new Mt,this.outlineMaterial=new vr({color:1118481}),this.outlineRoot=new ur,this.transparentObjectIds=[],this.applyOptionsAndAddToScene=(e,t,i)=>{if(ne.info(`[SimplifiedBimViewer] '${e}' is loaded, adding to scene...`),i.matrix&&16===i.matrix.length){let e=new Be;e.elements=i.matrix,t.applyMatrix4(e)}else{let e=i.position||[0,0,0],r=i.rotation||[0,0,0],n=i.scale||[1,1,1];t.position.set(e[0],e[1],e[2]),t.rotation.set(r[0]*Math.PI/180,r[1]*Math.PI/180,r[2]*Math.PI/180),t.scale.set(n[0],n[1],n[2])}this.addLoadedModelToScene(t,i)},this.getMeshes=e=>{let t=[];return e instanceof rt?t.push(e):e.traverseVisible((e=>{e instanceof rt&&t.push(e)})),t},this.containerOrCanvas=e,t&&(this.viewerMode=t),this.glContext=i,1===this.viewerMode&&(e instanceof HTMLDivElement||!i))throw new Error("[SimplifiedBimViewer] Parameters don't match Browserless viewerMode !");this.increaseJobCount(),this.init(),this.decreaseJobCount(),ne.info("[SimplifiedBimViewer] Initialized"),this.animate()}init(){this.initRenderer(),this.initCamera(),this.initControls(),this.initLights(),this.initPointerEvents(),this.scene.add(this.outlineRoot)}initScene(){let e=new Nn;return e.background=new je(7112861),e.matrixAutoUpdate=!0,e}isBrowserlessMode(){return 1===this.viewerMode}isBrowserMode(){return 0===this.viewerMode}initRenderer(){let e={antialias:!0,preserveDrawingBuffer:!0},t=this.isBrowserlessMode();t&&Object.assign(e,{canvas:this.containerOrCanvas,context:this.glContext});let i=new Ol(e);if(t){let e=this.containerOrCanvas.width,t=this.containerOrCanvas.height;ne.info(`[SimplifiedBimViewer] Render target size: ${e} x ${t}`),this.renderTarget=new zr(e,t,{minFilter:oi,magFilter:Ci,format:Bs,type:Fu}),i.setRenderTarget(this.renderTarget)}else{let e=this.containerOrCanvas.clientWidth,t=this.containerOrCanvas.clientHeight;this.containerOrCanvas.append(i.domElement),i.setPixelRatio(window.devicePixelRatio),i.setSize(e,t)}i.outputEncoding=gr,i.toneMappingExposure=1,i.physicallyCorrectLights=!0,i.setClearColor(11119017,1),i.shadowMap.enabled=!0,i.shadowMap.type=By,this.renderer=i,t||(this.pmremGenerator=new xp(i),this.pmremGenerator.compileEquirectangularShader(),this.setEnvironmentFromDataArray())}initCamera(){if(!this.scene)return;let e=this.containerOrCanvas.clientWidth||this.containerOrCanvas.width||0,t=this.containerOrCanvas.clientHeight||this.containerOrCanvas.height||0,i=1;e&&t&&(i=e/t),this.camera=new Vr(68,i,.05,1e4),this.camera.position.set(10,10,10),this.camera.lookAt(0,0,0),this.scene.add(this.camera)}initControls(){if(!this.renderer)return;let e=this.camera;if(!e)return;let t=new $l(e,this.renderer.domElement);t.smoothTime=.5,t.enabled=!0,t.keyTruckSpeed=10,t.keys={left:"KeyD",up:"KeyE",right:"KeyA",bottom:"KeyQ"},t.update(0),this.controls=t,t.addEventListener("update",(()=>{!this.isBrowserMode()&&this.renderer&&this.renderer.render(this.scene,e)}))}initLights(){if(!this.scene)return;let e=16777215,t=new Ks(e,.3);t.position.set(-2,2,4);let i=new Cl(3158064),r=new df(e,14540253,3);r.position.set(0,300,0),this.scene.add(t),this.scene.add(i),this.scene.add(r)}initPointerEvents(){if(!this.renderer||!this.camera||!this.controls)return;let e=!1,t=!1,i=-1,r=-1;this.renderer.domElement.addEventListener("pointerdown",(t=>{i=t.x,r=t.y,e=!1})),this.renderer.domElement.addEventListener("pointermove",(t=>{i>=0&&r>=0&&(Math.abs(t.x-i)>5||Math.abs(t.y-r)>5)&&(e=!0)})),this.renderer.domElement.addEventListener("pointerup",(()=>{t&&setTimeout((()=>{t=!1}),200),i=-1,r=-1})),this.renderer.domElement.addEventListener("dblclick",(i=>{t=!0,e||(this.handleMouseClick(i),this.flyToSelectedObject())}))}animate(){var e;this.isBrowserMode()&&requestAnimationFrame(this.animate.bind(this));let t=this.clock.getDelta();this.controls&&this.controls.update(t),this.scene&&this.camera&&(null==(e=this.renderer)||e.render(this.scene,this.camera))}destroy(){this.camera=void 0,this.scene&&this.scene.clear(),this.renderer&&(this.containerOrCanvas.removeChild(this.renderer.domElement),this.renderer.clear(),this.renderer.dispose(),this.renderer=void 0),this.controls&&(this.controls.dispose(),this.controls=void 0),this.renderTarget&&(this.renderTarget.dispose(),this.renderTarget=void 0),this.raycaster=void 0,this.selectedObject=void 0,this.savedMaterialsForOpacity=void 0,Object.keys(this.loadedModels).forEach((e=>{delete this.loadedModels[e]}))}loadLocalModel(e,t,i){return ht(this,null,(function*(){let r=yield(new $c).loadLocalModel(e,t.src,i);return r?(this.applyOptionsAndAddToScene(e,r,t),Promise.resolve()):Promise.reject()}))}loadModel(e,t){return ht(this,null,(function*(){this.increaseJobCount();let i=yield(new $c).loadModel(e.src,e.fileFormat,t);return i?(this.applyOptionsAndAddToScene(e.src,i,e),Promise.resolve()):Promise.reject()}))}parseGltf(e,t,i,r){this.increaseJobCount(),(new $c).parseGltf(e,t.src,(e=>{this.applyOptionsAndAddToScene(t.src,e,t),i&&i(e)}),(e=>{r&&r(e)}))}addLoadedModelToScene(e,t){if(!this.scene)return;e.updateMatrix(),this.scene.add(e);let i=new Ug(e);i.name="BIM_VIEWER_BOX_HELPER",i.visible=!1,i.material&&(i.material=void 0,i.layers.set(11));let r=t.modelId||t.src;if(this.loadedModels[r]){let e=1;for(;this.loadedModels[`${r}_${e}`];)e++;r=`${r}_${e}`,ne.warn(`[BimViewer] Model '${r}' is loaded more than once!`)}this.loadedModels[r]={id:e.id,bbox:i},this.computeBoundingBox();let n=Object.values(this.loadedModels).map((e=>e.id));(!n||n.length<=1)&&(this.tryAdjustCameraNearAndFar(),this.goToHomeView()),this.scene.add(i),t.edges&&ei.addOutlines(e),this.decreaseJobCount(),ne.info(`[SimplifiedBimViewer] Added '${t.src}' to scene`)}addOrRemoveObjectOpacity(e=!0,t=.3,i,r){if(this.savedMaterialsForOpacity||(this.savedMaterialsForOpacity=[]),!this.scene)return;let n=this.scene,s=[];Object.keys(this.loadedModels).forEach((a=>{let o=this.loadedModels[a];if(e){this.savedMaterialsForOpacity&&this.savedMaterialsForOpacity.length>0&&ei.revertObjectOpacityById(n,o.id,this.savedMaterialsForOpacity);let e=ei.setObjectOpacityById(n,o.id,t,i,r);s.push(...e)}else this.savedMaterialsForOpacity&&ei.revertObjectOpacityById(n,o.id,this.savedMaterialsForOpacity)})),this.savedMaterialsForOpacity=e?s:[]}hasTransparentObject(){return!!(this.savedMaterialsForOpacity&&this.savedMaterialsForOpacity.length>0)}getIntersections(e){if(!this.raycaster||!this.camera||!this.scene)return[];let t=new le;e&&(t=Ai.getScreenPointByEvent(e,this.containerOrCanvas));let i=Ai.screenPoint2NdcPoint(t,this.camera,this.containerOrCanvas);this.raycaster.setFromCamera(i,this.camera);let r=[];return Object.values(this.loadedModels).forEach((e=>{let t=this.scene&&this.scene.getObjectById(e.id);t&&t.visible&&r.push(t)})),this.raycaster.intersectObjects(r,!0)||[]}handleMouseClick(e){let t=this.getIntersections(e).find((e=>{let t=e.object;return t.visible&&(!1!==t.userData.selectable||t instanceof rt)})),i=t&&t.object||void 0;i&&this.selectedObject&&this.selectedObject.id===i.id&&(i=void 0),i?this.selectObject(i):this.clearSelection()}selectObject(e){if(this.selectedObject){let e=this.selectedObject.userData;if(e.originalMaterial){if(this.selectedObject.material){let e=this.selectedObject.material;Array.isArray(e)?e.forEach((e=>e.dispose())):e instanceof jr&&e.dispose()}this.selectedObject.material=e.originalMaterial,delete e.originalMaterial}this.selectedObject=void 0}if(!this.scene||!e)return;let t=As.clonedHighlightMaterials(e);t&&(this.selectedObject=e,this.selectedObject.userData.originalMaterial=this.selectedObject.material,this.selectedObject.material=t)}clearSelection(){this.selectObject()}flyToObjects(e){if(!e||0===e.length||!this.camera)return;let t=new A,i=new A,r=new Mt;e.forEach((e=>{let t=Tn.getBoundingBox(e);r.union(t)}));let n=new A;this.camera.getWorldDirection(n),xs.getCameraPositionByBboxAndDirection(r,t,i,this.camera.projectionMatrix,n),this.flyTo(t,i)}flyToObject(e){this.flyToObjects([e])}flyToSelectedObject(){this.selectedObject&&this.flyToObject(this.selectedObject)}flyTo(e,t,i){var r;let n=this.camera,s=this.controls;if(!n||!s)return;let a=e=Array.isArray(e)?new A(e[0],e[1],e[2]):e,o=t=Array.isArray(t)?new A(t[0],t[1],t[2]):t;ne.info("[SimplifiedBimViewer] flyTo: ",_t.vectorToString(a)),s.setPosition(a.x,a.y,a.z),s.setTarget(o.x,o.y,o.z),this.isBrowserMode()||null==(r=this.renderer)||r.render(this.scene,n),i&&i()}goToHomeView(){var e;let t=new A,i=new A,r=new A,n=new A;this.bbox.getSize(n),this.bbox.getCenter(r);let s=(n.x+n.y+n.z)/3*1.5,a=new A(r.x+s,r.y+s/1.5,r.z+s),o=r.clone().sub(a);xs.getCameraPositionByBboxAndDirection(this.bbox,t,i,null==(e=this.camera)?void 0:e.projectionMatrix,o),t.equals(i)||this.flyTo(t,i)}setEnvironmentFromDataArray(e){Nc.createEnvTextureFromDataArray(this.pmremGenerator,e).then((e=>{this.scene.environment=e,this.isBrowserMode()||this.animate()}))}tryAdjustCameraNearAndFar(){let e=this.camera;if(!this.scene||!e)return;let t=this.bbox,i=e.near,r=e.far,n=t.max.x-t.min.x,s=t.max.y-t.min.y,a=t.max.z-t.min.z,o=Math.max(n,s,a),l=o/5,h=5*o;if(i>l||r_t.numberToString(e);ne.info(`[SimplifiedBimViewer] BBox's longest side is: ${t(o)}`),i>l&&(ne.warn(`[SimplifiedBimViewer] camera.near(${t(i)}) shouldn't bigger than ${t(l)}, will change it!`),e.near=l),r0?void 0:this.transparentObjectIds,i=this.transparentObjectIds.length>0?this.transparentObjectIds:void 0,r=new lr({color:16777215,transparent:!0,opacity:.1});Object.keys(this.loadedModels).forEach((e=>{let n=this.loadedModels[e];ei.applyMaterialToObjectById(this.scene,n.id,r,i,t)})),this.outlineRoot.clear();let n=[];if(e.forEach((e=>{let t=e.modelId,i=t?this.scene.getObjectById(this.loadedModels[t].id):this.scene;i||(ne.warn(`[BimViewer] The ModelId of ${t} has no corresponding model.`),i=this.scene),i.traverse((t=>{if((0,G3.includes)(e.id,(0,G3.get)(t.userData,"UniqueId"))){let e=this.getMeshes(t);n=n.concat(e)}}))})),n.length>0){n.forEach((e=>{var t;let i=ei.createOutline(e.geometry,e.matrix,this.outlineMaterial);null!=(t=e.parent)&&t.matrixWorld&&i.applyMatrix4(e.parent.matrixWorld),this.outlineRoot.add(i)}));let e=n.map((e=>e.id));Object.keys(this.loadedModels).forEach((t=>{let i=this.loadedModels[t];ei.revertAppliedMaterialToObjectById(this.scene,i.id,e)})),this.transparentObjectIds=e,this.flyToObjects(n)}else ne.warn(`[BimViewer] No object found with uniqueIds: ${e.map((e=>e.id))}`);this.isBrowserMode()||this.animate()}increaseJobCount(){++this.jobCount}decreaseJobCount(){--this.jobCount}computeBoundingBox(){let e=new Mt;return Object.values(this.loadedModels).forEach((t=>{if(t.bbox){t.bbox.geometry.computeBoundingBox();let i=t.bbox.geometry.boundingBox;i&&!i.isEmpty()&&e.union(i)}})),this.bbox=e,e}getContext(){var e;return null==(e=this.renderer)?void 0:e.getContext()}getCameraDirection(){var e;let t=new A;return null==(e=this.camera)||e.getWorldDirection(t),{x:t.x,y:t.y,z:t.z}}setFov(e){this.camera&&(this.camera.fov=e,this.camera.updateProjectionMatrix())}},PCe=kn(ql(),1),dm=class extends ur{constructor(e,t,i=10){super(),this.images=e,this.thumbnailImages=t,this.size=i,this.textureLoader=new bs,this.mesh=new rt}fadeIn(e=1e3){let t=this.getMaterials();if(!(Array.isArray(t)&&t.length>0))return void(this.visible=!0);t.forEach((e=>e.opacity=0));let i=1/(e/10);this.visible=!0,this.clearFading(),this.renderOrder+=1,this.fadingInInterval=setInterval((()=>{let e=1,r=this.getMaterials();this.materialEquals(t,r)||(t=r),t.length>0&&(e=Math.min(t[0].opacity+i,1),t.forEach((t=>t.opacity=e))),e>=1&&this.clearFading()}),10)}materialEquals(e,t){return PCe.default.isEqualWith(e,t,((e,t)=>{if(!Array.isArray(e)||!Array.isArray(t))return e.id===t.id}))}fadeOut(e=1e3){let t=this.getMaterials(),i=1/(e/10),r=1/(e/10);this.clearFading(),this.scale.set(2,2,2),this.fadingOutInterval=setInterval((()=>{let e=this.scale.x+r;this.scale.set(e,e,e);let n=0;t.length>0&&(n=Math.max(t[0].opacity-i,0),t.forEach((e=>e.opacity=n))),(n<=0||e>=3)&&this.clearFading()}),10)}clearFading(){let e=this.getMaterials();this.fadingInInterval&&(clearInterval(this.fadingInInterval),this.fadingInInterval=void 0,this.visible=!0,e.forEach((e=>e.opacity=1)),this.renderOrder-=1),this.fadingOutInterval&&(clearInterval(this.fadingOutInterval),this.fadingOutInterval=void 0,this.visible=!1,e.forEach((e=>e.opacity=1)),this.scale.set(1,1,1))}getMaterials(){let e=this.thumbnailMesh;e||(e=this.mesh);let t=[];return Array.isArray(e.material)?t.push(...e.material):e.material&&t.push(e.material),t}create(){}createThumbnailMesh(e){return ht(this,null,(function*(){if(!this.thumbnailImages||6!=this.thumbnailImages.length)return;this.thumbnailMesh=new rt(new eo(e,e,e)),this.thumbnailMesh.geometry.scale(1,1,-1);let t=(yield this.loadTexturesAsync(this.thumbnailImages)).map((e=>new lr({map:e,side:tn,transparent:!0})));this.thumbnailMesh&&(this.thumbnailMesh.material=t,this.add(this.thumbnailMesh))}))}loadTextures(e){return e.map((e=>this.textureLoader.load(e)))}loadTexturesAsync(e){return ht(this,null,(function*(){let t=e.map((e=>this.textureLoader.loadAsync(e)));return yield Promise.all(t)}))}destroyMesh(e){var t;this.remove(e),e.clear(),e.geometry.dispose(),Array.isArray(e.material)?e.material.forEach((e=>{var t;null==(t=e.map)||t.dispose(),e.dispose()})):(null==(t=e.material.map)||t.dispose(),e.material.dispose())}destroy(){this.clearFading(),this.images=[],this.mesh&&(this.mesh instanceof rt?this.destroyMesh(this.mesh):this.mesh.traverse((e=>{e instanceof rt&&this.destroyMesh(e)})),this.mesh=void 0)}},V3=class extends dm{constructor(e,t,i=200){if(super(e,t,i),6!==e.length)throw new Error(`[VRCube] Wrong number of images! Expected 6, got ${e.length}`)}create(){return ht(this,null,(function*(){yield this.createThumbnailMesh(this.size+.1),this.thumbnailMesh?this.createMesh():yield this.createMesh()}))}createMesh(){return ht(this,null,(function*(){let e=this.mesh;e.geometry=new eo(this.size,this.size,this.size),e.geometry.scale(1,1,-1);let t=(yield this.loadTexturesAsync(this.images)).map((e=>new lr({map:e,side:tn,transparent:!0})));e.material=t,this.add(e),this.thumbnailMesh&&(this.destroyMesh(this.thumbnailMesh),this.thumbnailMesh=void 0,this.thumbnailImages=void 0)}))}},z3=class extends dm{constructor(e,t,i=200){if(super(e,t,i),24!==e.length)throw new Error(`[VRCube24Faces] Wrong number of images! Expected 24, got ${e.length}`);this.ratio=1,this.subPlaneWidth0=this.size*(this.ratio/(this.ratio+1)),this.subPlaneWidth1=this.size-this.subPlaneWidth0}create(){return ht(this,null,(function*(){yield this.createThumbnailMesh(this.size+.1),this.thumbnailMesh?this.createMesh():yield this.createMesh()}))}createMesh(){return ht(this,null,(function*(){var e;this.mesh=new ur,this.mesh.scale.set(1,1,-1);let t=(yield this.loadTexturesAsync(this.images)).map((e=>new lr({map:e,side:zn,transparent:!0})));if(24!==t.length)throw new Error(`[VRCube24Faces] Wrong number of materials! Expected 24, got ${t.length}`);let i=this.createPlaneOfAFace(t.slice(0,4));i.rotateOnAxis(new A(0,1,0),-Math.PI/2),i.position.set(this.size/2,0,0);let r=this.createPlaneOfAFace(t.slice(4,8));r.rotateOnAxis(new A(0,1,0),Math.PI/2),r.position.set(-this.size/2,0,0);let n=this.createPlaneOfAFace(t.slice(8,12));n.rotateOnAxis(new A(1,0,0),-Math.PI/2),n.rotateOnAxis(new A(0,0,1),Math.PI),n.rotateOnAxis(new A(1,0,0),Math.PI),n.position.set(0,this.size/2,0);let s=this.createPlaneOfAFace(t.slice(12,16));s.rotateOnAxis(new A(1,0,0),Math.PI/2),s.rotateOnAxis(new A(0,0,1),Math.PI),s.rotateOnAxis(new A(1,0,0),Math.PI),s.position.set(0,-this.size/2,0);let a=this.createPlaneOfAFace(t.slice(16,20));a.rotateOnAxis(new A(0,1,0),Math.PI),a.position.set(0,0,this.size/2),this.createPlaneOfAFace(t.slice(20,24)).position.set(0,0,-this.size/2),this.add(this.mesh),this.thumbnailMesh&&(this.destroyMesh(this.thumbnailMesh),this.remove(this.thumbnailMesh),null==(e=this.thumbnailMesh)||e.clear(),this.thumbnailMesh=void 0)}))}createPlaneOfAFace(e){var t;let i=new ur,r=new ts(this.subPlaneWidth0,this.subPlaneWidth0),n=new ts(this.subPlaneWidth1,this.subPlaneWidth0),s=new ts(this.subPlaneWidth0,this.subPlaneWidth1),a=new ts(this.subPlaneWidth1,this.subPlaneWidth1),o=new rt(r,e[0]),l=new rt(n,e[1]),h=new rt(s,e[2]),u=new rt(a,e[3]);return o.position.set(this.subPlaneWidth1/2,this.subPlaneWidth1/2,0),l.position.set(-this.subPlaneWidth0/2,this.subPlaneWidth1/2,0),h.position.set(this.subPlaneWidth1/2,-this.subPlaneWidth0/2,0),u.position.set(-this.subPlaneWidth0/2,-this.subPlaneWidth0/2,0),o.geometry.scale(-1,1,1),l.geometry.scale(-1,1,1),h.geometry.scale(-1,1,1),u.geometry.scale(-1,1,1),i.add(o,l,h,u),null==(t=this.mesh)||t.add(i),i}},j3=class extends dm{constructor(e,t,i=100){if(super(e,t,i),1!==e.length)throw new Error(`[VRSphere] Wrong number of images! Expected 1, got ${e.length}`)}create(){return ht(this,null,(function*(){yield this.createThumbnailMesh(this.size+.1),this.thumbnailMesh?this.createMesh():yield this.createMesh()}))}createMesh(){return ht(this,null,(function*(){var e;let t=this.mesh;t.geometry=new ro(this.size,100,100),t.geometry.scale(-1,1,1);let i=(yield this.loadTexturesAsync(this.images)).map((e=>new lr({map:e,side:tn,transparent:!0})));t.material=i[0],this.add(t),this.thumbnailMesh&&(this.destroyMesh(this.thumbnailMesh),this.remove(this.thumbnailMesh),null==(e=this.thumbnailMesh)||e.clear(),this.thumbnailMesh=void 0)}))}},NCe=class extends rm{constructor(e,t){super(e),this.name="BaseViewer",this.minFov=50,this.maxFov=95,this.raycaster=new Oc,this.autoRotate=!0,this.events=[],this.lastFrameExecuteTime=Date.now(),this.maxFps=60,this.isMousePressing=!1,this.settings=cT,this.jobCount=0,this.viewpoints=[],this.previousViewpointId="",this.previousPanoramaId="",this.activeViewpointId="",this.activePanoramaId="",this.viewpointAssetsMap=new Map,this.loadingPanos=[],this.onResize=()=>{var e;let t=null==(e=this.renderer)?void 0:e.domElement;t&&t.parentElement&&this.resize(t.parentElement.clientWidth,t.parentElement.clientHeight)},this.onMouseWheel=e=>{let t=e.wheelDelta>0?-5:5;this.updateFov(t)},this.viewerCfg=e,this.cameraCfg=t||{eye:[0,0,0],look:[0,0,0]},this.settings=cT,this.cameraCfg.near&&(this.settings.camera.near=this.cameraCfg.near),this.cameraCfg.far&&(this.settings.camera.far=this.cameraCfg.far),this.setSpinnerVisibility(++this.jobCount>0),this.init(),this.animate(),this.setSpinnerVisibility(--this.jobCount>0)}init(){let e=this.viewerCfg;this.initSpinner(),this.initScene(),this.initRenderer(),this.initCamera(),this.initControls(),this.initLights(),this.initEvents(),this.initOthers(),!0===e.enableAxisGizmo&&(this.axes=this.initAxes()),e.enableToolbar&&(this.toolbar=this.initToolbar()),e.enableBottomBar&&(this.bottomBar=this.initBottomBar())}initScene(){let e=new Nn;e.background=new je(16777215),e.matrixAutoUpdate=!0,this.scene=e}initRenderer(){var e,t;this.renderer=new Ol({antialias:!1,preserveDrawingBuffer:!1}),this.renderer.setPixelRatio(window.devicePixelRatio),this.renderer.setSize(this.width,this.height),this.css2dRenderer=new _f,this.css2dRenderer.setSize(this.width,this.height),this.css2dRenderer.domElement.style.height="0",this.css2dRenderer.domElement.style.width="0",null==(e=this.viewerContainer)||e.appendChild(this.renderer.domElement),null==(t=this.viewerContainer)||t.appendChild(this.css2dRenderer.domElement)}initCamera(){this.scene&&(this.camera=new Vr(75,this.width/this.height,this.settings.camera.near,this.settings.camera.far),this.scene.add(this.camera))}initControls(){if(!this.renderer||!this.camera)return;let e=this.camera,t=this.viewerCfg,i=new EO(e,this.renderer.domElement,!0);i.enabled=!0,i.autoRotate=this.autoRotate,i.autoRotateSpeed=t.autoRotateSpeed||-2,i.enablePan=!1,i.enableZoom=!1,i.enableRotate=!0,i.rotateSpeed=.3,i.minPolarAngle=.05*Math.PI,i.maxPolarAngle=.95*Math.PI,i.listenToKeyEvents(document.body),i.update(),this.controls=i,this.controlsHelper=new rA(e,i),this.controls.controlsHelper=this.controlsHelper,this.autoRotate&&this.controlsHelper.delayAutoRotate(),this.controlsHelper.automaticallyAdjustCameraPosition=!1,this.controls.addEventListener("end",(()=>{this.handleDragEnd&&this.handleDragEnd()}));let r=new A(0,0,0),n=new A(10,0,0);this.setCameraPositionAndDirection(r,n)}onKeyDown(e){return t=>{var i,r;let n=e.camera,s=e.controls;!n||!s||(("ArrowLeft"===t.code||"ArrowRight"===t.code||"ArrowUp"===t.code||"ArrowDown"===t.code)&&(null==(i=this.controlsHelper)||i.startToRotate(t)),null==(r=this.controlsHelper)||r.delayAutoRotate())}}initLights(){if(!this.scene)return;let e=new Ks(16777215,.3);e.position.set(-2,2,4),this.scene.add(e)}initEvents(){let e=this.renderer,t=this.camera;if(!e||!t)return;let i=!1,r=-1,n=-1;this.addEvent(window,"keydown",this.onKeyDown(this)),this.addEvent(window,"resize",this.onResize),this.addEvent(window,"mousewheel",this.onMouseWheel),this.addEvent(window,"pointerdown",(t=>{var s;r=t.x,n=t.y,i=!1,this.isMousePressing=!0,this.autoRotate&&(null==(s=this.controlsHelper)||s.delayAutoRotate()),t.button===rC.LEFT&&t.target instanceof HTMLCanvasElement&&(e.domElement.style.cursor="move")})),this.addEvent(window,"pointermove",(e=>{r>=0&&n>=0&&(Math.abs(e.x-r)>5||Math.abs(e.y-n)>5)&&(i=!0)})),this.addEvent(window,"pointerup",(r=>{var n,s;if(this.isMousePressing=!1,this.autoRotate&&(null==(n=this.controlsHelper)||n.delayAutoRotate()),e.domElement.style.cursor="auto",!i&&r.button===rC.LEFT)if(r.target&&r.target instanceof HTMLDivElement){let e=wf.tryFindObjectId(r.target);if(e){let t=null==(s=this.scene)?void 0:s.getObjectById(e);if(t){let e=t.userData.hotpoint;e&&(ne.info("[VRViewer] Clicked on hotpoint: ",e.hotpointId||e),this.onHotpointClicked&&this.onHotpointClicked(e))}}}else{let e=this.getIntersection(r);if(e){let i=e=>_t.vectorToString(e),r=e.point,n=r.clone().sub(t.position).normalize();ne.info(`[VRViewer] Clicked at: ${i(r)},\n Camera position: ${i(t.position)},\n Target direction: ${i(n)}`)}}}))}initSpinner(){var e;let t=document.createElement("div");t.classList.add("spinner");let i=document.createElement("div");i.classList.add(uo,"icon-loading"),t.append(i),null==(e=this.widgetContainer)||e.appendChild(t),this.spinner=t,this.setSpinnerVisibility(this.jobCount>0)}initOthers(){!this.controls||!this.renderer||!this.camera||(this.renderer.domElement.style.outlineWidth="0")}initAxes(){var e;let t=document.createElement("div");t.classList.add("axesRenderer");let i=new Sf(t,this.camera);return null==(e=this.widgetContainer)||e.append(t),i}initToolbar(){let e=this.viewerCfg;return new Eh(this,Br(Br({},RDe),e.toolbarMenuConfig),[["SceneClear"]])}initBottomBar(){return new lm(this)}animate(){var e,t,i;if(requestAnimationFrame(this.animate.bind(this)),this.maxFps>0){let e=Date.now()-this.lastFrameExecuteTime;if(e<1e3/this.maxFps)return;if(this.lastFrameExecuteTime=Date.now(),this.autoRotate){let t=this.controlsHelper;t&&t.autoRotateRemainingTime>0&&!this.isMousePressing&&(t.autoRotateRemainingTime-=e,t.autoRotateRemainingTime<=0&&this.controls&&t.startAutoRotate())}}this.controls.update(),this.scene&&this.camera&&(null==(e=this.renderer)||e.render(this.scene,this.camera),null==(t=this.css2dRenderer)||t.render(this.scene,this.camera),null==(i=this.css3dRenderer)||i.render(this.scene,this.camera))}clearAllCachedPanoramas(){this.handleCameraUpdateInterval(),this.loadingPanos.forEach((e=>{e.creationPromise&&(e.creationPromise.cancel(),e.creationPromise=void 0)})),this.viewpointAssetsMap.forEach((e=>{var t;let i=e.panoramas;for(let e=i.length-1;e>=0;--e){let r=i[e];r.box.destroy(),null==(t=this.scene)||t.remove(r.box)}})),this.loadingPanos=[],this.viewpointAssetsMap.clear(),this.activePanoramaId="",this.activePanoramaId="",this.previousViewpointId="",this.previousPanoramaId=""}destroy(){var e,t,i,r;this.events.forEach((e=>e.node.removeEventListener(e.type,e.func))),this.events=[],this.clearAllCachedPanoramas(),this.css2dRenderer&&(null==(e=this.viewerContainer)||e.removeChild(this.css2dRenderer.domElement)),null==(t=this.spinner)||t.remove(),null==(i=this.axes)||i.dispose(),null==(r=this.toolbar)||r.destroy(),super.destroy()}updateFov(e){var t;let i=this.camera;if(!i)return;let r=this.minFov,n=this.maxFov,s=e=>{let t=i.fov+e;t=Math.min(t,n),t=Math.max(t,r),i.fov!==t&&(i.fov=t,i.updateProjectionMatrix())},a=e/20;for(let e=0;e<20;++e)setTimeout((()=>s(a)),5*e);this.autoRotate&&(null==(t=this.controlsHelper)||t.delayAutoRotate())}setMinAndMaxFov(e,t){let i=this.controls;i&&(this.minFov=e,this.maxFov=t,i.minFov=e,i.maxFov=t)}resize(e,t){var i,r,n;let s=this.camera;s&&(this.width=e||window.innerWidth,this.height=t||window.innerHeight,s.aspect=this.width/this.height,s.updateProjectionMatrix(),null==(i=this.renderer)||i.setSize(this.width,this.height),null==(r=this.css2dRenderer)||r.setSize(this.width,this.height),null==(n=this.css3dRenderer)||n.setSize(this.width,this.height))}enableAutoRotate(e){this.controls&&(this.autoRotate=e,this.controls.autoRotate=e)}setAutoRotateSpeed(e=1){this.controls&&(this.controls.autoRotateSpeed=e)}setCameraFov(e=75){let t=this.camera;t&&(t.fov=e,t.updateProjectionMatrix())}setSpinnerVisibility(e){this.spinner&&(e?this.spinner.classList.remove("hidden"):this.spinner.classList.add("hidden"))}addEvent(e,t,i){e.addEventListener(t,i),this.events.push({node:e,type:t,func:i})}setCameraPositionAndDirection(e,t,i){let r,n,s=this.camera,a=this.controls;if(!s||!a)return;r=t?Array.isArray(t)?new A(t[0],t[1],t[2]):new A(t.x,t.y,t.z):a.target.clone().sub(s.position),r.normalize(),n=Array.isArray(e)?new A(e[0],e[1],e[2]):new A(e.x,e.y,e.z);let o=n.clone().addScaledVector(r,.01);this.fianlCameraPosition=n,this.finalCameraTarget=o;let l=(e,t)=>{s.position.set(e.x,e.y,e.z),a.target.set(t.x,t.y,t.z),a.update()};if(!1===i)return this.cameraUpdateInterval&&clearInterval(this.cameraUpdateInterval),void l(n,o);let h=s.position.clone(),u=a.target.clone(),c=500,p=Date.now();this.cameraUpdateInterval&&clearInterval(this.cameraUpdateInterval),this.cameraUpdateInterval=setInterval((()=>{let e=Date.now()-p;e>c&&(e=c);let t=(e,t,i)=>{let r=e.x+(t.x-e.x)*i,n=e.y+(t.y-e.y)*i,s=e.z+(t.z-e.z)*i;return new A(r,n,s)},i=t(h,n,e/c),r=t(u,o,e/c);l(i,r),e>=c&&(clearInterval(this.cameraUpdateInterval),this.cameraUpdateInterval=void 0)}),10)}getCameraPositionAndDirection(){let e=this.camera;if(!e)return;let t=e.position,i=new A;return e.getWorldDirection(i),{position:{x:t.x,y:t.y,z:t.z},direction:{x:i.x,y:i.y,z:i.z}}}getCameraFov(){let e=this.camera;if(e)return e.fov}setViewpoints(e){this.handleCameraUpdateInterval(),this.viewpointAssetsMap.size>0&&(this.viewpointAssetsMap.forEach((e=>{let t=e.panoramas,i=e.css2dObjects;t.forEach((e=>{var t;e.box.destroy(),null==(t=this.scene)||t.remove(e.box)})),i.forEach((e=>{var t;null==(t=this.scene)||t.remove(e)}))})),this.viewpointAssetsMap.clear()),this.loadingPanos.forEach((e=>{e.creationPromise&&(e.creationPromise.cancel(),e.creationPromise=void 0)})),this.loadingPanos=[],this.previousViewpointId="",this.previousPanoramaId="",this.activeViewpointId="",this.activePanoramaId="",this.viewpoints=e}addPanorama(e,t){let i=this.viewpoints.find((t=>t.id===e));if(!i)throw new Error(`[VRViewer] Failed to find viewpoint by id '${e}'`);i.panoramas||(i.panoramas=[]),i.panoramas.push(t)}findPanorama(e,t){let i=this.viewpoints.find((t=>t.id===e));if(i&&i.panoramas)return i.panoramas.find((e=>e.id===t))}setHotpointsVisibility(e,t="",i=[]){if(!this.viewpoints)return;let r=t=>{var r;let n=this.viewpointAssetsMap.get(t.id),s=(null==n?void 0:n.css2dObjects)||[];null==(r=t.hotpoints)||r.forEach((r=>{if(i&&i.length>0){if(-1===i.findIndex((e=>e===r.hotpointId)))return;if(r.visible=e,this.activeViewpointId===t.id){let t=s.find((e=>e.userData.hotpoint.hotpointId===r.hotpointId));t&&(t.visible=e)}}else r.visible=e,this.activeViewpointId===t.id&&s.forEach((t=>t.visible=e))}))};if(t){let e=this.viewpoints.find((e=>e.id===t));e&&r(e)}else this.viewpoints.forEach((e=>r(e)))}addHotpoints(e){if(!this.activeViewpointId||!e)return;let t=this.viewpoints.find((e=>e.id===this.activeViewpointId)),i=this.viewpointAssetsMap.get(this.activeViewpointId);!t||!i||(t.hotpoints||(t.hotpoints=[]),e.forEach((e=>{var r,n;if(-1!==(null==(r=t.hotpoints)?void 0:r.findIndex((t=>t.hotpointId===e.hotpointId))))return void ne.warn(`[VRViewer] Duplicated hotpointId: ${e.hotpointId}`);let s=t.position||[0,0,0],a=e.anchorPosition,o=wf.createHotpoint(e.html),l=new A(a[0],a[1],a[2]),h=new A(s[0],s[1],s[2]);this.relocateAnchorIfTooCloseToCamera(o,l,h),o.visible=!1!==e.visible,o.userData.hotpoint=e,i.css2dObjects.push(o),null==(n=this.scene)||n.add(o),t.hotpoints.push(e)})))}removeHotpoints(e){if(!this.activeViewpointId||!e)return;let t=this.viewpoints.find((e=>e.id===this.activeViewpointId)),i=this.viewpointAssetsMap.get(this.activeViewpointId);!t||!i||e.forEach((e=>{var r,n;if(t.hotpoints)for(let i=t.hotpoints.length-1;i>=0;--i)e===t.hotpoints[i].hotpointId&&t.hotpoints.splice(i,1);for(let t=i.css2dObjects.length-1;t>=0;--t){let s=i.css2dObjects[t];e===(null==(r=s.userData.hotpoint)?void 0:r.hotpointId)&&(i.css2dObjects.splice(t,1),null==(n=this.scene)||n.remove(s))}}))}activeViewpointById(e,t,i,r){this.activatePanoramaById(e,"",!0,t,i,r)}activatePanoramaById(e,t,i=!0,r,n,s){if(e===this.activeViewpointId&&t===this.activePanoramaId)return;let a=this.viewpoints.find((t=>t.id===e));a&&this.activatePanorama(a,t,i,r,n,s)}removeCachedPanoramas(){this.viewpointAssetsMap.forEach(((e,t)=>{var i;let r=e.panoramas;for(let e=r.length-1;e>=0;--e){let n=r[e];if(t===this.activeViewpointId&&n.id===this.activePanoramaId||t===this.previousViewpointId&&n.id===this.previousPanoramaId)return;n.box.destroy(),null==(i=this.scene)||i.remove(n.box),r.splice(e,1)}}))}unlimitControlsAndShowAssets(e=!1){if(this.controls){let e=this.controls;e.enablePan=!0,e.enableZoom=!0}this.viewpointAssetsMap.forEach((t=>{t.panoramas.forEach((e=>{e.box.visible=!0})),e&&t.css2dObjects.forEach((e=>{e.visible=!0}))}))}relocateAnchorIfTooCloseToCamera(e,t,i){let r=this.camera;if(!r)return ne.error("[VRViewer] Camera is not initialized"),void e.position.set(t.x,t.y,t.z);let n,s=Math.abs(t.distanceTo(i));if(s{let r=e.panoramas.find((e=>e.id===t)),n=null==r?void 0:r.box;n&&(i?this.fadeIn(n):this.fadeOut(n))},u=(e,t)=>{e.css2dObjects.forEach((e=>{t?!1!==e.userData.hotpoint.visible&&(e.visible=t):e.visible=t}))},c=()=>{var t;let n=new A(0,0,0),s=new A(1,0,0),a=null==(t=this.getCameraPositionAndDirection())?void 0:t.direction;a&&s.set(a.x,a.y,a.z);let o=e.position;if(o&&3===o.length&&n.set(o[0],o[1],o[2]),i){let t=e.initialDirection;t&&3===t.length&&s.set(t[0],t[1],t[2])}this.setCameraPositionAndDirection(n,s,r)};!t&&(null==(a=e.panoramas)?void 0:a.length)>0&&(t=e.panoramas[0].id||""),this.handleCameraUpdateInterval();let p=this.viewpointAssetsMap.get(this.activeViewpointId),d=this.viewpointAssetsMap.get(e.id);if(this.activeViewpointId&&p&&(this.activeViewpointId!==e.id&&u(p,!1),h(p,this.activePanoramaId,!1)),d&&d.panoramas.find((e=>e.id===t)))return h(d,t,!0),this.activeViewpointId!==e.id&&u(d,!0),this.activeViewpointId!==e.id&&c(),this.activeViewpointId=e.id,this.activePanoramaId=t,void(n&&n(e));this.previousViewpointId=this.activeViewpointId,this.previousPanoramaId=this.activePanoramaId,this.activeViewpointId=e.id,this.activePanoramaId=t;try{if(this.loadingPanos.some((i=>i.viewpointId===e.id&&i.panoramaId===t)))return void ne.warn(`[VRViewer] Panorama with viewpointId=${e.id} and panoramaId=${t} is being created`);let i=new OC(this.createBoxByImageOrImages(e,t));this.loadingPanos.push({viewpointId:e.id,panoramaId:t,creationPromise:i});let r=yield i.promise;this.loadingPanos=this.loadingPanos.filter((i=>i.viewpointId!==e.id||i.panoramaId!==t));let s=e.position;s&&3===s.length&&r.position.set(s[0],s[1],s[2]),this.activeViewpointId===e.id&&this.activePanoramaId===t?(this.fadeIn(r),null==(o=this.scene)||o.add(r),c()):(r.visible=!1,null==(l=this.scene)||l.add(r));let a={id:t,box:r},h=this.viewpointAssetsMap.get(e.id);if(h)h.panoramas.push(a),u(h,!0);else{let i=[];e.hotpoints&&e.hotpoints.forEach((n=>{let s=n.anchorPosition,a=wf.createHotpoint(n.html);a.visible=!1!==n.visible,a.userData.hotpoint=n;let o=new A(s[0],s[1],s[2]);this.relocateAnchorIfTooCloseToCamera(a,o,r.position),(this.activeViewpointId!==e.id||this.activePanoramaId!==t)&&(a.visible=!1),i.push(a)}));let n={panoramas:[a],css2dObjects:i};this.viewpointAssetsMap.set(e.id,n),i.forEach((e=>{var t;return null==(t=this.scene)?void 0:t.add(e)}))}n&&n(e)}catch(e){"cancel"!==e.type&&s&&s(e)}}))}createBoxByImageOrImages(e,t){var i;let r=e.imageOrImages,n=e.thumbnailImages;if((null==(i=e.panoramas)?void 0:i.length)>0){let i=this.findPanorama(e.id,t);i||(i=e.panoramas[0],ne.warn(`[VRViewer] Failed to find panorama by id '${t}', will use the first one`)),r=i.images,n=i.thumbnails}if(!r)throw new Error("[VRViewer] Invalid images!");if(Array.isArray(r)||(r=[r]),1===r.length)return this.createBoxByImage(r,n);if(6===r.length)return this.createBoxBy6Images(r,n);if(24===r.length)return this.createBoxBy24Images(r,n);throw new Error(`[VRViewer] Wrong number of images! Expected 1/6/24, got ${r.length}`)}createBoxByImage(e,t){return ht(this,null,(function*(){let i=new j3(e,t);return yield i.create(),i}))}createBoxBy6Images(e,t){return ht(this,null,(function*(){if(6!==e.length)throw new Error(`[VRCube] Wrong number of images! Expected 6, got ${e.length}`);let i=new V3(e,t);return yield i.create(),i}))}createBoxBy24Images(e,t){return ht(this,null,(function*(){if(24!==e.length)throw new Error(`[VRCube] Wrong number of images! Expected 24, got ${e.length}`);let i=new z3(e,t);return yield i.create(),i}))}getIntersection(e){if(!this.camera||!this.scene)return;let t=this.viewpointAssetsMap.get(this.activeViewpointId);if(!t)return;let i=t.panoramas.find((e=>e.id===this.activePanoramaId));if(!i)return;let r=i.box,n=this.viewerContainer,s=new le;e&&(s=Ai.getScreenPointByEvent(e,n));let a=Ai.screenPoint2NdcPoint(s,this.camera,n);this.raycaster.setFromCamera(a,this.camera);let o=[r],l=this.raycaster.intersectObjects(o,!0)||[];return l.length>0?l.find((e=>{let t=e.object;return t.visible&&t instanceof rt})):void 0}fadeIn(e,t=500){e.fadeIn(t)}fadeOut(e,t=1e3){e.fadeOut(t)}handleCameraUpdateInterval(){if(this.cameraUpdateInterval){clearInterval(this.cameraUpdateInterval);let e=this.fianlCameraPosition,t=this.finalCameraTarget;if(e&&t&&this.controls&&this.camera){this.camera.position.set(e.x,e.y,e.z);let i=this.controls;i.target.set(t.x,t.y,t.z),i.update()}this.cameraUpdateInterval=void 0}this.fianlCameraPosition=void 0,this.finalCameraTarget=void 0}getHitResult(e){let t={location:null};if(!this.camera)return t;let i=this.getIntersection(e);return t.location=i?{x:i.point.x,y:i.point.y,z:i.point.z}:null,t}lookToPosition(e){var t;if(!this.camera)return;this.handleCameraUpdateInterval();let i=new A(e[0],e[1],e[2]).clone().sub(this.camera.position);null==(t=this.controlsHelper)||t.lookTo(i)}};export{Rqt as AXIS_SECTION_PLANE_CONTROL_ID,wqt as AXIS_SECTION_PLANE_ID,jO as AngleMeasurement,V8 as AnnotationTable,WO as AreaMeasurement,XB as ArrowMarkup,GO as AxisPlaneSection,SDe as AxisType,D8 as BYBLOCK,QA as BYLAYER,tu as BaseMeasurement,sm as BaseSection,ch as BaseTable,dm as BaseVRMesh,rm as BaseViewer,RCe as BimViewer,Of as BinaryReader,R0 as BitView,Qf as BoxSelectHelper,wf as CSS2DObjectUtils,$l as CameraControlsEx,OC as CancelablePromise,wr as CanvasRender,$B as CircleMarkup,kp as CloudLineMarkup,KB as CloudRectMarkup,_t as CommonUtils,P0 as CompareDrawable,rA as ControlsHelper,oT as CoordinateAxes,Sf as CoordinateAxesViewport,Ai as CoordinateConversionUtils,qO as CoordinateMeasurement,jx as CreateEdgesGeometryWorker,wDe as DEFAULT_BIMVIEWER_TOOLBAR_CONFIG,DDe as DEFAULT_BIM_VIEWER_CONFIG,MDe as DEFAULT_DXFVIEWER_TOOLBAR_CONFIG,hpe as DEFAULT_LABEL_FONT_SIZE,Jvt as DEFAULT_LINE_WIDTH,EDe as DEFAULT_MARKUP_TOOLBAR_CONFIG,uO as DEFAULT_SIZE,RDe as DEFAULT_VRVIEWER_TOOLBAR_CONFIG,xi as DeviceUtils,YO as DistanceMeasurement,ZB as DotMarkup,Aa as Drawable,Xu as DrawableList,L8 as DxfChangeType,qn as DxfCompare,yDe as DxfCompareMarkupManager,QT as DxfDataTable,Er as DxfLoader,I0 as DxfParser,mMe as DxfRenderOrder,CCe as DxfViewer,Sqt as ENTER_KEY,_qt as ESC_KEY,JB as EllipseMarkup,Cs as Event,Jx as Exploder,jg as ExportUtils,uh as FontDataTable,HC as FpsUtils,Mpe as GROUND_PLANE_RENDER_ORDER,TDe as GROUP_CONFIG,BC as GenerateMeshBvhWorker,kt as GeometryUtils,Js as GroundUtils,uo as ICON_FONT_CLASS,k_ as IUploader,ss as IndexedDbManager,M0 as InputManager,iA as InstantiateHelper,xqt as KEYDOWN_EVENT,Iqt as KEYUP_EVENT,C2t as Keys,oO as LinePatternShaders,$c as LoadingHelper,CDe as LocalDxfUploader,ADe as LocalImageUploader,$O as LocalModelUploader,AB as MOUSEDOWN_EVENT,Mf as MOUSEMOVE_EVENT,CB as MOUSEUP_EVENT,N_ as MarkupManager,BO as MarkupToolbar,Yo as MarkupType,As as MaterialUtils,ar as MathUtils,ru as MeasurementManager,Ql as MeasurementType,UO as MenuTypeEnums,Yi as MergeUtils,tE as MeshBvhHelper,ZO as NavCube,JO as NavCubeViewport,E0 as NestCompareTypes,DO as OSnapHelper,N2t as OSnapType,XMe as ObjectPixelSizeHelper,ei as ObjectUtils,QO as ObjectsBoxSection,UC as Offset,OMe as Orientation,e3 as PickPlaneSection,Cf as PolygonUtils,QB as PolylineMarkup,dT as RafHelper,ek as RectMarkup,Cqt as SECTION_BOX_ID,Dqt as SECTION_PLANE_CONTROL_ID,Mqt as SECTION_PLANE_ID,OB as SECTION_PLANE_NAME,GMe as SHP,TO as SHPLoader,vO as SHPParser,rAr as SIMPLE_BIM_VIEWER_CONFIG,cpe as SNAP_ICON_COLOR,upe as SNAP_ICON_SIZE,D2t as STATE,epe as SVGObject,lT as SVGObjectUtils,tpe as SVGRenderer,Tn as SceneUtils,t3 as SectionManager,hT as SectionType,Yu as SectionUtils,yO as ShpThree,Yc as ShxFont,w0 as ShxFontLoader,S0 as ShxFontType,OCe as SimplifiedBimViewer,Qx as SimplifyUtils,qo as SkyboxUtils,rl as SnapDrawable,ppe as SnapType,tk as TextMarkup,Nc as TextureUtils,Eh as Toolbar,dG as ToolbarMenu,L_ as ToolbarMenuId,cE as UndoRedoHelper,k8 as Units,EO as VRControls,V3 as VRCube,z3 as VRCube24Faces,j3 as VRSphere,NCe as VRViewer,xs as Viewer3DUtils,Af as ViewerEvent,TLt as ViewerMode,pE as ViewerName,z8 as ViewpointTable,YB as Views,U3 as WebCam,rk as XMarkup,dE as ZoomToRectHelper,B8 as bspline,AMe as checkIsNewVersion,Cpe as cn,MMe as createHatchPatternShaderMaterial,p2t as decodeDxfTextCharacterCodes,f2t as decodeDxfTextMbcsCharacterCodes,d2t as decodeDxfTextUnicodeCodePoints,Dpe as en,YYt as getLengthValueByUnit,eI as getUnitStr,g2t as getVersionFromLocalStorage,qu as layerForNonSnapableObjects,Wn as layerForUnselectableObjects,ne as log,yn as matrixAutoUpdate,lO as parseDxfMTextContent,cO as parseDxfTextContent,H8 as round10,bqt as sceneAutoUpdate,LC as setIcon,lpe as setLogLevel,v2t as setVersionToLocalStorage,Wu as showPrecisionValue,ude as unitConversionByMeter,cTt as unitLabel,G8 as unitScaleConversion,DMe as unitScaleToMeter}; \ No newline at end of file +var sLe=Object.create,l1=Object.defineProperty,aLe=Object.defineProperties,oLe=Object.getOwnPropertyDescriptor,lLe=Object.getOwnPropertyDescriptors,cLe=Object.getOwnPropertyNames,$7=Object.getOwnPropertySymbols,K7=Object.getPrototypeOf,J7=Object.prototype.hasOwnProperty,uLe=Object.prototype.propertyIsEnumerable,hLe=Reflect.get,Wh=Math.pow,Z7=(e,t,i)=>t in e?l1(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i,Br=(e,t)=>{for(var i in t||(t={}))J7.call(t,i)&&Z7(e,i,t[i]);if($7)for(var i of $7(t))uLe.call(t,i)&&Z7(e,i,t[i]);return e},Cn=(e,t)=>aLe(e,lLe(t)),n2=(e=>"undefined"!=typeof require?require:"undefined"!=typeof Proxy?new Proxy(e,{get:(e,t)=>("undefined"!=typeof require?require:e)[t]}):e)((function(e){if("undefined"!=typeof require)return require.apply(this,arguments);throw new Error('Dynamic require of "'+e+'" is not supported')})),pLe=(e,t)=>()=>(e&&(t=e(e=0)),t),z=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),tw=(e,t)=>{for(var i in t)l1(e,i,{get:t[i],enumerable:!0})},Q7=(e,t,i,r)=>{if(t&&"object"==typeof t||"function"==typeof t)for(let n of cLe(t))!J7.call(e,n)&&n!==i&&l1(e,n,{get:()=>t[n],enumerable:!(r=oLe(t,n))||r.enumerable});return e},kn=(e,t,i)=>(i=null!=e?sLe(K7(e)):{},Q7(!t&&e&&e.__esModule?i:l1(i,"default",{value:e,enumerable:!0}),e)),dLe=e=>Q7(l1({},"__esModule",{value:!0}),e),e9=(e,t,i)=>hLe(K7(e),i,t),ht=(e,t,i)=>new Promise(((r,n)=>{var s=e=>{try{o(i.next(e))}catch(e){n(e)}},a=e=>{try{o(i.throw(e))}catch(e){n(e)}},o=e=>e.done?r(e.value):Promise.resolve(e.value).then(s,a);o((i=i.apply(e,t)).next())})),i9={};function rw(e){return(rw="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})(e)}function mLe(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function t9(e,t){for(var i=0;i1&&void 0!==arguments[1]?arguments[1]:{};mLe(this,s),this._locale=n(i),this._select=t(this._locale),this._type=TLe(r.type),this._nf=new e("en",r)}return gLe(s,[{key:"resolvedOptions",value:function(){var e=this._nf.resolvedOptions(),t=e.minimumIntegerDigits,r=e.minimumFractionDigits,n=e.maximumFractionDigits,s=e.minimumSignificantDigits,a=e.maximumSignificantDigits,o={locale:this._locale,minimumIntegerDigits:t,minimumFractionDigits:r,maximumFractionDigits:n,pluralCategories:i(this._locale,"ordinal"===this._type),type:this._type};return"number"==typeof s&&(o.minimumSignificantDigits=s,o.maximumSignificantDigits=a),o}},{key:"select",value:function(e){if(!(this instanceof s))throw new TypeError("select() called on incompatible ".concat(this));if("number"!=typeof e&&(e=Number(e)),!isFinite(e))return"other";var t=this._nf.format(Math.abs(e));return this._select(t,"ordinal"===this._type)}}],[{key:"supportedLocalesOf",value:function(e){return r9(e).filter(r)}}]),s}();return Object.defineProperty(s,"prototype",{writable:!1}),s}tw(i9,{default:()=>ELe});var vLe,r9,yLe,TLe,n9=pLe((()=>{vLe=function(e){return e.split("-").every((function(e){return/[a-z0-9]+/i.test(e)}))},r9=function(e){if(!e)return[];Array.isArray(e)||(e=[e]);for(var t={},i=0;i{"use strict";function i(e,t){for(var i=0;i="0"&&n<="9"&&++i}return ithis._maxSD?e.toPrecision(this._maxSD):t}return this._minFD>0?e.toFixed(this._minFD):0===this._maxFD?e.toFixed(0):String(e)}}]),e}();t.exports=r})),m9=z(((e,t)=>{"use strict";var i=(n9(),dLe(i9)),r=o9();function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var s=n(i),a=n(r);function o(e){return(o="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})(e)}"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self&&self;function l(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var h,u,c,p,d,f,m,g,y={exports:{}};h=y,c=function(e,t){return t?"other":1==e?"one":"other"},p=function(e,t){return t?"other":0==e||1==e?"one":"other"},d=function(e,t){return t?"other":e>=0&&e<=1?"one":"other"},f=function(e,t){var i=!String(e).split(".")[1];return t?"other":1==e&&i?"one":"other"},g=function(e,t){return t?"other":1==e?"one":2==e?"two":"other"},u={_in:m=function(e,t){return"other"},af:c,ak:p,am:d,an:c,ar:function(e,t){var i=String(e).split("."),r=Number(i[0])==e&&i[0].slice(-2);return t?"other":0==e?"zero":1==e?"one":2==e?"two":r>=3&&r<=10?"few":r>=11&&r<=99?"many":"other"},ars:function(e,t){var i=String(e).split("."),r=Number(i[0])==e&&i[0].slice(-2);return t?"other":0==e?"zero":1==e?"one":2==e?"two":r>=3&&r<=10?"few":r>=11&&r<=99?"many":"other"},as:function(e,t){return t?1==e||5==e||7==e||8==e||9==e||10==e?"one":2==e||3==e?"two":4==e?"few":6==e?"many":"other":e>=0&&e<=1?"one":"other"},asa:c,ast:f,az:function(e,t){var i=String(e).split(".")[0],r=i.slice(-1),n=i.slice(-2),s=i.slice(-3);return t?1==r||2==r||5==r||7==r||8==r||20==n||50==n||70==n||80==n?"one":3==r||4==r||100==s||200==s||300==s||400==s||500==s||600==s||700==s||800==s||900==s?"few":0==i||6==r||40==n||60==n||90==n?"many":"other":1==e?"one":"other"},be:function(e,t){var i=String(e).split("."),r=Number(i[0])==e,n=r&&i[0].slice(-1),s=r&&i[0].slice(-2);return t?2!=n&&3!=n||12==s||13==s?"other":"few":1==n&&11!=s?"one":n>=2&&n<=4&&(s<12||s>14)?"few":r&&0==n||n>=5&&n<=9||s>=11&&s<=14?"many":"other"},bem:c,bez:c,bg:c,bho:p,bm:m,bn:function(e,t){return t?1==e||5==e||7==e||8==e||9==e||10==e?"one":2==e||3==e?"two":4==e?"few":6==e?"many":"other":e>=0&&e<=1?"one":"other"},bo:m,br:function(e,t){var i=String(e).split("."),r=Number(i[0])==e,n=r&&i[0].slice(-1),s=r&&i[0].slice(-2),a=r&&i[0].slice(-6);return t?"other":1==n&&11!=s&&71!=s&&91!=s?"one":2==n&&12!=s&&72!=s&&92!=s?"two":(3==n||4==n||9==n)&&(s<10||s>19)&&(s<70||s>79)&&(s<90||s>99)?"few":0!=e&&r&&0==a?"many":"other"},brx:c,bs:function(e,t){var i=String(e).split("."),r=i[0],n=i[1]||"",s=!i[1],a=r.slice(-1),o=r.slice(-2),l=n.slice(-1),h=n.slice(-2);return t?"other":s&&1==a&&11!=o||1==l&&11!=h?"one":s&&a>=2&&a<=4&&(o<12||o>14)||l>=2&&l<=4&&(h<12||h>14)?"few":"other"},ca:function(e,t){var i=!String(e).split(".")[1];return t?1==e||3==e?"one":2==e?"two":4==e?"few":"other":1==e&&i?"one":"other"},ce:c,ceb:function(e,t){var i=String(e).split("."),r=i[0],n=i[1]||"",s=!i[1],a=r.slice(-1),o=n.slice(-1);return t?"other":s&&(1==r||2==r||3==r)||s&&4!=a&&6!=a&&9!=a||!s&&4!=o&&6!=o&&9!=o?"one":"other"},cgg:c,chr:c,ckb:c,cs:function(e,t){var i=String(e).split("."),r=i[0],n=!i[1];return t?"other":1==e&&n?"one":r>=2&&r<=4&&n?"few":n?"other":"many"},cy:function(e,t){return t?0==e||7==e||8==e||9==e?"zero":1==e?"one":2==e?"two":3==e||4==e?"few":5==e||6==e?"many":"other":0==e?"zero":1==e?"one":2==e?"two":3==e?"few":6==e?"many":"other"},da:function(e,t){var i=String(e).split("."),r=i[0],n=Number(i[0])==e;return t||1!=e&&(n||0!=r&&1!=r)?"other":"one"},de:f,doi:d,dsb:function(e,t){var i=String(e).split("."),r=i[0],n=i[1]||"",s=!i[1],a=r.slice(-2),o=n.slice(-2);return t?"other":s&&1==a||1==o?"one":s&&2==a||2==o?"two":s&&(3==a||4==a)||3==o||4==o?"few":"other"},dv:c,dz:m,ee:c,el:c,en:function(e,t){var i=String(e).split("."),r=!i[1],n=Number(i[0])==e,s=n&&i[0].slice(-1),a=n&&i[0].slice(-2);return t?1==s&&11!=a?"one":2==s&&12!=a?"two":3==s&&13!=a?"few":"other":1==e&&r?"one":"other"},eo:c,es:c,et:f,eu:c,fa:d,ff:function(e,t){return t?"other":e>=0&&e<2?"one":"other"},fi:f,fil:function(e,t){var i=String(e).split("."),r=i[0],n=i[1]||"",s=!i[1],a=r.slice(-1),o=n.slice(-1);return t?1==e?"one":"other":s&&(1==r||2==r||3==r)||s&&4!=a&&6!=a&&9!=a||!s&&4!=o&&6!=o&&9!=o?"one":"other"},fo:c,fr:function(e,t){var i=String(e).split("."),r=i[0],n=!i[1],s=r.slice(-6);return t?1==e?"one":"other":e>=0&&e<2?"one":0!=r&&0==s&&n?"many":"other"},fur:c,fy:f,ga:function(e,t){var i=String(e).split("."),r=Number(i[0])==e;return t?1==e?"one":"other":1==e?"one":2==e?"two":r&&e>=3&&e<=6?"few":r&&e>=7&&e<=10?"many":"other"},gd:function(e,t){var i=String(e).split("."),r=Number(i[0])==e;return t?1==e||11==e?"one":2==e||12==e?"two":3==e||13==e?"few":"other":1==e||11==e?"one":2==e||12==e?"two":r&&e>=3&&e<=10||r&&e>=13&&e<=19?"few":"other"},gl:f,gsw:c,gu:function(e,t){return t?1==e?"one":2==e||3==e?"two":4==e?"few":6==e?"many":"other":e>=0&&e<=1?"one":"other"},guw:p,gv:function(e,t){var i=String(e).split("."),r=i[0],n=!i[1],s=r.slice(-1),a=r.slice(-2);return t?"other":n&&1==s?"one":n&&2==s?"two":!n||0!=a&&20!=a&&40!=a&&60!=a&&80!=a?n?"other":"many":"few"},ha:c,haw:c,he:function(e,t){var i=String(e).split("."),r=i[0],n=!i[1],s=Number(i[0])==e,a=s&&i[0].slice(-1);return t?"other":1==e&&n?"one":2==r&&n?"two":n&&(e<0||e>10)&&s&&0==a?"many":"other"},hi:function(e,t){return t?1==e?"one":2==e||3==e?"two":4==e?"few":6==e?"many":"other":e>=0&&e<=1?"one":"other"},hr:function(e,t){var i=String(e).split("."),r=i[0],n=i[1]||"",s=!i[1],a=r.slice(-1),o=r.slice(-2),l=n.slice(-1),h=n.slice(-2);return t?"other":s&&1==a&&11!=o||1==l&&11!=h?"one":s&&a>=2&&a<=4&&(o<12||o>14)||l>=2&&l<=4&&(h<12||h>14)?"few":"other"},hsb:function(e,t){var i=String(e).split("."),r=i[0],n=i[1]||"",s=!i[1],a=r.slice(-2),o=n.slice(-2);return t?"other":s&&1==a||1==o?"one":s&&2==a||2==o?"two":s&&(3==a||4==a)||3==o||4==o?"few":"other"},hu:function(e,t){return t?1==e||5==e?"one":"other":1==e?"one":"other"},hy:function(e,t){return t?1==e?"one":"other":e>=0&&e<2?"one":"other"},ia:f,id:m,ig:m,ii:m,io:f,is:function(e,t){var i=String(e).split("."),r=i[0],n=Number(i[0])==e,s=r.slice(-1),a=r.slice(-2);return t?"other":n&&1==s&&11!=a||!n?"one":"other"},it:function(e,t){var i=!String(e).split(".")[1];return t?11==e||8==e||80==e||800==e?"many":"other":1==e&&i?"one":"other"},iu:g,iw:function(e,t){var i=String(e).split("."),r=i[0],n=!i[1],s=Number(i[0])==e,a=s&&i[0].slice(-1);return t?"other":1==e&&n?"one":2==r&&n?"two":n&&(e<0||e>10)&&s&&0==a?"many":"other"},ja:m,jbo:m,jgo:c,ji:f,jmc:c,jv:m,jw:m,ka:function(e,t){var i=String(e).split(".")[0],r=i.slice(-2);return t?1==i?"one":0==i||r>=2&&r<=20||40==r||60==r||80==r?"many":"other":1==e?"one":"other"},kab:function(e,t){return t?"other":e>=0&&e<2?"one":"other"},kaj:c,kcg:c,kde:m,kea:m,kk:function(e,t){var i=String(e).split("."),r=Number(i[0])==e,n=r&&i[0].slice(-1);return t?6==n||9==n||r&&0==n&&0!=e?"many":"other":1==e?"one":"other"},kkj:c,kl:c,km:m,kn:d,ko:m,ks:c,ksb:c,ksh:function(e,t){return t?"other":0==e?"zero":1==e?"one":"other"},ku:c,kw:function(e,t){var i=String(e).split("."),r=Number(i[0])==e,n=r&&i[0].slice(-2),s=r&&i[0].slice(-3),a=r&&i[0].slice(-5),o=r&&i[0].slice(-6);return t?r&&e>=1&&e<=4||n>=1&&n<=4||n>=21&&n<=24||n>=41&&n<=44||n>=61&&n<=64||n>=81&&n<=84?"one":5==e||5==n?"many":"other":0==e?"zero":1==e?"one":2==n||22==n||42==n||62==n||82==n||r&&0==s&&(a>=1e3&&a<=2e4||4e4==a||6e4==a||8e4==a)||0!=e&&1e5==o?"two":3==n||23==n||43==n||63==n||83==n?"few":1==e||1!=n&&21!=n&&41!=n&&61!=n&&81!=n?"other":"many"},ky:c,lag:function(e,t){var i=String(e).split(".")[0];return t?"other":0==e?"zero":0!=i&&1!=i||0==e?"other":"one"},lb:c,lg:c,lij:function(e,t){var i=String(e).split("."),r=!i[1],n=Number(i[0])==e;return t?11==e||8==e||n&&e>=80&&e<=89||n&&e>=800&&e<=899?"many":"other":1==e&&r?"one":"other"},lkt:m,ln:p,lo:function(e,t){return t&&1==e?"one":"other"},lt:function(e,t){var i=String(e).split("."),r=i[1]||"",n=Number(i[0])==e,s=n&&i[0].slice(-1),a=n&&i[0].slice(-2);return t?"other":1==s&&(a<11||a>19)?"one":s>=2&&s<=9&&(a<11||a>19)?"few":0!=r?"many":"other"},lv:function(e,t){var i=String(e).split("."),r=i[1]||"",n=r.length,s=Number(i[0])==e,a=s&&i[0].slice(-1),o=s&&i[0].slice(-2),l=r.slice(-2),h=r.slice(-1);return t?"other":s&&0==a||o>=11&&o<=19||2==n&&l>=11&&l<=19?"zero":1==a&&11!=o||2==n&&1==h&&11!=l||2!=n&&1==h?"one":"other"},mas:c,mg:p,mgo:c,mk:function(e,t){var i=String(e).split("."),r=i[0],n=i[1]||"",s=!i[1],a=r.slice(-1),o=r.slice(-2),l=n.slice(-1),h=n.slice(-2);return t?1==a&&11!=o?"one":2==a&&12!=o?"two":7!=a&&8!=a||17==o||18==o?"other":"many":s&&1==a&&11!=o||1==l&&11!=h?"one":"other"},ml:c,mn:c,mo:function(e,t){var i=String(e).split("."),r=!i[1],n=Number(i[0])==e&&i[0].slice(-2);return t?1==e?"one":"other":1==e&&r?"one":!r||0==e||n>=2&&n<=19?"few":"other"},mr:function(e,t){return t?1==e?"one":2==e||3==e?"two":4==e?"few":"other":1==e?"one":"other"},ms:function(e,t){return t&&1==e?"one":"other"},mt:function(e,t){var i=String(e).split("."),r=Number(i[0])==e&&i[0].slice(-2);return t?"other":1==e?"one":0==e||r>=2&&r<=10?"few":r>=11&&r<=19?"many":"other"},my:m,nah:c,naq:g,nb:c,nd:c,ne:function(e,t){var i=String(e).split("."),r=Number(i[0])==e;return t?r&&e>=1&&e<=4?"one":"other":1==e?"one":"other"},nl:f,nn:c,nnh:c,no:c,nqo:m,nr:c,nso:p,ny:c,nyn:c,om:c,or:function(e,t){var i=String(e).split("."),r=Number(i[0])==e;return t?1==e||5==e||r&&e>=7&&e<=9?"one":2==e||3==e?"two":4==e?"few":6==e?"many":"other":1==e?"one":"other"},os:c,osa:m,pa:p,pap:c,pcm:d,pl:function(e,t){var i=String(e).split("."),r=i[0],n=!i[1],s=r.slice(-1),a=r.slice(-2);return t?"other":1==e&&n?"one":n&&s>=2&&s<=4&&(a<12||a>14)?"few":n&&1!=r&&(0==s||1==s)||n&&s>=5&&s<=9||n&&a>=12&&a<=14?"many":"other"},prg:function(e,t){var i=String(e).split("."),r=i[1]||"",n=r.length,s=Number(i[0])==e,a=s&&i[0].slice(-1),o=s&&i[0].slice(-2),l=r.slice(-2),h=r.slice(-1);return t?"other":s&&0==a||o>=11&&o<=19||2==n&&l>=11&&l<=19?"zero":1==a&&11!=o||2==n&&1==h&&11!=l||2!=n&&1==h?"one":"other"},ps:c,pt:function(e,t){var i=String(e).split(".")[0];return t?"other":0==i||1==i?"one":"other"},pt_PT:f,rm:c,ro:function(e,t){var i=String(e).split("."),r=!i[1],n=Number(i[0])==e&&i[0].slice(-2);return t?1==e?"one":"other":1==e&&r?"one":!r||0==e||n>=2&&n<=19?"few":"other"},rof:c,root:m,ru:function(e,t){var i=String(e).split("."),r=i[0],n=!i[1],s=r.slice(-1),a=r.slice(-2);return t?"other":n&&1==s&&11!=a?"one":n&&s>=2&&s<=4&&(a<12||a>14)?"few":n&&0==s||n&&s>=5&&s<=9||n&&a>=11&&a<=14?"many":"other"},rwk:c,sah:m,saq:c,sat:g,sc:function(e,t){var i=!String(e).split(".")[1];return t?11==e||8==e||80==e||800==e?"many":"other":1==e&&i?"one":"other"},scn:function(e,t){var i=!String(e).split(".")[1];return t?11==e||8==e||80==e||800==e?"many":"other":1==e&&i?"one":"other"},sd:c,sdh:c,se:g,seh:c,ses:m,sg:m,sh:function(e,t){var i=String(e).split("."),r=i[0],n=i[1]||"",s=!i[1],a=r.slice(-1),o=r.slice(-2),l=n.slice(-1),h=n.slice(-2);return t?"other":s&&1==a&&11!=o||1==l&&11!=h?"one":s&&a>=2&&a<=4&&(o<12||o>14)||l>=2&&l<=4&&(h<12||h>14)?"few":"other"},shi:function(e,t){var i=String(e).split("."),r=Number(i[0])==e;return t?"other":e>=0&&e<=1?"one":r&&e>=2&&e<=10?"few":"other"},si:function(e,t){var i=String(e).split("."),r=i[0],n=i[1]||"";return t?"other":0==e||1==e||0==r&&1==n?"one":"other"},sk:function(e,t){var i=String(e).split("."),r=i[0],n=!i[1];return t?"other":1==e&&n?"one":r>=2&&r<=4&&n?"few":n?"other":"many"},sl:function(e,t){var i=String(e).split("."),r=i[0],n=!i[1],s=r.slice(-2);return t?"other":n&&1==s?"one":n&&2==s?"two":n&&(3==s||4==s)||!n?"few":"other"},sma:g,smi:g,smj:g,smn:g,sms:g,sn:c,so:c,sq:function(e,t){var i=String(e).split("."),r=Number(i[0])==e,n=r&&i[0].slice(-1),s=r&&i[0].slice(-2);return t?1==e?"one":4==n&&14!=s?"many":"other":1==e?"one":"other"},sr:function(e,t){var i=String(e).split("."),r=i[0],n=i[1]||"",s=!i[1],a=r.slice(-1),o=r.slice(-2),l=n.slice(-1),h=n.slice(-2);return t?"other":s&&1==a&&11!=o||1==l&&11!=h?"one":s&&a>=2&&a<=4&&(o<12||o>14)||l>=2&&l<=4&&(h<12||h>14)?"few":"other"},ss:c,ssy:c,st:c,su:m,sv:function(e,t){var i=String(e).split("."),r=!i[1],n=Number(i[0])==e,s=n&&i[0].slice(-1),a=n&&i[0].slice(-2);return t?1!=s&&2!=s||11==a||12==a?"other":"one":1==e&&r?"one":"other"},sw:f,syr:c,ta:c,te:c,teo:c,th:m,ti:p,tig:c,tk:function(e,t){var i=String(e).split("."),r=Number(i[0])==e&&i[0].slice(-1);return t?6==r||9==r||10==e?"few":"other":1==e?"one":"other"},tl:function(e,t){var i=String(e).split("."),r=i[0],n=i[1]||"",s=!i[1],a=r.slice(-1),o=n.slice(-1);return t?1==e?"one":"other":s&&(1==r||2==r||3==r)||s&&4!=a&&6!=a&&9!=a||!s&&4!=o&&6!=o&&9!=o?"one":"other"},tn:c,to:m,tr:c,ts:c,tzm:function(e,t){var i=String(e).split("."),r=Number(i[0])==e;return t?"other":0==e||1==e||r&&e>=11&&e<=99?"one":"other"},ug:c,uk:function(e,t){var i=String(e).split("."),r=i[0],n=!i[1],s=Number(i[0])==e,a=s&&i[0].slice(-1),o=s&&i[0].slice(-2),l=r.slice(-1),h=r.slice(-2);return t?3==a&&13!=o?"few":"other":n&&1==l&&11!=h?"one":n&&l>=2&&l<=4&&(h<12||h>14)?"few":n&&0==l||n&&l>=5&&l<=9||n&&h>=11&&h<=14?"many":"other"},ur:f,uz:c,ve:c,vi:function(e,t){return t&&1==e?"one":"other"},vo:c,vun:c,wa:p,wae:c,wo:m,xh:c,xog:c,yi:f,yo:m,yue:m,zh:m,zu:d},Object.defineProperty(u,"__esModule",{value:!0}),h.exports=u;var v=l(y.exports),T=Object.freeze(Object.assign(Object.create(null),y.exports,{default:v})),x={exports:{}};!function(e,t){var i,r="zero",n="one",s="two",a="few",o="many",l="other",h={cardinal:[n,l],ordinal:[l]},u={cardinal:[l],ordinal:[l]},c={cardinal:[n,a,o,l],ordinal:[l]},p={cardinal:[n,l],ordinal:[n,l]},d={cardinal:[n,s,l],ordinal:[l]};i={_in:u,af:h,ak:h,am:h,an:h,ar:{cardinal:[r,n,s,a,o,l],ordinal:[l]},ars:{cardinal:[r,n,s,a,o,l],ordinal:[l]},as:{cardinal:[n,l],ordinal:[n,s,a,o,l]},asa:h,ast:h,az:{cardinal:[n,l],ordinal:[n,a,o,l]},be:{cardinal:[n,a,o,l],ordinal:[a,l]},bem:h,bez:h,bg:h,bho:h,bm:u,bn:{cardinal:[n,l],ordinal:[n,s,a,o,l]},bo:u,br:{cardinal:[n,s,a,o,l],ordinal:[l]},brx:h,bs:{cardinal:[n,a,l],ordinal:[l]},ca:{cardinal:[n,l],ordinal:[n,s,a,l]},ce:h,ceb:h,cgg:h,chr:h,ckb:h,cs:c,cy:{cardinal:[r,n,s,a,o,l],ordinal:[r,n,s,a,o,l]},da:h,de:h,doi:h,dsb:{cardinal:[n,s,a,l],ordinal:[l]},dv:h,dz:u,ee:h,el:h,en:{cardinal:[n,l],ordinal:[n,s,a,l]},eo:h,es:h,et:h,eu:h,fa:h,ff:h,fi:h,fil:p,fo:h,fr:{cardinal:[n,o,l],ordinal:[n,l]},fur:h,fy:h,ga:{cardinal:[n,s,a,o,l],ordinal:[n,l]},gd:{cardinal:[n,s,a,l],ordinal:[n,s,a,l]},gl:h,gsw:h,gu:{cardinal:[n,l],ordinal:[n,s,a,o,l]},guw:h,gv:{cardinal:[n,s,a,o,l],ordinal:[l]},ha:h,haw:h,he:{cardinal:[n,s,o,l],ordinal:[l]},hi:{cardinal:[n,l],ordinal:[n,s,a,o,l]},hr:{cardinal:[n,a,l],ordinal:[l]},hsb:{cardinal:[n,s,a,l],ordinal:[l]},hu:p,hy:p,ia:h,id:u,ig:u,ii:u,io:h,is:h,it:{cardinal:[n,l],ordinal:[o,l]},iu:d,iw:{cardinal:[n,s,o,l],ordinal:[l]},ja:u,jbo:u,jgo:h,ji:h,jmc:h,jv:u,jw:u,ka:{cardinal:[n,l],ordinal:[n,o,l]},kab:h,kaj:h,kcg:h,kde:u,kea:u,kk:{cardinal:[n,l],ordinal:[o,l]},kkj:h,kl:h,km:u,kn:h,ko:u,ks:h,ksb:h,ksh:{cardinal:[r,n,l],ordinal:[l]},ku:h,kw:{cardinal:[r,n,s,a,o,l],ordinal:[n,o,l]},ky:h,lag:{cardinal:[r,n,l],ordinal:[l]},lb:h,lg:h,lij:{cardinal:[n,l],ordinal:[o,l]},lkt:u,ln:h,lo:{cardinal:[l],ordinal:[n,l]},lt:c,lv:{cardinal:[r,n,l],ordinal:[l]},mas:h,mg:h,mgo:h,mk:{cardinal:[n,l],ordinal:[n,s,o,l]},ml:h,mn:h,mo:{cardinal:[n,a,l],ordinal:[n,l]},mr:{cardinal:[n,l],ordinal:[n,s,a,l]},ms:{cardinal:[l],ordinal:[n,l]},mt:c,my:u,nah:h,naq:d,nb:h,nd:h,ne:p,nl:h,nn:h,nnh:h,no:h,nqo:u,nr:h,nso:h,ny:h,nyn:h,om:h,or:{cardinal:[n,l],ordinal:[n,s,a,o,l]},os:h,osa:u,pa:h,pap:h,pcm:h,pl:c,prg:{cardinal:[r,n,l],ordinal:[l]},ps:h,pt:h,pt_PT:h,rm:h,ro:{cardinal:[n,a,l],ordinal:[n,l]},rof:h,root:u,ru:c,rwk:h,sah:u,saq:h,sat:d,sc:{cardinal:[n,l],ordinal:[o,l]},scn:{cardinal:[n,l],ordinal:[o,l]},sd:h,sdh:h,se:d,seh:h,ses:u,sg:u,sh:{cardinal:[n,a,l],ordinal:[l]},shi:{cardinal:[n,a,l],ordinal:[l]},si:h,sk:c,sl:{cardinal:[n,s,a,l],ordinal:[l]},sma:d,smi:d,smj:d,smn:d,sms:d,sn:h,so:h,sq:{cardinal:[n,l],ordinal:[n,o,l]},sr:{cardinal:[n,a,l],ordinal:[l]},ss:h,ssy:h,st:h,su:u,sv:p,sw:h,syr:h,ta:h,te:h,teo:h,th:u,ti:h,tig:h,tk:{cardinal:[n,l],ordinal:[a,l]},tl:p,tn:h,to:u,tr:h,ts:h,tzm:h,ug:h,uk:{cardinal:[n,a,o,l],ordinal:[a,l]},ur:h,uz:h,ve:h,vi:{cardinal:[l],ordinal:[n,l]},vo:h,vun:h,wa:h,wae:h,wo:u,xh:h,xog:h,yi:h,yo:u,yue:u,zh:u,zu:h},Object.defineProperty(i,"__esModule",{value:!0}),e.exports=i}(x);var b=l(x.exports),_=Object.freeze(Object.assign(Object.create(null),x.exports,{default:b})),E=v||T,w=b||_,S="object"===("undefined"==typeof Intl?"undefined":o(Intl))&&Intl.NumberFormat||a.default,I=function(e){return"in"===e?"_in":"pt-PT"===e?"pt_PT":e},M=s.default(S,(function(e){return E[I(e)]}),(function(e,t){return w[I(e)][t?"ordinal":"cardinal"]}));t.exports=M})),y9=z((e=>{"use strict";var t=m9();var i,r,n=(i=t)&&"object"==typeof i&&"default"in i?i:{default:i};"undefined"==typeof Intl?("undefined"!=typeof global?global.Intl={PluralRules:n.default}:"undefined"!=typeof window?window.Intl={PluralRules:n.default}:e.Intl={PluralRules:n.default},n.default.polyfill=!0):Intl.PluralRules?(r=["en","es","ru","zh"],Intl.PluralRules.supportedLocalesOf(r).length{var i=function(e){return e&&e.Math==Math&&e};t.exports=i("object"==typeof globalThis&&globalThis)||i("object"==typeof window&&window)||i("object"==typeof self&&self)||i("object"==typeof global&&global)||function(){return this}()||Function("return this")()})),Mt=z(((e,t)=>{t.exports=function(e){try{return!!e()}catch(e){return!0}}})),Rr=z(((e,t)=>{var i=Mt();t.exports=!i((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))})),iv=z(((e,t)=>{var i=Mt();t.exports=!i((function(){var e=function(){}.bind();return"function"!=typeof e||e.hasOwnProperty("prototype")}))})),Jr=z(((e,t)=>{var i=iv(),r=Function.prototype.call;t.exports=i?r.bind(r):function(){return r.apply(r,arguments)}})),c1=z((e=>{"use strict";var t={}.propertyIsEnumerable,i=Object.getOwnPropertyDescriptor,r=i&&!t.call({1:2},1);e.f=r?function(e){var t=i(this,e);return!!t&&t.enumerable}:t})),Ao=z(((e,t)=>{t.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}})),Nt=z(((e,t)=>{var i=iv(),r=Function.prototype,n=r.call,s=i&&r.bind.bind(n,n);t.exports=i?s:function(e){return function(){return n.apply(e,arguments)}}})),Xs=z(((e,t)=>{var i=Nt(),r=i({}.toString),n=i("".slice);t.exports=function(e){return n(r(e),8,-1)}})),_m=z(((e,t)=>{var i=Nt(),r=Mt(),n=Xs(),s=Object,a=i("".split);t.exports=r((function(){return!s("z").propertyIsEnumerable(0)}))?function(e){return"String"==n(e)?a(e,""):s(e)}:s})),ba=z(((e,t)=>{t.exports=function(e){return null==e}})),hs=z(((e,t)=>{var i=ba(),r=TypeError;t.exports=function(e){if(i(e))throw r("Can't call method on "+e);return e}})),vs=z(((e,t)=>{var i=_m(),r=hs();t.exports=function(e){return i(r(e))}})),h2=z(((e,t)=>{var i="object"==typeof document&&document.all,r=void 0===i&&void 0!==i;t.exports={all:i,IS_HTMLDDA:r}})),mi=z(((e,t)=>{var i=h2(),r=i.all;t.exports=i.IS_HTMLDDA?function(e){return"function"==typeof e||e===r}:function(e){return"function"==typeof e}})),gi=z(((e,t)=>{var i=mi(),r=h2(),n=r.all;t.exports=r.IS_HTMLDDA?function(e){return"object"==typeof e?null!==e:i(e)||e===n}:function(e){return"object"==typeof e?null!==e:i(e)}})),Sn=z(((e,t)=>{var i=Qt(),r=mi(),n=function(e){return r(e)?e:void 0};t.exports=function(e,t){return arguments.length<2?n(i[e]):i[e]&&i[e][t]}})),Oo=z(((e,t)=>{var i=Nt();t.exports=i({}.isPrototypeOf)})),Iu=z(((e,t)=>{t.exports="undefined"!=typeof navigator&&String(navigator.userAgent)||""})),_u=z(((e,t)=>{var i,r,n=Qt(),s=Iu(),a=n.process,o=n.Deno,l=a&&a.versions||o&&o.version,h=l&&l.v8;h&&(r=(i=h.split("."))[0]>0&&i[0]<4?1:+(i[0]+i[1])),!r&&s&&((!(i=s.match(/Edge\/(\d+)/))||i[1]>=74)&&((i=s.match(/Chrome\/(\d+)/))&&(r=+i[1]))),t.exports=r})),Sm=z(((e,t)=>{var i=_u(),r=Mt();t.exports=!!Object.getOwnPropertySymbols&&!r((function(){var e=Symbol();return!String(e)||!(Object(e)instanceof Symbol)||!Symbol.sham&&i&&i<41}))})),f2=z(((e,t)=>{var i=Sm();t.exports=i&&!Symbol.sham&&"symbol"==typeof Symbol.iterator})),Cd=z(((e,t)=>{var i=Sn(),r=mi(),n=Oo(),s=f2(),a=Object;t.exports=s?function(e){return"symbol"==typeof e}:function(e){var t=i("Symbol");return r(t)&&n(t.prototype,a(e))}})),Ad=z(((e,t)=>{var i=String;t.exports=function(e){try{return i(e)}catch(e){return"Object"}}})),Gn=z(((e,t)=>{var i=mi(),r=Ad(),n=TypeError;t.exports=function(e){if(i(e))return e;throw n(r(e)+" is not a function")}})),Su=z(((e,t)=>{var i=Gn(),r=ba();t.exports=function(e,t){var n=e[t];return r(n)?void 0:i(n)}})),y2=z(((e,t)=>{var i=Jr(),r=mi(),n=gi(),s=TypeError;t.exports=function(e,t){var a,o;if("string"===t&&r(a=e.toString)&&!n(o=i(a,e))||r(a=e.valueOf)&&!n(o=i(a,e))||"string"!==t&&r(a=e.toString)&&!n(o=i(a,e)))return o;throw s("Can't convert object to primitive value")}})),Vn=z(((e,t)=>{t.exports=!1})),ow=z(((e,t)=>{var i=Qt(),r=Object.defineProperty;t.exports=function(e,t){try{r(i,e,{value:t,configurable:!0,writable:!0})}catch(r){i[e]=t}return t}})),lw=z(((e,t)=>{var i=Qt(),r=ow(),n="__core-js_shared__",s=i[n]||r(n,{});t.exports=s})),wm=z(((e,t)=>{var i=Vn(),r=lw();(t.exports=function(e,t){return r[e]||(r[e]=void 0!==t?t:{})})("versions",[]).push({version:"3.29.0",mode:i?"pure":"global",copyright:"© 2014-2023 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.29.0/LICENSE",source:"https://github.com/zloirock/core-js"})})),Hi=z(((e,t)=>{var i=hs(),r=Object;t.exports=function(e){return r(i(e))}})),wi=z(((e,t)=>{var i=Nt(),r=Hi(),n=i({}.hasOwnProperty);t.exports=Object.hasOwn||function(e,t){return n(r(e),t)}})),Rm=z(((e,t)=>{var i=Nt(),r=0,n=Math.random(),s=i(1..toString);t.exports=function(e){return"Symbol("+(void 0===e?"":e)+")_"+s(++r+n,36)}})),vi=z(((e,t)=>{var i=Qt(),r=wm(),n=wi(),s=Rm(),a=Sm(),o=f2(),l=i.Symbol,h=r("wks"),u=o?l.for||l:l&&l.withoutSetter||s;t.exports=function(e){return n(h,e)||(h[e]=a&&n(l,e)?l[e]:u("Symbol."+e)),h[e]}})),u1=z(((e,t)=>{var i=Jr(),r=gi(),n=Cd(),s=Su(),a=y2(),o=vi(),l=TypeError,h=o("toPrimitive");t.exports=function(e,t){if(!r(e)||n(e))return e;var o,u=s(e,h);if(u){if(void 0===t&&(t="default"),o=i(u,e,t),!r(o)||n(o))return o;throw l("Can't convert object to primitive value")}return void 0===t&&(t="number"),a(e,t)}})),qh=z(((e,t)=>{var i=u1(),r=Cd();t.exports=function(e){var t=i(e,"string");return r(t)?t:t+""}})),h1=z(((e,t)=>{var i=Qt(),r=gi(),n=i.document,s=r(n)&&r(n.createElement);t.exports=function(e){return s?n.createElement(e):{}}})),b2=z(((e,t)=>{var i=Rr(),r=Mt(),n=h1();t.exports=!i&&!r((function(){return 7!=Object.defineProperty(n("div"),"a",{get:function(){return 7}}).a}))})),ks=z((e=>{var t=Rr(),i=Jr(),r=c1(),n=Ao(),s=vs(),a=qh(),o=wi(),l=b2(),h=Object.getOwnPropertyDescriptor;e.f=t?h:function(e,t){if(e=s(e),t=a(t),l)try{return h(e,t)}catch(e){}if(o(e,t))return n(!i(r.f,e,t),e[t])}})),x2=z(((e,t)=>{var i=Rr(),r=Mt();t.exports=i&&r((function(){return 42!=Object.defineProperty((function(){}),"prototype",{value:42,writable:!1}).prototype}))})),Yr=z(((e,t)=>{var i=gi(),r=String,n=TypeError;t.exports=function(e){if(i(e))return e;throw n(r(e)+" is not an object")}})),wn=z((e=>{var t=Rr(),i=b2(),r=x2(),n=Yr(),s=qh(),a=TypeError,o=Object.defineProperty,l=Object.getOwnPropertyDescriptor,h="enumerable",u="configurable",c="writable";e.f=t?r?function(e,t,i){if(n(e),t=s(t),n(i),"function"==typeof e&&"prototype"===t&&"value"in i&&c in i&&!i[c]){var r=l(e,t);r&&r[c]&&(e[t]=i.value,i={configurable:u in i?i[u]:r[u],enumerable:h in i?i[h]:r[h],writable:!1})}return o(e,t,i)}:o:function(e,t,r){if(n(e),t=s(t),n(r),i)try{return o(e,t,r)}catch(e){}if("get"in r||"set"in r)throw a("Accessors not supported");return"value"in r&&(e[t]=r.value),e}})),$s=z(((e,t)=>{var i=Rr(),r=wn(),n=Ao();t.exports=i?function(e,t,i){return r.f(e,t,n(1,i))}:function(e,t,i){return e[t]=i,e}})),Mm=z(((e,t)=>{var i=Rr(),r=wi(),n=Function.prototype,s=i&&Object.getOwnPropertyDescriptor,a=r(n,"name"),o=a&&"something"===function(){}.name,l=a&&(!i||i&&s(n,"name").configurable);t.exports={EXISTS:a,PROPER:o,CONFIGURABLE:l}})),uw=z(((e,t)=>{var i=Nt(),r=mi(),n=lw(),s=i(Function.toString);r(n.inspectSource)||(n.inspectSource=function(e){return s(e)}),t.exports=n.inspectSource})),C2=z(((e,t)=>{var i=Qt(),r=mi(),n=i.WeakMap;t.exports=r(n)&&/native code/.test(String(n))})),p1=z(((e,t)=>{var i=wm(),r=Rm(),n=i("keys");t.exports=function(e){return n[e]||(n[e]=r(e))}})),sv=z(((e,t)=>{t.exports={}})),ps=z(((e,t)=>{var i,r,n,s,a,o=C2(),l=Qt(),h=gi(),u=$s(),c=wi(),p=lw(),d=p1(),f=sv(),m="Object already initialized",g=l.TypeError,y=l.WeakMap;o||p.state?((s=p.state||(p.state=new y)).get=s.get,s.has=s.has,s.set=s.set,i=function(e,t){if(s.has(e))throw g(m);return t.facade=e,s.set(e,t),t},r=function(e){return s.get(e)||{}},n=function(e){return s.has(e)}):(f[a=d("state")]=!0,i=function(e,t){if(c(e,a))throw g(m);return t.facade=e,u(e,a,t),t},r=function(e){return c(e,a)?e[a]:{}},n=function(e){return c(e,a)}),t.exports={set:i,get:r,has:n,enforce:function(e){return n(e)?r(e):i(e,{})},getterFor:function(e){return function(t){var i;if(!h(t)||(i=r(t)).type!==e)throw g("Incompatible receiver, "+e+" required");return i}}}})),mw=z(((e,t)=>{var i=Nt(),r=Mt(),n=mi(),s=wi(),a=Rr(),o=Mm().CONFIGURABLE,l=uw(),h=ps(),u=h.enforce,c=h.get,p=String,d=Object.defineProperty,f=i("".slice),m=i("".replace),g=i([].join),y=a&&!r((function(){return 8!==d((function(){}),"length",{value:8}).length})),v=String(String).split("String"),T=t.exports=function(e,t,i){"Symbol("===f(p(t),0,7)&&(t="["+m(p(t),/^Symbol\(([^)]*)\)/,"$1")+"]"),i&&i.getter&&(t="get "+t),i&&i.setter&&(t="set "+t),(!s(e,"name")||o&&e.name!==t)&&(a?d(e,"name",{value:t,configurable:!0}):e.name=t),y&&i&&s(i,"arity")&&e.length!==i.arity&&d(e,"length",{value:i.arity});try{i&&s(i,"constructor")&&i.constructor?a&&d(e,"prototype",{writable:!1}):e.prototype&&(e.prototype=void 0)}catch(e){}var r=u(e);return s(r,"source")||(r.source=g(v,"string"==typeof t?t:"")),e};Function.prototype.toString=T((function(){return n(this)&&c(this).source||l(this)}),"toString")})),An=z(((e,t)=>{var i=mi(),r=wn(),n=mw(),s=ow();t.exports=function(e,t,a,o){o||(o={});var l=o.enumerable,h=void 0!==o.name?o.name:t;if(i(a)&&n(a,h,o),o.global)l?e[t]=a:s(t,a);else{try{o.unsafe?e[t]&&(l=!0):delete e[t]}catch(e){}l?e[t]=a:r.f(e,t,{value:a,enumerable:!1,configurable:!o.nonConfigurable,writable:!o.nonWritable})}return e}})),F2=z(((e,t)=>{var i=Math.ceil,r=Math.floor;t.exports=Math.trunc||function(e){var t=+e;return(t>0?r:i)(t)}})),zn=z(((e,t)=>{var i=F2();t.exports=function(e){var t=+e;return t!=t||0===t?0:i(t)}})),yc=z(((e,t)=>{var i=zn(),r=Math.max,n=Math.min;t.exports=function(e,t){var s=i(e);return s<0?r(s+t,0):n(s,t)}})),$a=z(((e,t)=>{var i=zn(),r=Math.min;t.exports=function(e){return e>0?r(i(e),9007199254740991):0}})),Wi=z(((e,t)=>{var i=$a();t.exports=function(e){return i(e.length)}})),av=z(((e,t)=>{var i=vs(),r=yc(),n=Wi(),s=function(e){return function(t,s,a){var o,l=i(t),h=n(l),u=r(a,h);if(e&&s!=s){for(;h>u;)if((o=l[u++])!=o)return!0}else for(;h>u;u++)if((e||u in l)&&l[u]===s)return e||u||0;return!e&&-1}};t.exports={includes:s(!0),indexOf:s(!1)}})),U2=z(((e,t)=>{var i=Nt(),r=wi(),n=vs(),s=av().indexOf,a=sv(),o=i([].push);t.exports=function(e,t){var i,l=n(e),h=0,u=[];for(i in l)!r(a,i)&&r(l,i)&&o(u,i);for(;t.length>h;)r(l,i=t[h++])&&(~s(u,i)||o(u,i));return u}})),gw=z(((e,t)=>{t.exports=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"]})),Yh=z((e=>{var t=U2(),i=gw().concat("length","prototype");e.f=Object.getOwnPropertyNames||function(e){return t(e,i)}})),f1=z((e=>{e.f=Object.getOwnPropertySymbols})),vw=z(((e,t)=>{var i=Sn(),r=Nt(),n=Yh(),s=f1(),a=Yr(),o=r([].concat);t.exports=i("Reflect","ownKeys")||function(e){var t=n.f(a(e)),i=s.f;return i?o(t,i(e)):t}})),m1=z(((e,t)=>{var i=wi(),r=vw(),n=ks(),s=wn();t.exports=function(e,t,a){for(var o=r(t),l=s.f,h=n.f,u=0;u{var i=Mt(),r=mi(),n=/#|\.prototype\./,s=function(e,t){var n=o[a(e)];return n==h||n!=l&&(r(t)?i(t):!!t)},a=s.normalize=function(e){return String(e).replace(n,".").toLowerCase()},o=s.data={},l=s.NATIVE="N",h=s.POLYFILL="P";t.exports=s})),Le=z(((e,t)=>{var i=Qt(),r=ks().f,n=$s(),s=An(),a=ow(),o=m1(),l=ov();t.exports=function(e,t){var h,u,c,p,d,f=e.target,m=e.global,g=e.stat;if(h=m?i:g?i[f]||a(f,{}):(i[f]||{}).prototype)for(u in t){if(p=t[u],e.dontCallGetSet?c=(d=r(h,u))&&d.value:c=h[u],!l(m?u:f+(g?".":"#")+u,e.forced)&&void 0!==c){if(typeof p==typeof c)continue;o(p,c)}(e.sham||c&&c.sham)&&n(p,"sham",!0),s(h,u,p,e)}}})),yw=z(((e,t)=>{var i={};i[vi()("toStringTag")]="z",t.exports="[object z]"===String(i)})),Tc=z(((e,t)=>{var i=yw(),r=mi(),n=Xs(),s=vi()("toStringTag"),a=Object,o="Arguments"==n(function(){return arguments}());t.exports=i?n:function(e){var t,i,l;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:o?n(t):"Object"==(l=n(t))&&r(t.callee)?"Arguments":l}})),ai=z(((e,t)=>{var i=Tc(),r=String;t.exports=function(e){if("Symbol"===i(e))throw TypeError("Cannot convert a Symbol value to a string");return r(e)}})),lv=z(((e,t)=>{var i=U2(),r=gw();t.exports=Object.keys||function(e){return i(e,r)}})),Ew=z((e=>{var t=Rr(),i=x2(),r=wn(),n=Yr(),s=vs(),a=lv();e.f=t&&!i?Object.defineProperties:function(e,t){n(e);for(var i,o=s(t),l=a(t),h=l.length,u=0;h>u;)r.f(e,i=l[u++],o[i]);return e}})),k2=z(((e,t)=>{var i=Sn();t.exports=i("document","documentElement")})),Za=z(((e,t)=>{var i,r=Yr(),n=Ew(),s=gw(),a=sv(),o=k2(),l=h1(),h=p1(),u="prototype",c="script",p=h("IE_PROTO"),d=function(){},f=function(e){return"<"+c+">"+e+""},m=function(e){e.write(f("")),e.close();var t=e.parentWindow.Object;return e=null,t},g=function(){try{i=new ActiveXObject("htmlfile")}catch(e){}g="undefined"!=typeof document?document.domain&&i?m(i):function(){var e,t=l("iframe"),i="java"+c+":";return t.style.display="none",o.appendChild(t),t.src=String(i),(e=t.contentWindow.document).open(),e.write(f("document.F=Object")),e.close(),e.F}():m(i);for(var e=s.length;e--;)delete g[u][s[e]];return g()};a[p]=!0,t.exports=Object.create||function(e,t){var i;return null!==e?(d[u]=r(e),i=new d,d[u]=null,i[p]=e):i=g(),void 0===t?i:n.f(i,t)}})),wu=z(((e,t)=>{"use strict";var i=qh(),r=wn(),n=Ao();t.exports=function(e,t,s){var a=i(t);a in e?r.f(e,a,n(0,s)):e[a]=s}})),cv=z(((e,t)=>{var i=yc(),r=Wi(),n=wu(),s=Array,a=Math.max;t.exports=function(e,t,o){for(var l=r(e),h=i(t,l),u=i(void 0===o?l:o,l),c=s(a(u-h,0)),p=0;h{var i=Xs(),r=vs(),n=Yh().f,s=cv(),a="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];t.exports.f=function(e){return a&&"Window"==i(e)?function(e){try{return n(e)}catch(e){return s(a)}}(e):n(r(e))}})),Ms=z(((e,t)=>{var i=mw(),r=wn();t.exports=function(e,t,n){return n.get&&i(n.get,t,{getter:!0}),n.set&&i(n.set,t,{setter:!0}),r.f(e,t,n)}})),j2=z((e=>{var t=vi();e.f=t})),_w=z(((e,t)=>{var i=Qt();t.exports=i})),xa=z(((e,t)=>{var i=_w(),r=wi(),n=j2(),s=wn().f;t.exports=function(e){var t=i.Symbol||(i.Symbol={});r(t,e)||s(t,e,{value:n.f(e)})}})),W2=z(((e,t)=>{var i=Jr(),r=Sn(),n=vi(),s=An();t.exports=function(){var e=r("Symbol"),t=e&&e.prototype,a=t&&t.valueOf,o=n("toPrimitive");t&&!t[o]&&s(t,o,(function(e){return i(a,this)}),{arity:1})}})),Ka=z(((e,t)=>{var i=wn().f,r=wi(),n=vi()("toStringTag");t.exports=function(e,t,s){e&&!s&&(e=e.prototype),e&&!r(e,n)&&i(e,n,{configurable:!0,value:t})}})),Xh=z(((e,t)=>{var i=Xs(),r=Nt();t.exports=function(e){if("Function"===i(e))return r(e)}})),ml=z(((e,t)=>{var i=Xh(),r=Gn(),n=iv(),s=i(i.bind);t.exports=function(e,t){return r(e),void 0===t?e:n?s(e,t):function(){return e.apply(t,arguments)}}})),$h=z(((e,t)=>{var i=Xs();t.exports=Array.isArray||function(e){return"Array"==i(e)}})),Cm=z(((e,t)=>{var i=Nt(),r=Mt(),n=mi(),s=Tc(),a=Sn(),o=uw(),l=function(){},h=[],u=a("Reflect","construct"),c=/^\s*(?:class|function)\b/,p=i(c.exec),d=!c.exec(l),f=function(e){if(!n(e))return!1;try{return u(l,h,e),!0}catch(e){return!1}},m=function(e){if(!n(e))return!1;switch(s(e)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return d||!!p(c,o(e))}catch(e){return!0}};m.sham=!0,t.exports=!u||r((function(){var e;return f(f.call)||!f(Object)||!f((function(){e=!0}))||e}))?m:f})),Kj=z(((e,t)=>{var i=$h(),r=Cm(),n=gi(),s=vi()("species"),a=Array;t.exports=function(e){var t;return i(e)&&(t=e.constructor,r(t)&&(t===a||i(t.prototype))?t=void 0:n(t)&&(null===(t=t[s])&&(t=void 0))),void 0===t?a:t}})),uv=z(((e,t)=>{var i=Kj();t.exports=function(e,t){return new(i(e))(0===t?0:t)}})),Ds=z(((e,t)=>{var i=ml(),r=Nt(),n=_m(),s=Hi(),a=Wi(),o=uv(),l=r([].push),h=function(e){var t=1==e,r=2==e,h=3==e,u=4==e,c=6==e,p=7==e,d=5==e||c;return function(f,m,g,y){for(var v,T,x=s(f),b=n(x),_=i(m,g),E=a(b),w=0,S=y||o,I=t?S(f,E):r||p?S(f,0):void 0;E>w;w++)if((d||w in b)&&(T=_(v=b[w],w,x),e))if(t)I[w]=T;else if(T)switch(e){case 3:return!0;case 5:return v;case 6:return w;case 2:l(I,v)}else switch(e){case 4:return!1;case 7:l(I,v)}return c?-1:h||u?u:I}};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)}})),gW=z((()=>{"use strict";var e=Le(),t=Qt(),i=Jr(),r=Nt(),n=Vn(),s=Rr(),a=Sm(),o=Mt(),l=wi(),h=Oo(),u=Yr(),c=vs(),p=qh(),d=ai(),f=Ao(),m=Za(),g=lv(),y=Yh(),v=Iw(),T=f1(),x=ks(),b=wn(),_=Ew(),E=c1(),w=An(),S=Ms(),I=wm(),M=p1(),A=sv(),D=Rm(),O=vi(),R=j2(),C=xa(),N=W2(),P=Ka(),L=ps(),F=Ds().forEach,U=M("hidden"),k="Symbol",B="prototype",G=L.set,z=L.getterFor(k),H=Object[B],V=t.Symbol,j=V&&V[B],W=t.TypeError,Y=t.QObject,X=x.f,q=b.f,Z=v.f,K=E.f,$=r([].push),J=I("symbols"),Q=I("op-symbols"),ee=I("wks"),te=!Y||!Y[B]||!Y[B].findChild,ie=s&&o((function(){return 7!=m(q({},"a",{get:function(){return q(this,"a",{value:7}).a}})).a}))?function(e,t,i){var r=X(H,t);r&&delete H[t],q(e,t,i),r&&e!==H&&q(H,t,r)}:q,re=function(e,t){var i=J[e]=m(j);return G(i,{type:k,tag:e,description:t}),s||(i.description=t),i},ne=function(e,t,i){e===H&&ne(Q,t,i),u(e);var r=p(t);return u(i),l(J,r)?(i.enumerable?(l(e,U)&&e[U][r]&&(e[U][r]=!1),i=m(i,{enumerable:f(0,!1)})):(l(e,U)||q(e,U,f(1,{})),e[U][r]=!0),ie(e,r,i)):q(e,r,i)},se=function(e,t){u(e);var r=c(t),n=g(r).concat(he(r));return F(n,(function(t){(!s||i(ae,r,t))&&ne(e,t,r[t])})),e},ae=function(e){var t=p(e),r=i(K,this,t);return!(this===H&&l(J,t)&&!l(Q,t))&&(!(r||!l(this,t)||!l(J,t)||l(this,U)&&this[U][t])||r)},oe=function(e,t){var i=c(e),r=p(t);if(i!==H||!l(J,r)||l(Q,r)){var n=X(i,r);return n&&l(J,r)&&!(l(i,U)&&i[U][r])&&(n.enumerable=!0),n}},le=function(e){var t=Z(c(e)),i=[];return F(t,(function(e){!l(J,e)&&!l(A,e)&&$(i,e)})),i},he=function(e){var t=e===H,i=Z(t?Q:c(e)),r=[];return F(i,(function(e){l(J,e)&&(!t||l(H,e))&&$(r,J[e])})),r};a||(w(j=(V=function(){if(h(j,this))throw W("Symbol is not a constructor");var e=arguments.length&&void 0!==arguments[0]?d(arguments[0]):void 0,t=D(e),r=function(e){this===H&&i(r,Q,e),l(this,U)&&l(this[U],t)&&(this[U][t]=!1),ie(this,t,f(1,e))};return s&&te&&ie(H,t,{configurable:!0,set:r}),re(t,e)})[B],"toString",(function(){return z(this).tag})),w(V,"withoutSetter",(function(e){return re(D(e),e)})),E.f=ae,b.f=ne,_.f=se,x.f=oe,y.f=v.f=le,T.f=he,R.f=function(e){return re(O(e),e)},s&&(S(j,"description",{configurable:!0,get:function(){return z(this).description}}),n||w(H,"propertyIsEnumerable",ae,{unsafe:!0}))),e({global:!0,constructor:!0,wrap:!0,forced:!a,sham:!a},{Symbol:V}),F(g(ee),(function(e){C(e)})),e({target:k,stat:!0,forced:!a},{useSetter:function(){te=!0},useSimple:function(){te=!1}}),e({target:"Object",stat:!0,forced:!a,sham:!s},{create:function(e,t){return void 0===t?m(e):se(m(e),t)},defineProperty:ne,defineProperties:se,getOwnPropertyDescriptor:oe}),e({target:"Object",stat:!0,forced:!a},{getOwnPropertyNames:le}),N(),P(V,k),A[U]=!0})),aN=z(((e,t)=>{var i=Sm();t.exports=i&&!!Symbol.for&&!!Symbol.keyFor})),TW=z((()=>{var e=Le(),t=Sn(),i=wi(),r=ai(),n=wm(),s=aN(),a=n("string-to-symbol-registry"),o=n("symbol-to-string-registry");e({target:"Symbol",stat:!0,forced:!s},{for:function(e){var n=r(e);if(i(a,n))return a[n];var s=t("Symbol")(n);return a[n]=s,o[s]=n,s}})})),bW=z((()=>{var e=Le(),t=wi(),i=Cd(),r=Ad(),n=wm(),s=aN(),a=n("symbol-to-string-registry");e({target:"Symbol",stat:!0,forced:!s},{keyFor:function(e){if(!i(e))throw TypeError(r(e)+" is not a symbol");if(t(a,e))return a[e]}})})),Po=z(((e,t)=>{var i=iv(),r=Function.prototype,n=r.apply,s=r.call;t.exports="object"==typeof Reflect&&Reflect.apply||(i?s.bind(n):function(){return s.apply(n,arguments)})})),Pd=z(((e,t)=>{var i=Nt();t.exports=i([].slice)})),AW=z(((e,t)=>{var i=Nt(),r=$h(),n=mi(),s=Xs(),a=ai(),o=i([].push);t.exports=function(e){if(n(e))return e;if(r(e)){for(var t=e.length,i=[],l=0;l{var e=Le(),t=Sn(),i=Po(),r=Jr(),n=Nt(),s=Mt(),a=mi(),o=Cd(),l=Pd(),h=AW(),u=Sm(),c=String,p=t("JSON","stringify"),d=n(/./.exec),f=n("".charAt),m=n("".charCodeAt),g=n("".replace),y=n(1..toString),v=/[\uD800-\uDFFF]/g,T=/^[\uD800-\uDBFF]$/,x=/^[\uDC00-\uDFFF]$/,b=!u||s((function(){var e=t("Symbol")();return"[null]"!=p([e])||"{}"!=p({a:e})||"{}"!=p(Object(e))})),_=s((function(){return'"\\udf06\\ud834"'!==p("\udf06\ud834")||'"\\udead"'!==p("\udead")})),E=function(e,t){var n=l(arguments),s=h(t);if(a(s)||void 0!==e&&!o(e))return n[1]=function(e,t){if(a(s)&&(t=r(s,this,c(e),t)),!o(t))return t},i(p,null,n)},w=function(e,t,i){var r=f(i,t-1),n=f(i,t+1);return d(T,e)&&!d(x,n)||d(x,e)&&!d(T,r)?"\\u"+y(m(e,0),16):e};p&&e({target:"JSON",stat:!0,arity:3,forced:b||_},{stringify:function(e,t,r){var n=l(arguments),s=i(b?E:p,null,n);return _&&"string"==typeof s?g(s,v,w):s}})})),jW=z((()=>{var e=Le(),t=Sm(),i=Mt(),r=f1(),n=Hi();e({target:"Object",stat:!0,forced:!t||i((function(){r.f(1)}))},{getOwnPropertySymbols:function(e){var t=r.f;return t?t(n(e)):[]}})})),WW=z((()=>{gW(),TW(),bW(),lN(),jW()})),JW=z((()=>{"use strict";var e,t,i,r,n,s,a,o,l=Le(),h=Rr(),u=Qt(),c=Nt(),p=wi(),d=mi(),f=Oo(),m=ai(),g=Ms(),y=m1(),v=u.Symbol,T=v&&v.prototype;h&&d(v)&&(!("description"in T)||void 0!==v().description)&&(e={},y(t=function(){var t=arguments.length<1||void 0===arguments[0]?void 0:m(arguments[0]),i=f(T,this)?new v(t):void 0===t?v():v(t);return""===t&&(e[i]=!0),i},v),t.prototype=T,T.constructor=t,i="Symbol(test)"==String(v("test")),r=c(T.valueOf),n=c(T.toString),s=/^Symbol\((.*)\)[^)]+$/,a=c("".replace),o=c("".slice),g(T,"description",{configurable:!0,get:function(){var t=r(this);if(p(e,t))return"";var l=n(t),h=i?o(l,7,-1):a(l,s,"$1");return""===h?void 0:h}}),l({global:!0,constructor:!0,forced:!0},{Symbol:t}))})),QW=z((()=>{xa()("asyncIterator")})),eq=z((()=>{xa()("hasInstance")})),tq=z((()=>{xa()("isConcatSpreadable")})),rq=z((()=>{xa()("iterator")})),iq=z((()=>{xa()("match")})),nq=z((()=>{xa()("matchAll")})),sq=z((()=>{xa()("replace")})),aq=z((()=>{xa()("search")})),oq=z((()=>{xa()("species")})),lq=z((()=>{xa()("split")})),cq=z((()=>{var e=xa(),t=W2();e("toPrimitive"),t()})),uq=z((()=>{var e=Sn(),t=xa(),i=Ka();t("toStringTag"),i(e("Symbol"),"Symbol")})),hq=z((()=>{xa()("unscopables")})),dq=z(((e,t)=>{var i=Nt(),r=Gn();t.exports=function(e,t,n){try{return i(r(Object.getOwnPropertyDescriptor(e,t)[n]))}catch(e){}}})),uN=z(((e,t)=>{var i=mi(),r=String,n=TypeError;t.exports=function(e){if("object"==typeof e||i(e))return e;throw n("Can't set "+r(e)+" as a prototype")}})),Ec=z(((e,t)=>{var i=dq(),r=Yr(),n=uN();t.exports=Object.setPrototypeOf||("__proto__"in{}?function(){var e,t=!1,s={};try{(e=i(Object.prototype,"__proto__","set"))(s,[]),t=s instanceof Array}catch(e){}return function(i,s){return r(i),n(s),t?e(i,s):i.__proto__=s,i}}():void 0)})),hN=z(((e,t)=>{var i=wn().f;t.exports=function(e,t,r){r in e||i(e,r,{configurable:!0,get:function(){return t[r]},set:function(e){t[r]=e}})}})),Nm=z(((e,t)=>{var i=mi(),r=gi(),n=Ec();t.exports=function(e,t,s){var a,o;return n&&i(a=t.constructor)&&a!==s&&r(o=a.prototype)&&o!==s.prototype&&n(e,o),e}})),dv=z(((e,t)=>{var i=ai();t.exports=function(e,t){return void 0===e?arguments.length<2?"":t:i(e)}})),pN=z(((e,t)=>{var i=gi(),r=$s();t.exports=function(e,t){i(t)&&"cause"in t&&r(e,"cause",t.cause)}})),Ow=z(((e,t)=>{var i=Nt(),r=Error,n=i("".replace),s=String(r("zxcasd").stack),a=/\n\s*at [^:]*:[^\n]*/,o=a.test(s);t.exports=function(e,t){if(o&&"string"==typeof e&&!r.prepareStackTrace)for(;t--;)e=n(e,a,"");return e}})),dN=z(((e,t)=>{var i=Mt(),r=Ao();t.exports=!i((function(){var e=Error("a");return!("stack"in e)||(Object.defineProperty(e,"stack",r(1,7)),7!==e.stack)}))})),fN=z(((e,t)=>{var i=$s(),r=Ow(),n=dN(),s=Error.captureStackTrace;t.exports=function(e,t,a,o){n&&(s?s(e,t):i(e,"stack",r(a,o)))}})),mN=z(((e,t)=>{"use strict";var i=Sn(),r=wi(),n=$s(),s=Oo(),a=Ec(),o=m1(),l=hN(),h=Nm(),u=dv(),c=pN(),p=fN(),d=Rr(),f=Vn();t.exports=function(e,t,m,g){var y="stackTraceLimit",v=g?2:1,T=e.split("."),x=T[T.length-1],b=i.apply(null,T);if(b){var _=b.prototype;if(!f&&r(_,"cause")&&delete _.cause,!m)return b;var E=i("Error"),w=t((function(e,t){var i=u(g?t:e,void 0),r=g?new b(e):new b;return void 0!==i&&n(r,"message",i),p(r,w,r.stack,2),this&&s(_,this)&&h(r,this,w),arguments.length>v&&c(r,arguments[v]),r}));if(w.prototype=_,"Error"!==x?a?a(w,E):o(w,E,{name:!0}):d&&y in b&&(l(w,b,y),l(w,b,"prepareStackTrace")),o(w,b),!f)try{_.name!==x&&n(_,"name",x),_.constructor=w}catch(e){}return w}}})),Hq=z((()=>{var e=Le(),t=Qt(),i=Po(),r=mN(),n="WebAssembly",s=t[n],a=7!==Error("e",{cause:7}).cause,o=function(t,i){var n={};n[t]=r(t,i,a),e({global:!0,constructor:!0,arity:1,forced:a},n)},l=function(t,i){if(s&&s[t]){var o={};o[t]=r(n+"."+t,i,a),e({target:n,stat:!0,constructor:!0,arity:1,forced:a},o)}};o("Error",(function(e){return function(t){return i(e,this,arguments)}})),o("EvalError",(function(e){return function(t){return i(e,this,arguments)}})),o("RangeError",(function(e){return function(t){return i(e,this,arguments)}})),o("ReferenceError",(function(e){return function(t){return i(e,this,arguments)}})),o("SyntaxError",(function(e){return function(t){return i(e,this,arguments)}})),o("TypeError",(function(e){return function(t){return i(e,this,arguments)}})),o("URIError",(function(e){return function(t){return i(e,this,arguments)}})),l("CompileError",(function(e){return function(t){return i(e,this,arguments)}})),l("LinkError",(function(e){return function(t){return i(e,this,arguments)}})),l("RuntimeError",(function(e){return function(t){return i(e,this,arguments)}}))})),yN=z(((e,t)=>{"use strict";var i=Rr(),r=Mt(),n=Yr(),s=Za(),a=dv(),o=Error.prototype.toString,l=r((function(){if(i){var e=s(Object.defineProperty({},"name",{get:function(){return this===e}}));if("true"!==o.call(e))return!0}return"2: 1"!==o.call({message:1,name:2})||"Error"!==o.call({})}));t.exports=l?function(){var e=n(this),t=a(e.name,"Error"),i=a(e.message);return t?i?t+": "+i:t:i}:o})),Vq=z((()=>{var e=An(),t=yN(),i=Error.prototype;i.toString!==t&&e(i,"toString",t)})),Lw=z(((e,t)=>{var i=Mt();t.exports=!i((function(){function e(){}return e.prototype.constructor=null,Object.getPrototypeOf(new e)!==e.prototype}))})),No=z(((e,t)=>{var i=wi(),r=mi(),n=Hi(),s=p1(),a=Lw(),o=s("IE_PROTO"),l=Object,h=l.prototype;t.exports=a?l.getPrototypeOf:function(e){var t=n(e);if(i(t,o))return t[o];var s=t.constructor;return r(s)&&t instanceof s?s.prototype:t instanceof l?h:null}})),fv=z(((e,t)=>{t.exports={}})),Fw=z(((e,t)=>{var i=vi(),r=fv(),n=i("iterator"),s=Array.prototype;t.exports=function(e){return void 0!==e&&(r.Array===e||s[n]===e)}})),mv=z(((e,t)=>{var i=Tc(),r=Su(),n=ba(),s=fv(),a=vi()("iterator");t.exports=function(e){if(!n(e))return r(e,a)||r(e,"@@iterator")||s[i(e)]}})),_1=z(((e,t)=>{var i=Jr(),r=Gn(),n=Yr(),s=Ad(),a=mv(),o=TypeError;t.exports=function(e,t){var l=arguments.length<2?a(e):t;if(r(l))return n(i(l,e));throw o(s(e)+" is not iterable")}})),EN=z(((e,t)=>{var i=Jr(),r=Yr(),n=Su();t.exports=function(e,t,s){var a,o;r(e);try{if(!(a=n(e,"return"))){if("throw"===t)throw s;return s}a=i(a,e)}catch(e){o=!0,a=e}if("throw"===t)throw s;if(o)throw a;return r(a),s}})),bc=z(((e,t)=>{var i=ml(),r=Jr(),n=Yr(),s=Ad(),a=Fw(),o=Wi(),l=Oo(),h=_1(),u=mv(),c=EN(),p=TypeError,d=function(e,t){this.stopped=e,this.result=t},f=d.prototype;t.exports=function(e,t,m){var g,y,v,T,x,b,_,E=m&&m.that,w=!(!m||!m.AS_ENTRIES),S=!(!m||!m.IS_RECORD),I=!(!m||!m.IS_ITERATOR),M=!(!m||!m.INTERRUPTED),A=i(t,E),D=function(e){return g&&c(g,"normal",e),new d(!0,e)},O=function(e){return w?(n(e),M?A(e[0],e[1],D):A(e[0],e[1])):M?A(e,D):A(e)};if(S)g=e.iterator;else if(I)g=e;else{if(!(y=u(e)))throw p(s(e)+" is not iterable");if(a(y)){for(v=0,T=o(e);T>v;v++)if((x=O(e[v]))&&l(f,x))return x;return new d(!1)}g=h(e,y)}for(b=S?e.next:g.next;!(_=r(b,g)).done;){try{x=O(_.value)}catch(e){c(g,"throw",e)}if("object"==typeof x&&x&&l(f,x))return x}return new d(!1)}})),nY=z((()=>{"use strict";var e=Le(),t=Oo(),i=No(),r=Ec(),n=m1(),s=Za(),a=$s(),o=Ao(),l=pN(),h=fN(),u=bc(),c=dv(),p=vi()("toStringTag"),d=Error,f=[].push,m=function(e,n){var o,y=t(g,this);r?o=r(d(),y?i(this):g):(o=y?this:s(g),a(o,p,"Error")),void 0!==n&&a(o,"message",c(n)),h(o,m,o.stack,1),arguments.length>2&&l(o,arguments[2]);var v=[];return u(e,f,{that:v}),a(o,"errors",v),o};r?r(m,d):n(m,d,{name:!0});var g=m.prototype=s(d.prototype,{constructor:o(1,m),message:o(1,""),name:o(1,"AggregateError")});e({global:!0,constructor:!0,arity:2},{AggregateError:m})})),sY=z((()=>{nY()})),cY=z((()=>{var e=Le(),t=Sn(),i=Po(),r=Mt(),n=mN(),s="AggregateError",a=t(s),o=!r((function(){return 1!==a([1]).errors[0]}))&&r((function(){return 7!==a([1],s,{cause:7}).cause}));e({global:!0,constructor:!0,arity:2,forced:o},{AggregateError:n(s,(function(e){return function(t,r){return i(e,this,arguments)}}),o,!0)})})),Ia=z(((e,t)=>{var i=vi(),r=Za(),n=wn().f,s=i("unscopables"),a=Array.prototype;null==a[s]&&n(a,s,{configurable:!0,value:r(null)}),t.exports=function(e){a[s][e]=!0}})),hY=z((()=>{"use strict";var e=Le(),t=Hi(),i=Wi(),r=zn(),n=Ia();e({target:"Array",proto:!0},{at:function(e){var n=t(this),s=i(n),a=r(e),o=a>=0?a:s+a;return o<0||o>=s?void 0:n[o]}}),n("at")})),Fm=z(((e,t)=>{var i=TypeError;t.exports=function(e){if(e>9007199254740991)throw i("Maximum allowed index exceeded");return e}})),vv=z(((e,t)=>{var i=Mt(),r=vi(),n=_u(),s=r("species");t.exports=function(e){return n>=51||!i((function(){var t=[];return(t.constructor={})[s]=function(){return{foo:1}},1!==t[e](Boolean).foo}))}})),vY=z((()=>{"use strict";var e=Le(),t=Mt(),i=$h(),r=gi(),n=Hi(),s=Wi(),a=Fm(),o=wu(),l=uv(),h=vv(),u=vi(),c=_u(),p=u("isConcatSpreadable"),d=c>=51||!t((function(){var e=[];return e[p]=!1,e.concat()[0]!==e})),f=function(e){if(!r(e))return!1;var t=e[p];return void 0!==t?!!t:i(e)};e({target:"Array",proto:!0,arity:1,forced:!d||!h("concat")},{concat:function(e){var t,i,r,h,u,c=n(this),p=l(c,0),d=0;for(t=-1,r=arguments.length;t{"use strict";var i=Ad(),r=TypeError;t.exports=function(e,t){if(!delete e[t])throw r("Cannot delete property "+i(t)+" of "+i(e))}})),MN=z(((e,t)=>{"use strict";var i=Hi(),r=yc(),n=Wi(),s=S1(),a=Math.min;t.exports=[].copyWithin||function(e,t){var o=i(this),l=n(o),h=r(e,l),u=r(t,l),c=arguments.length>2?arguments[2]:void 0,p=a((void 0===c?l:r(c,l))-u,l-h),d=1;for(u0;)u in o?o[h]=o[u]:s(o,h),h+=d,u+=d;return o}})),bY=z((()=>{var e=Le(),t=MN(),i=Ia();e({target:"Array",proto:!0},{copyWithin:t}),i("copyWithin")})),Mu=z(((e,t)=>{"use strict";var i=Mt();t.exports=function(e,t){var r=[][e];return!!r&&i((function(){r.call(null,t||function(){return 1},1)}))}})),IY=z((()=>{"use strict";var e=Le(),t=Ds().every;e({target:"Array",proto:!0,forced:!Mu()("every")},{every:function(e){return t(this,e,arguments.length>1?arguments[1]:void 0)}})})),kw=z(((e,t)=>{"use strict";var i=Hi(),r=yc(),n=Wi();t.exports=function(e){for(var t=i(this),s=n(t),a=arguments.length,o=r(a>1?arguments[1]:void 0,s),l=a>2?arguments[2]:void 0,h=void 0===l?s:r(l,s);h>o;)t[o++]=e;return t}})),wY=z((()=>{var e=Le(),t=kw(),i=Ia();e({target:"Array",proto:!0},{fill:t}),i("fill")})),RY=z((()=>{"use strict";var e=Le(),t=Ds().filter;e({target:"Array",proto:!0,forced:!vv()("filter")},{filter:function(e){return t(this,e,arguments.length>1?arguments[1]:void 0)}})})),DY=z((()=>{"use strict";var e=Le(),t=Ds().find,i=Ia(),r="find",n=!0;r in[]&&Array(1)[r]((function(){n=!1})),e({target:"Array",proto:!0,forced:n},{find:function(e){return t(this,e,arguments.length>1?arguments[1]:void 0)}}),i(r)})),AY=z((()=>{"use strict";var e=Le(),t=Ds().findIndex,i=Ia(),r="findIndex",n=!0;r in[]&&Array(1)[r]((function(){n=!1})),e({target:"Array",proto:!0,forced:n},{findIndex:function(e){return t(this,e,arguments.length>1?arguments[1]:void 0)}}),i(r)})),w1=z(((e,t)=>{var i=ml(),r=_m(),n=Hi(),s=Wi(),a=function(e){var t=1==e;return function(a,o,l){for(var h,u=n(a),c=r(u),p=i(o,l),d=s(c);d-- >0;)if(p(h=c[d],d,u))switch(e){case 0:return h;case 1:return d}return t?-1:void 0}};t.exports={findLast:a(0),findLastIndex:a(1)}})),NY=z((()=>{"use strict";var e=Le(),t=w1().findLast,i=Ia();e({target:"Array",proto:!0},{findLast:function(e){return t(this,e,arguments.length>1?arguments[1]:void 0)}}),i("findLast")})),LY=z((()=>{"use strict";var e=Le(),t=w1().findLastIndex,i=Ia();e({target:"Array",proto:!0},{findLastIndex:function(e){return t(this,e,arguments.length>1?arguments[1]:void 0)}}),i("findLastIndex")})),AN=z(((e,t)=>{"use strict";var i=$h(),r=Wi(),n=Fm(),s=ml(),a=function(e,t,o,l,h,u,c,p){for(var d,f,m=h,g=0,y=!!c&&s(c,p);g0&&i(d)?(f=r(d),m=a(e,t,d,f,m,u-1)-1):(n(m+1),e[m]=d),m++),g++;return m};t.exports=a})),UY=z((()=>{"use strict";var e=Le(),t=AN(),i=Hi(),r=Wi(),n=zn(),s=uv();e({target:"Array",proto:!0},{flat:function(){var e=arguments.length?arguments[0]:void 0,a=i(this),o=r(a),l=s(a,0);return l.length=t(l,a,a,o,0,void 0===e?1:n(e)),l}})})),BY=z((()=>{"use strict";var e=Le(),t=AN(),i=Gn(),r=Hi(),n=Wi(),s=uv();e({target:"Array",proto:!0},{flatMap:function(e){var a,o=r(this),l=n(o);return i(e),(a=s(o,0)).length=t(a,o,o,l,0,1,e,arguments.length>1?arguments[1]:void 0),a}})})),ON=z(((e,t)=>{"use strict";var i=Ds().forEach,r=Mu()("forEach");t.exports=r?[].forEach:function(e){return i(this,e,arguments.length>1?arguments[1]:void 0)}})),VY=z((()=>{"use strict";var e=Le(),t=ON();e({target:"Array",proto:!0,forced:[].forEach!=t},{forEach:t})})),jY=z(((e,t)=>{var i=Yr(),r=EN();t.exports=function(e,t,n,s){try{return s?t(i(n)[0],n[1]):t(n)}catch(t){r(e,"throw",t)}}})),PN=z(((e,t)=>{"use strict";var i=ml(),r=Jr(),n=Hi(),s=jY(),a=Fw(),o=Cm(),l=Wi(),h=wu(),u=_1(),c=mv(),p=Array;t.exports=function(e){var t=n(e),d=o(this),f=arguments.length,m=f>1?arguments[1]:void 0,g=void 0!==m;g&&(m=i(m,f>2?arguments[2]:void 0));var y,v,T,x,b,_,E=c(t),w=0;if(!E||this===p&&a(E))for(y=l(t),v=d?new this(y):p(y);y>w;w++)_=g?m(t[w],w):t[w],h(v,w,_);else for(b=(x=u(t,E)).next,v=d?new this:[];!(T=r(b,x)).done;w++)_=g?s(x,m,[T.value,w],!0):T.value,h(v,w,_);return v.length=w,v}})),R1=z(((e,t)=>{var i,r,n=vi()("iterator"),s=!1;try{i=0,(r={next:function(){return{done:!!i++}},return:function(){s=!0}})[n]=function(){return this},Array.from(r,(function(){throw 2}))}catch(e){}t.exports=function(e,t){if(!t&&!s)return!1;var i=!1;try{var r={};r[n]=function(){return{next:function(){return{done:i=!0}}}},e(r)}catch(e){}return i}})),JY=z((()=>{var e=Le(),t=PN();e({target:"Array",stat:!0,forced:!R1()((function(e){Array.from(e)}))},{from:t})})),QY=z((()=>{"use strict";var e=Le(),t=av().includes,i=Mt(),r=Ia();e({target:"Array",proto:!0,forced:i((function(){return!Array(1).includes()}))},{includes:function(e){return t(this,e,arguments.length>1?arguments[1]:void 0)}}),r("includes")})),tX=z((()=>{"use strict";var e=Le(),t=Xh(),i=av().indexOf,r=Mu(),n=t([].indexOf),s=!!n&&1/n([1],1,-0)<0;e({target:"Array",proto:!0,forced:s||!r("indexOf")},{indexOf:function(e){var t=arguments.length>1?arguments[1]:void 0;return s?n(this,e,t)||0:i(this,e,t)}})})),rX=z((()=>{Le()({target:"Array",stat:!0},{isArray:$h()})})),BN=z(((e,t)=>{"use strict";var i,r,n,s=Mt(),a=mi(),o=gi(),l=Za(),h=No(),u=An(),c=vi(),p=Vn(),d=c("iterator"),f=!1;[].keys&&("next"in(n=[].keys())?(r=h(h(n)))!==Object.prototype&&(i=r):f=!0),!o(i)||s((function(){var e={};return i[d].call(e)!==e}))?i={}:p&&(i=l(i)),a(i[d])||u(i,d,(function(){return this})),t.exports={IteratorPrototype:i,BUGGY_SAFARI_ITERATORS:f}})),Gw=z(((e,t)=>{"use strict";var i=BN().IteratorPrototype,r=Za(),n=Ao(),s=Ka(),a=fv(),o=function(){return this};t.exports=function(e,t,l,h){var u=t+" Iterator";return e.prototype=r(i,{next:n(+!h,l)}),s(e,u,!1,!0),a[u]=o,e}})),jw=z(((e,t)=>{"use strict";var i=Le(),r=Jr(),n=Vn(),s=Mm(),a=mi(),o=Gw(),l=No(),h=Ec(),u=Ka(),c=$s(),p=An(),d=vi(),f=fv(),m=BN(),g=s.PROPER,y=s.CONFIGURABLE,v=m.IteratorPrototype,T=m.BUGGY_SAFARI_ITERATORS,x=d("iterator"),b="keys",_="values",E="entries",w=function(){return this};t.exports=function(e,t,s,d,m,S,I){o(s,t,d);var M,A,D,O=function(e){if(e===m&&L)return L;if(!T&&e in N)return N[e];switch(e){case b:case _:case E:return function(){return new s(this,e)}}return function(){return new s(this)}},R=t+" Iterator",C=!1,N=e.prototype,P=N[x]||N["@@iterator"]||m&&N[m],L=!T&&P||O(m),F="Array"==t&&N.entries||P;if(F&&((M=l(F.call(new e)))!==Object.prototype&&M.next&&(!n&&l(M)!==v&&(h?h(M,v):a(M[x])||p(M,x,w)),u(M,R,!0,!0),n&&(f[R]=w))),g&&m==_&&P&&P.name!==_&&(!n&&y?c(N,"name",_):(C=!0,L=function(){return r(P,this)})),m)if(A={values:O(_),keys:S?L:O(b),entries:O(E)},I)for(D in A)(T||C||!(D in N))&&p(N,D,A[D]);else i({target:t,proto:!0,forced:T||C},A);return(!n||I)&&N[x]!==L&&p(N,x,L,{name:m}),f[t]=L,A}})),C1=z(((e,t)=>{t.exports=function(e,t){return{value:e,done:t}}})),A1=z(((e,t)=>{"use strict";var i=vs(),r=Ia(),n=fv(),s=ps(),a=wn().f,o=jw(),l=C1(),h=Vn(),u=Rr(),c="Array Iterator",p=s.set,d=s.getterFor(c);t.exports=o(Array,"Array",(function(e,t){p(this,{type:c,target:i(e),index:0,kind:t})}),(function(){var e=d(this),t=e.target,i=e.kind,r=e.index++;return!t||r>=t.length?(e.target=void 0,l(void 0,!0)):l("keys"==i?r:"values"==i?t[r]:[r,t[r]],!1)}),"values");var f=n.Arguments=n.Array;if(r("keys"),r("values"),r("entries"),!h&&u&&"values"!==f.name)try{a(f,"name",{value:"values"})}catch(e){}})),IX=z((()=>{"use strict";var e=Le(),t=Nt(),i=_m(),r=vs(),n=Mu(),s=t([].join);e({target:"Array",proto:!0,forced:i!=Object||!n("join",",")},{join:function(e){return s(r(this),void 0===e?",":e)}})})),zN=z(((e,t)=>{"use strict";var i=Po(),r=vs(),n=zn(),s=Wi(),a=Mu(),o=Math.min,l=[].lastIndexOf,h=!!l&&1/[1].lastIndexOf(1,-0)<0,u=a("lastIndexOf"),c=h||!u;t.exports=c?function(e){if(h)return i(l,this,arguments)||0;var t=r(this),a=s(t),u=a-1;for(arguments.length>1&&(u=o(u,n(arguments[1]))),u<0&&(u=a+u);u>=0;u--)if(u in t&&t[u]===e)return u||0;return-1}:l})),RX=z((()=>{var e=Le(),t=zN();e({target:"Array",proto:!0,forced:t!==[].lastIndexOf},{lastIndexOf:t})})),MX=z((()=>{"use strict";var e=Le(),t=Ds().map;e({target:"Array",proto:!0,forced:!vv()("map")},{map:function(e){return t(this,e,arguments.length>1?arguments[1]:void 0)}})})),CX=z((()=>{"use strict";var e=Le(),t=Mt(),i=Cm(),r=wu(),n=Array;e({target:"Array",stat:!0,forced:t((function(){function e(){}return!(n.of.call(e)instanceof e)}))},{of:function(){for(var e=0,t=arguments.length,s=new(i(this)?this:n)(t);t>e;)r(s,e,arguments[e++]);return s.length=t,s}})})),qw=z(((e,t)=>{"use strict";var i=Rr(),r=$h(),n=TypeError,s=Object.getOwnPropertyDescriptor,a=i&&!function(){if(void 0!==this)return!0;try{Object.defineProperty([],"length",{writable:!1}).length=1}catch(e){return e instanceof TypeError}}();t.exports=a?function(e,t){if(r(e)&&!s(e,"length").writable)throw n("Cannot set read only .length");return e.length=t}:function(e,t){return e.length=t}})),OX=z((()=>{"use strict";var e=Le(),t=Hi(),i=Wi(),r=qw(),n=Fm();e({target:"Array",proto:!0,arity:1,forced:Mt()((function(){return 4294967297!==[].push.call({length:4294967296},1)}))||!function(){try{Object.defineProperty([],"length",{writable:!1}).push()}catch(e){return e instanceof TypeError}}()},{push:function(e){var s=t(this),a=i(s),o=arguments.length;n(a+o);for(var l=0;l{var i=Gn(),r=Hi(),n=_m(),s=Wi(),a=TypeError,o=function(e){return function(t,o,l,h){i(o);var u=r(t),c=n(u),p=s(u),d=e?p-1:0,f=e?-1:1;if(l<2)for(;;){if(d in c){h=c[d],d+=f;break}if(d+=f,e?d<0:p<=d)throw a("Reduce of empty array with no initial value")}for(;e?d>=0:p>d;d+=f)d in c&&(h=o(h,c[d],d,u));return h}};t.exports={left:o(!1),right:o(!0)}})),Du=z(((e,t)=>{var i=Xs();t.exports="undefined"!=typeof process&&"process"==i(process)})),HX=z((()=>{"use strict";var e=Le(),t=O1().left,i=Mu(),r=_u();e({target:"Array",proto:!0,forced:!Du()&&r>79&&r<83||!i("reduce")},{reduce:function(e){var i=arguments.length;return t(this,e,i,i>1?arguments[1]:void 0)}})})),BX=z((()=>{"use strict";var e=Le(),t=O1().right,i=Mu(),r=_u();e({target:"Array",proto:!0,forced:!Du()&&r>79&&r<83||!i("reduceRight")},{reduceRight:function(e){return t(this,e,arguments.length,arguments.length>1?arguments[1]:void 0)}})})),GX=z((()=>{"use strict";var e=Le(),t=Nt(),i=$h(),r=t([].reverse),n=[1,2];e({target:"Array",proto:!0,forced:String(n)===String(n.reverse())},{reverse:function(){return i(this)&&(this.length=this.length),r(this)}})})),jX=z((()=>{"use strict";var e=Le(),t=$h(),i=Cm(),r=gi(),n=yc(),s=Wi(),a=vs(),o=wu(),l=vi(),h=vv(),u=Pd(),c=h("slice"),p=l("species"),d=Array,f=Math.max;e({target:"Array",proto:!0,forced:!c},{slice:function(e,l){var h,c,m,g=a(this),y=s(g),v=n(e,y),T=n(void 0===l?y:l,y);if(t(g)&&(h=g.constructor,i(h)&&(h===d||t(h.prototype))?h=void 0:r(h)&&(null===(h=h[p])&&(h=void 0)),h===d||void 0===h))return u(g,v,T);for(c=new(void 0===h?d:h)(f(T-v,0)),m=0;v{"use strict";var e=Le(),t=Ds().some;e({target:"Array",proto:!0,forced:!Mu()("some")},{some:function(e){return t(this,e,arguments.length>1?arguments[1]:void 0)}})})),Yw=z(((e,t)=>{var i=cv(),r=Math.floor,n=function(e,t){var o=e.length,l=r(o/2);return o<8?s(e,t):a(e,n(i(e,0,l),t),n(i(e,l),t),t)},s=function(e,t){for(var i,r,n=e.length,s=1;s0;)e[r]=e[--r];r!==s++&&(e[r]=i)}return e},a=function(e,t,i,r){for(var n=t.length,s=i.length,a=0,o=0;a{var i=Iu().match(/firefox\/(\d+)/i);t.exports=!!i&&+i[1]})),YN=z(((e,t)=>{var i=Iu();t.exports=/MSIE|Trident/.test(i)})),Xw=z(((e,t)=>{var i=Iu().match(/AppleWebKit\/(\d+)\./);t.exports=!!i&&+i[1]})),o$=z((()=>{"use strict";var e=Le(),t=Nt(),i=Gn(),r=Hi(),n=Wi(),s=S1(),a=ai(),o=Mt(),l=Yw(),h=Mu(),u=qN(),c=YN(),p=_u(),d=Xw(),f=[],m=t(f.sort),g=t(f.push),y=o((function(){f.sort(void 0)})),v=o((function(){f.sort(null)})),T=h("sort"),x=!o((function(){if(p)return p<70;if(!(u&&u>3)){if(c)return!0;if(d)return d<603;var e,t,i,r,n="";for(e=65;e<76;e++){switch(t=String.fromCharCode(e),e){case 66:case 69:case 70:case 72:i=3;break;case 68:case 71:i=4;break;default:i=2}for(r=0;r<47;r++)f.push({k:t+r,v:i})}for(f.sort((function(e,t){return t.v-e.v})),r=0;ra(i)?1:-1}}(e)),o=n(u),h=0;h{"use strict";var i=Sn(),r=Ms(),n=vi(),s=Rr(),a=n("species");t.exports=function(e){var t=i(e);s&&t&&!t[a]&&r(t,a,{configurable:!0,get:function(){return this}})}})),u$=z((()=>{Hm()("Array")})),h$=z((()=>{"use strict";var e=Le(),t=Hi(),i=yc(),r=zn(),n=Wi(),s=qw(),a=Fm(),o=uv(),l=wu(),h=S1(),u=vv()("splice"),c=Math.max,p=Math.min;e({target:"Array",proto:!0,forced:!u},{splice:function(e,u){var d,f,m,g,y,v,T=t(this),x=n(T),b=i(e,x),_=arguments.length;for(0===_?d=f=0:1===_?(d=0,f=x-b):(d=_-2,f=p(c(r(u),0),x-b)),a(x+d-f),m=o(T,f),g=0;gx-f+d;g--)h(T,g-1)}else if(d>f)for(g=x-f;g>b;g--)v=g+d-1,(y=g+f-1)in T?T[v]=T[y]:h(T,v);for(g=0;g{var i=Wi();t.exports=function(e,t){for(var r=i(e),n=new t(r),s=0;s{"use strict";var e=Le(),t=ZN(),i=vs(),r=Ia(),n=Array;e({target:"Array",proto:!0},{toReversed:function(){return t(i(this),n)}}),r("toReversed")})),$w=z(((e,t)=>{var i=Wi();t.exports=function(e,t){for(var r=0,n=i(t),s=new e(n);n>r;)s[r]=t[r++];return s}})),g$=z(((e,t)=>{var i=Qt();t.exports=function(e){return i[e].prototype}})),v$=z((()=>{"use strict";var e=Le(),t=Nt(),i=Gn(),r=vs(),n=$w(),s=g$(),a=Ia(),o=Array,l=t(s("Array").sort);e({target:"Array",proto:!0},{toSorted:function(e){void 0!==e&&i(e);var t=r(this),s=n(o,t);return l(s,e)}}),a("toSorted")})),y$=z((()=>{"use strict";var e=Le(),t=Ia(),i=Fm(),r=Wi(),n=yc(),s=vs(),a=zn(),o=Array,l=Math.max,h=Math.min;e({target:"Array",proto:!0},{toSpliced:function(e,t){var u,c,p,d,f=s(this),m=r(f),g=n(e,m),y=arguments.length,v=0;for(0===y?u=c=0:1===y?(u=0,c=m-g):(u=y-2,c=h(l(a(t),0),m-g)),p=i(m+u-c),d=o(p);v{Ia()("flat")})),E$=z((()=>{Ia()("flatMap")})),b$=z((()=>{"use strict";var e=Le(),t=Hi(),i=Wi(),r=qw(),n=S1(),s=Fm();e({target:"Array",proto:!0,arity:1,forced:1!==[].unshift(0)||!function(){try{Object.defineProperty([],"length",{writable:!1}).unshift()}catch(e){return e instanceof TypeError}}()},{unshift:function(e){var a=t(this),o=i(a),l=arguments.length;if(l){s(o+l);for(var h=o;h--;){var u=h+l;h in a?a[u]=a[h]:n(a,u)}for(var c=0;c{var i=Wi(),r=zn(),n=RangeError;t.exports=function(e,t,s,a){var o=i(e),l=r(s),h=l<0?o+l:l;if(h>=o||h<0)throw n("Incorrect index");for(var u=new t(o),c=0;c{"use strict";var e=Le(),t=KN(),i=vs(),r=Array;e({target:"Array",proto:!0},{with:function(e,n){return t(i(this),r,e,n)}})})),Zw=z(((e,t)=>{t.exports="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView})),yv=z(((e,t)=>{var i=An();t.exports=function(e,t,r){for(var n in t)i(e,n,t[n],r);return e}})),xc=z(((e,t)=>{var i=Oo(),r=TypeError;t.exports=function(e,t){if(i(t,e))return e;throw r("Incorrect invocation")}})),JN=z(((e,t)=>{var i=zn(),r=$a(),n=RangeError;t.exports=function(e){if(void 0===e)return 0;var t=i(e),s=r(t);if(t!==s)throw n("Wrong length or index");return s}})),D$=z(((e,t)=>{var i=Array,r=Math.abs,n=Math.pow,s=Math.floor,a=Math.log,o=Math.LN2;t.exports={pack:function(e,t,l){var h,u,c,p=i(l),d=8*l-t-1,f=(1<>1,g=23===t?n(2,-24)-n(2,-77):0,y=e<0||0===e&&1/e<0?1:0,v=0;for((e=r(e))!=e||e===1/0?(u=e!=e?1:0,h=f):(h=s(a(e)/o),e*(c=n(2,-h))<1&&(h--,c*=2),(e+=h+m>=1?g/c:g*n(2,1-m))*c>=2&&(h++,c/=2),h+m>=f?(u=0,h=f):h+m>=1?(u=(e*c-1)*n(2,t),h+=m):(u=e*n(2,m-1)*n(2,t),h=0));t>=8;)p[v++]=255&u,u/=256,t-=8;for(h=h<0;)p[v++]=255&h,h/=256,d-=8;return p[--v]|=128*y,p},unpack:function(e,t){var i,r=e.length,s=8*r-t-1,a=(1<>1,l=s-7,h=r-1,u=e[h--],c=127&u;for(u>>=7;l>0;)c=256*c+e[h--],l-=8;for(i=c&(1<<-l)-1,c>>=-l,l+=t;l>0;)i=256*i+e[h--],l-=8;if(0===c)c=1-o;else{if(c===a)return i?NaN:u?-1/0:1/0;i+=n(2,t),c-=o}return(u?-1:1)*i*n(2,c-t)}}})),L1=z(((e,t)=>{"use strict";var i,r,n,s,a,o,l=Qt(),h=Nt(),u=Rr(),c=Zw(),p=Mm(),d=$s(),f=Ms(),m=yv(),g=Mt(),y=xc(),v=zn(),T=$a(),x=JN(),b=D$(),_=No(),E=Ec(),w=Yh().f,S=kw(),I=cv(),M=Ka(),A=ps(),D=p.PROPER,O=p.CONFIGURABLE,R="ArrayBuffer",C="DataView",N="prototype",P="Wrong index",L=A.getterFor(R),F=A.getterFor(C),U=A.set,k=l[R],B=k,G=B&&B[N],z=l[C],H=z&&z[N],V=Object.prototype,j=l.Array,W=l.RangeError,Y=h(S),X=h([].reverse),q=b.pack,Z=b.unpack,K=function(e){return[255&e]},$=function(e){return[255&e,e>>8&255]},J=function(e){return[255&e,e>>8&255,e>>16&255,e>>24&255]},Q=function(e){return e[3]<<24|e[2]<<16|e[1]<<8|e[0]},ee=function(e){return q(e,23,4)},te=function(e){return q(e,52,8)},ie=function(e,t,i){f(e[N],t,{configurable:!0,get:function(){return i(this)[t]}})},re=function(e,t,i,r){var n=x(i),s=F(e);if(n+t>s.byteLength)throw W(P);var a=s.bytes,o=n+s.byteOffset,l=I(a,o,o+t);return r?l:X(l)},ne=function(e,t,i,r,n,s){var a=x(i),o=F(e);if(a+t>o.byteLength)throw W(P);for(var l=o.bytes,h=a+o.byteOffset,u=r(+n),c=0;cn;)(s=r[n++])in B||d(B,s,k[s]);G.constructor=B}E&&_(H)!==V&&E(H,V),a=new z(new B(2)),o=h(H.setInt8),a.setInt8(0,2147483648),a.setInt8(1,2147483649),(a.getInt8(0)||!a.getInt8(1))&&m(H,{setInt8:function(e,t){o(this,e,t<<24>>24)},setUint8:function(e,t){o(this,e,t<<24>>24)}},{unsafe:!0})}else G=(B=function(e){y(this,G);var t=x(e);U(this,{type:R,bytes:Y(j(t),0),byteLength:t}),u||(this.byteLength=t,this.detached=!1)})[N],H=(z=function(e,t,i){y(this,H),y(e,G);var r=L(e),n=r.byteLength,s=v(t);if(s<0||s>n)throw W("Wrong offset");if(s+(i=void 0===i?n-s:T(i))>n)throw W("Wrong length");U(this,{type:C,buffer:e,byteLength:i,byteOffset:s,bytes:r.bytes}),u||(this.buffer=e,this.byteLength=i,this.byteOffset=s)})[N],u&&(ie(B,"byteLength",L),ie(z,"buffer",F),ie(z,"byteLength",F),ie(z,"byteOffset",F)),m(H,{getInt8:function(e){return re(this,1,e)[0]<<24>>24},getUint8:function(e){return re(this,1,e)[0]},getInt16:function(e){var t=re(this,2,e,arguments.length>1?arguments[1]:void 0);return(t[1]<<8|t[0])<<16>>16},getUint16:function(e){var t=re(this,2,e,arguments.length>1?arguments[1]:void 0);return t[1]<<8|t[0]},getInt32:function(e){return Q(re(this,4,e,arguments.length>1?arguments[1]:void 0))},getUint32:function(e){return Q(re(this,4,e,arguments.length>1?arguments[1]:void 0))>>>0},getFloat32:function(e){return Z(re(this,4,e,arguments.length>1?arguments[1]:void 0),23)},getFloat64:function(e){return Z(re(this,8,e,arguments.length>1?arguments[1]:void 0),52)},setInt8:function(e,t){ne(this,1,e,K,t)},setUint8:function(e,t){ne(this,1,e,K,t)},setInt16:function(e,t){ne(this,2,e,$,t,arguments.length>2?arguments[2]:void 0)},setUint16:function(e,t){ne(this,2,e,$,t,arguments.length>2?arguments[2]:void 0)},setInt32:function(e,t){ne(this,4,e,J,t,arguments.length>2?arguments[2]:void 0)},setUint32:function(e,t){ne(this,4,e,J,t,arguments.length>2?arguments[2]:void 0)},setFloat32:function(e,t){ne(this,4,e,ee,t,arguments.length>2?arguments[2]:void 0)},setFloat64:function(e,t){ne(this,8,e,te,t,arguments.length>2?arguments[2]:void 0)}});M(B,R),M(z,C),t.exports={ArrayBuffer:B,DataView:z}})),$$=z((()=>{"use strict";var e=Le(),t=Qt(),i=L1(),r=Hm(),n="ArrayBuffer",s=i[n];e({global:!0,constructor:!0,forced:t[n]!==s},{ArrayBuffer:s}),r(n)})),oi=z(((e,t)=>{"use strict";var i,r,n,s=Zw(),a=Rr(),o=Qt(),l=mi(),h=gi(),u=wi(),c=Tc(),p=Ad(),d=$s(),f=An(),m=Ms(),g=Oo(),y=No(),v=Ec(),T=vi(),x=Rm(),b=ps(),_=b.enforce,E=b.get,w=o.Int8Array,S=w&&w.prototype,I=o.Uint8ClampedArray,M=I&&I.prototype,A=w&&y(w),D=S&&y(S),O=Object.prototype,R=o.TypeError,C=T("toStringTag"),N=x("TYPED_ARRAY_TAG"),P="TypedArrayConstructor",L=s&&!!v&&"Opera"!==c(o.opera),F=!1,U={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},k={BigInt64Array:8,BigUint64Array:8},B=function(e){var t=y(e);if(h(t)){var i=E(t);return i&&u(i,P)?i[P]:B(t)}},G=function(e){if(!h(e))return!1;var t=c(e);return u(U,t)||u(k,t)};for(i in U)(n=(r=o[i])&&r.prototype)?_(n)[P]=r:L=!1;for(i in k)(n=(r=o[i])&&r.prototype)&&(_(n)[P]=r);if((!L||!l(A)||A===Function.prototype)&&(A=function(){throw R("Incorrect invocation")},L))for(i in U)o[i]&&v(o[i],A);if((!L||!D||D===O)&&(D=A.prototype,L))for(i in U)o[i]&&v(o[i].prototype,D);if(L&&y(M)!==D&&v(M,D),a&&!u(D,C))for(i in F=!0,m(D,C,{configurable:!0,get:function(){return h(this)?this[N]:void 0}}),U)o[i]&&d(o[i],N,i);t.exports={NATIVE_ARRAY_BUFFER_VIEWS:L,TYPED_ARRAY_TAG:F&&N,aTypedArray:function(e){if(G(e))return e;throw R("Target is not a typed array")},aTypedArrayConstructor:function(e){if(l(e)&&(!v||g(A,e)))return e;throw R(p(e)+" is not a typed array constructor")},exportTypedArrayMethod:function(e,t,i,r){if(a){if(i)for(var n in U){var s=o[n];if(s&&u(s.prototype,e))try{delete s.prototype[e]}catch(i){try{s.prototype[e]=t}catch(e){}}}(!D[e]||i)&&f(D,e,i?t:L&&S[e]||t,r)}},exportTypedArrayStaticMethod:function(e,t,i){var r,n;if(a){if(v){if(i)for(r in U)if((n=o[r])&&u(n,e))try{delete n[e]}catch(e){}if(A[e]&&!i)return;try{return f(A,e,i?t:L&&A[e]||t)}catch(e){}}for(r in U)(n=o[r])&&(!n[e]||i)&&f(n,e,t)}},getTypedArrayConstructor:B,isView:function(e){if(!h(e))return!1;var t=c(e);return"DataView"===t||u(U,t)||u(k,t)},isTypedArray:G,TypedArray:A,TypedArrayPrototype:D}})),oZ=z((()=>{var e=Le(),t=oi();e({target:"ArrayBuffer",stat:!0,forced:!t.NATIVE_ARRAY_BUFFER_VIEWS},{isView:t.isView})})),lR=z(((e,t)=>{var i=Cm(),r=Ad(),n=TypeError;t.exports=function(e){if(i(e))return e;throw n(r(e)+" is not a constructor")}})),Bm=z(((e,t)=>{var i=Yr(),r=lR(),n=ba(),s=vi()("species");t.exports=function(e,t){var a,o=i(e).constructor;return void 0===o||n(a=i(o)[s])?t:r(a)}})),gZ=z((()=>{"use strict";var e=Le(),t=Xh(),i=Mt(),r=L1(),n=Yr(),s=yc(),a=$a(),o=Bm(),l=r.ArrayBuffer,h=r.DataView,u=h.prototype,c=t(l.prototype.slice),p=t(u.getUint8),d=t(u.setUint8);e({target:"ArrayBuffer",proto:!0,unsafe:!0,forced:i((function(){return!new l(2).slice(1,void 0).byteLength}))},{slice:function(e,t){if(c&&void 0===t)return c(n(this),e);for(var i=n(this).byteLength,r=s(e,i),u=s(void 0===t?i:t,i),f=new(o(this,l))(a(u-r)),m=new h(this),g=new h(f),y=0;r{var e=Le(),t=L1();e({global:!0,constructor:!0,forced:!Zw()},{DataView:t.DataView})})),yZ=z((()=>{vZ()})),TZ=z((()=>{"use strict";var e=Le(),t=Nt(),i=Mt()((function(){return 120!==new Date(16e11).getYear()})),r=t(Date.prototype.getFullYear);e({target:"Date",proto:!0,forced:i},{getYear:function(){return r(this)-1900}})})),bZ=z((()=>{var e=Le(),t=Nt(),i=Date,r=t(i.prototype.getTime);e({target:"Date",stat:!0},{now:function(){return r(new i)}})})),_Z=z((()=>{"use strict";var e=Le(),t=Nt(),i=zn(),r=Date.prototype,n=t(r.getTime),s=t(r.setFullYear);e({target:"Date",proto:!0},{setYear:function(e){n(this);var t=i(e);return s(this,0<=t&&t<=99?t+1900:t)}})})),SZ=z((()=>{Le()({target:"Date",proto:!0},{toGMTString:Date.prototype.toUTCString})})),F1=z(((e,t)=>{"use strict";var i=zn(),r=ai(),n=hs(),s=RangeError;t.exports=function(e){var t=r(n(this)),a="",o=i(e);if(o<0||o==1/0)throw s("Wrong number of repetitions");for(;o>0;(o>>>=1)&&(t+=t))1&o&&(a+=t);return a}})),cR=z(((e,t)=>{var i=Nt(),r=$a(),n=ai(),s=F1(),a=hs(),o=i(s),l=i("".slice),h=Math.ceil,u=function(e){return function(t,i,s){var u,c,p=n(a(t)),d=r(i),f=p.length,m=void 0===s?" ":n(s);return d<=f||""==m?p:((c=o(m,h((u=d-f)/m.length))).length>u&&(c=l(c,0,u)),e?p+c:c+p)}};t.exports={start:u(!1),end:u(!0)}})),PZ=z(((e,t)=>{"use strict";var i=Nt(),r=Mt(),n=cR().start,s=RangeError,a=isFinite,o=Math.abs,l=Date.prototype,h=l.toISOString,u=i(l.getTime),c=i(l.getUTCDate),p=i(l.getUTCFullYear),d=i(l.getUTCHours),f=i(l.getUTCMilliseconds),m=i(l.getUTCMinutes),g=i(l.getUTCMonth),y=i(l.getUTCSeconds);t.exports=r((function(){return"0385-07-25T07:06:39.999Z"!=h.call(new Date(-50000000000001))}))||!r((function(){h.call(new Date(NaN))}))?function(){if(!a(u(this)))throw s("Invalid time value");var e=this,t=p(e),i=f(e),r=t<0?"-":t>9999?"+":"";return r+n(o(t),r?6:4,0)+"-"+n(g(e)+1,2,0)+"-"+n(c(e),2,0)+"T"+n(d(e),2,0)+":"+n(m(e),2,0)+":"+n(y(e),2,0)+"."+n(i,3,0)+"Z"}:h})),LZ=z((()=>{var e=Le(),t=PZ();e({target:"Date",proto:!0,forced:Date.prototype.toISOString!==t},{toISOString:t})})),FZ=z((()=>{"use strict";var e=Le(),t=Mt(),i=Hi(),r=u1();e({target:"Date",proto:!0,arity:1,forced:t((function(){return null!==new Date(NaN).toJSON()||1!==Date.prototype.toJSON.call({toISOString:function(){return 1}})}))},{toJSON:function(e){var t=i(this),n=r(t,"number");return"number"!=typeof n||isFinite(n)?t.toISOString():null}})})),UZ=z(((e,t)=>{"use strict";var i=Yr(),r=y2(),n=TypeError;t.exports=function(e){if(i(this),"string"===e||"default"===e)e="string";else if("number"!==e)throw n("Incorrect hint");return r(this,e)}})),GZ=z((()=>{var e=wi(),t=An(),i=UZ(),r=vi()("toPrimitive"),n=Date.prototype;e(n,r)||t(n,r,i)})),WZ=z((()=>{var e=Nt(),t=An(),i=Date.prototype,r="Invalid Date",n="toString",s=e(i[n]),a=e(i.getTime);String(new Date(NaN))!=r&&t(i,n,(function(){var e=a(this);return e==e?s(this):r}))})),YZ=z((()=>{"use strict";var e=Le(),t=Nt(),i=ai(),r=t("".charAt),n=t("".charCodeAt),s=t(/./.exec),a=t(1..toString),o=t("".toUpperCase),l=/[\w*+\-./@]/,h=function(e,t){for(var i=a(e,16);i.length{"use strict";var i=Nt(),r=Gn(),n=gi(),s=wi(),a=Pd(),o=iv(),l=Function,h=i([].concat),u=i([].join),c={},p=function(e,t,i){if(!s(c,t)){for(var r=[],n=0;n{var e=Le(),t=bL();e({target:"Function",proto:!0,forced:Function.bind!==t},{bind:t})})),rK=z((()=>{"use strict";var e=mi(),t=gi(),i=wn(),r=No(),n=vi(),s=mw(),a=n("hasInstance"),o=Function.prototype;a in o||i.f(o,a,{value:s((function(i){if(!e(this)||!t(i))return!1;var n=this.prototype;if(!t(n))return i instanceof this;for(;i=r(i);)if(n===i)return!0;return!1}),a)})})),aK=z((()=>{var e=Rr(),t=Mm().EXISTS,i=Nt(),r=Ms(),n=Function.prototype,s=i(n.toString),a=/function\b(?:\s|\/\*[\S\s]*?\*\/|\/\/[^\n\r]*[\n\r]+)*([^\s(/]*)/,o=i(a.exec);e&&!t&&r(n,"name",{configurable:!0,get:function(){try{return o(a,s(this))[1]}catch(e){return""}}})})),oK=z((()=>{var e=Le(),t=Qt();e({global:!0,forced:t.globalThis!==t},{globalThis:t})})),lK=z((()=>{var e=Qt();Ka()(e.JSON,"JSON",!0)})),uR=z(((e,t)=>{var i=Mt();t.exports=i((function(){if("function"==typeof ArrayBuffer){var e=new ArrayBuffer(8);Object.isExtensible(e)&&Object.defineProperty(e,"a",{value:8})}}))})),pR=z(((e,t)=>{var i=Mt(),r=gi(),n=Xs(),s=uR(),a=Object.isExtensible,o=i((function(){a(1)}));t.exports=o||s?function(e){return!(!r(e)||s&&"ArrayBuffer"==n(e))&&(!a||a(e))}:a})),Gm=z(((e,t)=>{var i=Mt();t.exports=!i((function(){return Object.isExtensible(Object.preventExtensions({}))}))})),Gd=z(((e,t)=>{var i=Le(),r=Nt(),n=sv(),s=gi(),a=wi(),o=wn().f,l=Yh(),h=Iw(),u=pR(),c=Rm(),p=Gm(),d=!1,f=c("meta"),m=0,g=function(e){o(e,f,{value:{objectID:"O"+m++,weakData:{}}})},y=t.exports={enable:function(){y.enable=function(){},d=!0;var e=l.f,t=r([].splice),n={};n[f]=1,e(n).length&&(l.f=function(i){for(var r=e(i),n=0,s=r.length;n{"use strict";var i=Le(),r=Qt(),n=Nt(),s=ov(),a=An(),o=Gd(),l=bc(),h=xc(),u=mi(),c=ba(),p=gi(),d=Mt(),f=R1(),m=Ka(),g=Nm();t.exports=function(e,t,y){var v=-1!==e.indexOf("Map"),T=-1!==e.indexOf("Weak"),x=v?"set":"add",b=r[e],_=b&&b.prototype,E=b,w={},S=function(e){var t=n(_[e]);a(_,e,"add"==e?function(e){return t(this,0===e?0:e),this}:"delete"==e?function(e){return!(T&&!p(e))&&t(this,0===e?0:e)}:"get"==e?function(e){return T&&!p(e)?void 0:t(this,0===e?0:e)}:"has"==e?function(e){return!(T&&!p(e))&&t(this,0===e?0:e)}:function(e,i){return t(this,0===e?0:e,i),this})};if(s(e,!u(b)||!(T||_.forEach&&!d((function(){(new b).entries().next()})))))E=y.getConstructor(t,e,v,x),o.enable();else if(s(e,!0)){var I=new E,M=I[x](T?{}:-0,1)!=I,A=d((function(){I.has(1)})),D=f((function(e){new b(e)})),O=!T&&d((function(){for(var e=new b,t=5;t--;)e[x](t,t);return!e.has(-0)}));D||((E=t((function(e,t){h(e,_);var i=g(new b,e,E);return c(t)||l(t,i[x],{that:i,AS_ENTRIES:v}),i}))).prototype=_,_.constructor=E),(A||O)&&(S("delete"),S("has"),v&&S("get")),(O||M)&&S(x),T&&_.clear&&delete _.clear}return w[e]=E,i({global:!0,constructor:!0,forced:E!=b},w),m(E,e),T||y.setStrong(E,e,v),E}})),CL=z(((e,t)=>{"use strict";var i=Za(),r=Ms(),n=yv(),s=ml(),a=xc(),o=ba(),l=bc(),h=jw(),u=C1(),c=Hm(),p=Rr(),d=Gd().fastKey,f=ps(),m=f.set,g=f.getterFor;t.exports={getConstructor:function(e,t,h,u){var c=e((function(e,r){a(e,f),m(e,{type:t,index:i(null),first:void 0,last:void 0,size:0}),p||(e.size=0),o(r)||l(r,e[u],{that:e,AS_ENTRIES:h})})),f=c.prototype,y=g(t),v=function(e,t,i){var r,n,s=y(e),a=T(e,t);return a?a.value=i:(s.last=a={index:n=d(t,!0),key:t,value:i,previous:r=s.last,next:void 0,removed:!1},s.first||(s.first=a),r&&(r.next=a),p?s.size++:e.size++,"F"!==n&&(s.index[n]=a)),e},T=function(e,t){var i,r=y(e),n=d(t);if("F"!==n)return r.index[n];for(i=r.first;i;i=i.next)if(i.key==t)return i};return n(f,{clear:function(){for(var e=y(this),t=e.index,i=e.first;i;)i.removed=!0,i.previous&&(i.previous=i.previous.next=void 0),delete t[i.index],i=i.next;e.first=e.last=void 0,p?e.size=0:this.size=0},delete:function(e){var t=this,i=y(t),r=T(t,e);if(r){var n=r.next,s=r.previous;delete i.index[r.index],r.removed=!0,s&&(s.next=n),n&&(n.previous=s),i.first==r&&(i.first=n),i.last==r&&(i.last=s),p?i.size--:t.size--}return!!r},forEach:function(e){for(var t,i=y(this),r=s(e,arguments.length>1?arguments[1]:void 0);t=t?t.next:i.first;)for(r(t.value,t.key,this);t&&t.removed;)t=t.previous},has:function(e){return!!T(this,e)}}),n(f,h?{get:function(e){var t=T(this,e);return t&&t.value},set:function(e,t){return v(this,0===e?0:e,t)}}:{add:function(e){return v(this,e=0===e?0:e,e)}}),p&&r(f,"size",{configurable:!0,get:function(){return y(this).size}}),c},setStrong:function(e,t,i){var r=t+" Iterator",n=g(t),s=g(r);h(e,t,(function(e,t){m(this,{type:r,target:e,state:n(e),kind:t,last:void 0})}),(function(){for(var e=s(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),c(t)}}})),IK=z((()=>{"use strict";U1()("Map",(function(e){return function(){return e(this,arguments.length?arguments[0]:void 0)}}),CL())})),_K=z((()=>{IK()})),AL=z(((e,t)=>{var i=Math.log;t.exports=Math.log1p||function(e){var t=+e;return t>-1e-8&&t<1e-8?t-t*t/2:i(1+t)}})),RK=z((()=>{var e=Le(),t=AL(),i=Math.acosh,r=Math.log,n=Math.sqrt,s=Math.LN2;e({target:"Math",stat:!0,forced:!i||710!=Math.floor(i(Number.MAX_VALUE))||i(1/0)!=1/0},{acosh:function(e){var i=+e;return i<1?NaN:i>94906265.62425156?r(i)+s:t(i-1+n(i-1)*n(i+1))}})})),CK=z((()=>{var e=Le(),t=Math.asinh,i=Math.log,r=Math.sqrt;e({target:"Math",stat:!0,forced:!(t&&1/t(0)>0)},{asinh:function e(t){var n=+t;return isFinite(n)&&0!=n?n<0?-e(-n):i(n+r(n*n+1)):n}})})),OK=z((()=>{var e=Le(),t=Math.atanh,i=Math.log;e({target:"Math",stat:!0,forced:!(t&&1/t(-0)<0)},{atanh:function(e){var t=+e;return 0==t?t:i((1+t)/(1-t))/2}})})),fR=z(((e,t)=>{t.exports=Math.sign||function(e){var t=+e;return 0==t||t!=t?t:t<0?-1:1}})),NK=z((()=>{var e=Le(),t=fR(),i=Math.abs,r=Math.pow;e({target:"Math",stat:!0},{cbrt:function(e){var n=+e;return t(n)*r(i(n),1/3)}})})),LK=z((()=>{var e=Le(),t=Math.floor,i=Math.log,r=Math.LOG2E;e({target:"Math",stat:!0},{clz32:function(e){var n=e>>>0;return n?31-t(i(n+.5)*r):32}})})),G1=z(((e,t)=>{var i=Math.expm1,r=Math.exp;t.exports=!i||i(10)>22025.465794806718||i(10)<22025.465794806718||-2e-17!=i(-2e-17)?function(e){var t=+e;return 0==t?t:t>-1e-6&&t<1e-6?t+t*t/2:r(t)-1}:i})),UK=z((()=>{var e=Le(),t=G1(),i=Math.cosh,r=Math.abs,n=Math.E;e({target:"Math",stat:!0,forced:!i||i(710)===1/0},{cosh:function(e){var i=t(r(e)-1)+1;return(i+1/(i*n*n))*(n/2)}})})),kK=z((()=>{var e=Le(),t=G1();e({target:"Math",stat:!0,forced:t!=Math.expm1},{expm1:t})})),VK=z(((e,t)=>{var i=fR(),r=Math.abs,n=Math.pow,s=n(2,-52),a=n(2,-23),o=n(2,127)*(2-a),l=n(2,-126);t.exports=Math.fround||function(e){var t,n,h=+e,u=r(h),c=i(h);return uo||n!=n?c*(1/0):c*n}})),zK=z((()=>{Le()({target:"Math",stat:!0},{fround:VK()})})),WK=z((()=>{var e=Le(),t=Math.hypot,i=Math.abs,r=Math.sqrt;e({target:"Math",stat:!0,arity:2,forced:!!t&&t(1/0,NaN)!==1/0},{hypot:function(e,t){for(var n,s,a=0,o=0,l=arguments.length,h=0;o0?a+=(s=n/h)*s:a+=n;return h===1/0?1/0:h*r(a)}})})),YK=z((()=>{var e=Le(),t=Mt(),i=Math.imul;e({target:"Math",stat:!0,forced:t((function(){return-5!=i(4294967295,5)||2!=i.length}))},{imul:function(e,t){var i=65535,r=+e,n=+t,s=i&r,a=i&n;return 0|s*a+((i&r>>>16)*a+s*(i&n>>>16)<<16>>>0)}})})),FL=z(((e,t)=>{var i=Math.log,r=Math.LOG10E;t.exports=Math.log10||function(e){return i(e)*r}})),$K=z((()=>{Le()({target:"Math",stat:!0},{log10:FL()})})),ZK=z((()=>{Le()({target:"Math",stat:!0},{log1p:AL()})})),KK=z((()=>{var e=Le(),t=Math.log,i=Math.LN2;e({target:"Math",stat:!0},{log2:function(e){return t(e)/i}})})),JK=z((()=>{Le()({target:"Math",stat:!0},{sign:fR()})})),tJ=z((()=>{var e=Le(),t=Mt(),i=G1(),r=Math.abs,n=Math.exp,s=Math.E;e({target:"Math",stat:!0,forced:t((function(){return-2e-17!=Math.sinh(-2e-17)}))},{sinh:function(e){var t=+e;return r(t)<1?(i(t)-i(-t))/2:(n(t-1)-n(-t-1))*(s/2)}})})),nJ=z((()=>{var e=Le(),t=G1(),i=Math.exp;e({target:"Math",stat:!0},{tanh:function(e){var r=+e,n=t(r),s=t(-r);return n==1/0?1:s==1/0?-1:(n-s)/(i(r)+i(-r))}})})),sJ=z((()=>{Ka()(Math,"Math",!0)})),aJ=z((()=>{Le()({target:"Math",stat:!0},{trunc:F2()})})),V1=z(((e,t)=>{var i=Nt();t.exports=i(1..valueOf)})),z1=z(((e,t)=>{t.exports="\t\n\v\f\r                 \u2028\u2029\ufeff"})),Vm=z(((e,t)=>{var i=Nt(),r=hs(),n=ai(),s=z1(),a=i("".replace),o=RegExp("^["+s+"]+"),l=RegExp("(^|[^"+s+"])["+s+"]+$"),h=function(e){return function(t){var i=n(r(t));return 1&e&&(i=a(i,o,"")),2&e&&(i=a(i,l,"$1")),i}};t.exports={start:h(1),end:h(2),trim:h(3)}})),vJ=z((()=>{"use strict";var e=Le(),t=Vn(),i=Rr(),r=Qt(),n=_w(),s=Nt(),a=ov(),o=wi(),l=Nm(),h=Oo(),u=Cd(),c=u1(),p=Mt(),d=Yh().f,f=ks().f,m=wn().f,g=V1(),y=Vm().trim,v="Number",T=r[v],x=n[v],b=T.prototype,_=r.TypeError,E=s("".slice),w=s("".charCodeAt),S=function(e){var t=c(e,"number");return"bigint"==typeof t?t:I(t)},I=function(e){var t,i,r,n,s,a,o,l,h=c(e,"number");if(u(h))throw _("Cannot convert a Symbol value to a number");if("string"==typeof h&&h.length>2)if(h=y(h),43===(t=w(h,0))||45===t){if(88===(i=w(h,2))||120===i)return NaN}else if(48===t){switch(w(h,1)){case 66:case 98:r=2,n=49;break;case 79:case 111:r=8,n=55;break;default:return+h}for(a=(s=E(h,2)).length,o=0;on)return NaN;return parseInt(s,r)}return+h},M=a(v,!T(" 0o1")||!T("0b1")||T("+0x1")),A=function(e){return h(b,e)&&p((function(){g(e)}))},D=function(e){var t=arguments.length<1?0:T(S(e));return A(this)?l(Object(t),this,D):t};D.prototype=b,M&&!t&&(b.constructor=D),e({global:!0,constructor:!0,wrap:!0,forced:M},{Number:D});var O=function(e,t){for(var r,n=i?d(t):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,isFinite,isInteger,isNaN,isSafeInteger,parseFloat,parseInt,fromString,range".split(","),s=0;n.length>s;s++)o(t,r=n[s])&&!o(e,r)&&m(e,r,f(t,r))};t&&x&&O(n[v],x),(M||t)&&O(n[v],T)})),yJ=z((()=>{Le()({target:"Number",stat:!0,nonConfigurable:!0,nonWritable:!0},{EPSILON:Math.pow(2,-52)})})),EJ=z(((e,t)=>{var i=Qt().isFinite;t.exports=Number.isFinite||function(e){return"number"==typeof e&&i(e)}})),bJ=z((()=>{Le()({target:"Number",stat:!0},{isFinite:EJ()})})),TR=z(((e,t)=>{var i=gi(),r=Math.floor;t.exports=Number.isInteger||function(e){return!i(e)&&isFinite(e)&&r(e)===e}})),IJ=z((()=>{Le()({target:"Number",stat:!0},{isInteger:TR()})})),_J=z((()=>{Le()({target:"Number",stat:!0},{isNaN:function(e){return e!=e}})})),SJ=z((()=>{var e=Le(),t=TR(),i=Math.abs;e({target:"Number",stat:!0},{isSafeInteger:function(e){return t(e)&&i(e)<=9007199254740991}})})),wJ=z((()=>{Le()({target:"Number",stat:!0,nonConfigurable:!0,nonWritable:!0},{MAX_SAFE_INTEGER:9007199254740991})})),RJ=z((()=>{Le()({target:"Number",stat:!0,nonConfigurable:!0,nonWritable:!0},{MIN_SAFE_INTEGER:-9007199254740991})})),zL=z(((e,t)=>{var i=Qt(),r=Mt(),n=Nt(),s=ai(),a=Vm().trim,o=z1(),l=n("".charAt),h=i.parseFloat,u=i.Symbol,c=u&&u.iterator,p=1/h(o+"-0")!=-1/0||c&&!r((function(){h(Object(c))}));t.exports=p?function(e){var t=a(s(e)),i=h(t);return 0===i&&"-"==l(t,0)?-0:i}:h})),PJ=z((()=>{var e=Le(),t=zL();e({target:"Number",stat:!0,forced:Number.parseFloat!=t},{parseFloat:t})})),jL=z(((e,t)=>{var i=Qt(),r=Mt(),n=Nt(),s=ai(),a=Vm().trim,o=z1(),l=i.parseInt,h=i.Symbol,u=h&&h.iterator,c=/^[+-]?0x/i,p=n(c.exec),d=8!==l(o+"08")||22!==l(o+"0x16")||u&&!r((function(){l(Object(u))}));t.exports=d?function(e,t){var i=a(s(e));return l(i,t>>>0||(p(c,i)?16:10))}:l})),GJ=z((()=>{var e=Le(),t=jL();e({target:"Number",stat:!0,forced:Number.parseInt!=t},{parseInt:t})})),qJ=z((()=>{"use strict";var e=Le(),t=Nt(),i=zn(),r=V1(),n=F1(),s=FL(),a=Mt(),o=RangeError,l=String,h=isFinite,u=Math.abs,c=Math.floor,p=Math.pow,d=Math.round,f=t(1..toExponential),m=t(n),g=t("".slice),y="-6.9000e-11"===f(-69e-12,4)&&"1.25e+0"===f(1.255,2)&&"1.235e+4"===f(12345,3)&&"3e+1"===f(25,0);e({target:"Number",proto:!0,forced:!y||!(a((function(){f(1,1/0)}))&&a((function(){f(1,-1/0)})))||!!a((function(){f(1/0,1/0),f(NaN,1/0)}))},{toExponential:function(e){var t=r(this);if(void 0===e)return f(t);var n=i(e);if(!h(t))return String(t);if(n<0||n>20)throw o("Incorrect fraction digits");if(y)return f(t,n);var a="",v="",T=0,x="",b="";if(t<0&&(a="-",t=-t),0===t)T=0,v=m("0",n+1);else{var _=s(t);T=c(_);var E=0,w=p(10,T-n);2*t>=(2*(E=d(t/w))+1)*w&&(E+=1),E>=p(10,n+1)&&(E/=10,T+=1),v=l(E)}return 0!==n&&(v=g(v,0,1)+"."+g(v,1)),0===T?(x="+",b="0"):(x=T>0?"+":"-",b=l(u(T))),a+(v+="e"+x+b)}})})),JJ=z((()=>{"use strict";var e=Le(),t=Nt(),i=zn(),r=V1(),n=F1(),s=Mt(),a=RangeError,o=String,l=Math.floor,h=t(n),u=t("".slice),c=t(1..toFixed),p=function(e,t,i){return 0===t?i:t%2==1?p(e,t-1,i*e):p(e*e,t/2,i)},d=function(e,t,i){for(var r=-1,n=i;++r<6;)n+=t*e[r],e[r]=n%1e7,n=l(n/1e7)},f=function(e,t){for(var i=6,r=0;--i>=0;)r+=e[i],e[i]=l(r/t),r=r%t*1e7},m=function(e){for(var t=6,i="";--t>=0;)if(""!==i||0===t||0!==e[t]){var r=o(e[t]);i=""===i?r:i+h("0",7-r.length)+r}return i};e({target:"Number",proto:!0,forced:s((function(){return"0.000"!==c(8e-5,3)||"1"!==c(.9,0)||"1.25"!==c(1.255,2)||"1000000000000000128"!==c(0xde0b6b3a7640080,0)}))||!s((function(){c({})}))},{toFixed:function(e){var t,n,s,l,c=r(this),g=i(e),y=[0,0,0,0,0,0],v="",T="0";if(g<0||g>20)throw a("Incorrect fraction digits");if(c!=c)return"NaN";if(c<=-1e21||c>=1e21)return o(c);if(c<0&&(v="-",c=-c),c>1e-21)if(t=function(e){for(var t=0,i=e;i>=4096;)t+=12,i/=4096;for(;i>=2;)t+=1,i/=2;return t}(c*p(2,69,1))-69,n=t<0?c*p(2,-t,1):c/p(2,t,1),n*=4503599627370496,(t=52-t)>0){for(d(y,0,n),s=g;s>=7;)d(y,1e7,0),s-=7;for(d(y,p(10,s,1),0),s=t-1;s>=23;)f(y,1<<23),s-=23;f(y,1<0?T=v+((l=T.length)<=g?"0."+h("0",g-l)+T:u(T,0,l-g)+"."+u(T,l-g)):T=v+T,T}})})),tQ=z((()=>{"use strict";var e=Le(),t=Nt(),i=Mt(),r=V1(),n=t(1..toPrecision);e({target:"Number",proto:!0,forced:i((function(){return"1"!==n(1,void 0)}))||!i((function(){n({})}))},{toPrecision:function(e){return void 0===e?n(r(this)):n(r(this),e)}})})),KL=z(((e,t)=>{"use strict";var i=Rr(),r=Nt(),n=Jr(),s=Mt(),a=lv(),o=f1(),l=c1(),h=Hi(),u=_m(),c=Object.assign,p=Object.defineProperty,d=r([].concat);t.exports=!c||s((function(){if(i&&1!==c({b:1},c(p({},"a",{enumerable:!0,get:function(){p(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var e={},t={},r=Symbol(),n="abcdefghijklmnopqrst";return e[r]=7,n.split("").forEach((function(e){t[e]=e})),7!=c({},e)[r]||a(c({},t)).join("")!=n}))?function(e,t){for(var r=h(e),s=arguments.length,c=1,p=o.f,f=l.f;s>c;)for(var m,g=u(arguments[c++]),y=p?d(a(g),p(g)):a(g),v=y.length,T=0;v>T;)m=y[T++],(!i||n(f,g,m))&&(r[m]=g[m]);return r}:c})),aQ=z((()=>{var e=Le(),t=KL();e({target:"Object",stat:!0,arity:2,forced:Object.assign!==t},{assign:t})})),oQ=z((()=>{Le()({target:"Object",stat:!0,sham:!Rr()},{create:Za()})})),Y1=z(((e,t)=>{"use strict";var i=Vn(),r=Qt(),n=Mt(),s=Xw();t.exports=i||!n((function(){if(!(s&&s<535)){var e=Math.random();__defineSetter__.call(null,e,(function(){})),delete r[e]}}))})),uQ=z((()=>{"use strict";var e=Le(),t=Rr(),i=Y1(),r=Gn(),n=Hi(),s=wn();t&&e({target:"Object",proto:!0,forced:i},{__defineGetter__:function(e,t){s.f(n(this),e,{get:r(t),enumerable:!0,configurable:!0})}})})),pQ=z((()=>{var e=Le(),t=Rr(),i=Ew().f;e({target:"Object",stat:!0,forced:Object.defineProperties!==i,sham:!t},{defineProperties:i})})),fQ=z((()=>{var e=Le(),t=Rr(),i=wn().f;e({target:"Object",stat:!0,forced:Object.defineProperty!==i,sham:!t},{defineProperty:i})})),mQ=z((()=>{"use strict";var e=Le(),t=Rr(),i=Y1(),r=Gn(),n=Hi(),s=wn();t&&e({target:"Object",proto:!0,forced:i},{__defineSetter__:function(e,t){s.f(n(this),e,{set:r(t),enumerable:!0,configurable:!0})}})})),JL=z(((e,t)=>{var i=Rr(),r=Nt(),n=lv(),s=vs(),a=r(c1().f),o=r([].push),l=function(e){return function(t){for(var r,l=s(t),h=n(l),u=h.length,c=0,p=[];u>c;)r=h[c++],(!i||a(l,r))&&o(p,e?[r,l[r]]:l[r]);return p}};t.exports={entries:l(!0),values:l(!1)}})),TQ=z((()=>{var e=Le(),t=JL().entries;e({target:"Object",stat:!0},{entries:function(e){return t(e)}})})),EQ=z((()=>{var e=Le(),t=Gm(),i=Mt(),r=gi(),n=Gd().onFreeze,s=Object.freeze;e({target:"Object",stat:!0,forced:i((function(){s(1)})),sham:!t},{freeze:function(e){return s&&r(e)?s(n(e)):e}})})),bQ=z((()=>{var e=Le(),t=bc(),i=wu();e({target:"Object",stat:!0},{fromEntries:function(e){var r={};return t(e,(function(e,t){i(r,e,t)}),{AS_ENTRIES:!0}),r}})})),_Q=z((()=>{var e=Le(),t=Mt(),i=vs(),r=ks().f,n=Rr();e({target:"Object",stat:!0,forced:!n||t((function(){r(1)})),sham:!n},{getOwnPropertyDescriptor:function(e,t){return r(i(e),t)}})})),SQ=z((()=>{var e=Le(),t=Rr(),i=vw(),r=vs(),n=ks(),s=wu();e({target:"Object",stat:!0,sham:!t},{getOwnPropertyDescriptors:function(e){for(var t,a,o=r(e),l=n.f,h=i(o),u={},c=0;h.length>c;)void 0!==(a=l(o,t=h[c++]))&&s(u,t,a);return u}})})),wQ=z((()=>{var e=Le(),t=Mt(),i=Iw().f;e({target:"Object",stat:!0,forced:t((function(){return!Object.getOwnPropertyNames(1)}))},{getOwnPropertyNames:i})})),MQ=z((()=>{var e=Le(),t=Mt(),i=Hi(),r=No(),n=Lw();e({target:"Object",stat:!0,forced:t((function(){r(1)})),sham:!n},{getPrototypeOf:function(e){return r(i(e))}})})),DQ=z((()=>{Le()({target:"Object",stat:!0},{hasOwn:wi()})})),eF=z(((e,t)=>{t.exports=Object.is||function(e,t){return e===t?0!==e||1/e==1/t:e!=e&&t!=t}})),AQ=z((()=>{Le()({target:"Object",stat:!0},{is:eF()})})),PQ=z((()=>{var e=Le(),t=pR();e({target:"Object",stat:!0,forced:Object.isExtensible!==t},{isExtensible:t})})),LQ=z((()=>{var e=Le(),t=Mt(),i=gi(),r=Xs(),n=uR(),s=Object.isFrozen;e({target:"Object",stat:!0,forced:n||t((function(){s(1)}))},{isFrozen:function(e){return!(i(e)&&(!n||"ArrayBuffer"!=r(e)))||!!s&&s(e)}})})),HQ=z((()=>{var e=Le(),t=Mt(),i=gi(),r=Xs(),n=uR(),s=Object.isSealed;e({target:"Object",stat:!0,forced:n||t((function(){s(1)}))},{isSealed:function(e){return!(i(e)&&(!n||"ArrayBuffer"!=r(e)))||!!s&&s(e)}})})),BQ=z((()=>{var e=Le(),t=Hi(),i=lv();e({target:"Object",stat:!0,forced:Mt()((function(){i(1)}))},{keys:function(e){return i(t(e))}})})),kQ=z((()=>{"use strict";var e=Le(),t=Rr(),i=Y1(),r=Hi(),n=qh(),s=No(),a=ks().f;t&&e({target:"Object",proto:!0,forced:i},{__lookupGetter__:function(e){var t,i=r(this),o=n(e);do{if(t=a(i,o))return t.get}while(i=s(i))}})})),GQ=z((()=>{"use strict";var e=Le(),t=Rr(),i=Y1(),r=Hi(),n=qh(),s=No(),a=ks().f;t&&e({target:"Object",proto:!0,forced:i},{__lookupSetter__:function(e){var t,i=r(this),o=n(e);do{if(t=a(i,o))return t.set}while(i=s(i))}})})),VQ=z((()=>{var e=Le(),t=gi(),i=Gd().onFreeze,r=Gm(),n=Mt(),s=Object.preventExtensions;e({target:"Object",stat:!0,forced:n((function(){s(1)})),sham:!r},{preventExtensions:function(e){return s&&t(e)?s(i(e)):e}})})),XQ=z((()=>{"use strict";var e=Rr(),t=Ms(),i=gi(),r=Hi(),n=hs(),s=Object.getPrototypeOf,a=Object.setPrototypeOf,o=Object.prototype,l="__proto__";if(e&&s&&a&&!(l in o))try{t(o,l,{configurable:!0,get:function(){return s(r(this))},set:function(e){var t=n(this);!i(e)&&null!==e||!i(t)||a(t,e)}})}catch(e){}})),$Q=z((()=>{var e=Le(),t=gi(),i=Gd().onFreeze,r=Gm(),n=Mt(),s=Object.seal;e({target:"Object",stat:!0,forced:n((function(){s(1)})),sham:!r},{seal:function(e){return s&&t(e)?s(i(e)):e}})})),ZQ=z((()=>{Le()({target:"Object",stat:!0},{setPrototypeOf:Ec()})})),JQ=z(((e,t)=>{"use strict";var i=yw(),r=Tc();t.exports=i?{}.toString:function(){return"[object "+r(this)+"]"}})),QQ=z((()=>{var e=yw(),t=An(),i=JQ();e||t(Object.prototype,"toString",i,{unsafe:!0})})),eee=z((()=>{var e=Le(),t=JL().values;e({target:"Object",stat:!0},{values:function(e){return t(e)}})})),ree=z((()=>{var e=Le(),t=zL();e({global:!0,forced:parseFloat!=t},{parseFloat:t})})),nee=z((()=>{var e=Le(),t=jL();e({global:!0,forced:parseInt!=t},{parseInt:t})})),np=z(((e,t)=>{var i=TypeError;t.exports=function(e,t){if(e{var i=Iu();t.exports=/(?:ipad|iphone|ipod).*applewebkit/i.test(i)})),Z1=z(((e,t)=>{var i,r,n,s,a=Qt(),o=Po(),l=ml(),h=mi(),u=wi(),c=Mt(),p=k2(),d=Pd(),f=h1(),m=np(),g=sF(),y=Du(),v=a.setImmediate,T=a.clearImmediate,x=a.process,b=a.Dispatch,_=a.Function,E=a.MessageChannel,w=a.String,S=0,I={},M="onreadystatechange";c((function(){i=a.location}));var A=function(e){if(u(I,e)){var t=I[e];delete I[e],t()}},D=function(e){return function(){A(e)}},O=function(e){A(e.data)},R=function(e){a.postMessage(w(e),i.protocol+"//"+i.host)};(!v||!T)&&(v=function(e){m(arguments.length,1);var t=h(e)?e:_(e),i=d(arguments,1);return I[++S]=function(){o(t,void 0,i)},r(S),S},T=function(e){delete I[e]},y?r=function(e){x.nextTick(D(e))}:b&&b.now?r=function(e){b.now(D(e))}:E&&!g?(s=(n=new E).port2,n.port1.onmessage=O,r=l(s.postMessage,s)):a.addEventListener&&h(a.postMessage)&&!a.importScripts&&i&&"file:"!==i.protocol&&!c(R)?(r=R,a.addEventListener("message",O,!1)):r=M in f("script")?function(e){p.appendChild(f("script"))[M]=function(){p.removeChild(this),A(e)}}:function(e){setTimeout(D(e),0)}),t.exports={set:v,clear:T}})),fF=z(((e,t)=>{var i=function(){this.head=null,this.tail=null};i.prototype={add:function(e){var t={item:e,next:null},i=this.tail;i?i.next=t:this.head=t,this.tail=t},get:function(){var e=this.head;if(e)return null===(this.head=e.next)&&(this.tail=null),e.item}},t.exports=i})),Tee=z(((e,t)=>{var i=Iu();t.exports=/ipad|iphone|ipod/i.test(i)&&"undefined"!=typeof Pebble})),bee=z(((e,t)=>{var i=Iu();t.exports=/web0s(?!.*chrome)/i.test(i)})),EF=z(((e,t)=>{var i,r,n,s,a,o,l,h=Qt(),u=ml(),c=ks().f,p=Z1().set,d=fF(),f=sF(),m=Tee(),g=bee(),y=Du(),v=h.MutationObserver||h.WebKitMutationObserver,T=h.document,x=h.process,b=h.Promise,_=c(h,"queueMicrotask"),E=_&&_.value;E||(o=new d,l=function(){var e,t;for(y&&(e=x.domain)&&e.exit();t=o.get();)try{t()}catch(e){throw o.head&&i(),e}e&&e.enter()},f||y||g||!v||!T?!m&&b&&b.resolve?((s=b.resolve(void 0)).constructor=b,a=u(s.then,s),i=function(){a(l)}):y?i=function(){x.nextTick(l)}:(p=u(p,h),i=function(){p(l)}):(r=!0,n=T.createTextNode(""),new v(l).observe(n,{characterData:!0}),i=function(){n.data=r=!r}),E=function(e){o.head||i(),o.add(e)}),t.exports=E})),Cee=z(((e,t)=>{t.exports=function(e,t){try{1==arguments.length?console.error(e):console.error(e,t)}catch(e){}}})),Dv=z(((e,t)=>{t.exports=function(e){try{return{error:!1,value:e()}}catch(e){return{error:!0,value:e}}}})),Wm=z(((e,t)=>{var i=Qt();t.exports=i.Promise})),_R=z(((e,t)=>{t.exports="object"==typeof Deno&&Deno&&"object"==typeof Deno.version})),bF=z(((e,t)=>{var i=_R(),r=Du();t.exports=!i&&!r&&"object"==typeof window&&"object"==typeof document})),Cv=z(((e,t)=>{var i=Qt(),r=Wm(),n=mi(),s=ov(),a=uw(),o=vi(),l=bF(),h=_R(),u=Vn(),c=_u(),p=r&&r.prototype,d=o("species"),f=!1,m=n(i.PromiseRejectionEvent),g=s("Promise",(function(){var e=a(r),t=e!==String(r);if(!t&&66===c||u&&(!p.catch||!p.finally))return!0;if(!c||c<51||!/native code/.test(e)){var i=new r((function(e){e(1)})),n=function(e){e((function(){}),(function(){}))};if((i.constructor={})[d]=n,!(f=i.then((function(){}))instanceof n))return!0}return!t&&(l||h)&&!m}));t.exports={CONSTRUCTOR:g,REJECTION_EVENT:m,SUBCLASSING:f}})),Vd=z(((e,t)=>{"use strict";var i=Gn(),r=TypeError,n=function(e){var t,n;this.promise=new e((function(e,i){if(void 0!==t||void 0!==n)throw r("Bad Promise constructor");t=e,n=i})),this.resolve=i(t),this.reject=i(n)};t.exports.f=function(e){return new n(e)}})),nte=z((()=>{"use strict";var e,t,i,r=Le(),n=Vn(),s=Du(),a=Qt(),o=Jr(),l=An(),h=Ec(),u=Ka(),c=Hm(),p=Gn(),d=mi(),f=gi(),m=xc(),g=Bm(),y=Z1().set,v=EF(),T=Cee(),x=Dv(),b=fF(),_=ps(),E=Wm(),w=Cv(),S=Vd(),I="Promise",M=w.CONSTRUCTOR,A=w.REJECTION_EVENT,D=w.SUBCLASSING,O=_.getterFor(I),R=_.set,C=E&&E.prototype,N=E,P=C,L=a.TypeError,F=a.document,U=a.process,k=S.f,B=k,G=!!(F&&F.createEvent&&a.dispatchEvent),z="unhandledrejection",H=function(e){var t;return!(!f(e)||!d(t=e.then))&&t},V=function(e,t){var i,r,n,s=t.value,a=1==t.state,l=a?e.ok:e.fail,h=e.resolve,u=e.reject,c=e.domain;try{l?(a||(2===t.rejection&&q(t),t.rejection=1),!0===l?i=s:(c&&c.enter(),i=l(s),c&&(c.exit(),n=!0)),i===e.promise?u(L("Promise-chain cycle")):(r=H(i))?o(r,i,h,u):h(i)):u(s)}catch(e){c&&!n&&c.exit(),u(e)}},j=function(e,t){e.notified||(e.notified=!0,v((function(){for(var i,r=e.reactions;i=r.get();)V(i,e);e.notified=!1,t&&!e.rejection&&Y(e)})))},W=function(e,t,i){var r,n;G?((r=F.createEvent("Event")).promise=t,r.reason=i,r.initEvent(e,!1,!0),a.dispatchEvent(r)):r={promise:t,reason:i},!A&&(n=a["on"+e])?n(r):e===z&&T("Unhandled promise rejection",i)},Y=function(e){o(y,a,(function(){var t,i=e.facade,r=e.value;if(X(e)&&(t=x((function(){s?U.emit("unhandledRejection",r,i):W(z,i,r)})),e.rejection=s||X(e)?2:1,t.error))throw t.value}))},X=function(e){return 1!==e.rejection&&!e.parent},q=function(e){o(y,a,(function(){var t=e.facade;s?U.emit("rejectionHandled",t):W("rejectionhandled",t,e.value)}))},Z=function(e,t,i){return function(r){e(t,r,i)}},K=function(e,t,i){e.done||(e.done=!0,i&&(e=i),e.value=t,e.state=2,j(e,!0))},$=function(e,t,i){if(!e.done){e.done=!0,i&&(e=i);try{if(e.facade===t)throw L("Promise can't be resolved itself");var r=H(t);r?v((function(){var i={done:!1};try{o(r,t,Z($,i,e),Z(K,i,e))}catch(t){K(i,t,e)}})):(e.value=t,e.state=1,j(e,!1))}catch(t){K({done:!1},t,e)}}};if(M&&(P=(N=function(t){m(this,P),p(t),o(e,this);var i=O(this);try{t(Z($,i),Z(K,i))}catch(e){K(i,e)}}).prototype,(e=function(e){R(this,{type:I,done:!1,notified:!1,parent:!1,reactions:new b,rejection:!1,state:0,value:void 0})}).prototype=l(P,"then",(function(e,t){var i=O(this),r=k(g(this,N));return i.parent=!0,r.ok=!d(e)||e,r.fail=d(t)&&t,r.domain=s?U.domain:void 0,0==i.state?i.reactions.add(r):v((function(){V(r,i)})),r.promise})),t=function(){var t=new e,i=O(t);this.promise=t,this.resolve=Z($,i),this.reject=Z(K,i)},S.f=k=function(e){return e===N||undefined===e?new t(e):B(e)},!n&&d(E)&&C!==Object.prototype)){i=C.then,D||l(C,"then",(function(e,t){var r=this;return new N((function(e,t){o(i,r,e,t)})).then(e,t)}),{unsafe:!0});try{delete C.constructor}catch(e){}h&&h(C,P)}r({global:!0,constructor:!0,wrap:!0,forced:M},{Promise:N}),u(N,I,!1,!0),c(I)})),eb=z(((e,t)=>{var i=Wm(),r=R1(),n=Cv().CONSTRUCTOR;t.exports=n||!r((function(e){i.all(e).then(void 0,(function(){}))}))})),ate=z((()=>{"use strict";var e=Le(),t=Jr(),i=Gn(),r=Vd(),n=Dv(),s=bc();e({target:"Promise",stat:!0,forced:eb()},{all:function(e){var a=this,o=r.f(a),l=o.resolve,h=o.reject,u=n((function(){var r=i(a.resolve),n=[],o=0,u=1;s(e,(function(e){var i=o++,s=!1;u++,t(r,a,e).then((function(e){s||(s=!0,n[i]=e,--u||l(n))}),h)})),--u||l(n)}));return u.error&&h(u.value),o.promise}})})),lte=z((()=>{"use strict";var e,t=Le(),i=Vn(),r=Cv().CONSTRUCTOR,n=Wm(),s=Sn(),a=mi(),o=An(),l=n&&n.prototype;t({target:"Promise",proto:!0,forced:r,real:!0},{catch:function(e){return this.then(void 0,e)}}),!i&&a(n)&&(e=s("Promise").prototype.catch,l.catch!==e&&o(l,"catch",e,{unsafe:!0}))})),cte=z((()=>{"use strict";var e=Le(),t=Jr(),i=Gn(),r=Vd(),n=Dv(),s=bc();e({target:"Promise",stat:!0,forced:eb()},{race:function(e){var a=this,o=r.f(a),l=o.reject,h=n((function(){var r=i(a.resolve);s(e,(function(e){t(r,a,e).then(o.resolve,l)}))}));return h.error&&l(h.value),o.promise}})})),ute=z((()=>{"use strict";var e=Le(),t=Jr(),i=Vd();e({target:"Promise",stat:!0,forced:Cv().CONSTRUCTOR},{reject:function(e){var r=i.f(this);return t(r.reject,void 0,e),r.promise}})})),NF=z(((e,t)=>{var i=Yr(),r=gi(),n=Vd();t.exports=function(e,t){if(i(e),r(t)&&t.constructor===e)return t;var s=n.f(e);return(0,s.resolve)(t),s.promise}})),fte=z((()=>{"use strict";var e=Le(),t=Sn(),i=Vn(),r=Wm(),n=Cv().CONSTRUCTOR,s=NF(),a=t("Promise"),o=i&&!n;e({target:"Promise",stat:!0,forced:i||n},{resolve:function(e){return s(o&&this===a?r:this,e)}})})),mte=z((()=>{nte(),ate(),lte(),cte(),ute(),fte()})),gte=z((()=>{"use strict";var e=Le(),t=Jr(),i=Gn(),r=Vd(),n=Dv(),s=bc();e({target:"Promise",stat:!0,forced:eb()},{allSettled:function(e){var a=this,o=r.f(a),l=o.resolve,h=o.reject,u=n((function(){var r=i(a.resolve),n=[],o=0,h=1;s(e,(function(e){var i=o++,s=!1;h++,t(r,a,e).then((function(e){s||(s=!0,n[i]={status:"fulfilled",value:e},--h||l(n))}),(function(e){s||(s=!0,n[i]={status:"rejected",reason:e},--h||l(n))}))})),--h||l(n)}));return u.error&&h(u.value),o.promise}})})),yte=z((()=>{"use strict";var e=Le(),t=Jr(),i=Gn(),r=Sn(),n=Vd(),s=Dv(),a=bc(),o=eb(),l="No one promise resolved";e({target:"Promise",stat:!0,forced:o},{any:function(e){var o=this,h=r("AggregateError"),u=n.f(o),c=u.resolve,p=u.reject,d=s((function(){var r=i(o.resolve),n=[],s=0,u=1,d=!1;a(e,(function(e){var i=s++,a=!1;u++,t(r,o,e).then((function(e){a||d||(d=!0,c(e))}),(function(e){a||d||(a=!0,n[i]=e,--u||p(new h(n,l)))}))})),--u||p(new h(n,l))}));return d.error&&p(d.value),u.promise}})})),xte=z((()=>{"use strict";var e,t=Le(),i=Vn(),r=Wm(),n=Mt(),s=Sn(),a=mi(),o=Bm(),l=NF(),h=An(),u=r&&r.prototype;t({target:"Promise",proto:!0,real:!0,forced:!!r&&n((function(){u.finally.call({then:function(){}},(function(){}))}))},{finally:function(e){var t=o(this,s("Promise")),i=a(e);return this.then(i?function(i){return l(t,e()).then((function(){return i}))}:e,i?function(i){return l(t,e()).then((function(){throw i}))}:e)}}),!i&&a(r)&&(e=s("Promise").prototype.finally,u.finally!==e&&h(u,"finally",e,{unsafe:!0}))})),Ite=z((()=>{var e=Le(),t=Po(),i=Gn(),r=Yr();e({target:"Reflect",stat:!0,forced:!Mt()((function(){Reflect.apply((function(){}))}))},{apply:function(e,n,s){return t(i(e),n,r(s))}})})),Cte=z((()=>{var e=Le(),t=Sn(),i=Po(),r=bL(),n=lR(),s=Yr(),a=gi(),o=Za(),l=Mt(),h=t("Reflect","construct"),u=Object.prototype,c=[].push,p=l((function(){function e(){}return!(h((function(){}),[],e)instanceof e)})),d=!l((function(){h((function(){}))})),f=p||d;e({target:"Reflect",stat:!0,forced:f,sham:f},{construct:function(e,t){n(e),s(t);var l=arguments.length<3?e:n(arguments[2]);if(d&&!p)return h(e,t,l);if(e==l){switch(t.length){case 0:return new e;case 1:return new e(t[0]);case 2:return new e(t[0],t[1]);case 3:return new e(t[0],t[1],t[2]);case 4:return new e(t[0],t[1],t[2],t[3])}var f=[null];return i(c,f,t),new(i(r,e,f))}var m=l.prototype,g=o(a(m)?m:u),y=i(e,g,t);return a(y)?y:g}})})),Pte=z((()=>{var e=Le(),t=Rr(),i=Yr(),r=qh(),n=wn();e({target:"Reflect",stat:!0,forced:Mt()((function(){Reflect.defineProperty(n.f({},1,{value:1}),1,{value:2})})),sham:!t},{defineProperty:function(e,t,s){i(e);var a=r(t);i(s);try{return n.f(e,a,s),!0}catch(e){return!1}}})})),Nte=z((()=>{var e=Le(),t=Yr(),i=ks().f;e({target:"Reflect",stat:!0},{deleteProperty:function(e,r){var n=i(t(e),r);return!(n&&!n.configurable)&&delete e[r]}})})),BF=z(((e,t)=>{var i=wi();t.exports=function(e){return void 0!==e&&(i(e,"value")||i(e,"writable"))}})),Ute=z((()=>{var e=Le(),t=Jr(),i=gi(),r=Yr(),n=BF(),s=ks(),a=No();e({target:"Reflect",stat:!0},{get:function e(o,l){var h,u,c=arguments.length<3?o:arguments[2];return r(o)===c?o[l]:(h=s.f(o,l))?n(h)?h.value:void 0===h.get?void 0:t(h.get,c):i(u=a(o))?e(u,l,c):void 0}})})),Bte=z((()=>{var e=Le(),t=Rr(),i=Yr(),r=ks();e({target:"Reflect",stat:!0,sham:!t},{getOwnPropertyDescriptor:function(e,t){return r.f(i(e),t)}})})),kte=z((()=>{var e=Le(),t=Yr(),i=No();e({target:"Reflect",stat:!0,sham:!Lw()},{getPrototypeOf:function(e){return i(t(e))}})})),Gte=z((()=>{Le()({target:"Reflect",stat:!0},{has:function(e,t){return t in e}})})),Vte=z((()=>{var e=Le(),t=Yr(),i=pR();e({target:"Reflect",stat:!0},{isExtensible:function(e){return t(e),i(e)}})})),zte=z((()=>{Le()({target:"Reflect",stat:!0},{ownKeys:vw()})})),jte=z((()=>{var e=Le(),t=Sn(),i=Yr();e({target:"Reflect",stat:!0,sham:!Gm()},{preventExtensions:function(e){i(e);try{var r=t("Object","preventExtensions");return r&&r(e),!0}catch(e){return!1}}})})),$te=z((()=>{var e=Le(),t=Jr(),i=Yr(),r=gi(),n=BF(),s=Mt(),a=wn(),o=ks(),l=No(),h=Ao();e({target:"Reflect",stat:!0,forced:s((function(){var e=function(){},t=a.f(new e,"a",{configurable:!0});return!1!==Reflect.set(e.prototype,"a",1,t)}))},{set:function e(s,u,c){var p,d,f,m=arguments.length<4?s:arguments[3],g=o.f(i(s),u);if(!g){if(r(d=l(s)))return e(d,u,c,m);g=h(0)}if(n(g)){if(!1===g.writable||!r(m))return!1;if(p=o.f(m,u)){if(p.get||p.set||!1===p.writable)return!1;p.value=c,a.f(m,u,p)}else a.f(m,u,h(0,c))}else{if(void 0===(f=g.set))return!1;t(f,m,c)}return!0}})})),Kte=z((()=>{var e=Le(),t=Yr(),i=uN(),r=Ec();r&&e({target:"Reflect",stat:!0},{setPrototypeOf:function(e,n){t(e),i(n);try{return r(e,n),!0}catch(e){return!1}}})})),Jte=z((()=>{var e=Le(),t=Qt(),i=Ka();e({global:!0},{Reflect:{}}),i(t.Reflect,"Reflect",!0)})),Lv=z(((e,t)=>{var i=gi(),r=Xs(),n=vi()("match");t.exports=function(e){var t;return i(e)&&(void 0!==(t=e[n])?!!t:"RegExp"==r(e))}})),OR=z(((e,t)=>{"use strict";var i=Yr();t.exports=function(){var e=i(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}})),Fv=z(((e,t)=>{var i=Jr(),r=wi(),n=Oo(),s=OR(),a=RegExp.prototype;t.exports=function(e){var t=e.flags;return void 0!==t||"flags"in a||r(e,"flags")||!n(a,e)?t:i(s,e)}})),tb=z(((e,t)=>{var i=Mt(),r=Qt().RegExp,n=i((function(){var e=r("a","y");return e.lastIndex=2,null!=e.exec("abcd")})),s=n||i((function(){return!r("a","y").sticky})),a=n||i((function(){var e=r("^r","gy");return e.lastIndex=2,null!=e.exec("str")}));t.exports={BROKEN_CARET:a,MISSED_STICKY:s,UNSUPPORTED_Y:n}})),PR=z(((e,t)=>{var i=Mt(),r=Qt().RegExp;t.exports=i((function(){var e=r(".","s");return!(e.dotAll&&e.exec("\n")&&"s"===e.flags)}))})),jF=z(((e,t)=>{var i=Mt(),r=Qt().RegExp;t.exports=i((function(){var e=r("(?
b)","g");return"b"!==e.exec("b").groups.a||"bc"!=="b".replace(e,"$c")}))})),fre=z((()=>{var e,t,i,r=Rr(),n=Qt(),s=Nt(),a=ov(),o=Nm(),l=$s(),h=Yh().f,u=Oo(),c=Lv(),p=ai(),d=Fv(),f=tb(),m=hN(),g=An(),y=Mt(),v=wi(),T=ps().enforce,x=Hm(),b=vi(),_=PR(),E=jF(),w=b("match"),S=n.RegExp,I=S.prototype,M=n.SyntaxError,A=s(I.exec),D=s("".charAt),O=s("".replace),R=s("".indexOf),C=s("".slice),N=/^\?<[^\s\d!#%&*+<=>@^][^\s!#%&*+<=>@^]*>/,P=/a/g,L=/a/g,F=new S(P)!==P,U=f.MISSED_STICKY,k=f.UNSUPPORTED_Y,B=r&&(!F||U||_||E||y((function(){return L[w]=!1,S(P)!=P||S(L)==L||"/a/i"!=S(P,"i")})));if(a("RegExp",B)){for(e=function(t,i){var r,n,s,a,h,f,m=u(I,this),g=c(t),y=void 0===i,x=[],b=t;if(!m&&g&&y&&t.constructor===e)return t;if((g||u(I,t))&&(t=t.source,y&&(i=d(b))),t=void 0===t?"":p(t),i=void 0===i?"":p(i),b=t,_&&"dotAll"in P&&((n=!!i&&R(i,"s")>-1)&&(i=O(i,/s/g,""))),r=i,U&&"sticky"in P&&((s=!!i&&R(i,"y")>-1)&&k&&(i=O(i,/y/g,""))),E&&(a=function(e){for(var t,i=e.length,r=0,n="",s=[],a={},o=!1,l=!1,h=0,u="";r<=i;r++){if("\\"===(t=D(e,r)))t+=D(e,++r);else if("]"===t)o=!1;else if(!o)switch(!0){case"["===t:o=!0;break;case"("===t:A(N,C(e,r+1))&&(r+=2,l=!0),n+=t,h++;continue;case">"===t&&l:if(""===u||v(a,u))throw new M("Invalid capture group name");a[u]=!0,s[s.length]=[u,h],l=!1,u="";continue}l?u+=t:n+=t}return[n,s]}(t),t=a[0],x=a[1]),h=o(S(t,i),m?this:I,e),(n||s||x.length)&&(f=T(h),n&&(f.dotAll=!0,f.raw=e(function(e){for(var t,i=e.length,r=0,n="",s=!1;r<=i;r++)"\\"!==(t=D(e,r))?s||"."!==t?("["===t?s=!0:"]"===t&&(s=!1),n+=t):n+="[\\s\\S]":n+=t+D(e,++r);return n}(t),r)),s&&(f.sticky=!0),x.length&&(f.groups=x)),t!==b)try{l(h,"source",""===b?"(?:)":b)}catch(e){}return h},t=h(S),i=0;t.length>i;)m(e,S,t[i++]);I.constructor=e,e.prototype=I,g(n,"RegExp",e,{constructor:!0})}x("RegExp")})),gre=z((()=>{var e=Rr(),t=PR(),i=Xs(),r=Ms(),n=ps().get,s=RegExp.prototype,a=TypeError;e&&t&&r(s,"dotAll",{configurable:!0,get:function(){if(this!==s){if("RegExp"===i(this))return!!n(this).dotAll;throw a("Incompatible receiver, RegExp required")}}})})),ib=z(((e,t)=>{"use strict";var i,r,n=Jr(),s=Nt(),a=ai(),o=OR(),l=tb(),h=wm(),u=Za(),c=ps().get,p=PR(),d=jF(),f=h("native-string-replace",String.prototype.replace),m=RegExp.prototype.exec,g=m,y=s("".charAt),v=s("".indexOf),T=s("".replace),x=s("".slice),b=(r=/b*/g,n(m,i=/a/,"a"),n(m,r,"a"),0!==i.lastIndex||0!==r.lastIndex),_=l.BROKEN_CARET,E=void 0!==/()??/.exec("")[1];(b||E||_||p||d)&&(g=function(e){var t,i,r,s,l,h,p,d=this,w=c(d),S=a(e),I=w.raw;if(I)return I.lastIndex=d.lastIndex,t=n(g,I,S),d.lastIndex=I.lastIndex,t;var M=w.groups,A=_&&d.sticky,D=n(o,d),O=d.source,R=0,C=S;if(A&&(D=T(D,"y",""),-1===v(D,"g")&&(D+="g"),C=x(S,d.lastIndex),d.lastIndex>0&&(!d.multiline||d.multiline&&"\n"!==y(S,d.lastIndex-1))&&(O="(?: "+O+")",C=" "+C,R++),i=new RegExp("^(?:"+O+")",D)),E&&(i=new RegExp("^"+O+"$(?!\\s)",D)),b&&(r=d.lastIndex),s=n(m,A?i:d,C),A?s?(s.input=x(s.input,R),s[0]=x(s[0],R),s.index=d.lastIndex,d.lastIndex+=s[0].length):d.lastIndex=0:b&&s&&(d.lastIndex=d.global?s.index+s[0].length:r),E&&s&&s.length>1&&n(f,s[0],i,(function(){for(l=1;l{"use strict";var e=Le(),t=ib();e({target:"RegExp",proto:!0,forced:/./.exec!==t},{exec:t})})),xre=z((()=>{var e=Qt(),t=Rr(),i=Ms(),r=OR(),n=Mt(),s=e.RegExp,a=s.prototype;t&&n((function(){var e=!0;try{s(".","d")}catch(t){e=!1}var t={},i="",r=e?"dgimsy":"gimsy",n=function(e,r){Object.defineProperty(t,e,{get:function(){return i+=r,!0}})},o={dotAll:"s",global:"g",ignoreCase:"i",multiline:"m",sticky:"y"};for(var l in e&&(o.hasIndices="d"),o)n(l,o[l]);return Object.getOwnPropertyDescriptor(a,"flags").get.call(t)!==r||i!==r}))&&i(a,"flags",{configurable:!0,get:r})})),_re=z((()=>{var e=Rr(),t=tb().MISSED_STICKY,i=Xs(),r=Ms(),n=ps().get,s=RegExp.prototype,a=TypeError;e&&t&&r(s,"sticky",{configurable:!0,get:function(){if(this!==s){if("RegExp"===i(this))return!!n(this).sticky;throw a("Incompatible receiver, RegExp required")}}})})),Rre=z((()=>{"use strict";HR();var e,t,i=Le(),r=Jr(),n=mi(),s=Yr(),a=ai(),o=(e=!1,(t=/[ac]/).exec=function(){return e=!0,/./.exec.apply(this,arguments)},!0===t.test("abc")&&e),l=/./.test;i({target:"RegExp",proto:!0,forced:!o},{test:function(e){var t=s(this),i=a(e),o=t.exec;if(!n(o))return r(l,t,i);var h=r(o,t,i);return null!==h&&(s(h),!0)}})})),Cre=z((()=>{"use strict";var e=Mm().PROPER,t=An(),i=Yr(),r=ai(),n=Mt(),s=Fv(),a="toString",o=RegExp.prototype[a],l=n((function(){return"/a/b"!=o.call({source:"a",flags:"b"})})),h=e&&o.name!=a;(l||h)&&t(RegExp.prototype,a,(function(){var e=i(this);return"/"+r(e.source)+"/"+r(s(e))}),{unsafe:!0})})),Are=z((()=>{"use strict";U1()("Set",(function(e){return function(){return e(this,arguments.length?arguments[0]:void 0)}}),CL())})),Ore=z((()=>{Are()})),Pre=z((()=>{"use strict";var e=Le(),t=Nt(),i=hs(),r=zn(),n=ai(),s=Mt(),a=t("".charAt);e({target:"String",proto:!0,forced:s((function(){return"\ud842"!=="𠮷".at(-2)}))},{at:function(e){var t=n(i(this)),s=t.length,o=r(e),l=o>=0?o:s+o;return l<0||l>=s?void 0:a(t,l)}})})),nb=z(((e,t)=>{var i=Nt(),r=zn(),n=ai(),s=hs(),a=i("".charAt),o=i("".charCodeAt),l=i("".slice),h=function(e){return function(t,i){var h,u,c=n(s(t)),p=r(i),d=c.length;return p<0||p>=d?e?"":void 0:(h=o(c,p))<55296||h>56319||p+1===d||(u=o(c,p+1))<56320||u>57343?e?a(c,p):h:e?l(c,p,p+2):u-56320+(h-55296<<10)+65536}};t.exports={codeAt:h(!1),charAt:h(!0)}})),Hre=z((()=>{"use strict";var e=Le(),t=nb().codeAt;e({target:"String",proto:!0},{codePointAt:function(e){return t(this,e)}})})),UR=z(((e,t)=>{var i=Lv(),r=TypeError;t.exports=function(e){if(i(e))throw r("The method doesn't accept regular expressions");return e}})),BR=z(((e,t)=>{var i=vi()("match");t.exports=function(e){var t=/./;try{"/./"[e](t)}catch(r){try{return t[i]=!1,"/./"[e](t)}catch(e){}}return!1}})),jre=z((()=>{"use strict";var e,t=Le(),i=Xh(),r=ks().f,n=$a(),s=ai(),a=UR(),o=hs(),l=BR(),h=Vn(),u=i("".endsWith),c=i("".slice),p=Math.min,d=l("endsWith");t({target:"String",proto:!0,forced:!!(h||d||(e=r(String.prototype,"endsWith"),!e||e.writable))&&!d},{endsWith:function(e){var t=s(o(this));a(e);var i=arguments.length>1?arguments[1]:void 0,r=t.length,l=void 0===i?r:p(n(i),r),h=s(e);return u?u(t,h,l):c(t,l-h.length,l)===h}})})),Yre=z((()=>{var e=Le(),t=Nt(),i=yc(),r=RangeError,n=String.fromCharCode,s=String.fromCodePoint,a=t([].join);e({target:"String",stat:!0,arity:1,forced:!!s&&1!=s.length},{fromCodePoint:function(e){for(var t,s=[],o=arguments.length,l=0;o>l;){if(t=+arguments[l++],i(t,1114111)!==t)throw r(t+" is not a valid code point");s[l]=t<65536?n(t):n(55296+((t-=65536)>>10),t%1024+56320)}return a(s,"")}})})),$re=z((()=>{"use strict";var e=Le(),t=Nt(),i=UR(),r=hs(),n=ai(),s=BR(),a=t("".indexOf);e({target:"String",proto:!0,forced:!s("includes")},{includes:function(e){return!!~a(n(r(this)),n(i(e)),arguments.length>1?arguments[1]:void 0)}})})),t5=z((()=>{"use strict";var e=nb().charAt,t=ai(),i=ps(),r=jw(),n=C1(),s="String Iterator",a=i.set,o=i.getterFor(s);r(String,"String",(function(e){a(this,{type:s,string:t(e),index:0})}),(function(){var t,i=o(this),r=i.string,s=i.index;return s>=r.length?n(void 0,!0):(t=e(r,s),i.index+=t.length,n(t,!1))}))})),sb=z(((e,t)=>{"use strict";HR();var i=Xh(),r=An(),n=ib(),s=Mt(),a=vi(),o=$s(),l=a("species"),h=RegExp.prototype;t.exports=function(e,t,u,c){var p=a(e),d=!s((function(){var t={};return t[p]=function(){return 7},7!=""[e](t)})),f=d&&!s((function(){var t=!1,i=/a/;return"split"===e&&((i={}).constructor={},i.constructor[l]=function(){return i},i.flags="",i[p]=/./[p]),i.exec=function(){return t=!0,null},i[p](""),!t}));if(!d||!f||u){var m=i(/./[p]),g=t(p,""[e],(function(e,t,r,s,a){var o=i(e),l=t.exec;return l===n||l===h.exec?d&&!a?{done:!0,value:m(t,r,s)}:{done:!0,value:o(r,t,s)}:{done:!1}}));r(String.prototype,e,g[0]),r(h,p,g[1])}c&&o(h[p],"sham",!0)}})),ab=z(((e,t)=>{"use strict";var i=nb().charAt;t.exports=function(e,t,r){return t+(r?i(e,t).length:1)}})),Bv=z(((e,t)=>{var i=Jr(),r=Yr(),n=mi(),s=Xs(),a=ib(),o=TypeError;t.exports=function(e,t){var l=e.exec;if(n(l)){var h=i(l,e,t);return null!==h&&r(h),h}if("RegExp"===s(e))return i(a,e,t);throw o("RegExp#exec called on incompatible receiver")}})),lie=z((()=>{"use strict";var e=Jr(),t=sb(),i=Yr(),r=ba(),n=$a(),s=ai(),a=hs(),o=Su(),l=ab(),h=Bv();t("match",(function(t,u,c){return[function(i){var n=a(this),l=r(i)?void 0:o(i,t);return l?e(l,i,n):new RegExp(i)[t](s(n))},function(e){var t=i(this),r=s(e),a=c(u,t,r);if(a.done)return a.value;if(!t.global)return h(t,r);var o=t.unicode;t.lastIndex=0;for(var p,d=[],f=0;null!==(p=h(t,r));){var m=s(p[0]);d[f]=m,""===m&&(t.lastIndex=l(r,n(t.lastIndex),o)),f++}return 0===f?null:d}]}))})),yie=z((()=>{"use strict";var e=Le(),t=Jr(),i=Xh(),r=Gw(),n=C1(),s=hs(),a=$a(),o=ai(),l=Yr(),h=ba(),u=Xs(),c=Lv(),p=Fv(),d=Su(),f=An(),m=Mt(),g=vi(),y=Bm(),v=ab(),T=Bv(),x=ps(),b=Vn(),_=g("matchAll"),E="RegExp String",w=E+" Iterator",S=x.set,I=x.getterFor(w),M=RegExp.prototype,A=TypeError,D=i("".indexOf),O=i("".matchAll),R=!!O&&!m((function(){O("a",/./)})),C=r((function(e,t,i,r){S(this,{type:w,regexp:e,string:t,global:i,unicode:r,done:!1})}),E,(function(){var e=I(this);if(e.done)return n(void 0,!0);var t=e.regexp,i=e.string,r=T(t,i);return null===r?(e.done=!0,n(void 0,!0)):e.global?(""===o(r[0])&&(t.lastIndex=v(i,a(t.lastIndex),e.unicode)),n(r,!1)):(e.done=!0,n(r,!1))})),N=function(e){var t,i,r,n=l(this),s=o(e),h=y(n,RegExp),u=o(p(n));return t=new h(h===RegExp?n.source:n,u),i=!!~D(u,"g"),r=!!~D(u,"u"),t.lastIndex=a(n.lastIndex),new C(t,s,i,r)};e({target:"String",proto:!0,forced:R},{matchAll:function(e){var i,r,n,a,l=s(this);if(h(e)){if(R)return O(l,e)}else{if(c(e)&&(i=o(s(p(e))),!~D(i,"g")))throw A("`.matchAll` does not allow non-global regexes");if(R)return O(l,e);if(void 0===(n=d(e,_))&&b&&"RegExp"==u(e)&&(n=N),n)return t(n,e,l)}return r=o(l),a=new RegExp(e,"g"),b?t(N,a,r):a[_](r)}}),b||_ in M||f(M,_,N)})),l5=z(((e,t)=>{var i=Iu();t.exports=/Version\/10(?:\.\d+){1,2}(?: [\w./]+)?(?: Mobile\/\w+)? Safari\//.test(i)})),Eie=z((()=>{"use strict";var e=Le(),t=cR().end;e({target:"String",proto:!0,forced:l5()},{padEnd:function(e){return t(this,e,arguments.length>1?arguments[1]:void 0)}})})),bie=z((()=>{"use strict";var e=Le(),t=cR().start;e({target:"String",proto:!0,forced:l5()},{padStart:function(e){return t(this,e,arguments.length>1?arguments[1]:void 0)}})})),Sie=z((()=>{var e=Le(),t=Nt(),i=vs(),r=Hi(),n=ai(),s=Wi(),a=t([].push),o=t([].join);e({target:"String",stat:!0},{raw:function(e){var t=i(r(e).raw),l=s(t);if(!l)return"";for(var h=arguments.length,u=[],c=0;;){if(a(u,n(t[c++])),c===l)return o(u,"");c{Le()({target:"String",proto:!0},{repeat:F1()})})),p5=z(((e,t)=>{var i=Nt(),r=Hi(),n=Math.floor,s=i("".charAt),a=i("".replace),o=i("".slice),l=/\$([$&'`]|\d{1,2}|<[^>]*>)/g,h=/\$([$&'`]|\d{1,2})/g;t.exports=function(e,t,i,u,c,p){var d=i+e.length,f=u.length,m=h;return void 0!==c&&(c=r(c),m=l),a(p,m,(function(r,a){var l;switch(s(a,0)){case"$":return"$";case"&":return e;case"`":return o(t,0,i);case"'":return o(t,d);case"<":l=c[o(a,1,-1)];break;default:var h=+a;if(0===h)return r;if(h>f){var p=n(h/10);return 0===p?r:p<=f?void 0===u[p-1]?s(a,1):u[p-1]+s(a,1):r}l=u[h-1]}return void 0===l?"":l}))}})),Oie=z((()=>{"use strict";var e=Po(),t=Jr(),i=Nt(),r=sb(),n=Mt(),s=Yr(),a=mi(),o=ba(),l=zn(),h=$a(),u=ai(),c=hs(),p=ab(),d=Su(),f=p5(),m=Bv(),g=vi()("replace"),y=Math.max,v=Math.min,T=i([].concat),x=i([].push),b=i("".indexOf),_=i("".slice),E=function(e){return void 0===e?e:String(e)},w="$0"==="a".replace(/./,"$0"),S=!!/./[g]&&""===/./[g]("a","$0");r("replace",(function(i,r,n){var w=S?"$":"$0";return[function(e,i){var n=c(this),s=o(e)?void 0:d(e,g);return s?t(s,e,n,i):t(r,u(n),e,i)},function(t,i){var o=s(this),c=u(t);if("string"==typeof i&&-1===b(i,w)&&-1===b(i,"$<")){var d=n(r,o,c,i);if(d.done)return d.value}var g=a(i);g||(i=u(i));var S=o.global;if(S){var I=o.unicode;o.lastIndex=0}for(var M=[];;){var A=m(o,c);if(null===A||(x(M,A),!S))break;""===u(A[0])&&(o.lastIndex=p(c,h(o.lastIndex),I))}for(var D="",O=0,R=0;R=O&&(D+=_(c,O,N)+k,O=N+C.length)}return D+_(c,O)}]}),!!n((function(){var e=/./;return e.exec=function(){var e=[];return e.groups={a:"7"},e},"7"!=="".replace(e,"$")}))||!w||S)})),Hie=z((()=>{"use strict";var e=Le(),t=Jr(),i=Nt(),r=hs(),n=mi(),s=ba(),a=Lv(),o=ai(),l=Su(),h=Fv(),u=p5(),c=vi(),p=Vn(),d=c("replace"),f=TypeError,m=i("".indexOf),g=i("".replace),y=i("".slice),v=Math.max,T=function(e,t,i){return i>e.length?-1:""===t?i:m(e,t,i)};e({target:"String",proto:!0},{replaceAll:function(e,i){var c,x,b,_,E,w,S,I,M,A=r(this),D=0,O=0,R="";if(!s(e)){if((c=a(e))&&(x=o(r(h(e))),!~m(x,"g")))throw f("`.replaceAll` does not allow non-global regexes");if(b=l(e,d))return t(b,e,A,i);if(p&&c)return g(o(A),e,i)}for(_=o(A),E=o(e),(w=n(i))||(i=o(i)),S=E.length,I=v(1,S),D=T(_,E,0);-1!==D;)M=w?o(i(E,D,_)):u(E,_,D,[],void 0,i),R+=y(_,O,D)+M,O=D+S,D=T(_,E,D+I);return O<_.length&&(R+=y(_,O)),R}})})),kie=z((()=>{"use strict";var e=Jr(),t=sb(),i=Yr(),r=ba(),n=hs(),s=eF(),a=ai(),o=Su(),l=Bv();t("search",(function(t,h,u){return[function(i){var s=n(this),l=r(i)?void 0:o(i,t);return l?e(l,i,s):new RegExp(i)[t](a(s))},function(e){var t=i(this),r=a(e),n=u(h,t,r);if(n.done)return n.value;var o=t.lastIndex;s(o,0)||(t.lastIndex=0);var c=l(t,r);return s(t.lastIndex,o)||(t.lastIndex=o),null===c?-1:c.index}]}))})),qie=z((()=>{"use strict";var e=Po(),t=Jr(),i=Nt(),r=sb(),n=Yr(),s=ba(),a=Lv(),o=hs(),l=Bm(),h=ab(),u=$a(),c=ai(),p=Su(),d=cv(),f=Bv(),m=ib(),g=tb(),y=Mt(),v=g.UNSUPPORTED_Y,T=4294967295,x=Math.min,b=[].push,_=i(/./.exec),E=i(b),w=i("".slice);r("split",(function(i,r,g){var y;return y="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(i,n){var s=c(o(this)),l=void 0===n?T:n>>>0;if(0===l)return[];if(void 0===i)return[s];if(!a(i))return t(r,s,i,l);for(var h,u,p,f=[],g=(i.ignoreCase?"i":"")+(i.multiline?"m":"")+(i.unicode?"u":"")+(i.sticky?"y":""),y=0,v=new RegExp(i.source,g+"g");(h=t(m,v,s))&&!((u=v.lastIndex)>y&&(E(f,w(s,y,h.index)),h.length>1&&h.index=l));)v.lastIndex===h.index&&v.lastIndex++;return y===s.length?(p||!_(v,""))&&E(f,""):E(f,w(s,y)),f.length>l?d(f,0,l):f}:"0".split(void 0,0).length?function(e,i){return void 0===e&&0===i?[]:t(r,this,e,i)}:r,[function(e,r){var n=o(this),a=s(e)?void 0:p(e,i);return a?t(a,e,n,r):t(y,c(n),e,r)},function(e,t){var i=n(this),s=c(e),a=g(y,i,s,t,y!==r);if(a.done)return a.value;var o=l(i,RegExp),p=i.unicode,d=(i.ignoreCase?"i":"")+(i.multiline?"m":"")+(i.unicode?"u":"")+(v?"g":"y"),m=new o(v?"^(?:"+i.source+")":i,d),b=void 0===t?T:t>>>0;if(0===b)return[];if(0===s.length)return null===f(m,s)?[s]:[];for(var _=0,S=0,I=[];S{"use strict";var e,t=Le(),i=Xh(),r=ks().f,n=$a(),s=ai(),a=UR(),o=hs(),l=BR(),h=Vn(),u=i("".startsWith),c=i("".slice),p=Math.min,d=l("startsWith");t({target:"String",proto:!0,forced:!!(h||d||(e=r(String.prototype,"startsWith"),!e||e.writable))&&!d},{startsWith:function(e){var t=s(o(this));a(e);var i=n(p(arguments.length>1?arguments[1]:void 0,t.length)),r=s(e);return u?u(t,r,i):c(t,i,i+r.length)===r}})})),Qie=z((()=>{"use strict";var e=Le(),t=Nt(),i=hs(),r=zn(),n=ai(),s=t("".slice),a=Math.max,o=Math.min;e({target:"String",proto:!0,forced:!"".substr||"b"!=="ab".substr(-1)},{substr:function(e,t){var l,h,u=n(i(this)),c=u.length,p=r(e);return p===1/0&&(p=0),p<0&&(p=a(c+p,0)),(l=void 0===t?c:r(t))<=0||l===1/0?"":p>=(h=o(p+l,c))?"":s(u,p,h)}})})),jR=z(((e,t)=>{var i=Mm().PROPER,r=Mt(),n=z1();t.exports=function(e){return r((function(){return!!n[e]()||"​…᠎"!=="​…᠎"[e]()||i&&n[e].name!==e}))}})),ine=z((()=>{"use strict";var e=Le(),t=Vm().trim;e({target:"String",proto:!0,forced:jR()("trim")},{trim:function(){return t(this)}})})),y5=z(((e,t)=>{"use strict";var i=Vm().end,r=jR();t.exports=r("trimEnd")?function(){return i(this)}:"".trimEnd})),ane=z((()=>{var e=Le(),t=y5();e({target:"String",proto:!0,name:"trimEnd",forced:"".trimRight!==t},{trimRight:t})})),lne=z((()=>{ane();var e=Le(),t=y5();e({target:"String",proto:!0,name:"trimEnd",forced:"".trimEnd!==t},{trimEnd:t})})),T5=z(((e,t)=>{"use strict";var i=Vm().start,r=jR();t.exports=r("trimStart")?function(){return i(this)}:"".trimStart})),hne=z((()=>{var e=Le(),t=T5();e({target:"String",proto:!0,name:"trimStart",forced:"".trimLeft!==t},{trimLeft:t})})),dne=z((()=>{hne();var e=Le(),t=T5();e({target:"String",proto:!0,name:"trimStart",forced:"".trimStart!==t},{trimStart:t})})),eo=z(((e,t)=>{var i=Nt(),r=hs(),n=ai(),s=/"/g,a=i("".replace);t.exports=function(e,t,i,o){var l=n(r(e)),h="<"+t;return""!==i&&(h+=" "+i+'="'+a(n(o),s,""")+'"'),h+">"+l+""}})),to=z(((e,t)=>{var i=Mt();t.exports=function(e){return i((function(){var t=""[e]('"');return t!==t.toLowerCase()||t.split('"').length>3}))}})),vne=z((()=>{"use strict";var e=Le(),t=eo();e({target:"String",proto:!0,forced:to()("anchor")},{anchor:function(e){return t(this,"a","name",e)}})})),yne=z((()=>{"use strict";var e=Le(),t=eo();e({target:"String",proto:!0,forced:to()("big")},{big:function(){return t(this,"big","","")}})})),Tne=z((()=>{"use strict";var e=Le(),t=eo();e({target:"String",proto:!0,forced:to()("blink")},{blink:function(){return t(this,"blink","","")}})})),Ene=z((()=>{"use strict";var e=Le(),t=eo();e({target:"String",proto:!0,forced:to()("bold")},{bold:function(){return t(this,"b","","")}})})),bne=z((()=>{"use strict";var e=Le(),t=eo();e({target:"String",proto:!0,forced:to()("fixed")},{fixed:function(){return t(this,"tt","","")}})})),xne=z((()=>{"use strict";var e=Le(),t=eo();e({target:"String",proto:!0,forced:to()("fontcolor")},{fontcolor:function(e){return t(this,"font","color",e)}})})),Ine=z((()=>{"use strict";var e=Le(),t=eo();e({target:"String",proto:!0,forced:to()("fontsize")},{fontsize:function(e){return t(this,"font","size",e)}})})),_ne=z((()=>{"use strict";var e=Le(),t=eo();e({target:"String",proto:!0,forced:to()("italics")},{italics:function(){return t(this,"i","","")}})})),Sne=z((()=>{"use strict";var e=Le(),t=eo();e({target:"String",proto:!0,forced:to()("link")},{link:function(e){return t(this,"a","href",e)}})})),wne=z((()=>{"use strict";var e=Le(),t=eo();e({target:"String",proto:!0,forced:to()("small")},{small:function(){return t(this,"small","","")}})})),Rne=z((()=>{"use strict";var e=Le(),t=eo();e({target:"String",proto:!0,forced:to()("strike")},{strike:function(){return t(this,"strike","","")}})})),Mne=z((()=>{"use strict";var e=Le(),t=eo();e({target:"String",proto:!0,forced:to()("sub")},{sub:function(){return t(this,"sub","","")}})})),Dne=z((()=>{"use strict";var e=Le(),t=eo();e({target:"String",proto:!0,forced:to()("sup")},{sup:function(){return t(this,"sup","","")}})})),WR=z(((e,t)=>{var i=Qt(),r=Mt(),n=R1(),s=oi().NATIVE_ARRAY_BUFFER_VIEWS,a=i.ArrayBuffer,o=i.Int8Array;t.exports=!s||!r((function(){o(1)}))||!r((function(){new o(-1)}))||!n((function(e){new o,new o(null),new o(1.5),new o(e)}),!0)||r((function(){return 1!==new o(new a(2),1,void 0).length}))})),Pne=z(((e,t)=>{var i=zn(),r=RangeError;t.exports=function(e){var t=i(e);if(t<0)throw r("The argument can't be less than 0");return t}})),b5=z(((e,t)=>{var i=Pne(),r=RangeError;t.exports=function(e,t){var n=i(e);if(n%t)throw r("Wrong offset");return n}})),x5=z(((e,t)=>{var i=Tc();t.exports=function(e){var t=i(e);return"BigInt64Array"==t||"BigUint64Array"==t}})),qR=z(((e,t)=>{var i=u1(),r=TypeError;t.exports=function(e){var t=i(e,"number");if("number"==typeof t)throw r("Can't convert number to bigint");return BigInt(t)}})),I5=z(((e,t)=>{var i=ml(),r=Jr(),n=lR(),s=Hi(),a=Wi(),o=_1(),l=mv(),h=Fw(),u=x5(),c=oi().aTypedArrayConstructor,p=qR();t.exports=function(e){var t,d,f,m,g,y,v,T,x=n(this),b=s(e),_=arguments.length,E=_>1?arguments[1]:void 0,w=void 0!==E,S=l(b);if(S&&!h(S))for(T=(v=o(b,S)).next,b=[];!(y=r(T,v)).done;)b.push(y.value);for(w&&_>2&&(E=i(E,arguments[2])),d=a(b),f=new(c(x))(d),m=u(f),t=0;d>t;t++)g=w?E(b[t],t):b[t],f[t]=m?p(g):+g;return f}})),Pu=z(((e,t)=>{"use strict";var i=Le(),r=Qt(),n=Jr(),s=Rr(),a=WR(),o=oi(),l=L1(),h=xc(),u=Ao(),c=$s(),p=TR(),d=$a(),f=JN(),m=b5(),g=qh(),y=wi(),v=Tc(),T=gi(),x=Cd(),b=Za(),_=Oo(),E=Ec(),w=Yh().f,S=I5(),I=Ds().forEach,M=Hm(),A=Ms(),D=wn(),O=ks(),R=ps(),C=Nm(),N=R.get,P=R.set,L=R.enforce,F=D.f,U=O.f,k=Math.round,B=r.RangeError,G=l.ArrayBuffer,z=G.prototype,H=l.DataView,V=o.NATIVE_ARRAY_BUFFER_VIEWS,j=o.TYPED_ARRAY_TAG,W=o.TypedArray,Y=o.TypedArrayPrototype,X=o.aTypedArrayConstructor,q=o.isTypedArray,Z="BYTES_PER_ELEMENT",K="Wrong length",$=function(e,t){X(e);for(var i=0,r=t.length,n=new e(r);r>i;)n[i]=t[i++];return n},J=function(e,t){A(e,t,{configurable:!0,get:function(){return N(this)[t]}})},Q=function(e){var t;return _(z,e)||"ArrayBuffer"==(t=v(e))||"SharedArrayBuffer"==t},ee=function(e,t){return q(e)&&!x(t)&&t in e&&p(+t)&&t>=0},te=function(e,t){return t=g(t),ee(e,t)?u(2,e[t]):U(e,t)},ie=function(e,t,i){return t=g(t),!(ee(e,t)&&T(i)&&y(i,"value"))||y(i,"get")||y(i,"set")||i.configurable||y(i,"writable")&&!i.writable||y(i,"enumerable")&&!i.enumerable?F(e,t,i):(e[t]=i.value,e)};s?(V||(O.f=te,D.f=ie,J(Y,"buffer"),J(Y,"byteOffset"),J(Y,"byteLength"),J(Y,"length")),i({target:"Object",stat:!0,forced:!V},{getOwnPropertyDescriptor:te,defineProperty:ie}),t.exports=function(e,t,s){var o=e.match(/\d+/)[0]/8,l=e+(s?"Clamped":"")+"Array",u="get"+e,p="set"+e,g=r[l],y=g,v=y&&y.prototype,x={},_=function(e,t){F(e,t,{get:function(){return function(e,t){var i=N(e);return i.view[u](t*o+i.byteOffset,!0)}(this,t)},set:function(e){return function(e,t,i){var r=N(e);s&&(i=(i=k(i))<0?0:i>255?255:255&i),r.view[p](t*o+r.byteOffset,i,!0)}(this,t,e)},enumerable:!0})};V?a&&(y=t((function(e,t,i,r){return h(e,v),C(T(t)?Q(t)?void 0!==r?new g(t,m(i,o),r):void 0!==i?new g(t,m(i,o)):new g(t):q(t)?$(y,t):n(S,y,t):new g(f(t)),e,y)})),E&&E(y,W),I(w(g),(function(e){e in y||c(y,e,g[e])})),y.prototype=v):(y=t((function(e,t,i,r){h(e,v);var s,a,l,u=0,c=0;if(T(t)){if(!Q(t))return q(t)?$(y,t):n(S,y,t);s=t,c=m(i,o);var p=t.byteLength;if(void 0===r){if(p%o||(a=p-c)<0)throw B(K)}else if((a=d(r)*o)+c>p)throw B(K);l=a/o}else l=f(t),s=new G(a=l*o);for(P(e,{buffer:s,byteOffset:c,byteLength:a,length:l,view:new H(s)});u{Pu()("Float32",(function(e){return function(t,i,r){return e(this,t,i,r)}}))})),nse=z((()=>{Pu()("Float64",(function(e){return function(t,i,r){return e(this,t,i,r)}}))})),sse=z((()=>{Pu()("Int8",(function(e){return function(t,i,r){return e(this,t,i,r)}}))})),ase=z((()=>{Pu()("Int16",(function(e){return function(t,i,r){return e(this,t,i,r)}}))})),ose=z((()=>{Pu()("Int32",(function(e){return function(t,i,r){return e(this,t,i,r)}}))})),lse=z((()=>{Pu()("Uint8",(function(e){return function(t,i,r){return e(this,t,i,r)}}))})),cse=z((()=>{Pu()("Uint8",(function(e){return function(t,i,r){return e(this,t,i,r)}}),!0)})),use=z((()=>{Pu()("Uint16",(function(e){return function(t,i,r){return e(this,t,i,r)}}))})),hse=z((()=>{Pu()("Uint32",(function(e){return function(t,i,r){return e(this,t,i,r)}}))})),dse=z((()=>{"use strict";var e=oi(),t=Wi(),i=zn(),r=e.aTypedArray;(0,e.exportTypedArrayMethod)("at",(function(e){var n=r(this),s=t(n),a=i(e),o=a>=0?a:s+a;return o<0||o>=s?void 0:n[o]}))})),mse=z((()=>{"use strict";var e=Nt(),t=oi(),i=e(MN()),r=t.aTypedArray;(0,t.exportTypedArrayMethod)("copyWithin",(function(e,t){return i(r(this),e,t,arguments.length>2?arguments[2]:void 0)}))})),vse=z((()=>{"use strict";var e=oi(),t=Ds().every,i=e.aTypedArray;(0,e.exportTypedArrayMethod)("every",(function(e){return t(i(this),e,arguments.length>1?arguments[1]:void 0)}))})),Tse=z((()=>{"use strict";var e=oi(),t=kw(),i=qR(),r=Tc(),n=Jr(),s=Nt(),a=Mt(),o=e.aTypedArray,l=e.exportTypedArrayMethod,h=s("".slice);l("fill",(function(e){var s=arguments.length;o(this);var a="Big"===h(r(this),0,3)?i(e):+e;return n(t,this,a,s>1?arguments[1]:void 0,s>2?arguments[2]:void 0)}),a((function(){var e=0;return new Int8Array(2).fill({valueOf:function(){return e++}}),1!==e})))})),db=z(((e,t)=>{var i=oi(),r=Bm(),n=i.aTypedArrayConstructor,s=i.getTypedArrayConstructor;t.exports=function(e){return n(r(e,s(e)))}})),Ise=z(((e,t)=>{var i=$w(),r=db();t.exports=function(e,t){return i(r(e),t)}})),Sse=z((()=>{"use strict";var e=oi(),t=Ds().filter,i=Ise(),r=e.aTypedArray;(0,e.exportTypedArrayMethod)("filter",(function(e){var n=t(r(this),e,arguments.length>1?arguments[1]:void 0);return i(this,n)}))})),Rse=z((()=>{"use strict";var e=oi(),t=Ds().find,i=e.aTypedArray;(0,e.exportTypedArrayMethod)("find",(function(e){return t(i(this),e,arguments.length>1?arguments[1]:void 0)}))})),Dse=z((()=>{"use strict";var e=oi(),t=Ds().findIndex,i=e.aTypedArray;(0,e.exportTypedArrayMethod)("findIndex",(function(e){return t(i(this),e,arguments.length>1?arguments[1]:void 0)}))})),Ase=z((()=>{"use strict";var e=oi(),t=w1().findLast,i=e.aTypedArray;(0,e.exportTypedArrayMethod)("findLast",(function(e){return t(i(this),e,arguments.length>1?arguments[1]:void 0)}))})),Pse=z((()=>{"use strict";var e=oi(),t=w1().findLastIndex,i=e.aTypedArray;(0,e.exportTypedArrayMethod)("findLastIndex",(function(e){return t(i(this),e,arguments.length>1?arguments[1]:void 0)}))})),Lse=z((()=>{"use strict";var e=oi(),t=Ds().forEach,i=e.aTypedArray;(0,e.exportTypedArrayMethod)("forEach",(function(e){t(i(this),e,arguments.length>1?arguments[1]:void 0)}))})),Fse=z((()=>{"use strict";var e=WR();(0,oi().exportTypedArrayStaticMethod)("from",I5(),e)})),Use=z((()=>{"use strict";var e=oi(),t=av().includes,i=e.aTypedArray;(0,e.exportTypedArrayMethod)("includes",(function(e){return t(i(this),e,arguments.length>1?arguments[1]:void 0)}))})),kse=z((()=>{"use strict";var e=oi(),t=av().indexOf,i=e.aTypedArray;(0,e.exportTypedArrayMethod)("indexOf",(function(e){return t(i(this),e,arguments.length>1?arguments[1]:void 0)}))})),Wse=z((()=>{"use strict";var e=Qt(),t=Mt(),i=Nt(),r=oi(),n=A1(),s=vi()("iterator"),a=e.Uint8Array,o=i(n.values),l=i(n.keys),h=i(n.entries),u=r.aTypedArray,c=r.exportTypedArrayMethod,p=a&&a.prototype,d=!t((function(){p[s].call([1])})),f=!!p&&p.values&&p[s]===p.values&&"values"===p.values.name,m=function(){return o(u(this))};c("entries",(function(){return h(u(this))}),d),c("keys",(function(){return l(u(this))}),d),c("values",m,d||!f,{name:"values"}),c(s,m,d||!f,{name:"values"})})),Yse=z((()=>{"use strict";var e=oi(),t=Nt(),i=e.aTypedArray,r=e.exportTypedArrayMethod,n=t([].join);r("join",(function(e){return n(i(this),e)}))})),$se=z((()=>{"use strict";var e=oi(),t=Po(),i=zN(),r=e.aTypedArray;(0,e.exportTypedArrayMethod)("lastIndexOf",(function(e){var n=arguments.length;return t(i,r(this),n>1?[e,arguments[1]]:[e])}))})),Kse=z((()=>{"use strict";var e=oi(),t=Ds().map,i=db(),r=e.aTypedArray;(0,e.exportTypedArrayMethod)("map",(function(e){return t(r(this),e,arguments.length>1?arguments[1]:void 0,(function(e,t){return new(i(e))(t)}))}))})),Qse=z((()=>{"use strict";var e=oi(),t=WR(),i=e.aTypedArrayConstructor;(0,e.exportTypedArrayStaticMethod)("of",(function(){for(var e=0,t=arguments.length,r=new(i(this))(t);t>e;)r[e]=arguments[e++];return r}),t)})),tae=z((()=>{"use strict";var e=oi(),t=O1().left,i=e.aTypedArray;(0,e.exportTypedArrayMethod)("reduce",(function(e){var r=arguments.length;return t(i(this),e,r,r>1?arguments[1]:void 0)}))})),iae=z((()=>{"use strict";var e=oi(),t=O1().right,i=e.aTypedArray;(0,e.exportTypedArrayMethod)("reduceRight",(function(e){var r=arguments.length;return t(i(this),e,r,r>1?arguments[1]:void 0)}))})),sae=z((()=>{"use strict";var e=oi(),t=e.aTypedArray,i=e.exportTypedArrayMethod,r=Math.floor;i("reverse",(function(){for(var e,i=this,n=t(i).length,s=r(n/2),a=0;a{"use strict";var e=Qt(),t=Jr(),i=oi(),r=Wi(),n=b5(),s=Hi(),a=Mt(),o=e.RangeError,l=e.Int8Array,h=l&&l.prototype,u=h&&h.set,c=i.aTypedArray,p=i.exportTypedArrayMethod,d=!a((function(){var e=new Uint8ClampedArray(2);return t(u,e,{length:1,0:3},1),3!==e[1]})),f=d&&i.NATIVE_ARRAY_BUFFER_VIEWS&&a((function(){var e=new l(2);return e.set(1),e.set("2",1),0!==e[0]||2!==e[1]}));p("set",(function(e){c(this);var i=n(arguments.length>1?arguments[1]:void 0,1),a=s(e);if(d)return t(u,this,a,i);var l=this.length,h=r(a),p=0;if(h+i>l)throw o("Wrong length");for(;p{"use strict";var e=oi(),t=db(),i=Mt(),r=Pd(),n=e.aTypedArray;(0,e.exportTypedArrayMethod)("slice",(function(e,i){for(var s=r(n(this),e,i),a=t(this),o=0,l=s.length,h=new a(l);l>o;)h[o]=s[o++];return h}),i((function(){new Int8Array(1).slice()})))})),mae=z((()=>{"use strict";var e=oi(),t=Ds().some,i=e.aTypedArray;(0,e.exportTypedArrayMethod)("some",(function(e){return t(i(this),e,arguments.length>1?arguments[1]:void 0)}))})),bae=z((()=>{"use strict";var e=Qt(),t=Xh(),i=Mt(),r=Gn(),n=Yw(),s=oi(),a=qN(),o=YN(),l=_u(),h=Xw(),u=s.aTypedArray,c=s.exportTypedArrayMethod,p=e.Uint16Array,d=p&&t(p.prototype.sort),f=!(!d||i((function(){d(new p(2),null)}))&&i((function(){d(new p(2),{})}))),m=!!d&&!i((function(){if(l)return l<74;if(a)return a<67;if(o)return!0;if(h)return h<602;var e,t,i=new p(516),r=Array(516);for(e=0;e<516;e++)t=e%4,i[e]=515-e,r[e]=e-2*t+3;for(d(i,(function(e,t){return(e/4|0)-(t/4|0)})),e=0;e<516;e++)if(i[e]!==r[e])return!0}));c("sort",(function(e){return void 0!==e&&r(e),m?d(this,e):n(u(this),(t=e,function(e,i){return void 0!==t?+t(e,i)||0:i!=i?-1:e!=e?1:0===e&&0===i?1/e>0&&1/i<0?1:-1:e>i}));var t}),!m||f)})),_ae=z((()=>{"use strict";var e=oi(),t=$a(),i=yc(),r=db(),n=e.aTypedArray;(0,e.exportTypedArrayMethod)("subarray",(function(e,s){var a=n(this),o=a.length,l=i(e,o);return new(r(a))(a.buffer,a.byteOffset+l*a.BYTES_PER_ELEMENT,t((void 0===s?o:i(s,o))-l))}))})),Dae=z((()=>{"use strict";var e=Qt(),t=Po(),i=oi(),r=Mt(),n=Pd(),s=e.Int8Array,a=i.aTypedArray,o=i.exportTypedArrayMethod,l=[].toLocaleString,h=!!s&&r((function(){l.call(new s(1))}));o("toLocaleString",(function(){return t(l,h?n(a(this)):a(this),n(arguments))}),r((function(){return[1,2].toLocaleString()!=new s([1,2]).toLocaleString()}))||!r((function(){s.prototype.toLocaleString.call([1,2])})))})),Cae=z((()=>{"use strict";var e=ZN(),t=oi(),i=t.aTypedArray,r=t.exportTypedArrayMethod,n=t.getTypedArrayConstructor;r("toReversed",(function(){return e(i(this),n(this))}))})),Aae=z((()=>{"use strict";var e=oi(),t=Nt(),i=Gn(),r=$w(),n=e.aTypedArray,s=e.getTypedArrayConstructor,a=e.exportTypedArrayMethod,o=t(e.TypedArrayPrototype.sort);a("toSorted",(function(e){void 0!==e&&i(e);var t=n(this),a=r(s(t),t);return o(a,e)}))})),Pae=z((()=>{"use strict";var e=oi().exportTypedArrayMethod,t=Mt(),i=Qt(),r=Nt(),n=i.Uint8Array,s=n&&n.prototype||{},a=[].toString,o=r([].join);t((function(){a.call({})}))&&(a=function(){return o(this)});var l=s.toString!=a;e("toString",a,l)})),Nae=z((()=>{"use strict";var e=KN(),t=oi(),i=x5(),r=zn(),n=qR(),s=t.aTypedArray,a=t.getTypedArrayConstructor;(0,t.exportTypedArrayMethod)("with",(function(t,o){var l=s(this),h=r(t),u=i(l)?n(o):+o;return e(l,a(l),h,u)}),!!!function(){try{new Int8Array(1).with(2,{valueOf:function(){throw 8}})}catch(e){return 8===e}}())})),Bae=z((()=>{"use strict";var e=Le(),t=Nt(),i=ai(),r=String.fromCharCode,n=t("".charAt),s=t(/./.exec),a=t("".slice),o=/^[\da-f]{2}$/i,l=/^[\da-f]{4}$/i;e({global:!0},{unescape:function(e){for(var t,h,u=i(e),c="",p=u.length,d=0;d{"use strict";var i=Nt(),r=yv(),n=Gd().getWeakData,s=xc(),a=Yr(),o=ba(),l=gi(),h=bc(),u=Ds(),c=wi(),p=ps(),d=p.set,f=p.getterFor,m=u.find,g=u.findIndex,y=i([].splice),v=0,T=function(e){return e.frozen||(e.frozen=new x)},x=function(){this.entries=[]},b=function(e,t){return m(e.entries,(function(e){return e[0]===t}))};x.prototype={get:function(e){var t=b(this,e);if(t)return t[1]},has:function(e){return!!b(this,e)},set:function(e,t){var i=b(this,e);i?i[1]=t:this.entries.push([e,t])},delete:function(e){var t=g(this.entries,(function(t){return t[0]===e}));return~t&&y(this.entries,t,1),!!~t}},t.exports={getConstructor:function(e,t,i,u){var p=e((function(e,r){s(e,m),d(e,{type:t,id:v++,frozen:void 0}),o(r)||h(r,e[u],{that:e,AS_ENTRIES:i})})),m=p.prototype,g=f(t),y=function(e,t,i){var r=g(e),s=n(a(t),!0);return!0===s?T(r).set(t,i):s[r.id]=i,e};return r(m,{delete:function(e){var t=g(this);if(!l(e))return!1;var i=n(e);return!0===i?T(t).delete(e):i&&c(i,t.id)&&delete i[t.id]},has:function(e){var t=g(this);if(!l(e))return!1;var i=n(e);return!0===i?T(t).has(e):i&&c(i,t.id)}}),r(m,i?{get:function(e){var t=g(this);if(l(e)){var i=n(e);return!0===i?T(t).get(e):i?i[t.id]:void 0}},set:function(e,t){return y(this,e,t)}}:{add:function(e){return y(this,e,!0)}}),p}}})),toe=z((()=>{"use strict";var e,t,i,r,n=Gm(),s=Qt(),a=Nt(),o=yv(),l=Gd(),h=U1(),u=q5(),c=gi(),p=ps().enforce,d=Mt(),f=C2(),m=Object,g=Array.isArray,y=m.isExtensible,v=m.isFrozen,T=m.isSealed,x=m.freeze,b=m.seal,_={},E={},w=!s.ActiveXObject&&"ActiveXObject"in s,S=function(e){return function(){return e(this,arguments.length?arguments[0]:void 0)}},I=h("WeakMap",S,u),M=I.prototype,A=a(M.set);f&&(w?(e=u.getConstructor(S,"WeakMap",!0),l.enable(),t=a(M.delete),i=a(M.has),r=a(M.get),o(M,{delete:function(i){if(c(i)&&!y(i)){var r=p(this);return r.frozen||(r.frozen=new e),t(this,i)||r.frozen.delete(i)}return t(this,i)},has:function(t){if(c(t)&&!y(t)){var r=p(this);return r.frozen||(r.frozen=new e),i(this,t)||r.frozen.has(t)}return i(this,t)},get:function(t){if(c(t)&&!y(t)){var n=p(this);return n.frozen||(n.frozen=new e),i(this,t)?r(this,t):n.frozen.get(t)}return r(this,t)},set:function(t,r){if(c(t)&&!y(t)){var n=p(this);n.frozen||(n.frozen=new e),i(this,t)?A(this,t,r):n.frozen.set(t,r)}else A(this,t,r);return this}})):n&&d((function(){var e=x([]);return A(new I,e,1),!v(e)}))&&o(M,{set:function(e,t){var i;return g(e)&&(v(e)?i=_:T(e)&&(i=E)),A(this,e,t),i==_&&x(e),i==E&&b(e),this}}))})),roe=z((()=>{toe()})),ioe=z((()=>{"use strict";U1()("WeakSet",(function(e){return function(){return e(this,arguments.length?arguments[0]:void 0)}}),q5())})),noe=z((()=>{ioe()})),$5=z(((e,t)=>{var i,r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",n={};for(i=0;i<66;i++)n[r.charAt(i)]=i;t.exports={itoc:r,ctoi:n}})),doe=z((()=>{var e=Le(),t=Qt(),i=Sn(),r=Nt(),n=Jr(),s=Mt(),a=ai(),o=wi(),l=np(),h=$5().ctoi,u=/[^\d+/a-z]/i,c=/[\t\n\f\r ]+/g,p=/[=]{1,2}$/,d=i("atob"),f=String.fromCharCode,m=r("".charAt),g=r("".replace),y=r(u.exec),v=s((function(){return""!==d(" ")})),T=!s((function(){d("a")})),x=!v&&!T&&!s((function(){d()})),b=!v&&!T&&1!==d.length;e({global:!0,bind:!0,enumerable:!0,forced:v||T||x||b},{atob:function(e){if(l(arguments.length,1),x||b)return n(d,t,e);var r,s,v=g(a(e),c,""),T="",_=0,E=0;if(v.length%4==0&&(v=g(v,p,"")),v.length%4==1||y(u,v))throw new(i("DOMException"))("The string is not correctly encoded","InvalidCharacterError");for(;r=m(v,_++);)o(h,r)&&(s=E%4?64*s+h[r]:h[r],E++%4&&(T+=f(255&s>>(-2*E&6))));return T}})})),xoe=z((()=>{var e=Le(),t=Qt(),i=Sn(),r=Nt(),n=Jr(),s=Mt(),a=ai(),o=np(),l=$5().itoc,h=i("btoa"),u=r("".charAt),c=r("".charCodeAt),p=!!h&&!s((function(){h()})),d=!!h&&s((function(){return"bnVsbA=="!==h(null)})),f=!!h&&1!==h.length;e({global:!0,bind:!0,enumerable:!0,forced:p||d||f},{btoa:function(e){if(o(arguments.length,1),p||d||f)return n(h,t,a(e));for(var r,s,m=a(e),g="",y=0,v=l;u(m,y)||(v="=",y%1);){if((s=c(m,y+=3/4))>255)throw new(i("DOMException"))("The string contains characters outside of the Latin1 range","InvalidCharacterError");g+=u(v,63&(r=r<<8|s)>>8-y%1*8)}return g}})})),t6=z(((e,t)=>{t.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}})),i6=z(((e,t)=>{var i=h1()("span").classList,r=i&&i.constructor&&i.constructor.prototype;t.exports=r===Object.prototype?void 0:r})),Doe=z((()=>{var e,t=Qt(),i=t6(),r=i6(),n=ON(),s=$s(),a=function(e){if(e&&e.forEach!==n)try{s(e,"forEach",n)}catch(t){e.forEach=n}};for(e in i)i[e]&&a(t[e]&&t[e].prototype);a(r)})),Loe=z((()=>{var e,t=Qt(),i=t6(),r=i6(),n=A1(),s=$s(),a=vi(),o=a("iterator"),l=a("toStringTag"),h=n.values,u=function(e,t){if(e){if(e[o]!==h)try{s(e,o,h)}catch(t){e[o]=h}if(e[l]||s(e,l,t),i[t])for(var r in n)if(e[r]!==n[r])try{s(e,r,n[r])}catch(t){e[r]=n[r]}}};for(e in i)u(t[e]&&t[e].prototype,e);u(r,"DOMTokenList")})),Hoe=z(((e,t)=>{var i=Du();t.exports=function(e){try{if(i)return Function('return require("'+e+'")')()}catch(e){}}})),l6=z(((e,t)=>{t.exports={IndexSizeError:{s:"INDEX_SIZE_ERR",c:1,m:1},DOMStringSizeError:{s:"DOMSTRING_SIZE_ERR",c:2,m:0},HierarchyRequestError:{s:"HIERARCHY_REQUEST_ERR",c:3,m:1},WrongDocumentError:{s:"WRONG_DOCUMENT_ERR",c:4,m:1},InvalidCharacterError:{s:"INVALID_CHARACTER_ERR",c:5,m:1},NoDataAllowedError:{s:"NO_DATA_ALLOWED_ERR",c:6,m:0},NoModificationAllowedError:{s:"NO_MODIFICATION_ALLOWED_ERR",c:7,m:1},NotFoundError:{s:"NOT_FOUND_ERR",c:8,m:1},NotSupportedError:{s:"NOT_SUPPORTED_ERR",c:9,m:1},InUseAttributeError:{s:"INUSE_ATTRIBUTE_ERR",c:10,m:1},InvalidStateError:{s:"INVALID_STATE_ERR",c:11,m:1},SyntaxError:{s:"SYNTAX_ERR",c:12,m:1},InvalidModificationError:{s:"INVALID_MODIFICATION_ERR",c:13,m:1},NamespaceError:{s:"NAMESPACE_ERR",c:14,m:1},InvalidAccessError:{s:"INVALID_ACCESS_ERR",c:15,m:1},ValidationError:{s:"VALIDATION_ERR",c:16,m:0},TypeMismatchError:{s:"TYPE_MISMATCH_ERR",c:17,m:1},SecurityError:{s:"SECURITY_ERR",c:18,m:1},NetworkError:{s:"NETWORK_ERR",c:19,m:1},AbortError:{s:"ABORT_ERR",c:20,m:1},URLMismatchError:{s:"URL_MISMATCH_ERR",c:21,m:1},QuotaExceededError:{s:"QUOTA_EXCEEDED_ERR",c:22,m:1},TimeoutError:{s:"TIMEOUT_ERR",c:23,m:1},InvalidNodeTypeError:{s:"INVALID_NODE_TYPE_ERR",c:24,m:1},DataCloneError:{s:"DATA_CLONE_ERR",c:25,m:1}}})),$oe=z((()=>{"use strict";var e=Le(),t=Hoe(),i=Sn(),r=Mt(),n=Za(),s=Ao(),a=wn().f,o=An(),l=Ms(),h=wi(),u=xc(),c=Yr(),p=yN(),d=dv(),f=l6(),m=Ow(),g=ps(),y=Rr(),v=Vn(),T="DOMException",x="DATA_CLONE_ERR",b=i("Error"),_=i(T)||function(){try{(new(i("MessageChannel")||t("worker_threads").MessageChannel)).port1.postMessage(new WeakMap)}catch(e){if(e.name==x&&25==e.code)return e.constructor}}(),E=_&&_.prototype,w=b.prototype,S=g.set,I=g.getterFor(T),M="stack"in b(T),A=function(e){return h(f,e)&&f[e].m?f[e].c:0},D=function(){u(this,O);var e=arguments.length,t=d(e<1?void 0:arguments[0]),i=d(e<2?void 0:arguments[1],"Error"),r=A(i);if(S(this,{type:T,name:i,message:t,code:r}),y||(this.name=i,this.message=t,this.code=r),M){var n=b(t);n.name=T,a(this,"stack",s(1,m(n.stack,1)))}},O=D.prototype=n(w),R=function(e){return{enumerable:!0,configurable:!0,get:e}},C=function(e){return R((function(){return I(this)[e]}))};y&&(l(O,"code",C("code")),l(O,"message",C("message")),l(O,"name",C("name"))),a(O,"constructor",s(1,D));var N=r((function(){return!(new _ instanceof b)})),P=N||r((function(){return w.toString!==p||"2: 1"!==String(new _(1,2))})),L=N||r((function(){return 25!==new _(1,"DataCloneError").code})),F=N||25!==_[x]||25!==E[x],U=v?P||L||F:N;e({global:!0,constructor:!0,forced:U},{DOMException:U?D:_});var k,B,G,z,H=i(T),V=H.prototype;for(z in P&&(v||_===H)&&o(V,"toString",p),L&&y&&_===H&&l(V,"code",R((function(){return A(c(this).name)}))),f)h(f,z)&&(B=(k=f[z]).s,G=s(6,k.c),h(H,B)||a(H,B,G),h(V,B)||a(V,B,G))})),rle=z((()=>{"use strict";var e=Le(),t=Qt(),i=Sn(),r=Ao(),n=wn().f,s=wi(),a=xc(),o=Nm(),l=dv(),h=l6(),u=Ow(),c=Rr(),p=Vn(),d="DOMException",f=i("Error"),m=i(d),g=function(){a(this,y);var e=arguments.length,t=l(e<1?void 0:arguments[0]),i=l(e<2?void 0:arguments[1],"Error"),s=new m(t,i),h=f(t);return h.name=d,n(s,"stack",r(1,u(h.stack,1))),o(s,this,g),s},y=g.prototype=m.prototype,v="stack"in f(d),T="stack"in new m(1,2),x=m&&c&&Object.getOwnPropertyDescriptor(t,d),b=!(!x||x.writable&&x.configurable),_=v&&!b&&!T;e({global:!0,constructor:!0,forced:p||_},{DOMException:_?g:m});var E,w,S,I=i(d),M=I.prototype;if(M.constructor!==I)for(S in p||n(M,"constructor",r(1,I)),h)s(h,S)&&(s(I,w=(E=h[S]).s)||n(I,w,r(6,E.c)))})),nle=z((()=>{var e=Sn(),t="DOMException";Ka()(e(t),t)})),ale=z((()=>{var e=Le(),t=Qt(),i=Z1().clear;e({global:!0,bind:!0,enumerable:!0,forced:t.clearImmediate!==i},{clearImmediate:i})})),lle=z(((e,t)=>{t.exports="function"==typeof Bun&&Bun&&"string"==typeof Bun.version})),yM=z(((e,t)=>{"use strict";var i,r=Qt(),n=Po(),s=mi(),a=lle(),o=Iu(),l=Pd(),h=np(),u=r.Function,c=/MSIE .\./.test(o)||a&&((i=r.Bun.version.split(".")).length<3||0==i[0]&&(i[1]<3||3==i[1]&&0==i[2]));t.exports=function(e,t){var i=t?2:1;return c?function(r,a){var o=h(arguments.length,1)>i,c=s(r)?r:u(r),p=o?l(arguments,i):[],d=o?function(){n(c,this,p)}:c;return t?e(d,a):e(d)}:e}})),fle=z((()=>{var e=Le(),t=Qt(),i=Z1().set,r=yM(),n=t.setImmediate?r(i,!1):i;e({global:!0,bind:!0,enumerable:!0,forced:t.setImmediate!==n},{setImmediate:n})})),mle=z((()=>{ale(),fle()})),gle=z((()=>{var e=Le(),t=Qt(),i=EF(),r=Gn(),n=np(),s=Du(),a=t.process;e({global:!0,enumerable:!0,dontCallGetSet:!0},{queueMicrotask:function(e){n(arguments.length,1),r(e);var t=s&&a.domain;i(t?t.bind(e):e)}})})),yle=z((()=>{"use strict";var e,t=Le(),i=Qt(),r=Ms(),n=Rr(),s=TypeError,a=Object.defineProperty,o=i.self!==i;try{n?(e=Object.getOwnPropertyDescriptor(i,"self"),(o||!e||!e.get||!e.enumerable)&&r(i,"self",{get:function(){return i},set:function(e){if(this!==i)throw s("Illegal invocation");a(i,"self",{value:e,writable:!0,configurable:!0,enumerable:!0})},configurable:!0,enumerable:!0})):t({global:!0,simple:!0,forced:o},{self:i})}catch(e){}})),Ele=z(((e,t)=>{var i=Nt(),r=Map.prototype;t.exports={Map:Map,set:i(r.set),get:i(r.get),has:i(r.has),remove:i(r.delete),proto:r}})),xle=z(((e,t)=>{var i=Nt(),r=Set.prototype;t.exports={Set:Set,add:i(r.add),has:i(r.has),remove:i(r.delete),proto:r,$has:r.has,$keys:r.keys}})),Sle=z(((e,t)=>{var i=Qt(),r=Mt(),n=_u(),s=bF(),a=_R(),o=Du(),l=i.structuredClone;t.exports=!!l&&!r((function(){if(a&&n>92||o&&n>94||s&&n>97)return!1;var e=new ArrayBuffer(8),t=l(e,{transfer:[e]});return 0!=e.byteLength||8!=t.byteLength}))})),Lle=z((()=>{var e,t=Vn(),i=Le(),r=Qt(),n=Sn(),s=Nt(),a=Mt(),o=Rm(),l=mi(),h=Cm(),u=ba(),c=gi(),p=Cd(),d=bc(),f=Yr(),m=Tc(),g=wi(),y=wu(),v=$s(),T=Wi(),x=np(),b=Fv(),_=Ele(),E=xle(),w=dN(),S=Sle(),I=r.Object,M=r.Array,A=r.Date,D=r.Error,O=r.EvalError,R=r.RangeError,C=r.ReferenceError,N=r.SyntaxError,P=r.TypeError,L=r.URIError,F=r.PerformanceMark,U=r.WebAssembly,k=U&&U.CompileError||D,B=U&&U.LinkError||D,G=U&&U.RuntimeError||D,z=n("DOMException"),H=_.Map,V=_.has,j=_.get,W=_.set,Y=E.Set,X=E.add,q=n("Object","keys"),Z=s([].push),K=s((!0).valueOf),$=s(1..valueOf),J=s("".valueOf),Q=s(A.prototype.getTime),ee=o("structuredClone"),te="DataCloneError",ie="Transferring",re=function(e){return!a((function(){var t=new r.Set([7]),i=e(t),n=e(I(7));return i==t||!i.has(7)||"object"!=typeof n||7!=n}))&&e},ne=function(e,t){return!a((function(){var i=new t,r=e({a:i,b:i});return!(r&&r.a===r.b&&r.a instanceof t&&r.a.stack===i.stack)}))},se=r.structuredClone,ae=t||!ne(se,D)||!ne(se,z)||(e=se,!!a((function(){var t=e(new r.AggregateError([1],ee,{cause:3}));return"AggregateError"!=t.name||1!=t.errors[0]||t.message!=ee||3!=t.cause}))),oe=!se&&re((function(e){return new F(ee,{detail:e}).detail})),le=re(se)||oe,he=function(e){throw new z("Uncloneable type: "+e,te)},ue=function(e,t){throw new z((t||"Cloning")+" of "+e+" cannot be properly polyfilled in this engine",te)},ce=function(e,t){if(p(e)&&he("Symbol"),!c(e))return e;if(t){if(V(t,e))return j(t,e)}else t=new H;var i,s,a,o,h,u,d,f,x,_,E,S=m(e),F=!1;switch(S){case"Array":a=M(T(e)),F=!0;break;case"Object":a={},F=!0;break;case"Map":a=new H,F=!0;break;case"Set":a=new Y,F=!0;break;case"RegExp":a=new RegExp(e.source,b(e));break;case"Error":switch(s=e.name){case"AggregateError":a=n("AggregateError")([]);break;case"EvalError":a=O();break;case"RangeError":a=R();break;case"ReferenceError":a=C();break;case"SyntaxError":a=N();break;case"TypeError":a=P();break;case"URIError":a=L();break;case"CompileError":a=k();break;case"LinkError":a=B();break;case"RuntimeError":a=G();break;default:a=D()}F=!0;break;case"DOMException":a=new z(e.message,e.name),F=!0;break;case"DataView":case"Int8Array":case"Uint8Array":case"Uint8ClampedArray":case"Int16Array":case"Uint16Array":case"Int32Array":case"Uint32Array":case"Float32Array":case"Float64Array":case"BigInt64Array":case"BigUint64Array":i=r[S],c(i)||ue(S),a=new i(ce(e.buffer,t),e.byteOffset,"DataView"===S?e.byteLength:e.length);break;case"DOMQuad":try{a=new DOMQuad(ce(e.p1,t),ce(e.p2,t),ce(e.p3,t),ce(e.p4,t))}catch(t){le?a=le(e):ue(S)}break;case"FileList":if(o=function(){var e;try{e=new r.DataTransfer}catch(t){try{e=new r.ClipboardEvent("").clipboardData}catch(e){}}return e&&e.items&&e.files?e:null}(),o){for(h=0,u=T(e);h1&&!u(arguments[1])?f(arguments[1]):void 0,r=i?i.transfer:void 0;return void 0!==r&&(t=new H,pe(r,t)),ce(e,t)}})})),Ule=z((()=>{var e=Le(),t=Qt(),i=yM()(t.setInterval,!0);e({global:!0,bind:!0,forced:t.setInterval!==i},{setInterval:i})})),Gle=z((()=>{var e=Le(),t=Qt(),i=yM()(t.setTimeout,!0);e({global:!0,bind:!0,forced:t.setTimeout!==i},{setTimeout:i})})),Vle=z((()=>{Ule(),Gle()})),F6=z(((e,t)=>{var i=Mt(),r=vi(),n=Rr(),s=Vn(),a=r("iterator");t.exports=!i((function(){var e=new URL("b?a=1&b=2&c=3","http://a"),t=e.searchParams,i="";return e.pathname="c%20d",t.forEach((function(e,r){t.delete("b"),i+=r+e})),s&&!e.toJSON||!t.size&&(s||!n)||!t.sort||"http://a/c%20d?a=1&c=3"!==e.href||"3"!==t.get("c")||"a=1"!==String(new URLSearchParams("?a=1"))||!t[a]||"a"!==new URL("https://a@b").username||"b"!==new URLSearchParams(new URLSearchParams("a=b")).get("a")||"xn--e1aybc"!==new URL("http://тест").host||"#%D0%B1"!==new URL("http://a#б").hash||"a1c3"!==i||"x"!==new URL("http://x",void 0).host}))})),Qle=z(((e,t)=>{var i=Nt(),r=2147483647,n=/[^\0-\u007E]/,s=/[.\u3002\uFF0E\uFF61]/g,a="Overflow: input needs wider integers to process",o=RangeError,l=i(s.exec),h=Math.floor,u=String.fromCharCode,c=i("".charCodeAt),p=i([].join),d=i([].push),f=i("".replace),m=i("".split),g=i("".toLowerCase),y=function(e){return e+22+75*(e<26)},v=function(e,t,i){var r=0;for(e=i?h(e/700):e>>1,e+=h(e/t);e>455;)e=h(e/35),r+=36;return h(r+36*e/(e+38))},T=function(e){var t=[];e=function(e){for(var t=[],i=0,r=e.length;i=55296&&n<=56319&&i=l&&nh((r-f)/b))throw o(a);for(f+=(x-l)*b,l=x,i=0;ir)throw o(a);if(n==l){for(var _=f,E=36;;){var w=E<=m?1:E>=m+26?26:E-m;if(_{"use strict";A1();var i=Le(),r=Qt(),n=Jr(),s=Nt(),a=Rr(),o=F6(),l=An(),h=Ms(),u=yv(),c=Ka(),p=Gw(),d=ps(),f=xc(),m=mi(),g=wi(),y=ml(),v=Tc(),T=Yr(),x=gi(),b=ai(),_=Za(),E=Ao(),w=_1(),S=mv(),I=np(),M=vi(),A=Yw(),D=M("iterator"),O="URLSearchParams",R=O+"Iterator",C=d.set,N=d.getterFor(O),P=d.getterFor(R),L=Object.getOwnPropertyDescriptor,F=function(e){if(!a)return r[e];var t=L(r,e);return t&&t.value},U=F("fetch"),k=F("Request"),B=F("Headers"),G=k&&k.prototype,z=B&&B.prototype,H=r.RegExp,V=r.TypeError,j=r.decodeURIComponent,W=r.encodeURIComponent,Y=s("".charAt),X=s([].join),q=s([].push),Z=s("".replace),K=s([].shift),$=s([].splice),J=s("".split),Q=s("".slice),ee=/\+/g,te=Array(4),ie=function(e){return te[e-1]||(te[e-1]=H("((?:%[\\da-f]{2}){"+e+"})","gi"))},re=function(e){try{return j(e)}catch(t){return e}},ne=function(e){var t=Z(e,ee," "),i=4;try{return j(t)}catch(e){for(;i;)t=Z(t,ie(i--),re);return t}},se=/[!'()~]|%20/g,ae={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+"},oe=function(e){return ae[e]},le=function(e){return Z(W(e),se,oe)},he=p((function(e,t){C(this,{type:R,iterator:w(N(e).entries),kind:t})}),"Iterator",(function(){var e=P(this),t=e.kind,i=e.iterator.next(),r=i.value;return i.done||(i.value="keys"===t?r.key:"values"===t?r.value:[r.key,r.value]),i}),!0),ue=function(e){this.entries=[],this.url=null,void 0!==e&&(x(e)?this.parseObject(e):this.parseQuery("string"==typeof e?"?"===Y(e,0)?Q(e,1):e:b(e)))};ue.prototype={type:O,bindURL:function(e){this.url=e,this.update()},parseObject:function(e){var t,i,r,s,a,o,l,h=S(e);if(h)for(i=(t=w(e,h)).next;!(r=n(i,t)).done;){if(a=(s=w(T(r.value))).next,(o=n(a,s)).done||(l=n(a,s)).done||!n(a,s).done)throw V("Expected sequence with length 2");q(this.entries,{key:b(o.value),value:b(l.value)})}else for(var u in e)g(e,u)&&q(this.entries,{key:u,value:b(e[u])})},parseQuery:function(e){if(e)for(var t,i,r=J(e,"&"),n=0;n0?arguments[0]:void 0));a||(this.length=e.entries.length)},ge=me.prototype;u(ge,{append:function(e,t){I(arguments.length,2);var i=N(this);q(i.entries,{key:b(e),value:b(t)}),a||this.length++,i.updateURL()},delete:function(e){I(arguments.length,1);for(var t=N(this),i=t.entries,r=b(e),n=0;nt.key?1:-1})),e.updateURL()},forEach:function(e){for(var t,i=N(this).entries,r=y(e,arguments.length>1?arguments[1]:void 0),n=0;n1?de(arguments[1]):{})}}),m(k)&&(fe=function(e){return f(this,G),new k(e,arguments.length>1?de(arguments[1]):{})},G.constructor=fe,fe.prototype=G,i({global:!0,constructor:!0,dontCallGetSet:!0,forced:!0},{Request:fe}))),t.exports={URLSearchParams:me,getState:N}})),Hce=z((()=>{"use strict";t5();var e,t=Le(),i=Rr(),r=F6(),n=Qt(),s=ml(),a=Nt(),o=An(),l=Ms(),h=xc(),u=wi(),c=KL(),p=PN(),d=cv(),f=nb().codeAt,m=Qle(),g=ai(),y=Ka(),v=np(),T=Z6(),x=ps(),b=x.set,_=x.getterFor("URL"),E=T.URLSearchParams,w=T.getState,S=n.URL,I=n.TypeError,M=n.parseInt,A=Math.floor,D=Math.pow,O=a("".charAt),R=a(/./.exec),C=a([].join),N=a(1..toString),P=a([].pop),L=a([].push),F=a("".replace),U=a([].shift),k=a("".split),B=a("".slice),G=a("".toLowerCase),z=a([].unshift),H="Invalid scheme",V="Invalid host",j="Invalid port",W=/[a-z]/i,Y=/[\d+-.a-z]/i,X=/\d/,q=/^0x/i,Z=/^[0-7]+$/,K=/^\d+$/,$=/^[\da-f]+$/i,J=/[\0\t\n\r #%/:<>?@[\\\]^|]/,Q=/[\0\t\n\r #/:<>?@[\\\]^|]/,ee=/^[\u0000-\u0020]+/,te=/(^|[^\u0000-\u0020])[\u0000-\u0020]+$/,ie=/[\t\n\r]/g,re=function(e){var t,i,r,n;if("number"==typeof e){for(t=[],i=0;i<4;i++)z(t,e%256),e=A(e/256);return C(t,".")}if("object"==typeof e){for(t="",r=function(e){for(var t=null,i=1,r=null,n=0,s=0;s<8;s++)0!==e[s]?(n>i&&(t=r,i=n),r=null,n=0):(null===r&&(r=s),++n);return n>i&&(t=r,i=n),t}(e),i=0;i<8;i++)n&&0===e[i]||(n&&(n=!1),r===i?(t+=i?":":"::",n=!0):(t+=N(e[i],16),i<7&&(t+=":")));return"["+t+"]"}return e},ne={},se=c({},ne,{" ":1,'"':1,"<":1,">":1,"`":1}),ae=c({},se,{"#":1,"?":1,"{":1,"}":1}),oe=c({},ae,{"/":1,":":1,";":1,"=":1,"@":1,"[":1,"\\":1,"]":1,"^":1,"|":1}),le=function(e,t){var i=f(e,0);return i>32&&i<127&&!u(t,e)?e:encodeURIComponent(e)},he={ftp:21,file:null,http:80,https:443,ws:80,wss:443},ue=function(e,t){var i;return 2==e.length&&R(W,O(e,0))&&(":"==(i=O(e,1))||!t&&"|"==i)},ce=function(e){var t;return e.length>1&&ue(B(e,0,2))&&(2==e.length||"/"===(t=O(e,2))||"\\"===t||"?"===t||"#"===t)},pe=function(e){return"."===e||"%2e"===G(e)},de=function(e){return".."===(e=G(e))||"%2e."===e||".%2e"===e||"%2e%2e"===e},fe={},me={},ge={},ye={},ve={},Te={},xe={},be={},_e={},Ee={},we={},Se={},Ie={},Me={},Ae={},De={},Oe={},Re={},Ce={},Ne={},Pe={},Fe=function(e,t,i){var r,n,s,a=g(e);if(t){if(n=this.parse(a))throw I(n);this.searchParams=null}else{if(void 0!==i&&(r=new Fe(i,!0)),n=this.parse(a,null,r))throw I(n);(s=w(new E)).bindURL(this),this.searchParams=s}};Fe.prototype={type:"URL",parse:function(t,i,r){var n,s,a,o,l=this,h=i||fe,c=0,f="",m=!1,y=!1,v=!1;for(t=g(t),i||(l.scheme="",l.username="",l.password="",l.host=null,l.port=null,l.path=[],l.query=null,l.fragment=null,l.cannotBeABaseURL=!1,t=F(t,ee,""),t=F(t,te,"$1")),t=F(t,ie,""),n=p(t);c<=n.length;){switch(s=n[c],h){case fe:if(!s||!R(W,s)){if(i)return H;h=ge;continue}f+=G(s),h=me;break;case me:if(s&&(R(Y,s)||"+"==s||"-"==s||"."==s))f+=G(s);else{if(":"!=s){if(i)return H;f="",h=ge,c=0;continue}if(i&&(l.isSpecial()!=u(he,f)||"file"==f&&(l.includesCredentials()||null!==l.port)||"file"==l.scheme&&!l.host))return;if(l.scheme=f,i)return void(l.isSpecial()&&he[l.scheme]==l.port&&(l.port=null));f="","file"==l.scheme?h=Me:l.isSpecial()&&r&&r.scheme==l.scheme?h=ye:l.isSpecial()?h=be:"/"==n[c+1]?(h=ve,c++):(l.cannotBeABaseURL=!0,L(l.path,""),h=Ce)}break;case ge:if(!r||r.cannotBeABaseURL&&"#"!=s)return H;if(r.cannotBeABaseURL&&"#"==s){l.scheme=r.scheme,l.path=d(r.path),l.query=r.query,l.fragment="",l.cannotBeABaseURL=!0,h=Pe;break}h="file"==r.scheme?Me:Te;continue;case ye:if("/"!=s||"/"!=n[c+1]){h=Te;continue}h=_e,c++;break;case ve:if("/"==s){h=Ee;break}h=Re;continue;case Te:if(l.scheme=r.scheme,s==e)l.username=r.username,l.password=r.password,l.host=r.host,l.port=r.port,l.path=d(r.path),l.query=r.query;else if("/"==s||"\\"==s&&l.isSpecial())h=xe;else if("?"==s)l.username=r.username,l.password=r.password,l.host=r.host,l.port=r.port,l.path=d(r.path),l.query="",h=Ne;else{if("#"!=s){l.username=r.username,l.password=r.password,l.host=r.host,l.port=r.port,l.path=d(r.path),l.path.length--,h=Re;continue}l.username=r.username,l.password=r.password,l.host=r.host,l.port=r.port,l.path=d(r.path),l.query=r.query,l.fragment="",h=Pe}break;case xe:if(!l.isSpecial()||"/"!=s&&"\\"!=s){if("/"!=s){l.username=r.username,l.password=r.password,l.host=r.host,l.port=r.port,h=Re;continue}h=Ee}else h=_e;break;case be:if(h=_e,"/"!=s||"/"!=O(f,c+1))continue;c++;break;case _e:if("/"!=s&&"\\"!=s){h=Ee;continue}break;case Ee:if("@"==s){m&&(f="%40"+f),m=!0,a=p(f);for(var T=0;T65535)return j;l.port=l.isSpecial()&&_===he[l.scheme]?null:_,f=""}if(i)return;h=Oe;continue}return j}f+=s;break;case Me:if(l.scheme="file","/"==s||"\\"==s)h=Ae;else{if(!r||"file"!=r.scheme){h=Re;continue}if(s==e)l.host=r.host,l.path=d(r.path),l.query=r.query;else if("?"==s)l.host=r.host,l.path=d(r.path),l.query="",h=Ne;else{if("#"!=s){ce(C(d(n,c),""))||(l.host=r.host,l.path=d(r.path),l.shortenPath()),h=Re;continue}l.host=r.host,l.path=d(r.path),l.query=r.query,l.fragment="",h=Pe}}break;case Ae:if("/"==s||"\\"==s){h=De;break}r&&"file"==r.scheme&&!ce(C(d(n,c),""))&&(ue(r.path[0],!0)?L(l.path,r.path[0]):l.host=r.host),h=Re;continue;case De:if(s==e||"/"==s||"\\"==s||"?"==s||"#"==s){if(!i&&ue(f))h=Re;else if(""==f){if(l.host="",i)return;h=Oe}else{if(o=l.parseHost(f))return o;if("localhost"==l.host&&(l.host=""),i)return;f="",h=Oe}continue}f+=s;break;case Oe:if(l.isSpecial()){if(h=Re,"/"!=s&&"\\"!=s)continue}else if(i||"?"!=s)if(i||"#"!=s){if(s!=e&&(h=Re,"/"!=s))continue}else l.fragment="",h=Pe;else l.query="",h=Ne;break;case Re:if(s==e||"/"==s||"\\"==s&&l.isSpecial()||!i&&("?"==s||"#"==s)){if(de(f)?(l.shortenPath(),"/"!=s&&!("\\"==s&&l.isSpecial())&&L(l.path,"")):pe(f)?"/"!=s&&!("\\"==s&&l.isSpecial())&&L(l.path,""):("file"==l.scheme&&!l.path.length&&ue(f)&&(l.host&&(l.host=""),f=O(f,0)+":"),L(l.path,f)),f="","file"==l.scheme&&(s==e||"?"==s||"#"==s))for(;l.path.length>1&&""===l.path[0];)U(l.path);"?"==s?(l.query="",h=Ne):"#"==s&&(l.fragment="",h=Pe)}else f+=le(s,ae);break;case Ce:"?"==s?(l.query="",h=Ne):"#"==s?(l.fragment="",h=Pe):s!=e&&(l.path[0]+=le(s,ne));break;case Ne:i||"#"!=s?s!=e&&("'"==s&&l.isSpecial()?l.query+="%27":l.query+="#"==s?"%23":le(s,ne)):(l.fragment="",h=Pe);break;case Pe:s!=e&&(l.fragment+=le(s,se))}c++}},parseHost:function(e){var t,i,r;if("["==O(e,0)){if("]"!=O(e,e.length-1)||(t=function(e){var t,i,r,n,s,a,o,l=[0,0,0,0,0,0,0,0],h=0,u=null,c=0,p=function(){return O(e,c)};if(":"==p()){if(":"!=O(e,1))return;c+=2,u=++h}for(;p();){if(8==h)return;if(":"!=p()){for(t=i=0;i<4&&R($,p());)t=16*t+M(p(),16),c++,i++;if("."==p()){if(0==i||(c-=i,h>6))return;for(r=0;p();){if(n=null,r>0){if(!("."==p()&&r<4))return;c++}if(!R(X,p()))return;for(;R(X,p());){if(s=M(p(),10),null===n)n=s;else{if(0==n)return;n=10*n+s}if(n>255)return;c++}l[h]=256*l[h]+n,(2==++r||4==r)&&h++}if(4!=r)return;break}if(":"==p()){if(c++,!p())return}else if(p())return;l[h++]=t}else{if(null!==u)return;c++,u=++h}}if(null!==u)for(a=h-u,h=7;0!=h&&a>0;)o=l[h],l[h--]=l[u+a-1],l[u+--a]=o;else if(8!=h)return;return l}(B(e,1,-1)),!t))return V;this.host=t}else if(this.isSpecial()){if(e=m(e),R(J,e)||(t=function(e){var t,i,r,n,s,a,o,l=k(e,".");if(l.length&&""==l[l.length-1]&&l.length--,(t=l.length)>4)return e;for(i=[],r=0;r1&&"0"==O(n,0)&&(s=R(q,n)?16:8,n=B(n,8==s?1:2)),""===n)a=0;else{if(!R(10==s?K:8==s?Z:$,n))return e;a=M(n,s)}L(i,a)}for(r=0;r=D(256,5-t))return null}else if(a>255)return null;for(o=P(i),r=0;r1?arguments[1]:void 0,n=b(t,new Fe(e,!1,r));i||(t.href=n.serialize(),t.origin=n.getOrigin(),t.protocol=n.getProtocol(),t.username=n.getUsername(),t.password=n.getPassword(),t.host=n.getHost(),t.hostname=n.getHostname(),t.port=n.getPort(),t.pathname=n.getPathname(),t.search=n.getSearch(),t.searchParams=n.getSearchParams(),t.hash=n.getHash())},Ge=Be.prototype,ze=function(e,t){return{get:function(){return _(this)[e]()},set:t&&function(e){return _(this)[t](e)},configurable:!0,enumerable:!0}};i&&(l(Ge,"href",ze("serialize","setHref")),l(Ge,"origin",ze("getOrigin")),l(Ge,"protocol",ze("getProtocol","setProtocol")),l(Ge,"username",ze("getUsername","setUsername")),l(Ge,"password",ze("getPassword","setPassword")),l(Ge,"host",ze("getHost","setHost")),l(Ge,"hostname",ze("getHostname","setHostname")),l(Ge,"port",ze("getPort","setPort")),l(Ge,"pathname",ze("getPathname","setPathname")),l(Ge,"search",ze("getSearch","setSearch")),l(Ge,"searchParams",ze("getSearchParams")),l(Ge,"hash",ze("getHash","setHash"))),o(Ge,"toJSON",(function(){return _(this).serialize()}),{enumerable:!0}),o(Ge,"toString",(function(){return _(this).serialize()}),{enumerable:!0}),S&&(Ue=S.createObjectURL,ke=S.revokeObjectURL,Ue&&o(Be,"createObjectURL",s(Ue,S)),ke&&o(Be,"revokeObjectURL",s(ke,S))),y(Be,"URL"),t({global:!0,constructor:!0,forced:!r,sham:!i},{URL:Be})})),Uce=z((()=>{Hce()})),Bce=z((()=>{"use strict";var e=Le(),t=Jr();e({target:"URL",proto:!0,enumerable:!0},{toJSON:function(){return t(URL.prototype.toString,this)}})})),kce=z((()=>{Z6()})),Gce=z((()=>{"use strict";var e=Rr(),t=Nt(),i=Ms(),r=URLSearchParams.prototype,n=t(r.forEach);e&&!("size"in r)&&i(r,"size",{get:function(){var e=0;return n(this,(function(){e++})),e},configurable:!0,enumerable:!0})})),zce=z(((e,t)=>{WW(),JW(),QW(),eq(),tq(),rq(),iq(),nq(),sq(),aq(),oq(),lq(),cq(),uq(),hq(),Hq(),Vq(),sY(),cY(),hY(),vY(),bY(),IY(),wY(),RY(),DY(),AY(),NY(),LY(),UY(),BY(),VY(),JY(),QY(),tX(),rX(),A1(),IX(),RX(),MX(),CX(),OX(),HX(),BX(),GX(),jX(),WX(),o$(),u$(),h$(),d$(),v$(),y$(),T$(),E$(),b$(),I$(),$$(),oZ(),gZ(),yZ(),TZ(),bZ(),_Z(),SZ(),LZ(),FZ(),GZ(),WZ(),YZ(),QZ(),rK(),aK(),oK(),lN(),lK(),_K(),RK(),CK(),OK(),NK(),LK(),UK(),kK(),zK(),WK(),YK(),$K(),ZK(),KK(),JK(),tJ(),nJ(),sJ(),aJ(),vJ(),yJ(),bJ(),IJ(),_J(),SJ(),wJ(),RJ(),PJ(),GJ(),qJ(),JJ(),tQ(),aQ(),oQ(),uQ(),pQ(),fQ(),mQ(),TQ(),EQ(),bQ(),_Q(),SQ(),wQ(),MQ(),DQ(),AQ(),PQ(),LQ(),HQ(),BQ(),kQ(),GQ(),VQ(),XQ(),$Q(),ZQ(),QQ(),eee(),ree(),nee(),mte(),gte(),yte(),xte(),Ite(),Cte(),Pte(),Nte(),Ute(),Bte(),kte(),Gte(),Vte(),zte(),jte(),$te(),Kte(),Jte(),fre(),gre(),HR(),xre(),_re(),Rre(),Cre(),Ore(),Pre(),Hre(),jre(),Yre(),$re(),t5(),lie(),yie(),Eie(),bie(),Sie(),wie(),Oie(),Hie(),kie(),qie(),Kie(),Qie(),ine(),lne(),dne(),vne(),yne(),Tne(),Ene(),bne(),xne(),Ine(),_ne(),Sne(),wne(),Rne(),Mne(),Dne(),ise(),nse(),sse(),ase(),ose(),lse(),cse(),use(),hse(),dse(),mse(),vse(),Tse(),Sse(),Rse(),Dse(),Ase(),Pse(),Lse(),Fse(),Use(),kse(),Wse(),Yse(),$se(),Kse(),Qse(),tae(),iae(),sae(),hae(),dae(),mae(),bae(),_ae(),Dae(),Cae(),Aae(),Pae(),Nae(),Bae(),roe(),noe(),doe(),xoe(),Doe(),Loe(),$oe(),rle(),nle(),mle(),gle(),yle(),Lle(),Vle(),Uce(),Bce(),kce(),Gce(),t.exports=_w()})),jce=z(((e,t)=>{var i=function(e){"use strict";var t,i=Object.prototype,r=i.hasOwnProperty,n=Object.defineProperty||function(e,t,i){e[t]=i.value},s="function"==typeof Symbol?Symbol:{},a=s.iterator||"@@iterator",o=s.asyncIterator||"@@asyncIterator",l=s.toStringTag||"@@toStringTag";function h(e,t,i){return Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{h({},"")}catch(e){h=function(e,t,i){return e[t]=i}}function u(e,t,i,r){var s=t&&t.prototype instanceof y?t:y,a=Object.create(s.prototype),o=new O(r||[]);return n(a,"_invoke",{value:I(e,i,o)}),a}function c(e,t,i){try{return{type:"normal",arg:e.call(t,i)}}catch(e){return{type:"throw",arg:e}}}e.wrap=u;var p="suspendedStart",d="suspendedYield",f="executing",m="completed",g={};function y(){}function v(){}function T(){}var x={};h(x,a,(function(){return this}));var b=Object.getPrototypeOf,_=b&&b(b(R([])));_&&_!==i&&r.call(_,a)&&(x=_);var E=T.prototype=y.prototype=Object.create(x);function w(e){["next","throw","return"].forEach((function(t){h(e,t,(function(e){return this._invoke(t,e)}))}))}function S(e,t){function i(n,s,a,o){var l=c(e[n],e,s);if("throw"!==l.type){var h=l.arg,u=h.value;return u&&"object"==typeof u&&r.call(u,"__await")?t.resolve(u.__await).then((function(e){i("next",e,a,o)}),(function(e){i("throw",e,a,o)})):t.resolve(u).then((function(e){h.value=e,a(h)}),(function(e){return i("throw",e,a,o)}))}o(l.arg)}var s;n(this,"_invoke",{value:function(e,r){function n(){return new t((function(t,n){i(e,r,t,n)}))}return s=s?s.then(n,n):n()}})}function I(e,t,i){var r=p;return function(n,s){if(r===f)throw new Error("Generator is already running");if(r===m){if("throw"===n)throw s;return C()}for(i.method=n,i.arg=s;;){var a=i.delegate;if(a){var o=M(a,i);if(o){if(o===g)continue;return o}}if("next"===i.method)i.sent=i._sent=i.arg;else if("throw"===i.method){if(r===p)throw r=m,i.arg;i.dispatchException(i.arg)}else"return"===i.method&&i.abrupt("return",i.arg);r=f;var l=c(e,t,i);if("normal"===l.type){if(r=i.done?m:d,l.arg===g)continue;return{value:l.arg,done:i.done}}"throw"===l.type&&(r=m,i.method="throw",i.arg=l.arg)}}}function M(e,i){var r=i.method,n=e.iterator[r];if(n===t)return i.delegate=null,"throw"===r&&e.iterator.return&&(i.method="return",i.arg=t,M(e,i),"throw"===i.method)||"return"!==r&&(i.method="throw",i.arg=new TypeError("The iterator does not provide a '"+r+"' method")),g;var s=c(n,e.iterator,i.arg);if("throw"===s.type)return i.method="throw",i.arg=s.arg,i.delegate=null,g;var a=s.arg;return a?a.done?(i[e.resultName]=a.value,i.next=e.nextLoc,"return"!==i.method&&(i.method="next",i.arg=t),i.delegate=null,g):a:(i.method="throw",i.arg=new TypeError("iterator result is not an object"),i.delegate=null,g)}function A(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function D(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function O(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(A,this),this.reset(!0)}function R(e){if(e){var i=e[a];if(i)return i.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var n=-1,s=function i(){for(;++n=0;--s){var a=this.tryEntries[s],o=a.completion;if("root"===a.tryLoc)return n("end");if(a.tryLoc<=this.prev){var l=r.call(a,"catchLoc"),h=r.call(a,"finallyLoc");if(l&&h){if(this.prev=0;--i){var n=this.tryEntries[i];if(n.tryLoc<=this.prev&&r.call(n,"finallyLoc")&&this.prev=0;--t){var i=this.tryEntries[t];if(i.finallyLoc===e)return this.complete(i.completion,i.afterLoc),D(i),g}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var i=this.tryEntries[t];if(i.tryLoc===e){var r=i.completion;if("throw"===r.type){var n=r.arg;D(i)}return n}}throw new Error("illegal catch attempt")},delegateYield:function(e,i,r){return this.delegate={iterator:R(e),resultName:i,nextLoc:r},"next"===this.method&&(this.arg=t),g}},e}("object"==typeof t?t.exports:{});try{regeneratorRuntime=i}catch(e){"object"==typeof globalThis?globalThis.regeneratorRuntime=i:Function("r","regeneratorRuntime = r")(i)}})),jpe=z(((e,t)=>{!function(e,i){"use strict";"function"==typeof define&&define.amd?define(i):"object"==typeof t&&t.exports?t.exports=i():e.log=i()}(e,(function(){"use strict";var e=function(){},t="undefined",i=typeof window!==t&&typeof window.navigator!==t&&/Trident\/|MSIE /.test(window.navigator.userAgent),r=["trace","debug","info","warn","error"];function n(e,t){var i=e[t];if("function"==typeof i.bind)return i.bind(e);try{return Function.prototype.bind.call(i,e)}catch(t){return function(){return Function.prototype.apply.apply(i,[e,arguments])}}}function s(){console.log&&(console.log.apply?console.log.apply(console,arguments):Function.prototype.apply.apply(console.log,[console,arguments])),console.trace&&console.trace()}function a(t,i){for(var n=0;n=0&&i<=o.levels.SILENT))throw"log.setLevel() called with invalid level: "+i;if(s=i,!1!==n&&function(e){var i=(r[e]||"silent").toUpperCase();if(typeof window!==t&&h){try{return void(window.localStorage[h]=i)}catch(e){}try{window.document.cookie=encodeURIComponent(h)+"="+i+";"}catch(e){}}}(i),a.call(o,i,e),typeof console===t&&i{var i,r;i=e,r=function(){"use strict";function e(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function t(e,t){for(var i=0;it?1:e0))break;if(null===t.right)break;if(i(e,t.right.key)>0&&(l=t.right,t.right=l.left,l.left=t,null===(t=l).right))break;s.right=t,s=t,t=t.right}}return s.right=t.left,a.left=t.right,t.left=n.right,t.right=n.left,t}function a(e,t,i,n){var a=new r(e,t);if(null===i)return a.left=a.right=null,a;var o=n(e,(i=s(e,i,n)).key);return o<0?(a.left=i.left,a.right=i,i.left=null):o>=0&&(a.right=i.right,a.left=i,i.right=null),a}function o(e,t,i){var r=null,n=null;if(t){var a=i((t=s(e,t,i)).key,e);0===a?(r=t.left,n=t.right):a<0?(n=t.right,t.right=null,r=t):(r=t.left,t.left=null,n=t)}return{left:r,right:n}}function l(e,t,i,r,n){if(e){r(t+(i?"└── ":"├── ")+n(e)+"\n");var s=t+(i?" ":"│ ");e.left&&l(e.left,s,!1,r,n),e.right&&l(e.right,s,!0,r,n)}}var h=function(){function e(e){void 0===e&&(e=n),this._root=null,this._size=0,this._comparator=e}return e.prototype.insert=function(e,t){return this._size++,this._root=a(e,t,this._root,this._comparator)},e.prototype.add=function(e,t){var i=new r(e,t);null===this._root&&(i.left=i.right=null,this._size++,this._root=i);var n=this._comparator,a=s(e,this._root,n),o=n(e,a.key);return 0===o?this._root=a:(o<0?(i.left=a.left,i.right=a,a.left=null):o>0&&(i.right=a.right,i.left=a,a.right=null),this._size++,this._root=i),this._root},e.prototype.remove=function(e){this._root=this._remove(e,this._root,this._comparator)},e.prototype._remove=function(e,t,i){var r;return null===t?null:0===i(e,(t=s(e,t,i)).key)?(null===t.left?r=t.right:(r=s(e,t.left,i)).right=t.right,this._size--,r):t},e.prototype.pop=function(){var e=this._root;if(e){for(;e.left;)e=e.left;return this._root=s(e.key,this._root,this._comparator),this._root=this._remove(e.key,this._root,this._comparator),{key:e.key,data:e.data}}return null},e.prototype.findStatic=function(e){for(var t=this._root,i=this._comparator;t;){var r=i(e,t.key);if(0===r)return t;t=r<0?t.left:t.right}return null},e.prototype.find=function(e){return this._root&&(this._root=s(e,this._root,this._comparator),0!==this._comparator(e,this._root.key))?null:this._root},e.prototype.contains=function(e){for(var t=this._root,i=this._comparator;t;){var r=i(e,t.key);if(0===r)return!0;t=r<0?t.left:t.right}return!1},e.prototype.forEach=function(e,t){for(var i=this._root,r=[],n=!1;!n;)null!==i?(r.push(i),i=i.left):0!==r.length?(i=r.pop(),e.call(t,i),i=i.right):n=!0;return this},e.prototype.range=function(e,t,i,r){for(var n=[],s=this._comparator,a=this._root;0!==n.length||a;)if(a)n.push(a),a=a.left;else{if(s((a=n.pop()).key,t)>0)break;if(s(a.key,e)>=0&&i.call(r,a))return this;a=a.right}return this},e.prototype.keys=function(){var e=[];return this.forEach((function(t){var i=t.key;return e.push(i)})),e},e.prototype.values=function(){var e=[];return this.forEach((function(t){var i=t.data;return e.push(i)})),e},e.prototype.min=function(){return this._root?this.minNode(this._root).key:null},e.prototype.max=function(){return this._root?this.maxNode(this._root).key:null},e.prototype.minNode=function(e){if(void 0===e&&(e=this._root),e)for(;e.left;)e=e.left;return e},e.prototype.maxNode=function(e){if(void 0===e&&(e=this._root),e)for(;e.right;)e=e.right;return e},e.prototype.at=function(e){for(var t=this._root,i=!1,r=0,n=[];!i;)if(t)n.push(t),t=t.left;else if(n.length>0){if(t=n.pop(),r===e)return t;r++,t=t.right}else i=!0;return null},e.prototype.next=function(e){var t=this._root,i=null;if(e.right){for(i=e.right;i.left;)i=i.left;return i}for(var r=this._comparator;t;){var n=r(e.key,t.key);if(0===n)break;n<0?(i=t,t=t.left):t=t.right}return i},e.prototype.prev=function(e){var t=this._root,i=null;if(null!==e.left){for(i=e.left;i.right;)i=i.right;return i}for(var r=this._comparator;t;){var n=r(e.key,t.key);if(0===n)break;n<0?t=t.left:(i=t,t=t.right)}return i},e.prototype.clear=function(){return this._root=null,this._size=0,this},e.prototype.toList=function(){return function(e){for(var t=e,i=[],n=!1,s=new r(null,null),a=s;!n;)t?(i.push(t),t=t.left):i.length>0?t=(t=a=a.next=i.pop()).right:n=!0;return a.next=null,s.next}(this._root)},e.prototype.load=function(e,t,i){void 0===t&&(t=[]),void 0===i&&(i=!1);var n=e.length,s=this._comparator;if(i&&p(e,t,0,n-1,s),null===this._root)this._root=u(e,t,0,n),this._size=n;else{var a=function(e,t,i){for(var n=new r(null,null),s=n,a=e,o=t;null!==a&&null!==o;)i(a.key,o.key)<0?(s.next=a,a=a.next):(s.next=o,o=o.next),s=s.next;return null!==a?s.next=a:null!==o&&(s.next=o),n.next}(this.toList(),function(e,t){for(var i=new r(null,null),n=i,s=0;s0){var a=i+Math.floor(s/2),o=e[a],l=t[a],h=new r(o,l);return h.left=u(e,t,i,a),h.right=u(e,t,a+1,n),h}return null}function c(e,t,i){var r=i-t;if(r>0){var n=t+Math.floor(r/2),s=c(e,t,n),a=e.head;return a.left=s,e.head=e.head.next,a.right=c(e,n+1,i),a}return null}function p(e,t,i,r,n){if(!(i>=r)){for(var s=e[i+r>>1],a=i-1,o=r+1;;){do{a++}while(n(e[a],s)<0);do{o--}while(n(e[o],s)>0);if(a>=o)break;var l=e[a];e[a]=e[o],e[o]=l,l=t[a],t[a]=t[o],t[o]=l}p(e,t,i,o,n),p(e,t,o+1,r,n)}}var d=function(e,t){return e.ll.x<=t.x&&t.x<=e.ur.x&&e.ll.y<=t.y&&t.y<=e.ur.y},f=function(e,t){if(t.ur.xt.x?1:e.yt.y?1:0}}]),i(t,[{key:"link",value:function(e){if(e.point===this.point)throw new Error("Tried to link already linked events");for(var t=e.point.events,i=0,r=t.length;i=0&&l>=0?ah?-1:0:s<0&&l<0?ah?1:0:ls?1:0}}}]),t}(),O=0,R=function(){function t(i,r,n,s){e(this,t),this.id=++O,this.leftSE=i,i.segment=this,i.otherSE=r,this.rightSE=r,r.segment=this,r.otherSE=i,this.rings=n,this.windings=s}return i(t,null,[{key:"compare",value:function(e,t){var i=e.leftSE.point.x,r=t.leftSE.point.x,n=e.rightSE.point.x,s=t.rightSE.point.x;if(sa&&o>l)return-1;var u=e.comparePoint(t.leftSE.point);if(u<0)return 1;if(u>0)return-1;var c=t.comparePoint(e.rightSE.point);return 0!==c?c:-1}if(i>r){if(ao&&a>h)return 1;var p=t.comparePoint(e.leftSE.point);if(0!==p)return p;var d=e.comparePoint(t.rightSE.point);return d<0?1:d>0?-1:1}if(ao)return 1;if(ns){var m=e.comparePoint(t.rightSE.point);if(m<0)return 1;if(m>0)return-1}if(n!==s){var g=l-a,y=n-i,v=h-o,T=s-r;if(g>y&&vT)return-1}return n>s?1:nh?1:e.idt.id?1:0}}]),i(t,[{key:"replaceRightSE",value:function(e){this.rightSE=e,this.rightSE.segment=this,this.rightSE.otherSE=this.leftSE,this.leftSE.otherSE=this.rightSE}},{key:"bbox",value:function(){var e=this.leftSE.point.y,t=this.rightSE.point.y;return{ll:{x:this.leftSE.point.x,y:et?e:t}}}},{key:"vector",value:function(){return{x:this.rightSE.point.x-this.leftSE.point.x,y:this.rightSE.point.y-this.leftSE.point.y}}},{key:"isAnEndpoint",value:function(e){return e.x===this.leftSE.point.x&&e.y===this.leftSE.point.y||e.x===this.rightSE.point.x&&e.y===this.rightSE.point.y}},{key:"comparePoint",value:function(e){if(this.isAnEndpoint(e))return 0;var t=this.leftSE.point,i=this.rightSE.point,r=this.vector();if(t.x===i.x)return e.x===t.x?0:e.x0&&o.swapEvents(),D.comparePoints(this.leftSE.point,this.rightSE.point)>0&&this.swapEvents(),r&&(n.checkForConsuming(),s.checkForConsuming()),i}},{key:"swapEvents",value:function(){var e=this.rightSE;this.rightSE=this.leftSE,this.leftSE=e,this.leftSE.isLeft=!0,this.rightSE.isLeft=!1;for(var t=0,i=this.windings.length;t0){var s=i;i=r,r=s}if(i.prev===r){var a=i;i=r,r=a}for(var o=0,l=r.rings.length;o0))throw new Error("Tried to create degenerate segment at [".concat(e.x,", ").concat(e.y,"]"));n=i,s=e,a=-1}return new t(new D(n,!0),new D(s,!1),[r],[a])}}]),t}(),C=function(){function t(i,r,n){if(e(this,t),!Array.isArray(i)||0===i.length)throw new Error("Input geometry is not a valid Polygon or MultiPolygon");if(this.poly=r,this.isExterior=n,this.segments=[],"number"!=typeof i[0][0]||"number"!=typeof i[0][1])throw new Error("Input geometry is not a valid Polygon or MultiPolygon");var s=x.round(i[0][0],i[0][1]);this.bbox={ll:{x:s.x,y:s.y},ur:{x:s.x,y:s.y}};for(var a=s,o=1,l=i.length;othis.bbox.ur.x&&(this.bbox.ur.x=h.x),h.y>this.bbox.ur.y&&(this.bbox.ur.y=h.y),a=h)}(s.x!==a.x||s.y!==a.y)&&this.segments.push(R.fromRing(a,s,this))}return i(t,[{key:"getSweepEvents",value:function(){for(var e=[],t=0,i=this.segments.length;tthis.bbox.ur.x&&(this.bbox.ur.x=a.bbox.ur.x),a.bbox.ur.y>this.bbox.ur.y&&(this.bbox.ur.y=a.bbox.ur.y),this.interiorRings.push(a)}this.multiPoly=r}return i(t,[{key:"getSweepEvents",value:function(){for(var e=this.exteriorRing.getSweepEvents(),t=0,i=this.interiorRings.length;tthis.bbox.ur.x&&(this.bbox.ur.x=a.bbox.ur.x),a.bbox.ur.y>this.bbox.ur.y&&(this.bbox.ur.y=a.bbox.ur.y),this.polys.push(a)}this.isSubject=r}return i(t,[{key:"getSweepEvents",value:function(){for(var e=[],t=0,i=this.polys.length;t0&&(e=r)}for(var n=e.segment.prevInResult(),s=n?n.prevInResult():null;;){if(!n)return null;if(!s)return n.ringOut;if(s.ringOut!==n.ringOut)return s.ringOut.enclosingRing()!==n.ringOut?n.ringOut:n.ringOut.enclosingRing();n=s.prevInResult(),s=n?n.prevInResult():null}}}]),t}(),F=function(){function t(i){e(this,t),this.exteriorRing=i,i.poly=this,this.interiorRings=[]}return i(t,[{key:"addInterior",value:function(e){this.interiorRings.push(e),e.poly=this}},{key:"getGeom",value:function(){var e=[this.exteriorRing.getGeom()];if(null===e[0])return null;for(var t=0,i=this.interiorRings.length;t1&&void 0!==arguments[1]?arguments[1]:R.compare;e(this,t),this.queue=i,this.tree=new h(r),this.segments=[]}return i(t,[{key:"process",value:function(e){var t=e.segment,i=[];if(e.consumedBy)return e.isLeft?this.queue.remove(e.otherSE):this.tree.remove(t),i;var r=e.isLeft?this.tree.insert(t):this.tree.find(t);if(!r)throw new Error("Unable to find segment #".concat(t.id," ")+"[".concat(t.leftSE.point.x,", ").concat(t.leftSE.point.y,"] -> ")+"[".concat(t.rightSE.point.x,", ").concat(t.rightSE.point.y,"] ")+"in SweepLine tree. Please submit a bug report.");for(var n=r,s=r,a=void 0,o=void 0;void 0===a;)null===(n=this.tree.prev(n))?a=null:void 0===n.key.consumedBy&&(a=n.key);for(;void 0===o;)null===(s=this.tree.next(s))?o=null:void 0===s.key.consumedBy&&(o=s.key);if(e.isLeft){var l=null;if(a){var h=a.getIntersection(t);if(null!==h&&(t.isAnEndpoint(h)||(l=h),!a.isAnEndpoint(h)))for(var u=this._splitSafely(a,h),c=0,p=u.length;c0?(this.tree.remove(t),i.push(e)):(this.segments.push(t),t.prev=a)}else{if(a&&o){var _=a.getIntersection(o);if(null!==_){if(!a.isAnEndpoint(_))for(var E=this._splitSafely(a,_),w=0,S=E.length;wB)throw new Error("Infinite loop when putting segment endpoints in a priority queue (queue size too big). Please file a bug report.");for(var _=new k(m),E=m.size,w=m.pop();w;){var S=w.key;if(m.size===E){var I=S.segment;throw new Error("Unable to pop() ".concat(S.isLeft?"left":"right"," SweepEvent ")+"[".concat(S.point.x,", ").concat(S.point.y,"] from segment #").concat(I.id," ")+"[".concat(I.leftSE.point.x,", ").concat(I.leftSE.point.y,"] -> ")+"[".concat(I.rightSE.point.x,", ").concat(I.rightSE.point.y,"] from queue. ")+"Please file a bug report.")}if(m.size>B)throw new Error("Infinite loop when passing sweep line over endpoints (queue size too big). Please file a bug report.");if(_.segments.length>G)throw new Error("Infinite loop when passing sweep line over endpoints (too many sweep line segments). Please file a bug report.");for(var M=_.process(S),A=0,O=M.length;A1?t-1:0),r=1;r1?t-1:0),r=1;r1?t-1:0),r=1;r1?t-1:0),r=1;r{"use strict";t.exports=function(e,t,r){var n=e*t,s=i*e,a=s-(s-e),o=e-a,l=i*t,h=l-(l-t),u=t-h,c=o*u-(n-a*h-o*h-a*u);return r?(r[0]=c,r[1]=n,r):[c,n]};var i=+(Math.pow(2,27)+1)})),KB=z(((e,t)=>{"use strict";t.exports=function(e,t){var i=0|e.length,r=0|t.length;if(1===i&&1===r)return function(e,t){var i=e+t,r=i-e,n=i-r,s=t-r,a=e-n,o=a+s;return o?[o,i]:[i]}(e[0],t[0]);var n,s,a=new Array(i+r),o=0,l=0,h=0,u=Math.abs,c=e[l],p=u(c),d=t[h],f=u(d);p=r?(n=c,(l+=1){"use strict";t.exports=function(e,t,i){var r=e+t,n=r-e,s=t-n,a=e-(r-n);return i?(i[0]=a+s,i[1]=r,i):[a+s,r]}})),QB=z(((e,t)=>{"use strict";var i=WC(),r=Ede();t.exports=function(e,t){var n=e.length;if(1===n){var s=i(e[0],t);return s[0]?s:[s[1]]}var a=new Array(2*n),o=[.1,.1],l=[.1,.1],h=0;i(e[0],t,o),o[0]&&(a[h++]=o[0]);for(var u=1;u{"use strict";t.exports=function(e){for(var t=e.length,i=e[e.length-1],r=t,n=t-2;n>=0;--n){var s=i;(l=(o=e[n])-((i=s+o)-s))&&(e[--r]=i,i=l)}var a=0;for(n=r;n{"use strict";t.exports=function(e,t){var i=0|e.length,r=0|t.length;if(1===i&&1===r)return function(e,t){var i=e+t,r=i-e,n=i-r,s=t-r,a=e-n,o=a+s;return o?[o,i]:[i]}(e[0],-t[0]);var n,s,a=new Array(i+r),o=0,l=0,h=0,u=Math.abs,c=e[l],p=u(c),d=-t[h],f=u(d);p=r?(n=c,(l+=1){"use strict";var i=WC(),r=KB(),n=QB(),s=Sde(),a=5;function o(e,t,i,r){return function(i,n,s){var a=e(e(t(n[1],s[0]),t(-s[1],n[0])),e(t(i[1],n[0]),t(-n[1],i[0]))),o=e(t(i[1],s[0]),t(-s[1],i[0])),l=r(a,o);return l[l.length-1]}}function l(e,t,i,r){return function(n,s,a,o){var l=e(e(i(e(t(a[1],o[0]),t(-o[1],a[0])),s[2]),e(i(e(t(s[1],o[0]),t(-o[1],s[0])),-a[2]),i(e(t(s[1],a[0]),t(-a[1],s[0])),o[2]))),e(i(e(t(s[1],o[0]),t(-o[1],s[0])),n[2]),e(i(e(t(n[1],o[0]),t(-o[1],n[0])),-s[2]),i(e(t(n[1],s[0]),t(-s[1],n[0])),o[2])))),h=e(e(i(e(t(a[1],o[0]),t(-o[1],a[0])),n[2]),e(i(e(t(n[1],o[0]),t(-o[1],n[0])),-a[2]),i(e(t(n[1],a[0]),t(-a[1],n[0])),o[2]))),e(i(e(t(s[1],a[0]),t(-a[1],s[0])),n[2]),e(i(e(t(n[1],a[0]),t(-a[1],n[0])),-s[2]),i(e(t(n[1],s[0]),t(-s[1],n[0])),a[2])))),u=r(l,h);return u[u.length-1]}}function h(e,t,i,r){return function(n,s,a,o,l){var h=e(e(e(i(e(i(e(t(o[1],l[0]),t(-l[1],o[0])),a[2]),e(i(e(t(a[1],l[0]),t(-l[1],a[0])),-o[2]),i(e(t(a[1],o[0]),t(-o[1],a[0])),l[2]))),s[3]),e(i(e(i(e(t(o[1],l[0]),t(-l[1],o[0])),s[2]),e(i(e(t(s[1],l[0]),t(-l[1],s[0])),-o[2]),i(e(t(s[1],o[0]),t(-o[1],s[0])),l[2]))),-a[3]),i(e(i(e(t(a[1],l[0]),t(-l[1],a[0])),s[2]),e(i(e(t(s[1],l[0]),t(-l[1],s[0])),-a[2]),i(e(t(s[1],a[0]),t(-a[1],s[0])),l[2]))),o[3]))),e(i(e(i(e(t(a[1],o[0]),t(-o[1],a[0])),s[2]),e(i(e(t(s[1],o[0]),t(-o[1],s[0])),-a[2]),i(e(t(s[1],a[0]),t(-a[1],s[0])),o[2]))),-l[3]),e(i(e(i(e(t(o[1],l[0]),t(-l[1],o[0])),s[2]),e(i(e(t(s[1],l[0]),t(-l[1],s[0])),-o[2]),i(e(t(s[1],o[0]),t(-o[1],s[0])),l[2]))),n[3]),i(e(i(e(t(o[1],l[0]),t(-l[1],o[0])),n[2]),e(i(e(t(n[1],l[0]),t(-l[1],n[0])),-o[2]),i(e(t(n[1],o[0]),t(-o[1],n[0])),l[2]))),-s[3])))),e(e(i(e(i(e(t(s[1],l[0]),t(-l[1],s[0])),n[2]),e(i(e(t(n[1],l[0]),t(-l[1],n[0])),-s[2]),i(e(t(n[1],s[0]),t(-s[1],n[0])),l[2]))),o[3]),e(i(e(i(e(t(s[1],o[0]),t(-o[1],s[0])),n[2]),e(i(e(t(n[1],o[0]),t(-o[1],n[0])),-s[2]),i(e(t(n[1],s[0]),t(-s[1],n[0])),o[2]))),-l[3]),i(e(i(e(t(a[1],o[0]),t(-o[1],a[0])),s[2]),e(i(e(t(s[1],o[0]),t(-o[1],s[0])),-a[2]),i(e(t(s[1],a[0]),t(-a[1],s[0])),o[2]))),n[3]))),e(i(e(i(e(t(a[1],o[0]),t(-o[1],a[0])),n[2]),e(i(e(t(n[1],o[0]),t(-o[1],n[0])),-a[2]),i(e(t(n[1],a[0]),t(-a[1],n[0])),o[2]))),-s[3]),e(i(e(i(e(t(s[1],o[0]),t(-o[1],s[0])),n[2]),e(i(e(t(n[1],o[0]),t(-o[1],n[0])),-s[2]),i(e(t(n[1],s[0]),t(-s[1],n[0])),o[2]))),a[3]),i(e(i(e(t(s[1],a[0]),t(-a[1],s[0])),n[2]),e(i(e(t(n[1],a[0]),t(-a[1],n[0])),-s[2]),i(e(t(n[1],s[0]),t(-s[1],n[0])),a[2]))),-o[3]))))),u=e(e(e(i(e(i(e(t(o[1],l[0]),t(-l[1],o[0])),a[2]),e(i(e(t(a[1],l[0]),t(-l[1],a[0])),-o[2]),i(e(t(a[1],o[0]),t(-o[1],a[0])),l[2]))),n[3]),i(e(i(e(t(o[1],l[0]),t(-l[1],o[0])),n[2]),e(i(e(t(n[1],l[0]),t(-l[1],n[0])),-o[2]),i(e(t(n[1],o[0]),t(-o[1],n[0])),l[2]))),-a[3])),e(i(e(i(e(t(a[1],l[0]),t(-l[1],a[0])),n[2]),e(i(e(t(n[1],l[0]),t(-l[1],n[0])),-a[2]),i(e(t(n[1],a[0]),t(-a[1],n[0])),l[2]))),o[3]),i(e(i(e(t(a[1],o[0]),t(-o[1],a[0])),n[2]),e(i(e(t(n[1],o[0]),t(-o[1],n[0])),-a[2]),i(e(t(n[1],a[0]),t(-a[1],n[0])),o[2]))),-l[3]))),e(e(i(e(i(e(t(a[1],l[0]),t(-l[1],a[0])),s[2]),e(i(e(t(s[1],l[0]),t(-l[1],s[0])),-a[2]),i(e(t(s[1],a[0]),t(-a[1],s[0])),l[2]))),n[3]),i(e(i(e(t(a[1],l[0]),t(-l[1],a[0])),n[2]),e(i(e(t(n[1],l[0]),t(-l[1],n[0])),-a[2]),i(e(t(n[1],a[0]),t(-a[1],n[0])),l[2]))),-s[3])),e(i(e(i(e(t(s[1],l[0]),t(-l[1],s[0])),n[2]),e(i(e(t(n[1],l[0]),t(-l[1],n[0])),-s[2]),i(e(t(n[1],s[0]),t(-s[1],n[0])),l[2]))),a[3]),i(e(i(e(t(s[1],a[0]),t(-a[1],s[0])),n[2]),e(i(e(t(n[1],a[0]),t(-a[1],n[0])),-s[2]),i(e(t(n[1],s[0]),t(-s[1],n[0])),a[2]))),-l[3])))),c=r(h,u);return c[c.length-1]}}function u(e){return(3===e?o:4===e?l:h)(r,i,n,s)}var c=u(3),p=u(4),d=[function(){return 0},function(){return 0},function(e,t){return t[0]-e[0]},function(e,t,i){var r,n=(e[1]-i[1])*(t[0]-i[0]),s=(e[0]-i[0])*(t[1]-i[1]),a=n-s;if(n>0){if(s<=0)return a;r=n+s}else{if(!(n<0))return a;if(s>=0)return a;r=-(n+s)}var o=33306690738754716e-32*r;return a>=o||a<=-o?a:c(e,t,i)},function(e,t,i,r){var n=e[0]-r[0],s=t[0]-r[0],a=i[0]-r[0],o=e[1]-r[1],l=t[1]-r[1],h=i[1]-r[1],u=e[2]-r[2],c=t[2]-r[2],d=i[2]-r[2],f=s*h,m=a*l,g=a*o,y=n*h,v=n*l,T=s*o,x=u*(f-m)+c*(g-y)+d*(v-T),b=7771561172376103e-31*((Math.abs(f)+Math.abs(m))*Math.abs(u)+(Math.abs(g)+Math.abs(y))*Math.abs(c)+(Math.abs(v)+Math.abs(T))*Math.abs(d));return x>b||-x>b?x:p(e,t,i,r)}];function f(e){var t=d[e.length];return t||(t=d[e.length]=u(e.length)),t.apply(void 0,e)}function m(e,t,i,r,n,s,a){return function(t,i,o,l,h){switch(arguments.length){case 0:case 1:return 0;case 2:return r(t,i);case 3:return n(t,i,o);case 4:return s(t,i,o,l);case 5:return a(t,i,o,l,h)}for(var u=new Array(arguments.length),c=0;c{"use strict";t.exports=function(e,t,r,n){var s=i(e,r,n),a=i(t,r,n);if(s>0&&a>0||s<0&&a<0)return!1;var o=i(r,e,t),l=i(n,e,t);return!(o>0&&l>0||o<0&&l<0)&&(0!==s||0!==a||0!==o||0!==l||function(e,t,i,r){for(var n=0;n<2;++n){var s=e[n],a=t[n],o=Math.min(s,a),l=Math.max(s,a),h=i[n],u=r[n],c=Math.min(h,u);if(Math.max(h,u){"use strict";t.exports=function(e,t,o,l){if(!a(e,t,o,l))return[[0],[0],[0]];var h=r([o[1]],[-l[1]]),u=r([-o[0]],[l[0]]),c=r(r(n(u,e[1]),n(u,-t[1])),r(n(h,e[0]),n(h,-t[0]))),p=r(i(-e[0],t[1]),i(e[1],t[0])),d=r(i(-o[0],l[1]),i(o[1],l[0])),f=r(r(n(d,e[0]),n(d,-t[0])),r(n(p,-o[0]),n(p,l[0]))),m=r(r(n(d,e[1]),n(d,-t[1])),r(n(p,-o[1]),n(p,l[1])));return[s(f),s(m),s(c)]};var i=WC(),r=KB(),n=QB(),s=Ide(),a=Dde()})),Pde=z(((e,t)=>{t.exports=function(e){var t=0,i=e.length;switch(i){case 1:t=e[0];break;case 2:t=e[0]+e[1];break;case 3:t=e[0]+e[1]+e[2];break;case 4:t=e[0]+e[1]+e[2]+e[3];break;default:for(var r=0;r{var i=Ade(),r=Pde();function n(e,t){return e[0]===t[0]&&e[1]===t[1]}t.exports=function(e,t){for(var u={},c=e.length,p=[],d=0;d{!function(){"use strict";function e(e,t){var i=e.x-t.x,r=e.y-t.y;return i*i+r*r}function i(e,t,i){var r=t.x,n=t.y,s=i.x-r,a=i.y-n;if(0!==s||0!==a){var o=((e.x-r)*s+(e.y-n)*a)/(s*s+a*a);o>1?(r=i.x,n=i.y):o>0&&(r+=s*o,n+=a*o)}return(s=e.x-r)*s+(a=e.y-n)*a}function r(e,t,n,s,a){for(var o,l=s,h=t+1;hl&&(o=h,l=u)}l>s&&(o-t>1&&r(e,t,o,s,a),a.push(e[o]),n-o>1&&r(e,o,n,s,a))}function n(e,t){var i=e.length-1,n=[e[0]];return r(e,0,i,t,n),n.push(e[i]),n}function s(t,i,r){if(t.length<=2)return t;var s=void 0!==i?i*i:1;return t=r?t:function(t,i){for(var r,n=t[0],s=[n],a=1,o=t.length;ai&&(s.push(r),n=r);return n!==r&&s.push(r),s}(t,s),t=n(t,s)}"function"==typeof define&&define.amd?define((function(){return s})):void 0!==t?(t.exports=s,t.exports.default=s):"undefined"!=typeof self?self.simplify=s:window.simplify=s}()})),Zde=z(((e,t)=>{var i,r;i=e,r=function(){"use strict";var e=Math.imul,t=Math.clz32;function i(e){return(i="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})(e)}function r(e,t){for(var i,r=0;re.length)&&(t=e.length);for(var i=0,r=Array(t);io.__kMaxLength)throw new RangeError("Maximum BigInt size exceeded");return i}!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&s(e,t)}(o,e);var l=u(o);return function(e,t,i){t&&r(e.prototype,t),i&&r(e,i),Object.defineProperty(e,"prototype",{writable:!1})}(o,[{key:"toDebugString",value:function(){var e,t=["BigInt["],i=function(e,t){var i="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!i){if(Array.isArray(e)||(i=p(e))||t&&e&&"number"==typeof e.length){i&&(e=i);var r=0,n=function(){};return{s:n,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:n}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var s,a=!0,o=!1;return{s:function(){i=i.call(e)},n:function(){var e=i.next();return a=e.done,e},e:function(e){o=!0,s=e},f:function(){try{a||null==i.return||i.return()}finally{if(o)throw s}}}}(this);try{for(i.s();!(e=i.n()).done;){var r=e.value;t.push((r&&(r>>>0).toString(16))+", ")}}catch(e){i.e(e)}finally{i.f()}return t.push("]"),t.join("")}},{key:"toString",value:function(){var e=0e||36this.length&&(i=this.length);for(var r=32767&e,n=e>>>15,s=0,a=t,l=0;l>>15,p=o.__imul(u,r),d=o.__imul(u,n),f=o.__imul(c,r),m=a+p+s;s=m>>>30,m&=1073741823,s+=(m+=((32767&d)<<15)+((32767&f)<<15))>>>30,a=o.__imul(c,n)+(d>>>15)+(f>>>15),this.__setDigit(l,1073741823&m)}if(0!==s||0!==a)throw new Error("implementation bug")}},{key:"__inplaceAdd",value:function(e,t,i){for(var r,n=0,s=0;s>>15,this.__setHalfDigit(t+s,32767&r);return n}},{key:"__inplaceSub",value:function(e,t,i){var r=0;if(1&t){t>>=1;for(var n=this.__digit(t),s=32767&n,a=0;a>>1;a++){var o=e.__digit(a),l=(n>>>15)-(32767&o)-r;r=1&l>>>15,this.__setDigit(t+a,(32767&l)<<15|32767&s),r=1&(s=(32767&(n=this.__digit(t+a+1)))-(o>>>15)-r)>>>15}var h=e.__digit(a),u=(n>>>15)-(32767&h)-r;if(r=1&u>>>15,this.__setDigit(t+a,(32767&u)<<15|32767&s),t+a+1>=this.length)throw new RangeError("out of bounds");!(1&i)&&(r=1&(s=(32767&(n=this.__digit(t+a+1)))-(h>>>15)-r)>>>15,this.__setDigit(t+e.length,1073709056&n|32767&s))}else{t>>=1;for(var c=0;c>>15)-(d>>>15)-(r=1&f>>>15);r=1&m>>>15,this.__setDigit(t+c,(32767&m)<<15|32767&f)}var g=this.__digit(t+c),y=e.__digit(c),v=(32767&g)-(32767&y)-r;r=1&v>>>15;var T=0;!(1&i)&&(r=1&(T=(g>>>15)-(y>>>15)-r)>>>15),this.__setDigit(t+c,(32767&T)<<15|32767&v)}return r}},{key:"__inplaceRightShift",value:function(e){if(0!==e){for(var t,i=this.__digit(0)>>>e,r=this.length-1,n=0;n>>e;this.__setDigit(r,i)}}},{key:"__digit",value:function(e){return this[e]}},{key:"__unsignedDigit",value:function(e){return this[e]>>>0}},{key:"__setDigit",value:function(e,t){this[e]=0|t}},{key:"__setDigitGrow",value:function(e,t){this[e]=0|t}},{key:"__halfDigitLength",value:function(){var e=this.length;return 32767>=this.__unsignedDigit(e-1)?2*e-1:2*e}},{key:"__halfDigit",value:function(e){return 32767&this[e>>>1]>>>15*(1&e)}},{key:"__setHalfDigit",value:function(e,t){var i=e>>>1,r=this.__digit(i),n=1&e?32767&r|t<<15:1073709056&r|32767&t;this.__setDigit(i,n)}}],[{key:"BigInt",value:function(e){var t=Number.isFinite;if("number"==typeof e){if(0===e)return o.__zero();if(o.__isOneDigitInt(e))return 0>e?o.__oneDigit(-e,!0):o.__oneDigit(e,!1);if(!t(e)||a(e)!==e)throw new RangeError("The number "+e+" cannot be converted to BigInt because it is not an integer");return o.__fromDouble(e)}if("string"==typeof e){var r=o.__fromString(e);if(null===r)throw new SyntaxError("Cannot convert "+e+" to a BigInt");return r}if("boolean"==typeof e)return!0===e?o.__oneDigit(1,!1):o.__zero();if("object"===i(e)){if(e.constructor===o)return e;var n=o.__toPrimitive(e);return o.BigInt(n)}throw new TypeError("Cannot convert "+e+" to a BigInt")}},{key:"toNumber",value:function(e){var t=e.length;if(0===t)return 0;if(1===t){var i=e.__unsignedDigit(0);return e.sign?-i:i}var r=e.__digit(t-1),n=o.__clz30(r),s=30*t-n;if(1024>>=12;var p=u-12,d=12<=u?0:l<<20+u,f=20+u;for(0>>30-p,d=l<>>30-f,f-=30;var m=o.__decideRounding(e,f,h,l);if((1===m||0===m&&1==(1&d))&&0==(d=d+1>>>0)&&++c>>>20!=0&&(c=0,1023<++a))return e.sign?-1/0:1/0;var g=e.sign?-2147483648:0;return a=a+1023<<20,o.__kBitConversionInts[1]=g|a|c,o.__kBitConversionInts[0]=d,o.__kBitConversionDouble[0]}},{key:"unaryMinus",value:function(e){if(0===e.length)return e;var t=e.__copy();return t.sign=!e.sign,t}},{key:"bitwiseNot",value:function(e){return e.sign?o.__absoluteSubOne(e).__trim():o.__absoluteAddOne(e,!0)}},{key:"exponentiate",value:function(e,t){if(t.sign)throw new RangeError("Exponent must be positive");if(0===t.length)return o.__oneDigit(1,!1);if(0===e.length)return e;if(1===e.length&&1===e.__digit(0))return!e.sign||1&t.__digit(0)?e:o.unaryMinus(e);if(1=o.__kMaxLengthBits)throw new RangeError("BigInt too big");if(1===e.length&&2===e.__digit(0)){var r=1+(0|i/30),n=new o(r,e.sign&&0!=(1&i));n.__initializeDigits();var s=1<>=1;0!==i;i>>=1)l=o.multiply(l,l),1&i&&(a=null===a?l:o.multiply(a,l));return a}},{key:"multiply",value:function(e,t){if(0===e.length)return e;if(0===t.length)return t;var i=e.length+t.length;30<=e.__clzmsd()+t.__clzmsd()&&i--;var r=new o(i,e.sign!==t.sign);r.__initializeDigits();for(var n=0;no.__absoluteCompare(e,t))return o.__zero();var i,r=e.sign!==t.sign,n=t.__unsignedDigit(0);if(1===t.length&&32767>=n){if(1===n)return r===e.sign?e:o.unaryMinus(e);i=o.__absoluteDivSmall(e,n,null)}else i=o.__absoluteDivLarge(e,t,!0,!1);return i.sign=r,i.__trim()}},{key:"remainder",value:function(e,t){if(0===t.length)throw new RangeError("Division by zero");if(0>o.__absoluteCompare(e,t))return e;var i=t.__unsignedDigit(0);if(1===t.length&&32767>=i){if(1===i)return o.__zero();var r=o.__absoluteModSmall(e,i);return 0===r?o.__zero():o.__oneDigit(r,e.sign)}var n=o.__absoluteDivLarge(e,t,!1,!0);return n.sign=e.sign,n.__trim()}},{key:"add",value:function(e,t){var i=e.sign;return i===t.sign?o.__absoluteAdd(e,t,i):0<=o.__absoluteCompare(e,t)?o.__absoluteSub(e,t,i):o.__absoluteSub(t,e,!i)}},{key:"subtract",value:function(e,t){var i=e.sign;return i===t.sign?0<=o.__absoluteCompare(e,t)?o.__absoluteSub(e,t,i):o.__absoluteSub(t,e,!i):o.__absoluteAdd(e,t,i)}},{key:"leftShift",value:function(e,t){return 0===t.length||0===e.length?e:t.sign?o.__rightShiftByAbsolute(e,t):o.__leftShiftByAbsolute(e,t)}},{key:"signedRightShift",value:function(e,t){return 0===t.length||0===e.length?e:t.sign?o.__leftShiftByAbsolute(e,t):o.__rightShiftByAbsolute(e,t)}},{key:"unsignedRightShift",value:function(){throw new TypeError("BigInts have no unsigned right shift; use >> instead")}},{key:"lessThan",value:function(e,t){return 0>o.__compareToBigInt(e,t)}},{key:"lessThanOrEqual",value:function(e,t){return 0>=o.__compareToBigInt(e,t)}},{key:"greaterThan",value:function(e,t){return 0(e=a(e)))throw new RangeError("Invalid value: not (convertible to) a safe integer");if(0===e)return o.__zero();if(e>=o.__kMaxLengthBits)return t;var i=0|(e+29)/30;if(t.length(e=a(e)))throw new RangeError("Invalid value: not (convertible to) a safe integer");if(0===e)return o.__zero();if(t.sign){if(e>o.__kMaxLengthBits)throw new RangeError("BigInt too big");return o.__truncateAndSubFromPowerOfTwo(e,t,!1)}if(e>=o.__kMaxLengthBits)return t;var i=0|(e+29)/30;if(t.length>>r))return t}return o.__truncateToNBits(e,t)}},{key:"ADD",value:function(e,t){if(e=o.__toPrimitive(e),t=o.__toPrimitive(t),"string"==typeof e)return"string"!=typeof t&&(t=t.toString()),e+t;if("string"==typeof t)return e.toString()+t;if(e=o.__toNumeric(e),t=o.__toNumeric(t),o.__isBigInt(e)&&o.__isBigInt(t))return o.add(e,t);if("number"==typeof e&&"number"==typeof t)return e+t;throw new TypeError("Cannot mix BigInt and other types, use explicit conversions")}},{key:"LT",value:function(e,t){return o.__compare(e,t,0)}},{key:"LE",value:function(e,t){return o.__compare(e,t,1)}},{key:"GT",value:function(e,t){return o.__compare(e,t,2)}},{key:"GE",value:function(e,t){return o.__compare(e,t,3)}},{key:"EQ",value:function(e,t){for(;;){if(o.__isBigInt(e))return o.__isBigInt(t)?o.equal(e,t):o.EQ(t,e);if("number"==typeof e){if(o.__isBigInt(t))return o.__equalToNumber(t,e);if("object"!==i(t))return e==t;t=o.__toPrimitive(t)}else if("string"==typeof e){if(o.__isBigInt(t))return null!==(e=o.__fromString(e))&&o.equal(e,t);if("object"!==i(t))return e==t;t=o.__toPrimitive(t)}else if("boolean"==typeof e){if(o.__isBigInt(t))return o.__equalToNumber(t,+e);if("object"!==i(t))return e==t;t=o.__toPrimitive(t)}else if("symbol"===i(e)){if(o.__isBigInt(t))return!1;if("object"!==i(t))return e==t;t=o.__toPrimitive(t)}else{if("object"!==i(e))return e==t;if("object"===i(t)&&t.constructor!==o)return e==t;e=o.__toPrimitive(e)}}}},{key:"NE",value:function(e,t){return!o.EQ(e,t)}},{key:"DataViewGetBigInt64",value:function(e,t){var i=2>>30),h.__setDigit(2,a>>>28),h.__trim()}},{key:"DataViewSetBigInt64",value:function(e,t,i){var r=3>>2,2t)n=-t-1;else{if(0===i)return-1;i--,r=e.__digit(i),n=29}var s=1<>>20)-1023,r=1+(0|i/30),n=new o(r,0>e),s=1048575&o.__kBitConversionInts[1]|1048576,a=o.__kBitConversionInts[0],l=i%30,h=0;if(l<20){var u=20-l;h=u+32,t=s>>>u,s=s<<32-u|a>>>u,a<<=32-u}else if(20===l)h=32,t=s,s=a,a=0;else{var c=l-20;h=32-c,t=s<>>32-c,s=a<>>2,s=s<<30|a>>>2,a<<=30):t=0,n.__setDigit(p,t);return n.__trim()}},{key:"__isWhitespace",value:function(e){return 13>=e&&9<=e||(159>=e?32==e:131071>=e?160==e||5760==e:196607>=e?10>=(e&=131071)||40==e||41==e||47==e||95==e||4096==e:65279==e)}},{key:"__fromString",value:function(e){var t=11073741824/l)return null;var u=new o(0|(29+(l*a+h>>>o.__kBitsPerCharTableShift))/30,!1),c=10>t?t:10,p=10>>0>>0>>o.__kBitsPerCharTableShift)/30;u.__inplaceMultiplyAdd(y,g,T)}while(!d)}else{l>>=o.__kBitsPerCharTableShift;var x=[],b=[],_=!1;do{for(var E,w=0,S=0;;){if(E=void 0,s-48>>>0>>0>>l-(s-=30))}if(0!==n){if(r>=e.length)throw new Error("implementation bug");e.__setDigit(r++,n)}for(;r>>1)+(85&r))>>>2)+(51&r))>>>4)+(15&r),s=t-1,a=e.__digit(i-1),l=0|(30*i-o.__clz30(a)+n-1)/n;if(e.sign&&l++,268435456>>g,p=30-g;p>=n;)h[u--]=o.__kConversionChars[c&s],c>>>=n,p-=n}var y=(c|a<>>n-p;0!==c;)h[u--]=o.__kConversionChars[c&s],c>>>=n;if(e.sign&&(h[u--]="-"),-1!==u)throw new Error("implementation bug");return h.join("")}},{key:"__toStringGeneric",value:function(e,t,i){var r=e.length;if(0===r)return"";if(1===r){var n=e.__unsignedDigit(0).toString(t);return!1===i&&e.sign&&(n="-"+n),n}var s,a,l=30*r-o.__clz30(e.__digit(r-1)),h=o.__kMaxBitsPerChar[t]-1,u=l*o.__kBitsPerCharTableMultiplier,c=1+(u=0|(u+=h-1)/h)>>1,p=o.exponentiate(o.__oneDigit(t,!1),o.__oneDigit(c,!1)),d=p.__unsignedDigit(0);if(1===p.length&&32767>=d){(s=new o(e.length,!1)).__initializeDigits();for(var f,m=0,g=2*e.length-1;0<=g;g--)f=m<<15|e.__halfDigit(g),s.__setHalfDigit(g,0|f/d),m=0|f%d;a=m.toString(t)}else{var y=o.__absoluteDivLarge(e,p,!0,!0);s=y.quotient;var v=y.remainder.__trim();a=o.__toStringGeneric(v,t,!0)}s.__trim();for(var T=o.__toStringGeneric(s,t,!0);a.lengthr?o.__absoluteLess(i):0}},{key:"__compareToNumber",value:function(e,i){if(o.__isOneDigitInt(i)){var r=e.sign,n=0>i;if(r!==n)return o.__unequalSign(r);if(0===e.length){if(n)throw new Error("implementation bug");return 0===i?0:-1}if(1s?o.__absoluteGreater(r):at)return o.__unequalSign(i);if(0===t)throw new Error("implementation bug: should be handled elsewhere");if(0===e.length)return-1;o.__kBitConversionDouble[0]=t;var r=2047&o.__kBitConversionInts[1]>>>20;if(2047==r)throw new Error("implementation bug: handled elsewhere");var n=r-1023;if(0>n)return o.__absoluteGreater(i);var s=e.length,a=e.__digit(s-1),l=o.__clz30(a),h=30*s-l,u=n+1;if(hu)return o.__absoluteGreater(i);var c=1048576|1048575&o.__kBitConversionInts[1],p=o.__kBitConversionInts[0],d=29-l;if(d!==(0|(h-1)%30))throw new Error("implementation bug");var f,m=0;if(d<20){var g=20-d;m=g+32,f=c>>>g,c=c<<32-g|p>>>g,p<<=32-g}else if(20===d)m=32,f=c,c=p,p=0;else{var y=d-20;m=32-y,f=c<>>32-y,c=p<>>=0)>(f>>>=0))return o.__absoluteGreater(i);if(a>>2,c=c<<30|p>>>2,p<<=30):f=0;var T=e.__unsignedDigit(v);if(T>f)return o.__absoluteGreater(i);if(Ti&&e.__unsignedDigit(0)===t(i):0===o.__compareToDouble(e,i)}},{key:"__comparisonResultToBool",value:function(e,t){return 0===t?0>e:1===t?0>=e:2===t?0t;case 3:return e>=t}if(o.__isBigInt(e)&&"string"==typeof t)return null!==(t=o.__fromString(t))&&o.__comparisonResultToBool(o.__compareToBigInt(e,t),i);if("string"==typeof e&&o.__isBigInt(t))return null!==(e=o.__fromString(e))&&o.__comparisonResultToBool(o.__compareToBigInt(e,t),i);if(e=o.__toNumeric(e),t=o.__toNumeric(t),o.__isBigInt(e)){if(o.__isBigInt(t))return o.__comparisonResultToBool(o.__compareToBigInt(e,t),i);if("number"!=typeof t)throw new Error("implementation bug");return o.__comparisonResultToBool(o.__compareToNumber(e,t),i)}if("number"!=typeof e)throw new Error("implementation bug");if(o.__isBigInt(t))return o.__comparisonResultToBool(o.__compareToNumber(t,e),2^i);if("number"!=typeof t)throw new Error("implementation bug");return 0===i?et:3===i?e>=t:void 0}},{key:"__absoluteAdd",value:function(e,t,i){if(e.length>>30,s.__setDigit(l,1073741823&n);for(;l>>30,s.__setDigit(l,1073741823&h)}return l>>30,n.__setDigit(a,1073741823&r);for(;a>>30,n.__setDigit(a,1073741823&l)}return n.__trim()}},{key:"__absoluteAddOne",value:function(e,t){var i=2>>30,i.__setDigit(a,1073741823&n);return 0!==s&&i.__setDigitGrow(r,1),i}},{key:"__absoluteSubOne",value:function(e,t){for(var i,r=e.length,n=new o(t=t||r,!1),s=1,a=0;a>>30,n.__setDigit(a,1073741823&i);if(0!==s)throw new Error("implementation bug");for(var l=r;lr?0:e.__unsignedDigit(r)>t.__unsignedDigit(r)?1:-1}},{key:"__multiplyAccumulate",value:function(e,t,i,r){if(0!==t){for(var n=32767&t,s=t>>>15,a=0,l=0,h=0;h>>15,f=o.__imul(p,n),m=o.__imul(p,s),g=o.__imul(d,n);a=(u+=l+f+a)>>>30,u&=1073741823,a+=(u+=((32767&m)<<15)+((32767&g)<<15))>>>30,l=o.__imul(d,s)+(m>>>15)+(g>>>15),i.__setDigit(r,1073741823&u)}for(;0!==a||0!==l;r++){var y=i.__digit(r);y+=a+l,l=0,a=y>>>30,i.__setDigit(r,1073741823&y)}}}},{key:"__internalMultiplyAdd",value:function(e,t,i,r,n){for(var s=i,a=0,l=0;l>>15,t),p=u+((32767&c)<<15)+a+s;s=p>>>30,a=c>>>15,n.__setDigit(l,1073741823&p)}if(n.length>r)for(n.__setDigit(r++,s+a);r>>0,a=0|s/t,l=0|(s=((r=0|s%t)<<15|e.__halfDigit(n-1))>>>0)/t;r=0|s%t,i.__setDigit(n>>>1,a<<15|l)}return i}},{key:"__absoluteModSmall",value:function(e,t){for(var i=0,r=2*e.length-1;0<=r;r--)i=0|((i<<15|e.__halfDigit(r))>>>0)%t;return i}},{key:"__absoluteDivLarge",value:function(e,t,i,r){var n=t.__halfDigitLength(),s=t.length,a=e.__halfDigitLength()-n,l=null;i&&(l=new o(a+2>>>1,!1)).__initializeDigits();var h=new o(n+2>>>1,!1);h.__initializeDigits();var u=o.__clz15(t.__halfDigit(n-1));0>>0;m=0|y/p;for(var v=0|y%p,T=t.__halfDigit(n-2),x=c.__halfDigit(f+n-2);o.__imul(m,T)>>>0>(v<<16|x)>>>0&&(m--,!(32767<(v+=p))););}o.__internalMultiplyAdd(t,m,0,s,h);var b=c.__inplaceSub(h,f,n+1);0!==b&&(b=c.__inplaceAdd(t,f,n),c.__setHalfDigit(f+n,32767&c.__halfDigit(f+n)+b),m--),i&&(1&f?d=m<<15:l.__setDigit(f>>>1,d|m))}if(r)return c.__inplaceRightShift(u),i?{quotient:l,remainder:c}:c;if(i)return l;throw new Error("unreachable")}},{key:"__clz15",value:function(e){return o.__clz30(e)-15}},{key:"__specialLeftShift",value:function(e,t,i){var r=e.length,n=new o(r+i,!1);if(0===t){for(var s=0;s>>30-t;return 0i)throw new RangeError("BigInt too big");var r=0|i/30,n=i%30,s=e.length,a=0!==n&&e.__digit(s-1)>>>30-n!=0,l=s+r+(a?1:0),h=new o(l,e.sign);if(0===n){for(var u=0;u>>30-n;if(a)h.__setDigit(s+r,c);else if(0!==c)throw new Error("implementation bug")}return h.__trim()}},{key:"__rightShiftByAbsolute",value:function(e,t){var i=e.length,r=e.sign,n=o.__toShiftAmount(t);if(0>n)return o.__rightShiftByMaximum(r);var s=0|n/30,a=n%30,l=i-s;if(0>=l)return o.__rightShiftByMaximum(r);var h=!1;if(r)if(e.__digit(s)&(1<>>a,m=i-s-1,g=0;g>>a;c.__setDigit(m,f)}return h&&(c=o.__absoluteAddOne(c,!0,c)),c.__trim()}},{key:"__rightShiftByMaximum",value:function(e){return e?o.__oneDigit(1,!0):o.__zero()}},{key:"__toShiftAmount",value:function(e){if(1o.__kMaxLengthBits?-1:t}},{key:"__toPrimitive",value:function(e){var t=1>>l}return r.__setDigit(n,a),r.__trim()}},{key:"__truncateAndSubFromPowerOfTwo",value:function(e,t,i){for(var r,n=Math.min,s=0|(e+29)/30,a=new o(s,i),l=0,h=s-1,u=0,c=n(h,t.length);l>>30,a.__setDigit(l,1073741823&r);for(;l>>m)-u,p&=g-1}return a.__setDigit(h,p),a.__trim()}},{key:"__digitPow",value:function(e,t){for(var i=1;0>>=1,e*=e;return i}},{key:"__isOneDigitInt",value:function(e){return(1073741823&e)===e}}]),o}(l(Array));return f.__kMaxLength=33554432,f.__kMaxLengthBits=f.__kMaxLength<<5,f.__kMaxBitsPerChar=[0,0,32,51,64,75,83,90,96,102,107,111,115,119,122,126,128,131,134,136,139,141,143,145,147,149,151,153,154,156,158,159,160,162,163,165,166],f.__kBitsPerCharTableShift=5,f.__kBitsPerCharTableMultiplier=1<>>0)/t)},f.__imul=e||function(e,t){return 0|e*t},f},"object"==typeof e&&void 0!==t?t.exports=r():"function"==typeof define&&define.amd?define(r):(i=i||self).JSBI=r()})),JRe=z(((e,t)=>{var i,r;i=e,r=function(){"use strict";function e(e,r,n,s,a){!function e(i,r,n,s,a){for(;s>n;){if(s-n>600){var o=s-n+1,l=r-n+1,h=Math.log(o),u=.5*Math.exp(2*h/3),c=.5*Math.sqrt(h*u*(o-u)/o)*(l-o/2<0?-1:1);e(i,r,Math.max(n,Math.floor(r-l*u/o+c)),Math.min(s,Math.floor(r+(o-l)*u/o+c)),a)}var p=i[r],d=n,f=s;for(t(i,n,r),a(i[s],p)>0&&t(i,n,s);d0;)f--}0===a(i[n],p)?t(i,n,f):t(i,++f,s),f<=r&&(n=f+1),r<=f&&(s=f-1)}}(e,r,n||0,s||e.length-1,a||i)}function t(e,t,i){var r=e[t];e[t]=e[i],e[i]=r}function i(e,t){return et?1:0}var r=function(e){void 0===e&&(e=9),this._maxEntries=Math.max(4,e),this._minEntries=Math.max(2,Math.ceil(.4*this._maxEntries)),this.clear()};function n(e,t,i){if(!i)return t.indexOf(e);for(var r=0;r=e.minX&&t.maxY>=e.minY}function f(e){return{children:e,height:1,leaf:!0,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0}}function m(t,i,r,n,s){for(var a=[i,r];a.length;)if(!((r=a.pop())-(i=a.pop())<=n)){var o=i+Math.ceil((r-i)/n/2)*n;e(t,o,i,r,s),a.push(i,o,o,r)}}return r.prototype.all=function(){return this._all(this.data,[])},r.prototype.search=function(e){var t=this.data,i=[];if(!d(e,t))return i;for(var r=this.toBBox,n=[];t;){for(var s=0;s=0&&n[t].children.length>this._maxEntries;)this._split(n,t),t--;this._adjustParentBBoxes(r,n,t)},r.prototype._split=function(e,t){var i=e[t],r=i.children.length,n=this._minEntries;this._chooseSplitAxis(i,n,r);var a=this._chooseSplitIndex(i,n,r),o=f(i.children.splice(a,i.children.length-a));o.height=i.height,o.leaf=i.leaf,s(i,this.toBBox),s(o,this.toBBox),t?e[t-1].children.push(o):this._splitRoot(i,o)},r.prototype._splitRoot=function(e,t){this.data=f([e,t]),this.data.height=e.height+1,this.data.leaf=!1,s(this.data,this.toBBox)},r.prototype._chooseSplitIndex=function(e,t,i){for(var r,n,s,o,l,h,c,p=1/0,d=1/0,f=t;f<=i-t;f++){var m=a(e,0,f,this.toBBox),g=a(e,f,i,this.toBBox),y=(n=m,s=g,o=Math.max(n.minX,s.minX),l=Math.max(n.minY,s.minY),h=Math.min(n.maxX,s.maxX),c=Math.min(n.maxY,s.maxY),Math.max(0,h-o)*Math.max(0,c-l)),v=u(m)+u(g);y=t;d--){var f=e.children[d];o(l,e.leaf?n(f):f),h+=c(l)}return h},r.prototype._adjustParentBBoxes=function(e,t,i){for(var r=i;r>=0;r--)o(t[r],e)},r.prototype._condense=function(e){for(var t=e.length-1,i=void 0;t>=0;t--)0===e[t].children.length?t>0?(i=e[t-1].children).splice(i.indexOf(e[t]),1):this.clear():s(e[t],this.toBBox)},r},"object"==typeof e&&void 0!==t?t.exports=r():"function"==typeof define&&define.amd?define(r):(i=i||self).RBush=r()})),QRe=z(((e,t)=>{var i,r;i=e,r=function(){"use strict";var e=function(e,i){if(void 0===e&&(e=[]),void 0===i&&(i=t),this.data=e,this.length=this.data.length,this.compare=i,this.length>0)for(var r=(this.length>>1)-1;r>=0;r--)this._down(r)};function t(e,t){return et?1:0}return e.prototype.push=function(e){this.data.push(e),this.length++,this._up(this.length-1)},e.prototype.pop=function(){if(0!==this.length){var e=this.data[0],t=this.data.pop();return this.length--,this.length>0&&(this.data[0]=t,this._down(0)),e}},e.prototype.peek=function(){return this.data[0]},e.prototype._up=function(e){for(var t=this.data,i=this.compare,r=t[e];e>0;){var n=e-1>>1,s=t[n];if(i(r,s)>=0)break;t[e]=s,e=n}t[e]=r},e.prototype._down=function(e){for(var t=this.data,i=this.compare,r=this.length>>1,n=t[e];e=0)break;t[e]=a,e=s}t[e]=n},e},"object"==typeof e&&void 0!==t?t.exports=r():"function"==typeof define&&define.amd?define(r):(i=i||self).TinyQueue=r()})),tMe=z(((e,t)=>{t.exports=function(e,t,i,r){var n=e[0],s=e[1],a=!1;void 0===i&&(i=0),void 0===r&&(r=t.length);for(var o=(r-i)/2,l=0,h=o-1;ls!=d>s&&n<(p-u)*(s-c)/(d-c)+u&&(a=!a)}return a}})),iMe=z(((e,t)=>{t.exports=function(e,t,i,r){var n=e[0],s=e[1],a=!1;void 0===i&&(i=0),void 0===r&&(r=t.length);for(var o=r-i,l=0,h=o-1;ls!=d>s&&n<(p-u)*(s-c)/(d-c)+u&&(a=!a)}return a}})),aMe=z(((e,t)=>{var i=tMe(),r=iMe();t.exports=function(e,t,n,s){return t.length>0&&Array.isArray(t[0])?r(e,t,n,s):i(e,t,n,s)},t.exports.nested=r,t.exports.flat=i})),lMe=z(((e,t)=>{var i,r;i=e,r=function(e){"use strict";function t(e,t,i,r,n){let s,a,o,l,h=t[0],u=r[0],c=0,p=0;u>h==u>-h?(s=h,h=t[++c]):(s=u,u=r[++p]);let d=0;if(ch==u>-h?(o=s-((a=h+s)-h),h=t[++c]):(o=s-((a=u+s)-u),u=r[++p]),s=a,0!==o&&(n[d++]=o);ch==u>-h?(o=s-((a=s+h)-(l=a-s))+(h-l),h=t[++c]):(o=s-((a=s+u)-(l=a-s))+(u-l),u=r[++p]),s=a,0!==o&&(n[d++]=o);for(;c0!=d>0)return f;let m=Math.abs(p+d);return Math.abs(f)>=33306690738754716e-32*m?f:-function(e,i,l,h,u,c,p){let d,f,m,g,y,v,T,x,b,_,E,w,S,I,M,A,D,O,R=e-u,C=l-u,N=i-c,P=h-c;y=(M=(x=R-(T=(v=134217729*R)-(v-R)))*(_=P-(b=(v=134217729*P)-(v-P)))-((I=R*P)-T*b-x*b-T*_))-(E=M-(D=(x=N-(T=(v=134217729*N)-(v-N)))*(_=C-(b=(v=134217729*C)-(v-C)))-((A=N*C)-T*b-x*b-T*_))),r[0]=M-(E+y)+(y-D),y=(S=I-((w=I+E)-(y=w-I))+(E-y))-(E=S-A),r[1]=S-(E+y)+(y-A),y=(O=w+E)-w,r[2]=w-(O-y)+(E-y),r[3]=O;let L=function(e,t){let i=t[0];for(let e=1;e<4;e++)i+=t[e];return i}(0,r),F=22204460492503146e-32*p;if(L>=F||-L>=F||(d=e-(R+(y=e-R))+(y-u),m=l-(C+(y=l-C))+(y-u),f=i-(N+(y=i-N))+(y-c),g=h-(P+(y=h-P))+(y-c),0===d&&0===f&&0===m&&0===g)||(F=11093356479670487e-47*p+33306690738754706e-32*Math.abs(L),(L+=R*g+P*d-(N*m+C*f))>=F||-L>=F))return L;y=(M=(x=d-(T=(v=134217729*d)-(v-d)))*(_=P-(b=(v=134217729*P)-(v-P)))-((I=d*P)-T*b-x*b-T*_))-(E=M-(D=(x=f-(T=(v=134217729*f)-(v-f)))*(_=C-(b=(v=134217729*C)-(v-C)))-((A=f*C)-T*b-x*b-T*_))),o[0]=M-(E+y)+(y-D),y=(S=I-((w=I+E)-(y=w-I))+(E-y))-(E=S-A),o[1]=S-(E+y)+(y-A),y=(O=w+E)-w,o[2]=w-(O-y)+(E-y),o[3]=O;let U=t(4,r,4,o,n);y=(M=(x=R-(T=(v=134217729*R)-(v-R)))*(_=g-(b=(v=134217729*g)-(v-g)))-((I=R*g)-T*b-x*b-T*_))-(E=M-(D=(x=N-(T=(v=134217729*N)-(v-N)))*(_=m-(b=(v=134217729*m)-(v-m)))-((A=N*m)-T*b-x*b-T*_))),o[0]=M-(E+y)+(y-D),y=(S=I-((w=I+E)-(y=w-I))+(E-y))-(E=S-A),o[1]=S-(E+y)+(y-A),y=(O=w+E)-w,o[2]=w-(O-y)+(E-y),o[3]=O;let k=t(U,n,4,o,s);y=(M=(x=d-(T=(v=134217729*d)-(v-d)))*(_=g-(b=(v=134217729*g)-(v-g)))-((I=d*g)-T*b-x*b-T*_))-(E=M-(D=(x=f-(T=(v=134217729*f)-(v-f)))*(_=m-(b=(v=134217729*m)-(v-m)))-((A=f*m)-T*b-x*b-T*_))),o[0]=M-(E+y)+(y-D),y=(S=I-((w=I+E)-(y=w-I))+(E-y))-(E=S-A),o[1]=S-(E+y)+(y-A),y=(O=w+E)-w,o[2]=w-(O-y)+(E-y),o[3]=O;let B=t(k,s,4,o,a);return a[B-1]}(e,i,l,h,u,c,m)},e.orient2dfast=function(e,t,i,r,n,s){return(t-s)*(i-n)-(e-n)*(r-s)},Object.defineProperty(e,"__esModule",{value:!0})},"object"==typeof e&&void 0!==t?r(e):"function"==typeof define&&define.amd?define(["exports"],r):r((i=i||self).predicates={})})),fMe=z(((e,t)=>{"use strict";var i=JRe(),r=QRe(),n=aMe(),s=lMe().orient2d;function a(e,t,r){t=Math.max(0,void 0===t?2:t),r=r||0;var s=function(e){for(var t=e[0],i=e[0],r=e[0],s=e[0],a=0;ar[0]&&(r=o),o[1]s[1]&&(s=o)}var l=[t,i,r,s],h=l.slice();for(a=0;a=2&&p(t[t.length-2],t[t.length-1],e[i])<=0;)t.pop();t.push(e[i])}for(var r=[],n=e.length-1;n>=0;n--){for(;r.length>=2&&p(r[r.length-2],r[r.length-1],e[n])<=0;)r.pop();r.push(e[n])}return r.pop(),t.pop(),t.concat(r)}(h)}(e),a=new i(16);a.toBBox=function(e){return{minX:e[0],minY:e[1],maxX:e[0],maxY:e[1]}},a.compareMinX=function(e,t){return e[0]-t[0]},a.compareMinY=function(e,t){return e[1]-t[1]},a.load(e);for(var l,h=[],u=0;ua||u.push({node:f,dist:m})}for(;u.length&&!u.peek().node.children;){var g=u.pop(),v=g.node,T=y(v,t,i),x=y(v,n,s);if(g.dist=t.minX&&e[0]<=t.maxX&&e[1]>=t.minY&&e[1]<=t.maxY}function c(e,t,i){for(var r=Math.min(e[0],t[0]),n=Math.min(e[1],t[1]),s=Math.max(e[0],t[0]),a=Math.max(e[1],t[1]),o=i.search({minX:r,minY:n,maxX:s,maxY:a}),l=0;l0!=p(e,t,r)>0&&p(i,r,e)>0!=p(i,r,t)>0}function f(e){var t=e.p,i=e.next.p;return e.minX=Math.min(t[0],i[0]),e.minY=Math.min(t[1],i[1]),e.maxX=Math.max(t[0],i[0]),e.maxY=Math.max(t[1],i[1]),e}function m(e,t){var i={p:e,prev:null,next:null,minX:0,minY:0,maxX:0,maxY:0};return t?(i.next=t.next,i.prev=t,t.next.prev=i,t.next=i):(i.prev=i,i.next=i),i}function g(e,t){var i=e[0]-t[0],r=e[1]-t[1];return i*i+r*r}function y(e,t,i){var r=t[0],n=t[1],s=i[0]-r,a=i[1]-n;if(0!==s||0!==a){var o=((e[0]-r)*s+(e[1]-n)*a)/(s*s+a*a);o>1?(r=i[0],n=i[1]):o>0&&(r+=s*o,n+=a*o)}return(s=e[0]-r)*s+(a=e[1]-n)*a}function v(e,t,i,r,n,s,a,o){var l,h,u,c,p=i-e,d=r-t,f=a-n,m=o-s,g=e-n,y=t-s,v=p*p+d*d,T=p*f+d*m,x=f*f+m*m,b=p*g+d*y,_=f*g+m*y,E=v*x-T*T,w=E,S=E;0===E?(h=0,w=1,c=_,S=x):(c=v*_-T*b,(h=T*_-x*b)<0?(h=0,c=_,S=x):h>w&&(h=w,c=_+T,S=x)),c<0?(c=0,-b<0?h=0:-b>v?h=w:(h=-b,w=v)):c>S&&(c=S,-b+T<0?h=0:-b+T>v?h=w:(h=-b+T,w=v));var I=(1-(u=0===c?0:c/S))*n+u*a-((1-(l=0===h?0:h/w))*e+l*i),M=(1-u)*s+u*o-((1-l)*t+l*r);return I*I+M*M}function T(e,t){return e[0]===t[0]?e[1]-t[1]:e[0]-t[0]}r.default&&(r=r.default),t.exports=a,t.exports.default=a})),LMe=z(((e,t)=>{t.exports=function(){var e,t=0,i=!1;function r(t,i){return e.list.push({type:t,data:i?JSON.parse(JSON.stringify(i)):void 0}),e}return e={list:[],segmentId:function(){return t++},checkIntersection:function(e,t){return r("check",{seg1:e,seg2:t})},segmentChop:function(e,t){return r("div_seg",{seg:e,pt:t}),r("chop",{seg:e,pt:t})},statusRemove:function(e){return r("pop_seg",{seg:e})},segmentUpdate:function(e){return r("seg_update",{seg:e})},segmentNew:function(e,t){return r("new_seg",{seg:e,primary:t})},segmentRemove:function(e){return r("rem_seg",{seg:e})},tempStatus:function(e,t,i){return r("temp_status",{seg:e,above:t,below:i})},rewind:function(e){return r("rewind",{seg:e})},status:function(e,t,i){return r("status",{seg:e,above:t,below:i})},vert:function(t){return t===i?e:(i=t,r("vert",{x:t}))},log:function(e){return"string"!=typeof e&&(e=JSON.stringify(e,!1," ")),r("log",{txt:e})},reset:function(){return r("reset")},selected:function(e){return r("selected",{segs:e})},chainStart:function(e){return r("chain_start",{seg:e})},chainRemoveHead:function(e,t){return r("chain_rem_head",{index:e,pt:t})},chainRemoveTail:function(e,t){return r("chain_rem_tail",{index:e,pt:t})},chainNew:function(e,t){return r("chain_new",{pt1:e,pt2:t})},chainMatch:function(e){return r("chain_match",{index:e})},chainClose:function(e){return r("chain_close",{index:e})},chainAddHead:function(e,t){return r("chain_add_head",{index:e,pt:t})},chainAddTail:function(e,t){return r("chain_add_tail",{index:e,pt:t})},chainConnect:function(e,t){return r("chain_con",{index1:e,index2:t})},chainReverse:function(e){return r("chain_rev",{index:e})},chainJoin:function(e,t){return r("chain_join",{index1:e,index2:t})},done:function(){return r("done")}}}})),HMe=z(((e,t)=>{t.exports=function(e){"number"!=typeof e&&(e=1e-10);var t={epsilon:function(t){return"number"==typeof t&&(e=t),e},pointAboveOrOnLine:function(t,i,r){var n=i[0],s=i[1],a=r[0],o=r[1],l=t[0];return(a-n)*(t[1]-s)-(o-s)*(l-n)>=-e},pointBetween:function(t,i,r){var n=t[1]-i[1],s=r[0]-i[0],a=t[0]-i[0],o=r[1]-i[1],l=a*s+n*o;return!(l-e)},pointsSameX:function(t,i){return Math.abs(t[0]-i[0])e!=a-n>e&&(s-h)*(n-u)/(a-u)+h-r>e&&(o=!o),s=h,a=u}return o}};return t}})),BMe=z(((e,t)=>{t.exports={create:function(){var e={root:{root:!0,next:null},exists:function(t){return!(null===t||t===e.root)},isEmpty:function(){return null===e.root.next},getHead:function(){return e.root.next},insertBefore:function(t,i){for(var r=e.root,n=e.root.next;null!==n;){if(i(n))return t.prev=n.prev,t.next=n,n.prev.next=t,void(n.prev=t);r=n,n=n.next}r.next=t,t.prev=r,t.next=null},findTransition:function(t){for(var i=e.root,r=e.root.next;null!==r&&!t(r);)i=r,r=r.next;return{before:i===e.root?null:i,after:r,insert:function(e){return e.prev=i,e.next=r,i.next=e,null!==r&&(r.prev=e),e}}}};return e},node:function(e){return e.prev=null,e.next=null,e.remove=function(){e.prev.next=e.next,e.next&&(e.next.prev=e.prev),e.prev=null,e.next=null},e}}})),GMe=z(((e,t)=>{var i=BMe();t.exports=function(e,t,r){function n(e,t){return{id:r?r.segmentId():-1,start:e,end:t,myFill:{above:null,below:null},otherFill:null}}function s(e,t,i){return{id:r?r.segmentId():-1,start:e,end:t,myFill:{above:i.myFill.above,below:i.myFill.below},otherFill:null}}var a=i.create();function o(e,i){a.insertBefore(e,(function(r){var n=function(e,i,r,n,s,a){var o=t.pointsCompare(i,s);return 0!==o?o:t.pointsSame(r,a)?0:e!==n?e?1:-1:t.pointAboveOrOnLine(r,n?s:a,n?a:s)?1:-1}(e.isStart,e.pt,i,r.isStart,r.pt,r.other.pt);return n<0}))}function l(e,t){var r=function(e,t){var r=i.node({isStart:!0,pt:e.start,seg:e,primary:t,other:null,status:null});return o(r,e.end),r}(e,t);return function(e,t,r){var n=i.node({isStart:!1,pt:t.end,seg:t,primary:r,other:e,status:null});e.other=n,o(n,e.pt)}(r,e,t),r}function h(e,t){var i=s(t,e.seg.end,e.seg);return function(e,t){r&&r.segmentChop(e.seg,t),e.other.remove(),e.seg.end=t,e.other.pt=t,o(e.other,e.pt)}(e,t),l(i,e.primary)}function u(n,s){var o=i.create();function l(e){return o.findTransition((function(i){var r=function(e,i){var r=e.seg.start,n=e.seg.end,s=i.seg.start,a=i.seg.end;return t.pointsCollinear(r,s,a)?t.pointsCollinear(n,s,a)||t.pointAboveOrOnLine(n,s,a)?1:-1:t.pointAboveOrOnLine(r,s,a)?1:-1}(e,i.ev);return r>0}))}function u(e,i){var n=e.seg,s=i.seg,a=n.start,o=n.end,l=s.start,u=s.end;r&&r.checkIntersection(n,s);var c=t.linesIntersect(a,o,l,u);if(!1===c){if(!t.pointsCollinear(a,o,l)||t.pointsSame(a,u)||t.pointsSame(o,l))return!1;var p=t.pointsSame(a,l),d=t.pointsSame(o,u);if(p&&d)return i;var f=!p&&t.pointBetween(a,l,u),m=!d&&t.pointBetween(o,l,u);if(p)return m?h(i,o):h(e,u),i;f&&(d||(m?h(i,o):h(e,u)),h(i,a))}else 0===c.alongA&&(-1===c.alongB?h(e,l):0===c.alongB?h(e,c.pt):1===c.alongB&&h(e,u)),0===c.alongB&&(-1===c.alongA?h(i,a):0===c.alongA?h(i,c.pt):1===c.alongA&&h(i,o));return!1}for(var c=[];!a.isEmpty();){var p=a.getHead();if(r&&r.vert(p.pt[0]),p.isStart){let t=function(){if(f){var e=u(p,f);if(e)return e}return!!m&&u(p,m)};r&&r.segmentNew(p.seg,p.primary);var d=l(p),f=d.before?d.before.ev:null,m=d.after?d.after.ev:null;r&&r.tempStatus(p.seg,!!f&&f.seg,!!m&&m.seg);var g=t();if(g){var y;if(e)(y=null===p.seg.myFill.below||p.seg.myFill.above!==p.seg.myFill.below)&&(g.seg.myFill.above=!g.seg.myFill.above);else g.seg.otherFill=p.seg.myFill;r&&r.segmentUpdate(g.seg),p.other.remove(),p.remove()}if(a.getHead()!==p){r&&r.rewind(p.seg);continue}if(e)y=null===p.seg.myFill.below||p.seg.myFill.above!==p.seg.myFill.below,p.seg.myFill.below=m?m.seg.myFill.above:n,p.seg.myFill.above=y?!p.seg.myFill.below:p.seg.myFill.below;else if(null===p.seg.otherFill){var v;v=m?p.primary===m.primary?m.seg.otherFill.above:m.seg.myFill.above:p.primary?s:n,p.seg.otherFill={above:v,below:v}}r&&r.status(p.seg,!!f&&f.seg,!!m&&m.seg),p.other.status=d.insert(i.node({ev:p}))}else{var T=p.status;if(null===T)throw new Error("PolyBool: Zero-length segment detected; your epsilon is probably too small or too large");if(o.exists(T.prev)&&o.exists(T.next)&&u(T.prev.ev,T.next.ev),r&&r.statusRemove(T.ev.seg),T.remove(),!p.primary){var x=p.seg.myFill;p.seg.myFill=p.seg.otherFill,p.seg.otherFill=x}c.push(p.seg)}a.getHead().remove()}return r&&r.done(),c}return e?{addRegion:function(e){for(var i,r=e[e.length-1],s=0;s{t.exports=function(e,t,i){var r=[],n=[];return e.forEach((function(e){var s=e.start,a=e.end;if(t.pointsSame(s,a))console.warn("PolyBool: Warning: Zero-length segment detected; your epsilon is probably too small or too large");else{i&&i.chainStart(e);for(var o={index:0,matches_head:!1,matches_pt1:!1},l={index:0,matches_head:!1,matches_pt1:!1},h=o,u=0;u{function i(e,t,i){var r=[];return e.forEach((function(e){var n=(e.myFill.above?8:0)+(e.myFill.below?4:0)+(e.otherFill&&e.otherFill.above?2:0)+(e.otherFill&&e.otherFill.below?1:0);0!==t[n]&&r.push({id:i?i.segmentId():-1,start:e.start,end:e.end,myFill:{above:1===t[n],below:2===t[n]},otherFill:null})})),i&&i.selected(r),r}var r={union:function(e,t){return i(e,[0,2,1,0,2,2,0,0,1,0,1,0,0,0,0,0],t)},intersect:function(e,t){return i(e,[0,0,0,0,0,2,0,2,0,0,1,1,0,2,1,0],t)},difference:function(e,t){return i(e,[0,0,0,0,2,0,2,0,1,1,0,0,0,1,2,0],t)},differenceRev:function(e,t){return i(e,[0,2,1,0,0,0,1,1,0,2,0,2,0,0,0,0],t)},xor:function(e,t){return i(e,[0,2,1,0,2,0,0,1,1,0,0,2,0,1,2,0],t)}};t.exports=r})),YMe=z(((e,t)=>{var i={toPolygon:function(e,t){function i(t){if(t.length<=0)return e.segments({inverted:!1,regions:[]});function i(t){var i=t.slice(0,t.length-1);return e.segments({inverted:!1,regions:[i]})}for(var r=i(t[0]),n=1;n{var i,r=LMe(),n=HMe(),s=GMe(),a=zMe(),o=WMe(),l=YMe(),h=!1,u=n();function c(e,t,r){var n=i.segments(e),s=i.segments(t),a=r(i.combine(n,s));return i.polygon(a)}i={buildLog:function(e){return!0===e?h=r():!1===e&&(h=!1),!1!==h&&h.list},epsilon:function(e){return u.epsilon(e)},segments:function(e){var t=s(!0,u,h);return e.regions.forEach(t.addRegion),{segments:t.calculate(e.inverted),inverted:e.inverted}},combine:function(e,t){return{combined:s(!1,u,h).calculate(e.segments,e.inverted,t.segments,t.inverted),inverted1:e.inverted,inverted2:t.inverted}},selectUnion:function(e){return{segments:o.union(e.combined,h),inverted:e.inverted1||e.inverted2}},selectIntersect:function(e){return{segments:o.intersect(e.combined,h),inverted:e.inverted1&&e.inverted2}},selectDifference:function(e){return{segments:o.difference(e.combined,h),inverted:e.inverted1&&!e.inverted2}},selectDifferenceRev:function(e){return{segments:o.differenceRev(e.combined,h),inverted:!e.inverted1&&e.inverted2}},selectXor:function(e){return{segments:o.xor(e.combined,h),inverted:e.inverted1!==e.inverted2}},polygon:function(e){return{regions:a(e.segments,u,h),inverted:e.inverted}},polygonFromGeoJSON:function(e){return l.toPolygon(i,e)},polygonToGeoJSON:function(e){return l.fromPolygon(i,u,e)},union:function(e,t){return c(e,t,i.selectUnion)},intersect:function(e,t){return c(e,t,i.selectIntersect)},difference:function(e,t){return c(e,t,i.selectDifference)},differenceRev:function(e,t){return c(e,t,i.selectDifferenceRev)},xor:function(e,t){return c(e,t,i.selectXor)}},"object"==typeof window&&(window.PolyBool=i),t.exports=i})),eDe=z(((e,t)=>{function i(e){if(e)return function(e){for(var t in i.prototype)e[t]=i.prototype[t];return e}(e)}t.exports=i,i.prototype.on=i.prototype.addEventListener=function(e,t){return this._callbacks=this._callbacks||{},(this._callbacks[e]=this._callbacks[e]||[]).push(t),this},i.prototype.once=function(e,t){var i=this;function r(){i.off(e,r),t.apply(this,arguments)}return this._callbacks=this._callbacks||{},r.fn=t,this.on(e,r),this},i.prototype.off=i.prototype.removeListener=i.prototype.removeAllListeners=i.prototype.removeEventListener=function(e,t){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var i=this._callbacks[e];if(!i)return this;if(1==arguments.length)return delete this._callbacks[e],this;for(var r,n=0;n{var i=eDe();function r(){i.call(this)}r.prototype=new i,t.exports=r,r.Stream=r,r.prototype.pipe=function(e,t){var i=this;function r(t){e.writable&&!1===e.write(t)&&i.pause&&i.pause()}function n(){i.readable&&i.resume&&i.resume()}i.on("data",r),e.on("drain",n),!e._isStdio&&(!t||!1!==t.end)&&(i.on("end",a),i.on("close",o));var s=!1;function a(){s||(s=!0,e.end())}function o(){s||(s=!0,"function"==typeof e.destroy&&e.destroy())}function l(e){if(h(),!this.hasListeners("error"))throw e}function h(){i.off("data",r),e.off("drain",n),i.off("end",a),i.off("close",o),i.off("error",l),e.off("error",l),i.off("end",h),i.off("close",h),e.off("end",h),e.off("close",h)}return i.on("error",l),e.on("error",l),i.on("end",h),i.on("close",h),e.on("end",h),e.on("close",h),e.emit("pipe",i),e}})),$l=z(((e,t)=>{(function(){var i,r=200,n="Unsupported core-js use. Try https://npms.io/search?q=ponyfill.",s="Expected a function",a="Invalid `variable` option passed into `_.template`",o="__lodash_hash_undefined__",l=500,h="__lodash_placeholder__",u=1,c=2,p=4,d=1,f=2,m=1,g=2,y=4,v=8,T=16,x=32,b=64,_=128,E=256,w=512,S=30,I="...",M=800,A=16,D=1,O=2,R=1/0,C=9007199254740991,N=17976931348623157e292,P=NaN,L=4294967295,F=L-1,U=L>>>1,k=[["ary",_],["bind",m],["bindKey",g],["curry",v],["curryRight",T],["flip",w],["partial",x],["partialRight",b],["rearg",E]],B="[object Arguments]",G="[object Array]",z="[object AsyncFunction]",H="[object Boolean]",V="[object Date]",j="[object DOMException]",W="[object Error]",Y="[object Function]",X="[object GeneratorFunction]",q="[object Map]",Z="[object Number]",K="[object Null]",$="[object Object]",J="[object Promise]",Q="[object Proxy]",ee="[object RegExp]",te="[object Set]",ie="[object String]",re="[object Symbol]",ne="[object Undefined]",se="[object WeakMap]",ae="[object WeakSet]",oe="[object ArrayBuffer]",le="[object DataView]",he="[object Float32Array]",ue="[object Float64Array]",ce="[object Int8Array]",pe="[object Int16Array]",de="[object Int32Array]",fe="[object Uint8Array]",me="[object Uint8ClampedArray]",ge="[object Uint16Array]",ye="[object Uint32Array]",ve=/\b__p \+= '';/g,Te=/\b(__p \+=) '' \+/g,xe=/(__e\(.*?\)|\b__t\)) \+\n'';/g,be=/&(?:amp|lt|gt|quot|#39);/g,_e=/[&<>"']/g,Ee=RegExp(be.source),we=RegExp(_e.source),Se=/<%-([\s\S]+?)%>/g,Ie=/<%([\s\S]+?)%>/g,Me=/<%=([\s\S]+?)%>/g,Ae=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,De=/^\w*$/,Oe=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Re=/[\\^$.*+?()[\]{}|]/g,Ce=RegExp(Re.source),Ne=/^\s+/,Pe=/\s/,Le=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,Fe=/\{\n\/\* \[wrapped with (.+)\] \*/,Ue=/,? & /,ke=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,Be=/[()=,{}\[\]\/\s]/,Ge=/\\(\\)?/g,ze=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,He=/\w*$/,Ve=/^[-+]0x[0-9a-f]+$/i,je=/^0b[01]+$/i,We=/^\[object .+?Constructor\]$/,Ye=/^0o[0-7]+$/i,Xe=/^(?:0|[1-9]\d*)$/,qe=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,Ze=/($^)/,Ke=/['\n\r\u2028\u2029\\]/g,$e="\\ud800-\\udfff",Je="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",Qe="\\u2700-\\u27bf",et="a-z\\xdf-\\xf6\\xf8-\\xff",tt="A-Z\\xc0-\\xd6\\xd8-\\xde",it="\\ufe0e\\ufe0f",rt="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",nt="['’]",st="["+$e+"]",at="["+rt+"]",ot="["+Je+"]",lt="\\d+",ht="["+Qe+"]",ut="["+et+"]",ct="[^"+$e+rt+lt+Qe+et+tt+"]",pt="\\ud83c[\\udffb-\\udfff]",dt="[^"+$e+"]",ft="(?:\\ud83c[\\udde6-\\uddff]){2}",mt="[\\ud800-\\udbff][\\udc00-\\udfff]",gt="["+tt+"]",yt="\\u200d",vt="(?:"+ut+"|"+ct+")",Tt="(?:"+gt+"|"+ct+")",xt="(?:['’](?:d|ll|m|re|s|t|ve))?",bt="(?:['’](?:D|LL|M|RE|S|T|VE))?",_t="(?:"+ot+"|"+pt+")"+"?",Et="["+it+"]?",wt=Et+_t+("(?:"+yt+"(?:"+[dt,ft,mt].join("|")+")"+Et+_t+")*"),St="(?:"+[ht,ft,mt].join("|")+")"+wt,It="(?:"+[dt+ot+"?",ot,ft,mt,st].join("|")+")",Mt=RegExp(nt,"g"),At=RegExp(ot,"g"),Dt=RegExp(pt+"(?="+pt+")|"+It+wt,"g"),Ot=RegExp([gt+"?"+ut+"+"+xt+"(?="+[at,gt,"$"].join("|")+")",Tt+"+"+bt+"(?="+[at,gt+vt,"$"].join("|")+")",gt+"?"+vt+"+"+xt,gt+"+"+bt,"\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",lt,St].join("|"),"g"),Rt=RegExp("["+yt+$e+Je+it+"]"),Ct=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,Nt=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],Pt=-1,Lt={};Lt[he]=Lt[ue]=Lt[ce]=Lt[pe]=Lt[de]=Lt[fe]=Lt[me]=Lt[ge]=Lt[ye]=!0,Lt[B]=Lt[G]=Lt[oe]=Lt[H]=Lt[le]=Lt[V]=Lt[W]=Lt[Y]=Lt[q]=Lt[Z]=Lt[$]=Lt[ee]=Lt[te]=Lt[ie]=Lt[se]=!1;var Ft={};Ft[B]=Ft[G]=Ft[oe]=Ft[le]=Ft[H]=Ft[V]=Ft[he]=Ft[ue]=Ft[ce]=Ft[pe]=Ft[de]=Ft[q]=Ft[Z]=Ft[$]=Ft[ee]=Ft[te]=Ft[ie]=Ft[re]=Ft[fe]=Ft[me]=Ft[ge]=Ft[ye]=!0,Ft[W]=Ft[Y]=Ft[se]=!1;var Ut={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},kt=parseFloat,Bt=parseInt,Gt="object"==typeof global&&global&&global.Object===Object&&global,zt="object"==typeof self&&self&&self.Object===Object&&self,Ht=Gt||zt||Function("return this")(),Vt="object"==typeof e&&e&&!e.nodeType&&e,jt=Vt&&"object"==typeof t&&t&&!t.nodeType&&t,Wt=jt&&jt.exports===Vt,Yt=Wt&&Gt.process,Xt=function(){try{return jt&&jt.require&&jt.require("util").types||Yt&&Yt.binding&&Yt.binding("util")}catch(e){}}(),qt=Xt&&Xt.isArrayBuffer,Zt=Xt&&Xt.isDate,Kt=Xt&&Xt.isMap,$t=Xt&&Xt.isRegExp,Jt=Xt&&Xt.isSet,Qt=Xt&&Xt.isTypedArray;function ei(e,t,i){switch(i.length){case 0:return e.call(t);case 1:return e.call(t,i[0]);case 2:return e.call(t,i[0],i[1]);case 3:return e.call(t,i[0],i[1],i[2])}return e.apply(t,i)}function ti(e,t,i,r){for(var n=-1,s=null==e?0:e.length;++n-1}function oi(e,t,i){for(var r=-1,n=null==e?0:e.length;++r-1;);return i}function Oi(e,t){for(var i=e.length;i--&&gi(t,e[i],0)>-1;);return i}var Ri=bi({"À":"A","Á":"A","Â":"A","Ã":"A","Ä":"A","Å":"A","à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","Ç":"C","ç":"c","Ð":"D","ð":"d","È":"E","É":"E","Ê":"E","Ë":"E","è":"e","é":"e","ê":"e","ë":"e","Ì":"I","Í":"I","Î":"I","Ï":"I","ì":"i","í":"i","î":"i","ï":"i","Ñ":"N","ñ":"n","Ò":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","Ù":"U","Ú":"U","Û":"U","Ü":"U","ù":"u","ú":"u","û":"u","ü":"u","Ý":"Y","ý":"y","ÿ":"y","Æ":"Ae","æ":"ae","Þ":"Th","þ":"th","ß":"ss","Ā":"A","Ă":"A","Ą":"A","ā":"a","ă":"a","ą":"a","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","ć":"c","ĉ":"c","ċ":"c","č":"c","Ď":"D","Đ":"D","ď":"d","đ":"d","Ē":"E","Ĕ":"E","Ė":"E","Ę":"E","Ě":"E","ē":"e","ĕ":"e","ė":"e","ę":"e","ě":"e","Ĝ":"G","Ğ":"G","Ġ":"G","Ģ":"G","ĝ":"g","ğ":"g","ġ":"g","ģ":"g","Ĥ":"H","Ħ":"H","ĥ":"h","ħ":"h","Ĩ":"I","Ī":"I","Ĭ":"I","Į":"I","İ":"I","ĩ":"i","ī":"i","ĭ":"i","į":"i","ı":"i","Ĵ":"J","ĵ":"j","Ķ":"K","ķ":"k","ĸ":"k","Ĺ":"L","Ļ":"L","Ľ":"L","Ŀ":"L","Ł":"L","ĺ":"l","ļ":"l","ľ":"l","ŀ":"l","ł":"l","Ń":"N","Ņ":"N","Ň":"N","Ŋ":"N","ń":"n","ņ":"n","ň":"n","ŋ":"n","Ō":"O","Ŏ":"O","Ő":"O","ō":"o","ŏ":"o","ő":"o","Ŕ":"R","Ŗ":"R","Ř":"R","ŕ":"r","ŗ":"r","ř":"r","Ś":"S","Ŝ":"S","Ş":"S","Š":"S","ś":"s","ŝ":"s","ş":"s","š":"s","Ţ":"T","Ť":"T","Ŧ":"T","ţ":"t","ť":"t","ŧ":"t","Ũ":"U","Ū":"U","Ŭ":"U","Ů":"U","Ű":"U","Ų":"U","ũ":"u","ū":"u","ŭ":"u","ů":"u","ű":"u","ų":"u","Ŵ":"W","ŵ":"w","Ŷ":"Y","ŷ":"y","Ÿ":"Y","Ź":"Z","Ż":"Z","Ž":"Z","ź":"z","ż":"z","ž":"z","IJ":"IJ","ij":"ij","Œ":"Oe","œ":"oe","ʼn":"'n","ſ":"s"}),Ci=bi({"&":"&","<":"<",">":">",'"':""","'":"'"});function Ni(e){return"\\"+Ut[e]}function Pi(e){return Rt.test(e)}function Li(e){var t=-1,i=Array(e.size);return e.forEach((function(e,r){i[++t]=[r,e]})),i}function Fi(e,t){return function(i){return e(t(i))}}function Ui(e,t){for(var i=-1,r=e.length,n=0,s=[];++i",""":'"',"'":"'"});var Vi=function e(t){var Pe,$e=(t=null==t?Ht:Vi.defaults(Ht.Object(),t,Vi.pick(Ht,Nt))).Array,Je=t.Date,Qe=t.Error,et=t.Function,tt=t.Math,it=t.Object,rt=t.RegExp,nt=t.String,st=t.TypeError,at=$e.prototype,ot=et.prototype,lt=it.prototype,ht=t["__core-js_shared__"],ut=ot.toString,ct=lt.hasOwnProperty,pt=0,dt=(Pe=/[^.]+$/.exec(ht&&ht.keys&&ht.keys.IE_PROTO||""))?"Symbol(src)_1."+Pe:"",ft=lt.toString,mt=ut.call(it),gt=Ht._,yt=rt("^"+ut.call(ct).replace(Re,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),vt=Wt?t.Buffer:i,Tt=t.Symbol,xt=t.Uint8Array,bt=vt?vt.allocUnsafe:i,_t=Fi(it.getPrototypeOf,it),Et=it.create,wt=lt.propertyIsEnumerable,St=at.splice,It=Tt?Tt.isConcatSpreadable:i,Dt=Tt?Tt.iterator:i,Rt=Tt?Tt.toStringTag:i,Ut=function(){try{var e=Gs(it,"defineProperty");return e({},"",{}),e}catch(e){}}(),Gt=t.clearTimeout!==Ht.clearTimeout&&t.clearTimeout,zt=Je&&Je.now!==Ht.Date.now&&Je.now,Vt=t.setTimeout!==Ht.setTimeout&&t.setTimeout,jt=tt.ceil,Yt=tt.floor,Xt=it.getOwnPropertySymbols,di=vt?vt.isBuffer:i,bi=t.isFinite,ji=at.join,Wi=Fi(it.keys,it),Yi=tt.max,Xi=tt.min,qi=Je.now,Zi=t.parseInt,Ki=tt.random,$i=at.reverse,Ji=Gs(t,"DataView"),Qi=Gs(t,"Map"),er=Gs(t,"Promise"),tr=Gs(t,"Set"),ir=Gs(t,"WeakMap"),rr=Gs(it,"create"),nr=ir&&new ir,sr={},ar=pa(Ji),or=pa(Qi),lr=pa(er),hr=pa(tr),ur=pa(ir),cr=Tt?Tt.prototype:i,pr=cr?cr.valueOf:i,dr=cr?cr.toString:i;function fr(e){if(Oo(e)&&!To(e)&&!(e instanceof vr)){if(e instanceof yr)return e;if(ct.call(e,"__wrapped__"))return da(e)}return new yr(e)}var mr=function(){function e(){}return function(t){if(!Do(t))return{};if(Et)return Et(t);e.prototype=t;var r=new e;return e.prototype=i,r}}();function gr(){}function yr(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=i}function vr(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=L,this.__views__=[]}function Tr(e){var t=-1,i=null==e?0:e.length;for(this.clear();++t=t?e:t)),e}function Fr(e,t,r,n,s,a){var o,l=t&u,h=t&c,d=t&p;if(r&&(o=s?r(e,n,s,a):r(e)),o!==i)return o;if(!Do(e))return e;var f=To(e);if(f){if(o=function(e){var t=e.length,i=new e.constructor(t);return t&&"string"==typeof e[0]&&ct.call(e,"index")&&(i.index=e.index,i.input=e.input),i}(e),!l)return ns(e,o)}else{var m=Vs(e),g=m==Y||m==X;if(Eo(e))return Jn(e,l);if(m==$||m==B||g&&!s){if(o=h||g?{}:Ws(e),!l)return h?function(e,t){return ss(e,Hs(e),t)}(e,function(e,t){return e&&ss(t,ol(t),e)}(o,e)):function(e,t){return ss(e,zs(e),t)}(e,Cr(o,e))}else{if(!Ft[m])return s?e:{};o=function(e,t,i){var r=e.constructor;switch(t){case oe:return Qn(e);case H:case V:return new r(+e);case le:return function(e,t){var i=t?Qn(e.buffer):e.buffer;return new e.constructor(i,e.byteOffset,e.byteLength)}(e,i);case he:case ue:case ce:case pe:case de:case fe:case me:case ge:case ye:return es(e,i);case q:return new r;case Z:case ie:return new r(e);case ee:return function(e){var t=new e.constructor(e.source,He.exec(e));return t.lastIndex=e.lastIndex,t}(e);case te:return new r;case re:return function(e){return pr?it(pr.call(e)):{}}(e)}}(e,m,l)}}a||(a=new Er);var y=a.get(e);if(y)return y;a.set(e,o),Lo(e)?e.forEach((function(i){o.add(Fr(i,t,r,i,e,a))})):Ro(e)&&e.forEach((function(i,n){o.set(n,Fr(i,t,r,n,e,a))}));var v=f?i:(d?h?Ns:Cs:h?ol:al)(e);return ii(v||e,(function(i,n){v&&(i=e[n=i]),Dr(o,n,Fr(i,t,r,n,e,a))})),o}function Ur(e,t,r){var n=r.length;if(null==e)return!n;for(e=it(e);n--;){var s=r[n],a=t[s],o=e[s];if(o===i&&!(s in e)||!a(o))return!1}return!0}function kr(e,t,r){if("function"!=typeof e)throw new st(s);return sa((function(){e.apply(i,r)}),t)}function Br(e,t,i,n){var s=-1,a=ai,o=!0,l=e.length,h=[],u=t.length;if(!l)return h;i&&(t=li(t,Ii(i))),n?(a=oi,o=!1):t.length>=r&&(a=Ai,o=!1,t=new _r(t));e:for(;++s-1},xr.prototype.set=function(e,t){var i=this.__data__,r=Or(i,e);return r<0?(++this.size,i.push([e,t])):i[r][1]=t,this},br.prototype.clear=function(){this.size=0,this.__data__={hash:new Tr,map:new(Qi||xr),string:new Tr}},br.prototype.delete=function(e){var t=ks(this,e).delete(e);return this.size-=t?1:0,t},br.prototype.get=function(e){return ks(this,e).get(e)},br.prototype.has=function(e){return ks(this,e).has(e)},br.prototype.set=function(e,t){var i=ks(this,e),r=i.size;return i.set(e,t),this.size+=i.size==r?0:1,this},_r.prototype.add=_r.prototype.push=function(e){return this.__data__.set(e,o),this},_r.prototype.has=function(e){return this.__data__.has(e)},Er.prototype.clear=function(){this.__data__=new xr,this.size=0},Er.prototype.delete=function(e){var t=this.__data__,i=t.delete(e);return this.size=t.size,i},Er.prototype.get=function(e){return this.__data__.get(e)},Er.prototype.has=function(e){return this.__data__.has(e)},Er.prototype.set=function(e,t){var i=this.__data__;if(i instanceof xr){var n=i.__data__;if(!Qi||n.length0&&i(o)?t>1?Wr(o,t-1,i,r,n):hi(n,o):r||(n[n.length]=o)}return n}var Yr=hs(),Xr=hs(!0);function qr(e,t){return e&&Yr(e,t,al)}function Zr(e,t){return e&&Xr(e,t,al)}function Kr(e,t){return si(t,(function(t){return Io(e[t])}))}function $r(e,t){for(var r=0,n=(t=qn(t,e)).length;null!=e&&rt}function tn(e,t){return null!=e&&ct.call(e,t)}function rn(e,t){return null!=e&&t in it(e)}function nn(e,t,r){for(var n=r?oi:ai,s=e[0].length,a=e.length,o=a,l=$e(a),h=1/0,u=[];o--;){var c=e[o];o&&t&&(c=li(c,Ii(t))),h=Xi(c.length,h),l[o]=!r&&(t||s>=120&&c.length>=120)?new _r(o&&c):i}c=e[0];var p=-1,d=l[0];e:for(;++p=o?l:l*("desc"==i[r]?-1:1)}return e.index-t.index}(e,t,i)}))}function xn(e,t,i){for(var r=-1,n=t.length,s={};++r-1;)o!==e&&St.call(o,l,1),St.call(e,l,1);return e}function _n(e,t){for(var i=e?t.length:0,r=i-1;i--;){var n=t[i];if(i==r||n!==s){var s=n;Xs(n)?St.call(e,n,1):Gn(e,n)}}return e}function En(e,t){return e+Yt(Ki()*(t-e+1))}function wn(e,t){var i="";if(!e||t<1||t>C)return i;do{t%2&&(i+=e),(t=Yt(t/2))&&(e+=e)}while(t);return i}function Sn(e,t){return aa(ta(e,t,Cl),e+"")}function In(e){return Sr(ml(e))}function Mn(e,t){var i=ml(e);return ha(i,Lr(t,0,i.length))}function An(e,t,r,n){if(!Do(e))return e;for(var s=-1,a=(t=qn(t,e)).length,o=a-1,l=e;null!=l&&++sn?0:n+t),(i=i>n?n:i)<0&&(i+=n),n=t>i?0:i-t>>>0,t>>>=0;for(var s=$e(n);++r>>1,a=e[s];null!==a&&!Uo(a)&&(i?a<=t:a=r){var u=t?null:ws(e);if(u)return ki(u);o=!1,s=Ai,h=new _r}else h=t?[]:l;e:for(;++n=n?e:Cn(e,t,r)}var $n=Gt||function(e){return Ht.clearTimeout(e)};function Jn(e,t){if(t)return e.slice();var i=e.length,r=bt?bt(i):new e.constructor(i);return e.copy(r),r}function Qn(e){var t=new e.constructor(e.byteLength);return new xt(t).set(new xt(e)),t}function es(e,t){var i=t?Qn(e.buffer):e.buffer;return new e.constructor(i,e.byteOffset,e.length)}function ts(e,t){if(e!==t){var r=e!==i,n=null===e,s=e==e,a=Uo(e),o=t!==i,l=null===t,h=t==t,u=Uo(t);if(!l&&!u&&!a&&e>t||a&&o&&h&&!l&&!u||n&&o&&h||!r&&h||!s)return 1;if(!n&&!a&&!u&&e1?r[s-1]:i,o=s>2?r[2]:i;for(a=e.length>3&&"function"==typeof a?(s--,a):i,o&&qs(r[0],r[1],o)&&(a=s<3?i:a,s=1),t=it(t);++n-1?s[a?t[o]:o]:i}}function fs(e){return Rs((function(t){var r=t.length,n=r,a=yr.prototype.thru;for(e&&t.reverse();n--;){var o=t[n];if("function"!=typeof o)throw new st(s);if(a&&!l&&"wrapper"==Ls(o))var l=new yr([],!0)}for(n=l?n:r;++n1&&v.reverse(),c&&hl))return!1;var u=a.get(e),c=a.get(t);if(u&&c)return u==t&&c==e;var p=-1,m=!0,g=r&f?new _r:i;for(a.set(e,t),a.set(t,e);++p-1&&e%1==0&&e1?"& ":"")+t[r],t=t.join(i>2?", ":" "),e.replace(Le,"{\n/* [wrapped with "+t+"] */\n")}(r,function(e,t){return ii(k,(function(i){var r="_."+i[0];t&i[1]&&!ai(e,r)&&e.push(r)})),e.sort()}(function(e){var t=e.match(Fe);return t?t[1].split(Ue):[]}(r),i)))}function la(e){var t=0,r=0;return function(){var n=qi(),s=A-(n-r);if(r=n,s>0){if(++t>=M)return arguments[0]}else t=0;return e.apply(i,arguments)}}function ha(e,t){var r=-1,n=e.length,s=n-1;for(t=t===i?n:t;++r1?e[t-1]:i;return r="function"==typeof r?(e.pop(),r):i,Na(e,r)}));function Ga(e){var t=fr(e);return t.__chain__=!0,t}function za(e,t){return t(e)}var Ha=Rs((function(e){var t=e.length,r=t?e[0]:0,n=this.__wrapped__,s=function(t){return Pr(t,e)};return!(t>1||this.__actions__.length)&&n instanceof vr&&Xs(r)?((n=n.slice(r,+r+(t?1:0))).__actions__.push({func:za,args:[s],thisArg:i}),new yr(n,this.__chain__).thru((function(e){return t&&!e.length&&e.push(i),e}))):this.thru(s)}));var Va=as((function(e,t,i){ct.call(e,i)?++e[i]:Nr(e,i,1)}));var ja=ds(ya),Wa=ds(va);function Ya(e,t){return(To(e)?ii:Gr)(e,Us(t,3))}function Xa(e,t){return(To(e)?ri:zr)(e,Us(t,3))}var qa=as((function(e,t,i){ct.call(e,i)?e[i].push(t):Nr(e,i,[t])}));var Za=Sn((function(e,t,i){var r=-1,n="function"==typeof t,s=bo(e)?$e(e.length):[];return Gr(e,(function(e){s[++r]=n?ei(t,e,i):sn(e,t,i)})),s})),Ka=as((function(e,t,i){Nr(e,i,t)}));function $a(e,t){return(To(e)?li:fn)(e,Us(t,3))}var Ja=as((function(e,t,i){e[i?0:1].push(t)}),(function(){return[[],[]]}));var Qa=Sn((function(e,t){if(null==e)return[];var i=t.length;return i>1&&qs(e,t[0],t[1])?t=[]:i>2&&qs(t[0],t[1],t[2])&&(t=[t[0]]),Tn(e,Wr(t,1),[])})),eo=zt||function(){return Ht.Date.now()};function to(e,t,r){return t=r?i:t,t=e&&null==t?e.length:t,Is(e,_,i,i,i,i,t)}function io(e,t){var r;if("function"!=typeof t)throw new st(s);return e=Vo(e),function(){return--e>0&&(r=t.apply(this,arguments)),e<=1&&(t=i),r}}var ro=Sn((function(e,t,i){var r=m;if(i.length){var n=Ui(i,Fs(ro));r|=x}return Is(e,r,t,i,n)})),no=Sn((function(e,t,i){var r=m|g;if(i.length){var n=Ui(i,Fs(no));r|=x}return Is(t,r,e,i,n)}));function so(e,t,r){var n,a,o,l,h,u,c=0,p=!1,d=!1,f=!0;if("function"!=typeof e)throw new st(s);function m(t){var r=n,s=a;return n=a=i,c=t,l=e.apply(s,r)}function g(e){var r=e-u;return u===i||r>=t||r<0||d&&e-c>=o}function y(){var e=eo();if(g(e))return v(e);h=sa(y,function(e){var i=t-(e-u);return d?Xi(i,o-(e-c)):i}(e))}function v(e){return h=i,f&&n?m(e):(n=a=i,l)}function T(){var e=eo(),r=g(e);if(n=arguments,a=this,u=e,r){if(h===i)return function(e){return c=e,h=sa(y,t),p?m(e):l}(u);if(d)return $n(h),h=sa(y,t),m(u)}return h===i&&(h=sa(y,t)),l}return t=Wo(t)||0,Do(r)&&(p=!!r.leading,o=(d="maxWait"in r)?Yi(Wo(r.maxWait)||0,t):o,f="trailing"in r?!!r.trailing:f),T.cancel=function(){h!==i&&$n(h),c=0,n=u=a=h=i},T.flush=function(){return h===i?l:v(eo())},T}var ao=Sn((function(e,t){return kr(e,1,t)})),oo=Sn((function(e,t,i){return kr(e,Wo(t)||0,i)}));function lo(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new st(s);var i=function(){var r=arguments,n=t?t.apply(this,r):r[0],s=i.cache;if(s.has(n))return s.get(n);var a=e.apply(this,r);return i.cache=s.set(n,a)||s,a};return i.cache=new(lo.Cache||br),i}function ho(e){if("function"!=typeof e)throw new st(s);return function(){var t=arguments;switch(t.length){case 0:return!e.call(this);case 1:return!e.call(this,t[0]);case 2:return!e.call(this,t[0],t[1]);case 3:return!e.call(this,t[0],t[1],t[2])}return!e.apply(this,t)}}lo.Cache=br;var uo=Zn((function(e,t){var i=(t=1==t.length&&To(t[0])?li(t[0],Ii(Us())):li(Wr(t,1),Ii(Us()))).length;return Sn((function(r){for(var n=-1,s=Xi(r.length,i);++n=t})),vo=an(function(){return arguments}())?an:function(e){return Oo(e)&&ct.call(e,"callee")&&!wt.call(e,"callee")},To=$e.isArray,xo=qt?Ii(qt):function(e){return Oo(e)&&Qr(e)==oe};function bo(e){return null!=e&&Ao(e.length)&&!Io(e)}function _o(e){return Oo(e)&&bo(e)}var Eo=di||Wl,wo=Zt?Ii(Zt):function(e){return Oo(e)&&Qr(e)==V};function So(e){if(!Oo(e))return!1;var t=Qr(e);return t==W||t==j||"string"==typeof e.message&&"string"==typeof e.name&&!No(e)}function Io(e){if(!Do(e))return!1;var t=Qr(e);return t==Y||t==X||t==z||t==Q}function Mo(e){return"number"==typeof e&&e==Vo(e)}function Ao(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=C}function Do(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}function Oo(e){return null!=e&&"object"==typeof e}var Ro=Kt?Ii(Kt):function(e){return Oo(e)&&Vs(e)==q};function Co(e){return"number"==typeof e||Oo(e)&&Qr(e)==Z}function No(e){if(!Oo(e)||Qr(e)!=$)return!1;var t=_t(e);if(null===t)return!0;var i=ct.call(t,"constructor")&&t.constructor;return"function"==typeof i&&i instanceof i&&ut.call(i)==mt}var Po=$t?Ii($t):function(e){return Oo(e)&&Qr(e)==ee};var Lo=Jt?Ii(Jt):function(e){return Oo(e)&&Vs(e)==te};function Fo(e){return"string"==typeof e||!To(e)&&Oo(e)&&Qr(e)==ie}function Uo(e){return"symbol"==typeof e||Oo(e)&&Qr(e)==re}var ko=Qt?Ii(Qt):function(e){return Oo(e)&&Ao(e.length)&&!!Lt[Qr(e)]};var Bo=bs(dn),Go=bs((function(e,t){return e<=t}));function zo(e){if(!e)return[];if(bo(e))return Fo(e)?Gi(e):ns(e);if(Dt&&e[Dt])return function(e){for(var t,i=[];!(t=e.next()).done;)i.push(t.value);return i}(e[Dt]());var t=Vs(e);return(t==q?Li:t==te?ki:ml)(e)}function Ho(e){return e?(e=Wo(e))===R||e===-R?(e<0?-1:1)*N:e==e?e:0:0===e?e:0}function Vo(e){var t=Ho(e),i=t%1;return t==t?i?t-i:t:0}function jo(e){return e?Lr(Vo(e),0,L):0}function Wo(e){if("number"==typeof e)return e;if(Uo(e))return P;if(Do(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=Do(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=Si(e);var i=je.test(e);return i||Ye.test(e)?Bt(e.slice(2),i?2:8):Ve.test(e)?P:+e}function Yo(e){return ss(e,ol(e))}function Xo(e){return null==e?"":kn(e)}var qo=os((function(e,t){if(Js(t)||bo(t))ss(t,al(t),e);else for(var i in t)ct.call(t,i)&&Dr(e,i,t[i])})),Zo=os((function(e,t){ss(t,ol(t),e)})),Ko=os((function(e,t,i,r){ss(t,ol(t),e,r)})),$o=os((function(e,t,i,r){ss(t,al(t),e,r)})),Jo=Rs(Pr);var Qo=Sn((function(e,t){e=it(e);var r=-1,n=t.length,s=n>2?t[2]:i;for(s&&qs(t[0],t[1],s)&&(n=1);++r1),t})),ss(e,Ns(e),i),r&&(i=Fr(i,u|c|p,Ds));for(var n=t.length;n--;)Gn(i,t[n]);return i}));var cl=Rs((function(e,t){return null==e?{}:function(e,t){return xn(e,t,(function(t,i){return il(e,i)}))}(e,t)}));function pl(e,t){if(null==e)return{};var i=li(Ns(e),(function(e){return[e]}));return t=Us(t),xn(e,i,(function(e,i){return t(e,i[0])}))}var dl=Ss(al),fl=Ss(ol);function ml(e){return null==e?[]:Mi(e,al(e))}var gl=cs((function(e,t,i){return t=t.toLowerCase(),e+(i?yl(t):t)}));function yl(e){return Sl(Xo(e).toLowerCase())}function vl(e){return(e=Xo(e))&&e.replace(qe,Ri).replace(At,"")}var Tl=cs((function(e,t,i){return e+(i?"-":"")+t.toLowerCase()})),xl=cs((function(e,t,i){return e+(i?" ":"")+t.toLowerCase()})),bl=us("toLowerCase");var _l=cs((function(e,t,i){return e+(i?"_":"")+t.toLowerCase()}));var El=cs((function(e,t,i){return e+(i?" ":"")+Sl(t)}));var wl=cs((function(e,t,i){return e+(i?" ":"")+t.toUpperCase()})),Sl=us("toUpperCase");function Il(e,t,r){return e=Xo(e),(t=r?i:t)===i?function(e){return Ct.test(e)}(e)?function(e){return e.match(Ot)||[]}(e):function(e){return e.match(ke)||[]}(e):e.match(t)||[]}var Ml=Sn((function(e,t){try{return ei(e,i,t)}catch(e){return So(e)?e:new Qe(e)}})),Al=Rs((function(e,t){return ii(t,(function(t){t=ca(t),Nr(e,t,ro(e[t],e))})),e}));function Dl(e){return function(){return e}}var Ol=fs(),Rl=fs(!0);function Cl(e){return e}function Nl(e){return un("function"==typeof e?e:Fr(e,u))}var Pl=Sn((function(e,t){return function(i){return sn(i,e,t)}})),Ll=Sn((function(e,t){return function(i){return sn(e,i,t)}}));function Fl(e,t,i){var r=al(t),n=Kr(t,r);null==i&&(!Do(t)||!n.length&&r.length)&&(i=t,t=e,e=this,n=Kr(t,al(t)));var s=!(Do(i)&&"chain"in i&&!i.chain),a=Io(e);return ii(n,(function(i){var r=t[i];e[i]=r,a&&(e.prototype[i]=function(){var t=this.__chain__;if(s||t){var i=e(this.__wrapped__);return(i.__actions__=ns(this.__actions__)).push({func:r,args:arguments,thisArg:e}),i.__chain__=t,i}return r.apply(e,hi([this.value()],arguments))})})),e}function Ul(){}var kl=vs(li),Bl=vs(ni),Gl=vs(pi);function zl(e){return Zs(e)?xi(ca(e)):function(e){return function(t){return $r(t,e)}}(e)}var Hl=xs(),Vl=xs(!0);function jl(){return[]}function Wl(){return!1}var Yl=ys((function(e,t){return e+t}),0),Xl=Es("ceil"),ql=ys((function(e,t){return e/t}),1),Zl=Es("floor");var Kl=ys((function(e,t){return e*t}),1),$l=Es("round"),Jl=ys((function(e,t){return e-t}),0);return fr.after=function(e,t){if("function"!=typeof t)throw new st(s);return e=Vo(e),function(){if(--e<1)return t.apply(this,arguments)}},fr.ary=to,fr.assign=qo,fr.assignIn=Zo,fr.assignInWith=Ko,fr.assignWith=$o,fr.at=Jo,fr.before=io,fr.bind=ro,fr.bindAll=Al,fr.bindKey=no,fr.castArray=function(){if(!arguments.length)return[];var e=arguments[0];return To(e)?e:[e]},fr.chain=Ga,fr.chunk=function(e,t,r){t=(r?qs(e,t,r):t===i)?1:Yi(Vo(t),0);var n=null==e?0:e.length;if(!n||t<1)return[];for(var s=0,a=0,o=$e(jt(n/t));ss?0:s+r),(n=n===i||n>s?s:Vo(n))<0&&(n+=s),n=r>n?0:jo(n);r>>0)?(e=Xo(e))&&("string"==typeof t||null!=t&&!Po(t))&&(!(t=kn(t))&&Pi(e))?Kn(Gi(e),0,r):e.split(t,r):[]},fr.spread=function(e,t){if("function"!=typeof e)throw new st(s);return t=null==t?0:Yi(Vo(t),0),Sn((function(i){var r=i[t],n=Kn(i,0,t);return r&&hi(n,r),ei(e,this,n)}))},fr.tail=function(e){var t=null==e?0:e.length;return t?Cn(e,1,t):[]},fr.take=function(e,t,r){return e&&e.length?Cn(e,0,(t=r||t===i?1:Vo(t))<0?0:t):[]},fr.takeRight=function(e,t,r){var n=null==e?0:e.length;return n?Cn(e,(t=n-(t=r||t===i?1:Vo(t)))<0?0:t,n):[]},fr.takeRightWhile=function(e,t){return e&&e.length?Hn(e,Us(t,3),!1,!0):[]},fr.takeWhile=function(e,t){return e&&e.length?Hn(e,Us(t,3)):[]},fr.tap=function(e,t){return t(e),e},fr.throttle=function(e,t,i){var r=!0,n=!0;if("function"!=typeof e)throw new st(s);return Do(i)&&(r="leading"in i?!!i.leading:r,n="trailing"in i?!!i.trailing:n),so(e,t,{leading:r,maxWait:t,trailing:n})},fr.thru=za,fr.toArray=zo,fr.toPairs=dl,fr.toPairsIn=fl,fr.toPath=function(e){return To(e)?li(e,ca):Uo(e)?[e]:ns(ua(Xo(e)))},fr.toPlainObject=Yo,fr.transform=function(e,t,i){var r=To(e),n=r||Eo(e)||ko(e);if(t=Us(t,4),null==i){var s=e&&e.constructor;i=n?r?new s:[]:Do(e)&&Io(s)?mr(_t(e)):{}}return(n?ii:qr)(e,(function(e,r,n){return t(i,e,r,n)})),i},fr.unary=function(e){return to(e,1)},fr.union=Da,fr.unionBy=Oa,fr.unionWith=Ra,fr.uniq=function(e){return e&&e.length?Bn(e):[]},fr.uniqBy=function(e,t){return e&&e.length?Bn(e,Us(t,2)):[]},fr.uniqWith=function(e,t){return t="function"==typeof t?t:i,e&&e.length?Bn(e,i,t):[]},fr.unset=function(e,t){return null==e||Gn(e,t)},fr.unzip=Ca,fr.unzipWith=Na,fr.update=function(e,t,i){return null==e?e:zn(e,t,Xn(i))},fr.updateWith=function(e,t,r,n){return n="function"==typeof n?n:i,null==e?e:zn(e,t,Xn(r),n)},fr.values=ml,fr.valuesIn=function(e){return null==e?[]:Mi(e,ol(e))},fr.without=Pa,fr.words=Il,fr.wrap=function(e,t){return co(Xn(t),e)},fr.xor=La,fr.xorBy=Fa,fr.xorWith=Ua,fr.zip=ka,fr.zipObject=function(e,t){return Wn(e||[],t||[],Dr)},fr.zipObjectDeep=function(e,t){return Wn(e||[],t||[],An)},fr.zipWith=Ba,fr.entries=dl,fr.entriesIn=fl,fr.extend=Zo,fr.extendWith=Ko,Fl(fr,fr),fr.add=Yl,fr.attempt=Ml,fr.camelCase=gl,fr.capitalize=yl,fr.ceil=Xl,fr.clamp=function(e,t,r){return r===i&&(r=t,t=i),r!==i&&(r=(r=Wo(r))==r?r:0),t!==i&&(t=(t=Wo(t))==t?t:0),Lr(Wo(e),t,r)},fr.clone=function(e){return Fr(e,p)},fr.cloneDeep=function(e){return Fr(e,u|p)},fr.cloneDeepWith=function(e,t){return Fr(e,u|p,t="function"==typeof t?t:i)},fr.cloneWith=function(e,t){return Fr(e,p,t="function"==typeof t?t:i)},fr.conformsTo=function(e,t){return null==t||Ur(e,t,al(t))},fr.deburr=vl,fr.defaultTo=function(e,t){return null==e||e!=e?t:e},fr.divide=ql,fr.endsWith=function(e,t,r){e=Xo(e),t=kn(t);var n=e.length,s=r=r===i?n:Lr(Vo(r),0,n);return(r-=t.length)>=0&&e.slice(r,s)==t},fr.eq=mo,fr.escape=function(e){return(e=Xo(e))&&we.test(e)?e.replace(_e,Ci):e},fr.escapeRegExp=function(e){return(e=Xo(e))&&Ce.test(e)?e.replace(Re,"\\$&"):e},fr.every=function(e,t,r){var n=To(e)?ni:Hr;return r&&qs(e,t,r)&&(t=i),n(e,Us(t,3))},fr.find=ja,fr.findIndex=ya,fr.findKey=function(e,t){return fi(e,Us(t,3),qr)},fr.findLast=Wa,fr.findLastIndex=va,fr.findLastKey=function(e,t){return fi(e,Us(t,3),Zr)},fr.floor=Zl,fr.forEach=Ya,fr.forEachRight=Xa,fr.forIn=function(e,t){return null==e?e:Yr(e,Us(t,3),ol)},fr.forInRight=function(e,t){return null==e?e:Xr(e,Us(t,3),ol)},fr.forOwn=function(e,t){return e&&qr(e,Us(t,3))},fr.forOwnRight=function(e,t){return e&&Zr(e,Us(t,3))},fr.get=tl,fr.gt=go,fr.gte=yo,fr.has=function(e,t){return null!=e&&js(e,t,tn)},fr.hasIn=il,fr.head=xa,fr.identity=Cl,fr.includes=function(e,t,i,r){e=bo(e)?e:ml(e),i=i&&!r?Vo(i):0;var n=e.length;return i<0&&(i=Yi(n+i,0)),Fo(e)?i<=n&&e.indexOf(t,i)>-1:!!n&&gi(e,t,i)>-1},fr.indexOf=function(e,t,i){var r=null==e?0:e.length;if(!r)return-1;var n=null==i?0:Vo(i);return n<0&&(n=Yi(r+n,0)),gi(e,t,n)},fr.inRange=function(e,t,r){return t=Ho(t),r===i?(r=t,t=0):r=Ho(r),function(e,t,i){return e>=Xi(t,i)&&e=-C&&e<=C},fr.isSet=Lo,fr.isString=Fo,fr.isSymbol=Uo,fr.isTypedArray=ko,fr.isUndefined=function(e){return e===i},fr.isWeakMap=function(e){return Oo(e)&&Vs(e)==se},fr.isWeakSet=function(e){return Oo(e)&&Qr(e)==ae},fr.join=function(e,t){return null==e?"":ji.call(e,t)},fr.kebabCase=Tl,fr.last=wa,fr.lastIndexOf=function(e,t,r){var n=null==e?0:e.length;if(!n)return-1;var s=n;return r!==i&&(s=(s=Vo(r))<0?Yi(n+s,0):Xi(s,n-1)),t==t?function(e,t,i){for(var r=i+1;r--;)if(e[r]===t)return r;return r}(e,t,s):mi(e,vi,s,!0)},fr.lowerCase=xl,fr.lowerFirst=bl,fr.lt=Bo,fr.lte=Go,fr.max=function(e){return e&&e.length?Vr(e,Cl,en):i},fr.maxBy=function(e,t){return e&&e.length?Vr(e,Us(t,2),en):i},fr.mean=function(e){return Ti(e,Cl)},fr.meanBy=function(e,t){return Ti(e,Us(t,2))},fr.min=function(e){return e&&e.length?Vr(e,Cl,dn):i},fr.minBy=function(e,t){return e&&e.length?Vr(e,Us(t,2),dn):i},fr.stubArray=jl,fr.stubFalse=Wl,fr.stubObject=function(){return{}},fr.stubString=function(){return""},fr.stubTrue=function(){return!0},fr.multiply=Kl,fr.nth=function(e,t){return e&&e.length?vn(e,Vo(t)):i},fr.noConflict=function(){return Ht._===this&&(Ht._=gt),this},fr.noop=Ul,fr.now=eo,fr.pad=function(e,t,i){e=Xo(e);var r=(t=Vo(t))?Bi(e):0;if(!t||r>=t)return e;var n=(t-r)/2;return Ts(Yt(n),i)+e+Ts(jt(n),i)},fr.padEnd=function(e,t,i){e=Xo(e);var r=(t=Vo(t))?Bi(e):0;return t&&rt){var n=e;e=t,t=n}if(r||e%1||t%1){var s=Ki();return Xi(e+s*(t-e+kt("1e-"+((s+"").length-1))),t)}return En(e,t)},fr.reduce=function(e,t,i){var r=To(e)?ui:_i,n=arguments.length<3;return r(e,Us(t,4),i,n,Gr)},fr.reduceRight=function(e,t,i){var r=To(e)?ci:_i,n=arguments.length<3;return r(e,Us(t,4),i,n,zr)},fr.repeat=function(e,t,r){return t=(r?qs(e,t,r):t===i)?1:Vo(t),wn(Xo(e),t)},fr.replace=function(){var e=arguments,t=Xo(e[0]);return e.length<3?t:t.replace(e[1],e[2])},fr.result=function(e,t,r){var n=-1,s=(t=qn(t,e)).length;for(s||(s=1,e=i);++nC)return[];var i=L,r=Xi(e,L);t=Us(t),e-=L;for(var n=wi(r,t);++i=a)return e;var l=r-Bi(n);if(l<1)return n;var h=o?Kn(o,0,l).join(""):e.slice(0,l);if(s===i)return h+n;if(o&&(l+=h.length-l),Po(s)){if(e.slice(l).search(s)){var u,c=h;for(s.global||(s=rt(s.source,Xo(He.exec(s))+"g")),s.lastIndex=0;u=s.exec(c);)var p=u.index;h=h.slice(0,p===i?l:p)}}else if(e.indexOf(kn(s),l)!=l){var d=h.lastIndexOf(s);d>-1&&(h=h.slice(0,d))}return h+n},fr.unescape=function(e){return(e=Xo(e))&&Ee.test(e)?e.replace(be,Hi):e},fr.uniqueId=function(e){var t=++pt;return Xo(e)+t},fr.upperCase=wl,fr.upperFirst=Sl,fr.each=Ya,fr.eachRight=Xa,fr.first=xa,Fl(fr,function(){var e={};return qr(fr,(function(t,i){ct.call(fr.prototype,i)||(e[i]=t)})),e}(),{chain:!1}),fr.VERSION="4.17.21",ii(["bind","bindKey","curry","curryRight","partial","partialRight"],(function(e){fr[e].placeholder=fr})),ii(["drop","take"],(function(e,t){vr.prototype[e]=function(r){r=r===i?1:Yi(Vo(r),0);var n=this.__filtered__&&!t?new vr(this):this.clone();return n.__filtered__?n.__takeCount__=Xi(r,n.__takeCount__):n.__views__.push({size:Xi(r,L),type:e+(n.__dir__<0?"Right":"")}),n},vr.prototype[e+"Right"]=function(t){return this.reverse()[e](t).reverse()}})),ii(["filter","map","takeWhile"],(function(e,t){var i=t+1,r=i==D||3==i;vr.prototype[e]=function(e){var t=this.clone();return t.__iteratees__.push({iteratee:Us(e,3),type:i}),t.__filtered__=t.__filtered__||r,t}})),ii(["head","last"],(function(e,t){var i="take"+(t?"Right":"");vr.prototype[e]=function(){return this[i](1).value()[0]}})),ii(["initial","tail"],(function(e,t){var i="drop"+(t?"":"Right");vr.prototype[e]=function(){return this.__filtered__?new vr(this):this[i](1)}})),vr.prototype.compact=function(){return this.filter(Cl)},vr.prototype.find=function(e){return this.filter(e).head()},vr.prototype.findLast=function(e){return this.reverse().find(e)},vr.prototype.invokeMap=Sn((function(e,t){return"function"==typeof e?new vr(this):this.map((function(i){return sn(i,e,t)}))})),vr.prototype.reject=function(e){return this.filter(ho(Us(e)))},vr.prototype.slice=function(e,t){e=Vo(e);var r=this;return r.__filtered__&&(e>0||t<0)?new vr(r):(e<0?r=r.takeRight(-e):e&&(r=r.drop(e)),t!==i&&(r=(t=Vo(t))<0?r.dropRight(-t):r.take(t-e)),r)},vr.prototype.takeRightWhile=function(e){return this.reverse().takeWhile(e).reverse()},vr.prototype.toArray=function(){return this.take(L)},qr(vr.prototype,(function(e,t){var r=/^(?:filter|find|map|reject)|While$/.test(t),n=/^(?:head|last)$/.test(t),s=fr[n?"take"+("last"==t?"Right":""):t],a=n||/^find/.test(t);s&&(fr.prototype[t]=function(){var t=this.__wrapped__,o=n?[1]:arguments,l=t instanceof vr,h=o[0],u=l||To(t),c=function(e){var t=s.apply(fr,hi([e],o));return n&&p?t[0]:t};u&&r&&"function"==typeof h&&1!=h.length&&(l=u=!1);var p=this.__chain__,d=!!this.__actions__.length,f=a&&!p,m=l&&!d;if(!a&&u){t=m?t:new vr(this);var g=e.apply(t,o);return g.__actions__.push({func:za,args:[c],thisArg:i}),new yr(g,p)}return f&&m?e.apply(this,o):(g=this.thru(c),f?n?g.value()[0]:g.value():g)})})),ii(["pop","push","shift","sort","splice","unshift"],(function(e){var t=at[e],i=/^(?:push|sort|unshift)$/.test(e)?"tap":"thru",r=/^(?:pop|shift)$/.test(e);fr.prototype[e]=function(){var e=arguments;if(r&&!this.__chain__){var n=this.value();return t.apply(To(n)?n:[],e)}return this[i]((function(i){return t.apply(To(i)?i:[],e)}))}})),qr(vr.prototype,(function(e,t){var i=fr[t];if(i){var r=i.name+"";ct.call(sr,r)||(sr[r]=[]),sr[r].push({name:t,func:i})}})),sr[ms(i,g).name]=[{name:"wrapper",func:i}],vr.prototype.clone=function(){var e=new vr(this.__wrapped__);return e.__actions__=ns(this.__actions__),e.__dir__=this.__dir__,e.__filtered__=this.__filtered__,e.__iteratees__=ns(this.__iteratees__),e.__takeCount__=this.__takeCount__,e.__views__=ns(this.__views__),e},vr.prototype.reverse=function(){if(this.__filtered__){var e=new vr(this);e.__dir__=-1,e.__filtered__=!0}else(e=this.clone()).__dir__*=-1;return e},vr.prototype.value=function(){var e=this.__wrapped__.value(),t=this.__dir__,i=To(e),r=t<0,n=i?e.length:0,s=function(e,t,i){for(var r=-1,n=i.length;++r=this.__values__.length;return{done:e,value:e?i:this.__values__[this.__index__++]}},fr.prototype.plant=function(e){for(var t,r=this;r instanceof gr;){var n=da(r);n.__index__=0,n.__values__=i,t?s.__wrapped__=n:t=n;var s=n;r=r.__wrapped__}return s.__wrapped__=e,t},fr.prototype.reverse=function(){var e=this.__wrapped__;if(e instanceof vr){var t=e;return this.__actions__.length&&(t=new vr(this)),(t=t.reverse()).__actions__.push({func:za,args:[Aa],thisArg:i}),new yr(t,this.__chain__)}return this.thru(Aa)},fr.prototype.toJSON=fr.prototype.valueOf=fr.prototype.value=function(){return Vn(this.__wrapped__,this.__actions__)},fr.prototype.first=fr.prototype.head,Dt&&(fr.prototype[Dt]=function(){return this}),fr}();"function"==typeof define&&"object"==typeof define.amd&&define.amd?(Ht._=Vi,define((function(){return Vi}))):jt?((jt.exports=Vi)._=Vi,Vt._=Vi):Ht._=Vi}).call(e)}));!function(){if("undefined"!=typeof document&&!document.getElementById("a1a3cf8c66313657afed9ed6e7a18d36d461efe2e95a0c8039ec88122543fc7d")){var e=document.createElement("style");e.id="a1a3cf8c66313657afed9ed6e7a18d36d461efe2e95a0c8039ec88122543fc7d",e.textContent='@import"https://at.alicdn.com/t/font_2809422_tyv73h24h8.css";@import"https://at.alicdn.com/t/c/font_2802048_la37g7yevws.css";.axesRenderer{width:100px;height:100px;position:absolute;display:block;bottom:1px;left:10px;background:#ffffff00}.overview-map{width:200px;height:200px;top:10px;left:10px;position:absolute;z-index:1;border:1px #50505090 solid;background-color:#80808030}.statsOutput{position:absolute;opacity:.6;top:1px;left:1px}#navCube{position:absolute;bottom:10px;right:10px;z-index:1;pointer-events:none;cursor:pointer}#navCube:hover{opacity:1}.css3d-navcube .navcube-plane{backface-visibility:hidden;z-index:1;transition:all .2s}.css3d-navcube .navcube-plane.outer{opacity:.7;background:linear-gradient(-45deg,transparent 15px,#efefef 0) bottom right,linear-gradient(-135deg,transparent 15px,#efefef 0) top right,linear-gradient(135deg,transparent 15px,#efefef 0) top left,linear-gradient(45deg,transparent 15px,#efefef 0) bottom left;background-size:70% 70%;background-repeat:no-repeat}.css3d-navcube .navcube-plane.inner{margin:2px;font-size:30px;text-align:center;line-height:100px;background:linear-gradient(-45deg,transparent 14px,#2c7be5 0) bottom right,linear-gradient(-135deg,transparent 14px,#2c7be5 0) top right,linear-gradient(135deg,transparent 14px,#2c7be5 0) top left,linear-gradient(45deg,transparent 14px,#2c7be5 0) bottom left;background-size:70% 70%;background-repeat:no-repeat}.css3d-navcube .navcube-plane:hover{opacity:1!important}.css3d-navcube .navcube-edge{opacity:0;z-index:2;transition:all .2s}.css3d-navcube .navcube-edge:hover{opacity:1!important}.css3d-navcube .navcube-corner{opacity:.7;backface-visibility:hidden;box-sizing:content-box;transform-origin:50% 33%;top:4px;z-index:3;transition:all .2s}.css3d-navcube .navcube-corner-plane{opacity:0;backface-visibility:hidden;transform-origin:bottom;top:-6.5px;z-index:3;transition:all .2s}.css3d-navcube .highlight{opacity:1}.progress-bar{z-index:3;bottom:20%;left:25%;position:absolute;color:#ffffffa0;width:50%;user-select:none}.progress-bar.hidden{display:none}.progress-bar .progress-bar-item{width:100%;text-align:center;padding:2px}.pop-panel{z-index:99999999;top:calc(70% - 100px);left:calc(90% - 160px);position:absolute;background:#ffffff;color:#333;border-radius:4px;width:160px;box-shadow:0 12px 48px 16px #00000008,0 9px 28px #0000000d,0 6px 16px -8px #00000014}.pop-panel .pop-panel-header{font-size:16px;font-weight:bolder;padding:16px 24px 8px;color:#333;border-bottom:1px solid #EFEFEF;cursor:move;user-select:none}.pop-panel .pop-panel-body{display:flex;flex-direction:row;justify-content:space-between;align-items:center;padding:16px 24px}.pop-panel .pop-panel-body .pop-panel-item{display:inline-block;cursor:pointer;margin-right:16px;font-size:16px}.pop-panel .pop-panel-body .pop-panel-item .gemini-viewer-icon{font-size:24px}.pop-panel .pop-panel-body .pop-panel-item:last-child{margin-right:0}.pop-panel .pop-panel-body .pop-panel-item:hover,.pop-panel .pop-panel-body .pop-panel-item.active{color:#2c7be5}.pop-panel .pop-panel-body .pop-panel-item.disable{color:#999;cursor:not-allowed}.model-layout-switch-bar{position:absolute;bottom:0;width:100%;height:24px;background:#ffffff;opacity:.7;display:flex;font-size:14px;line-height:1;overflow-x:scroll;overflow-y:hidden;z-index:1}.model-layout-switch-bar .model-layout-switch-bar-content{white-space:nowrap}.model-layout-switch-bar .model-layout-switch-bar-content .model-layout-switch-item{position:relative;display:inline-block;padding:3px 10px 0;color:#000;height:22px;cursor:pointer;transform:translate(0)}.model-layout-switch-bar .model-layout-switch-bar-content .model-layout-switch-item:before{content:"";position:absolute;inset:0;z-index:-1;background:#fff;border:1px solid #000;border-top:0px}.model-layout-switch-bar .model-layout-switch-bar-content .model-layout-switch-item:hover{color:#8080f0}.model-layout-switch-bar .model-layout-switch-bar-content .model-layout-switch-item:nth-child(n+2){margin-left:-1px}.model-layout-switch-bar .model-layout-switch-bar-content .model-layout-switch-item.activate{color:#fff!important}.model-layout-switch-bar .model-layout-switch-bar-content .model-layout-switch-item.activate:before{background:#212830!important}.model-layout-switch-bar.hidden{display:none}.follow-tooltip{z-index:99999999;position:absolute;left:-500px;padding:6px;background:rgba(25,25,25,.3);color:#fffc;font-size:12px;border-radius:2px}.context-menu{position:absolute;box-sizing:border-box;background-color:#fff;width:200px;padding:2px;border-radius:2px;box-shadow:0 4px 8px #0003,0 6px 20px #00000030;cursor:pointer;z-index:2}.context-menu ul{list-style:none;padding:0}.context-menu ul:last-child li{border-bottom:0px}.context-menu li{height:2rem;padding:.5rem;box-sizing:border-box}.context-menu li:hover{background-color:#d3d3d3}.context-menu li.disabled{color:#ccc;cursor:not-allowed}.context-menu li:last-child{border-bottom:1px solid #000}.toolbar{position:absolute;display:flex;box-sizing:border-box;height:68px;left:50%;bottom:40px;padding:8px 20px;border:rgba(153,153,153,.8) 1px solid;border-radius:4px;background:rgba(255,255,255,.8);transform:translate(-50%);align-items:center;z-index:10;user-select:none}.toolbar .toolbar-group{display:flex;padding:0 2px;box-sizing:border-box}.toolbar .toolbar-group-division{width:1px;background-color:#999c;height:60%}.toolbar .toolbar-menu{display:flex;box-sizing:border-box;flex-direction:column;word-break:break-word;width:50px;height:50px;padding:3px 1px;margin:0 2px;transition:all .3s;cursor:pointer;color:#666;border-radius:4px}.toolbar .toolbar-menu.active{color:#2c7be5}.toolbar .toolbar-menu .icon{width:24px;height:24px;margin:auto;font-size:24px;line-height:normal}.toolbar .toolbar-menu span{display:block;width:100%;margin:auto;font-size:.75em;text-align:center;user-select:none}.toolbar .toolbar-menu:hover{color:#2c7be5;background-color:#fffc}.toolbar .toolbar-parent-menu{position:relative}.toolbar .toolbar-parent-menu:hover .toolbar-sub-menu{display:block}.toolbar .toolbar-parent-menu:hover .toolbar-sub-menu-list{background:rgba(255,255,255,.8)}.toolbar .toolbar-parent-menu:after{content:"";position:absolute;box-sizing:border-box;width:0;height:0;right:2px;top:2px;border-width:4px;border-style:solid;border-top-color:#666;border-right-color:#666;border-bottom-color:transparent;border-left-color:transparent;border-radius:1px}.toolbar .toolbar-sub-menu{display:none;position:absolute;min-width:50px;bottom:100%}.toolbar .toolbar-sub-menu .toolbar-sub-menu-list{margin-bottom:2px;border-radius:4px}.toolbar .toolbar-sub-menu .toolbar-sub-menu-list .toolbar-menu{margin:0}.bottom-bar{position:absolute;bottom:0;right:0;display:flex;color:#666;z-index:3;overflow:hidden;user-select:none}.bottom-bar i{font-size:18px;padding:3px;align-self:center;opacity:.4;cursor:pointer;line-height:1}.bottom-bar i:hover,.bottom-bar i.active{color:#2c7be5;opacity:1}.bottom-bar .fps{width:4rem}.bottom-bar span{align-self:center;padding:4px;font-size:14px}#statistics-tooltip,#tips-tooltip,#cameraInfo-tooltip{position:absolute;right:5px;bottom:30px;background:#666666;color:#fff;padding:8px 8px 5px;font-size:.8rem;border-radius:4px;z-index:3;opacity:.9;user-select:none}#statistics-tooltip p,#tips-tooltip p,#cameraInfo-tooltip p{padding-bottom:3px;margin:3px}#statistics-tooltip p span,#tips-tooltip p span,#cameraInfo-tooltip p span{float:left;margin-right:10px}.hide{display:none}.bim-viewer-spinner{position:absolute;display:flex;top:calc(50% - 20px);left:calc(50% - 20px);opacity:.8;justify-content:center;align-items:center;z-index:10}.bim-viewer-spinner>div{font-size:3rem;animation:spin 1s infinite linear;color:#2c7be5}.bim-viewer-spinner.hidden{display:none}.svg-renderer{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none}.spinner{position:absolute;display:flex;width:100%;height:100%;opacity:.8;background-color:#fff;justify-content:center;align-items:center;z-index:10}.spinner>div{font-size:3rem;animation:spin 1s infinite linear;color:#2c7be5}.spinner.hidden{display:none}.compare-markups-canvas{position:absolute;top:0;left:0;pointer-events:none;user-select:none}.anchor{position:absolute;top:0;left:0;opacity:0;width:20px;height:20px;transform:translate(-50%,-50%);pointer-events:none;user-select:none;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAAAXNSR0IArs4c6QAADjRJREFUeF7tXQnQttUYvq4Zxr5MqBgaihRlKakUU7SYSBQljUhaxijtso2MTCrRn8YoldKIUlIIJRplSyKyqzGyJDSDLGHmMtfvvOb19n7fe7Zn+/7nnnnn+/7/O8t9zrne+5xzn3sh1hCS9GUA20UO9xqS20eWHXQxDpr7BOZHAMyfrBEA8+dllAAJX65BFB0lwCgBxjPAHAyMW8C4BQxCghczOW4B4xYwbgHjFjDqAWYxMJ4BxjNA8fY6iAbGM8B4BhjPAGvKGUDSYwA8FcAmAJ4EYOPw8/6R4upvAH4I4Efh580AbiJ5W2T9wRRbEWcASTuFBX/a1KLfq/Iq/HsKDN8NgLiych+tNzdYAEh6JoAXAdgtLHrrkwfAkuEyAJeTvL4LBkr7HBQAJK0fFtwLH/u0WzpHsfWvMRAMCJK3xlbqutwgACDplVMLf++uJ21B//+aAsL5PecVvQaApB0BHA3AP4dIVwE4maR/9pJ6CYBwij8GwOt7OWvpTJ0O4KQ+3iJ6BwBJXnQvvq9yK4l8hTQIDIbeUG8AsALEfeyi9mpb6AUAJL0bwBtjZ3CFlDuR5LFdj6VzAEi6EMCeXU9ER/1fRHKvjvpe3W1nAJC0NoDPAnhGwxNwF4DbZz6/m/q3u183fNaZ+n3yfw9smL8bALyA5B0N9zO3+U4AIMmL/gUAazU0aKtor/CH5M9K+pD0BAC7hI9Vzk3QnQB2JmkwtEqtA0DS7gAuqTxKn7C96F8EcBXJP1Zuf3Vzkh4WdBI7ADAYat9U9iD5ySZ4X6rNVgEg6TAA76s4wKsBnBa+6X6saY0k+bHJkuFQAM+r2PHhJE+t2N6yTbUGAEkHADiz0sBu8sKTPKdSe0XNSHpNAIKfoGvQgSQ/VKOhRW20AoDwcvfNRcxE/P034Rvvxf97RPnWiki6XwCBJcKjKnS8ZRsvjI0DILzg3VI4IX5gsahf1Ud16vTYghr7DQEMpQ9XGzT9stgoACQ9BMD3Cw9LlhyvI3ljIYharS5pMwAfALBlQcc+3G5K8k8FbXR3BpDkE+1LCpj3+/o+JH2XHxxJsg7ho8FwJZf/S0n65tQINSYBJH0QwEEFXJ9F0gfHwZMkH+heWzCQM0geXFB/yaqNAEDS8QDeUsDwsSRPLKjfu6qS/NbhN49cehfJt+ZWXqpedQCEV70SY8ltSX619kD70J6kbQBcV8DLTrWNS5oAgBc/y4KHZHV+Cia7saqSlNm4tZxV1dFVJzwYc7w/c3BPJPnTzLqDqiZpQwA/yWT6kJpGJdUAEO6/Ft05+vFdSX4mc0IGWU3SCwF8OoN5Xw23qaUPqQkAf/NzbPiOJPnejIkYfBVJRwA4JWMgp5M8JKPePapUAUDBwa+x602NyWmjjYLrcpUDYS0A5Bz87Ky5C8l/tDHRs31IesTUdnUbyd93xMd9g+1CalzCKgfCYgAEp42PJE6edftbtaXeDWrZ59ryJiz6owHcZ4bnuwH8CoD3WFsqfall/r4BIPXtYF+SRc4nNQBwMYA9EgFwCsmjEuskFZe0c7A1tAuZXcpyyC5edvmy7Z4tmBojSe8BcGRiB5eQfGlinf8rXgSA8NL340Tk+knX3/5GXK0l+U3ehievLpmYOXXPBXAqSdsiVKdwi7IUSHlKtiTdqOTFsBQAhwNIPcE3ouaVZN9/q0q9+H6bb4Jsg2BrneNJOoZAVcpUFx9BMtvKqhQAKVE3PFn+9mxd25hD0tMB+PHJLuNtkF3BDyb5nZqdBaOSr4dYB7FNF4W1zQZAppXP/rXNuCS9HMDHYmercrm9SX68ZpvBvOzsxDazrYdKAJD64nc1SVvTViNJbwdwXLUG8xo6juQ78qrOryXJ1s0phqbZL4UlALClj2PwxNJuJG3gUYXCKf/zVRorb+RZJC26q5AkB8Bw5JFYupnkprGFp8tlASBD8/dbAOuRrGK6XeFZNWeuFtV5HMlfLCoU8/dgcv5LAI+MKR/KZGkGcwHg+6rvrbF0Acl9YgsvVy5c8+z1k3JdqtH1ojasDfWj1j8XFYz5uySbkr0ipmwocxTJ5HeFXAD4TvyqBOaq2blL8jaya0LfbRY9geSba3SY4UdxHslk3UcuAL4NwFavsbRODefHgifUWD5Ly1lP4GtusbIoOM/aiTWWbiS5eWzhSblkAEiy6PVeF6u3vpbkc1IZm1e+59/+Ccvnktyv0ni/AuDZkW1ZK/hYkta0RlMOAGySlKIXr6L5G8C3f3rSn1/j7SBDM2gP4yR7zBwApKp/Nybp94IiknQBgL2LGmmvctZ+PMuepI1CuNpYzpPVwjkAsJbKzpAxdBfJB8UUXK6MJLfxawDFbZXyElnf9gXrRZZdtpikvwCIDVJxDsn9U/rNAYBdtWJ17j8n6QALRSRpXwDnFTXSfuUqyiFJDnDx+Ej2ryeZ5IrGEEc/sv3VxbYA8IDICteRjD3ELNlkBRezSHarFnsbSavLi0jStQC2jWzkrwC+FVl2dTEDINdGPaafi0m+LKbggi2gSR5L2VuqftEr3aRRSZ8AUGT0sdwAmwZAsfWqpAcDaMw7tqnVB3ALyVjRvZz0y7W2jhpa0wAoFoOSbL/XiPVQ1AzlF7qbpA0+i0iSjVzeWdTIMpWbBsABJM8qYV6SM378oKSNDuuuXWptLMlexY2Fi2kaAMUeP5K2BvC1DhexpOvNSy2Lm1aAjQAoWd7Fddd4AIxbQKHDydC3gPEQuFhKLFti6IfA8RpYDoBBXwNHRVA5ABpXBNm2P4X8DhCbgLGWKjjVPCplPE2VPZpkitncXD4SVcF2VklKX5fzGGRdc2yI91qPQQ4112oQ5QqoKL4BmIfEx6AbSPqtJppyAGBPYKdxi6Faz8F+DrXnrgNPDoFuJblBDUYTn4PPJ+mX02jKAYDTnJwQ3QOwYWnM/vBNSAFeAnuNFE1+l5/HRchVkBI36U0kk0LR5QAgNbbNYSRXlU5z0xqxUv5m6tcyCXPM4ZTQ8cma1xwAOAiU/eZjkzNfSdK++sW0BhqF2vYyNiycnW7WT3W7TwZAEMc2e35Kwoo+vEYWjwFIgZpm4c5O8oeEOf4eyeR8BbkASL2WVfOi7bkUqOkYkur1nOV9lQsA5/M9KQGdZ5MsCZb8v64kbQXgcwAemtB/G0V9/96+VuAISX5GTzHwPIbkyakDzQVAqm+ADTq8P9VyDrXPnKVQn2izWgEjgnOoz1kpQTeTfQI8eVkACOeArt3DHSjRWUT6QNW2uDC3/XYPD0yOASL+C701NkCE3wRSE0E1ESLGV8yuAkVUue9Pi7DBhIgJUqAvQaIch/+iFmMG2AFzz9p5DQYVJCoAINVP0NWqOIvObvwhcIStZ5uOHeAI3zZ0KXYBnzOGnKwiyf6A0/1mHwIDAByBs2+BIq2qPrABIHjhz2wqrP0gA0UGEPQ1VKyB4Ouif+Y6ldox03kMrGRpNJ/BIEPFBgD4abi3waKDZ7HtCV6ckMLuUgCfAuCUbQZBoxSCWQ8zWHQAQU64eN8gdmg7J2BwNbO7mT8T+wK7nv3ZH5L+2RqF3IKOC5jk1RuypMc+FC05nqIzwKTVjLBxk6qXk9yttdnuYUeSHA/Qip9UygoLN9tJFQAEKZBrvbpiEkSmrmBBQslia+sJrzUBYL11btKoRq6GqQvSZvmM+D8T9vqZNCpIASeNyk0bt2ITRs6575ckkOxn2rip80DOgXB19TFx5EIZVCVP0HQv1baACgfCSRMrNoFkYcJIz0+Vg1+jAAhbgS1TrdbMpWTjxtyO2qpXwZztRJK2yK5K1SXAlCS4MCRtymV4xSSULEgQOZk7J63aK3cil6vXGACCJEjxIprH5xnOAdRVbsHSCZfkEDE26z6ooK1kb5+UvpoGwNoh0uVaKUzNlPWTs0Oh31jQRutVg3rXvoGpCSGneb0TgCOt3tHUABoFQJAC9iNMil03Z7AOhGzzr1Wpdu9NTdxS7YZXPTt0HJoQUHup5rYgeUOTY2gcAAEEuwO4pMJAbIhhIJxWO/NYKW/BmMOL7k+NZBZ7kGzcIbYVAAQQOJ9fdn67mQWyMYZBcE7pwtWoH8y4vPDJjhlL9H84yRSXsOxhtAaAAIIDbFSRze09K14dJMIVtUzOY3kLptu7hG98SoavRV1Uy66yqCP/vVUABBDkGJMuGouTUvmw6Dy/lzV1aApZPPx66XzEPtylJHVaNAb/PTv/X0zj88q0DoAAApuSebFSHB9SxugAy84AbjAU5SoIMfu96M48Xhz4eolB+IFnu5IcwCmTM122EwAEENgY48MJVjq5Y7wLwO0zH+fimfyf2103fNaZ+n3yf7Gx+nP5s/XRfiQ7iYfcGQAmsyXJOX9LFCW5E9+HemeQPLhLRjoHQJAGqV5GXc5Zrb6z073WYqCTQ+BSzAezMnsd71hzgD1s6yoAJ5P0z86pFxJgehYk2ajkmAYPiF1Nug96J5E8vSsGenMLWDQBQZ1qEBgMK4G86F783uU96J0EmJEG3g6GvC30StwPRgLMMirJzie+i9t8OjZjaVeSww9Xzm9sHcT5XTER22+vJcAcIFiBNAGCtXF9Iiu2Jgvv6B6DoEEBYGZ7sErZEsGA2KSj2b7Z33QvPMmkGL0d8XuPbgcLgDlnBYet23TqU3ursGh3WJzJx2HZenGVKwHTigDAnK3C7/GWCk8OPye/xya8dAJGJ6ryN9yf1b+nZuYuWZi26q5IAMybvJAhNfbcUCXpY1uLWNLPCID5szcCoARVfaw7SoD5qzJKgFEC9PH7Wp+nUQKMEiAlpN14Bqj/Hey2xVECjBJglABzMDAeAsdDYLeiua3exy1g3ALGLWDcAlY7dMTQGnML+A8qtnUcTFYqYAAAAABJRU5ErkJggg==) no-repeat center center;background-size:100% 100%;background-blend-mode:lighten;filter:invert(61%) sepia(87%) saturate(845%) hue-rotate(120deg) brightness(94%) contrast(101%);transition:opacity .5s ease-in-out}.anchor.active{opacity:1}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0deg)}to{-webkit-transform:rotate(360deg)}}\n',document.head.appendChild(e)}}();var fLe=fetch;window.fetch=(...e)=>Promise.resolve(fLe(...e));var l4r=kn(y9(),1),c4r=kn(zce(),1),u4r=kn(jce(),1),Ft={};tw(Ft,{ACESFilmicToneMapping:()=>Ohe,AddEquation:()=>Ma,AddOperation:()=>Mhe,AdditiveAnimationBlendMode:()=>JU,AdditiveBlending:()=>yp,AlphaFormat:()=>Bhe,AlwaysDepth:()=>bhe,AlwaysStencilFunc:()=>Jhe,AmbientLight:()=>Pl,AmbientLightProbe:()=>cU,AnimationClip:()=>lo,AnimationLoader:()=>tU,AnimationMixer:()=>vU,AnimationObjectGroup:()=>mU,AnimationUtils:()=>uTt,ArcCurve:()=>bg,ArrayCamera:()=>FD,ArrowHelper:()=>Hg,Audio:()=>rC,AudioAnalyser:()=>dU,AudioContext:()=>_x,AudioListener:()=>hU,AudioLoader:()=>oU,AxesHelper:()=>CU,BackSide:()=>Wn,BasicDepthPacking:()=>Zhe,BasicShadowMap:()=>sft,Bone:()=>Ml,BooleanKeyframeTrack:()=>Np,Box2:()=>ns,Box3:()=>Dt,Box3Helper:()=>MU,BoxBufferGeometry:()=>AU,BoxGeometry:()=>io,BoxHelper:()=>Fg,BufferAttribute:()=>Wt,BufferGeometry:()=>lt,BufferGeometryLoader:()=>tC,ByteType:()=>Nhe,Cache:()=>Pg,Camera:()=>xp,CameraHelper:()=>Mx,CanvasTexture:()=>Z4,CapsuleBufferGeometry:()=>OU,CapsuleGeometry:()=>Ig,CatmullRomCurve3:()=>kD,CineonToneMapping:()=>Ahe,CircleBufferGeometry:()=>PU,CircleGeometry:()=>_g,ClampToEdgeWrapping:()=>mn,Clock:()=>Nl,Color:()=>je,ColorKeyframeTrack:()=>Ex,ColorManagement:()=>Qs,CompressedArrayTexture:()=>$4,CompressedTexture:()=>px,CompressedTextureLoader:()=>rU,ConeBufferGeometry:()=>NU,ConeGeometry:()=>Sg,CubeCamera:()=>ND,CubeReflectionMapping:()=>nf,CubeRefractionMapping:()=>sf,CubeTexture:()=>Tg,CubeTextureLoader:()=>bx,CubeUVReflectionMapping:()=>jy,CubicBezierCurve:()=>dx,CubicBezierCurve3:()=>GD,CubicInterpolant:()=>$D,CullFaceBack:()=>QH,CullFaceFront:()=>phe,CullFaceFrontBack:()=>nft,CullFaceNone:()=>hhe,Curve:()=>Aa,CurvePath:()=>zD,CustomBlending:()=>Hp,CustomToneMapping:()=>Phe,CylinderBufferGeometry:()=>LU,CylinderGeometry:()=>Cl,Cylindrical:()=>xU,Data3DTexture:()=>cx,DataArrayTexture:()=>Oy,DataTexture:()=>wl,DataTextureLoader:()=>Lg,DataUtils:()=>Xy,DecrementStencilOp:()=>mft,DecrementWrapStencilOp:()=>vft,DefaultLoadingManager:()=>co,DepthFormat:()=>rf,DepthStencilFormat:()=>Ep,DepthTexture:()=>of,DirectionalLight:()=>ta,DirectionalLightHelper:()=>Rx,DiscreteInterpolant:()=>ZD,DodecahedronBufferGeometry:()=>FU,DodecahedronGeometry:()=>wg,DoubleSide:()=>yi,DstAlphaFactor:()=>Vy,DstColorFactor:()=>zy,DynamicCopyUsage:()=>Oft,DynamicDrawUsage:()=>wft,DynamicReadUsage:()=>Dft,EdgesGeometry:()=>Mp,EllipseCurve:()=>Rp,EqualDepth:()=>Ihe,EqualStencilFunc:()=>bft,EquirectangularReflectionMapping:()=>vg,EquirectangularRefractionMapping:()=>ix,Euler:()=>xr,EventDispatcher:()=>Vo,ExtrudeBufferGeometry:()=>HU,ExtrudeGeometry:()=>Dp,FileLoader:()=>hi,Float16BufferAttribute:()=>H4,Float32BufferAttribute:()=>dt,Float64BufferAttribute:()=>U4,FloatType:()=>Da,Fog:()=>Bu,FogExp2:()=>Ly,FramebufferTexture:()=>X4,FrontSide:()=>tn,Frustum:()=>ea,GLBufferAttribute:()=>EU,GLSL1:()=>Nft,GLSL3:()=>R4,GreaterDepth:()=>She,GreaterEqualDepth:()=>_he,GreaterEqualStencilFunc:()=>Sft,GreaterStencilFunc:()=>Ift,GridHelper:()=>wx,Group:()=>ur,HalfFloatType:()=>Go,HemisphereLight:()=>hf,HemisphereLightHelper:()=>wU,HemisphereLightProbe:()=>lU,IcosahedronBufferGeometry:()=>UU,IcosahedronGeometry:()=>Mg,ImageBitmapLoader:()=>Ix,ImageLoader:()=>Ng,ImageUtils:()=>lx,IncrementStencilOp:()=>fft,IncrementWrapStencilOp:()=>gft,InstancedBufferAttribute:()=>wp,InstancedBufferGeometry:()=>eC,InstancedInterleavedBuffer:()=>TU,InstancedMesh:()=>rn,Int16BufferAttribute:()=>L4,Int32BufferAttribute:()=>F4,Int8BufferAttribute:()=>O4,IntType:()=>Fhe,InterleavedBuffer:()=>Sp,InterleavedBufferAttribute:()=>no,Interpolant:()=>Pp,InterpolateDiscrete:()=>bp,InterpolateLinear:()=>Uu,InterpolateSmooth:()=>MD,InvertStencilOp:()=>yft,KeepStencilOp:()=>DD,KeyframeTrack:()=>jo,LOD:()=>BD,LatheBufferGeometry:()=>BU,LatheGeometry:()=>lf,Layers:()=>Py,LessDepth:()=>xhe,LessEqualDepth:()=>AD,LessEqualStencilFunc:()=>xft,LessStencilFunc:()=>Eft,Light:()=>Ol,LightProbe:()=>Uy,Line:()=>Ir,Line3:()=>Pa,LineBasicMaterial:()=>vr,LineCurve:()=>Hy,LineCurve3:()=>VD,LineDashedMaterial:()=>Op,LineLoop:()=>Fy,LineSegments:()=>ci,LinearEncoding:()=>Rl,LinearFilter:()=>li,LinearInterpolant:()=>Tx,LinearMipMapLinearFilter:()=>uft,LinearMipMapNearestFilter:()=>cft,LinearMipmapLinearFilter:()=>Ca,LinearMipmapNearestFilter:()=>Ug,LinearSRGBColorSpace:()=>Ay,LinearToneMapping:()=>Dhe,Loader:()=>ui,LoaderUtils:()=>Vs,LoadingManager:()=>Fp,LoopOnce:()=>Yhe,LoopPingPong:()=>$he,LoopRepeat:()=>Xhe,LuminanceAlphaFormat:()=>khe,LuminanceFormat:()=>oC,MOUSE:()=>sC,Material:()=>jr,MaterialLoader:()=>By,MathUtils:()=>_r,Matrix3:()=>Ni,Matrix4:()=>Be,MaxEquation:()=>i4,Mesh:()=>rt,MeshBasicMaterial:()=>lr,MeshDepthMaterial:()=>_p,MeshDistanceMaterial:()=>hx,MeshLambertMaterial:()=>ao,MeshMatcapMaterial:()=>XD,MeshNormalMaterial:()=>uf,MeshPhongMaterial:()=>bs,MeshPhysicalMaterial:()=>Al,MeshStandardMaterial:()=>Vu,MeshToonMaterial:()=>YD,MinEquation:()=>r4,MirroredRepeatWrapping:()=>Tp,MixOperation:()=>Rhe,MultiplyBlending:()=>t4,MultiplyOperation:()=>Ax,NearestFilter:()=>Ci,NearestMipMapLinearFilter:()=>lft,NearestMipMapNearestFilter:()=>oft,NearestMipmapLinearFilter:()=>gp,NearestMipmapNearestFilter:()=>af,NeverDepth:()=>Ehe,NeverStencilFunc:()=>Tft,NoBlending:()=>Ui,NoColorSpace:()=>hft,NoToneMapping:()=>Fu,NormalAnimationBlendMode:()=>cC,NormalBlending:()=>fg,NotEqualDepth:()=>whe,NotEqualStencilFunc:()=>_ft,NumberKeyframeTrack:()=>Pc,Object3D:()=>sr,ObjectLoader:()=>aU,ObjectSpaceNormalMap:()=>Khe,OctahedronBufferGeometry:()=>kU,OctahedronGeometry:()=>cf,OneFactor:()=>Gy,OneMinusDstAlphaFactor:()=>vhe,OneMinusDstColorFactor:()=>yhe,OneMinusSrcAlphaFactor:()=>KU,OneMinusSrcColorFactor:()=>ghe,OrthographicCamera:()=>ki,PCFShadowMap:()=>ZU,PCFSoftShadowMap:()=>ky,PMREMGenerator:()=>Ip,Path:()=>Gu,PerspectiveCamera:()=>kr,Plane:()=>xi,PlaneBufferGeometry:()=>GU,PlaneGeometry:()=>is,PlaneHelper:()=>DU,PointLight:()=>Nc,PointLightHelper:()=>SU,Points:()=>nn,PointsMaterial:()=>qn,PolarGridHelper:()=>RU,PolyhedronBufferGeometry:()=>VU,PolyhedronGeometry:()=>Oc,PositionalAudio:()=>pU,PropertyBinding:()=>Mr,PropertyMixer:()=>iC,QuadraticBezierCurve:()=>fx,QuadraticBezierCurve3:()=>mx,Quaternion:()=>Hr,QuaternionKeyframeTrack:()=>Oa,QuaternionLinearInterpolant:()=>KD,RED_GREEN_RGTC2_Format:()=>S4,RED_RGTC1_Format:()=>qhe,REVISION:()=>nC,RGBADepthPacking:()=>qy,RGBAFormat:()=>Gs,RGBAIntegerFormat:()=>jhe,RGBA_ASTC_10x10_Format:()=>b4,RGBA_ASTC_10x5_Format:()=>y4,RGBA_ASTC_10x6_Format:()=>T4,RGBA_ASTC_10x8_Format:()=>E4,RGBA_ASTC_12x10_Format:()=>x4,RGBA_ASTC_12x12_Format:()=>I4,RGBA_ASTC_4x4_Format:()=>u4,RGBA_ASTC_5x4_Format:()=>h4,RGBA_ASTC_5x5_Format:()=>p4,RGBA_ASTC_6x5_Format:()=>d4,RGBA_ASTC_6x6_Format:()=>f4,RGBA_ASTC_8x5_Format:()=>m4,RGBA_ASTC_8x6_Format:()=>g4,RGBA_ASTC_8x8_Format:()=>v4,RGBA_BPTC_Format:()=>RD,RGBA_ETC2_EAC_Format:()=>c4,RGBA_PVRTC_2BPPV1_Format:()=>o4,RGBA_PVRTC_4BPPV1_Format:()=>a4,RGBA_S3TC_DXT1_Format:()=>_D,RGBA_S3TC_DXT3_Format:()=>SD,RGBA_S3TC_DXT5_Format:()=>wD,RGB_ETC1_Format:()=>Whe,RGB_ETC2_Format:()=>l4,RGB_PVRTC_2BPPV1_Format:()=>s4,RGB_PVRTC_4BPPV1_Format:()=>n4,RGB_S3TC_DXT1_Format:()=>ID,RGFormat:()=>Vhe,RGIntegerFormat:()=>zhe,RawShaderMaterial:()=>qD,Ray:()=>zo,Raycaster:()=>Lc,RectAreaLight:()=>JD,RedFormat:()=>lC,RedIntegerFormat:()=>Ghe,ReinhardToneMapping:()=>Che,RepeatWrapping:()=>gn,ReplaceStencilOp:()=>dft,ReverseSubtractEquation:()=>fhe,RingBufferGeometry:()=>zU,RingGeometry:()=>Dg,SIGNED_RED_GREEN_RGTC2_Format:()=>w4,SIGNED_RED_RGTC1_Format:()=>_4,SRGBColorSpace:()=>Dc,Scene:()=>Nn,ShaderChunk:()=>Xr,ShaderLib:()=>Cc,ShaderMaterial:()=>Yt,ShadowMaterial:()=>WD,Shape:()=>ro,ShapeBufferGeometry:()=>jU,ShapeGeometry:()=>Cp,ShapePath:()=>Dx,ShapeUtils:()=>rs,ShortType:()=>Lhe,Skeleton:()=>Dl,SkeletonHelper:()=>_U,SkinnedMesh:()=>ku,Source:()=>Ac,Sphere:()=>qi,SphereBufferGeometry:()=>WU,SphereGeometry:()=>so,Spherical:()=>pf,SphericalHarmonics3:()=>QD,SplineCurve:()=>xg,SpotLight:()=>zu,SpotLightHelper:()=>IU,Sprite:()=>UD,SpriteMaterial:()=>Eg,SrcAlphaFactor:()=>Cx,SrcAlphaSaturateFactor:()=>The,SrcColorFactor:()=>mhe,StaticCopyUsage:()=>Aft,StaticDrawUsage:()=>sx,StaticReadUsage:()=>Mft,StereoCamera:()=>uU,StreamCopyUsage:()=>Pft,StreamDrawUsage:()=>Rft,StreamReadUsage:()=>Cft,StringKeyframeTrack:()=>Lp,SubtractEquation:()=>dhe,SubtractiveBlending:()=>e4,TOUCH:()=>ift,TangentSpaceNormalMap:()=>ff,TetrahedronBufferGeometry:()=>qU,TetrahedronGeometry:()=>Cg,Texture:()=>Bi,TextureLoader:()=>xs,TorusBufferGeometry:()=>YU,TorusGeometry:()=>Ap,TorusKnotBufferGeometry:()=>XU,TorusKnotGeometry:()=>Ag,Triangle:()=>un,TriangleFanDrawMode:()=>Wy,TriangleStripDrawMode:()=>Px,TrianglesDrawMode:()=>QU,TubeBufferGeometry:()=>$U,TubeGeometry:()=>Og,TwoPassDoubleSide:()=>aft,UVMapping:()=>aC,Uint16BufferAttribute:()=>yg,Uint32BufferAttribute:()=>ux,Uint8BufferAttribute:()=>P4,Uint8ClampedBufferAttribute:()=>N4,Uniform:()=>Sx,UniformsGroup:()=>yU,UniformsLib:()=>At,UniformsUtils:()=>hn,UnsignedByteType:()=>Hu,UnsignedInt248Type:()=>vp,UnsignedIntType:()=>tf,UnsignedShort4444Type:()=>Hhe,UnsignedShort5551Type:()=>Uhe,UnsignedShortType:()=>Ox,VSMShadowMap:()=>wy,Vector2:()=>le,Vector3:()=>A,Vector4:()=>Vr,VectorKeyframeTrack:()=>oo,VideoTexture:()=>Y4,WebGL1Renderer:()=>HD,WebGL3DRenderTarget:()=>C4,WebGLArrayRenderTarget:()=>D4,WebGLCubeRenderTarget:()=>LD,WebGLMultipleRenderTargets:()=>A4,WebGLRenderTarget:()=>zr,WebGLRenderer:()=>Ll,WebGLUtils:()=>lpe,WireframeGeometry:()=>jD,WrapAroundEnding:()=>nx,ZeroCurvatureEnding:()=>hg,ZeroFactor:()=>df,ZeroSlopeEnding:()=>pg,ZeroStencilOp:()=>pft,_SRGBAFormat:()=>OD,sRGBEncoding:()=>gr});var nC="149",sC={LEFT:0,MIDDLE:1,RIGHT:2,ROTATE:0,DOLLY:1,PAN:2},ift={ROTATE:0,PAN:1,DOLLY_PAN:2,DOLLY_ROTATE:3},hhe=0,QH=1,phe=2,nft=3,sft=0,ZU=1,ky=2,wy=3,tn=0,Wn=1,yi=2,aft=2,Ui=0,fg=1,yp=2,e4=3,t4=4,Hp=5,Ma=100,dhe=101,fhe=102,r4=103,i4=104,df=200,Gy=201,mhe=202,ghe=203,Cx=204,KU=205,Vy=206,vhe=207,zy=208,yhe=209,The=210,Ehe=0,bhe=1,xhe=2,AD=3,Ihe=4,_he=5,She=6,whe=7,Ax=0,Rhe=1,Mhe=2,Fu=0,Dhe=1,Che=2,Ahe=3,Ohe=4,Phe=5,aC=300,nf=301,sf=302,vg=303,ix=304,jy=306,gn=1e3,mn=1001,Tp=1002,Ci=1003,af=1004,oft=1004,gp=1005,lft=1005,li=1006,Ug=1007,cft=1007,Ca=1008,uft=1008,Hu=1009,Nhe=1010,Lhe=1011,Ox=1012,Fhe=1013,tf=1014,Da=1015,Go=1016,Hhe=1017,Uhe=1018,vp=1020,Bhe=1021,Gs=1023,oC=1024,khe=1025,rf=1026,Ep=1027,lC=1028,Ghe=1029,Vhe=1030,zhe=1031,jhe=1033,ID=33776,_D=33777,SD=33778,wD=33779,n4=35840,s4=35841,a4=35842,o4=35843,Whe=36196,l4=37492,c4=37496,u4=37808,h4=37809,p4=37810,d4=37811,f4=37812,m4=37813,g4=37814,v4=37815,y4=37816,T4=37817,E4=37818,b4=37819,x4=37820,I4=37821,RD=36492,qhe=36283,_4=36284,S4=36285,w4=36286,Yhe=2200,Xhe=2201,$he=2202,bp=2300,Uu=2301,MD=2302,hg=2400,pg=2401,nx=2402,cC=2500,JU=2501,QU=0,Px=1,Wy=2,Rl=3e3,gr=3001,Zhe=3200,qy=3201,ff=0,Khe=1,hft="",Dc="srgb",Ay="srgb-linear",pft=0,DD=7680,dft=7681,fft=7682,mft=7683,gft=34055,vft=34056,yft=5386,Tft=512,Eft=513,bft=514,xft=515,Ift=516,_ft=517,Sft=518,Jhe=519,sx=35044,wft=35048,Rft=35040,Mft=35045,Dft=35049,Cft=35041,Aft=35046,Oft=35050,Pft=35042,Nft="100",R4="300 es",OD=1035,Vo=class{addEventListener(e,t){void 0===this._listeners&&(this._listeners={});let i=this._listeners;void 0===i[e]&&(i[e]=[]),-1===i[e].indexOf(t)&&i[e].push(t)}hasEventListener(e,t){if(void 0===this._listeners)return!1;let i=this._listeners;return void 0!==i[e]&&-1!==i[e].indexOf(t)}removeEventListener(e,t){if(void 0===this._listeners)return;let i=this._listeners[e];if(void 0!==i){let e=i.indexOf(t);-1!==e&&i.splice(e,1)}}dispatchEvent(e){if(void 0===this._listeners)return;let t=this._listeners[e.type];if(void 0!==t){e.target=this;let i=t.slice(0);for(let t=0,r=i.length;t>8&255]+Js[e>>16&255]+Js[e>>24&255]+"-"+Js[255&t]+Js[t>>8&255]+"-"+Js[t>>16&15|64]+Js[t>>24&255]+"-"+Js[63&i|128]+Js[i>>8&255]+"-"+Js[i>>16&255]+Js[i>>24&255]+Js[255&r]+Js[r>>8&255]+Js[r>>16&255]+Js[r>>24&255]).toLowerCase()}function ts(e,t,i){return Math.max(t,Math.min(i,e))}function eB(e,t){return(e%t+t)%t}function Lft(e,t,i,r,n){return r+(e-t)*(n-r)/(i-t)}function Fft(e,t,i){return e!==t?(i-e)/(t-e):0}function Qb(e,t,i){return(1-i)*e+i*t}function Hft(e,t,i,r){return Qb(e,t,1-Math.exp(-i*r))}function Uft(e,t=1){return t-Math.abs(eB(e,2*t)-t)}function Bft(e,t,i){return e<=t?0:e>=i?1:(e=(e-t)/(i-t))*e*(3-2*e)}function kft(e,t,i){return e<=t?0:e>=i?1:(e=(e-t)/(i-t))*e*e*(e*(6*e-15)+10)}function Gft(e,t){return e+Math.floor(Math.random()*(t-e+1))}function Vft(e,t){return e+Math.random()*(t-e)}function zft(e){return e*(.5-Math.random())}function jft(e){void 0!==e&&(Wce=e);let t=Wce+=1831565813;return t=Math.imul(t^t>>>15,1|t),t^=t+Math.imul(t^t>>>7,61|t),((t^t>>>14)>>>0)/4294967296}function Wft(e){return e*mg}function qft(e){return e*ax}function M4(e){return 0==(e&e-1)&&0!==e}function Qhe(e){return Math.pow(2,Math.ceil(Math.log(e)/Math.LN2))}function PD(e){return Math.pow(2,Math.floor(Math.log(e)/Math.LN2))}function Yft(e,t,i,r,n){let s=Math.cos,a=Math.sin,o=s(i/2),l=a(i/2),h=s((t+r)/2),u=a((t+r)/2),c=s((t-r)/2),p=a((t-r)/2),d=s((r-t)/2),f=a((r-t)/2);switch(n){case"XYX":e.set(o*u,l*c,l*p,o*h);break;case"YZY":e.set(l*p,o*u,l*c,o*h);break;case"ZXZ":e.set(l*c,l*p,o*u,o*h);break;case"XZX":e.set(o*u,l*f,l*d,o*h);break;case"YXY":e.set(l*d,o*u,l*f,o*h);break;case"ZYZ":e.set(l*f,l*d,o*u,o*h);break;default:console.warn("THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: "+n)}}function mp(e,t){switch(t.constructor){case Float32Array:return e;case Uint16Array:return e/65535;case Uint8Array:return e/255;case Int16Array:return Math.max(e/32767,-1);case Int8Array:return Math.max(e/127,-1);default:throw new Error("Invalid component type.")}}function cn(e,t){switch(t.constructor){case Float32Array:return e;case Uint16Array:return Math.round(65535*e);case Uint8Array:return Math.round(255*e);case Int16Array:return Math.round(32767*e);case Int8Array:return Math.round(127*e);default:throw new Error("Invalid component type.")}}var _r=Object.freeze({__proto__:null,DEG2RAD:mg,RAD2DEG:ax,ceilPowerOfTwo:Qhe,clamp:ts,damp:Hft,degToRad:Wft,denormalize:mp,euclideanModulo:eB,floorPowerOfTwo:PD,generateUUID:ko,inverseLerp:Fft,isPowerOfTwo:M4,lerp:Qb,mapLinear:Lft,normalize:cn,pingpong:Uft,radToDeg:qft,randFloat:Vft,randFloatSpread:zft,randInt:Gft,seededRandom:jft,setQuaternionFromProperEuler:Yft,smootherstep:kft,smoothstep:Bft}),le=class{constructor(e=0,t=0){le.prototype.isVector2=!0,this.x=e,this.y=t}get width(){return this.x}set width(e){this.x=e}get height(){return this.y}set height(e){this.y=e}set(e,t){return this.x=e,this.y=t,this}setScalar(e){return this.x=e,this.y=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setComponent(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)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y)}copy(e){return this.x=e.x,this.y=e.y,this}add(e){return this.x+=e.x,this.y+=e.y,this}addScalar(e){return this.x+=e,this.y+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this}subScalar(e){return this.x-=e,this.y-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this}multiply(e){return this.x*=e.x,this.y*=e.y,this}multiplyScalar(e){return this.x*=e,this.y*=e,this}divide(e){return this.x/=e.x,this.y/=e.y,this}divideScalar(e){return this.multiplyScalar(1/e)}applyMatrix3(e){let t=this.x,i=this.y,r=e.elements;return this.x=r[0]*t+r[3]*i+r[6],this.y=r[1]*t+r[4]*i+r[7],this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this}clamp(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this}clampLength(e,t){let i=this.length();return this.divideScalar(i||1).multiplyScalar(Math.max(e,Math.min(t,i)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}roundToZero(){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(){return this.x=-this.x,this.y=-this.y,this}dot(e){return this.x*e.x+this.y*e.y}cross(e){return this.x*e.y-this.y*e.x}lengthSq(){return this.x*this.x+this.y*this.y}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)}normalize(){return this.divideScalar(this.length()||1)}angle(){return Math.atan2(-this.y,-this.x)+Math.PI}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){let t=this.x-e.x,i=this.y-e.y;return t*t+i*i}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this}lerpVectors(e,t,i){return this.x=e.x+(t.x-e.x)*i,this.y=e.y+(t.y-e.y)*i,this}equals(e){return e.x===this.x&&e.y===this.y}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this}rotateAround(e,t){let i=Math.cos(t),r=Math.sin(t),n=this.x-e.x,s=this.y-e.y;return this.x=n*i-s*r+e.x,this.y=n*r+s*i+e.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y}},Ni=class{constructor(){Ni.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1]}set(e,t,i,r,n,s,a,o,l){let h=this.elements;return h[0]=e,h[1]=r,h[2]=a,h[3]=t,h[4]=n,h[5]=o,h[6]=i,h[7]=s,h[8]=l,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(e){let t=this.elements,i=e.elements;return t[0]=i[0],t[1]=i[1],t[2]=i[2],t[3]=i[3],t[4]=i[4],t[5]=i[5],t[6]=i[6],t[7]=i[7],t[8]=i[8],this}extractBasis(e,t,i){return e.setFromMatrix3Column(this,0),t.setFromMatrix3Column(this,1),i.setFromMatrix3Column(this,2),this}setFromMatrix4(e){let t=e.elements;return this.set(t[0],t[4],t[8],t[1],t[5],t[9],t[2],t[6],t[10]),this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){let i=e.elements,r=t.elements,n=this.elements,s=i[0],a=i[3],o=i[6],l=i[1],h=i[4],u=i[7],c=i[2],p=i[5],d=i[8],f=r[0],m=r[3],g=r[6],y=r[1],v=r[4],T=r[7],x=r[2],b=r[5],_=r[8];return n[0]=s*f+a*y+o*x,n[3]=s*m+a*v+o*b,n[6]=s*g+a*T+o*_,n[1]=l*f+h*y+u*x,n[4]=l*m+h*v+u*b,n[7]=l*g+h*T+u*_,n[2]=c*f+p*y+d*x,n[5]=c*m+p*v+d*b,n[8]=c*g+p*T+d*_,this}multiplyScalar(e){let t=this.elements;return t[0]*=e,t[3]*=e,t[6]*=e,t[1]*=e,t[4]*=e,t[7]*=e,t[2]*=e,t[5]*=e,t[8]*=e,this}determinant(){let e=this.elements,t=e[0],i=e[1],r=e[2],n=e[3],s=e[4],a=e[5],o=e[6],l=e[7],h=e[8];return t*s*h-t*a*l-i*n*h+i*a*o+r*n*l-r*s*o}invert(){let e=this.elements,t=e[0],i=e[1],r=e[2],n=e[3],s=e[4],a=e[5],o=e[6],l=e[7],h=e[8],u=h*s-a*l,c=a*o-h*n,p=l*n-s*o,d=t*u+i*c+r*p;if(0===d)return this.set(0,0,0,0,0,0,0,0,0);let f=1/d;return e[0]=u*f,e[1]=(r*l-h*i)*f,e[2]=(a*i-r*s)*f,e[3]=c*f,e[4]=(h*t-r*o)*f,e[5]=(r*n-a*t)*f,e[6]=p*f,e[7]=(i*o-l*t)*f,e[8]=(s*t-i*n)*f,this}transpose(){let e,t=this.elements;return e=t[1],t[1]=t[3],t[3]=e,e=t[2],t[2]=t[6],t[6]=e,e=t[5],t[5]=t[7],t[7]=e,this}getNormalMatrix(e){return this.setFromMatrix4(e).invert().transpose()}transposeIntoArray(e){let t=this.elements;return e[0]=t[0],e[1]=t[3],e[2]=t[6],e[3]=t[1],e[4]=t[4],e[5]=t[7],e[6]=t[2],e[7]=t[5],e[8]=t[8],this}setUvTransform(e,t,i,r,n,s,a){let o=Math.cos(n),l=Math.sin(n);return this.set(i*o,i*l,-i*(o*s+l*a)+s+e,-r*l,r*o,-r*(-l*s+o*a)+a+t,0,0,1),this}scale(e,t){return this.premultiply(EH.makeScale(e,t)),this}rotate(e){return this.premultiply(EH.makeRotation(-e)),this}translate(e,t){return this.premultiply(EH.makeTranslation(e,t)),this}makeTranslation(e,t){return this.set(1,0,e,0,1,t,0,0,1),this}makeRotation(e){let t=Math.cos(e),i=Math.sin(e);return this.set(t,-i,0,i,t,0,0,0,1),this}makeScale(e,t){return this.set(e,0,0,0,t,0,0,0,1),this}equals(e){let t=this.elements,i=e.elements;for(let e=0;e<9;e++)if(t[e]!==i[e])return!1;return!0}fromArray(e,t=0){for(let i=0;i<9;i++)this.elements[i]=e[i+t];return this}toArray(e=[],t=0){let 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}clone(){return(new this.constructor).fromArray(this.elements)}},EH=new Ni;function epe(e){for(let t=e.length-1;t>=0;--t)if(e[t]>=65535)return!0;return!1}var Xft={Int8Array:Int8Array,Uint8Array:Uint8Array,Uint8ClampedArray:Uint8ClampedArray,Int16Array:Int16Array,Uint16Array:Uint16Array,Int32Array:Int32Array,Uint32Array:Uint32Array,Float32Array:Float32Array,Float64Array:Float64Array};function Ry(e,t){return new Xft[e](t)}function ox(e){return document.createElementNS("http://www.w3.org/1999/xhtml",e)}function gg(e){return e<.04045?.0773993808*e:Math.pow(.9478672986*e+.0521327014,2.4)}function CD(e){return e<.0031308?12.92*e:1.055*Math.pow(e,.41666)-.055}var bH={[Dc]:{[Ay]:gg},[Ay]:{[Dc]:CD}},Qs={legacyMode:!0,get workingColorSpace(){return Ay},set workingColorSpace(e){console.warn("THREE.ColorManagement: .workingColorSpace is readonly.")},convert:function(e,t,i){if(this.legacyMode||t===i||!t||!i)return e;if(bH[t]&&void 0!==bH[t][i]){let r=bH[t][i];return e.r=r(e.r),e.g=r(e.g),e.b=r(e.b),e}throw new Error("Unsupported color space conversion.")},fromWorkingColorSpace:function(e,t){return this.convert(e,this.workingColorSpace,t)},toWorkingColorSpace:function(e,t){return this.convert(e,t,this.workingColorSpace)}},tpe={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074},ys={r:0,g:0,b:0},wc={h:0,s:0,l:0},UM={h:0,s:0,l:0};function xH(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}function BM(e,t){return t.r=e.r,t.g=e.g,t.b=e.b,t}var je=class{constructor(e,t,i){return this.isColor=!0,this.r=1,this.g=1,this.b=1,void 0===t&&void 0===i?this.set(e):this.setRGB(e,t,i)}set(e){return e&&e.isColor?this.copy(e):"number"==typeof e?this.setHex(e):"string"==typeof e&&this.setStyle(e),this}setScalar(e){return this.r=e,this.g=e,this.b=e,this}setHex(e,t=Dc){return e=Math.floor(e),this.r=(e>>16&255)/255,this.g=(e>>8&255)/255,this.b=(255&e)/255,Qs.toWorkingColorSpace(this,t),this}setRGB(e,t,i,r=Qs.workingColorSpace){return this.r=e,this.g=t,this.b=i,Qs.toWorkingColorSpace(this,r),this}setHSL(e,t,i,r=Qs.workingColorSpace){if(e=eB(e,1),t=ts(t,0,1),i=ts(i,0,1),0===t)this.r=this.g=this.b=i;else{let r=i<=.5?i*(1+t):i+t-i*t,n=2*i-r;this.r=xH(n,r,e+1/3),this.g=xH(n,r,e),this.b=xH(n,r,e-1/3)}return Qs.toWorkingColorSpace(this,r),this}setStyle(e,t=Dc){function i(t){void 0!==t&&parseFloat(t)<1&&console.warn("THREE.Color: Alpha component of "+e+" will be ignored.")}let r;if(r=/^((?:rgb|hsl)a?)\(([^\)]*)\)/.exec(e)){let e,n=r[1],s=r[2];switch(n){case"rgb":case"rgba":if(e=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s))return this.r=Math.min(255,parseInt(e[1],10))/255,this.g=Math.min(255,parseInt(e[2],10))/255,this.b=Math.min(255,parseInt(e[3],10))/255,Qs.toWorkingColorSpace(this,t),i(e[4]),this;if(e=/^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s))return this.r=Math.min(100,parseInt(e[1],10))/100,this.g=Math.min(100,parseInt(e[2],10))/100,this.b=Math.min(100,parseInt(e[3],10))/100,Qs.toWorkingColorSpace(this,t),i(e[4]),this;break;case"hsl":case"hsla":if(e=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)\%\s*,\s*(\d*\.?\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s)){let r=parseFloat(e[1])/360,n=parseFloat(e[2])/100,s=parseFloat(e[3])/100;return i(e[4]),this.setHSL(r,n,s,t)}}}else if(r=/^\#([A-Fa-f\d]+)$/.exec(e)){let e=r[1],i=e.length;if(3===i)return this.r=parseInt(e.charAt(0)+e.charAt(0),16)/255,this.g=parseInt(e.charAt(1)+e.charAt(1),16)/255,this.b=parseInt(e.charAt(2)+e.charAt(2),16)/255,Qs.toWorkingColorSpace(this,t),this;if(6===i)return this.r=parseInt(e.charAt(0)+e.charAt(1),16)/255,this.g=parseInt(e.charAt(2)+e.charAt(3),16)/255,this.b=parseInt(e.charAt(4)+e.charAt(5),16)/255,Qs.toWorkingColorSpace(this,t),this}return e&&e.length>0?this.setColorName(e,t):this}setColorName(e,t=Dc){let i=tpe[e.toLowerCase()];return void 0!==i?this.setHex(i,t):console.warn("THREE.Color: Unknown color "+e),this}clone(){return new this.constructor(this.r,this.g,this.b)}copy(e){return this.r=e.r,this.g=e.g,this.b=e.b,this}copySRGBToLinear(e){return this.r=gg(e.r),this.g=gg(e.g),this.b=gg(e.b),this}copyLinearToSRGB(e){return this.r=CD(e.r),this.g=CD(e.g),this.b=CD(e.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(e=Dc){return Qs.fromWorkingColorSpace(BM(this,ys),e),ts(255*ys.r,0,255)<<16^ts(255*ys.g,0,255)<<8^ts(255*ys.b,0,255)<<0}getHexString(e=Dc){return("000000"+this.getHex(e).toString(16)).slice(-6)}getHSL(e,t=Qs.workingColorSpace){Qs.fromWorkingColorSpace(BM(this,ys),t);let i,r,n=ys.r,s=ys.g,a=ys.b,o=Math.max(n,s,a),l=Math.min(n,s,a),h=(l+o)/2;if(l===o)i=0,r=0;else{let e=o-l;switch(r=h<=.5?e/(o+l):e/(2-o-l),o){case n:i=(s-a)/e+(s2048||t.height>2048?(console.warn("THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons",e),t.toDataURL("image/jpeg",.6)):t.toDataURL("image/png")}static sRGBToLinear(e){if("undefined"!=typeof HTMLImageElement&&e instanceof HTMLImageElement||"undefined"!=typeof HTMLCanvasElement&&e instanceof HTMLCanvasElement||"undefined"!=typeof ImageBitmap&&e instanceof ImageBitmap){let t=ox("canvas");t.width=e.width,t.height=e.height;let i=t.getContext("2d");i.drawImage(e,0,0,e.width,e.height);let r=i.getImageData(0,0,e.width,e.height),n=r.data;for(let e=0;e0&&(i.userData=this.userData),t||(e.textures[this.uuid]=i),i}dispose(){this.dispatchEvent({type:"dispose"})}transformUv(e){if(this.mapping!==aC)return e;if(e.applyMatrix3(this.matrix),e.x<0||e.x>1)switch(this.wrapS){case gn:e.x=e.x-Math.floor(e.x);break;case mn:e.x=e.x<0?0:1;break;case Tp:1===Math.abs(Math.floor(e.x)%2)?e.x=Math.ceil(e.x)-e.x:e.x=e.x-Math.floor(e.x)}if(e.y<0||e.y>1)switch(this.wrapT){case gn:e.y=e.y-Math.floor(e.y);break;case mn:e.y=e.y<0?0:1;break;case Tp:1===Math.abs(Math.floor(e.y)%2)?e.y=Math.ceil(e.y)-e.y:e.y=e.y-Math.floor(e.y)}return this.flipY&&(e.y=1-e.y),e}set needsUpdate(e){!0===e&&(this.version++,this.source.needsUpdate=!0)}};Bi.DEFAULT_IMAGE=null,Bi.DEFAULT_MAPPING=aC,Bi.DEFAULT_ANISOTROPY=1;var Vr=class{constructor(e=0,t=0,i=0,r=1){Vr.prototype.isVector4=!0,this.x=e,this.y=t,this.z=i,this.w=r}get width(){return this.z}set width(e){this.z=e}get height(){return this.w}set height(e){this.w=e}set(e,t,i,r){return this.x=e,this.y=t,this.z=i,this.w=r,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this.w=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setW(e){return this.w=e,this}setComponent(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)}return this}getComponent(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)}}clone(){return new this.constructor(this.x,this.y,this.z,this.w)}copy(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(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this.w+=e.w,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this.w+=e,this}addVectors(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}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this.w+=e.w*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this.w-=e.w,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this.w-=e,this}subVectors(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}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this.w*=e.w,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this.w*=e,this}applyMatrix4(e){let t=this.x,i=this.y,r=this.z,n=this.w,s=e.elements;return this.x=s[0]*t+s[4]*i+s[8]*r+s[12]*n,this.y=s[1]*t+s[5]*i+s[9]*r+s[13]*n,this.z=s[2]*t+s[6]*i+s[10]*r+s[14]*n,this.w=s[3]*t+s[7]*i+s[11]*r+s[15]*n,this}divideScalar(e){return this.multiplyScalar(1/e)}setAxisAngleFromQuaternion(e){this.w=2*Math.acos(e.w);let 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(e){let t,i,r,n,s=e.elements,a=s[0],o=s[4],l=s[8],h=s[1],u=s[5],c=s[9],p=s[2],d=s[6],f=s[10];if(Math.abs(o-h)<.01&&Math.abs(l-p)<.01&&Math.abs(c-d)<.01){if(Math.abs(o+h)<.1&&Math.abs(l+p)<.1&&Math.abs(c+d)<.1&&Math.abs(a+u+f-3)<.1)return this.set(1,0,0,0),this;t=Math.PI;let e=(a+1)/2,s=(u+1)/2,m=(f+1)/2,g=(o+h)/4,y=(l+p)/4,v=(c+d)/4;return e>s&&e>m?e<.01?(i=0,r=.707106781,n=.707106781):(i=Math.sqrt(e),r=g/i,n=y/i):s>m?s<.01?(i=.707106781,r=0,n=.707106781):(r=Math.sqrt(s),i=g/r,n=v/r):m<.01?(i=.707106781,r=.707106781,n=0):(n=Math.sqrt(m),i=y/n,r=v/n),this.set(i,r,n,t),this}let m=Math.sqrt((d-c)*(d-c)+(l-p)*(l-p)+(h-o)*(h-o));return Math.abs(m)<.001&&(m=1),this.x=(d-c)/m,this.y=(l-p)/m,this.z=(h-o)/m,this.w=Math.acos((a+u+f-1)/2),this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this.w=Math.min(this.w,e.w),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this.w=Math.max(this.w,e.w),this}clamp(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this.z=Math.max(e.z,Math.min(t.z,this.z)),this.w=Math.max(e.w,Math.min(t.w,this.w)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this.z=Math.max(e,Math.min(t,this.z)),this.w=Math.max(e,Math.min(t,this.w)),this}clampLength(e,t){let i=this.length();return this.divideScalar(i||1).multiplyScalar(Math.max(e,Math.min(t,i)))}floor(){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(){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(){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(){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(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this.w=-this.w,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z+this.w*e.w}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(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(e,t,i){return this.x=e.x+(t.x-e.x)*i,this.y=e.y+(t.y-e.y)*i,this.z=e.z+(t.z-e.z)*i,this.w=e.w+(t.w-e.w)*i,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z&&e.w===this.w}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this.w=e[t+3],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e[t+3]=this.w,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this.w=e.getW(t),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this.w=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z,yield this.w}},zr=class extends Vo{constructor(e=1,t=1,i={}){super(),this.isWebGLRenderTarget=!0,this.width=e,this.height=t,this.depth=1,this.scissor=new Vr(0,0,e,t),this.scissorTest=!1,this.viewport=new Vr(0,0,e,t);let r={width:e,height:t,depth:1};this.texture=new Bi(r,i.mapping,i.wrapS,i.wrapT,i.magFilter,i.minFilter,i.format,i.type,i.anisotropy,i.encoding),this.texture.isRenderTargetTexture=!0,this.texture.flipY=!1,this.texture.generateMipmaps=void 0!==i.generateMipmaps&&i.generateMipmaps,this.texture.internalFormat=void 0!==i.internalFormat?i.internalFormat:null,this.texture.minFilter=void 0!==i.minFilter?i.minFilter:li,this.depthBuffer=void 0===i.depthBuffer||i.depthBuffer,this.stencilBuffer=void 0!==i.stencilBuffer&&i.stencilBuffer,this.depthTexture=void 0!==i.depthTexture?i.depthTexture:null,this.samples=void 0!==i.samples?i.samples:0}setSize(e,t,i=1){(this.width!==e||this.height!==t||this.depth!==i)&&(this.width=e,this.height=t,this.depth=i,this.texture.image.width=e,this.texture.image.height=t,this.texture.image.depth=i,this.dispose()),this.viewport.set(0,0,e,t),this.scissor.set(0,0,e,t)}clone(){return(new this.constructor).copy(this)}copy(e){this.width=e.width,this.height=e.height,this.depth=e.depth,this.viewport.copy(e.viewport),this.texture=e.texture.clone(),this.texture.isRenderTargetTexture=!0;let t=Object.assign({},e.texture.image);return this.texture.source=new Ac(t),this.depthBuffer=e.depthBuffer,this.stencilBuffer=e.stencilBuffer,null!==e.depthTexture&&(this.depthTexture=e.depthTexture.clone()),this.samples=e.samples,this}dispose(){this.dispatchEvent({type:"dispose"})}},Oy=class extends Bi{constructor(e=null,t=1,i=1,r=1){super(null),this.isDataArrayTexture=!0,this.image={data:e,width:t,height:i,depth:r},this.magFilter=Ci,this.minFilter=Ci,this.wrapR=mn,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}},D4=class extends zr{constructor(e=1,t=1,i=1){super(e,t),this.isWebGLArrayRenderTarget=!0,this.depth=i,this.texture=new Oy(null,e,t,i),this.texture.isRenderTargetTexture=!0}},cx=class extends Bi{constructor(e=null,t=1,i=1,r=1){super(null),this.isData3DTexture=!0,this.image={data:e,width:t,height:i,depth:r},this.magFilter=Ci,this.minFilter=Ci,this.wrapR=mn,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}},C4=class extends zr{constructor(e=1,t=1,i=1){super(e,t),this.isWebGL3DRenderTarget=!0,this.depth=i,this.texture=new cx(null,e,t,i),this.texture.isRenderTargetTexture=!0}},A4=class extends zr{constructor(e=1,t=1,i=1,r={}){super(e,t,r),this.isWebGLMultipleRenderTargets=!0;let n=this.texture;this.texture=[];for(let e=0;e=0?1:-1,r=1-t*t;if(r>Number.EPSILON){let n=Math.sqrt(r),s=Math.atan2(n,t*i);e=Math.sin(e*s)/n,a=Math.sin(a*s)/n}let n=a*i;if(o=o*e+c*n,l=l*e+p*n,h=h*e+d*n,u=u*e+f*n,e===1-a){let e=1/Math.sqrt(o*o+l*l+h*h+u*u);o*=e,l*=e,h*=e,u*=e}}e[t]=o,e[t+1]=l,e[t+2]=h,e[t+3]=u}static multiplyQuaternionsFlat(e,t,i,r,n,s){let a=i[r],o=i[r+1],l=i[r+2],h=i[r+3],u=n[s],c=n[s+1],p=n[s+2],d=n[s+3];return e[t]=a*d+h*u+o*p-l*c,e[t+1]=o*d+h*c+l*u-a*p,e[t+2]=l*d+h*p+a*c-o*u,e[t+3]=h*d-a*u-o*c-l*p,e}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 w(){return this._w}set w(e){this._w=e,this._onChangeCallback()}set(e,t,i,r){return this._x=e,this._y=t,this._z=i,this._w=r,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._w)}copy(e){return this._x=e.x,this._y=e.y,this._z=e.z,this._w=e.w,this._onChangeCallback(),this}setFromEuler(e,t){let i=e._x,r=e._y,n=e._z,s=e._order,a=Math.cos,o=Math.sin,l=a(i/2),h=a(r/2),u=a(n/2),c=o(i/2),p=o(r/2),d=o(n/2);switch(s){case"XYZ":this._x=c*h*u+l*p*d,this._y=l*p*u-c*h*d,this._z=l*h*d+c*p*u,this._w=l*h*u-c*p*d;break;case"YXZ":this._x=c*h*u+l*p*d,this._y=l*p*u-c*h*d,this._z=l*h*d-c*p*u,this._w=l*h*u+c*p*d;break;case"ZXY":this._x=c*h*u-l*p*d,this._y=l*p*u+c*h*d,this._z=l*h*d+c*p*u,this._w=l*h*u-c*p*d;break;case"ZYX":this._x=c*h*u-l*p*d,this._y=l*p*u+c*h*d,this._z=l*h*d-c*p*u,this._w=l*h*u+c*p*d;break;case"YZX":this._x=c*h*u+l*p*d,this._y=l*p*u+c*h*d,this._z=l*h*d-c*p*u,this._w=l*h*u-c*p*d;break;case"XZY":this._x=c*h*u-l*p*d,this._y=l*p*u-c*h*d,this._z=l*h*d+c*p*u,this._w=l*h*u+c*p*d;break;default:console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: "+s)}return!1!==t&&this._onChangeCallback(),this}setFromAxisAngle(e,t){let i=t/2,r=Math.sin(i);return this._x=e.x*r,this._y=e.y*r,this._z=e.z*r,this._w=Math.cos(i),this._onChangeCallback(),this}setFromRotationMatrix(e){let t=e.elements,i=t[0],r=t[4],n=t[8],s=t[1],a=t[5],o=t[9],l=t[2],h=t[6],u=t[10],c=i+a+u;if(c>0){let e=.5/Math.sqrt(c+1);this._w=.25/e,this._x=(h-o)*e,this._y=(n-l)*e,this._z=(s-r)*e}else if(i>a&&i>u){let e=2*Math.sqrt(1+i-a-u);this._w=(h-o)/e,this._x=.25*e,this._y=(r+s)/e,this._z=(n+l)/e}else if(a>u){let e=2*Math.sqrt(1+a-i-u);this._w=(n-l)/e,this._x=(r+s)/e,this._y=.25*e,this._z=(o+h)/e}else{let e=2*Math.sqrt(1+u-i-a);this._w=(s-r)/e,this._x=(n+l)/e,this._y=(o+h)/e,this._z=.25*e}return this._onChangeCallback(),this}setFromUnitVectors(e,t){let i=e.dot(t)+1;return iMath.abs(e.z)?(this._x=-e.y,this._y=e.x,this._z=0,this._w=i):(this._x=0,this._y=-e.z,this._z=e.y,this._w=i)):(this._x=e.y*t.z-e.z*t.y,this._y=e.z*t.x-e.x*t.z,this._z=e.x*t.y-e.y*t.x,this._w=i),this.normalize()}angleTo(e){return 2*Math.acos(Math.abs(ts(this.dot(e),-1,1)))}rotateTowards(e,t){let i=this.angleTo(e);if(0===i)return this;let r=Math.min(1,t/i);return this.slerp(e,r),this}identity(){return this.set(0,0,0,1)}invert(){return this.conjugate()}conjugate(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this}dot(e){return this._x*e._x+this._y*e._y+this._z*e._z+this._w*e._w}lengthSq(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}length(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)}normalize(){let 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(e){return this.multiplyQuaternions(this,e)}premultiply(e){return this.multiplyQuaternions(e,this)}multiplyQuaternions(e,t){let i=e._x,r=e._y,n=e._z,s=e._w,a=t._x,o=t._y,l=t._z,h=t._w;return this._x=i*h+s*a+r*l-n*o,this._y=r*h+s*o+n*a-i*l,this._z=n*h+s*l+i*o-r*a,this._w=s*h-i*a-r*o-n*l,this._onChangeCallback(),this}slerp(e,t){if(0===t)return this;if(1===t)return this.copy(e);let i=this._x,r=this._y,n=this._z,s=this._w,a=s*e._w+i*e._x+r*e._y+n*e._z;if(a<0?(this._w=-e._w,this._x=-e._x,this._y=-e._y,this._z=-e._z,a=-a):this.copy(e),a>=1)return this._w=s,this._x=i,this._y=r,this._z=n,this;let o=1-a*a;if(o<=Number.EPSILON){let e=1-t;return this._w=e*s+t*this._w,this._x=e*i+t*this._x,this._y=e*r+t*this._y,this._z=e*n+t*this._z,this.normalize(),this._onChangeCallback(),this}let l=Math.sqrt(o),h=Math.atan2(l,a),u=Math.sin((1-t)*h)/l,c=Math.sin(t*h)/l;return this._w=s*u+this._w*c,this._x=i*u+this._x*c,this._y=r*u+this._y*c,this._z=n*u+this._z*c,this._onChangeCallback(),this}slerpQuaternions(e,t,i){return this.copy(e).slerp(t,i)}random(){let e=Math.random(),t=Math.sqrt(1-e),i=Math.sqrt(e),r=2*Math.PI*Math.random(),n=2*Math.PI*Math.random();return this.set(t*Math.cos(r),i*Math.sin(n),i*Math.cos(n),t*Math.sin(r))}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._w===this._w}fromArray(e,t=0){return this._x=e[t],this._y=e[t+1],this._z=e[t+2],this._w=e[t+3],this._onChangeCallback(),this}toArray(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._w,e}fromBufferAttribute(e,t){return this._x=e.getX(t),this._y=e.getY(t),this._z=e.getZ(t),this._w=e.getW(t),this}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}},A=class{constructor(e=0,t=0,i=0){A.prototype.isVector3=!0,this.x=e,this.y=t,this.z=i}set(e,t,i){return void 0===i&&(i=this.z),this.x=e,this.y=t,this.z=i,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setComponent(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)}return this}getComponent(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(){return new this.constructor(this.x,this.y,this.z)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this}multiplyVectors(e,t){return this.x=e.x*t.x,this.y=e.y*t.y,this.z=e.z*t.z,this}applyEuler(e){return this.applyQuaternion(qce.setFromEuler(e))}applyAxisAngle(e,t){return this.applyQuaternion(qce.setFromAxisAngle(e,t))}applyMatrix3(e){let t=this.x,i=this.y,r=this.z,n=e.elements;return this.x=n[0]*t+n[3]*i+n[6]*r,this.y=n[1]*t+n[4]*i+n[7]*r,this.z=n[2]*t+n[5]*i+n[8]*r,this}applyNormalMatrix(e){return this.applyMatrix3(e).normalize()}applyMatrix4(e){let t=this.x,i=this.y,r=this.z,n=e.elements,s=1/(n[3]*t+n[7]*i+n[11]*r+n[15]);return this.x=(n[0]*t+n[4]*i+n[8]*r+n[12])*s,this.y=(n[1]*t+n[5]*i+n[9]*r+n[13])*s,this.z=(n[2]*t+n[6]*i+n[10]*r+n[14])*s,this}applyQuaternion(e){let t=this.x,i=this.y,r=this.z,n=e.x,s=e.y,a=e.z,o=e.w,l=o*t+s*r-a*i,h=o*i+a*t-n*r,u=o*r+n*i-s*t,c=-n*t-s*i-a*r;return this.x=l*o+c*-n+h*-a-u*-s,this.y=h*o+c*-s+u*-n-l*-a,this.z=u*o+c*-a+l*-s-h*-n,this}project(e){return this.applyMatrix4(e.matrixWorldInverse).applyMatrix4(e.projectionMatrix)}unproject(e){return this.applyMatrix4(e.projectionMatrixInverse).applyMatrix4(e.matrixWorld)}transformDirection(e){let t=this.x,i=this.y,r=this.z,n=e.elements;return this.x=n[0]*t+n[4]*i+n[8]*r,this.y=n[1]*t+n[5]*i+n[9]*r,this.z=n[2]*t+n[6]*i+n[10]*r,this.normalize()}divide(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this}divideScalar(e){return this.multiplyScalar(1/e)}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this}clamp(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this.z=Math.max(e.z,Math.min(t.z,this.z)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this.z=Math.max(e,Math.min(t,this.z)),this}clampLength(e,t){let i=this.length();return this.divideScalar(i||1).multiplyScalar(Math.max(e,Math.min(t,i)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}roundToZero(){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(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(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(e,t,i){return this.x=e.x+(t.x-e.x)*i,this.y=e.y+(t.y-e.y)*i,this.z=e.z+(t.z-e.z)*i,this}cross(e){return this.crossVectors(this,e)}crossVectors(e,t){let i=e.x,r=e.y,n=e.z,s=t.x,a=t.y,o=t.z;return this.x=r*o-n*a,this.y=n*s-i*o,this.z=i*a-r*s,this}projectOnVector(e){let t=e.lengthSq();if(0===t)return this.set(0,0,0);let i=e.dot(this)/t;return this.copy(e).multiplyScalar(i)}projectOnPlane(e){return _H.copy(this).projectOnVector(e),this.sub(_H)}reflect(e){return this.sub(_H.copy(e).multiplyScalar(2*this.dot(e)))}angleTo(e){let t=Math.sqrt(this.lengthSq()*e.lengthSq());if(0===t)return Math.PI/2;let i=this.dot(e)/t;return Math.acos(ts(i,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){let t=this.x-e.x,i=this.y-e.y,r=this.z-e.z;return t*t+i*i+r*r}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)+Math.abs(this.z-e.z)}setFromSpherical(e){return this.setFromSphericalCoords(e.radius,e.phi,e.theta)}setFromSphericalCoords(e,t,i){let r=Math.sin(t)*e;return this.x=r*Math.sin(i),this.y=Math.cos(t)*e,this.z=r*Math.cos(i),this}setFromCylindrical(e){return this.setFromCylindricalCoords(e.radius,e.theta,e.y)}setFromCylindricalCoords(e,t,i){return this.x=e*Math.sin(t),this.y=i,this.z=e*Math.cos(t),this}setFromMatrixPosition(e){let t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this}setFromMatrixScale(e){let t=this.setFromMatrixColumn(e,0).length(),i=this.setFromMatrixColumn(e,1).length(),r=this.setFromMatrixColumn(e,2).length();return this.x=t,this.y=i,this.z=r,this}setFromMatrixColumn(e,t){return this.fromArray(e.elements,4*t)}setFromMatrix3Column(e,t){return this.fromArray(e.elements,3*t)}setFromEuler(e){return this.x=e._x,this.y=e._y,this.z=e._z,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){let e=2*(Math.random()-.5),t=Math.random()*Math.PI*2,i=Math.sqrt(1-Wh(e,2));return this.x=i*Math.cos(t),this.y=i*Math.sin(t),this.z=e,this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}},_H=new A,qce=new Hr,Dt=class{constructor(e=new A(1/0,1/0,1/0),t=new A(-1/0,-1/0,-1/0)){this.isBox3=!0,this.min=e,this.max=t}set(e,t){return this.min.copy(e),this.max.copy(t),this}setFromArray(e){let t=1/0,i=1/0,r=1/0,n=-1/0,s=-1/0,a=-1/0;for(let o=0,l=e.length;on&&(n=l),h>s&&(s=h),u>a&&(a=u)}return this.min.set(t,i,r),this.max.set(n,s,a),this}setFromBufferAttribute(e){let t=1/0,i=1/0,r=1/0,n=-1/0,s=-1/0,a=-1/0;for(let o=0,l=e.count;on&&(n=l),h>s&&(s=h),u>a&&(a=u)}return this.min.set(t,i,r),this.max.set(n,s,a),this}setFromPoints(e){this.makeEmpty();for(let t=0,i=e.length;tthis.max.x||e.ythis.max.y||e.zthis.max.z)}containsBox(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(e,t){return t.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))}intersectsBox(e){return!(e.max.xthis.max.x||e.max.ythis.max.y||e.max.zthis.max.z)}intersectsSphere(e){return this.clampPoint(e.center,tg),tg.distanceToSquared(e.center)<=e.radius*e.radius}intersectsPlane(e){let t,i;return e.normal.x>0?(t=e.normal.x*this.min.x,i=e.normal.x*this.max.x):(t=e.normal.x*this.max.x,i=e.normal.x*this.min.x),e.normal.y>0?(t+=e.normal.y*this.min.y,i+=e.normal.y*this.max.y):(t+=e.normal.y*this.max.y,i+=e.normal.y*this.min.y),e.normal.z>0?(t+=e.normal.z*this.min.z,i+=e.normal.z*this.max.z):(t+=e.normal.z*this.max.z,i+=e.normal.z*this.min.z),t<=-e.constant&&i>=-e.constant}intersectsTriangle(e){if(this.isEmpty())return!1;this.getCenter(kb),kM.subVectors(this.max,kb),cy.subVectors(e.a,kb),uy.subVectors(e.b,kb),hy.subVectors(e.c,kb),Zd.subVectors(uy,cy),Kd.subVectors(hy,uy),rg.subVectors(cy,hy);let t=[0,-Zd.z,Zd.y,0,-Kd.z,Kd.y,0,-rg.z,rg.y,Zd.z,0,-Zd.x,Kd.z,0,-Kd.x,rg.z,0,-rg.x,-Zd.y,Zd.x,0,-Kd.y,Kd.x,0,-rg.y,rg.x,0];return!(!wH(t,cy,uy,hy,kM)||(t=[1,0,0,0,1,0,0,0,1],!wH(t,cy,uy,hy,kM)))&&(GM.crossVectors(Zd,Kd),t=[GM.x,GM.y,GM.z],wH(t,cy,uy,hy,kM))}clampPoint(e,t){return t.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return tg.copy(e).clamp(this.min,this.max).sub(e).length()}getBoundingSphere(e){return this.getCenter(e.center),e.radius=.5*this.getSize(tg).length(),e}intersect(e){return this.min.max(e.min),this.max.min(e.max),this.isEmpty()&&this.makeEmpty(),this}union(e){return this.min.min(e.min),this.max.max(e.max),this}applyMatrix4(e){return this.isEmpty()||(lp[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(e),lp[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(e),lp[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(e),lp[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(e),lp[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(e),lp[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(e),lp[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(e),lp[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(e),this.setFromPoints(lp)),this}translate(e){return this.min.add(e),this.max.add(e),this}equals(e){return e.min.equals(this.min)&&e.max.equals(this.max)}},lp=[new A,new A,new A,new A,new A,new A,new A,new A],tg=new A,SH=new Dt,cy=new A,uy=new A,hy=new A,Zd=new A,Kd=new A,rg=new A,kb=new A,kM=new A,GM=new A,ig=new A;function wH(e,t,i,r,n){for(let s=0,a=e.length-3;s<=a;s+=3){ig.fromArray(e,s);let a=n.x*Math.abs(ig.x)+n.y*Math.abs(ig.y)+n.z*Math.abs(ig.z),o=t.dot(ig),l=i.dot(ig),h=r.dot(ig);if(Math.max(-Math.max(o,l,h),Math.min(o,l,h))>a)return!1}return!0}var Zft=new Dt,Gb=new A,RH=new A,qi=class{constructor(e=new A,t=-1){this.center=e,this.radius=t}set(e,t){return this.center.copy(e),this.radius=t,this}setFromPoints(e,t){let i=this.center;void 0!==t?i.copy(t):Zft.setFromPoints(e).getCenter(i);let r=0;for(let t=0,n=e.length;tthis.radius*this.radius&&(t.sub(this.center).normalize(),t.multiplyScalar(this.radius).add(this.center)),t}getBoundingBox(e){return this.isEmpty()?(e.makeEmpty(),e):(e.set(this.center,this.center),e.expandByScalar(this.radius),e)}applyMatrix4(e){return this.center.applyMatrix4(e),this.radius=this.radius*e.getMaxScaleOnAxis(),this}translate(e){return this.center.add(e),this}expandByPoint(e){if(this.isEmpty())return this.center.copy(e),this.radius=0,this;Gb.subVectors(e,this.center);let t=Gb.lengthSq();if(t>this.radius*this.radius){let e=Math.sqrt(t),i=.5*(e-this.radius);this.center.addScaledVector(Gb,i/e),this.radius+=i}return this}union(e){return e.isEmpty()?this:this.isEmpty()?(this.copy(e),this):(!0===this.center.equals(e.center)?this.radius=Math.max(this.radius,e.radius):(RH.subVectors(e.center,this.center).setLength(e.radius),this.expandByPoint(Gb.copy(e.center).add(RH)),this.expandByPoint(Gb.copy(e.center).sub(RH))),this)}equals(e){return e.center.equals(this.center)&&e.radius===this.radius}clone(){return(new this.constructor).copy(this)}},cp=new A,MH=new A,VM=new A,Jd=new A,DH=new A,zM=new A,CH=new A,zo=class{constructor(e=new A,t=new A(0,0,-1)){this.origin=e,this.direction=t}set(e,t){return this.origin.copy(e),this.direction.copy(t),this}copy(e){return this.origin.copy(e.origin),this.direction.copy(e.direction),this}at(e,t){return t.copy(this.direction).multiplyScalar(e).add(this.origin)}lookAt(e){return this.direction.copy(e).sub(this.origin).normalize(),this}recast(e){return this.origin.copy(this.at(e,cp)),this}closestPointToPoint(e,t){t.subVectors(e,this.origin);let i=t.dot(this.direction);return i<0?t.copy(this.origin):t.copy(this.direction).multiplyScalar(i).add(this.origin)}distanceToPoint(e){return Math.sqrt(this.distanceSqToPoint(e))}distanceSqToPoint(e){let t=cp.subVectors(e,this.origin).dot(this.direction);return t<0?this.origin.distanceToSquared(e):(cp.copy(this.direction).multiplyScalar(t).add(this.origin),cp.distanceToSquared(e))}distanceSqToSegment(e,t,i,r){MH.copy(e).add(t).multiplyScalar(.5),VM.copy(t).sub(e).normalize(),Jd.copy(this.origin).sub(MH);let n,s,a,o,l=.5*e.distanceTo(t),h=-this.direction.dot(VM),u=Jd.dot(this.direction),c=-Jd.dot(VM),p=Jd.lengthSq(),d=Math.abs(1-h*h);if(d>0)if(n=h*c-u,s=h*u-c,o=l*d,n>=0)if(s>=-o)if(s<=o){let e=1/d;n*=e,s*=e,a=n*(n+h*s+2*u)+s*(h*n+s+2*c)+p}else s=l,n=Math.max(0,-(h*s+u)),a=-n*n+s*(s+2*c)+p;else s=-l,n=Math.max(0,-(h*s+u)),a=-n*n+s*(s+2*c)+p;else s<=-o?(n=Math.max(0,-(-h*l+u)),s=n>0?-l:Math.min(Math.max(-l,-c),l),a=-n*n+s*(s+2*c)+p):s<=o?(n=0,s=Math.min(Math.max(-l,-c),l),a=s*(s+2*c)+p):(n=Math.max(0,-(h*l+u)),s=n>0?l:Math.min(Math.max(-l,-c),l),a=-n*n+s*(s+2*c)+p);else s=h>0?-l:l,n=Math.max(0,-(h*s+u)),a=-n*n+s*(s+2*c)+p;return i&&i.copy(this.direction).multiplyScalar(n).add(this.origin),r&&r.copy(VM).multiplyScalar(s).add(MH),a}intersectSphere(e,t){cp.subVectors(e.center,this.origin);let i=cp.dot(this.direction),r=cp.dot(cp)-i*i,n=e.radius*e.radius;if(r>n)return null;let s=Math.sqrt(n-r),a=i-s,o=i+s;return a<0&&o<0?null:a<0?this.at(o,t):this.at(a,t)}intersectsSphere(e){return this.distanceSqToPoint(e.center)<=e.radius*e.radius}distanceToPlane(e){let t=e.normal.dot(this.direction);if(0===t)return 0===e.distanceToPoint(this.origin)?0:null;let i=-(this.origin.dot(e.normal)+e.constant)/t;return i>=0?i:null}intersectPlane(e,t){let i=this.distanceToPlane(e);return null===i?null:this.at(i,t)}intersectsPlane(e){let t=e.distanceToPoint(this.origin);return 0===t||e.normal.dot(this.direction)*t<0}intersectBox(e,t){let i,r,n,s,a,o,l=1/this.direction.x,h=1/this.direction.y,u=1/this.direction.z,c=this.origin;return l>=0?(i=(e.min.x-c.x)*l,r=(e.max.x-c.x)*l):(i=(e.max.x-c.x)*l,r=(e.min.x-c.x)*l),h>=0?(n=(e.min.y-c.y)*h,s=(e.max.y-c.y)*h):(n=(e.max.y-c.y)*h,s=(e.min.y-c.y)*h),i>s||n>r||((n>i||isNaN(i))&&(i=n),(s=0?(a=(e.min.z-c.z)*u,o=(e.max.z-c.z)*u):(a=(e.max.z-c.z)*u,o=(e.min.z-c.z)*u),i>o||a>r)||((a>i||i!=i)&&(i=a),(o=0?i:r,t)}intersectsBox(e){return null!==this.intersectBox(e,cp)}intersectTriangle(e,t,i,r,n){DH.subVectors(t,e),zM.subVectors(i,e),CH.crossVectors(DH,zM);let s,a=this.direction.dot(CH);if(a>0){if(r)return null;s=1}else{if(!(a<0))return null;s=-1,a=-a}Jd.subVectors(this.origin,e);let o=s*this.direction.dot(zM.crossVectors(Jd,zM));if(o<0)return null;let l=s*this.direction.dot(DH.cross(Jd));if(l<0||o+l>a)return null;let h=-s*Jd.dot(CH);return h<0?null:this.at(h/a,n)}applyMatrix4(e){return this.origin.applyMatrix4(e),this.direction.transformDirection(e),this}equals(e){return e.origin.equals(this.origin)&&e.direction.equals(this.direction)}clone(){return(new this.constructor).copy(this)}},Be=class{constructor(){Be.prototype.isMatrix4=!0,this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}set(e,t,i,r,n,s,a,o,l,h,u,c,p,d,f,m){let g=this.elements;return g[0]=e,g[4]=t,g[8]=i,g[12]=r,g[1]=n,g[5]=s,g[9]=a,g[13]=o,g[2]=l,g[6]=h,g[10]=u,g[14]=c,g[3]=p,g[7]=d,g[11]=f,g[15]=m,this}identity(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this}clone(){return(new Be).fromArray(this.elements)}copy(e){let t=this.elements,i=e.elements;return t[0]=i[0],t[1]=i[1],t[2]=i[2],t[3]=i[3],t[4]=i[4],t[5]=i[5],t[6]=i[6],t[7]=i[7],t[8]=i[8],t[9]=i[9],t[10]=i[10],t[11]=i[11],t[12]=i[12],t[13]=i[13],t[14]=i[14],t[15]=i[15],this}copyPosition(e){let t=this.elements,i=e.elements;return t[12]=i[12],t[13]=i[13],t[14]=i[14],this}setFromMatrix3(e){let t=e.elements;return this.set(t[0],t[3],t[6],0,t[1],t[4],t[7],0,t[2],t[5],t[8],0,0,0,0,1),this}extractBasis(e,t,i){return e.setFromMatrixColumn(this,0),t.setFromMatrixColumn(this,1),i.setFromMatrixColumn(this,2),this}makeBasis(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(e){let t=this.elements,i=e.elements,r=1/py.setFromMatrixColumn(e,0).length(),n=1/py.setFromMatrixColumn(e,1).length(),s=1/py.setFromMatrixColumn(e,2).length();return t[0]=i[0]*r,t[1]=i[1]*r,t[2]=i[2]*r,t[3]=0,t[4]=i[4]*n,t[5]=i[5]*n,t[6]=i[6]*n,t[7]=0,t[8]=i[8]*s,t[9]=i[9]*s,t[10]=i[10]*s,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromEuler(e){let t=this.elements,i=e.x,r=e.y,n=e.z,s=Math.cos(i),a=Math.sin(i),o=Math.cos(r),l=Math.sin(r),h=Math.cos(n),u=Math.sin(n);if("XYZ"===e.order){let e=s*h,i=s*u,r=a*h,n=a*u;t[0]=o*h,t[4]=-o*u,t[8]=l,t[1]=i+r*l,t[5]=e-n*l,t[9]=-a*o,t[2]=n-e*l,t[6]=r+i*l,t[10]=s*o}else if("YXZ"===e.order){let e=o*h,i=o*u,r=l*h,n=l*u;t[0]=e+n*a,t[4]=r*a-i,t[8]=s*l,t[1]=s*u,t[5]=s*h,t[9]=-a,t[2]=i*a-r,t[6]=n+e*a,t[10]=s*o}else if("ZXY"===e.order){let e=o*h,i=o*u,r=l*h,n=l*u;t[0]=e-n*a,t[4]=-s*u,t[8]=r+i*a,t[1]=i+r*a,t[5]=s*h,t[9]=n-e*a,t[2]=-s*l,t[6]=a,t[10]=s*o}else if("ZYX"===e.order){let e=s*h,i=s*u,r=a*h,n=a*u;t[0]=o*h,t[4]=r*l-i,t[8]=e*l+n,t[1]=o*u,t[5]=n*l+e,t[9]=i*l-r,t[2]=-l,t[6]=a*o,t[10]=s*o}else if("YZX"===e.order){let e=s*o,i=s*l,r=a*o,n=a*l;t[0]=o*h,t[4]=n-e*u,t[8]=r*u+i,t[1]=u,t[5]=s*h,t[9]=-a*h,t[2]=-l*h,t[6]=i*u+r,t[10]=e-n*u}else if("XZY"===e.order){let e=s*o,i=s*l,r=a*o,n=a*l;t[0]=o*h,t[4]=-u,t[8]=l*h,t[1]=e*u+n,t[5]=s*h,t[9]=i*u-r,t[2]=r*u-i,t[6]=a*h,t[10]=n*u+e}return t[3]=0,t[7]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromQuaternion(e){return this.compose(Kft,e,Jft)}lookAt(e,t,i){let r=this.elements;return Uo.subVectors(e,t),0===Uo.lengthSq()&&(Uo.z=1),Uo.normalize(),Qd.crossVectors(i,Uo),0===Qd.lengthSq()&&(1===Math.abs(i.z)?Uo.x+=1e-4:Uo.z+=1e-4,Uo.normalize(),Qd.crossVectors(i,Uo)),Qd.normalize(),jM.crossVectors(Uo,Qd),r[0]=Qd.x,r[4]=jM.x,r[8]=Uo.x,r[1]=Qd.y,r[5]=jM.y,r[9]=Uo.y,r[2]=Qd.z,r[6]=jM.z,r[10]=Uo.z,this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){let i=e.elements,r=t.elements,n=this.elements,s=i[0],a=i[4],o=i[8],l=i[12],h=i[1],u=i[5],c=i[9],p=i[13],d=i[2],f=i[6],m=i[10],g=i[14],y=i[3],v=i[7],T=i[11],x=i[15],b=r[0],_=r[4],E=r[8],w=r[12],S=r[1],I=r[5],M=r[9],A=r[13],D=r[2],O=r[6],R=r[10],C=r[14],N=r[3],P=r[7],L=r[11],F=r[15];return n[0]=s*b+a*S+o*D+l*N,n[4]=s*_+a*I+o*O+l*P,n[8]=s*E+a*M+o*R+l*L,n[12]=s*w+a*A+o*C+l*F,n[1]=h*b+u*S+c*D+p*N,n[5]=h*_+u*I+c*O+p*P,n[9]=h*E+u*M+c*R+p*L,n[13]=h*w+u*A+c*C+p*F,n[2]=d*b+f*S+m*D+g*N,n[6]=d*_+f*I+m*O+g*P,n[10]=d*E+f*M+m*R+g*L,n[14]=d*w+f*A+m*C+g*F,n[3]=y*b+v*S+T*D+x*N,n[7]=y*_+v*I+T*O+x*P,n[11]=y*E+v*M+T*R+x*L,n[15]=y*w+v*A+T*C+x*F,this}multiplyScalar(e){let 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(){let e=this.elements,t=e[0],i=e[4],r=e[8],n=e[12],s=e[1],a=e[5],o=e[9],l=e[13],h=e[2],u=e[6],c=e[10],p=e[14];return e[3]*(+n*o*u-r*l*u-n*a*c+i*l*c+r*a*p-i*o*p)+e[7]*(+t*o*p-t*l*c+n*s*c-r*s*p+r*l*h-n*o*h)+e[11]*(+t*l*u-t*a*p-n*s*u+i*s*p+n*a*h-i*l*h)+e[15]*(-r*a*h-t*o*u+t*a*c+r*s*u-i*s*c+i*o*h)}transpose(){let 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}setPosition(e,t,i){let r=this.elements;return e.isVector3?(r[12]=e.x,r[13]=e.y,r[14]=e.z):(r[12]=e,r[13]=t,r[14]=i),this}invert(){let e=this.elements,t=e[0],i=e[1],r=e[2],n=e[3],s=e[4],a=e[5],o=e[6],l=e[7],h=e[8],u=e[9],c=e[10],p=e[11],d=e[12],f=e[13],m=e[14],g=e[15],y=u*m*l-f*c*l+f*o*p-a*m*p-u*o*g+a*c*g,v=d*c*l-h*m*l-d*o*p+s*m*p+h*o*g-s*c*g,T=h*f*l-d*u*l+d*a*p-s*f*p-h*a*g+s*u*g,x=d*u*o-h*f*o-d*a*c+s*f*c+h*a*m-s*u*m,b=t*y+i*v+r*T+n*x;if(0===b)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);let _=1/b;return e[0]=y*_,e[1]=(f*c*n-u*m*n-f*r*p+i*m*p+u*r*g-i*c*g)*_,e[2]=(a*m*n-f*o*n+f*r*l-i*m*l-a*r*g+i*o*g)*_,e[3]=(u*o*n-a*c*n-u*r*l+i*c*l+a*r*p-i*o*p)*_,e[4]=v*_,e[5]=(h*m*n-d*c*n+d*r*p-t*m*p-h*r*g+t*c*g)*_,e[6]=(d*o*n-s*m*n-d*r*l+t*m*l+s*r*g-t*o*g)*_,e[7]=(s*c*n-h*o*n+h*r*l-t*c*l-s*r*p+t*o*p)*_,e[8]=T*_,e[9]=(d*u*n-h*f*n-d*i*p+t*f*p+h*i*g-t*u*g)*_,e[10]=(s*f*n-d*a*n+d*i*l-t*f*l-s*i*g+t*a*g)*_,e[11]=(h*a*n-s*u*n-h*i*l+t*u*l+s*i*p-t*a*p)*_,e[12]=x*_,e[13]=(h*f*r-d*u*r+d*i*c-t*f*c-h*i*m+t*u*m)*_,e[14]=(d*a*r-s*f*r-d*i*o+t*f*o+s*i*m-t*a*m)*_,e[15]=(s*u*r-h*a*r+h*i*o-t*u*o-s*i*c+t*a*c)*_,this}scale(e){let t=this.elements,i=e.x,r=e.y,n=e.z;return t[0]*=i,t[4]*=r,t[8]*=n,t[1]*=i,t[5]*=r,t[9]*=n,t[2]*=i,t[6]*=r,t[10]*=n,t[3]*=i,t[7]*=r,t[11]*=n,this}getMaxScaleOnAxis(){let 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],r=e[8]*e[8]+e[9]*e[9]+e[10]*e[10];return Math.sqrt(Math.max(t,i,r))}makeTranslation(e,t,i){return this.set(1,0,0,e,0,1,0,t,0,0,1,i,0,0,0,1),this}makeRotationX(e){let 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(e){let 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(e){let 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(e,t){let i=Math.cos(t),r=Math.sin(t),n=1-i,s=e.x,a=e.y,o=e.z,l=n*s,h=n*a;return this.set(l*s+i,l*a-r*o,l*o+r*a,0,l*a+r*o,h*a+i,h*o-r*s,0,l*o-r*a,h*o+r*s,n*o*o+i,0,0,0,0,1),this}makeScale(e,t,i){return this.set(e,0,0,0,0,t,0,0,0,0,i,0,0,0,0,1),this}makeShear(e,t,i,r,n,s){return this.set(1,i,n,0,e,1,s,0,t,r,1,0,0,0,0,1),this}compose(e,t,i){let r=this.elements,n=t._x,s=t._y,a=t._z,o=t._w,l=n+n,h=s+s,u=a+a,c=n*l,p=n*h,d=n*u,f=s*h,m=s*u,g=a*u,y=o*l,v=o*h,T=o*u,x=i.x,b=i.y,_=i.z;return r[0]=(1-(f+g))*x,r[1]=(p+T)*x,r[2]=(d-v)*x,r[3]=0,r[4]=(p-T)*b,r[5]=(1-(c+g))*b,r[6]=(m+y)*b,r[7]=0,r[8]=(d+v)*_,r[9]=(m-y)*_,r[10]=(1-(c+f))*_,r[11]=0,r[12]=e.x,r[13]=e.y,r[14]=e.z,r[15]=1,this}decompose(e,t,i){let r=this.elements,n=py.set(r[0],r[1],r[2]).length(),s=py.set(r[4],r[5],r[6]).length(),a=py.set(r[8],r[9],r[10]).length();this.determinant()<0&&(n=-n),e.x=r[12],e.y=r[13],e.z=r[14],Rc.copy(this);let o=1/n,l=1/s,h=1/a;return Rc.elements[0]*=o,Rc.elements[1]*=o,Rc.elements[2]*=o,Rc.elements[4]*=l,Rc.elements[5]*=l,Rc.elements[6]*=l,Rc.elements[8]*=h,Rc.elements[9]*=h,Rc.elements[10]*=h,t.setFromRotationMatrix(Rc),i.x=n,i.y=s,i.z=a,this}makePerspective(e,t,i,r,n,s){let a=this.elements,o=2*n/(t-e),l=2*n/(i-r),h=(t+e)/(t-e),u=(i+r)/(i-r),c=-(s+n)/(s-n),p=-2*s*n/(s-n);return a[0]=o,a[4]=0,a[8]=h,a[12]=0,a[1]=0,a[5]=l,a[9]=u,a[13]=0,a[2]=0,a[6]=0,a[10]=c,a[14]=p,a[3]=0,a[7]=0,a[11]=-1,a[15]=0,this}makeOrthographic(e,t,i,r,n,s){let a=this.elements,o=1/(t-e),l=1/(i-r),h=1/(s-n),u=(t+e)*o,c=(i+r)*l,p=(s+n)*h;return a[0]=2*o,a[4]=0,a[8]=0,a[12]=-u,a[1]=0,a[5]=2*l,a[9]=0,a[13]=-c,a[2]=0,a[6]=0,a[10]=-2*h,a[14]=-p,a[3]=0,a[7]=0,a[11]=0,a[15]=1,this}equals(e){let t=this.elements,i=e.elements;for(let e=0;e<16;e++)if(t[e]!==i[e])return!1;return!0}fromArray(e,t=0){for(let i=0;i<16;i++)this.elements[i]=e[i+t];return this}toArray(e=[],t=0){let 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}},py=new A,Rc=new Be,Kft=new A(0,0,0),Jft=new A(1,1,1),Qd=new A,jM=new A,Uo=new A,Yce=new Be,Xce=new Hr,xr=class{constructor(e=0,t=0,i=0,r=xr.DEFAULT_ORDER){this.isEuler=!0,this._x=e,this._y=t,this._z=i,this._order=r}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(e,t,i,r=this._order){return this._x=e,this._y=t,this._z=i,this._order=r,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._order)}copy(e){return this._x=e._x,this._y=e._y,this._z=e._z,this._order=e._order,this._onChangeCallback(),this}setFromRotationMatrix(e,t=this._order,i=!0){let r=e.elements,n=r[0],s=r[4],a=r[8],o=r[1],l=r[5],h=r[9],u=r[2],c=r[6],p=r[10];switch(t){case"XYZ":this._y=Math.asin(ts(a,-1,1)),Math.abs(a)<.9999999?(this._x=Math.atan2(-h,p),this._z=Math.atan2(-s,n)):(this._x=Math.atan2(c,l),this._z=0);break;case"YXZ":this._x=Math.asin(-ts(h,-1,1)),Math.abs(h)<.9999999?(this._y=Math.atan2(a,p),this._z=Math.atan2(o,l)):(this._y=Math.atan2(-u,n),this._z=0);break;case"ZXY":this._x=Math.asin(ts(c,-1,1)),Math.abs(c)<.9999999?(this._y=Math.atan2(-u,p),this._z=Math.atan2(-s,l)):(this._y=0,this._z=Math.atan2(o,n));break;case"ZYX":this._y=Math.asin(-ts(u,-1,1)),Math.abs(u)<.9999999?(this._x=Math.atan2(c,p),this._z=Math.atan2(o,n)):(this._x=0,this._z=Math.atan2(-s,l));break;case"YZX":this._z=Math.asin(ts(o,-1,1)),Math.abs(o)<.9999999?(this._x=Math.atan2(-h,l),this._y=Math.atan2(-u,n)):(this._x=0,this._y=Math.atan2(a,p));break;case"XZY":this._z=Math.asin(-ts(s,-1,1)),Math.abs(s)<.9999999?(this._x=Math.atan2(c,l),this._y=Math.atan2(a,n)):(this._x=Math.atan2(-h,p),this._y=0);break;default:console.warn("THREE.Euler: .setFromRotationMatrix() encountered an unknown order: "+t)}return this._order=t,!0===i&&this._onChangeCallback(),this}setFromQuaternion(e,t,i){return Yce.makeRotationFromQuaternion(e),this.setFromRotationMatrix(Yce,t,i)}setFromVector3(e,t=this._order){return this.set(e.x,e.y,e.z,t)}reorder(e){return Xce.setFromEuler(this),this.setFromQuaternion(Xce,e)}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._order===this._order}fromArray(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(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._order,e}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._order}};xr.DEFAULT_ORDER="XYZ";var Py=class{constructor(){this.mask=1}set(e){this.mask=(1<>>0}enable(e){this.mask|=1<1){for(let e=0;e1){for(let e=0;e0&&(i=i.concat(n))}return i}getWorldPosition(e){return this.updateWorldMatrix(!0,!1),e.setFromMatrixPosition(this.matrixWorld)}getWorldQuaternion(e){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(Vb,e,emt),e}getWorldScale(e){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(Vb,tmt,e),e}getWorldDirection(e){this.updateWorldMatrix(!0,!1);let t=this.matrixWorld.elements;return e.set(t[8],t[9],t[10]).normalize()}raycast(){}traverse(e){e(this);let t=this.children;for(let i=0,r=t.length;i0&&(r.userData=this.userData),r.layers=this.layers.mask,r.matrix=this.matrix.toArray(),!1===this.matrixAutoUpdate&&(r.matrixAutoUpdate=!1),this.isInstancedMesh&&(r.type="InstancedMesh",r.count=this.count,r.instanceMatrix=this.instanceMatrix.toJSON(),null!==this.instanceColor&&(r.instanceColor=this.instanceColor.toJSON())),this.isScene)this.background&&(this.background.isColor?r.background=this.background.toJSON():this.background.isTexture&&(r.background=this.background.toJSON(e).uuid)),this.environment&&this.environment.isTexture&&!0!==this.environment.isRenderTargetTexture&&(r.environment=this.environment.toJSON(e).uuid);else if(this.isMesh||this.isLine||this.isPoints){r.geometry=n(e.geometries,this.geometry);let t=this.geometry.parameters;if(void 0!==t&&void 0!==t.shapes){let i=t.shapes;if(Array.isArray(i))for(let t=0,r=i.length;t0){r.children=[];for(let t=0;t0){r.animations=[];for(let t=0;t0&&(i.geometries=t),r.length>0&&(i.materials=r),n.length>0&&(i.textures=n),a.length>0&&(i.images=a),o.length>0&&(i.shapes=o),l.length>0&&(i.skeletons=l),h.length>0&&(i.animations=h),u.length>0&&(i.nodes=u)}return i.object=r,i;function s(e){let t=[];for(let i in e){let r=e[i];delete r.metadata,t.push(r)}return t}}clone(e){return(new this.constructor).copy(this,e)}copy(e,t=!0){if(this.name=e.name,this.up.copy(e.up),this.position.copy(e.position),this.rotation.order=e.rotation.order,this.quaternion.copy(e.quaternion),this.scale.copy(e.scale),this.matrix.copy(e.matrix),this.matrixWorld.copy(e.matrixWorld),this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrixWorldNeedsUpdate=e.matrixWorldNeedsUpdate,this.matrixWorldAutoUpdate=e.matrixWorldAutoUpdate,this.layers.mask=e.layers.mask,this.visible=e.visible,this.castShadow=e.castShadow,this.receiveShadow=e.receiveShadow,this.frustumCulled=e.frustumCulled,this.renderOrder=e.renderOrder,this.userData=JSON.parse(JSON.stringify(e.userData)),!0===t)for(let t=0;t0?r.multiplyScalar(1/Math.sqrt(n)):r.set(0,0,0)}static getBarycoord(e,t,i,r,n){Mc.subVectors(r,t),hp.subVectors(i,t),AH.subVectors(e,t);let s=Mc.dot(Mc),a=Mc.dot(hp),o=Mc.dot(AH),l=hp.dot(hp),h=hp.dot(AH),u=s*l-a*a;if(0===u)return n.set(-2,-1,-1);let c=1/u,p=(l*o-a*h)*c,d=(s*h-a*o)*c;return n.set(1-p-d,d,p)}static containsPoint(e,t,i,r){return this.getBarycoord(e,t,i,r,pp),pp.x>=0&&pp.y>=0&&pp.x+pp.y<=1}static getUV(e,t,i,r,n,s,a,o){return this.getBarycoord(e,t,i,r,pp),o.set(0,0),o.addScaledVector(n,pp.x),o.addScaledVector(s,pp.y),o.addScaledVector(a,pp.z),o}static isFrontFacing(e,t,i,r){return Mc.subVectors(i,t),hp.subVectors(e,t),Mc.cross(hp).dot(r)<0}set(e,t,i){return this.a.copy(e),this.b.copy(t),this.c.copy(i),this}setFromPointsAndIndices(e,t,i,r){return this.a.copy(e[t]),this.b.copy(e[i]),this.c.copy(e[r]),this}setFromAttributeAndIndices(e,t,i,r){return this.a.fromBufferAttribute(e,t),this.b.fromBufferAttribute(e,i),this.c.fromBufferAttribute(e,r),this}clone(){return(new this.constructor).copy(this)}copy(e){return this.a.copy(e.a),this.b.copy(e.b),this.c.copy(e.c),this}getArea(){return Mc.subVectors(this.c,this.b),hp.subVectors(this.a,this.b),.5*Mc.cross(hp).length()}getMidpoint(e){return e.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}getNormal(e){return un.getNormal(this.a,this.b,this.c,e)}getPlane(e){return e.setFromCoplanarPoints(this.a,this.b,this.c)}getBarycoord(e,t){return un.getBarycoord(e,this.a,this.b,this.c,t)}getUV(e,t,i,r,n){return un.getUV(e,this.a,this.b,this.c,t,i,r,n)}containsPoint(e){return un.containsPoint(e,this.a,this.b,this.c)}isFrontFacing(e){return un.isFrontFacing(this.a,this.b,this.c,e)}intersectsBox(e){return e.intersectsTriangle(this)}closestPointToPoint(e,t){let i,r,n=this.a,s=this.b,a=this.c;fy.subVectors(s,n),my.subVectors(a,n),OH.subVectors(e,n);let o=fy.dot(OH),l=my.dot(OH);if(o<=0&&l<=0)return t.copy(n);PH.subVectors(e,s);let h=fy.dot(PH),u=my.dot(PH);if(h>=0&&u<=h)return t.copy(s);let c=o*u-h*l;if(c<=0&&o>=0&&h<=0)return i=o/(o-h),t.copy(n).addScaledVector(fy,i);NH.subVectors(e,a);let p=fy.dot(NH),d=my.dot(NH);if(d>=0&&p<=d)return t.copy(a);let f=p*l-o*d;if(f<=0&&l>=0&&d<=0)return r=l/(l-d),t.copy(n).addScaledVector(my,r);let m=h*d-p*u;if(m<=0&&u-h>=0&&p-d>=0)return eue.subVectors(a,s),r=(u-h)/(u-h+(p-d)),t.copy(s).addScaledVector(eue,r);let g=1/(m+f+c);return i=f*g,r=c*g,t.copy(n).addScaledVector(fy,i).addScaledVector(my,r)}equals(e){return e.a.equals(this.a)&&e.b.equals(this.b)&&e.c.equals(this.c)}},imt=0,jr=class extends Vo{constructor(){super(),this.isMaterial=!0,Object.defineProperty(this,"id",{value:imt++}),this.uuid=ko(),this.name="",this.type="Material",this.blending=fg,this.side=tn,this.vertexColors=!1,this.opacity=1,this.transparent=!1,this.blendSrc=Cx,this.blendDst=KU,this.blendEquation=Ma,this.blendSrcAlpha=null,this.blendDstAlpha=null,this.blendEquationAlpha=null,this.depthFunc=AD,this.depthTest=!0,this.depthWrite=!0,this.stencilWriteMask=255,this.stencilFunc=Jhe,this.stencilRef=0,this.stencilFuncMask=255,this.stencilFail=DD,this.stencilZFail=DD,this.stencilZPass=DD,this.stencilWrite=!1,this.clippingPlanes=null,this.clipIntersection=!1,this.clipShadows=!1,this.shadowSide=null,this.colorWrite=!0,this.precision=null,this.polygonOffset=!1,this.polygonOffsetFactor=0,this.polygonOffsetUnits=0,this.dithering=!1,this.alphaToCoverage=!1,this.premultipliedAlpha=!1,this.forceSinglePass=!1,this.visible=!0,this.toneMapped=!0,this.userData={},this.version=0,this._alphaTest=0}get alphaTest(){return this._alphaTest}set alphaTest(e){this._alphaTest>0!=e>0&&this.version++,this._alphaTest=e}onBuild(){}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(e){if(void 0!==e)for(let t in e){let i=e[t];if(void 0===i){console.warn("THREE.Material: '"+t+"' parameter is undefined.");continue}let r=this[t];void 0!==r?r&&r.isColor?r.set(i):r&&r.isVector3&&i&&i.isVector3?r.copy(i):this[t]=i:console.warn("THREE."+this.type+": '"+t+"' is not a property of this material.")}}toJSON(e){let t=void 0===e||"string"==typeof e;t&&(e={textures:{},images:{}});let i={metadata:{version:4.5,type:"Material",generator:"Material.toJSON"}};function r(e){let t=[];for(let i in e){let r=e[i];delete r.metadata,t.push(r)}return t}if(i.uuid=this.uuid,i.type=this.type,""!==this.name&&(i.name=this.name),this.color&&this.color.isColor&&(i.color=this.color.getHex()),void 0!==this.roughness&&(i.roughness=this.roughness),void 0!==this.metalness&&(i.metalness=this.metalness),void 0!==this.sheen&&(i.sheen=this.sheen),this.sheenColor&&this.sheenColor.isColor&&(i.sheenColor=this.sheenColor.getHex()),void 0!==this.sheenRoughness&&(i.sheenRoughness=this.sheenRoughness),this.emissive&&this.emissive.isColor&&(i.emissive=this.emissive.getHex()),this.emissiveIntensity&&1!==this.emissiveIntensity&&(i.emissiveIntensity=this.emissiveIntensity),this.specular&&this.specular.isColor&&(i.specular=this.specular.getHex()),void 0!==this.specularIntensity&&(i.specularIntensity=this.specularIntensity),this.specularColor&&this.specularColor.isColor&&(i.specularColor=this.specularColor.getHex()),void 0!==this.shininess&&(i.shininess=this.shininess),void 0!==this.clearcoat&&(i.clearcoat=this.clearcoat),void 0!==this.clearcoatRoughness&&(i.clearcoatRoughness=this.clearcoatRoughness),this.clearcoatMap&&this.clearcoatMap.isTexture&&(i.clearcoatMap=this.clearcoatMap.toJSON(e).uuid),this.clearcoatRoughnessMap&&this.clearcoatRoughnessMap.isTexture&&(i.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(e).uuid),this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture&&(i.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(e).uuid,i.clearcoatNormalScale=this.clearcoatNormalScale.toArray()),void 0!==this.iridescence&&(i.iridescence=this.iridescence),void 0!==this.iridescenceIOR&&(i.iridescenceIOR=this.iridescenceIOR),void 0!==this.iridescenceThicknessRange&&(i.iridescenceThicknessRange=this.iridescenceThicknessRange),this.iridescenceMap&&this.iridescenceMap.isTexture&&(i.iridescenceMap=this.iridescenceMap.toJSON(e).uuid),this.iridescenceThicknessMap&&this.iridescenceThicknessMap.isTexture&&(i.iridescenceThicknessMap=this.iridescenceThicknessMap.toJSON(e).uuid),this.map&&this.map.isTexture&&(i.map=this.map.toJSON(e).uuid),this.matcap&&this.matcap.isTexture&&(i.matcap=this.matcap.toJSON(e).uuid),this.alphaMap&&this.alphaMap.isTexture&&(i.alphaMap=this.alphaMap.toJSON(e).uuid),this.lightMap&&this.lightMap.isTexture&&(i.lightMap=this.lightMap.toJSON(e).uuid,i.lightMapIntensity=this.lightMapIntensity),this.aoMap&&this.aoMap.isTexture&&(i.aoMap=this.aoMap.toJSON(e).uuid,i.aoMapIntensity=this.aoMapIntensity),this.bumpMap&&this.bumpMap.isTexture&&(i.bumpMap=this.bumpMap.toJSON(e).uuid,i.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(i.normalMap=this.normalMap.toJSON(e).uuid,i.normalMapType=this.normalMapType,i.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(i.displacementMap=this.displacementMap.toJSON(e).uuid,i.displacementScale=this.displacementScale,i.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(i.roughnessMap=this.roughnessMap.toJSON(e).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(i.metalnessMap=this.metalnessMap.toJSON(e).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(i.emissiveMap=this.emissiveMap.toJSON(e).uuid),this.specularMap&&this.specularMap.isTexture&&(i.specularMap=this.specularMap.toJSON(e).uuid),this.specularIntensityMap&&this.specularIntensityMap.isTexture&&(i.specularIntensityMap=this.specularIntensityMap.toJSON(e).uuid),this.specularColorMap&&this.specularColorMap.isTexture&&(i.specularColorMap=this.specularColorMap.toJSON(e).uuid),this.envMap&&this.envMap.isTexture&&(i.envMap=this.envMap.toJSON(e).uuid,void 0!==this.combine&&(i.combine=this.combine)),void 0!==this.envMapIntensity&&(i.envMapIntensity=this.envMapIntensity),void 0!==this.reflectivity&&(i.reflectivity=this.reflectivity),void 0!==this.refractionRatio&&(i.refractionRatio=this.refractionRatio),this.gradientMap&&this.gradientMap.isTexture&&(i.gradientMap=this.gradientMap.toJSON(e).uuid),void 0!==this.transmission&&(i.transmission=this.transmission),this.transmissionMap&&this.transmissionMap.isTexture&&(i.transmissionMap=this.transmissionMap.toJSON(e).uuid),void 0!==this.thickness&&(i.thickness=this.thickness),this.thicknessMap&&this.thicknessMap.isTexture&&(i.thicknessMap=this.thicknessMap.toJSON(e).uuid),void 0!==this.attenuationDistance&&this.attenuationDistance!==1/0&&(i.attenuationDistance=this.attenuationDistance),void 0!==this.attenuationColor&&(i.attenuationColor=this.attenuationColor.getHex()),void 0!==this.size&&(i.size=this.size),null!==this.shadowSide&&(i.shadowSide=this.shadowSide),void 0!==this.sizeAttenuation&&(i.sizeAttenuation=this.sizeAttenuation),this.blending!==fg&&(i.blending=this.blending),this.side!==tn&&(i.side=this.side),this.vertexColors&&(i.vertexColors=!0),this.opacity<1&&(i.opacity=this.opacity),!0===this.transparent&&(i.transparent=this.transparent),i.depthFunc=this.depthFunc,i.depthTest=this.depthTest,i.depthWrite=this.depthWrite,i.colorWrite=this.colorWrite,i.stencilWrite=this.stencilWrite,i.stencilWriteMask=this.stencilWriteMask,i.stencilFunc=this.stencilFunc,i.stencilRef=this.stencilRef,i.stencilFuncMask=this.stencilFuncMask,i.stencilFail=this.stencilFail,i.stencilZFail=this.stencilZFail,i.stencilZPass=this.stencilZPass,void 0!==this.rotation&&0!==this.rotation&&(i.rotation=this.rotation),!0===this.polygonOffset&&(i.polygonOffset=!0),0!==this.polygonOffsetFactor&&(i.polygonOffsetFactor=this.polygonOffsetFactor),0!==this.polygonOffsetUnits&&(i.polygonOffsetUnits=this.polygonOffsetUnits),void 0!==this.linewidth&&1!==this.linewidth&&(i.linewidth=this.linewidth),void 0!==this.dashSize&&(i.dashSize=this.dashSize),void 0!==this.gapSize&&(i.gapSize=this.gapSize),void 0!==this.scale&&(i.scale=this.scale),!0===this.dithering&&(i.dithering=!0),this.alphaTest>0&&(i.alphaTest=this.alphaTest),!0===this.alphaToCoverage&&(i.alphaToCoverage=this.alphaToCoverage),!0===this.premultipliedAlpha&&(i.premultipliedAlpha=this.premultipliedAlpha),!0===this.forceSinglePass&&(i.forceSinglePass=this.forceSinglePass),!0===this.wireframe&&(i.wireframe=this.wireframe),this.wireframeLinewidth>1&&(i.wireframeLinewidth=this.wireframeLinewidth),"round"!==this.wireframeLinecap&&(i.wireframeLinecap=this.wireframeLinecap),"round"!==this.wireframeLinejoin&&(i.wireframeLinejoin=this.wireframeLinejoin),!0===this.flatShading&&(i.flatShading=this.flatShading),!1===this.visible&&(i.visible=!1),!1===this.toneMapped&&(i.toneMapped=!1),!1===this.fog&&(i.fog=!1),Object.keys(this.userData).length>0&&(i.userData=this.userData),t){let t=r(e.textures),n=r(e.images);t.length>0&&(i.textures=t),n.length>0&&(i.images=n)}return i}clone(){return(new this.constructor).copy(this)}copy(e){this.name=e.name,this.blending=e.blending,this.side=e.side,this.vertexColors=e.vertexColors,this.opacity=e.opacity,this.transparent=e.transparent,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.depthFunc=e.depthFunc,this.depthTest=e.depthTest,this.depthWrite=e.depthWrite,this.stencilWriteMask=e.stencilWriteMask,this.stencilFunc=e.stencilFunc,this.stencilRef=e.stencilRef,this.stencilFuncMask=e.stencilFuncMask,this.stencilFail=e.stencilFail,this.stencilZFail=e.stencilZFail,this.stencilZPass=e.stencilZPass,this.stencilWrite=e.stencilWrite;let t=e.clippingPlanes,i=null;if(null!==t){let e=t.length;i=new Array(e);for(let r=0;r!==e;++r)i[r]=t[r].clone()}return this.clippingPlanes=i,this.clipIntersection=e.clipIntersection,this.clipShadows=e.clipShadows,this.shadowSide=e.shadowSide,this.colorWrite=e.colorWrite,this.precision=e.precision,this.polygonOffset=e.polygonOffset,this.polygonOffsetFactor=e.polygonOffsetFactor,this.polygonOffsetUnits=e.polygonOffsetUnits,this.dithering=e.dithering,this.alphaTest=e.alphaTest,this.alphaToCoverage=e.alphaToCoverage,this.premultipliedAlpha=e.premultipliedAlpha,this.forceSinglePass=e.forceSinglePass,this.visible=e.visible,this.toneMapped=e.toneMapped,this.userData=JSON.parse(JSON.stringify(e.userData)),this}dispose(){this.dispatchEvent({type:"dispose"})}set needsUpdate(e){!0===e&&this.version++}},lr=class extends jr{constructor(e){super(),this.isMeshBasicMaterial=!0,this.type="MeshBasicMaterial",this.color=new je(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.combine=Ax,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.fog=e.fog,this}},ds=new A,qM=new le,Wt=class{constructor(e,t,i=!1){if(Array.isArray(e))throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.isBufferAttribute=!0,this.name="",this.array=e,this.itemSize=t,this.count=void 0!==e?e.length/t:0,this.normalized=i,this.usage=sx,this.updateRange={offset:0,count:-1},this.version=0}onUploadCallback(){}set needsUpdate(e){!0===e&&this.version++}setUsage(e){return this.usage=e,this}copy(e){return this.name=e.name,this.array=new e.array.constructor(e.array),this.itemSize=e.itemSize,this.count=e.count,this.normalized=e.normalized,this.usage=e.usage,this}copyAt(e,t,i){e*=this.itemSize,i*=t.itemSize;for(let r=0,n=this.itemSize;r0&&(e.userData=this.userData),void 0!==this.parameters){let t=this.parameters;for(let i in t)void 0!==t[i]&&(e[i]=t[i]);return e}e.data={attributes:{}};let t=this.index;null!==t&&(e.data.index={type:t.array.constructor.name,array:Array.prototype.slice.call(t.array)});let i=this.attributes;for(let t in i){let r=i[t];e.data.attributes[t]=r.toJSON(e.data)}let r={},n=!1;for(let t in this.morphAttributes){let i=this.morphAttributes[t],s=[];for(let t=0,r=i.length;t0&&(r[t]=s,n=!0)}n&&(e.data.morphAttributes=r,e.data.morphTargetsRelative=this.morphTargetsRelative);let s=this.groups;s.length>0&&(e.data.groups=JSON.parse(JSON.stringify(s)));let a=this.boundingSphere;return null!==a&&(e.data.boundingSphere={center:a.center.toArray(),radius:a.radius}),e}clone(){return(new this.constructor).copy(this)}copy(e){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;let t={};this.name=e.name;let i=e.index;null!==i&&this.setIndex(i.clone(t));let r=e.attributes;for(let e in r){let i=r[e];this.setAttribute(e,i.clone(t))}let n=e.morphAttributes;for(let e in n){let i=[],r=n[e];for(let e=0,n=r.length;e0){let i=e[t[0]];if(void 0!==i){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let e=0,t=i.length;ei.far?null:{distance:h,point:KM.clone(),object:e}}function JM(e,t,i,r,n,s,a,o,l){e.getVertexPosition(a,jb),e.getVertexPosition(o,Wb),e.getVertexPosition(l,qb);let h=smt(e,t,i,r,jb,Wb,qb,UH);if(h){n&&(XM.fromBufferAttribute(n,a),$M.fromBufferAttribute(n,o),ZM.fromBufferAttribute(n,l),h.uv=un.getUV(UH,jb,Wb,qb,XM,$M,ZM,new le)),s&&(XM.fromBufferAttribute(s,a),$M.fromBufferAttribute(s,o),ZM.fromBufferAttribute(s,l),h.uv2=un.getUV(UH,jb,Wb,qb,XM,$M,ZM,new le));let e={a:a,b:o,c:l,normal:new A,materialIndex:0};un.getNormal(jb,Wb,qb,e.normal),h.face=e}return h}var io=class extends lt{constructor(e=1,t=1,i=1,r=1,n=1,s=1){super(),this.type="BoxGeometry",this.parameters={width:e,height:t,depth:i,widthSegments:r,heightSegments:n,depthSegments:s};let a=this;r=Math.floor(r),n=Math.floor(n),s=Math.floor(s);let o=[],l=[],h=[],u=[],c=0,p=0;function d(e,t,i,r,n,s,d,f,m,g,y){let v=s/m,T=d/g,x=s/2,b=d/2,_=f/2,E=m+1,w=g+1,S=0,I=0,M=new A;for(let s=0;s0?1:-1,h.push(M.x,M.y,M.z),u.push(o/m),u.push(1-s/g),S+=1}}for(let e=0;e0&&(t.defines=this.defines),t.vertexShader=this.vertexShader,t.fragmentShader=this.fragmentShader;let i={};for(let e in this.extensions)!0===this.extensions[e]&&(i[e]=!0);return Object.keys(i).length>0&&(t.extensions=i),t}},xp=class extends sr{constructor(){super(),this.isCamera=!0,this.type="Camera",this.matrixWorldInverse=new Be,this.projectionMatrix=new Be,this.projectionMatrixInverse=new Be}copy(e,t){return super.copy(e,t),this.matrixWorldInverse.copy(e.matrixWorldInverse),this.projectionMatrix.copy(e.projectionMatrix),this.projectionMatrixInverse.copy(e.projectionMatrixInverse),this}getWorldDirection(e){this.updateWorldMatrix(!0,!1);let t=this.matrixWorld.elements;return e.set(-t[8],-t[9],-t[10]).normalize()}updateMatrixWorld(e){super.updateMatrixWorld(e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(e,t){super.updateWorldMatrix(e,t),this.matrixWorldInverse.copy(this.matrixWorld).invert()}clone(){return(new this.constructor).copy(this)}},kr=class extends xp{constructor(e=50,t=1,i=.1,r=2e3){super(),this.isPerspectiveCamera=!0,this.type="PerspectiveCamera",this.fov=e,this.zoom=1,this.near=i,this.far=r,this.focus=10,this.aspect=t,this.view=null,this.filmGauge=35,this.filmOffset=0,this.updateProjectionMatrix()}copy(e,t){return super.copy(e,t),this.fov=e.fov,this.zoom=e.zoom,this.near=e.near,this.far=e.far,this.focus=e.focus,this.aspect=e.aspect,this.view=null===e.view?null:Object.assign({},e.view),this.filmGauge=e.filmGauge,this.filmOffset=e.filmOffset,this}setFocalLength(e){let t=.5*this.getFilmHeight()/e;this.fov=2*ax*Math.atan(t),this.updateProjectionMatrix()}getFocalLength(){let e=Math.tan(.5*mg*this.fov);return.5*this.getFilmHeight()/e}getEffectiveFOV(){return 2*ax*Math.atan(Math.tan(.5*mg*this.fov)/this.zoom)}getFilmWidth(){return this.filmGauge*Math.min(this.aspect,1)}getFilmHeight(){return this.filmGauge/Math.max(this.aspect,1)}setViewOffset(e,t,i,r,n,s){this.aspect=e/t,null===this.view&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=e,this.view.fullHeight=t,this.view.offsetX=i,this.view.offsetY=r,this.view.width=n,this.view.height=s,this.updateProjectionMatrix()}clearViewOffset(){null!==this.view&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){let e=this.near,t=e*Math.tan(.5*mg*this.fov)/this.zoom,i=2*t,r=this.aspect*i,n=-.5*r,s=this.view;if(null!==this.view&&this.view.enabled){let e=s.fullWidth,a=s.fullHeight;n+=s.offsetX*r/e,t-=s.offsetY*i/a,r*=s.width/e,i*=s.height/a}let a=this.filmOffset;0!==a&&(n+=e*a/this.getFilmWidth()),this.projectionMatrix.makePerspective(n,n+r,t,t-i,e,this.far),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(e){let t=super.toJSON(e);return t.object.fov=this.fov,t.object.zoom=this.zoom,t.object.near=this.near,t.object.far=this.far,t.object.focus=this.focus,t.object.aspect=this.aspect,null!==this.view&&(t.object.view=Object.assign({},this.view)),t.object.filmGauge=this.filmGauge,t.object.filmOffset=this.filmOffset,t}},yy=-90,Ty=1,ND=class extends sr{constructor(e,t,i){super(),this.type="CubeCamera",this.renderTarget=i;let r=new kr(yy,Ty,e,t);r.layers=this.layers,r.up.set(0,1,0),r.lookAt(1,0,0),this.add(r);let n=new kr(yy,Ty,e,t);n.layers=this.layers,n.up.set(0,1,0),n.lookAt(-1,0,0),this.add(n);let s=new kr(yy,Ty,e,t);s.layers=this.layers,s.up.set(0,0,-1),s.lookAt(0,1,0),this.add(s);let a=new kr(yy,Ty,e,t);a.layers=this.layers,a.up.set(0,0,1),a.lookAt(0,-1,0),this.add(a);let o=new kr(yy,Ty,e,t);o.layers=this.layers,o.up.set(0,1,0),o.lookAt(0,0,1),this.add(o);let l=new kr(yy,Ty,e,t);l.layers=this.layers,l.up.set(0,1,0),l.lookAt(0,0,-1),this.add(l)}update(e,t){null===this.parent&&this.updateMatrixWorld();let i=this.renderTarget,[r,n,s,a,o,l]=this.children,h=e.getRenderTarget(),u=e.toneMapping,c=e.xr.enabled;e.toneMapping=Fu,e.xr.enabled=!1;let p=i.texture.generateMipmaps;i.texture.generateMipmaps=!1,e.setRenderTarget(i,0),e.render(t,r),e.setRenderTarget(i,1),e.render(t,n),e.setRenderTarget(i,2),e.render(t,s),e.setRenderTarget(i,3),e.render(t,a),e.setRenderTarget(i,4),e.render(t,o),i.texture.generateMipmaps=p,e.setRenderTarget(i,5),e.render(t,l),e.setRenderTarget(h),e.toneMapping=u,e.xr.enabled=c,i.texture.needsPMREMUpdate=!0}},Tg=class extends Bi{constructor(e,t,i,r,n,s,a,o,l,h){super(e=void 0!==e?e:[],t=void 0!==t?t:nf,i,r,n,s,a,o,l,h),this.isCubeTexture=!0,this.flipY=!1}get images(){return this.image}set images(e){this.image=e}},LD=class extends zr{constructor(e=1,t={}){super(e,e,t),this.isWebGLCubeRenderTarget=!0;let i={width:e,height:e,depth:1},r=[i,i,i,i,i,i];this.texture=new Tg(r,t.mapping,t.wrapS,t.wrapT,t.magFilter,t.minFilter,t.format,t.type,t.anisotropy,t.encoding),this.texture.isRenderTargetTexture=!0,this.texture.generateMipmaps=void 0!==t.generateMipmaps&&t.generateMipmaps,this.texture.minFilter=void 0!==t.minFilter?t.minFilter:li}fromEquirectangularTexture(e,t){this.texture.type=t.type,this.texture.encoding=t.encoding,this.texture.generateMipmaps=t.generateMipmaps,this.texture.minFilter=t.minFilter,this.texture.magFilter=t.magFilter;let i={uniforms:{tEquirect:{value:null}},vertexShader:"\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\tvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\n\t\t\t\t\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n\n\t\t\t\t}\n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvWorldDirection = transformDirection( position, modelMatrix );\n\n\t\t\t\t\t#include \n\t\t\t\t\t#include \n\n\t\t\t\t}\n\t\t\t",fragmentShader:"\n\n\t\t\t\tuniform sampler2D tEquirect;\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\t#include \n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvec3 direction = normalize( vWorldDirection );\n\n\t\t\t\t\tvec2 sampleUV = equirectUv( direction );\n\n\t\t\t\t\tgl_FragColor = texture2D( tEquirect, sampleUV );\n\n\t\t\t\t}\n\t\t\t"},r=new io(5,5,5),n=new Yt({name:"CubemapFromEquirect",uniforms:Ny(i.uniforms),vertexShader:i.vertexShader,fragmentShader:i.fragmentShader,side:Wn,blending:Ui});n.uniforms.tEquirect.value=t;let s=new rt(r,n),a=t.minFilter;return t.minFilter===Ca&&(t.minFilter=li),new ND(1,10,this).update(e,s),t.minFilter=a,s.geometry.dispose(),s.material.dispose(),this}clear(e,t,i,r){let n=e.getRenderTarget();for(let n=0;n<6;n++)e.setRenderTarget(this,n),e.clear(t,i,r);e.setRenderTarget(n)}},BH=new A,cmt=new A,umt=new Ni,xi=class{constructor(e=new A(1,0,0),t=0){this.isPlane=!0,this.normal=e,this.constant=t}set(e,t){return this.normal.copy(e),this.constant=t,this}setComponents(e,t,i,r){return this.normal.set(e,t,i),this.constant=r,this}setFromNormalAndCoplanarPoint(e,t){return this.normal.copy(e),this.constant=-t.dot(this.normal),this}setFromCoplanarPoints(e,t,i){let r=BH.subVectors(i,t).cross(cmt.subVectors(e,t)).normalize();return this.setFromNormalAndCoplanarPoint(r,e),this}copy(e){return this.normal.copy(e.normal),this.constant=e.constant,this}normalize(){let e=1/this.normal.length();return this.normal.multiplyScalar(e),this.constant*=e,this}negate(){return this.constant*=-1,this.normal.negate(),this}distanceToPoint(e){return this.normal.dot(e)+this.constant}distanceToSphere(e){return this.distanceToPoint(e.center)-e.radius}projectPoint(e,t){return t.copy(this.normal).multiplyScalar(-this.distanceToPoint(e)).add(e)}intersectLine(e,t){let i=e.delta(BH),r=this.normal.dot(i);if(0===r)return 0===this.distanceToPoint(e.start)?t.copy(e.start):null;let n=-(e.start.dot(this.normal)+this.constant)/r;return n<0||n>1?null:t.copy(i).multiplyScalar(n).add(e.start)}intersectsLine(e){let t=this.distanceToPoint(e.start),i=this.distanceToPoint(e.end);return t<0&&i>0||i<0&&t>0}intersectsBox(e){return e.intersectsPlane(this)}intersectsSphere(e){return e.intersectsPlane(this)}coplanarPoint(e){return e.copy(this.normal).multiplyScalar(-this.constant)}applyMatrix4(e,t){let i=t||umt.getNormalMatrix(e),r=this.coplanarPoint(BH).applyMatrix4(e),n=this.normal.applyMatrix3(i).normalize();return this.constant=-r.dot(n),this}translate(e){return this.constant-=e.dot(this.normal),this}equals(e){return e.normal.equals(this.normal)&&e.constant===this.constant}clone(){return(new this.constructor).copy(this)}},Ey=new qi,QM=new A,ea=class{constructor(e=new xi,t=new xi,i=new xi,r=new xi,n=new xi,s=new xi){this.planes=[e,t,i,r,n,s]}set(e,t,i,r,n,s){let a=this.planes;return a[0].copy(e),a[1].copy(t),a[2].copy(i),a[3].copy(r),a[4].copy(n),a[5].copy(s),this}copy(e){let t=this.planes;for(let i=0;i<6;i++)t[i].copy(e.planes[i]);return this}setFromProjectionMatrix(e){let t=this.planes,i=e.elements,r=i[0],n=i[1],s=i[2],a=i[3],o=i[4],l=i[5],h=i[6],u=i[7],c=i[8],p=i[9],d=i[10],f=i[11],m=i[12],g=i[13],y=i[14],v=i[15];return t[0].setComponents(a-r,u-o,f-c,v-m).normalize(),t[1].setComponents(a+r,u+o,f+c,v+m).normalize(),t[2].setComponents(a+n,u+l,f+p,v+g).normalize(),t[3].setComponents(a-n,u-l,f-p,v-g).normalize(),t[4].setComponents(a-s,u-h,f-d,v-y).normalize(),t[5].setComponents(a+s,u+h,f+d,v+y).normalize(),this}intersectsObject(e){let t=e.geometry;return null===t.boundingSphere&&t.computeBoundingSphere(),Ey.copy(t.boundingSphere).applyMatrix4(e.matrixWorld),this.intersectsSphere(Ey)}intersectsSprite(e){return Ey.center.set(0,0,0),Ey.radius=.7071067811865476,Ey.applyMatrix4(e.matrixWorld),this.intersectsSphere(Ey)}intersectsSphere(e){let t=this.planes,i=e.center,r=-e.radius;for(let e=0;e<6;e++)if(t[e].distanceToPoint(i)0?e.max.x:e.min.x,QM.y=r.normal.y>0?e.max.y:e.min.y,QM.z=r.normal.z>0?e.max.z:e.min.z,r.distanceToPoint(QM)<0)return!1}return!0}containsPoint(e){let t=this.planes;for(let i=0;i<6;i++)if(t[i].distanceToPoint(e)<0)return!1;return!0}clone(){return(new this.constructor).copy(this)}};function ipe(){let e=null,t=!1,i=null,r=null;function n(t,s){i(t,s),r=e.requestAnimationFrame(n)}return{start:function(){!0!==t&&null!==i&&(r=e.requestAnimationFrame(n),t=!0)},stop:function(){e.cancelAnimationFrame(r),t=!1},setAnimationLoop:function(e){i=e},setContext:function(t){e=t}}}function hmt(e,t){let i=t.isWebGL2,r=new WeakMap;return{get:function(e){return e.isInterleavedBufferAttribute&&(e=e.data),r.get(e)},remove:function(t){t.isInterleavedBufferAttribute&&(t=t.data);let i=r.get(t);i&&(e.deleteBuffer(i.buffer),r.delete(t))},update:function(t,n){if(t.isGLBufferAttribute){let e=r.get(t);return void((!e||e.version0?i:t).get(m));let g=e.xr,y=g.getSession&&g.getSession();y&&"additive"===y.environmentBlendMode&&(m=null),null===m?f(h,u):m&&m.isColor&&(f(m,1),a=!0),(e.autoClear||a)&&e.clear(e.autoClearColor,e.autoClearDepth,e.autoClearStencil),m&&(m.isCubeTexture||m.mapping===jy)?(void 0===l&&(l=new rt(new io(1,1,1),new Yt({name:"BackgroundCubeMaterial",uniforms:Ny(Cc.backgroundCube.uniforms),vertexShader:Cc.backgroundCube.vertexShader,fragmentShader:Cc.backgroundCube.fragmentShader,side:Wn,depthTest:!1,depthWrite:!1,fog:!1})),l.geometry.deleteAttribute("normal"),l.geometry.deleteAttribute("uv"),l.onBeforeRender=function(e,t,i){this.matrixWorld.copyPosition(i.matrixWorld)},Object.defineProperty(l.material,"envMap",{get:function(){return this.uniforms.envMap.value}}),n.update(l)),l.material.uniforms.envMap.value=m,l.material.uniforms.flipEnvMap.value=m.isCubeTexture&&!1===m.isRenderTargetTexture?-1:1,l.material.uniforms.backgroundBlurriness.value=s.backgroundBlurriness,l.material.uniforms.backgroundIntensity.value=s.backgroundIntensity,l.material.toneMapped=m.encoding!==gr,(c!==m||p!==m.version||d!==e.toneMapping)&&(l.material.needsUpdate=!0,c=m,p=m.version,d=e.toneMapping),l.layers.enableAll(),r.unshift(l,l.geometry,l.material,0,0,null)):m&&m.isTexture&&(void 0===o&&(o=new rt(new is(2,2),new Yt({name:"BackgroundMaterial",uniforms:Ny(Cc.background.uniforms),vertexShader:Cc.background.vertexShader,fragmentShader:Cc.background.fragmentShader,side:tn,depthTest:!1,depthWrite:!1,fog:!1})),o.geometry.deleteAttribute("normal"),Object.defineProperty(o.material,"map",{get:function(){return this.uniforms.t2D.value}}),n.update(o)),o.material.uniforms.t2D.value=m,o.material.uniforms.backgroundIntensity.value=s.backgroundIntensity,o.material.toneMapped=m.encoding!==gr,!0===m.matrixAutoUpdate&&m.updateMatrix(),o.material.uniforms.uvTransform.value.copy(m.matrix),(c!==m||p!==m.version||d!==e.toneMapping)&&(o.material.needsUpdate=!0,c=m,p=m.version,d=e.toneMapping),o.layers.enableAll(),r.unshift(o,o.geometry,o.material,0,0,null))}}}function W0t(e,t,i,r){let n=e.getParameter(34921),s=r.isWebGL2?null:t.get("OES_vertex_array_object"),a=r.isWebGL2||null!==s,o={},l=d(null),h=l,u=!1;function c(t){return r.isWebGL2?e.bindVertexArray(t):s.bindVertexArrayOES(t)}function p(t){return r.isWebGL2?e.deleteVertexArray(t):s.deleteVertexArrayOES(t)}function d(e){let t=[],i=[],r=[];for(let e=0;e=0){let i=n[t],r=s[t];if(void 0===r&&("instanceMatrix"===t&&e.instanceMatrix&&(r=e.instanceMatrix),"instanceColor"===t&&e.instanceColor&&(r=e.instanceColor)),void 0===i||i.attribute!==r||r&&i.data!==r.data)return!0;a++}return h.attributesNum!==a||h.index!==r}(n,T,p,x),b&&function(e,t,i,r){let n={},s=t.attributes,a=0,o=i.getAttributes();for(let t in o)if(o[t].location>=0){let i=s[t];void 0===i&&("instanceMatrix"===t&&e.instanceMatrix&&(i=e.instanceMatrix),"instanceColor"===t&&e.instanceColor&&(i=e.instanceColor));let r={};r.attribute=i,i&&i.data&&(r.data=i.data),n[t]=r,a++}h.attributes=n,h.attributesNum=a,h.index=r}(n,T,p,x)}else{let e=!0===l.wireframe;(h.geometry!==T.id||h.program!==p.id||h.wireframe!==e)&&(h.geometry=T.id,h.program=p.id,h.wireframe=e,b=!0)}null!==x&&i.update(x,34963),(b||u)&&(u=!1,function(n,s,a,o){if(!1===r.isWebGL2&&(n.isInstancedMesh||o.isInstancedBufferGeometry)&&null===t.get("ANGLE_instanced_arrays"))return;f();let l=o.attributes,h=a.getAttributes(),u=s.defaultAttributeValues;for(let t in h){let r=h[t];if(r.location>=0){let s=l[t];if(void 0===s&&("instanceMatrix"===t&&n.instanceMatrix&&(s=n.instanceMatrix),"instanceColor"===t&&n.instanceColor&&(s=n.instanceColor)),void 0!==s){let t=s.normalized,a=s.itemSize,l=i.get(s);if(void 0===l)continue;let h=l.buffer,u=l.type,c=l.bytesPerElement;if(s.isInterleavedBufferAttribute){let i=s.data,l=i.stride,p=s.offset;if(i.isInstancedInterleavedBuffer){for(let e=0;e0&&e.getShaderPrecisionFormat(35632,36338).precision>0)return"highp";t="mediump"}return"mediump"===t&&e.getShaderPrecisionFormat(35633,36337).precision>0&&e.getShaderPrecisionFormat(35632,36337).precision>0?"mediump":"lowp"}let s="undefined"!=typeof WebGL2RenderingContext&&e instanceof WebGL2RenderingContext,a=void 0!==i.precision?i.precision:"highp",o=n(a);o!==a&&(console.warn("THREE.WebGLRenderer:",a,"not supported, using",o,"instead."),a=o);let l=s||t.has("WEBGL_draw_buffers"),h=!0===i.logarithmicDepthBuffer,u=e.getParameter(34930),c=e.getParameter(35660),p=e.getParameter(3379),d=e.getParameter(34076),f=e.getParameter(34921),m=e.getParameter(36347),g=e.getParameter(36348),y=e.getParameter(36349),v=c>0,T=s||t.has("OES_texture_float");return{isWebGL2:s,drawBuffers:l,getMaxAnisotropy:function(){if(void 0!==r)return r;if(!0===t.has("EXT_texture_filter_anisotropic")){let i=t.get("EXT_texture_filter_anisotropic");r=e.getParameter(i.MAX_TEXTURE_MAX_ANISOTROPY_EXT)}else r=0;return r},getMaxPrecision:n,precision:a,logarithmicDepthBuffer:h,maxTextures:u,maxVertexTextures:c,maxTextureSize:p,maxCubemapSize:d,maxAttributes:f,maxVertexUniforms:m,maxVaryings:g,maxFragmentUniforms:y,vertexTextures:v,floatFragmentTextures:T,floatVertexTextures:v&&T,maxSamples:s?e.getParameter(36183):0}}function X0t(e){let t=this,i=null,r=0,n=!1,s=!1,a=new xi,o=new Ni,l={value:null,needsUpdate:!1};function h(e,i,r,n){let s=null!==e?e.length:0,h=null;if(0!==s){if(h=l.value,!0!==n||null===h){let t=r+4*s,n=i.matrixWorldInverse;o.getNormalMatrix(n),(null===h||h.length0),t.numPlanes=r,t.numIntersection=0);else{let e=s?0:r,t=4*e,n=f.clippingState||null;l.value=n,n=h(c,o,t,u);for(let e=0;e!==t;++e)n[e]=i[e];f.clippingState=n,this.numIntersection=p?this.numPlanes:0,this.numPlanes+=e}}}function $0t(e){let t=new WeakMap;function i(e,t){return t===vg?e.mapping=nf:t===ix&&(e.mapping=sf),e}function r(e){let i=e.target;i.removeEventListener("dispose",r);let n=t.get(i);void 0!==n&&(t.delete(i),n.dispose())}return{get:function(n){if(n&&n.isTexture&&!1===n.isRenderTargetTexture){let s=n.mapping;if(s===vg||s===ix){if(t.has(n)){return i(t.get(n).texture,n.mapping)}{let s=n.image;if(s&&s.height>0){let a=new LD(s.height/2);return a.fromEquirectangularTexture(e,n),t.set(n,a),n.addEventListener("dispose",r),i(a.texture,n.mapping)}return null}}}return n},dispose:function(){t=new WeakMap}}}var ki=class extends xp{constructor(e=-1,t=1,i=1,r=-1,n=.1,s=2e3){super(),this.isOrthographicCamera=!0,this.type="OrthographicCamera",this.zoom=1,this.view=null,this.left=e,this.right=t,this.top=i,this.bottom=r,this.near=n,this.far=s,this.updateProjectionMatrix()}copy(e,t){return super.copy(e,t),this.left=e.left,this.right=e.right,this.top=e.top,this.bottom=e.bottom,this.near=e.near,this.far=e.far,this.zoom=e.zoom,this.view=null===e.view?null:Object.assign({},e.view),this}setViewOffset(e,t,i,r,n,s){null===this.view&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=e,this.view.fullHeight=t,this.view.offsetX=i,this.view.offsetY=r,this.view.width=n,this.view.height=s,this.updateProjectionMatrix()}clearViewOffset(){null!==this.view&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){let e=(this.right-this.left)/(2*this.zoom),t=(this.top-this.bottom)/(2*this.zoom),i=(this.right+this.left)/2,r=(this.top+this.bottom)/2,n=i-e,s=i+e,a=r+t,o=r-t;if(null!==this.view&&this.view.enabled){let e=(this.right-this.left)/this.view.fullWidth/this.zoom,t=(this.top-this.bottom)/this.view.fullHeight/this.zoom;n+=e*this.view.offsetX,s=n+e*this.view.width,a-=t*this.view.offsetY,o=a-t*this.view.height}this.projectionMatrix.makeOrthographic(n,s,a,o,this.near,this.far),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(e){let t=super.toJSON(e);return t.object.zoom=this.zoom,t.object.left=this.left,t.object.right=this.right,t.object.top=this.top,t.object.bottom=this.bottom,t.object.near=this.near,t.object.far=this.far,null!==this.view&&(t.object.view=Object.assign({},this.view)),t}},My=4,rue=[.125,.215,.35,.446,.526,.582],ug=20,kH=new ki,iue=new je,GH=null,cg=(1+Math.sqrt(5))/2,by=1/cg,nue=[new A(1,1,1),new A(-1,1,1),new A(1,1,-1),new A(-1,1,-1),new A(0,cg,by),new A(0,cg,-by),new A(by,0,cg),new A(-by,0,cg),new A(cg,by,0),new A(-cg,by,0)],Ip=class{constructor(e){this._renderer=e,this._pingPongRenderTarget=null,this._lodMax=0,this._cubeSize=0,this._lodPlanes=[],this._sizeLods=[],this._sigmas=[],this._blurMaterial=null,this._cubemapMaterial=null,this._equirectMaterial=null,this._compileMaterial(this._blurMaterial)}fromScene(e,t=0,i=.1,r=100){GH=this._renderer.getRenderTarget(),this._setSize(256);let n=this._allocateTargets();return n.depthBuffer=!0,this._sceneToCubeUV(e,i,r,n),t>0&&this._blur(n,0,0,t),this._applyPMREM(n),this._cleanup(n),n}fromEquirectangular(e,t=null){return this._fromTexture(e,t)}fromCubemap(e,t=null){return this._fromTexture(e,t)}compileCubemapShader(){null===this._cubemapMaterial&&(this._cubemapMaterial=oue(),this._compileMaterial(this._cubemapMaterial))}compileEquirectangularShader(){null===this._equirectMaterial&&(this._equirectMaterial=aue(),this._compileMaterial(this._equirectMaterial))}dispose(){this._dispose(),null!==this._cubemapMaterial&&this._cubemapMaterial.dispose(),null!==this._equirectMaterial&&this._equirectMaterial.dispose()}_setSize(e){this._lodMax=Math.floor(Math.log2(e)),this._cubeSize=Math.pow(2,this._lodMax)}_dispose(){null!==this._blurMaterial&&this._blurMaterial.dispose(),null!==this._pingPongRenderTarget&&this._pingPongRenderTarget.dispose();for(let e=0;e2?l:0,l,l),o.setRenderTarget(r),p&&o.render(c,n),o.render(e,n)}c.geometry.dispose(),c.material.dispose(),o.toneMapping=h,o.autoClear=l,e.background=d}_textureToCubeUV(e,t){let i=this._renderer,r=e.mapping===nf||e.mapping===sf;r?(null===this._cubemapMaterial&&(this._cubemapMaterial=oue()),this._cubemapMaterial.uniforms.flipEnvMap.value=!1===e.isRenderTargetTexture?-1:1):null===this._equirectMaterial&&(this._equirectMaterial=aue());let n=r?this._cubemapMaterial:this._equirectMaterial,s=new rt(this._lodPlanes[0],n);n.uniforms.envMap.value=e;let a=this._cubeSize;tD(t,0,0,3*a,2*a),i.setRenderTarget(t),i.render(s,kH)}_applyPMREM(e){let t=this._renderer,i=t.autoClear;t.autoClear=!1;for(let t=1;tug&&console.warn(`sigmaRadians, ${n}, is too large and will clip, as it requested ${f} samples when the maximum is set to ${ug}`);let m=[],g=0;for(let e=0;ey-My?r-y+My:0),4*(this._cubeSize-v),3*v,2*v),o.setRenderTarget(t),o.render(h,kH)}};function Z0t(e){let t=[],i=[],r=[],n=e,s=e-My+1+rue.length;for(let a=0;ae-My?o=rue[a-e+My-1]:0===a&&(o=0),r.push(o);let l=1/(s-2),h=-l,u=1+l,c=[h,h,u,h,u,u,h,h,u,u,h,u],p=6,d=6,f=3,m=2,g=1,y=new Float32Array(f*d*p),v=new Float32Array(m*d*p),T=new Float32Array(g*d*p);for(let e=0;e2?0:-1,r=[t,i,0,t+2/3,i,0,t+2/3,i+1,0,t,i,0,t+2/3,i+1,0,t,i+1,0];y.set(r,f*d*e),v.set(c,m*d*e);let n=[e,e,e,e,e,e];T.set(n,g*d*e)}let x=new lt;x.setAttribute("position",new Wt(y,f)),x.setAttribute("uv",new Wt(v,m)),x.setAttribute("faceIndex",new Wt(T,g)),t.push(x),n>My&&n--}return{lodPlanes:t,sizeLods:i,sigmas:r}}function sue(e,t,i){let r=new zr(e,t,i);return r.texture.mapping=jy,r.texture.name="PMREM.cubeUv",r.scissorTest=!0,r}function tD(e,t,i,r,n){e.viewport.set(t,i,r,n),e.scissor.set(t,i,r,n)}function K0t(e,t,i){let r=new Float32Array(ug),n=new A(0,1,0);return new Yt({name:"SphericalGaussianBlur",defines:{n:ug,CUBEUV_TEXEL_WIDTH:1/t,CUBEUV_TEXEL_HEIGHT:1/i,CUBEUV_MAX_MIP:`${e}.0`},uniforms:{envMap:{value:null},samples:{value:1},weights:{value:r},latitudinal:{value:!1},dTheta:{value:0},mipInt:{value:0},poleAxis:{value:n}},vertexShader:tB(),fragmentShader:"\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\t\t\tuniform int samples;\n\t\t\tuniform float weights[ n ];\n\t\t\tuniform bool latitudinal;\n\t\t\tuniform float dTheta;\n\t\t\tuniform float mipInt;\n\t\t\tuniform vec3 poleAxis;\n\n\t\t\t#define ENVMAP_TYPE_CUBE_UV\n\t\t\t#include \n\n\t\t\tvec3 getSample( float theta, vec3 axis ) {\n\n\t\t\t\tfloat cosTheta = cos( theta );\n\t\t\t\t// Rodrigues' axis-angle rotation\n\t\t\t\tvec3 sampleDirection = vOutputDirection * cosTheta\n\t\t\t\t\t+ cross( axis, vOutputDirection ) * sin( theta )\n\t\t\t\t\t+ axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta );\n\n\t\t\t\treturn bilinearCubeUV( envMap, sampleDirection, mipInt );\n\n\t\t\t}\n\n\t\t\tvoid main() {\n\n\t\t\t\tvec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection );\n\n\t\t\t\tif ( all( equal( axis, vec3( 0.0 ) ) ) ) {\n\n\t\t\t\t\taxis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x );\n\n\t\t\t\t}\n\n\t\t\t\taxis = normalize( axis );\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\t\t\t\tgl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis );\n\n\t\t\t\tfor ( int i = 1; i < n; i++ ) {\n\n\t\t\t\t\tif ( i >= samples ) {\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfloat theta = dTheta * float( i );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( theta, axis );\n\n\t\t\t\t}\n\n\t\t\t}\n\t\t",blending:Ui,depthTest:!1,depthWrite:!1})}function aue(){return new Yt({name:"EquirectangularToCubeUV",uniforms:{envMap:{value:null}},vertexShader:tB(),fragmentShader:"\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\n\t\t\t#include \n\n\t\t\tvoid main() {\n\n\t\t\t\tvec3 outputDirection = normalize( vOutputDirection );\n\t\t\t\tvec2 uv = equirectUv( outputDirection );\n\n\t\t\t\tgl_FragColor = vec4( texture2D ( envMap, uv ).rgb, 1.0 );\n\n\t\t\t}\n\t\t",blending:Ui,depthTest:!1,depthWrite:!1})}function oue(){return new Yt({name:"CubemapToCubeUV",uniforms:{envMap:{value:null},flipEnvMap:{value:-1}},vertexShader:tB(),fragmentShader:"\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tuniform float flipEnvMap;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform samplerCube envMap;\n\n\t\t\tvoid main() {\n\n\t\t\t\tgl_FragColor = textureCube( envMap, vec3( flipEnvMap * vOutputDirection.x, vOutputDirection.yz ) );\n\n\t\t\t}\n\t\t",blending:Ui,depthTest:!1,depthWrite:!1})}function tB(){return"\n\n\t\tprecision mediump float;\n\t\tprecision mediump int;\n\n\t\tattribute float faceIndex;\n\n\t\tvarying vec3 vOutputDirection;\n\n\t\t// RH coordinate system; PMREM face-indexing convention\n\t\tvec3 getDirection( vec2 uv, float face ) {\n\n\t\t\tuv = 2.0 * uv - 1.0;\n\n\t\t\tvec3 direction = vec3( uv, 1.0 );\n\n\t\t\tif ( face == 0.0 ) {\n\n\t\t\t\tdirection = direction.zyx; // ( 1, v, u ) pos x\n\n\t\t\t} else if ( face == 1.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xz *= -1.0; // ( -u, 1, -v ) pos y\n\n\t\t\t} else if ( face == 2.0 ) {\n\n\t\t\t\tdirection.x *= -1.0; // ( -u, v, 1 ) pos z\n\n\t\t\t} else if ( face == 3.0 ) {\n\n\t\t\t\tdirection = direction.zyx;\n\t\t\t\tdirection.xz *= -1.0; // ( -1, v, -u ) neg x\n\n\t\t\t} else if ( face == 4.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xy *= -1.0; // ( -u, -1, v ) neg y\n\n\t\t\t} else if ( face == 5.0 ) {\n\n\t\t\t\tdirection.z *= -1.0; // ( u, v, -1 ) neg z\n\n\t\t\t}\n\n\t\t\treturn direction;\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tvOutputDirection = getDirection( uv, faceIndex );\n\t\t\tgl_Position = vec4( position, 1.0 );\n\n\t\t}\n\t"}function J0t(e){let t=new WeakMap,i=null;function r(e){let i=e.target;i.removeEventListener("dispose",r);let n=t.get(i);void 0!==n&&(t.delete(i),n.dispose())}return{get:function(n){if(n&&n.isTexture){let s=n.mapping,a=s===vg||s===ix,o=s===nf||s===sf;if(a||o){if(n.isRenderTargetTexture&&!0===n.needsPMREMUpdate){n.needsPMREMUpdate=!1;let r=t.get(n);return null===i&&(i=new Ip(e)),r=a?i.fromEquirectangular(n,r):i.fromCubemap(n,r),t.set(n,r),r.texture}if(t.has(n))return t.get(n).texture;{let s=n.image;if(a&&s&&s.height>0||o&&s&&function(e){let t=0,i=6;for(let r=0;rt.maxTextureSize&&(m=Math.ceil(f/t.maxTextureSize),f=t.maxTextureSize);let g=new Float32Array(f*m*4*n),y=new Oy(g,f,m,n);y.type=Da,y.needsUpdate=!0;let v=4*d;for(let e=0;e0)return e;let n=t*i,s=lue[n];if(void 0===s&&(s=new Float32Array(n),lue[n]=s),0!==t){r.toArray(s,0);for(let r=1,n=0;r!==t;++r)n+=i,e[r].toArray(s,n)}return s}function Ts(e,t){if(e.length!==t.length)return!1;for(let i=0,r=e.length;i":" "} ${n}: ${i[e]}`)}return r.join("\n")}function Zvt(e){switch(e){case Rl:return["Linear","( value )"];case gr:return["sRGB","( value )"];default:return console.warn("THREE.WebGLProgram: Unsupported encoding:",e),["Linear","( value )"]}}function mue(e,t,i){let r=e.getShaderParameter(t,35713),n=e.getShaderInfoLog(t).trim();if(r&&""===n)return"";let s=/ERROR: 0:(\d+)/.exec(n);if(s){let r=parseInt(s[1]);return i.toUpperCase()+"\n\n"+n+"\n\n"+$vt(e.getShaderSource(t),r)}return n}function Kvt(e,t){let i=Zvt(t);return"vec4 "+e+"( vec4 value ) { return LinearTo"+i[0]+i[1]+"; }"}function Jvt(e,t){let i;switch(t){case Dhe:i="Linear";break;case Che:i="Reinhard";break;case Ahe:i="OptimizedCineon";break;case Ohe:i="ACESFilmic";break;case Phe:i="Custom";break;default:console.warn("THREE.WebGLProgram: Unsupported toneMapping:",t),i="Linear"}return"vec3 "+e+"( vec3 color ) { return "+i+"ToneMapping( color ); }"}function Qvt(e){return[e.extensionDerivatives||e.envMapCubeUVHeight||e.bumpMap||e.tangentSpaceNormalMap||e.clearcoatNormalMap||e.flatShading||"physical"===e.shaderID?"#extension GL_OES_standard_derivatives : enable":"",(e.extensionFragDepth||e.logarithmicDepthBuffer)&&e.rendererExtensionFragDepth?"#extension GL_EXT_frag_depth : enable":"",e.extensionDrawBuffers&&e.rendererExtensionDrawBuffers?"#extension GL_EXT_draw_buffers : require":"",(e.extensionShaderTextureLOD||e.envMap||e.transmission)&&e.rendererExtensionShaderTextureLod?"#extension GL_EXT_shader_texture_lod : enable":""].filter(Jb).join("\n")}function eyt(e){let t=[];for(let i in e){let r=e[i];!1!==r&&t.push("#define "+i+" "+r)}return t.join("\n")}function tyt(e,t){let i={},r=e.getProgramParameter(t,35721);for(let n=0;n/gm;function V4(e){return e.replace(ryt,iyt)}function iyt(e,t){let i=Xr[t];if(void 0===i)throw new Error("Can not resolve #include <"+t+">");return V4(i)}var nyt=/#pragma unroll_loop_start\s+for\s*\(\s*int\s+i\s*=\s*(\d+)\s*;\s*i\s*<\s*(\d+)\s*;\s*i\s*\+\+\s*\)\s*{([\s\S]+?)}\s+#pragma unroll_loop_end/g;function yue(e){return e.replace(nyt,syt)}function syt(e,t,i,r){let n="";for(let e=parseInt(t);e0&&(n+="\n"),s=[m,g].filter(Jb).join("\n"),s.length>0&&(s+="\n")):(n=[Tue(i),"#define SHADER_NAME "+i.shaderName,g,i.instancing?"#define USE_INSTANCING":"",i.instancingColor?"#define USE_INSTANCING_COLOR":"",i.supportsVertexTextures?"#define VERTEX_TEXTURES":"",i.useFog&&i.fog?"#define USE_FOG":"",i.useFog&&i.fogExp2?"#define FOG_EXP2":"",i.map?"#define USE_MAP":"",i.envMap?"#define USE_ENVMAP":"",i.envMap?"#define "+p:"",i.lightMap?"#define USE_LIGHTMAP":"",i.aoMap?"#define USE_AOMAP":"",i.emissiveMap?"#define USE_EMISSIVEMAP":"",i.bumpMap?"#define USE_BUMPMAP":"",i.normalMap?"#define USE_NORMALMAP":"",i.normalMap&&i.objectSpaceNormalMap?"#define OBJECTSPACE_NORMALMAP":"",i.normalMap&&i.tangentSpaceNormalMap?"#define TANGENTSPACE_NORMALMAP":"",i.clearcoatMap?"#define USE_CLEARCOATMAP":"",i.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",i.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",i.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",i.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",i.displacementMap&&i.supportsVertexTextures?"#define USE_DISPLACEMENTMAP":"",i.specularMap?"#define USE_SPECULARMAP":"",i.specularIntensityMap?"#define USE_SPECULARINTENSITYMAP":"",i.specularColorMap?"#define USE_SPECULARCOLORMAP":"",i.roughnessMap?"#define USE_ROUGHNESSMAP":"",i.metalnessMap?"#define USE_METALNESSMAP":"",i.alphaMap?"#define USE_ALPHAMAP":"",i.transmission?"#define USE_TRANSMISSION":"",i.transmissionMap?"#define USE_TRANSMISSIONMAP":"",i.thicknessMap?"#define USE_THICKNESSMAP":"",i.sheenColorMap?"#define USE_SHEENCOLORMAP":"",i.sheenRoughnessMap?"#define USE_SHEENROUGHNESSMAP":"",i.vertexTangents?"#define USE_TANGENT":"",i.vertexColors?"#define USE_COLOR":"",i.vertexAlphas?"#define USE_COLOR_ALPHA":"",i.vertexUvs?"#define USE_UV":"",i.uvsVertexOnly?"#define UVS_VERTEX_ONLY":"",i.flatShading?"#define FLAT_SHADED":"",i.skinning?"#define USE_SKINNING":"",i.morphTargets?"#define USE_MORPHTARGETS":"",i.morphNormals&&!1===i.flatShading?"#define USE_MORPHNORMALS":"",i.morphColors&&i.isWebGL2?"#define USE_MORPHCOLORS":"",i.morphTargetsCount>0&&i.isWebGL2?"#define MORPHTARGETS_TEXTURE":"",i.morphTargetsCount>0&&i.isWebGL2?"#define MORPHTARGETS_TEXTURE_STRIDE "+i.morphTextureStride:"",i.morphTargetsCount>0&&i.isWebGL2?"#define MORPHTARGETS_COUNT "+i.morphTargetsCount:"",i.doubleSided?"#define DOUBLE_SIDED":"",i.flipSided?"#define FLIP_SIDED":"",i.shadowMapEnabled?"#define USE_SHADOWMAP":"",i.shadowMapEnabled?"#define "+u:"",i.sizeAttenuation?"#define USE_SIZEATTENUATION":"",i.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",i.logarithmicDepthBuffer&&i.rendererExtensionFragDepth?"#define USE_LOGDEPTHBUF_EXT":"","uniform mat4 modelMatrix;","uniform mat4 modelViewMatrix;","uniform mat4 projectionMatrix;","uniform mat4 viewMatrix;","uniform mat3 normalMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;","#ifdef USE_INSTANCING","\tattribute mat4 instanceMatrix;","#endif","#ifdef USE_INSTANCING_COLOR","\tattribute vec3 instanceColor;","#endif","attribute vec3 position;","attribute vec3 normal;","attribute vec2 uv;","#ifdef USE_TANGENT","\tattribute vec4 tangent;","#endif","#if defined( USE_COLOR_ALPHA )","\tattribute vec4 color;","#elif defined( USE_COLOR )","\tattribute vec3 color;","#endif","#if ( defined( USE_MORPHTARGETS ) && ! defined( MORPHTARGETS_TEXTURE ) )","\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","\n"].filter(Jb).join("\n"),s=[m,Tue(i),"#define SHADER_NAME "+i.shaderName,g,i.useFog&&i.fog?"#define USE_FOG":"",i.useFog&&i.fogExp2?"#define FOG_EXP2":"",i.map?"#define USE_MAP":"",i.matcap?"#define USE_MATCAP":"",i.envMap?"#define USE_ENVMAP":"",i.envMap?"#define "+c:"",i.envMap?"#define "+p:"",i.envMap?"#define "+d:"",f?"#define CUBEUV_TEXEL_WIDTH "+f.texelWidth:"",f?"#define CUBEUV_TEXEL_HEIGHT "+f.texelHeight:"",f?"#define CUBEUV_MAX_MIP "+f.maxMip+".0":"",i.lightMap?"#define USE_LIGHTMAP":"",i.aoMap?"#define USE_AOMAP":"",i.emissiveMap?"#define USE_EMISSIVEMAP":"",i.bumpMap?"#define USE_BUMPMAP":"",i.normalMap?"#define USE_NORMALMAP":"",i.normalMap&&i.objectSpaceNormalMap?"#define OBJECTSPACE_NORMALMAP":"",i.normalMap&&i.tangentSpaceNormalMap?"#define TANGENTSPACE_NORMALMAP":"",i.clearcoat?"#define USE_CLEARCOAT":"",i.clearcoatMap?"#define USE_CLEARCOATMAP":"",i.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",i.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",i.iridescence?"#define USE_IRIDESCENCE":"",i.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",i.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",i.specularMap?"#define USE_SPECULARMAP":"",i.specularIntensityMap?"#define USE_SPECULARINTENSITYMAP":"",i.specularColorMap?"#define USE_SPECULARCOLORMAP":"",i.roughnessMap?"#define USE_ROUGHNESSMAP":"",i.metalnessMap?"#define USE_METALNESSMAP":"",i.alphaMap?"#define USE_ALPHAMAP":"",i.alphaTest?"#define USE_ALPHATEST":"",i.sheen?"#define USE_SHEEN":"",i.sheenColorMap?"#define USE_SHEENCOLORMAP":"",i.sheenRoughnessMap?"#define USE_SHEENROUGHNESSMAP":"",i.transmission?"#define USE_TRANSMISSION":"",i.transmissionMap?"#define USE_TRANSMISSIONMAP":"",i.thicknessMap?"#define USE_THICKNESSMAP":"",i.decodeVideoTexture?"#define DECODE_VIDEO_TEXTURE":"",i.vertexTangents?"#define USE_TANGENT":"",i.vertexColors||i.instancingColor?"#define USE_COLOR":"",i.vertexAlphas?"#define USE_COLOR_ALPHA":"",i.vertexUvs?"#define USE_UV":"",i.uvsVertexOnly?"#define UVS_VERTEX_ONLY":"",i.gradientMap?"#define USE_GRADIENTMAP":"",i.flatShading?"#define FLAT_SHADED":"",i.doubleSided?"#define DOUBLE_SIDED":"",i.flipSided?"#define FLIP_SIDED":"",i.shadowMapEnabled?"#define USE_SHADOWMAP":"",i.shadowMapEnabled?"#define "+u:"",i.premultipliedAlpha?"#define PREMULTIPLIED_ALPHA":"",i.physicallyCorrectLights?"#define PHYSICALLY_CORRECT_LIGHTS":"",i.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",i.logarithmicDepthBuffer&&i.rendererExtensionFragDepth?"#define USE_LOGDEPTHBUF_EXT":"","uniform mat4 viewMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;",i.toneMapping!==Fu?"#define TONE_MAPPING":"",i.toneMapping!==Fu?Xr.tonemapping_pars_fragment:"",i.toneMapping!==Fu?Jvt("toneMapping",i.toneMapping):"",i.dithering?"#define DITHERING":"",i.opaque?"#define OPAQUE":"",Xr.encodings_pars_fragment,Kvt("linearToOutputTexel",i.outputEncoding),i.useDepthPacking?"#define DEPTH_PACKING "+i.depthPacking:"","\n"].filter(Jb).join("\n")),l=V4(l),l=gue(l,i),l=vue(l,i),h=V4(h),h=gue(h,i),h=vue(h,i),l=yue(l),h=yue(h),i.isWebGL2&&!0!==i.isRawShaderMaterial&&(v="#version 300 es\n",n=["precision mediump sampler2DArray;","#define attribute in","#define varying out","#define texture2D texture"].join("\n")+"\n"+n,s=["#define varying in",i.glslVersion===R4?"":"layout(location = 0) out highp vec4 pc_fragColor;",i.glslVersion===R4?"":"#define gl_FragColor pc_fragColor","#define gl_FragDepthEXT gl_FragDepth","#define texture2D texture","#define textureCube texture","#define texture2DProj textureProj","#define texture2DLodEXT textureLod","#define texture2DProjLodEXT textureProjLod","#define textureCubeLodEXT textureLod","#define texture2DGradEXT textureGrad","#define texture2DProjGradEXT textureProjGrad","#define textureCubeGradEXT textureGrad"].join("\n")+"\n"+s);let T,x,b=v+s+h,_=fue(a,35633,v+n+l),E=fue(a,35632,b);if(a.attachShader(y,_),a.attachShader(y,E),void 0!==i.index0AttributeName?a.bindAttribLocation(y,0,i.index0AttributeName):!0===i.morphTargets&&a.bindAttribLocation(y,0,"position"),a.linkProgram(y),e.debug.checkShaderErrors){let e=a.getProgramInfoLog(y).trim(),t=a.getShaderInfoLog(_).trim(),i=a.getShaderInfoLog(E).trim(),r=!0,o=!0;if(!1===a.getProgramParameter(y,35714)){r=!1;let t=mue(a,_,"vertex"),i=mue(a,E,"fragment");console.error("THREE.WebGLProgram: Shader Error "+a.getError()+" - VALIDATE_STATUS "+a.getProgramParameter(y,35715)+"\n\nProgram Info Log: "+e+"\n"+t+"\n"+i)}else""!==e?console.warn("THREE.WebGLProgram: Program Info Log:",e):(""===t||""===i)&&(o=!1);o&&(this.diagnostics={runnable:r,programLog:e,vertexShader:{log:t,prefix:n},fragmentShader:{log:i,prefix:s}})}return a.deleteShader(_),a.deleteShader(E),this.getUniforms=function(){return void 0===T&&(T=new Cy(a,y)),T},this.getAttributes=function(){return void 0===x&&(x=tyt(a,y)),x},this.destroy=function(){r.releaseStatesOfProgram(this),a.deleteProgram(y),this.program=void 0},this.name=i.shaderName,this.id=Xvt++,this.cacheKey=t,this.usedTimes=1,this.program=y,this.vertexShader=_,this.fragmentShader=E,this}var pyt=0,z4=class{constructor(){this.shaderCache=new Map,this.materialCache=new Map}update(e){let t=e.vertexShader,i=e.fragmentShader,r=this._getShaderStage(t),n=this._getShaderStage(i),s=this._getShaderCacheForMaterial(e);return!1===s.has(r)&&(s.add(r),r.usedTimes++),!1===s.has(n)&&(s.add(n),n.usedTimes++),this}remove(e){let t=this.materialCache.get(e);for(let e of t)e.usedTimes--,0===e.usedTimes&&this.shaderCache.delete(e.code);return this.materialCache.delete(e),this}getVertexShaderID(e){return this._getShaderStage(e.vertexShader).id}getFragmentShaderID(e){return this._getShaderStage(e.fragmentShader).id}dispose(){this.shaderCache.clear(),this.materialCache.clear()}_getShaderCacheForMaterial(e){let t=this.materialCache,i=t.get(e);return void 0===i&&(i=new Set,t.set(e,i)),i}_getShaderStage(e){let t=this.shaderCache,i=t.get(e);return void 0===i&&(i=new j4(e),t.set(e,i)),i}},j4=class{constructor(e){this.id=pyt++,this.code=e,this.usedTimes=0}};function dyt(e,t,i,r,n,s,a){let o=new Py,l=new z4,h=[],u=n.isWebGL2,c=n.logarithmicDepthBuffer,p=n.vertexTextures,d=n.precision,f={MeshDepthMaterial:"depth",MeshDistanceMaterial:"distanceRGBA",MeshNormalMaterial:"normal",MeshBasicMaterial:"basic",MeshLambertMaterial:"lambert",MeshPhongMaterial:"phong",MeshToonMaterial:"toon",MeshStandardMaterial:"physical",MeshPhysicalMaterial:"physical",MeshMatcapMaterial:"matcap",LineBasicMaterial:"basic",LineDashedMaterial:"dashed",PointsMaterial:"points",ShadowMaterial:"shadow",SpriteMaterial:"sprite"};return{getParameters:function(s,o,h,m,g){let y=m.fog,v=g.geometry,T=s.isMeshStandardMaterial?m.environment:null,x=(s.isMeshStandardMaterial?i:t).get(s.envMap||T),b=x&&x.mapping===jy?x.image.height:null,_=f[s.type];null!==s.precision&&(d=n.getMaxPrecision(s.precision),d!==s.precision&&console.warn("THREE.WebGLProgram.getParameters:",s.precision,"not supported, using",d,"instead."));let E,w,S,I,M=v.morphAttributes.position||v.morphAttributes.normal||v.morphAttributes.color,A=void 0!==M?M.length:0,D=0;if(void 0!==v.morphAttributes.position&&(D=1),void 0!==v.morphAttributes.normal&&(D=2),void 0!==v.morphAttributes.color&&(D=3),_){let e=Cc[_];E=e.vertexShader,w=e.fragmentShader}else E=s.vertexShader,w=s.fragmentShader,l.update(s),S=l.getVertexShaderID(s),I=l.getFragmentShaderID(s);let O=e.getRenderTarget(),R=s.alphaTest>0,C=s.clearcoat>0,N=s.iridescence>0;return{isWebGL2:u,shaderID:_,shaderName:s.type,vertexShader:E,fragmentShader:w,defines:s.defines,customVertexShaderID:S,customFragmentShaderID:I,isRawShaderMaterial:!0===s.isRawShaderMaterial,glslVersion:s.glslVersion,precision:d,instancing:!0===g.isInstancedMesh,instancingColor:!0===g.isInstancedMesh&&null!==g.instanceColor,supportsVertexTextures:p,outputEncoding:null===O?e.outputEncoding:!0===O.isXRRenderTarget?O.texture.encoding:Rl,map:!!s.map,matcap:!!s.matcap,envMap:!!x,envMapMode:x&&x.mapping,envMapCubeUVHeight:b,lightMap:!!s.lightMap,aoMap:!!s.aoMap,emissiveMap:!!s.emissiveMap,bumpMap:!!s.bumpMap,normalMap:!!s.normalMap,objectSpaceNormalMap:s.normalMapType===Khe,tangentSpaceNormalMap:s.normalMapType===ff,decodeVideoTexture:!!s.map&&!0===s.map.isVideoTexture&&s.map.encoding===gr,clearcoat:C,clearcoatMap:C&&!!s.clearcoatMap,clearcoatRoughnessMap:C&&!!s.clearcoatRoughnessMap,clearcoatNormalMap:C&&!!s.clearcoatNormalMap,iridescence:N,iridescenceMap:N&&!!s.iridescenceMap,iridescenceThicknessMap:N&&!!s.iridescenceThicknessMap,displacementMap:!!s.displacementMap,roughnessMap:!!s.roughnessMap,metalnessMap:!!s.metalnessMap,specularMap:!!s.specularMap,specularIntensityMap:!!s.specularIntensityMap,specularColorMap:!!s.specularColorMap,opaque:!1===s.transparent&&s.blending===fg,alphaMap:!!s.alphaMap,alphaTest:R,gradientMap:!!s.gradientMap,sheen:s.sheen>0,sheenColorMap:!!s.sheenColorMap,sheenRoughnessMap:!!s.sheenRoughnessMap,transmission:s.transmission>0,transmissionMap:!!s.transmissionMap,thicknessMap:!!s.thicknessMap,combine:s.combine,vertexTangents:!!s.normalMap&&!!v.attributes.tangent,vertexColors:s.vertexColors,vertexAlphas:!0===s.vertexColors&&!!v.attributes.color&&4===v.attributes.color.itemSize,vertexUvs:!!(s.map||s.bumpMap||s.normalMap||s.specularMap||s.alphaMap||s.emissiveMap||s.roughnessMap||s.metalnessMap||s.clearcoatMap||s.clearcoatRoughnessMap||s.clearcoatNormalMap||s.iridescenceMap||s.iridescenceThicknessMap||s.displacementMap||s.transmissionMap||s.thicknessMap||s.specularIntensityMap||s.specularColorMap||s.sheenColorMap||s.sheenRoughnessMap),uvsVertexOnly:!(s.map||s.bumpMap||s.normalMap||s.specularMap||s.alphaMap||s.emissiveMap||s.roughnessMap||s.metalnessMap||s.clearcoatNormalMap||s.iridescenceMap||s.iridescenceThicknessMap||s.transmission>0||s.transmissionMap||s.thicknessMap||s.specularIntensityMap||s.specularColorMap||s.sheen>0||s.sheenColorMap||s.sheenRoughnessMap||!s.displacementMap),fog:!!y,useFog:!0===s.fog,fogExp2:y&&y.isFogExp2,flatShading:!!s.flatShading,sizeAttenuation:s.sizeAttenuation,logarithmicDepthBuffer:c,skinning:!0===g.isSkinnedMesh,morphTargets:void 0!==v.morphAttributes.position,morphNormals:void 0!==v.morphAttributes.normal,morphColors:void 0!==v.morphAttributes.color,morphTargetsCount:A,morphTextureStride:D,numDirLights:o.directional.length,numPointLights:o.point.length,numSpotLights:o.spot.length,numSpotLightMaps:o.spotLightMap.length,numRectAreaLights:o.rectArea.length,numHemiLights:o.hemi.length,numDirLightShadows:o.directionalShadowMap.length,numPointLightShadows:o.pointShadowMap.length,numSpotLightShadows:o.spotShadowMap.length,numSpotLightShadowsWithMaps:o.numSpotLightShadowsWithMaps,numClippingPlanes:a.numPlanes,numClipIntersection:a.numIntersection,dithering:s.dithering,shadowMapEnabled:e.shadowMap.enabled&&h.length>0,shadowMapType:e.shadowMap.type,toneMapping:s.toneMapped?e.toneMapping:Fu,physicallyCorrectLights:e.physicallyCorrectLights,premultipliedAlpha:s.premultipliedAlpha,doubleSided:s.side===yi,flipSided:s.side===Wn,useDepthPacking:!!s.depthPacking,depthPacking:s.depthPacking||0,index0AttributeName:s.index0AttributeName,extensionDerivatives:s.extensions&&s.extensions.derivatives,extensionFragDepth:s.extensions&&s.extensions.fragDepth,extensionDrawBuffers:s.extensions&&s.extensions.drawBuffers,extensionShaderTextureLOD:s.extensions&&s.extensions.shaderTextureLOD,rendererExtensionFragDepth:u||r.has("EXT_frag_depth"),rendererExtensionDrawBuffers:u||r.has("WEBGL_draw_buffers"),rendererExtensionShaderTextureLod:u||r.has("EXT_shader_texture_lod"),customProgramCacheKey:s.customProgramCacheKey()}},getProgramCacheKey:function(t){let i=[];if(t.shaderID?i.push(t.shaderID):(i.push(t.customVertexShaderID),i.push(t.customFragmentShaderID)),void 0!==t.defines)for(let e in t.defines)i.push(e),i.push(t.defines[e]);return!1===t.isRawShaderMaterial&&(function(e,t){e.push(t.precision),e.push(t.outputEncoding),e.push(t.envMapMode),e.push(t.envMapCubeUVHeight),e.push(t.combine),e.push(t.vertexUvs),e.push(t.fogExp2),e.push(t.sizeAttenuation),e.push(t.morphTargetsCount),e.push(t.morphAttributeCount),e.push(t.numDirLights),e.push(t.numPointLights),e.push(t.numSpotLights),e.push(t.numSpotLightMaps),e.push(t.numHemiLights),e.push(t.numRectAreaLights),e.push(t.numDirLightShadows),e.push(t.numPointLightShadows),e.push(t.numSpotLightShadows),e.push(t.numSpotLightShadowsWithMaps),e.push(t.shadowMapType),e.push(t.toneMapping),e.push(t.numClippingPlanes),e.push(t.numClipIntersection),e.push(t.depthPacking)}(i,t),function(e,t){o.disableAll(),t.isWebGL2&&o.enable(0),t.supportsVertexTextures&&o.enable(1),t.instancing&&o.enable(2),t.instancingColor&&o.enable(3),t.map&&o.enable(4),t.matcap&&o.enable(5),t.envMap&&o.enable(6),t.lightMap&&o.enable(7),t.aoMap&&o.enable(8),t.emissiveMap&&o.enable(9),t.bumpMap&&o.enable(10),t.normalMap&&o.enable(11),t.objectSpaceNormalMap&&o.enable(12),t.tangentSpaceNormalMap&&o.enable(13),t.clearcoat&&o.enable(14),t.clearcoatMap&&o.enable(15),t.clearcoatRoughnessMap&&o.enable(16),t.clearcoatNormalMap&&o.enable(17),t.iridescence&&o.enable(18),t.iridescenceMap&&o.enable(19),t.iridescenceThicknessMap&&o.enable(20),t.displacementMap&&o.enable(21),t.specularMap&&o.enable(22),t.roughnessMap&&o.enable(23),t.metalnessMap&&o.enable(24),t.gradientMap&&o.enable(25),t.alphaMap&&o.enable(26),t.alphaTest&&o.enable(27),t.vertexColors&&o.enable(28),t.vertexAlphas&&o.enable(29),t.vertexUvs&&o.enable(30),t.vertexTangents&&o.enable(31),t.uvsVertexOnly&&o.enable(32),e.push(o.mask),o.disableAll(),t.fog&&o.enable(0),t.useFog&&o.enable(1),t.flatShading&&o.enable(2),t.logarithmicDepthBuffer&&o.enable(3),t.skinning&&o.enable(4),t.morphTargets&&o.enable(5),t.morphNormals&&o.enable(6),t.morphColors&&o.enable(7),t.premultipliedAlpha&&o.enable(8),t.shadowMapEnabled&&o.enable(9),t.physicallyCorrectLights&&o.enable(10),t.doubleSided&&o.enable(11),t.flipSided&&o.enable(12),t.useDepthPacking&&o.enable(13),t.dithering&&o.enable(14),t.specularIntensityMap&&o.enable(15),t.specularColorMap&&o.enable(16),t.transmission&&o.enable(17),t.transmissionMap&&o.enable(18),t.thicknessMap&&o.enable(19),t.sheen&&o.enable(20),t.sheenColorMap&&o.enable(21),t.sheenRoughnessMap&&o.enable(22),t.decodeVideoTexture&&o.enable(23),t.opaque&&o.enable(24),e.push(o.mask)}(i,t),i.push(e.outputEncoding)),i.push(t.customProgramCacheKey),i.join()},getUniforms:function(e){let t,i=f[e.type];if(i){let e=Cc[i];t=hn.clone(e.uniforms)}else t=e.uniforms;return t},acquireProgram:function(t,i){let r;for(let e=0,t=h.length;e0?r.push(u):!0===a.transparent?n.push(u):i.push(u)},unshift:function(e,t,a,o,l,h){let u=s(e,t,a,o,l,h);a.transmission>0?r.unshift(u):!0===a.transparent?n.unshift(u):i.unshift(u)},finish:function(){for(let i=t,r=e.length;i1&&i.sort(e||myt),r.length>1&&r.sort(t||Eue),n.length>1&&n.sort(t||Eue)}}}function gyt(){let e=new WeakMap;return{get:function(t,i){let r,n=e.get(t);return void 0===n?(r=new bue,e.set(t,[r])):i>=n.length?(r=new bue,n.push(r)):r=n[i],r},dispose:function(){e=new WeakMap}}}function vyt(){let e={};return{get:function(t){if(void 0!==e[t.id])return e[t.id];let i;switch(t.type){case"DirectionalLight":i={direction:new A,color:new je};break;case"SpotLight":i={position:new A,direction:new A,color:new je,distance:0,coneCos:0,penumbraCos:0,decay:0};break;case"PointLight":i={position:new A,color:new je,distance:0,decay:0};break;case"HemisphereLight":i={direction:new A,skyColor:new je,groundColor:new je};break;case"RectAreaLight":i={color:new je,position:new A,halfWidth:new A,halfHeight:new A}}return e[t.id]=i,i}}}function yyt(){let e={};return{get:function(t){if(void 0!==e[t.id])return e[t.id];let i;switch(t.type){case"DirectionalLight":case"SpotLight":i={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new le};break;case"PointLight":i={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new le,shadowCameraNear:1,shadowCameraFar:1e3}}return e[t.id]=i,i}}}var Tyt=0;function Eyt(e,t){return(t.castShadow?2:0)-(e.castShadow?2:0)+(t.map?1:0)-(e.map?1:0)}function byt(e,t){let i=new vyt,r=yyt(),n={version:0,hash:{directionalLength:-1,pointLength:-1,spotLength:-1,rectAreaLength:-1,hemiLength:-1,numDirectionalShadows:-1,numPointShadows:-1,numSpotShadows:-1,numSpotMaps:-1},ambient:[0,0,0],probe:[],directional:[],directionalShadow:[],directionalShadowMap:[],directionalShadowMatrix:[],spot:[],spotLightMap:[],spotShadow:[],spotShadowMap:[],spotLightMatrix:[],rectArea:[],rectAreaLTC1:null,rectAreaLTC2:null,point:[],pointShadow:[],pointShadowMap:[],pointShadowMatrix:[],hemi:[],numSpotLightShadowsWithMaps:0};for(let e=0;e<9;e++)n.probe.push(new A);let s=new A,a=new Be,o=new Be;return{setup:function(s,a){let o=0,l=0,h=0;for(let e=0;e<9;e++)n.probe[e].set(0,0,0);let u=0,c=0,p=0,d=0,f=0,m=0,g=0,y=0,v=0,T=0;s.sort(Eyt);let x=!0!==a?Math.PI:1;for(let e=0,t=s.length;e0&&(t.isWebGL2||!0===e.has("OES_texture_float_linear")?(n.rectAreaLTC1=At.LTC_FLOAT_1,n.rectAreaLTC2=At.LTC_FLOAT_2):!0===e.has("OES_texture_half_float_linear")?(n.rectAreaLTC1=At.LTC_HALF_1,n.rectAreaLTC2=At.LTC_HALF_2):console.error("THREE.WebGLRenderer: Unable to use RectAreaLight. Missing WebGL extensions.")),n.ambient[0]=o,n.ambient[1]=l,n.ambient[2]=h;let b=n.hash;(b.directionalLength!==u||b.pointLength!==c||b.spotLength!==p||b.rectAreaLength!==d||b.hemiLength!==f||b.numDirectionalShadows!==m||b.numPointShadows!==g||b.numSpotShadows!==y||b.numSpotMaps!==v)&&(n.directional.length=u,n.spot.length=p,n.rectArea.length=d,n.point.length=c,n.hemi.length=f,n.directionalShadow.length=m,n.directionalShadowMap.length=m,n.pointShadow.length=g,n.pointShadowMap.length=g,n.spotShadow.length=y,n.spotShadowMap.length=y,n.directionalShadowMatrix.length=m,n.pointShadowMatrix.length=g,n.spotLightMatrix.length=y+v-T,n.spotLightMap.length=v,n.numSpotLightShadowsWithMaps=T,b.directionalLength=u,b.pointLength=c,b.spotLength=p,b.rectAreaLength=d,b.hemiLength=f,b.numDirectionalShadows=m,b.numPointShadows=g,b.numSpotShadows=y,b.numSpotMaps=v,n.version=Tyt++)},setupView:function(e,t){let i=0,r=0,l=0,h=0,u=0,c=t.matrixWorldInverse;for(let t=0,p=e.length;t=a.length?(s=new xue(e,t),a.push(s)):s=a[n],s},dispose:function(){i=new WeakMap}}}var _p=class extends jr{constructor(e){super(),this.isMeshDepthMaterial=!0,this.type="MeshDepthMaterial",this.depthPacking=Zhe,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.setValues(e)}copy(e){return super.copy(e),this.depthPacking=e.depthPacking,this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this}},hx=class extends jr{constructor(e){super(),this.isMeshDistanceMaterial=!0,this.type="MeshDistanceMaterial",this.referencePosition=new A,this.nearDistance=1,this.farDistance=1e3,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.setValues(e)}copy(e){return super.copy(e),this.referencePosition.copy(e.referencePosition),this.nearDistance=e.nearDistance,this.farDistance=e.farDistance,this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this}},Iyt="void main() {\n\tgl_Position = vec4( position, 1.0 );\n}",_yt="uniform sampler2D shadow_pass;\nuniform vec2 resolution;\nuniform float radius;\n#include \nvoid main() {\n\tconst float samples = float( VSM_SAMPLES );\n\tfloat mean = 0.0;\n\tfloat squared_mean = 0.0;\n\tfloat uvStride = samples <= 1.0 ? 0.0 : 2.0 / ( samples - 1.0 );\n\tfloat uvStart = samples <= 1.0 ? 0.0 : - 1.0;\n\tfor ( float i = 0.0; i < samples; i ++ ) {\n\t\tfloat uvOffset = uvStart + i * uvStride;\n\t\t#ifdef HORIZONTAL_PASS\n\t\t\tvec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( uvOffset, 0.0 ) * radius ) / resolution ) );\n\t\t\tmean += distribution.x;\n\t\t\tsquared_mean += distribution.y * distribution.y + distribution.x * distribution.x;\n\t\t#else\n\t\t\tfloat depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, uvOffset ) * radius ) / resolution ) );\n\t\t\tmean += depth;\n\t\t\tsquared_mean += depth * depth;\n\t\t#endif\n\t}\n\tmean = mean / samples;\n\tsquared_mean = squared_mean / samples;\n\tfloat std_dev = sqrt( squared_mean - mean * mean );\n\tgl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) );\n}";function Syt(e,t,i){let r=new ea,n=new le,s=new le,a=new Vr,o=new _p({depthPacking:qy}),l=new hx,h={},u=i.maxTextureSize,c={[tn]:Wn,[Wn]:tn,[yi]:yi},p=new Yt({defines:{VSM_SAMPLES:8},uniforms:{shadow_pass:{value:null},resolution:{value:new le},radius:{value:4}},vertexShader:Iyt,fragmentShader:_yt}),d=p.clone();d.defines.HORIZONTAL_PASS=1;let f=new lt;f.setAttribute("position",new Wt(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));let m=new rt(f,p),g=this;function y(i,r){let s=t.update(m);p.defines.VSM_SAMPLES!==i.blurSamples&&(p.defines.VSM_SAMPLES=i.blurSamples,d.defines.VSM_SAMPLES=i.blurSamples,p.needsUpdate=!0,d.needsUpdate=!0),null===i.mapPass&&(i.mapPass=new zr(n.x,n.y)),p.uniforms.shadow_pass.value=i.map.texture,p.uniforms.resolution.value=i.mapSize,p.uniforms.radius.value=i.radius,e.setRenderTarget(i.mapPass),e.clear(),e.renderBufferDirect(r,null,s,p,m,null),d.uniforms.shadow_pass.value=i.mapPass.texture,d.uniforms.resolution.value=i.mapSize,d.uniforms.radius.value=i.radius,e.setRenderTarget(i.map),e.clear(),e.renderBufferDirect(r,null,s,d,m,null)}function v(t,i,r,n,s,a){let u=null,p=!0===r.isPointLight?t.customDistanceMaterial:t.customDepthMaterial;if(void 0!==p)u=p;else if(u=!0===r.isPointLight?l:o,e.localClippingEnabled&&!0===i.clipShadows&&Array.isArray(i.clippingPlanes)&&0!==i.clippingPlanes.length||i.displacementMap&&0!==i.displacementScale||i.alphaMap&&i.alphaTest>0||i.map&&i.alphaTest>0){let e=u.uuid,t=i.uuid,r=h[e];void 0===r&&(r={},h[e]=r);let n=r[t];void 0===n&&(n=u.clone(),r[t]=n),u=n}return u.visible=i.visible,u.wireframe=i.wireframe,u.side=a===wy?null!==i.shadowSide?i.shadowSide:i.side:null!==i.shadowSide?i.shadowSide:c[i.side],u.alphaMap=i.alphaMap,u.alphaTest=i.alphaTest,u.map=i.map,u.clipShadows=i.clipShadows,u.clippingPlanes=i.clippingPlanes,u.clipIntersection=i.clipIntersection,u.displacementMap=i.displacementMap,u.displacementScale=i.displacementScale,u.displacementBias=i.displacementBias,u.wireframeLinewidth=i.wireframeLinewidth,u.linewidth=i.linewidth,!0===r.isPointLight&&!0===u.isMeshDistanceMaterial&&(u.referencePosition.setFromMatrixPosition(r.matrixWorld),u.nearDistance=n,u.farDistance=s),u}function T(i,n,s,a,o){if(!1===i.visible)return;if(i.layers.test(n.layers)&&(i.isMesh||i.isLine||i.isPoints)&&(i.castShadow||i.receiveShadow&&o===wy)&&(!i.frustumCulled||r.intersectsObject(i))){i.modelViewMatrix.multiplyMatrices(s.matrixWorldInverse,i.matrixWorld);let r=t.update(i),n=i.material;if(Array.isArray(n)){let t=r.groups;for(let l=0,h=t.length;lu||n.y>u)&&(n.x>u&&(s.x=Math.floor(u/d.x),n.x=s.x*d.x,c.mapSize.x=s.x),n.y>u&&(s.y=Math.floor(u/d.y),n.y=s.y*d.y,c.mapSize.y=s.y)),null===c.map){let e=this.type!==wy?{minFilter:Ci,magFilter:Ci}:{};c.map=new zr(n.x,n.y,e),c.map.texture.name=h.name+".shadowMap",c.camera.updateProjectionMatrix()}e.setRenderTarget(c.map),e.clear();let f=c.getViewportCount();for(let e=0;e=1):-1!==R.indexOf("OpenGL ES")&&(O=parseFloat(/^OpenGL ES (\d)/.exec(R)[1]),D=O>=2);let C=null,N={},P=e.getParameter(3088),L=e.getParameter(2978),F=(new Vr).fromArray(P),U=(new Vr).fromArray(L);function k(t,i,r){let n=new Uint8Array(4),s=e.createTexture();e.bindTexture(t,s),e.texParameteri(t,10241,9728),e.texParameteri(t,10240,9728);for(let t=0;tr||e.height>r)&&(n=r/Math.max(e.width,e.height)),n<1||!0===t){if("undefined"!=typeof HTMLImageElement&&e instanceof HTMLImageElement||"undefined"!=typeof HTMLCanvasElement&&e instanceof HTMLCanvasElement||"undefined"!=typeof ImageBitmap&&e instanceof ImageBitmap){let r=t?PD:Math.floor,s=r(n*e.width),a=r(n*e.height);void 0===o&&(o=v(s,a));let l=i?v(s,a):o;return l.width=s,l.height=a,l.getContext("2d").drawImage(e,0,0,s,a),console.warn("THREE.WebGLRenderer: Texture has been resized from ("+e.width+"x"+e.height+") to ("+s+"x"+a+")."),l}return"data"in e&&console.warn("THREE.WebGLRenderer: Image in DataTexture is too big ("+e.width+"x"+e.height+")."),e}return e}function x(e){return M4(e.width)&&M4(e.height)}function b(e,t){return e.generateMipmaps&&t&&e.minFilter!==Ci&&e.minFilter!==li}function _(t){e.generateMipmap(t)}function E(i,r,n,s,a=!1){if(!1===l)return r;if(null!==i){if(void 0!==e[i])return e[i];console.warn("THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '"+i+"'")}let o=r;return 6403===r&&(5126===n&&(o=33326),5131===n&&(o=33325),5121===n&&(o=33321)),33319===r&&(5126===n&&(o=33328),5131===n&&(o=33327),5121===n&&(o=33323)),6408===r&&(5126===n&&(o=34836),5131===n&&(o=34842),5121===n&&(o=s===gr&&!1===a?35907:32856),32819===n&&(o=32854),32820===n&&(o=32855)),(33325===o||33326===o||33327===o||33328===o||34842===o||34836===o)&&t.get("EXT_color_buffer_float"),o}function w(e,t,i){return!0===b(e,i)||e.isFramebufferTexture&&e.minFilter!==Ci&&e.minFilter!==li?Math.log2(Math.max(t.width,t.height))+1:void 0!==e.mipmaps&&e.mipmaps.length>0?e.mipmaps.length:e.isCompressedTexture&&Array.isArray(e.image)?t.mipmaps.length:1}function S(e){return e===Ci||e===af||e===gp?9728:9729}function I(e){let t=e.target;t.removeEventListener("dispose",I),function(e){let t=r.get(e);if(void 0===t.__webglInit)return;let i=e.source,n=g.get(i);if(n){let r=n[t.__cacheKey];r.usedTimes--,0===r.usedTimes&&A(e),0===Object.keys(n).length&&g.delete(i)}r.remove(e)}(t),t.isVideoTexture&&m.delete(t)}function M(t){let i=t.target;i.removeEventListener("dispose",M),function(t){let i=t.texture,n=r.get(t),s=r.get(i);if(void 0!==s.__webglTexture&&(e.deleteTexture(s.__webglTexture),a.memory.textures--),t.depthTexture&&t.depthTexture.dispose(),t.isWebGLCubeRenderTarget)for(let t=0;t<6;t++)e.deleteFramebuffer(n.__webglFramebuffer[t]),n.__webglDepthbuffer&&e.deleteRenderbuffer(n.__webglDepthbuffer[t]);else{if(e.deleteFramebuffer(n.__webglFramebuffer),n.__webglDepthbuffer&&e.deleteRenderbuffer(n.__webglDepthbuffer),n.__webglMultisampledFramebuffer&&e.deleteFramebuffer(n.__webglMultisampledFramebuffer),n.__webglColorRenderbuffer)for(let t=0;t0&&n.__version!==e.version){let i=e.image;if(null===i)console.warn("THREE.WebGLRenderer: Texture marked for update but no image data found.");else{if(!1!==i.complete)return void L(n,e,t);console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete")}}i.bindTexture(3553,n.__webglTexture,33984+t)}let R={[gn]:10497,[mn]:33071,[Tp]:33648},C={[Ci]:9728,[af]:9984,[gp]:9986,[li]:9729,[Ug]:9985,[Ca]:9987};function N(i,s,a){if(a?(e.texParameteri(i,10242,R[s.wrapS]),e.texParameteri(i,10243,R[s.wrapT]),(32879===i||35866===i)&&e.texParameteri(i,32882,R[s.wrapR]),e.texParameteri(i,10240,C[s.magFilter]),e.texParameteri(i,10241,C[s.minFilter])):(e.texParameteri(i,10242,33071),e.texParameteri(i,10243,33071),(32879===i||35866===i)&&e.texParameteri(i,32882,33071),(s.wrapS!==mn||s.wrapT!==mn)&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping."),e.texParameteri(i,10240,S(s.magFilter)),e.texParameteri(i,10241,S(s.minFilter)),s.minFilter!==Ci&&s.minFilter!==li&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.")),!0===t.has("EXT_texture_filter_anisotropic")){let a=t.get("EXT_texture_filter_anisotropic");if(s.magFilter===Ci||s.minFilter!==gp&&s.minFilter!==Ca||s.type===Da&&!1===t.has("OES_texture_float_linear")||!1===l&&s.type===Go&&!1===t.has("OES_texture_half_float_linear"))return;(s.anisotropy>1||r.get(s).__currentAnisotropy)&&(e.texParameterf(i,a.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(s.anisotropy,n.getMaxAnisotropy())),r.get(s).__currentAnisotropy=s.anisotropy)}}function P(t,i){let r=!1;void 0===t.__webglInit&&(t.__webglInit=!0,i.addEventListener("dispose",I));let n=i.source,s=g.get(n);void 0===s&&(s={},g.set(n,s));let o=function(e){let t=[];return t.push(e.wrapS),t.push(e.wrapT),t.push(e.wrapR||0),t.push(e.magFilter),t.push(e.minFilter),t.push(e.anisotropy),t.push(e.internalFormat),t.push(e.format),t.push(e.type),t.push(e.generateMipmaps),t.push(e.premultiplyAlpha),t.push(e.flipY),t.push(e.unpackAlignment),t.push(e.encoding),t.join()}(i);if(o!==t.__cacheKey){void 0===s[o]&&(s[o]={texture:e.createTexture(),usedTimes:0},a.memory.textures++,r=!0),s[o].usedTimes++;let n=s[t.__cacheKey];void 0!==n&&(s[t.__cacheKey].usedTimes--,0===n.usedTimes&&A(i)),t.__cacheKey=o,t.__webglTexture=s[o].texture}return r}function L(t,n,a){let o=3553;(n.isDataArrayTexture||n.isCompressedArrayTexture)&&(o=35866),n.isData3DTexture&&(o=32879);let h=P(t,n),u=n.source;i.bindTexture(o,t.__webglTexture,33984+a);let p=r.get(u);if(u.version!==p.__version||!0===h){i.activeTexture(33984+a),e.pixelStorei(37440,n.flipY),e.pixelStorei(37441,n.premultiplyAlpha),e.pixelStorei(3317,n.unpackAlignment),e.pixelStorei(37443,0);let t=function(e){return!l&&(e.wrapS!==mn||e.wrapT!==mn||e.minFilter!==Ci&&e.minFilter!==li)}(n)&&!1===x(n.image),r=T(n.image,t,!1,c);r=z(n,r);let d=x(r)||l,f=s.convert(n.format,n.encoding),m=s.convert(n.type),g=E(n.internalFormat,f,m,n.encoding,n.isVideoTexture);N(o,n,d);let y,v=n.mipmaps,S=l&&!0!==n.isVideoTexture,I=void 0===p.__version||!0===h,M=w(n,r,d);if(n.isDepthTexture)g=6402,l?g=n.type===Da?36012:n.type===tf?33190:n.type===vp?35056:33189:n.type===Da&&console.error("WebGLRenderer: Floating point depth texture requires WebGL2."),n.format===rf&&6402===g&&n.type!==Ox&&n.type!==tf&&(console.warn("THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture."),n.type=tf,m=s.convert(n.type)),n.format===Ep&&6402===g&&(g=34041,n.type!==vp&&(console.warn("THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture."),n.type=vp,m=s.convert(n.type))),I&&(S?i.texStorage2D(3553,1,g,r.width,r.height):i.texImage2D(3553,0,g,r.width,r.height,0,f,m,null));else if(n.isDataTexture)if(v.length>0&&d){S&&I&&i.texStorage2D(3553,M,g,v[0].width,v[0].height);for(let e=0,t=v.length;e>=1,t>>=1}}else if(v.length>0&&d){S&&I&&i.texStorage2D(3553,M,g,v[0].width,v[0].height);for(let e=0,t=v.length;e=34069&&l<=34074)&&e.framebufferTexture2D(36160,o,l,r.get(a).__webglTexture,0),i.bindFramebuffer(36160,null)}function U(t,i,r){if(e.bindRenderbuffer(36161,t),i.depthBuffer&&!i.stencilBuffer){let n=33189;if(r||G(i)){let t=i.depthTexture;t&&t.isDepthTexture&&(t.type===Da?n=36012:t.type===tf&&(n=33190));let r=B(i);G(i)?d.renderbufferStorageMultisampleEXT(36161,r,n,i.width,i.height):e.renderbufferStorageMultisample(36161,r,n,i.width,i.height)}else e.renderbufferStorage(36161,n,i.width,i.height);e.framebufferRenderbuffer(36160,36096,36161,t)}else if(i.depthBuffer&&i.stencilBuffer){let n=B(i);r&&!1===G(i)?e.renderbufferStorageMultisample(36161,n,35056,i.width,i.height):G(i)?d.renderbufferStorageMultisampleEXT(36161,n,35056,i.width,i.height):e.renderbufferStorage(36161,34041,i.width,i.height),e.framebufferRenderbuffer(36160,33306,36161,t)}else{let t=!0===i.isWebGLMultipleRenderTargets?i.texture:[i.texture];for(let n=0;n0&&!0===t.has("WEBGL_multisampled_render_to_texture")&&!1!==i.__useRenderToTexture}function z(e,i){let r=e.encoding,n=e.format,s=e.type;return!0===e.isCompressedTexture||!0===e.isVideoTexture||e.format===OD||r!==Rl&&(r===gr?!1===l?!0===t.has("EXT_sRGB")&&n===Gs?(e.format=OD,e.minFilter=li,e.generateMipmaps=!1):i=lx.sRGBToLinear(i):(n!==Gs||s!==Hu)&&console.warn("THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType."):console.error("THREE.WebGLTextures: Unsupported texture encoding:",r)),i}this.allocateTextureUnit=function(){let e=D;return e>=h&&console.warn("THREE.WebGLTextures: Trying to use "+e+" texture units while this GPU supports only "+h),D+=1,e},this.resetTextureUnits=function(){D=0},this.setTexture2D=O,this.setTexture2DArray=function(e,t){let n=r.get(e);e.version>0&&n.__version!==e.version?L(n,e,t):i.bindTexture(35866,n.__webglTexture,33984+t)},this.setTexture3D=function(e,t){let n=r.get(e);e.version>0&&n.__version!==e.version?L(n,e,t):i.bindTexture(32879,n.__webglTexture,33984+t)},this.setTextureCube=function(t,n){let a=r.get(t);t.version>0&&a.__version!==t.version?function(t,n,a){if(6!==n.image.length)return;let o=P(t,n),h=n.source;i.bindTexture(34067,t.__webglTexture,33984+a);let c=r.get(h);if(h.version!==c.__version||!0===o){i.activeTexture(33984+a),e.pixelStorei(37440,n.flipY),e.pixelStorei(37441,n.premultiplyAlpha),e.pixelStorei(3317,n.unpackAlignment),e.pixelStorei(37443,0);let t=n.isCompressedTexture||n.image[0].isCompressedTexture,r=n.image[0]&&n.image[0].isDataTexture,p=[];for(let e=0;e<6;e++)p[e]=t||r?r?n.image[e].image:n.image[e]:T(n.image[e],!1,!0,u),p[e]=z(n,p[e]);let d,f=p[0],m=x(f)||l,g=s.convert(n.format,n.encoding),y=s.convert(n.type),v=E(n.internalFormat,g,y,n.encoding),S=l&&!0!==n.isVideoTexture,I=void 0===c.__version||!0===o,M=w(n,f,m);if(N(34067,n,m),t){S&&I&&i.texStorage2D(34067,M,v,f.width,f.height);for(let e=0;e<6;e++){d=p[e].mipmaps;for(let t=0;t0&&M++,i.texStorage2D(34067,M,v,p[0].width,p[0].height));for(let e=0;e<6;e++)if(r){S?i.texSubImage2D(34069+e,0,0,0,p[e].width,p[e].height,g,y,p[e].data):i.texImage2D(34069+e,0,v,p[e].width,p[e].height,0,g,y,p[e].data);for(let t=0;t0&&!1===G(t)){let r=p?o:[o];h.__webglMultisampledFramebuffer=e.createFramebuffer(),h.__webglColorRenderbuffer=[],i.bindFramebuffer(36160,h.__webglMultisampledFramebuffer);for(let i=0;i0&&!1===G(t)){let n=t.isWebGLMultipleRenderTargets?t.texture:[t.texture],s=t.width,a=t.height,o=16384,l=[],h=t.stencilBuffer?33306:36096,u=r.get(t),c=!0===t.isWebGLMultipleRenderTargets;if(c)for(let t=0;to+h?(l.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:e.handedness,target:this})):!l.inputState.pinching&&a<=o-h&&(l.inputState.pinching=!0,this.dispatchEvent({type:"pinchstart",handedness:e.handedness,target:this}))}else null!==o&&e.gripSpace&&(n=t.getPose(e.gripSpace,i),null!==n&&(o.matrix.fromArray(n.transform.matrix),o.matrix.decompose(o.position,o.rotation,o.scale),n.linearVelocity?(o.hasLinearVelocity=!0,o.linearVelocity.copy(n.linearVelocity)):o.hasLinearVelocity=!1,n.angularVelocity?(o.hasAngularVelocity=!0,o.angularVelocity.copy(n.angularVelocity)):o.hasAngularVelocity=!1));null!==a&&(r=t.getPose(e.targetRaySpace,i),null===r&&null!==n&&(r=n),null!==r&&(a.matrix.fromArray(r.transform.matrix),a.matrix.decompose(a.position,a.rotation,a.scale),r.linearVelocity?(a.hasLinearVelocity=!0,a.linearVelocity.copy(r.linearVelocity)):a.hasLinearVelocity=!1,r.angularVelocity?(a.hasAngularVelocity=!0,a.angularVelocity.copy(r.angularVelocity)):a.hasAngularVelocity=!1,this.dispatchEvent(Myt)))}return null!==a&&(a.visible=null!==r),null!==o&&(o.visible=null!==n),null!==l&&(l.visible=null!==s),this}_getHandJoint(e,t){if(void 0===e.joints[t.jointName]){let i=new ur;i.matrixAutoUpdate=!1,i.visible=!1,e.joints[t.jointName]=i,e.add(i)}return e.joints[t.jointName]}},of=class extends Bi{constructor(e,t,i,r,n,s,a,o,l,h){if((h=void 0!==h?h:rf)!==rf&&h!==Ep)throw new Error("DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat");void 0===i&&h===rf&&(i=tf),void 0===i&&h===Ep&&(i=vp),super(null,r,n,s,a,o,h,i,l),this.isDepthTexture=!0,this.image={width:e,height:t},this.magFilter=void 0!==a?a:Ci,this.minFilter=void 0!==o?o:Ci,this.flipY=!1,this.generateMipmaps=!1}},W4=class extends Vo{constructor(e,t){super();let i=this,r=null,n=1,s=null,a="local-floor",o=1,l=null,h=null,u=null,c=null,p=null,d=null,f=t.getContextAttributes(),m=null,g=null,y=[],v=[],T=new Set,x=new Map,b=new kr;b.layers.enable(1),b.viewport=new Vr;let _=new kr;_.layers.enable(2),_.viewport=new Vr;let E=[b,_],w=new FD;w.layers.enable(1),w.layers.enable(2);let S=null,I=null;function M(e){let t=v.indexOf(e.inputSource);if(-1===t)return;let i=y[t];void 0!==i&&i.dispatchEvent({type:e.type,data:e.inputSource})}function D(){r.removeEventListener("select",M),r.removeEventListener("selectstart",M),r.removeEventListener("selectend",M),r.removeEventListener("squeeze",M),r.removeEventListener("squeezestart",M),r.removeEventListener("squeezeend",M),r.removeEventListener("end",D),r.removeEventListener("inputsourceschange",O);for(let e=0;e=0&&(v[r]=null,y[r].disconnect(i))}for(let t=0;t=v.length){v.push(i),r=e;break}if(null===v[e]){v[e]=i,r=e;break}}if(-1===r)break}let n=y[r];n&&n.connect(i)}}this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function(e){let t=y[e];return void 0===t&&(t=new ex,y[e]=t),t.getTargetRaySpace()},this.getControllerGrip=function(e){let t=y[e];return void 0===t&&(t=new ex,y[e]=t),t.getGripSpace()},this.getHand=function(e){let t=y[e];return void 0===t&&(t=new ex,y[e]=t),t.getHandSpace()},this.setFramebufferScaleFactor=function(e){n=e,!0===i.isPresenting&&console.warn("THREE.WebXRManager: Cannot change framebuffer scale while presenting.")},this.setReferenceSpaceType=function(e){a=e,!0===i.isPresenting&&console.warn("THREE.WebXRManager: Cannot change reference space type while presenting.")},this.getReferenceSpace=function(){return l||s},this.setReferenceSpace=function(e){l=e},this.getBaseLayer=function(){return null!==c?c:p},this.getBinding=function(){return u},this.getFrame=function(){return d},this.getSession=function(){return r},this.setSession=function(h){return ht(this,null,(function*(){if(r=h,null!==r){if(m=e.getRenderTarget(),r.addEventListener("select",M),r.addEventListener("selectstart",M),r.addEventListener("selectend",M),r.addEventListener("squeeze",M),r.addEventListener("squeezestart",M),r.addEventListener("squeezeend",M),r.addEventListener("end",D),r.addEventListener("inputsourceschange",O),!0!==f.xrCompatible&&(yield t.makeXRCompatible()),void 0===r.renderState.layers||!1===e.capabilities.isWebGL2){let i={antialias:void 0!==r.renderState.layers||f.antialias,alpha:f.alpha,depth:f.depth,stencil:f.stencil,framebufferScaleFactor:n};p=new XRWebGLLayer(r,t,i),r.updateRenderState({baseLayer:p}),g=new zr(p.framebufferWidth,p.framebufferHeight,{format:Gs,type:Hu,encoding:e.outputEncoding,stencilBuffer:f.stencil})}else{let i=null,s=null,a=null;f.depth&&(a=f.stencil?35056:33190,i=f.stencil?Ep:rf,s=f.stencil?vp:tf);let o={colorFormat:32856,depthFormat:a,scaleFactor:n};u=new XRWebGLBinding(r,t),c=u.createProjectionLayer(o),r.updateRenderState({layers:[c]}),g=new zr(c.textureWidth,c.textureHeight,{format:Gs,type:Hu,depthTexture:new of(c.textureWidth,c.textureHeight,s,void 0,void 0,void 0,void 0,void 0,void 0,i),stencilBuffer:f.stencil,encoding:e.outputEncoding,samples:f.antialias?4:0}),e.properties.get(g).__ignoreDepthValues=c.ignoreDepthValues}g.isXRRenderTarget=!0,this.setFoveation(o),l=null,s=yield r.requestReferenceSpace(a),L.setContext(r),L.start(),i.isPresenting=!0,i.dispatchEvent({type:"sessionstart"})}}))};let R=new A,C=new A;function N(e,t){null===t?e.matrixWorld.copy(e.matrix):e.matrixWorld.multiplyMatrices(t.matrixWorld,e.matrix),e.matrixWorldInverse.copy(e.matrixWorld).invert()}this.updateCamera=function(e){if(null===r)return;w.near=_.near=b.near=e.near,w.far=_.far=b.far=e.far,(S!==w.near||I!==w.far)&&(r.updateRenderState({depthNear:w.near,depthFar:w.far}),S=w.near,I=w.far);let t=e.parent,i=w.cameras;N(w,t);for(let e=0;et&&(x.set(e,e.lastChangedTime),i.dispatchEvent({type:"planechanged",data:e}))}else T.add(e),x.set(e,r.lastChangedTime),i.dispatchEvent({type:"planeadded",data:e})}d=null})),this.setAnimationLoop=function(e){P=e},this.dispose=function(){}}};function Dyt(e,t){function i(i,r){i.opacity.value=r.opacity,r.color&&i.diffuse.value.copy(r.color),r.emissive&&i.emissive.value.copy(r.emissive).multiplyScalar(r.emissiveIntensity),r.map&&(i.map.value=r.map),r.alphaMap&&(i.alphaMap.value=r.alphaMap),r.bumpMap&&(i.bumpMap.value=r.bumpMap,i.bumpScale.value=r.bumpScale,r.side===Wn&&(i.bumpScale.value*=-1)),r.displacementMap&&(i.displacementMap.value=r.displacementMap,i.displacementScale.value=r.displacementScale,i.displacementBias.value=r.displacementBias),r.emissiveMap&&(i.emissiveMap.value=r.emissiveMap),r.normalMap&&(i.normalMap.value=r.normalMap,i.normalScale.value.copy(r.normalScale),r.side===Wn&&i.normalScale.value.negate()),r.specularMap&&(i.specularMap.value=r.specularMap),r.alphaTest>0&&(i.alphaTest.value=r.alphaTest);let n,s,a=t.get(r).envMap;if(a&&(i.envMap.value=a,i.flipEnvMap.value=a.isCubeTexture&&!1===a.isRenderTargetTexture?-1:1,i.reflectivity.value=r.reflectivity,i.ior.value=r.ior,i.refractionRatio.value=r.refractionRatio),r.lightMap){i.lightMap.value=r.lightMap;let t=!0!==e.physicallyCorrectLights?Math.PI:1;i.lightMapIntensity.value=r.lightMapIntensity*t}r.aoMap&&(i.aoMap.value=r.aoMap,i.aoMapIntensity.value=r.aoMapIntensity),r.map?n=r.map:r.specularMap?n=r.specularMap:r.displacementMap?n=r.displacementMap:r.normalMap?n=r.normalMap:r.bumpMap?n=r.bumpMap:r.roughnessMap?n=r.roughnessMap:r.metalnessMap?n=r.metalnessMap:r.alphaMap?n=r.alphaMap:r.emissiveMap?n=r.emissiveMap:r.clearcoatMap?n=r.clearcoatMap:r.clearcoatNormalMap?n=r.clearcoatNormalMap:r.clearcoatRoughnessMap?n=r.clearcoatRoughnessMap:r.iridescenceMap?n=r.iridescenceMap:r.iridescenceThicknessMap?n=r.iridescenceThicknessMap:r.specularIntensityMap?n=r.specularIntensityMap:r.specularColorMap?n=r.specularColorMap:r.transmissionMap?n=r.transmissionMap:r.thicknessMap?n=r.thicknessMap:r.sheenColorMap?n=r.sheenColorMap:r.sheenRoughnessMap&&(n=r.sheenRoughnessMap),void 0!==n&&(n.isWebGLRenderTarget&&(n=n.texture),!0===n.matrixAutoUpdate&&n.updateMatrix(),i.uvTransform.value.copy(n.matrix)),r.aoMap?s=r.aoMap:r.lightMap&&(s=r.lightMap),void 0!==s&&(s.isWebGLRenderTarget&&(s=s.texture),!0===s.matrixAutoUpdate&&s.updateMatrix(),i.uv2Transform.value.copy(s.matrix))}return{refreshFogUniforms:function(t,i){i.color.getRGB(t.fogColor.value,rpe(e)),i.isFog?(t.fogNear.value=i.near,t.fogFar.value=i.far):i.isFogExp2&&(t.fogDensity.value=i.density)},refreshMaterialUniforms:function(e,r,n,s,a){r.isMeshBasicMaterial||r.isMeshLambertMaterial?i(e,r):r.isMeshToonMaterial?(i(e,r),function(e,t){t.gradientMap&&(e.gradientMap.value=t.gradientMap)}(e,r)):r.isMeshPhongMaterial?(i(e,r),function(e,t){e.specular.value.copy(t.specular),e.shininess.value=Math.max(t.shininess,1e-4)}(e,r)):r.isMeshStandardMaterial?(i(e,r),function(e,i){e.roughness.value=i.roughness,e.metalness.value=i.metalness,i.roughnessMap&&(e.roughnessMap.value=i.roughnessMap),i.metalnessMap&&(e.metalnessMap.value=i.metalnessMap),t.get(i).envMap&&(e.envMapIntensity.value=i.envMapIntensity)}(e,r),r.isMeshPhysicalMaterial&&function(e,t,i){e.ior.value=t.ior,t.sheen>0&&(e.sheenColor.value.copy(t.sheenColor).multiplyScalar(t.sheen),e.sheenRoughness.value=t.sheenRoughness,t.sheenColorMap&&(e.sheenColorMap.value=t.sheenColorMap),t.sheenRoughnessMap&&(e.sheenRoughnessMap.value=t.sheenRoughnessMap)),t.clearcoat>0&&(e.clearcoat.value=t.clearcoat,e.clearcoatRoughness.value=t.clearcoatRoughness,t.clearcoatMap&&(e.clearcoatMap.value=t.clearcoatMap),t.clearcoatRoughnessMap&&(e.clearcoatRoughnessMap.value=t.clearcoatRoughnessMap),t.clearcoatNormalMap&&(e.clearcoatNormalScale.value.copy(t.clearcoatNormalScale),e.clearcoatNormalMap.value=t.clearcoatNormalMap,t.side===Wn&&e.clearcoatNormalScale.value.negate())),t.iridescence>0&&(e.iridescence.value=t.iridescence,e.iridescenceIOR.value=t.iridescenceIOR,e.iridescenceThicknessMinimum.value=t.iridescenceThicknessRange[0],e.iridescenceThicknessMaximum.value=t.iridescenceThicknessRange[1],t.iridescenceMap&&(e.iridescenceMap.value=t.iridescenceMap),t.iridescenceThicknessMap&&(e.iridescenceThicknessMap.value=t.iridescenceThicknessMap)),t.transmission>0&&(e.transmission.value=t.transmission,e.transmissionSamplerMap.value=i.texture,e.transmissionSamplerSize.value.set(i.width,i.height),t.transmissionMap&&(e.transmissionMap.value=t.transmissionMap),e.thickness.value=t.thickness,t.thicknessMap&&(e.thicknessMap.value=t.thicknessMap),e.attenuationDistance.value=t.attenuationDistance,e.attenuationColor.value.copy(t.attenuationColor)),e.specularIntensity.value=t.specularIntensity,e.specularColor.value.copy(t.specularColor),t.specularIntensityMap&&(e.specularIntensityMap.value=t.specularIntensityMap),t.specularColorMap&&(e.specularColorMap.value=t.specularColorMap)}(e,r,a)):r.isMeshMatcapMaterial?(i(e,r),function(e,t){t.matcap&&(e.matcap.value=t.matcap)}(e,r)):r.isMeshDepthMaterial?i(e,r):r.isMeshDistanceMaterial?(i(e,r),function(e,t){e.referencePosition.value.copy(t.referencePosition),e.nearDistance.value=t.nearDistance,e.farDistance.value=t.farDistance}(e,r)):r.isMeshNormalMaterial?i(e,r):r.isLineBasicMaterial?(function(e,t){e.diffuse.value.copy(t.color),e.opacity.value=t.opacity}(e,r),r.isLineDashedMaterial&&function(e,t){e.dashSize.value=t.dashSize,e.totalSize.value=t.dashSize+t.gapSize,e.scale.value=t.scale}(e,r)):r.isPointsMaterial?function(e,t,i,r){let n;e.diffuse.value.copy(t.color),e.opacity.value=t.opacity,e.size.value=t.size*i,e.scale.value=.5*r,t.map&&(e.map.value=t.map),t.alphaMap&&(e.alphaMap.value=t.alphaMap),t.alphaTest>0&&(e.alphaTest.value=t.alphaTest),t.map?n=t.map:t.alphaMap&&(n=t.alphaMap),void 0!==n&&(!0===n.matrixAutoUpdate&&n.updateMatrix(),e.uvTransform.value.copy(n.matrix))}(e,r,n,s):r.isSpriteMaterial?function(e,t){let i;e.diffuse.value.copy(t.color),e.opacity.value=t.opacity,e.rotation.value=t.rotation,t.map&&(e.map.value=t.map),t.alphaMap&&(e.alphaMap.value=t.alphaMap),t.alphaTest>0&&(e.alphaTest.value=t.alphaTest),t.map?i=t.map:t.alphaMap&&(i=t.alphaMap),void 0!==i&&(!0===i.matrixAutoUpdate&&i.updateMatrix(),e.uvTransform.value.copy(i.matrix))}(e,r):r.isShadowMaterial?(e.color.value.copy(r.color),e.opacity.value=r.opacity):r.isShaderMaterial&&(r.uniformsNeedUpdate=!1)}}}function Cyt(e,t,i,r){let n={},s={},a=[],o=i.isWebGL2?e.getParameter(35375):0;function l(e,t,i){let r=e.value;if(void 0===i[t]){if("number"==typeof r)i[t]=r;else{let e=Array.isArray(r)?r:[r],n=[];for(let t=0;t0){n=i%r,0!==n&&r-n-a.boundary<0&&(i+=r-n,s.__offset=i)}i+=a.storage}n=i%r,n>0&&(i+=r-n),e.__size=i,e.__cache={}}(i),p=function(t){let i=function(){for(let e=0;e0&&function(e,t,i){let r=j.isWebGL2;null===U&&(U=new zr(1,1,{generateMipmaps:!0,type:V.has("EXT_color_buffer_half_float")?Go:Hu,minFilter:Ca,samples:r&&!0===a?4:0})),m.getDrawingBufferSize(B),r?U.setSize(B.x,B.y):U.setSize(PD(B.x),PD(B.y));let n=m.getRenderTarget();m.setRenderTarget(U),m.clear();let s=m.toneMapping;m.toneMapping=Fu,Ae(e,t,i),m.toneMapping=s,q.updateMultisampleRenderTarget(U),q.updateRenderTargetMipmap(U),m.setRenderTarget(n)}(n,t,i),r&&W.viewport(_.copy(r)),n.length>0&&Ae(n,t,i),s.length>0&&Ae(s,t,i),o.length>0&&Ae(o,t,i),W.buffers.depth.setTest(!0),W.buffers.depth.setMask(!0),W.buffers.color.setMask(!0),W.setPolygonOffset(!1)}function Ae(e,t,i){let r=!0===t.isScene?t.overrideMaterial:null;for(let n=0,s=e.length;n0?f[f.length-1]:null,d.pop(),c=d.length>0?d[d.length-1]:null},this.getActiveCubeFace=function(){return y},this.getActiveMipmapLevel=function(){return v},this.getRenderTarget=function(){return T},this.setRenderTargetTextures=function(e,t,i){X.get(e.texture).__webglTexture=t,X.get(e.depthTexture).__webglTexture=i;let r=X.get(e);r.__hasExternalTextures=!0,r.__hasExternalTextures&&(r.__autoAllocateDepthBuffer=void 0===i,r.__autoAllocateDepthBuffer||!0===V.has("WEBGL_multisampled_render_to_texture")&&(console.warn("THREE.WebGLRenderer: Render-to-texture extension was disabled because an external texture was provided"),r.__useRenderToTexture=!1))},this.setRenderTargetFramebuffer=function(e,t){let i=X.get(e);i.__webglFramebuffer=t,i.__useDefaultFramebuffer=void 0===t},this.setRenderTarget=function(e,t=0,i=0){T=e,y=t,v=i;let r=!0,n=null,s=!1,a=!1;if(e){let i=X.get(e);void 0!==i.__useDefaultFramebuffer?(W.bindFramebuffer(36160,null),r=!1):void 0===i.__webglFramebuffer?q.setupRenderTarget(e):i.__hasExternalTextures&&q.rebindTextures(e,X.get(e.texture).__webglTexture,X.get(e.depthTexture).__webglTexture);let o=e.texture;(o.isData3DTexture||o.isDataArrayTexture||o.isCompressedArrayTexture)&&(a=!0);let l=X.get(e).__webglFramebuffer;e.isWebGLCubeRenderTarget?(n=l[t],s=!0):n=j.isWebGL2&&e.samples>0&&!1===q.useMultisampledRTT(e)?X.get(e).__webglMultisampledFramebuffer:l,_.copy(e.viewport),E.copy(e.scissor),w=e.scissorTest}else _.copy(R).multiplyScalar(M).floor(),E.copy(C).multiplyScalar(M).floor(),w=N;if(W.bindFramebuffer(36160,n)&&j.drawBuffers&&r&&W.drawBuffers(e,n),W.viewport(_),W.scissor(E),W.setScissorTest(w),s){let r=X.get(e.texture);fe.framebufferTexture2D(36160,36064,34069+t,r.__webglTexture,i)}else if(a){let r=X.get(e.texture),n=t||0;fe.framebufferTextureLayer(36160,36064,r.__webglTexture,i||0,n)}x=-1},this.readRenderTargetPixels=function(e,t,i,r,n,s,a){if(!e||!e.isWebGLRenderTarget)return void console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");let o=X.get(e).__webglFramebuffer;if(e.isWebGLCubeRenderTarget&&void 0!==a&&(o=o[a]),o){W.bindFramebuffer(36160,o);try{let a=e.texture,o=a.format,l=a.type;if(o!==Gs&&ce.convert(o)!==fe.getParameter(35739))return void console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.");let h=l===Go&&(V.has("EXT_color_buffer_half_float")||j.isWebGL2&&V.has("EXT_color_buffer_float"));if(!(l===Hu||ce.convert(l)===fe.getParameter(35738)||l===Da&&(j.isWebGL2||V.has("OES_texture_float")||V.has("WEBGL_color_buffer_float"))||h))return void console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.");t>=0&&t<=e.width-r&&i>=0&&i<=e.height-n&&fe.readPixels(t,i,r,n,ce.convert(o),ce.convert(l),s)}finally{let e=null!==T?X.get(T).__webglFramebuffer:null;W.bindFramebuffer(36160,e)}}},this.copyFramebufferToTexture=function(e,t,i=0){let r=Math.pow(2,-i),n=Math.floor(t.image.width*r),s=Math.floor(t.image.height*r);q.setTexture2D(t,0),fe.copyTexSubImage2D(3553,i,0,0,e.x,e.y,n,s),W.unbindTexture()},this.copyTextureToTexture=function(e,t,i,r=0){let n=t.image.width,s=t.image.height,a=ce.convert(i.format),o=ce.convert(i.type);q.setTexture2D(i,0),fe.pixelStorei(37440,i.flipY),fe.pixelStorei(37441,i.premultiplyAlpha),fe.pixelStorei(3317,i.unpackAlignment),t.isDataTexture?fe.texSubImage2D(3553,r,e.x,e.y,n,s,a,o,t.image.data):t.isCompressedTexture?fe.compressedTexSubImage2D(3553,r,e.x,e.y,t.mipmaps[0].width,t.mipmaps[0].height,a,t.mipmaps[0].data):fe.texSubImage2D(3553,r,e.x,e.y,a,o,t.image),0===r&&i.generateMipmaps&&fe.generateMipmap(3553),W.unbindTexture()},this.copyTextureToTexture3D=function(e,t,i,r,n=0){if(m.isWebGL1Renderer)return void console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: can only be used with WebGL2.");let s,a=e.max.x-e.min.x+1,o=e.max.y-e.min.y+1,l=e.max.z-e.min.z+1,h=ce.convert(r.format),u=ce.convert(r.type);if(r.isData3DTexture)q.setTexture3D(r,0),s=32879;else{if(!r.isDataArrayTexture)return void console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: only supports THREE.DataTexture3D and THREE.DataTexture2DArray.");q.setTexture2DArray(r,0),s=35866}fe.pixelStorei(37440,r.flipY),fe.pixelStorei(37441,r.premultiplyAlpha),fe.pixelStorei(3317,r.unpackAlignment);let c=fe.getParameter(3314),p=fe.getParameter(32878),d=fe.getParameter(3316),f=fe.getParameter(3315),g=fe.getParameter(32877),y=i.isCompressedTexture?i.mipmaps[0]:i.image;fe.pixelStorei(3314,y.width),fe.pixelStorei(32878,y.height),fe.pixelStorei(3316,e.min.x),fe.pixelStorei(3315,e.min.y),fe.pixelStorei(32877,e.min.z),i.isDataTexture||i.isData3DTexture?fe.texSubImage3D(s,n,t.x,t.y,t.z,a,o,l,h,u,y.data):i.isCompressedArrayTexture?(console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: untested support for compressed srcTexture."),fe.compressedTexSubImage3D(s,n,t.x,t.y,t.z,a,o,l,h,y.data)):fe.texSubImage3D(s,n,t.x,t.y,t.z,a,o,l,h,u,y),fe.pixelStorei(3314,c),fe.pixelStorei(32878,p),fe.pixelStorei(3316,d),fe.pixelStorei(3315,f),fe.pixelStorei(32877,g),0===n&&r.generateMipmaps&&fe.generateMipmap(s),W.unbindTexture()},this.initTexture=function(e){e.isCubeTexture?q.setTextureCube(e,0):e.isData3DTexture?q.setTexture3D(e,0):e.isDataArrayTexture||e.isCompressedArrayTexture?q.setTexture2DArray(e,0):q.setTexture2D(e,0),W.unbindTexture()},this.resetState=function(){y=0,v=0,T=null,W.reset(),pe.reset()},"undefined"!=typeof __THREE_DEVTOOLS__&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}var HD=class extends Ll{};HD.prototype.isWebGL1Renderer=!0;var xy,Ly=class{constructor(e,t=25e-5){this.isFogExp2=!0,this.name="",this.color=new je(e),this.density=t}clone(){return new Ly(this.color,this.density)}toJSON(){return{type:"FogExp2",color:this.color.getHex(),density:this.density}}},Bu=class{constructor(e,t=1,i=1e3){this.isFog=!0,this.name="",this.color=new je(e),this.near=t,this.far=i}clone(){return new Bu(this.color,this.near,this.far)}toJSON(){return{type:"Fog",color:this.color.getHex(),near:this.near,far:this.far}}},Nn=class extends sr{constructor(){super(),this.isScene=!0,this.type="Scene",this.background=null,this.environment=null,this.fog=null,this.backgroundBlurriness=0,this.backgroundIntensity=1,this.overrideMaterial=null,"undefined"!=typeof __THREE_DEVTOOLS__&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}copy(e,t){return super.copy(e,t),null!==e.background&&(this.background=e.background.clone()),null!==e.environment&&(this.environment=e.environment.clone()),null!==e.fog&&(this.fog=e.fog.clone()),this.backgroundBlurriness=e.backgroundBlurriness,this.backgroundIntensity=e.backgroundIntensity,null!==e.overrideMaterial&&(this.overrideMaterial=e.overrideMaterial.clone()),this.matrixAutoUpdate=e.matrixAutoUpdate,this}toJSON(e){let t=super.toJSON(e);return null!==this.fog&&(t.object.fog=this.fog.toJSON()),this.backgroundBlurriness>0&&(t.object.backgroundBlurriness=this.backgroundBlurriness),1!==this.backgroundIntensity&&(t.object.backgroundIntensity=this.backgroundIntensity),t}get autoUpdate(){return console.warn("THREE.Scene: autoUpdate was renamed to matrixWorldAutoUpdate in r144."),this.matrixWorldAutoUpdate}set autoUpdate(e){console.warn("THREE.Scene: autoUpdate was renamed to matrixWorldAutoUpdate in r144."),this.matrixWorldAutoUpdate=e}},Sp=class{constructor(e,t){this.isInterleavedBuffer=!0,this.array=e,this.stride=t,this.count=void 0!==e?e.length/t:0,this.usage=sx,this.updateRange={offset:0,count:-1},this.version=0,this.uuid=ko()}onUploadCallback(){}set needsUpdate(e){!0===e&&this.version++}setUsage(e){return this.usage=e,this}copy(e){return this.array=new e.array.constructor(e.array),this.count=e.count,this.stride=e.stride,this.usage=e.usage,this}copyAt(e,t,i){e*=this.stride,i*=t.stride;for(let r=0,n=this.stride;re.far||t.push({distance:o,point:Yb.clone(),uv:un.getUV(Yb,rD,$b,iD,Iue,zH,_ue,new le),face:null,object:this})}copy(e,t){return super.copy(e,t),void 0!==e.center&&this.center.copy(e.center),this.material=e.material,this}};function nD(e,t,i,r,n,s){Sy.subVectors(e,i).addScalar(.5).multiply(r),void 0!==n?(Xb.x=s*Sy.x-n*Sy.y,Xb.y=n*Sy.x+s*Sy.y):Xb.copy(Sy),e.copy(t),e.x+=Xb.x,e.y+=Xb.y,e.applyMatrix4(cpe)}var sD=new A,Sue=new A,BD=class extends sr{constructor(){super(),this._currentLevel=0,this.type="LOD",Object.defineProperties(this,{levels:{enumerable:!0,value:[]},isLOD:{value:!0}}),this.autoUpdate=!0}copy(e){super.copy(e,!1);let t=e.levels;for(let e=0,i=t.length;e0){let i,r;for(i=1,r=t.length;i0){sD.setFromMatrixPosition(this.matrixWorld);let i=e.ray.origin.distanceTo(sD);this.getObjectForDistance(i).raycast(e,t)}}update(e){let t=this.levels;if(t.length>1){sD.setFromMatrixPosition(e.matrixWorld),Sue.setFromMatrixPosition(this.matrixWorld);let i,r,n=sD.distanceTo(Sue)/e.zoom;for(t[0].object.visible=!0,i=1,r=t.length;i=e))break;t[i-1].object.visible=!1,t[i].object.visible=!0}for(this._currentLevel=i-1;io)continue;c.applyMatrix4(this.matrixWorld);let s=e.ray.origin.distanceTo(c);se.far||t.push({distance:s,point:u.clone().applyMatrix4(this.matrixWorld),index:i,face:null,faceIndex:null,object:this})}}else{for(let i=Math.max(0,s.start),r=Math.min(f.count,s.start+s.count)-1;io)continue;c.applyMatrix4(this.matrixWorld);let r=e.ray.origin.distanceTo(c);re.far||t.push({distance:r,point:u.clone().applyMatrix4(this.matrixWorld),index:i,face:null,faceIndex:null,object:this})}}}updateMorphTargets(){let e=this.geometry.morphAttributes,t=Object.keys(e);if(t.length>0){let i=e[t[0]];if(void 0!==i){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let e=0,t=i.length;e0){let i=e[t[0]];if(void 0!==i){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let e=0,t=i.length;en.far)return;s.push({distance:l,distanceToRay:Math.sqrt(o),point:i,index:t,face:null,object:a})}}var Y4=class extends Bi{constructor(e,t,i,r,n,s,a,o,l){super(e,t,i,r,n,s,a,o,l),this.isVideoTexture=!0,this.minFilter=void 0!==s?s:li,this.magFilter=void 0!==n?n:li,this.generateMipmaps=!1;let h=this;"requestVideoFrameCallback"in e&&e.requestVideoFrameCallback((function t(){h.needsUpdate=!0,e.requestVideoFrameCallback(t)}))}clone(){return new this.constructor(this.image).copy(this)}update(){let e=this.image;"requestVideoFrameCallback"in e==!1&&e.readyState>=e.HAVE_CURRENT_DATA&&(this.needsUpdate=!0)}},X4=class extends Bi{constructor(e,t,i){super({width:e,height:t}),this.isFramebufferTexture=!0,this.format=i,this.magFilter=Ci,this.minFilter=Ci,this.generateMipmaps=!1,this.needsUpdate=!0}},px=class extends Bi{constructor(e,t,i,r,n,s,a,o,l,h,u,c){super(null,s,a,o,l,h,r,n,u,c),this.isCompressedTexture=!0,this.image={width:t,height:i},this.mipmaps=e,this.flipY=!1,this.generateMipmaps=!1}},$4=class extends px{constructor(e,t,i,r,n,s){super(e,t,i,n,s),this.isCompressedArrayTexture=!0,this.image.depth=r,this.wrapR=mn}},Z4=class extends Bi{constructor(e,t,i,r,n,s,a,o,l){super(e,t,i,r,n,s,a,o,l),this.isCanvasTexture=!0,this.needsUpdate=!0}},Aa=class{constructor(){this.type="Curve",this.arcLengthDivisions=200}getPoint(){return console.warn("THREE.Curve: .getPoint() not implemented."),null}getPointAt(e,t){let i=this.getUtoTmapping(e);return this.getPoint(i,t)}getPoints(e=5){let t=[];for(let i=0;i<=e;i++)t.push(this.getPoint(i/e));return t}getSpacedPoints(e=5){let t=[];for(let i=0;i<=e;i++)t.push(this.getPointAt(i/e));return t}getLength(){let e=this.getLengths();return e[e.length-1]}getLengths(e=this.arcLengthDivisions){if(this.cacheArcLengths&&this.cacheArcLengths.length===e+1&&!this.needsUpdate)return this.cacheArcLengths;this.needsUpdate=!1;let t,i=[],r=this.getPoint(0),n=0;i.push(0);for(let s=1;s<=e;s++)t=this.getPoint(s/e),n+=t.distanceTo(r),i.push(n),r=t;return this.cacheArcLengths=i,i}updateArcLengths(){this.needsUpdate=!0,this.getLengths()}getUtoTmapping(e,t){let i,r=this.getLengths(),n=0,s=r.length;i=t||e*r[s-1];let a,o=0,l=s-1;for(;o<=l;)if(n=Math.floor(o+(l-o)/2),a=r[n]-i,a<0)o=n+1;else{if(!(a>0)){l=n;break}l=n-1}if(n=l,r[n]===i)return n/(s-1);let h=r[n];return(n+(i-h)/(r[n+1]-h))/(s-1)}getTangent(e,t){let i=e-1e-4,r=e+1e-4;i<0&&(i=0),r>1&&(r=1);let n=this.getPoint(i),s=this.getPoint(r),a=t||(n.isVector2?new le:new A);return a.copy(s).sub(n).normalize(),a}getTangentAt(e,t){let i=this.getUtoTmapping(e);return this.getTangent(i,t)}computeFrenetFrames(e,t){let i=new A,r=[],n=[],s=[],a=new A,o=new Be;for(let t=0;t<=e;t++){let i=t/e;r[t]=this.getTangentAt(i,new A)}n[0]=new A,s[0]=new A;let l=Number.MAX_VALUE,h=Math.abs(r[0].x),u=Math.abs(r[0].y),c=Math.abs(r[0].z);h<=l&&(l=h,i.set(1,0,0)),u<=l&&(l=u,i.set(0,1,0)),c<=l&&i.set(0,0,1),a.crossVectors(r[0],i).normalize(),n[0].crossVectors(r[0],a),s[0].crossVectors(r[0],n[0]);for(let t=1;t<=e;t++){if(n[t]=n[t-1].clone(),s[t]=s[t-1].clone(),a.crossVectors(r[t-1],r[t]),a.length()>Number.EPSILON){a.normalize();let e=Math.acos(ts(r[t-1].dot(r[t]),-1,1));n[t].applyMatrix4(o.makeRotationAxis(a,e))}s[t].crossVectors(r[t],n[t])}if(!0===t){let t=Math.acos(ts(n[0].dot(n[e]),-1,1));t/=e,r[0].dot(a.crossVectors(n[0],n[e]))>0&&(t=-t);for(let i=1;i<=e;i++)n[i].applyMatrix4(o.makeRotationAxis(r[i],t*i)),s[i].crossVectors(r[i],n[i])}return{tangents:r,normals:n,binormals:s}}clone(){return(new this.constructor).copy(this)}copy(e){return this.arcLengthDivisions=e.arcLengthDivisions,this}toJSON(){let e={metadata:{version:4.5,type:"Curve",generator:"Curve.toJSON"}};return e.arcLengthDivisions=this.arcLengthDivisions,e.type=this.type,e}fromJSON(e){return this.arcLengthDivisions=e.arcLengthDivisions,this}},Rp=class extends Aa{constructor(e=0,t=0,i=1,r=1,n=0,s=2*Math.PI,a=!1,o=0){super(),this.isEllipseCurve=!0,this.type="EllipseCurve",this.aX=e,this.aY=t,this.xRadius=i,this.yRadius=r,this.aStartAngle=n,this.aEndAngle=s,this.aClockwise=a,this.aRotation=o}getPoint(e,t){let i=t||new le,r=2*Math.PI,n=this.aEndAngle-this.aStartAngle,s=Math.abs(n)r;)n-=r;n0?0:(Math.floor(Math.abs(l)/a)+1)*a:0===h&&l===a-1&&(l=a-2,h=1),this.closed||l>0?i=s[(l-1)%a]:(uD.subVectors(s[0],s[1]).add(s[0]),i=uD);let u=s[l%a],c=s[(l+1)%a];if(this.closed||l+2r.length-2?r.length-1:s+1],u=r[s>r.length-3?r.length-1:s+2];return i.set(kue(a,o.x,l.x,h.x,u.x),kue(a,o.y,l.y,h.y,u.y)),i}copy(e){super.copy(e),this.points=[];for(let t=0,i=e.points.length;t=i){let e=r[n]-i,s=this.curves[n],a=s.getLength(),o=0===a?0:1-e/a;return s.getPointAt(o,t)}n++}return null}getLength(){let e=this.getCurveLengths();return e[e.length-1]}updateArcLengths(){this.needsUpdate=!0,this.cacheLengths=null,this.getCurveLengths()}getCurveLengths(){if(this.cacheLengths&&this.cacheLengths.length===this.curves.length)return this.cacheLengths;let e=[],t=0;for(let i=0,r=this.curves.length;i1&&!i[i.length-1].equals(i[0])&&i.push(i[0]),i}copy(e){super.copy(e),this.curves=[];for(let t=0,i=e.curves.length;t0){let e=l.getPoint(0);e.equals(this.currentPoint)||this.lineTo(e.x,e.y)}this.curves.push(l);let h=l.getPoint(1);return this.currentPoint.copy(h),this}copy(e){return super.copy(e),this.currentPoint.copy(e.currentPoint),this}toJSON(){let e=super.toJSON();return e.currentPoint=this.currentPoint.toArray(),e}fromJSON(e){return super.fromJSON(e),this.currentPoint.fromArray(e.currentPoint),this}},lf=class extends lt{constructor(e=[new le(0,-.5),new le(.5,0),new le(0,.5)],t=12,i=0,r=2*Math.PI){super(),this.type="LatheGeometry",this.parameters={points:e,segments:t,phiStart:i,phiLength:r},t=Math.floor(t),r=ts(r,0,2*Math.PI);let n=[],s=[],a=[],o=[],l=[],h=1/t,u=new A,c=new le,p=new A,d=new A,f=new A,m=0,g=0;for(let t=0;t<=e.length-1;t++)switch(t){case 0:m=e[t+1].x-e[t].x,g=e[t+1].y-e[t].y,p.x=1*g,p.y=-m,p.z=0*g,f.copy(p),p.normalize(),o.push(p.x,p.y,p.z);break;case e.length-1:o.push(f.x,f.y,f.z);break;default:m=e[t+1].x-e[t].x,g=e[t+1].y-e[t].y,p.x=1*g,p.y=-m,p.z=0*g,d.copy(p),p.x+=f.x,p.y+=f.y,p.z+=f.z,p.normalize(),o.push(p.x,p.y,p.z),f.copy(d)}for(let n=0;n<=t;n++){let p=i+n*h*r,d=Math.sin(p),f=Math.cos(p);for(let i=0;i<=e.length-1;i++){u.x=e[i].x*d,u.y=e[i].y,u.z=e[i].x*f,s.push(u.x,u.y,u.z),c.x=n/t,c.y=i/(e.length-1),a.push(c.x,c.y);let r=o[3*i+0]*d,h=o[3*i+1],p=o[3*i+0]*f;l.push(r,h,p)}}for(let i=0;i0&&y(!0),t>0&&y(!1)),this.setIndex(h),this.setAttribute("position",new dt(u,3)),this.setAttribute("normal",new dt(c,3)),this.setAttribute("uv",new dt(p,2))}static fromJSON(e){return new Cl(e.radiusTop,e.radiusBottom,e.height,e.radialSegments,e.heightSegments,e.openEnded,e.thetaStart,e.thetaLength)}},Sg=class extends Cl{constructor(e=1,t=1,i=32,r=1,n=!1,s=0,a=2*Math.PI){super(0,e,t,i,r,n,s,a),this.type="ConeGeometry",this.parameters={radius:e,height:t,radialSegments:i,heightSegments:r,openEnded:n,thetaStart:s,thetaLength:a}}static fromJSON(e){return new Sg(e.radius,e.height,e.radialSegments,e.heightSegments,e.openEnded,e.thetaStart,e.thetaLength)}},Oc=class extends lt{constructor(e=[],t=[],i=1,r=0){super(),this.type="PolyhedronGeometry",this.parameters={vertices:e,indices:t,radius:i,detail:r};let n=[],s=[];function a(e,t,i,r){let n=r+1,s=[];for(let r=0;r<=n;r++){s[r]=[];let a=e.clone().lerp(i,r/n),o=t.clone().lerp(i,r/n),l=n-r;for(let e=0;e<=l;e++)s[r][e]=0===e&&r===n?a:a.clone().lerp(o,e/l)}for(let e=0;e.9&&a<.1&&(t<.2&&(s[e+0]+=1),i<.2&&(s[e+2]+=1),r<.2&&(s[e+4]+=1))}}()}(),this.setAttribute("position",new dt(n,3)),this.setAttribute("normal",new dt(n.slice(),3)),this.setAttribute("uv",new dt(s,2)),0===r?this.computeVertexNormals():this.normalizeNormals()}static fromJSON(e){return new Oc(e.vertices,e.indices,e.radius,e.details)}},wg=class extends Oc{constructor(e=1,t=0){let i=(1+Math.sqrt(5))/2,r=1/i;super([-1,-1,-1,-1,-1,1,-1,1,-1,-1,1,1,1,-1,-1,1,-1,1,1,1,-1,1,1,1,0,-r,-i,0,-r,i,0,r,-i,0,r,i,-r,-i,0,-r,i,0,r,-i,0,r,i,0,-i,0,-r,i,0,-r,-i,0,r,i,0,r],[3,11,7,3,7,15,3,15,13,7,19,17,7,17,6,7,6,15,17,4,8,17,8,10,17,10,6,8,0,16,8,16,2,8,2,10,0,12,1,0,1,18,0,18,16,6,10,2,6,2,13,6,13,15,2,16,18,2,18,3,2,3,13,18,1,9,18,9,11,18,11,3,4,14,12,4,12,0,4,0,8,11,9,5,11,5,19,11,19,7,19,5,14,19,14,4,19,4,17,1,12,14,1,14,5,1,5,9],e,t),this.type="DodecahedronGeometry",this.parameters={radius:e,detail:t}}static fromJSON(e){return new wg(e.radius,e.detail)}},hD=new A,pD=new A,XH=new A,dD=new un,Mp=class extends lt{constructor(e=null,t=1){if(super(),this.type="EdgesGeometry",this.parameters={geometry:e,thresholdAngle:t},null!==e){let i=Math.pow(10,4),r=Math.cos(mg*t),n=e.getIndex(),s=e.getAttribute("position"),a=n?n.count:s.count,o=[0,0,0],l=["a","b","c"],h=new Array(3),u={},c=[];for(let e=0;e80*i){r=s=e[0],n=a=e[1];for(let t=i;ts&&(s=o),l>a&&(a=l);h=Math.max(s-r,a-n),h=0!==h?32767/h:0}return gx(p,d,i,r,n,h,0),d}};function upe(e,t,i,r,n){let s,a;if(n===nTt(e,t,i,r)>0)for(s=t;s=t;s-=r)a=Gue(s,e[s],e[s+1],a);return a&&hC(a,a.next)&&(yx(a),a=a.next),a}function Rg(e,t){if(!e)return e;t||(t=e);let i,r=e;do{if(i=!1,r.steiner||!hC(r,r.next)&&0!==Pn(r.prev,r,r.next))r=r.next;else{if(yx(r),r=t=r.prev,r===r.next)break;i=!0}}while(i||r!==t);return t}function gx(e,t,i,r,n,s,a){if(!e)return;!a&&s&&Jyt(e,r,n,s);let o,l,h=e;for(;e.prev!==e.next;)if(o=e.prev,l=e.next,s?jyt(e,r,n,s):zyt(e))t.push(o.i/i|0),t.push(e.i/i|0),t.push(l.i/i|0),yx(e),e=l.next,h=l.next;else if((e=l)===h){a?1===a?gx(e=Wyt(Rg(e),t,i),t,i,r,n,s,2):2===a&&qyt(e,t,i,r,n,s):gx(Rg(e),t,i,r,n,s,1);break}}function zyt(e){let t=e.prev,i=e,r=e.next;if(Pn(t,i,r)>=0)return!1;let n=t.x,s=i.x,a=r.x,o=t.y,l=i.y,h=r.y,u=ns?n>a?n:a:s>a?s:a,d=o>l?o>h?o:h:l>h?l:h,f=r.next;for(;f!==t;){if(f.x>=u&&f.x<=p&&f.y>=c&&f.y<=d&&Dy(n,o,s,l,a,h,f.x,f.y)&&Pn(f.prev,f,f.next)>=0)return!1;f=f.next}return!0}function jyt(e,t,i,r){let n=e.prev,s=e,a=e.next;if(Pn(n,s,a)>=0)return!1;let o=n.x,l=s.x,h=a.x,u=n.y,c=s.y,p=a.y,d=ol?o>h?o:h:l>h?l:h,g=u>c?u>p?u:p:c>p?c:p,y=K4(d,f,t,i,r),v=K4(m,g,t,i,r),T=e.prevZ,x=e.nextZ;for(;T&&T.z>=y&&x&&x.z<=v;){if(T.x>=d&&T.x<=m&&T.y>=f&&T.y<=g&&T!==n&&T!==a&&Dy(o,u,l,c,h,p,T.x,T.y)&&Pn(T.prev,T,T.next)>=0||(T=T.prevZ,x.x>=d&&x.x<=m&&x.y>=f&&x.y<=g&&x!==n&&x!==a&&Dy(o,u,l,c,h,p,x.x,x.y)&&Pn(x.prev,x,x.next)>=0))return!1;x=x.nextZ}for(;T&&T.z>=y;){if(T.x>=d&&T.x<=m&&T.y>=f&&T.y<=g&&T!==n&&T!==a&&Dy(o,u,l,c,h,p,T.x,T.y)&&Pn(T.prev,T,T.next)>=0)return!1;T=T.prevZ}for(;x&&x.z<=v;){if(x.x>=d&&x.x<=m&&x.y>=f&&x.y<=g&&x!==n&&x!==a&&Dy(o,u,l,c,h,p,x.x,x.y)&&Pn(x.prev,x,x.next)>=0)return!1;x=x.nextZ}return!0}function Wyt(e,t,i){let r=e;do{let n=r.prev,s=r.next.next;!hC(n,s)&&hpe(n,r,r.next,s)&&vx(n,s)&&vx(s,n)&&(t.push(n.i/i|0),t.push(r.i/i|0),t.push(s.i/i|0),yx(r),yx(r.next),r=e=s),r=r.next}while(r!==e);return Rg(r)}function qyt(e,t,i,r,n,s){let a=e;do{let e=a.next.next;for(;e!==a.prev;){if(a.i!==e.i&&tTt(a,e)){let o=ppe(a,e);return a=Rg(a,a.next),o=Rg(o,o.next),gx(a,t,i,r,n,s,0),void gx(o,t,i,r,n,s,0)}e=e.next}a=a.next}while(a!==e)}function Yyt(e,t,i,r){let n,s,a,o,l,h=[];for(n=0,s=t.length;n=r.next.y&&r.next.y!==r.y){let e=r.x+(a-r.y)*(r.next.x-r.x)/(r.next.y-r.y);if(e<=s&&e>n&&(n=e,i=r.x=r.x&&r.x>=h&&s!==r.x&&Dy(ai.x||r.x===i.x&&Kyt(i,r)))&&(i=r,c=o)),r=r.next}while(r!==l);return i}function Kyt(e,t){return Pn(e.prev,e,t.prev)<0&&Pn(t.next,e,e.next)<0}function Jyt(e,t,i,r){let n=e;do{0===n.z&&(n.z=K4(n.x,n.y,t,i,r)),n.prevZ=n.prev,n.nextZ=n.next,n=n.next}while(n!==e);n.prevZ.nextZ=null,n.prevZ=null,Qyt(n)}function Qyt(e){let t,i,r,n,s,a,o,l,h=1;do{for(i=e,e=null,s=null,a=0;i;){for(a++,r=i,o=0,t=0;t0||l>0&&r;)0!==o&&(0===l||!r||i.z<=r.z)?(n=i,i=i.nextZ,o--):(n=r,r=r.nextZ,l--),s?s.nextZ=n:e=n,n.prevZ=s,s=n;i=r}s.nextZ=null,h*=2}while(a>1);return e}function K4(e,t,i,r,n){return(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=(e-i)*n|0)|e<<8))|e<<4))|e<<2))|e<<1))|(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=(t-r)*n|0)|t<<8))|t<<4))|t<<2))|t<<1))<<1}function eTt(e){let t=e,i=e;do{(t.x=(e-a)*(s-o)&&(e-a)*(r-o)>=(i-a)*(t-o)&&(i-a)*(s-o)>=(n-a)*(r-o)}function tTt(e,t){return e.next.i!==t.i&&e.prev.i!==t.i&&!rTt(e,t)&&(vx(e,t)&&vx(t,e)&&iTt(e,t)&&(Pn(e.prev,e,t.prev)||Pn(e,t.prev,t))||hC(e,t)&&Pn(e.prev,e,e.next)>0&&Pn(t.prev,t,t.next)>0)}function Pn(e,t,i){return(t.y-e.y)*(i.x-t.x)-(t.x-e.x)*(i.y-t.y)}function hC(e,t){return e.x===t.x&&e.y===t.y}function hpe(e,t,i,r){let n=mD(Pn(e,t,i)),s=mD(Pn(e,t,r)),a=mD(Pn(i,r,e)),o=mD(Pn(i,r,t));return!!(n!==s&&a!==o||0===n&&fD(e,i,t)||0===s&&fD(e,r,t)||0===a&&fD(i,e,r)||0===o&&fD(i,t,r))}function fD(e,t,i){return t.x<=Math.max(e.x,i.x)&&t.x>=Math.min(e.x,i.x)&&t.y<=Math.max(e.y,i.y)&&t.y>=Math.min(e.y,i.y)}function mD(e){return e>0?1:e<0?-1:0}function rTt(e,t){let i=e;do{if(i.i!==e.i&&i.next.i!==e.i&&i.i!==t.i&&i.next.i!==t.i&&hpe(i,i.next,e,t))return!0;i=i.next}while(i!==e);return!1}function vx(e,t){return Pn(e.prev,e,e.next)<0?Pn(e,t,e.next)>=0&&Pn(e,e.prev,t)>=0:Pn(e,t,e.prev)<0||Pn(e,e.next,t)<0}function iTt(e,t){let i=e,r=!1,n=(e.x+t.x)/2,s=(e.y+t.y)/2;do{i.y>s!=i.next.y>s&&i.next.y!==i.y&&n<(i.next.x-i.x)*(s-i.y)/(i.next.y-i.y)+i.x&&(r=!r),i=i.next}while(i!==e);return r}function ppe(e,t){let i=new J4(e.i,e.x,e.y),r=new J4(t.i,t.x,t.y),n=e.next,s=t.prev;return e.next=t,t.prev=e,i.next=n,n.prev=i,r.next=i,i.prev=r,s.next=r,r.prev=s,r}function Gue(e,t,i,r){let n=new J4(e,t,i);return r?(n.next=r.next,n.prev=r,r.next.prev=n,r.next=n):(n.prev=n,n.next=n),n}function yx(e){e.next.prev=e.prev,e.prev.next=e.next,e.prevZ&&(e.prevZ.nextZ=e.nextZ),e.nextZ&&(e.nextZ.prevZ=e.prevZ)}function J4(e,t,i){this.i=e,this.x=t,this.y=i,this.prev=null,this.next=null,this.z=0,this.prevZ=null,this.nextZ=null,this.steiner=!1}function nTt(e,t,i,r){let n=0;for(let s=t,a=i-r;s2&&e[t-1].equals(e[0])&&e.pop()}function zue(e,t){for(let i=0;iNumber.EPSILON){let c=Math.sqrt(u),p=Math.sqrt(l*l+h*h),d=t.x-o/c,f=t.y+a/c,m=((i.x-h/p-d)*h-(i.y+l/p-f)*l)/(a*h-o*l);r=d+a*m-e.x,n=f+o*m-e.y;let g=r*r+n*n;if(g<=2)return new le(r,n);s=Math.sqrt(g/2)}else{let e=!1;a>Number.EPSILON?l>Number.EPSILON&&(e=!0):a<-Number.EPSILON?l<-Number.EPSILON&&(e=!0):Math.sign(o)===Math.sign(h)&&(e=!0),e?(r=-o,n=a,s=Math.sqrt(u)):(r=a,n=o,s=Math.sqrt(u/2))}return new le(r/s,n/s)}let C=[];for(let e=0,t=I.length,i=t-1,r=e+1;e=0;e--){let t=e/v,i=m*Math.cos(t*Math.PI/2),r=g*Math.sin(t*Math.PI/2)+y;for(let e=0,t=I.length;e=0;){let r=i,n=i-1;n<0&&(n=e.length-1);for(let e=0,i=p+2*v;e0)&&p.push(t,n,l),(e!==i-1||o0!=e>0&&this.version++,this._sheen=e}get clearcoat(){return this._clearcoat}set clearcoat(e){this._clearcoat>0!=e>0&&this.version++,this._clearcoat=e}get iridescence(){return this._iridescence}set iridescence(e){this._iridescence>0!=e>0&&this.version++,this._iridescence=e}get transmission(){return this._transmission}set transmission(e){this._transmission>0!=e>0&&this.version++,this._transmission=e}copy(e){return super.copy(e),this.defines={STANDARD:"",PHYSICAL:""},this.clearcoat=e.clearcoat,this.clearcoatMap=e.clearcoatMap,this.clearcoatRoughness=e.clearcoatRoughness,this.clearcoatRoughnessMap=e.clearcoatRoughnessMap,this.clearcoatNormalMap=e.clearcoatNormalMap,this.clearcoatNormalScale.copy(e.clearcoatNormalScale),this.ior=e.ior,this.iridescence=e.iridescence,this.iridescenceMap=e.iridescenceMap,this.iridescenceIOR=e.iridescenceIOR,this.iridescenceThicknessRange=[...e.iridescenceThicknessRange],this.iridescenceThicknessMap=e.iridescenceThicknessMap,this.sheen=e.sheen,this.sheenColor.copy(e.sheenColor),this.sheenColorMap=e.sheenColorMap,this.sheenRoughness=e.sheenRoughness,this.sheenRoughnessMap=e.sheenRoughnessMap,this.transmission=e.transmission,this.transmissionMap=e.transmissionMap,this.thickness=e.thickness,this.thicknessMap=e.thicknessMap,this.attenuationDistance=e.attenuationDistance,this.attenuationColor.copy(e.attenuationColor),this.specularIntensity=e.specularIntensity,this.specularIntensityMap=e.specularIntensityMap,this.specularColor.copy(e.specularColor),this.specularColorMap=e.specularColorMap,this}},bs=class extends jr{constructor(e){super(),this.isMeshPhongMaterial=!0,this.type="MeshPhongMaterial",this.color=new je(16777215),this.specular=new je(1118481),this.shininess=30,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new je(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=ff,this.normalScale=new le(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.combine=Ax,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.specular.copy(e.specular),this.shininess=e.shininess,this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.flatShading=e.flatShading,this.fog=e.fog,this}},YD=class extends jr{constructor(e){super(),this.isMeshToonMaterial=!0,this.defines={TOON:""},this.type="MeshToonMaterial",this.color=new je(16777215),this.map=null,this.gradientMap=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new je(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=ff,this.normalScale=new le(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.alphaMap=null,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.gradientMap=e.gradientMap,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.alphaMap=e.alphaMap,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.fog=e.fog,this}},uf=class extends jr{constructor(e){super(),this.isMeshNormalMaterial=!0,this.type="MeshNormalMaterial",this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=ff,this.normalScale=new le(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.flatShading=!1,this.setValues(e)}copy(e){return super.copy(e),this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.flatShading=e.flatShading,this}},ao=class extends jr{constructor(e){super(),this.isMeshLambertMaterial=!0,this.type="MeshLambertMaterial",this.color=new je(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new je(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=ff,this.normalScale=new le(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.combine=Ax,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.flatShading=e.flatShading,this.fog=e.fog,this}},XD=class extends jr{constructor(e){super(),this.isMeshMatcapMaterial=!0,this.defines={MATCAP:""},this.type="MeshMatcapMaterial",this.color=new je(16777215),this.matcap=null,this.map=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=ff,this.normalScale=new le(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.alphaMap=null,this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.defines={MATCAP:""},this.color.copy(e.color),this.matcap=e.matcap,this.map=e.map,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.alphaMap=e.alphaMap,this.flatShading=e.flatShading,this.fog=e.fog,this}},Op=class extends vr{constructor(e){super(),this.isLineDashedMaterial=!0,this.type="LineDashedMaterial",this.scale=1,this.dashSize=3,this.gapSize=1,this.setValues(e)}copy(e){return super.copy(e),this.scale=e.scale,this.dashSize=e.dashSize,this.gapSize=e.gapSize,this}};function Sl(e,t,i){return nB(e)?new e.constructor(e.subarray(t,void 0!==i?i:e.length)):e.slice(t,i)}function dg(e,t,i){return!e||!i&&e.constructor===t?e:"number"==typeof t.BYTES_PER_ELEMENT?new t(e):Array.prototype.slice.call(e)}function nB(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}function dpe(e){let t=e.length,i=new Array(t);for(let e=0;e!==t;++e)i[e]=e;return i.sort((function(t,i){return e[t]-e[i]})),i}function Q4(e,t,i){let r=e.length,n=new e.constructor(r);for(let s=0,a=0;a!==r;++s){let r=i[s]*t;for(let i=0;i!==t;++i)n[a++]=e[r+i]}return n}function sB(e,t,i,r){let n=1,s=e[0];for(;void 0!==s&&void 0===s[r];)s=e[n++];if(void 0===s)return;let a=s[r];if(void 0!==a)if(Array.isArray(a))do{a=s[r],void 0!==a&&(t.push(s.time),i.push.apply(i,a)),s=e[n++]}while(void 0!==s);else if(void 0!==a.toArray)do{a=s[r],void 0!==a&&(t.push(s.time),a.toArray(i,i.length)),s=e[n++]}while(void 0!==s);else do{a=s[r],void 0!==a&&(t.push(s.time),i.push(a)),s=e[n++]}while(void 0!==s)}function lTt(e,t,i,r,n=30){let s=e.clone();s.name=t;let a=[];for(let e=0;e=r)){l.push(t.times[e]);for(let i=0;is.tracks[e].times[0]&&(o=s.tracks[e].times[0]);for(let e=0;e=r.times[p]){let e=p*l+o,t=e+l-o;c=Sl(r.values,e,t)}else{let e=r.createInterpolant(),t=o,i=l-o;e.evaluate(s),c=Sl(e.resultBuffer,t,i)}"quaternion"===n&&(new Hr).fromArray(c).normalize().conjugate().toArray(c);let d=a.times.length;for(let e=0;e=n)break e;{let a=t[1];e=n)break t}s=i,i=0}}for(;i>>1;et;)--s;if(++s,0!==n||s!==r){n>=s&&(s=Math.max(s,1),n=s-1);let e=this.getValueSize();this.times=Sl(i,n,s),this.values=Sl(this.values,n*e,s*e)}return this}validate(){let e=!0,t=this.getValueSize();t-Math.floor(t)!=0&&(console.error("THREE.KeyframeTrack: Invalid value size in track.",this),e=!1);let i=this.times,r=this.values,n=i.length;0===n&&(console.error("THREE.KeyframeTrack: Track is empty.",this),e=!1);let s=null;for(let t=0;t!==n;t++){let r=i[t];if("number"==typeof r&&isNaN(r)){console.error("THREE.KeyframeTrack: Time is not a valid number.",this,t,r),e=!1;break}if(null!==s&&s>r){console.error("THREE.KeyframeTrack: Out of order keys.",this,t,r,s),e=!1;break}s=r}if(void 0!==r&&nB(r))for(let t=0,i=r.length;t!==i;++t){let i=r[t];if(isNaN(i)){console.error("THREE.KeyframeTrack: Value is not a valid number.",this,t,i),e=!1;break}}return e}optimize(){let e=Sl(this.times),t=Sl(this.values),i=this.getValueSize(),r=this.getInterpolation()===MD,n=e.length-1,s=1;for(let a=1;a0){e[s]=e[n];for(let e=n*i,r=s*i,a=0;a!==i;++a)t[r+a]=t[e+a];++s}return s!==e.length?(this.times=Sl(e,0,s),this.values=Sl(t,0,s*i)):(this.times=e,this.values=t),this}clone(){let e=Sl(this.times,0),t=Sl(this.values,0),i=new(0,this.constructor)(this.name,e,t);return i.createInterpolant=this.createInterpolant,i}};jo.prototype.TimeBufferType=Float32Array,jo.prototype.ValueBufferType=Float32Array,jo.prototype.DefaultInterpolation=Uu;var Np=class extends jo{};Np.prototype.ValueTypeName="bool",Np.prototype.ValueBufferType=Array,Np.prototype.DefaultInterpolation=bp,Np.prototype.InterpolantFactoryMethodLinear=void 0,Np.prototype.InterpolantFactoryMethodSmooth=void 0;var Ex=class extends jo{};Ex.prototype.ValueTypeName="color";var Pc=class extends jo{};Pc.prototype.ValueTypeName="number";var KD=class extends Pp{constructor(e,t,i,r){super(e,t,i,r)}interpolate_(e,t,i,r){let n=this.resultBuffer,s=this.sampleValues,a=this.valueSize,o=(i-t)/(r-t),l=e*a;for(let e=l+a;l!==e;l+=4)Hr.slerpFlat(n,0,s,l-a,s,l,o);return n}},Oa=class extends jo{InterpolantFactoryMethodLinear(e){return new KD(this.times,this.values,this.getValueSize(),e)}};Oa.prototype.ValueTypeName="quaternion",Oa.prototype.DefaultInterpolation=Uu,Oa.prototype.InterpolantFactoryMethodSmooth=void 0;var Lp=class extends jo{};Lp.prototype.ValueTypeName="string",Lp.prototype.ValueBufferType=Array,Lp.prototype.DefaultInterpolation=bp,Lp.prototype.InterpolantFactoryMethodLinear=void 0,Lp.prototype.InterpolantFactoryMethodSmooth=void 0;var oo=class extends jo{};oo.prototype.ValueTypeName="vector";var lo=class{constructor(e,t=-1,i,r=cC){this.name=e,this.tracks=i,this.duration=t,this.blendMode=r,this.uuid=ko(),this.duration<0&&this.resetDuration()}static parse(e){let t=[],i=e.tracks,r=1/(e.fps||1);for(let e=0,n=i.length;e!==n;++e)t.push(pTt(i[e]).scale(r));let n=new this(e.name,e.duration,t,e.blendMode);return n.uuid=e.uuid,n}static toJSON(e){let t=[],i=e.tracks,r={name:e.name,duration:e.duration,tracks:t,uuid:e.uuid,blendMode:e.blendMode};for(let e=0,r=i.length;e!==r;++e)t.push(jo.toJSON(i[e]));return r}static CreateFromMorphTargetSequence(e,t,i,r){let n=t.length,s=[];for(let e=0;e1){let e=s[1],t=r[e];t||(r[e]=t=[]),t.push(i)}}let s=[];for(let e in r)s.push(this.CreateFromMorphTargetSequence(e,r[e],t,i));return s}static parseAnimation(e,t){if(!e)return console.error("THREE.AnimationClip: No animation in JSONLoader data."),null;let i=function(e,t,i,r,n){if(0!==i.length){let s=[],a=[];sB(i,s,a,r),0!==s.length&&n.push(new e(t,s,a))}},r=[],n=e.name||"default",s=e.fps||30,a=e.blendMode,o=e.length||-1,l=e.hierarchy||[];for(let e=0;e{t&&t(n),this.manager.itemEnd(e)}),0),n;if(void 0!==dp[e])return void dp[e].push({onLoad:t,onProgress:i,onError:r});dp[e]=[],dp[e].push({onLoad:t,onProgress:i,onError:r});let s=new Request(e,{headers:new Headers(this.requestHeader),credentials:this.withCredentials?"include":"same-origin"}),a=this.mimeType,o=this.responseType;fetch(s).then((t=>{if(200===t.status||0===t.status){if(0===t.status&&console.warn("THREE.FileLoader: HTTP Status 0 received."),"undefined"==typeof ReadableStream||void 0===t.body||void 0===t.body.getReader)return t;let i=dp[e],r=t.body.getReader(),n=t.headers.get("Content-Length")||t.headers.get("X-File-Size"),s=n?parseInt(n):0,a=0!==s,o=0,l=new ReadableStream({start(e){!function t(){r.read().then((({done:r,value:n})=>{if(r)e.close();else{o+=n.byteLength;let r=new ProgressEvent("progress",{lengthComputable:a,loaded:o,total:s});for(let e=0,t=i.length;e{switch(o){case"arraybuffer":return e.arrayBuffer();case"blob":return e.blob();case"document":return e.text().then((e=>(new DOMParser).parseFromString(e,a)));case"json":return e.json();default:if(void 0===a)return e.text();{let t=/charset="?([^;"\s]*)"?/i.exec(a),i=t&&t[1]?t[1].toLowerCase():void 0,r=new TextDecoder(i);return e.arrayBuffer().then((e=>r.decode(e)))}}})).then((t=>{Pg.add(e,t);let i=dp[e];delete dp[e];for(let e=0,r=i.length;e{let i=dp[e];if(void 0===i)throw this.manager.itemError(e),t;delete dp[e];for(let e=0,r=i.length;e{this.manager.itemEnd(e)})),this.manager.itemStart(e)}setResponseType(e){return this.responseType=e,this}setMimeType(e){return this.mimeType=e,this}},tU=class extends ui{constructor(e){super(e)}load(e,t,i,r){let n=this,s=new hi(this.manager);s.setPath(this.path),s.setRequestHeader(this.requestHeader),s.setWithCredentials(this.withCredentials),s.load(e,(function(i){try{t(n.parse(JSON.parse(i)))}catch(t){r?r(t):console.error(t),n.manager.itemError(e)}}),i,r)}parse(e){let t=[];for(let i=0;i0:r.vertexColors=e.vertexColors),void 0!==e.uniforms)for(let t in e.uniforms){let n=e.uniforms[t];switch(r.uniforms[t]={},n.type){case"t":r.uniforms[t].value=i(n.value);break;case"c":r.uniforms[t].value=(new je).setHex(n.value);break;case"v2":r.uniforms[t].value=(new le).fromArray(n.value);break;case"v3":r.uniforms[t].value=(new A).fromArray(n.value);break;case"v4":r.uniforms[t].value=(new Vr).fromArray(n.value);break;case"m3":r.uniforms[t].value=(new Ni).fromArray(n.value);break;case"m4":r.uniforms[t].value=(new Be).fromArray(n.value);break;default:r.uniforms[t].value=n.value}}if(void 0!==e.defines&&(r.defines=e.defines),void 0!==e.vertexShader&&(r.vertexShader=e.vertexShader),void 0!==e.fragmentShader&&(r.fragmentShader=e.fragmentShader),void 0!==e.glslVersion&&(r.glslVersion=e.glslVersion),void 0!==e.extensions)for(let t in e.extensions)r.extensions[t]=e.extensions[t];if(void 0!==e.size&&(r.size=e.size),void 0!==e.sizeAttenuation&&(r.sizeAttenuation=e.sizeAttenuation),void 0!==e.map&&(r.map=i(e.map)),void 0!==e.matcap&&(r.matcap=i(e.matcap)),void 0!==e.alphaMap&&(r.alphaMap=i(e.alphaMap)),void 0!==e.bumpMap&&(r.bumpMap=i(e.bumpMap)),void 0!==e.bumpScale&&(r.bumpScale=e.bumpScale),void 0!==e.normalMap&&(r.normalMap=i(e.normalMap)),void 0!==e.normalMapType&&(r.normalMapType=e.normalMapType),void 0!==e.normalScale){let t=e.normalScale;!1===Array.isArray(t)&&(t=[t,t]),r.normalScale=(new le).fromArray(t)}return void 0!==e.displacementMap&&(r.displacementMap=i(e.displacementMap)),void 0!==e.displacementScale&&(r.displacementScale=e.displacementScale),void 0!==e.displacementBias&&(r.displacementBias=e.displacementBias),void 0!==e.roughnessMap&&(r.roughnessMap=i(e.roughnessMap)),void 0!==e.metalnessMap&&(r.metalnessMap=i(e.metalnessMap)),void 0!==e.emissiveMap&&(r.emissiveMap=i(e.emissiveMap)),void 0!==e.emissiveIntensity&&(r.emissiveIntensity=e.emissiveIntensity),void 0!==e.specularMap&&(r.specularMap=i(e.specularMap)),void 0!==e.specularIntensityMap&&(r.specularIntensityMap=i(e.specularIntensityMap)),void 0!==e.specularColorMap&&(r.specularColorMap=i(e.specularColorMap)),void 0!==e.envMap&&(r.envMap=i(e.envMap)),void 0!==e.envMapIntensity&&(r.envMapIntensity=e.envMapIntensity),void 0!==e.reflectivity&&(r.reflectivity=e.reflectivity),void 0!==e.refractionRatio&&(r.refractionRatio=e.refractionRatio),void 0!==e.lightMap&&(r.lightMap=i(e.lightMap)),void 0!==e.lightMapIntensity&&(r.lightMapIntensity=e.lightMapIntensity),void 0!==e.aoMap&&(r.aoMap=i(e.aoMap)),void 0!==e.aoMapIntensity&&(r.aoMapIntensity=e.aoMapIntensity),void 0!==e.gradientMap&&(r.gradientMap=i(e.gradientMap)),void 0!==e.clearcoatMap&&(r.clearcoatMap=i(e.clearcoatMap)),void 0!==e.clearcoatRoughnessMap&&(r.clearcoatRoughnessMap=i(e.clearcoatRoughnessMap)),void 0!==e.clearcoatNormalMap&&(r.clearcoatNormalMap=i(e.clearcoatNormalMap)),void 0!==e.clearcoatNormalScale&&(r.clearcoatNormalScale=(new le).fromArray(e.clearcoatNormalScale)),void 0!==e.iridescenceMap&&(r.iridescenceMap=i(e.iridescenceMap)),void 0!==e.iridescenceThicknessMap&&(r.iridescenceThicknessMap=i(e.iridescenceThicknessMap)),void 0!==e.transmissionMap&&(r.transmissionMap=i(e.transmissionMap)),void 0!==e.thicknessMap&&(r.thicknessMap=i(e.thicknessMap)),void 0!==e.sheenColorMap&&(r.sheenColorMap=i(e.sheenColorMap)),void 0!==e.sheenRoughnessMap&&(r.sheenRoughnessMap=i(e.sheenRoughnessMap)),r}setTextures(e){return this.textures=e,this}static createMaterialFromType(e){return new{ShadowMaterial:WD,SpriteMaterial:Eg,RawShaderMaterial:qD,ShaderMaterial:Yt,PointsMaterial:qn,MeshPhysicalMaterial:Al,MeshStandardMaterial:Vu,MeshPhongMaterial:bs,MeshToonMaterial:YD,MeshNormalMaterial:uf,MeshLambertMaterial:ao,MeshDepthMaterial:_p,MeshDistanceMaterial:hx,MeshBasicMaterial:lr,MeshMatcapMaterial:XD,LineDashedMaterial:Op,LineBasicMaterial:vr,Material:jr}[e]}},Vs=class{static decodeText(e){if("undefined"!=typeof TextDecoder)return(new TextDecoder).decode(e);let t="";for(let i=0,r=e.length;i0){let r=new Fp(t);i=new Ng(r),i.setCrossOrigin(this.crossOrigin);for(let t=0,i=e.length;t0){t=new Ng(this.manager),t.setCrossOrigin(this.crossOrigin);for(let t=0,i=e.length;t0){this.source.connect(this.filters[0]);for(let e=1,t=this.filters.length;e0){this.source.disconnect(this.filters[0]);for(let e=1,t=this.filters.length;e0&&this._mixBufferRegionAdditive(i,r,this._addIndex*t,1,t);for(let e=t,n=t+t;e!==n;++e)if(i[e]!==i[e+t]){a.setValue(i,r);break}}saveOriginalState(){let e=this.binding,t=this.buffer,i=this.valueSize,r=i*this._origIndex;e.getValue(t,r);for(let e=i,n=r;e!==n;++e)t[e]=t[r+e%i];this._setIdentity(),this.cumulativeWeight=0,this.cumulativeWeightAdditive=0}restoreOriginalState(){let e=3*this.valueSize;this.binding.setValue(this.buffer,e)}_setAdditiveIdentityNumeric(){let e=this._addIndex*this.valueSize,t=e+this.valueSize;for(let i=e;i=.5)for(let r=0;r!==n;++r)e[t+r]=e[i+r]}_slerp(e,t,i,r){Hr.slerpFlat(e,t,e,t,e,i,r)}_slerpAdditive(e,t,i,r,n){let s=this._workIndex*n;Hr.multiplyQuaternionsFlat(e,s,e,t,e,i),Hr.slerpFlat(e,t,e,t,e,s,r)}_lerp(e,t,i,r,n){let s=1-r;for(let a=0;a!==n;++a){let n=t+a;e[n]=e[n]*s+e[i+a]*r}}_lerpAdditive(e,t,i,r,n){for(let s=0;s!==n;++s){let n=t+s;e[n]=e[n]+e[i+s]*r}}},aB="\\[\\]\\.:\\/",gTt=new RegExp("["+aB+"]","g"),oB="[^"+aB+"]",vTt="[^"+aB.replace("\\.","")+"]",yTt=/((?:WC+[\/:])*)/.source.replace("WC",oB),TTt=/(WCOD+)?/.source.replace("WCOD",vTt),ETt=/(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace("WC",oB),bTt=/\.(WC+)(?:\[(.+)\])?/.source.replace("WC",oB),xTt=new RegExp("^"+yTt+TTt+ETt+bTt+"$"),ITt=["material","materials","bones","map"],fU=class{constructor(e,t,i){let r=i||Mr.parseTrackName(t);this._targetGroup=e,this._bindings=e.subscribe_(t,r)}getValue(e,t){this.bind();let i=this._targetGroup.nCachedObjects_,r=this._bindings[i];void 0!==r&&r.getValue(e,t)}setValue(e,t){let i=this._bindings;for(let r=this._targetGroup.nCachedObjects_,n=i.length;r!==n;++r)i[r].setValue(e,t)}bind(){let e=this._bindings;for(let t=this._targetGroup.nCachedObjects_,i=e.length;t!==i;++t)e[t].bind()}unbind(){let e=this._bindings;for(let t=this._targetGroup.nCachedObjects_,i=e.length;t!==i;++t)e[t].unbind()}},Mr=class{constructor(e,t,i){this.path=t,this.parsedPath=i||Mr.parseTrackName(t),this.node=Mr.findNode(e,this.parsedPath.nodeName)||e,this.rootNode=e,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}static create(e,t,i){return e&&e.isAnimationObjectGroup?new Mr.Composite(e,t,i):new Mr(e,t,i)}static sanitizeNodeName(e){return e.replace(/\s/g,"_").replace(gTt,"")}static parseTrackName(e){let t=xTt.exec(e);if(null===t)throw new Error("PropertyBinding: Cannot parse trackName: "+e);let i={nodeName:t[2],objectName:t[3],objectIndex:t[4],propertyName:t[5],propertyIndex:t[6]},r=i.nodeName&&i.nodeName.lastIndexOf(".");if(void 0!==r&&-1!==r){let e=i.nodeName.substring(r+1);-1!==ITt.indexOf(e)&&(i.nodeName=i.nodeName.substring(0,r),i.objectName=e)}if(null===i.propertyName||0===i.propertyName.length)throw new Error("PropertyBinding: can not parse propertyName from trackName: "+e);return i}static findNode(e,t){if(void 0===t||""===t||"."===t||-1===t||t===e.name||t===e.uuid)return e;if(e.skeleton){let i=e.skeleton.getBoneByName(t);if(void 0!==i)return i}if(e.children){let i=function(e){for(let r=0;r=n){let s=n++,h=e[s];t[h.uuid]=l,e[l]=h,t[o]=s,e[s]=a;for(let e=0,t=r;e!==t;++e){let t=i[e],r=t[s],n=t[l];t[l]=r,t[s]=n}}}this.nCachedObjects_=n}uncache(){let e=this._objects,t=this._indicesByUUID,i=this._bindings,r=i.length,n=this.nCachedObjects_,s=e.length;for(let a=0,o=arguments.length;a!==o;++a){let o=arguments[a].uuid,l=t[o];if(void 0!==l)if(delete t[o],l0&&(t[a.uuid]=l),e[l]=a,e.pop();for(let e=0,t=r;e!==t;++e){let t=i[e];t[l]=t[n],t.pop()}}}this.nCachedObjects_=n}subscribe_(e,t){let i=this._bindingsIndicesByPath,r=i[e],n=this._bindings;if(void 0!==r)return n[r];let s=this._paths,a=this._parsedPaths,o=this._objects,l=o.length,h=this.nCachedObjects_,u=new Array(l);r=n.length,i[e]=r,s.push(e),a.push(t),n.push(u);for(let i=h,r=o.length;i!==r;++i){let r=o[i];u[i]=new Mr(r,e,t)}return u}unsubscribe_(e){let t=this._bindingsIndicesByPath,i=t[e];if(void 0!==i){let r=this._paths,n=this._parsedPaths,s=this._bindings,a=s.length-1,o=s[a];t[e[a]]=i,s[i]=o,s.pop(),n[i]=n[a],n.pop(),r[i]=r[a],r.pop()}}},gU=class{constructor(e,t,i=null,r=t.blendMode){this._mixer=e,this._clip=t,this._localRoot=i,this.blendMode=r;let n=t.tracks,s=n.length,a=new Array(s),o={endingStart:hg,endingEnd:hg};for(let e=0;e!==s;++e){let t=n[e].createInterpolant(null);a[e]=t,t.settings=o}this._interpolantSettings=o,this._interpolants=a,this._propertyBindings=new Array(s),this._cacheIndex=null,this._byClipCacheIndex=null,this._timeScaleInterpolant=null,this._weightInterpolant=null,this.loop=Xhe,this._loopCount=-1,this._startTime=null,this.time=0,this.timeScale=1,this._effectiveTimeScale=1,this.weight=1,this._effectiveWeight=1,this.repetitions=1/0,this.paused=!1,this.enabled=!0,this.clampWhenFinished=!1,this.zeroSlopeAtStart=!0,this.zeroSlopeAtEnd=!0}play(){return this._mixer._activateAction(this),this}stop(){return this._mixer._deactivateAction(this),this.reset()}reset(){return this.paused=!1,this.enabled=!0,this.time=0,this._loopCount=-1,this._startTime=null,this.stopFading().stopWarping()}isRunning(){return this.enabled&&!this.paused&&0!==this.timeScale&&null===this._startTime&&this._mixer._isActiveAction(this)}isScheduled(){return this._mixer._isActiveAction(this)}startAt(e){return this._startTime=e,this}setLoop(e,t){return this.loop=e,this.repetitions=t,this}setEffectiveWeight(e){return this.weight=e,this._effectiveWeight=this.enabled?e:0,this.stopFading()}getEffectiveWeight(){return this._effectiveWeight}fadeIn(e){return this._scheduleFading(e,0,1)}fadeOut(e){return this._scheduleFading(e,1,0)}crossFadeFrom(e,t,i){if(e.fadeOut(t),this.fadeIn(t),i){let i=this._clip.duration,r=e._clip.duration,n=r/i,s=i/r;e.warp(1,n,t),this.warp(s,1,t)}return this}crossFadeTo(e,t,i){return e.crossFadeFrom(this,t,i)}stopFading(){let e=this._weightInterpolant;return null!==e&&(this._weightInterpolant=null,this._mixer._takeBackControlInterpolant(e)),this}setEffectiveTimeScale(e){return this.timeScale=e,this._effectiveTimeScale=this.paused?0:e,this.stopWarping()}getEffectiveTimeScale(){return this._effectiveTimeScale}setDuration(e){return this.timeScale=this._clip.duration/e,this.stopWarping()}syncWith(e){return this.time=e.time,this.timeScale=e.timeScale,this.stopWarping()}halt(e){return this.warp(this._effectiveTimeScale,0,e)}warp(e,t,i){let r=this._mixer,n=r.time,s=this.timeScale,a=this._timeScaleInterpolant;null===a&&(a=r._lendControlInterpolant(),this._timeScaleInterpolant=a);let o=a.parameterPositions,l=a.sampleValues;return o[0]=n,o[1]=n+i,l[0]=e/s,l[1]=t/s,this}stopWarping(){let e=this._timeScaleInterpolant;return null!==e&&(this._timeScaleInterpolant=null,this._mixer._takeBackControlInterpolant(e)),this}getMixer(){return this._mixer}getClip(){return this._clip}getRoot(){return this._localRoot||this._mixer._root}_update(e,t,i,r){if(!this.enabled)return void this._updateWeight(e);let n=this._startTime;if(null!==n){let r=(e-n)*i;r<0||0===i?t=0:(this._startTime=null,t=i*r)}t*=this._updateTimeScale(e);let s=this._updateTime(t),a=this._updateWeight(e);if(a>0){let e=this._interpolants,t=this._propertyBindings;if(this.blendMode===JU)for(let i=0,r=e.length;i!==r;++i)e[i].evaluate(s),t[i].accumulateAdditive(a);else for(let i=0,n=e.length;i!==n;++i)e[i].evaluate(s),t[i].accumulate(r,a)}}_updateWeight(e){let t=0;if(this.enabled){t=this.weight;let i=this._weightInterpolant;if(null!==i){let r=i.evaluate(e)[0];t*=r,e>i.parameterPositions[1]&&(this.stopFading(),0===r&&(this.enabled=!1))}}return this._effectiveWeight=t,t}_updateTimeScale(e){let t=0;if(!this.paused){t=this.timeScale;let i=this._timeScaleInterpolant;if(null!==i){t*=i.evaluate(e)[0],e>i.parameterPositions[1]&&(this.stopWarping(),0===t?this.paused=!0:this.timeScale=t)}}return this._effectiveTimeScale=t,t}_updateTime(e){let t=this._clip.duration,i=this.loop,r=this.time+e,n=this._loopCount,s=i===$he;if(0===e)return-1===n?r:s&&1==(1&n)?t-r:r;if(i===Yhe){-1===n&&(this._loopCount=0,this._setEndings(!0,!0,!1));e:{if(r>=t)r=t;else{if(!(r<0)){this.time=r;break e}r=0}this.clampWhenFinished?this.paused=!0:this.enabled=!1,this.time=r,this._mixer.dispatchEvent({type:"finished",action:this,direction:e<0?-1:1})}}else{if(-1===n&&(e>=0?(n=0,this._setEndings(!0,0===this.repetitions,s)):this._setEndings(0===this.repetitions,!0,s)),r>=t||r<0){let i=Math.floor(r/t);r-=t*i,n+=Math.abs(i);let a=this.repetitions-n;if(a<=0)this.clampWhenFinished?this.paused=!0:this.enabled=!1,r=e>0?t:0,this.time=r,this._mixer.dispatchEvent({type:"finished",action:this,direction:e>0?1:-1});else{if(1===a){let t=e<0;this._setEndings(t,!t,s)}else this._setEndings(!1,!1,s);this._loopCount=n,this.time=r,this._mixer.dispatchEvent({type:"loop",action:this,loopDelta:i})}}else this.time=r;if(s&&1==(1&n))return t-r}return r}_setEndings(e,t,i){let r=this._interpolantSettings;i?(r.endingStart=pg,r.endingEnd=pg):(r.endingStart=e?this.zeroSlopeAtStart?pg:hg:nx,r.endingEnd=t?this.zeroSlopeAtEnd?pg:hg:nx)}_scheduleFading(e,t,i){let r=this._mixer,n=r.time,s=this._weightInterpolant;null===s&&(s=r._lendControlInterpolant(),this._weightInterpolant=s);let a=s.parameterPositions,o=s.sampleValues;return a[0]=n,o[0]=t,a[1]=n+e,o[1]=i,this}},_Tt=new Float32Array(1),vU=class extends Vo{constructor(e){super(),this._root=e,this._initMemoryManager(),this._accuIndex=0,this.time=0,this.timeScale=1}_bindAction(e,t){let i=e._localRoot||this._root,r=e._clip.tracks,n=r.length,s=e._propertyBindings,a=e._interpolants,o=i.uuid,l=this._bindingsByRootAndName,h=l[o];void 0===h&&(h={},l[o]=h);for(let e=0;e!==n;++e){let n=r[e],l=n.name,u=h[l];if(void 0!==u)++u.referenceCount,s[e]=u;else{if(u=s[e],void 0!==u){null===u._cacheIndex&&(++u.referenceCount,this._addInactiveBinding(u,o,l));continue}let r=t&&t._propertyBindings[e].binding.parsedPath;u=new iC(Mr.create(i,l,r),n.ValueTypeName,n.getValueSize()),++u.referenceCount,this._addInactiveBinding(u,o,l),s[e]=u}a[e].resultBuffer=u.buffer}}_activateAction(e){if(!this._isActiveAction(e)){if(null===e._cacheIndex){let t=(e._localRoot||this._root).uuid,i=e._clip.uuid,r=this._actionsByClip[i];this._bindAction(e,r&&r.knownActions[0]),this._addInactiveAction(e,i,t)}let t=e._propertyBindings;for(let e=0,i=t.length;e!==i;++e){let i=t[e];0==i.useCount++&&(this._lendBinding(i),i.saveOriginalState())}this._lendAction(e)}}_deactivateAction(e){if(this._isActiveAction(e)){let t=e._propertyBindings;for(let e=0,i=t.length;e!==i;++e){let i=t[e];0==--i.useCount&&(i.restoreOriginalState(),this._takeBackBinding(i))}this._takeBackAction(e)}}_initMemoryManager(){this._actions=[],this._nActiveActions=0,this._actionsByClip={},this._bindings=[],this._nActiveBindings=0,this._bindingsByRootAndName={},this._controlInterpolants=[],this._nActiveControlInterpolants=0;let e=this;this.stats={actions:{get total(){return e._actions.length},get inUse(){return e._nActiveActions}},bindings:{get total(){return e._bindings.length},get inUse(){return e._nActiveBindings}},controlInterpolants:{get total(){return e._controlInterpolants.length},get inUse(){return e._nActiveControlInterpolants}}}}_isActiveAction(e){let t=e._cacheIndex;return null!==t&&t=0;--t)e[t].stop();return this}update(e){e*=this.timeScale;let t=this._actions,i=this._nActiveActions,r=this.time+=e,n=Math.sign(e),s=this._accuIndex^=1;for(let a=0;a!==i;++a)t[a]._update(r,e,n,s);let a=this._bindings,o=this._nActiveBindings;for(let e=0;e!==o;++e)a[e].apply(s);return this}setTime(e){this.time=0;for(let e=0;ethis.max.x||e.ythis.max.y)}containsBox(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(e,t){return t.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y))}intersectsBox(e){return!(e.max.xthis.max.x||e.max.ythis.max.y)}clampPoint(e,t){return t.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return ihe.copy(e).clamp(this.min,this.max).sub(e).length()}intersect(e){return this.min.max(e.min),this.max.min(e.max),this}union(e){return this.min.min(e.min),this.max.max(e.max),this}translate(e){return this.min.add(e),this.max.add(e),this}equals(e){return e.min.equals(this.min)&&e.max.equals(this.max)}},nhe=new A,vD=new A,Pa=class{constructor(e=new A,t=new A){this.start=e,this.end=t}set(e,t){return this.start.copy(e),this.end.copy(t),this}copy(e){return this.start.copy(e.start),this.end.copy(e.end),this}getCenter(e){return e.addVectors(this.start,this.end).multiplyScalar(.5)}delta(e){return e.subVectors(this.end,this.start)}distanceSq(){return this.start.distanceToSquared(this.end)}distance(){return this.start.distanceTo(this.end)}at(e,t){return this.delta(t).multiplyScalar(e).add(this.start)}closestPointToPointParameter(e,t){nhe.subVectors(e,this.start),vD.subVectors(this.end,this.start);let i=vD.dot(vD),r=vD.dot(nhe)/i;return t&&(r=ts(r,0,1)),r}closestPointToPoint(e,t,i){let r=this.closestPointToPointParameter(e,t);return this.delta(i).multiplyScalar(r).add(this.start)}applyMatrix4(e){return this.start.applyMatrix4(e),this.end.applyMatrix4(e),this}equals(e){return e.start.equals(this.start)&&e.end.equals(this.end)}clone(){return(new this.constructor).copy(this)}},she=new A,IU=class extends sr{constructor(e,t){super(),this.light=e,this.matrix=e.matrixWorld,this.matrixAutoUpdate=!1,this.color=t,this.type="SpotLightHelper";let i=new lt,r=[0,0,0,0,0,1,0,0,0,1,0,1,0,0,0,-1,0,1,0,0,0,0,1,1,0,0,0,0,-1,1];for(let e=0,t=1,i=32;e1)for(let i=0;i.99999)this.quaternion.set(0,0,0,1);else if(e.y<-.99999)this.quaternion.set(1,0,0,0);else{uhe.set(e.z,0,-e.x).normalize();let t=Math.acos(e.y);this.quaternion.setFromAxisAngle(uhe,t)}}setLength(e,t=.2*e,i=.2*t){this.line.scale.set(1,Math.max(1e-4,e-t),1),this.line.updateMatrix(),this.cone.scale.set(i,t,i),this.cone.position.y=e,this.cone.updateMatrix()}setColor(e){this.line.material.color.set(e),this.cone.material.color.set(e)}copy(e){return super.copy(e,!1),this.line.copy(e.line),this.cone.copy(e.cone),this}dispose(){this.line.geometry.dispose(),this.line.material.dispose(),this.cone.geometry.dispose(),this.cone.material.dispose()}},CU=class extends ci{constructor(e=1){let t=[0,0,0,e,0,0,0,0,0,0,e,0,0,0,0,0,0,e],i=new lt;i.setAttribute("position",new dt(t,3)),i.setAttribute("color",new dt([1,0,0,1,.6,0,0,1,0,.6,1,0,0,0,1,0,.6,1],3)),super(i,new vr({vertexColors:!0,toneMapped:!1})),this.type="AxesHelper"}setColors(e,t,i){let r=new je,n=this.geometry.attributes.color.array;return r.set(e),r.toArray(n,0),r.toArray(n,3),r.set(t),r.toArray(n,6),r.toArray(n,9),r.set(i),r.toArray(n,12),r.toArray(n,15),this.geometry.attributes.color.needsUpdate=!0,this}dispose(){this.geometry.dispose(),this.material.dispose()}},Dx=class{constructor(){this.type="ShapePath",this.color=new je,this.subPaths=[],this.currentPath=null}moveTo(e,t){return this.currentPath=new Gu,this.subPaths.push(this.currentPath),this.currentPath.moveTo(e,t),this}lineTo(e,t){return this.currentPath.lineTo(e,t),this}quadraticCurveTo(e,t,i,r){return this.currentPath.quadraticCurveTo(e,t,i,r),this}bezierCurveTo(e,t,i,r,n,s){return this.currentPath.bezierCurveTo(e,t,i,r,n,s),this}splineThru(e){return this.currentPath.splineThru(e),this}toShapes(e){function t(e,t){let i=t.length,r=!1;for(let n=i-1,s=0;sNumber.EPSILON){if(l<0&&(i=t[s],o=-o,a=t[n],l=-l),e.ya.y)continue;if(e.y===i.y){if(e.x===i.x)return!0}else{let t=l*(e.x-i.x)-o*(e.y-i.y);if(0===t)return!0;if(t<0)continue;r=!r}}else{if(e.y!==i.y)continue;if(a.x<=e.x&&e.x<=i.x||i.x<=e.x&&e.x<=a.x)return!0}}return r}let i=rs.isClockWise,r=this.subPaths;if(0===r.length)return[];let n,s,a,o=[];if(1===r.length)return s=r[0],a=new ro,a.curves=s.curves,o.push(a),o;let l=!i(r[0].getPoints());l=e?!l:l;let h,u,c=[],p=[],d=[],f=0;p[f]=void 0,d[f]=[];for(let t=0,a=r.length;t1){let e=!1,i=0;for(let e=0,t=p.length;e0&&!1===e&&(d=c)}for(let e=0,t=p.length;e>-t-14,r[256|e]=1024>>-t-14|32768,n[e]=-t-1,n[256|e]=-t-1):t<=15?(r[e]=t+15<<10,r[256|e]=t+15<<10|32768,n[e]=13,n[256|e]=13):t<128?(r[e]=31744,r[256|e]=64512,n[e]=24,n[256|e]=24):(r[e]=31744,r[256|e]=64512,n[e]=13,n[256|e]=13)}let s=new Uint32Array(2048),a=new Uint32Array(64),o=new Uint32Array(64);for(let e=1;e<1024;++e){let t=e<<13,i=0;for(;!(8388608&t);)t<<=1,i-=8388608;t&=-8388609,i+=947912704,s[e]=t|i}for(let e=1024;e<2048;++e)s[e]=939524096+(e-1024<<13);for(let e=1;e<31;++e)a[e]=e<<23;a[31]=1199570944,a[32]=2147483648;for(let e=33;e<63;++e)a[e]=2147483648+(e-32<<23);a[63]=3347054592;for(let e=1;e<64;++e)32!==e&&(o[e]=1024);return{floatView:t,uint32View:i,baseTable:r,shiftTable:n,mantissaTable:s,exponentTable:a,offsetTable:o}}function MTt(e){Math.abs(e)>65504&&console.warn("THREE.DataUtils.toHalfFloat(): Value out of range."),e=ts(e,-65504,65504),fp.floatView[0]=e;let t=fp.uint32View[0],i=t>>23&511;return fp.baseTable[i]+((8388607&t)>>fp.shiftTable[i])}function DTt(e){let t=e>>10;return fp.uint32View[0]=fp.mantissaTable[fp.offsetTable[t]+(1023&e)]+fp.exponentTable[t],fp.floatView[0]}var Xy=Object.freeze({__proto__:null,fromHalfFloat:DTt,toHalfFloat:MTt}),AU=class extends io{constructor(e,t,i,r,n,s){console.warn("THREE.BoxBufferGeometry has been renamed to THREE.BoxGeometry."),super(e,t,i,r,n,s)}},OU=class extends Ig{constructor(e,t,i,r){console.warn("THREE.CapsuleBufferGeometry has been renamed to THREE.CapsuleGeometry."),super(e,t,i,r)}},PU=class extends _g{constructor(e,t,i,r){console.warn("THREE.CircleBufferGeometry has been renamed to THREE.CircleGeometry."),super(e,t,i,r)}},NU=class extends Sg{constructor(e,t,i,r,n,s,a){console.warn("THREE.ConeBufferGeometry has been renamed to THREE.ConeGeometry."),super(e,t,i,r,n,s,a)}},LU=class extends Cl{constructor(e,t,i,r,n,s,a,o){console.warn("THREE.CylinderBufferGeometry has been renamed to THREE.CylinderGeometry."),super(e,t,i,r,n,s,a,o)}},FU=class extends wg{constructor(e,t){console.warn("THREE.DodecahedronBufferGeometry has been renamed to THREE.DodecahedronGeometry."),super(e,t)}},HU=class extends Dp{constructor(e,t){console.warn("THREE.ExtrudeBufferGeometry has been renamed to THREE.ExtrudeGeometry."),super(e,t)}},UU=class extends Mg{constructor(e,t){console.warn("THREE.IcosahedronBufferGeometry has been renamed to THREE.IcosahedronGeometry."),super(e,t)}},BU=class extends lf{constructor(e,t,i,r){console.warn("THREE.LatheBufferGeometry has been renamed to THREE.LatheGeometry."),super(e,t,i,r)}},kU=class extends cf{constructor(e,t){console.warn("THREE.OctahedronBufferGeometry has been renamed to THREE.OctahedronGeometry."),super(e,t)}},GU=class extends is{constructor(e,t,i,r){console.warn("THREE.PlaneBufferGeometry has been renamed to THREE.PlaneGeometry."),super(e,t,i,r)}},VU=class extends Oc{constructor(e,t,i,r){console.warn("THREE.PolyhedronBufferGeometry has been renamed to THREE.PolyhedronGeometry."),super(e,t,i,r)}},zU=class extends Dg{constructor(e,t,i,r,n,s){console.warn("THREE.RingBufferGeometry has been renamed to THREE.RingGeometry."),super(e,t,i,r,n,s)}},jU=class extends Cp{constructor(e,t){console.warn("THREE.ShapeBufferGeometry has been renamed to THREE.ShapeGeometry."),super(e,t)}},WU=class extends so{constructor(e,t,i,r,n,s,a){console.warn("THREE.SphereBufferGeometry has been renamed to THREE.SphereGeometry."),super(e,t,i,r,n,s,a)}},qU=class extends Cg{constructor(e,t){console.warn("THREE.TetrahedronBufferGeometry has been renamed to THREE.TetrahedronGeometry."),super(e,t)}},YU=class extends Ap{constructor(e,t,i,r,n){console.warn("THREE.TorusBufferGeometry has been renamed to THREE.TorusGeometry."),super(e,t,i,r,n)}},XU=class extends Ag{constructor(e,t,i,r,n,s){console.warn("THREE.TorusKnotBufferGeometry has been renamed to THREE.TorusKnotGeometry."),super(e,t,i,r,n,s)}},$U=class extends Og{constructor(e,t,i,r,n){console.warn("THREE.TubeBufferGeometry has been renamed to THREE.TubeGeometry."),super(e,t,i,r,n)}};"undefined"!=typeof __THREE_DEVTOOLS__&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("register",{detail:{revision:nC}})),"undefined"!=typeof window&&(window.__THREE__?console.warn("WARNING: Multiple instances of Three.js being imported."):window.__THREE__=nC);var ju=new qi,mpe=new A,gpe=new A,vpe=new A,ype=new A;function pC(e,t,i,r,n,s,a){if(mpe.fromBufferAttribute(t,r).applyMatrix4(e.matrixWorld),gpe.fromBufferAttribute(t,n).applyMatrix4(e.matrixWorld),i.ray.distanceSqToSegment(mpe,gpe,ype,vpe)>s)return!1;let o=i.ray.origin.distanceTo(ype);return!(oi.far)&&(a.push({distance:o,point:vpe.clone(),index:r,object:e}),!0)}Ir.prototype.raycast=function(e,t){let i=this.geometry,r=this.matrixWorld,n=e.params.Line.threshold,s=i.drawRange;if(null===i.boundingSphere&&i.computeBoundingSphere(),ju.copy(i.boundingSphere),ju.applyMatrix4(r),ju.radius+=n,!1===e.ray.intersectsSphere(ju))return;let a=n*n,o=this.isLineSegments?2:1,l=i.index,h=i.attributes.position,u=t.length;if(null!==l){let i=this.userData.batches;if(i&&i.length>0&&i[0].boundingSphere)for(let n=0;n=1))return}}else{for(let i=Math.max(0,s.start),r=Math.min(l.count,s.start+s.count)-1;i=1))return}}}else{let i=this.userData.batches;if(i&&i.length>0&&i[0].boundingSphere)for(let n=0;n=1)return}else{for(let i=Math.max(0,s.start),r=Math.min(h.count,s.start+s.count)-1;i=1)return}}};var Tpe=Math.pow(2,-24),Bg=class{constructor(){}};function Hl(e,t,i){return i.min.x=t[e],i.min.y=t[e+1],i.min.z=t[e+2],i.max.x=t[e+3],i.max.y=t[e+4],i.max.z=t[e+5],i}function lB(e){let t=-1,i=-1/0;for(let r=0;r<3;r++){let n=e[r+3]-e[r];n>i&&(i=n,t=r)}return t}function cB(e,t){t.set(e)}function uB(e,t,i){let r,n;for(let s=0;s<3;s++){let a=s+3;r=e[s],n=t[s],i[s]=rn?r:n}}function Nx(e,t,i){for(let r=0;r<3;r++){let n=t[e+2*r],s=t[e+2*r+1],a=n-s,o=n+s;ai[r+3]&&(i[r+3]=o)}}function $y(e){let t=e[3]-e[0],i=e[4]-e[1],r=e[5]-e[2];return 2*(t*i+i*r+r*t)}function OTt(e,t){if(!e.index){let i,r=e.attributes.position.count,n=t.useSharedArrayBuffer?SharedArrayBuffer:ArrayBuffer;i=r>65535?new Uint32Array(new n(4*r)):new Uint16Array(new n(2*r)),e.setIndex(new Wt(i,1));for(let e=0;ee-t));for(let e=0;el&&(l=v),y&&tf&&(f=t);let T=e[r+2],x=e[r+3],b=T-x,_=T+x;bh&&(h=_),y&&Tm&&(m=T);let E=e[r+4],w=e[r+5],S=E-w,I=E+w;Su&&(u=I),y&&Eg&&(g=E)}r[0]=s,r[1]=a,r[2]=o,r[3]=l,r[4]=h,r[5]=u,y&&(n[0]=c,n[1]=p,n[2]=d,n[3]=f,n[4]=m,n[5]=g)}function NTt(e,t,i,r){let n=1/0,s=1/0,a=1/0,o=-1/0,l=-1/0,h=-1/0;for(let r=6*t,u=6*(t+i);ro&&(o=t);let i=e[r+2];il&&(l=i);let u=e[r+4];uh&&(h=u)}r[0]=n,r[1]=s,r[2]=a,r[3]=o,r[4]=l,r[5]=h}function LTt(e,t,i,r,n){let s=i,a=i+r-1,o=n.pos,l=2*n.axis;for(;;){for(;s<=a&&t[6*s+l]=o;)a--;if(!(se.candidate-t.candidate,mf=new Array(Up).fill().map((()=>({count:0,bounds:new Float32Array(6),rightCacheBounds:new Float32Array(6),leftCacheBounds:new Float32Array(6),candidate:0}))),dC=new Float32Array(6);function HTt(e,t,i,r,n,s){let a=-1,o=0;if(0===s)a=lB(t),-1!==a&&(o=(t[a]+t[a+3])/2);else if(1===s)a=lB(e),-1!==a&&(o=UTt(i,r,n,a));else if(2===s){let s=$y(e),l=1.25*n,h=6*r,u=6*(r+n);for(let e=0;e<3;e++){let r=t[e],c=(t[e+3]-r)/Up;if(n=s.candidate?Nx(r,i,s.rightCacheBounds):(Nx(r,i,s.leftCacheBounds),s.count++)}}for(let i=0;i=Up&&(n=Up-1);let s=mf[n];s.count++,Nx(t,i,s.bounds)}let t=mf[Up-1];cB(t.bounds,t.rightCacheBounds);for(let e=Up-2;e>=0;e--){let t=mf[e],i=mf[e+1];uB(t.bounds,i.rightCacheBounds,t.rightCacheBounds)}let p=0;for(let t=0;tm&&(m=l),h>m&&(m=h);let g=(m-d)/2,y=2*e;s[f+y+0]=d+g,s[f+y+1]=g+(Math.abs(d)+g)*Tpe,dt[e+3]&&(t[e+3]=m)}}return s}function kTt(e,t){function i(e){p&&p(e/d)}function r(t,n,p,d=null,m=0){if(!f&&m>=l&&(f=!0,h&&(console.warn(`MeshBVH: Max depth of ${l} reached when generating BVH. Consider increasing maxDepth.`),console.warn(e))),p<=u||m>=l)return i(n+p),t.offset=n,t.count=p,t;let g=HTt(t.boundingData,d,a,n,p,c);if(-1===g.axis)return i(n+p),t.offset=n,t.count=p,t;let y=LTt(o,a,n,p,g);if(y===n||y===n+p)i(n+p),t.offset=n,t.count=p;else{t.splitAxis=g.axis;let e=new Bg,i=n,o=y-n;t.left=e,e.boundingData=new Float32Array(6),pB(a,i,o,e.boundingData,s),r(e,i,o,s,m+1);let l=new Bg,h=y,u=p-o;t.right=l,l.boundingData=new Float32Array(6),pB(a,h,u,l.boundingData,s),r(l,h,u,s,m+1)}return t}OTt(e,t);let n=new Float32Array(6),s=new Float32Array(6),a=BTt(e,n),o=e.index.array,l=t.maxDepth,h=t.verbose,u=t.maxLeafTris,c=t.strategy,p=t.onProgress,d=e.index.count/3,f=!1,m=[],g=PTt(e);if(1===g.length){let e=g[0],t=new Bg;t.boundingData=n,NTt(a,e.offset,e.count,s),r(t,e.offset,e.count,s),m.push(t)}else for(let e of g){let t=new Bg;t.boundingData=new Float32Array(6),pB(a,e.offset,e.count,t.boundingData,s),r(t,e.offset,e.count,s),m.push(t)}return m}function xpe(e,t){let i,r,n,s=kTt(e,t),a=[],o=t.useSharedArrayBuffer?SharedArrayBuffer:ArrayBuffer;for(let e=0;eMath.pow(2,32))throw new Error("MeshBVH: Cannot store child pointer greater than 32 bits.");return r[s+6]=i/4,i=h(i,a),r[s+7]=o,i}}}var uo=class{constructor(){this.min=1/0,this.max=-1/0}setFromPointsField(e,t){let i=1/0,r=-1/0;for(let n=0,s=e.length;nr?s:r}this.min=i,this.max=r}setFromPoints(e,t){let i=1/0,r=-1/0;for(let n=0,s=t.length;nr?a:r}this.min=i,this.max=r}isSeparated(e){return this.min>e.max||e.min>this.max}};uo.prototype.setFromBox=function(){let e=new A;return function(t,i){let r=i.min,n=i.max,s=1/0,a=-1/0;for(let i=0;i<=1;i++)for(let o=0;o<=1;o++)for(let l=0;l<=1;l++){e.x=r.x*i+n.x*(1-i),e.y=r.y*o+n.y*(1-o),e.z=r.z*l+n.z*(1-l);let h=t.dot(e);s=Math.min(h,s),a=Math.max(h,a)}this.min=s,this.max=a}}();var Cqt=function(){let e=new uo;return function(t,i){let r=t.points,n=t.satAxes,s=t.satBounds,a=i.points,o=i.satAxes,l=i.satBounds;for(let t=0;t<3;t++){let i=s[t],r=n[t];if(e.setFromPoints(r,a),i.isSeparated(e))return!1}for(let t=0;t<3;t++){let i=l[t],n=o[t];if(e.setFromPoints(n,r),i.isSeparated(e))return!1}}}(),GTt=function(){let e=new A,t=new A,i=new A;return function(r,n,s){let a=r.start,o=e,l=n.start,h=t;i.subVectors(a,l),e.subVectors(r.end,r.start),t.subVectors(n.end,n.start);let u,c,p=i.dot(h),d=h.dot(o),f=h.dot(h),m=i.dot(o),g=o.dot(o)*f-d*d;u=0!==g?(p*d-m*f)/g:0,c=(p+u*d)/f,s.x=u,s.y=c}}(),Lx=function(){let e=new le,t=new A,i=new A;return function(r,n,s,a){GTt(r,n,e);let o=e.x,l=e.y;if(o>=0&&o<=1&&l>=0&&l<=1)return r.at(o,s),void n.at(l,a);if(o>=0&&o<=1)return l<0?n.at(0,a):n.at(1,a),void r.closestPointToPoint(a,!0,s);if(l>=0&&l<=1)return o<0?r.at(0,s):r.at(1,s),void n.closestPointToPoint(s,!0,a);{let e,h;e=o<0?r.start:r.end,h=l<0?n.start:n.end;let u=t,c=i;return r.closestPointToPoint(h,!0,t),n.closestPointToPoint(e,!0,i),u.distanceToSquared(h)<=c.distanceToSquared(e)?(s.copy(u),void a.copy(h)):(s.copy(e),void a.copy(c))}}}(),Ipe=function(){let e=new A,t=new A,i=new xi,r=new Pa;return function(n,s){let{radius:a,center:o}=n,{a:l,b:h,c:u}=s;if(r.start=l,r.end=h,r.closestPointToPoint(o,!0,e).distanceTo(o)<=a||(r.start=l,r.end=u,r.closestPointToPoint(o,!0,e).distanceTo(o)<=a)||(r.start=h,r.end=u,r.closestPointToPoint(o,!0,e).distanceTo(o)<=a))return!0;let c=s.getPlane(i);if(Math.abs(c.distanceToPoint(o))<=a){let e=c.projectPoint(o,t);if(s.containsPoint(e))return!0}return!1}}(),VTt=1e-15;function Zy(e){return Math.abs(e)new A)),this.satBounds=new Array(4).fill().map((()=>new uo)),this.points=[this.a,this.b,this.c],this.sphere=new qi,this.plane=new xi,this.needsUpdate=!0}intersectsSphere(e){return Ipe(e,this)}update(){let e=this.a,t=this.b,i=this.c,r=this.points,n=this.satAxes,s=this.satBounds,a=n[0],o=s[0];this.getNormal(a),o.setFromPoints(a,r);let l=n[1],h=s[1];l.subVectors(e,t),h.setFromPoints(l,r);let u=n[2],c=s[2];u.subVectors(t,i),c.setFromPoints(u,r);let p=n[3],d=s[3];p.subVectors(i,e),d.setFromPoints(p,r),this.sphere.setFromPoints(this.points),this.plane.setFromNormalAndCoplanarPoint(a,e),this.needsUpdate=!1}};ho.prototype.closestPointToSegment=function(){let e=new A,t=new A,i=new Pa;return function(r,n=null,s=null){let a,{start:o,end:l}=r,h=this.points,u=1/0;for(let o=0;o<3;o++){let l=(o+1)%3;i.start.copy(h[o]),i.end.copy(h[l]),Lx(i,r,e,t),a=e.distanceToSquared(t),a1-1e-10){let e=this.satBounds,a=this.satAxes;i[0]=p.a,i[1]=p.b,i[2]=p.c;for(let t=0;t<4;t++){let n=e[t],s=a[t];if(r.setFromPoints(s,i),n.isSeparated(r))return!1}let o=p.satBounds,l=p.satAxes;t[0]=this.a,t[1]=this.b,t[2]=this.c;for(let e=0;e<4;e++){let i=o[e],n=l[e];if(r.setFromPoints(n,t),i.isSeparated(r))return!1}for(let e=0;e<4;e++){let o=a[e];for(let e=0;e<4;e++){let a=l[e];if(s.crossVectors(o,a),r.setFromPoints(s,t),n.setFromPoints(s,i),r.isSeparated(n))return!1}}return d&&(f||console.warn("ExtendedTriangle.intersectsTriangle: Triangles are coplanar which does not support an output edge. Setting edge to 0, 0, 0."),d.start.set(0,0,0),d.end.set(0,0,0)),!0}{let e=this.points,t=!1,i=0;for(let r=0;r<3;r++){let n=e[r],s=e[(r+1)%3];h.start.copy(n),h.end.copy(s),h.delta(a);let o=t?u.start:u.end,l=Zy(g.distanceToPoint(n));if(Zy(g.normal.dot(a))&&l){u.copy(h),i=2;break}if((g.intersectLine(h,o)||l)&&!Zy(o.distanceTo(s))){if(i++,t)break;t=!0}}if(1===i&&p.containsPoint(u.end))return d&&(d.start.copy(u.end),d.end.copy(u.end)),!0;if(2!==i)return!1;let r=p.points,n=!1,s=0;for(let e=0;e<3;e++){let t=r[e],i=r[(e+1)%3];h.start.copy(t),h.end.copy(i),h.delta(o);let a=n?c.start:c.end,l=Zy(m.distanceToPoint(t));if(Zy(m.normal.dot(o))&&l){c.copy(h),s=2;break}if((m.intersectLine(h,a)||l)&&!Zy(a.distanceTo(i))){if(s++,n)break;n=!0}}if(1===s&&this.containsPoint(c.end))return d&&(d.start.copy(c.end),d.end.copy(c.end)),!0;if(2!==s)return!1;if(u.delta(a),c.delta(o),a.dot(o)<0){let e=c.start;c.start=c.end,c.end=e}let f=u.start.dot(a),y=u.end.dot(a),v=c.start.dot(a),T=c.end.dot(a);return(f===T||v===y||y0?d.start.copy(u.start):d.start.copy(c.start),l.subVectors(u.end,c.end),l.dot(a)<0?d.end.copy(u.end):d.end.copy(c.end)),!0)}}}(),ho.prototype.distanceToPoint=function(){let e=new A;return function(t){return this.closestPointToPoint(t,e),t.distanceTo(e)}}(),ho.prototype.distanceToTriangle=function(){let e=new A,t=new A,i=["a","b","c"],r=new Pa,n=new Pa;return function(s,a=null,o=null){let l=a||o?r:null;if(this.intersectsTriangle(s,l))return(a||o)&&(a&&l.getCenter(a),o&&l.getCenter(o)),0;let h=1/0;for(let t=0;t<3;t++){let r,n=i[t],l=s[n];this.closestPointToPoint(l,e),r=l.distanceToSquared(e),rnew A)),this.satAxes=new Array(3).fill().map((()=>new A)),this.satBounds=new Array(3).fill().map((()=>new uo)),this.alignedSatBounds=new Array(3).fill().map((()=>new uo)),this.needsUpdate=!1,e&&this.min.copy(e),t&&this.max.copy(t),i&&this.matrix.copy(i)}set(e,t,i){this.min.copy(e),this.max.copy(t),this.matrix.copy(i),this.needsUpdate=!0}copy(e){this.min.copy(e.min),this.max.copy(e.max),this.matrix.copy(e.matrix),this.needsUpdate=!0}};po.prototype.update=function(){let e=this.matrix,t=this.min,i=this.max,r=this.points;for(let n=0;n<=1;n++)for(let s=0;s<=1;s++)for(let a=0;a<=1;a++){let o=r[1*n|2*s|4*a];o.x=n?i.x:t.x,o.y=s?i.y:t.y,o.z=a?i.z:t.z,o.applyMatrix4(e)}let n=this.satBounds,s=this.satAxes,a=r[0];for(let e=0;e<3;e++){let t=s[e],i=n[e],o=r[1<new Pa)),i=new Array(12).fill().map((()=>new Pa)),r=new A,n=new A;return function(s,a=0,o=null,l=null){if(this.needsUpdate&&this.update(),this.intersectsBox(s))return(o||l)&&(s.getCenter(n),this.closestPointToPoint(n,r),s.closestPointToPoint(r,n),o&&o.copy(r),l&&l.copy(n)),0;let h=a*a,u=s.min,c=s.max,p=this.points,d=1/0;for(let e=0;e<8;e++){let t=p[e];n.copy(t).clamp(u,c);let i=t.distanceToSquared(n);if(ii.far)?null:e}function Ul(e,t,i,r){let n=e.a,s=e.b,a=e.c,o=t,l=t+1,h=t+2;i&&(o=i.getX(t),l=i.getX(t+1),h=i.getX(t+2)),n.x=r.getX(o),n.y=r.getY(o),n.z=r.getZ(o),s.x=r.getX(l),s.y=r.getY(l),s.z=r.getZ(l),a.x=r.getX(h),a.y=r.getY(h),a.z=r.getZ(h)}function gB(e,t,i,r,n,s,a){let o=i.index,l=i.attributes.position;for(let i=e,h=t+e;i=0;u?(n=Qy(e),a=eT(e,o)):(n=eT(e,o),a=Qy(e));let c=xC(n,s,r,TC)?bC(n,t,i,r):null;if(c){let e=c.point[h];if(u?e<=s[a+l]:e>=s[a+l+3])return c}let p=xC(a,s,r,TC)?bC(a,t,i,r):null;return c&&p?c.distance<=p.distance?c:p:c||p||null}}var Ape=function(){let e,t,i=[],r=new Ky((()=>new Dt));return function(...s){e=r.getPrimitive(),t=r.getPrimitive(),i.push(e,t);let a=n(...s);r.releasePrimitive(e),r.releasePrimitive(t),i.pop(),i.pop();let o=i.length;return o>0&&(t=i[o-1],e=i[o-2]),a};function n(i,r,s,a,o=null,l=0,h=0){function u(e){let t=2*e,i=gf,r=vf;for(;!Bp(t,i);)t=2*(e=Qy(e));return kg(e,r)}function c(e){let t=2*e,i=gf,r=vf;for(;!Bp(t,i);)t=2*(e=eT(e,r));return kg(e,r)+Jy(t,i)}let p=2*i,d=rT,f=gf,m=vf;if(Bp(p,f)){let t=kg(i,m),r=Jy(p,f);return Hl(i,d,e),a(t,r,!1,h,l+i,e)}{let p,g,y,v,T=Qy(i),x=eT(i,m),b=T,_=x;if(o&&(y=e,v=t,Hl(b,d,y),Hl(_,d,v),p=o(y),g=o(v),gn.intersectsBox(e),intersectsTriangle:e=>{e.a.applyMatrix4(h),e.b.applyMatrix4(h),e.c.applyMatrix4(h),e.needsUpdate=!0;for(let i=3*y,r=3*(v+y);inew ho)),Fc=class{static serialize(e,t={}){if(t.isBufferGeometry)return console.warn("MeshBVH.serialize: The arguments for the function have changed. See documentation for new signature."),Fc.serialize(arguments[0],{cloneBuffers:void 0===arguments[2]||arguments[2]});t=Br({cloneBuffers:!0},t);let i,r=e.geometry,n=e._roots,s=r.getIndex();return i=t.cloneBuffers?{roots:n.map((e=>e.slice())),index:s.array.slice()}:{roots:n,index:s.array},i}static deserialize(e,t,i={}){if("boolean"==typeof i)return console.warn("MeshBVH.deserialize: The arguments for the function have changed. See documentation for new signature."),Fc.deserialize(arguments[0],arguments[1],{setIndex:void 0===arguments[2]||arguments[2]});i=Br({setIndex:!0},i);let{index:r,roots:n}=e,s=new Fc(t,Cn(Br({},i),{[yB]:!0}));if(s._roots=n,i.setIndex){let i=t.getIndex();if(null===i){let i=new Wt(e.index,1,!1);t.setIndex(i)}else i.array!==r&&(i.array.set(r),i.needsUpdate=!0)}return s}constructor(e,t={}){if(!e.isBufferGeometry)throw new Error("MeshBVH: Only BufferGeometries are supported.");if(e.index&&e.index.isInterleavedBufferAttribute)throw new Error("MeshBVH: InterleavedBufferAttribute is not supported for the index attribute.");if((t=Object.assign({strategy:0,maxDepth:40,maxLeafTris:10,verbose:!0,useSharedArrayBuffer:!1,setBoundingBox:!0,onProgress:null,[yB]:!1},t)).useSharedArrayBuffer&&"undefined"==typeof SharedArrayBuffer)throw new Error("MeshBVH: SharedArrayBuffer is not available.");this._roots=null,t[yB]||(this._roots=xpe(e,t),!e.boundingBox&&t.setBoundingBox&&(e.boundingBox=this.getBoundingBox(new Dt))),this.geometry=e}refit(e=null){e&&Array.isArray(e)&&(e=new Set(e));let t,i,r,n,s=this.geometry,a=s.index.array,o=s.attributes.position,l=0,h=this._roots;for(let e=0,s=h.length;ec&&(c=i),rp&&(p=r),nd&&(d=n)}return(n[t+0]!==s||n[t+1]!==l||n[t+2]!==u||n[t+3]!==c||n[t+4]!==p||n[t+5]!==d)&&(n[t+0]=s,n[t+1]=l,n[t+2]=u,n[t+3]=c,n[t+4]=p,n[t+5]=d,!0)}{let r=t+8,a=i[t+6],o=r+s,h=a+s,c=l,p=!1,d=!1;e?c||(p=e.has(o),d=e.has(h),c=!p&&!d):(p=!0,d=!0);let f=c||d,m=!1;(c||p)&&(m=u(r,s,c));let g=!1;f&&(g=u(a,s,c));let y=m||g;if(y)for(let e=0;e<3;e++){let i=r+e,s=a+e,o=n[i],l=n[i+3],h=n[s],u=n[s+3];n[t+e]=ou?l:u}return y}}}traverse(e,t=0){let i=this._roots[t],r=new Uint32Array(i),n=new Uint16Array(i);!function t(s,a=0){let o=2*s,l=65535===n[o+15];if(l){let t=r[s+6],h=n[o+14];e(a,l,new Float32Array(i,4*s,6),t,h)}else{let n=s+8,o=r[s+6],h=r[s+7];e(a,l,new Float32Array(i,4*s,6),h)||(t(n,a+1),t(o,a+1))}}(0)}raycast(e,t=tn){let i=this._roots,r=this.geometry,n=[],s=t.isMaterial,a=Array.isArray(t),o=r.groups,l=s?t.side:t;for(let s=0,h=i.length;s{let s=3*i;return e(t,s,s+1,s+2,r,n)}}e={boundsTraverseOrder:i,intersectsBounds:e,intersectsTriangle:t,intersectsRange:null},console.warn("MeshBVH: Shapecast function signature has changed and now takes an object of callbacks as a second argument. See docs for new signature.")}let n=Wu.getPrimitive(),{boundsTraverseOrder:s,intersectsBounds:a,intersectsRange:o,intersectsTriangle:l}=e;if(o&&l){let e=o;o=(t,i,s,a,o)=>!!e(t,i,s,a,o)||gB(t,i,r,l,s,a,n)}else o||(o=l?(e,t,i,s)=>gB(e,t,r,l,i,s,n):(e,t,i)=>i);let h=!1,u=0;for(let e of this._roots){if(iT(e),h=Ape(0,r,a,o,s,u),Fx(),h)break;u+=e.byteLength}return Wu.releasePrimitive(n),h}bvhcast(e,t,i){let{intersectsRanges:r,intersectsTriangles:n}=i,s=this.geometry.index,a=this.geometry.attributes.position,o=e.geometry.index,l=e.geometry.attributes.position;nT.copy(t).invert();let h=Wu.getPrimitive(),u=Wu.getPrimitive();if(n){let e=function(e,i,r,c,p,d,f,m){for(let g=r,y=r+c;gEB.intersectsBox(e),intersectsRange:(t,i,n,s,a,o)=>(TB.copy(o),TB.applyMatrix4(nT),e.shapecast({intersectsBounds:e=>TB.intersectsBox(e),intersectsRange:(e,n,o,l,h)=>r(t,i,e,n,s,a,l,h)}))});return Wu.releasePrimitive(h),Wu.releasePrimitive(u),c}intersectsBox(e,t){return Gg.set(e.min,e.max,t),Gg.needsUpdate=!0,this.shapecast({intersectsBounds:e=>Gg.intersectsBox(e),intersectsTriangle:e=>Gg.intersectsTriangle(e)})}intersectsSphere(e){return this.shapecast({intersectsBounds:t=>e.intersectsBox(t),intersectsTriangle:t=>t.intersectsSphere(e)})}closestPointToGeometry(e,t,i={},r={},n=0,s=1/0){e.boundingBox||e.computeBoundingBox(),Gg.set(e.boundingBox.min,e.boundingBox.max,t),Gg.needsUpdate=!0;let a=this.geometry,o=a.attributes.position,l=a.index,h=e.attributes.position,u=e.index,c=Wu.getPrimitive(),p=Wu.getPrimitive(),d=IC,f=YTt,m=null,g=null;r&&(m=XTt,g=$Tt);let y=1/0,v=null,T=null;return nT.copy(t).invert(),Hx.matrix.copy(nT),this.shapecast({boundsTraverseOrder:e=>Gg.distanceToBox(e),intersectsBounds:(e,t,i)=>i{if(e.boundsTree)return e.boundsTree.shapecast({boundsTraverseOrder:e=>Hx.distanceToBox(e),intersectsBounds:(e,t,i)=>i{for(let a=3*e,x=3*(e+s);a(Ux.copy(e).clamp(t.min,t.max),Ux.distanceToSquared(e)),intersectsBounds:(e,t,i)=>i{t.closestPointToPoint(e,Ux);let r=e.distanceToSquared(Ux);return r{Hl(0,new Float32Array(t),Ppe),e.union(Ppe)})),e}},bB=new zo,Npe=new Be,ZTt=rt.prototype.raycast;function xB(e,t){if(this.geometry.boundsTree){if(void 0===this.material)return;Npe.copy(this.matrixWorld).invert(),bB.copy(e.ray).applyMatrix4(Npe);let i=this.geometry.boundsTree;if(!0===e.firstHitOnly){let r=mB(i.raycastFirst(bB,this.material),this,e);r&&t.push(r)}else{let r=i.raycast(bB,this.material);for(let i=0,n=r.length;ii.far?null:{distance:h,point:CC.clone(),object:e}}function AC(e,t,i,r,n,s,a,o,l,h,u,c){yf.fromBufferAttribute(n,h),Tf.fromBufferAttribute(n,u),Ef.fromBufferAttribute(n,c);let p=e.morphTargetInfluences;if(s&&p){_C.set(0,0,0),SC.set(0,0,0),wC.set(0,0,0);for(let e=0,t=s.length;e=1)return}}else{for(let i=Math.max(0,d.start),n=Math.min(a.count,d.start+d.count);i=1)return}}else if(void 0!==o)if(Array.isArray(r))for(let i=0,n=p.length;i=1)return}}else{for(let i=Math.max(0,d.start),n=Math.min(o.count,d.start+d.count);i=1)return}}},rt.prototype.raycast=xB;var OC=new qi,PC=new A;function Fpe(e,t,i,r,n,s){let a=r.ray.distanceSqToPoint(e);if(ar.far)return;n.push({distance:o,distanceToRay:Math.sqrt(a),point:i,index:t,face:null,object:s})}}nn.prototype.raycast=function(e,t){let i=this.geometry,r=this.matrixWorld,n=e.params.Points.threshold,s=i.drawRange;if(null===i.boundingSphere&&i.computeBoundingSphere(),OC.copy(i.boundingSphere),OC.applyMatrix4(r),OC.radius+=n,!1===e.ray.intersectsSphere(OC))return;let a=n*n,o=i.index,l=i.attributes.position,h=t.length;if(null!==o){for(let i=Math.max(0,s.start),n=Math.min(o.count,s.start+s.count);i=1)return}}else{for(let i=Math.max(0,s.start),n=Math.min(l.count,s.start+s.count);i=1)return}};var MB=class{constructor(){this.id=0,this.object=null,this.z=0,this.renderOrder=0}},Bx=class{constructor(){this.id=0,this.v1=new bf,this.v2=new bf,this.v3=new bf,this.normalModel=new A,this.vertexNormalsModel=[new A,new A,new A],this.vertexNormalsLength=0,this.color=new je,this.material=null,this.uvs=[new le,new le,new le],this.z=0,this.renderOrder=0}},bf=class{constructor(){this.position=new A,this.positionWorld=new A,this.positionScreen=new Vr,this.visible=!0}copy(e){this.positionWorld.copy(e.positionWorld),this.positionScreen.copy(e.positionScreen)}},kx=class{constructor(){this.id=0,this.v1=new bf,this.v2=new bf,this.vertexColors=[new je,new je],this.material=null,this.z=0,this.renderOrder=0}},Gx=class{constructor(){this.id=0,this.object=null,this.x=0,this.y=0,this.z=0,this.rotation=0,this.scale=new le,this.material=null,this.renderOrder=0}},NC=class{constructor(){let e,t,i,r,n,s,a,o,l,h,u,c=0,p=0,d=0,f=0,m=0,g={objects:[],lights:[],elements:[]},y=new A,v=new Vr,T=new Dt(new A(-1,-1,-1),new A(1,1,1)),x=new Dt,b=new Array(3),_=new Be,E=new Be,w=new Be,S=new ea,I=[],M=[],D=[],O=[],R=[];let C=new function(){let e=[],t=[],l=[],h=null,c=new Ni;function m(e){let t=e.position,i=e.positionWorld,r=e.positionScreen;i.copy(t).applyMatrix4(u),r.copy(i).applyMatrix4(E);let n=1/r.w;r.x*=n,r.y*=n,r.z*=n,e.visible=r.x>=-1&&r.x<=1&&r.y>=-1&&r.y<=1&&r.z>=-1&&r.z<=1}function _(e,t,i){return!0===e.visible||!0===t.visible||!0===i.visible||(b[0]=e.positionScreen,b[1]=t.positionScreen,b[2]=i.positionScreen,T.intersectsBox(x.setFromPoints(b)))}function S(e,t,i){return(i.positionScreen.x-e.positionScreen.x)*(t.positionScreen.y-e.positionScreen.y)-(i.positionScreen.y-e.positionScreen.y)*(t.positionScreen.x-e.positionScreen.x)<0}return{setObject:function(i){h=i,c.getNormalMatrix(h.matrixWorld),e.length=0,t.length=0,l.length=0},projectVertex:m,checkTriangleVisibility:_,checkBackfaceCulling:S,pushVertex:function(e,t,n){i=function(){if(r===p){let e=new bf;return M.push(e),p++,r++,e}return M[r++]}(),i.position.set(e,t,n),m(i)},pushNormal:function(t,i,r){e.push(t,i,r)},pushColor:function(e,i,r){t.push(e,i,r)},pushUv:function(e,t){l.push(e,t)},pushLine:function(e,i){let r=M[e],n=M[i];r.positionScreen.copy(r.position).applyMatrix4(w),n.positionScreen.copy(n.position).applyMatrix4(w),!0===function(e,t){let i=0,r=1,n=e.z+e.w,s=t.z+t.w,a=-e.z+e.w,o=-t.z+t.w;return n>=0&&s>=0&&a>=0&&o>=0||!(n<0&&s<0||a<0&&o<0)&&(n<0?i=Math.max(i,n/(n-s)):s<0&&(r=Math.min(r,n/(n-s))),a<0?i=Math.max(i,a/(a-o)):o<0&&(r=Math.min(r,a/(a-o))),!(r=-1&&e.z<=1&&(l=function(){if(h===m){let e=new Gx;return R.push(e),m++,h++,e}return R[h++]}(),l.id=t.id,l.x=e.x*r,l.y=e.y*r,l.z=e.z,l.renderOrder=t.renderOrder,l.object=t,l.rotation=t.rotation,l.scale.x=t.scale.x*Math.abs(l.x-(e.x+i.projectionMatrix.elements[0])/(e.w+i.projectionMatrix.elements[12])),l.scale.y=t.scale.y*Math.abs(l.y-(e.y+i.projectionMatrix.elements[5])/(e.w+i.projectionMatrix.elements[13])),l.material=t.material,g.elements.push(l))}function F(e,t){return e.renderOrder!==t.renderOrder?e.renderOrder-t.renderOrder:e.z!==t.z?t.z-e.z:e.id!==t.id?e.id-t.id:0}this.projectScene=function(e,i,n,a){s=0,o=0,h=0,g.elements.length=0,!0===e.matrixWorldAutoUpdate&&e.updateMatrixWorld(),null===i.parent&&!0===i.matrixWorldAutoUpdate&&i.updateMatrixWorld(),_.copy(i.matrixWorldInverse),E.multiplyMatrices(i.projectionMatrix,_),S.setFromProjectionMatrix(E),t=0,g.objects.length=0,g.lights.length=0,N(e),!0===n&&g.objects.sort(F);let l=g.objects;for(let e=0,t=l.length;e0)for(let n=0;n0)for(let r=0;r0;)L.removeChild(L.childNodes[0])}function U(e){return null!==g?e.toFixed(g):e}function k(e,t,i){let r=t.scale.x*s,n=t.scale.y*a;i.isPointsMaterial&&(r*=i.size,n*=i.size);let o="M"+U(e.x-.5*r)+","+U(e.y-.5*n)+"h"+U(r)+"v"+U(n)+"h"+U(-r)+"z",l="";(i.isSpriteMaterial||i.isPointsMaterial)&&(l="fill:"+i.color.getStyle()+";fill-opacity:"+i.opacity),H(l,o)}function B(e,t,i){let r="M"+U(e.positionScreen.x)+","+U(e.positionScreen.y)+"L"+U(t.positionScreen.x)+","+U(t.positionScreen.y);if(i.isLineBasicMaterial){let e="fill:none;stroke:"+i.color.getStyle()+";stroke-opacity:"+i.opacity+";stroke-width:"+i.linewidth+";stroke-linecap:"+i.linecap;i.isLineDashedMaterial&&(e=e+";stroke-dasharray:"+i.dashSize+","+i.gapSize),H(e,r)}}function G(e,t,r,n,s){v.info.render.vertices+=3,v.info.render.faces++;let a="M"+U(e.positionScreen.x)+","+U(e.positionScreen.y)+"L"+U(t.positionScreen.x)+","+U(t.positionScreen.y)+"L"+U(r.positionScreen.x)+","+U(r.positionScreen.y)+"z",o="";s.isMeshBasicMaterial?(b.copy(s.color),s.vertexColors&&b.multiply(n.color)):s.isMeshLambertMaterial||s.isMeshPhongMaterial||s.isMeshStandardMaterial?(_.copy(s.color),s.vertexColors&&_.multiply(n.color),b.copy(E),M.copy(e.positionWorld).add(t.positionWorld).add(r.positionWorld).divideScalar(3),function(e,t,i,r){for(let n=0,s=e.length;n1||l.positionScreen.z<-1||l.positionScreen.z>1||h.positionScreen.z<-1||h.positionScreen.z>1)continue;o.positionScreen.x*=s,o.positionScreen.y*=-a,l.positionScreen.x*=s,l.positionScreen.y*=-a,h.positionScreen.x*=s,h.positionScreen.y*=-a,this.overdraw>0&&(z(o.positionScreen,l.positionScreen,this.overdraw),z(l.positionScreen,h.positionScreen,this.overdraw),z(h.positionScreen,o.positionScreen,this.overdraw)),x.setFromPoints([o.positionScreen,l.positionScreen,h.positionScreen]),!0===T.intersectsBox(x)&&G(o,l,h,i,r)}}V(),r.traverseVisible((function(e){if(e.isSVGObject){if(I.setFromMatrixPosition(e.matrixWorld),I.applyMatrix4(C),I.z<-1||I.z>1)return;let t=I.x*s,i=-I.y*a,r=e.node;r.setAttribute("transform",`translate(${t}, ${i}) rotate(${e.rotation.z})`),L.appendChild(r)}}))}}};function JTt(e){let t={};return t.r=(e>>16&255)/255,t.g=(e>>8&255)/255,t.b=(255&e)/255,t}var oT=class extends sr{constructor(e=document.createElement("div")){super(),this.isCSS2DObject=!0,this.element=e,this.element.style.position="absolute",this.element.style.userSelect="none",this.element.setAttribute("draggable",!1),this.addEventListener("removed",(function(){this.traverse((function(e){e.element instanceof Element&&null!==e.element.parentNode&&e.element.parentNode.removeChild(e.element)}))}))}copy(e,t){return super.copy(e,t),this.element=e.element.cloneNode(!0),this}},aT=new A,Bpe=new Be,kpe=new Be,Gpe=new A,Vpe=new A,xf=class{constructor(e={}){let t,i,r,n,s=this,a={objects:new WeakMap},o=void 0!==e.element?e.element:document.createElement("div");function l(e,t,i){if(e.isCSS2DObject){aT.setFromMatrixPosition(e.matrixWorld),aT.applyMatrix4(kpe);let l=!0===e.visible&&aT.z>=-1&&aT.z<=1&&!0===e.layers.test(i.layers);if(e.element.style.display=!0===l?"":"none",!0===l){e.onBeforeRender(s,t,i);let a=e.element;a.style.transform="translate(-50%,-50%) translate("+(aT.x*r+r)+"px,"+(-aT.y*n+n)+"px)",a.parentNode!==o&&o.appendChild(a),e.onAfterRender(s,t,i)}let u={distanceToCameraSquared:h(i,e)};a.objects.set(e,u)}for(let r=0,n=e.children.length;r{this.cancelReject=t}));this.promise=Promise.race([t,e])}cancel(){this.cancelReject&&this.cancelReject({type:"cancel"})}},QTt=kn(jpe(),1),ie=QTt;ie.setLevel("warn");var Wpe=e=>{try{ie.setLevel(e)}catch(e){ie.setLevel("error"),ie.error(e)}},DB=class{static isTouchScreenDevice(){return"ontouchstart"in window}static printDeviceInfo(){let e=navigator.userAgent,t=/(?:Android)/.test(e),i=/(?:Firefox)/.test(e),r=/(?:Chrome|CriOS)/.test(e),n=/(?:iPad|PlayBook)/.test(e)||t&&!/(?:Mobile)/.test(e)||i&&/(?:Tablet)/.test(e),s=/(?:iPhone)/.test(e)&&!n,a=!s&&!t,o=DB.isTouchScreenDevice();t&&ie.debug("[DI] is android"),i&&ie.debug("[DI] is fireFox"),r&&ie.debug("[DI] is chrome"),n&&ie.debug("[DI] is tablet"),s&&ie.debug("[DI] is iPhone"),a&&ie.debug("[DI] is PC"),o&&ie.debug("[DI] is touch device")}static creatReactNativeCanvas(e){let t=e.drawingBufferWidth||e.width||0,i=e.drawingBufferHeight||e.height||0;return{style:{},width:t,height:i,clientWidth:Math.ceil(t/(window.devicePixelRatio||1)),clientHeight:Math.ceil(i/(window.devicePixelRatio||1)),addEventListener:()=>{},removeEventListener:()=>{}}}},Ii=DB;Ii.isBrowser="undefined"!=typeof document,Ii.isNode="undefined"!=typeof process&&"[object process]"===Object.prototype.toString.call(process);var HC=class extends sr{constructor(e){super(),this.isSVGObject=!0,this.node=e}},qpe="#7fffbf",Ype=10,Xpe=14,eEt=2.5,$pe=(e=>(e.Dot="Dot",e.Square="Square",e.Triangle="Triangle",e.Cross="Cross",e.Perpendicular="Perpendicular",e))($pe||{}),cT=class{static createSVGObject(e){return new HC(e)}static createPointMarker(e=Ype){return cT.createSnapIcon("Dot",qpe,e,"#ffffff","2")}static createSnapIcon(e,t="none",i=Ype,r=qpe,n="2"){let s=document.createElementNS("http://www.w3.org/2000/svg","path"),a=i,o="";switch(e){case"Dot":a=i/3,o=`\n M ${-a}, 0\n a ${a}, ${a} 0 1, 0 ${2*a}, 0\n a ${a}, ${a} 0 1, 0 -${2*a}, 0\n `;break;case"Square":a=i/1.2,o=`\n M ${-a/2}, ${-a/2}\n h ${a}\n v ${a}\n h ${-a}\n z\n `;break;case"Triangle":a=i/2,o=`\n M 0, ${-a}\n L ${-.87*a}, ${a/2}\n L ${.87*a}, ${a/2}\n z\n `;break;case"Cross":a=i/1.2,o=`\n M ${-a/2}, ${-a/2}\n L ${a/2}, ${a/2}\n M ${a/2}, ${-a/2}\n L ${-a/2}, ${a/2}\n `;break;case"Perpendicular":a=i,o=`\n M 0, 0\n L ${-a/2}, 0\n M 0, 0\n L 0, ${a/2}\n M ${a/2}, ${a/2}\n L ${-a/2}, ${a/2}\n M ${-a/2}, ${a/2}\n L ${-a/2}, ${-a/2}\n `}s.setAttribute("d",o);let l=`fill: ${t}; stroke: ${r}; stroke-width: ${n};`;return s.setAttribute("style",l),this.createSVGObject(s)}static createLine(e=6,t="#fff000",i=eEt){let r=document.createElementNS("http://www.w3.org/2000/svg","line");r.setAttribute("x1",""+-e),r.setAttribute("y1","0"),r.setAttribute("x2",`${e}`),r.setAttribute("y2","0");let n=`stroke: ${t}; stroke-width: ${i};`;return r.setAttribute("style",n),this.createSVGObject(r)}static createLabel(e,t="#ffffff",i=Xpe,r=Xpe/2){let n=document.createElementNS("http://www.w3.org/2000/svg","text");n.innerHTML=e,n.setAttribute("x","0"),n.setAttribute("y",`${r}`);let s=`font-size: ${i}; text-anchor: middle; fill: ${t};`;return n.setAttribute("style",s),this.createSVGObject(n)}},_t=class{static isFullScreen(){return!(!document.fullscreenElement&&!document.mozFullScreenElement)}static fullScreen(e=document.documentElement){(e.requestFullscreen||e.mozRequestFullScreen||e.webkitRequestFullscreen||e.msRequestFullscreen).call(e)}static exitFullscreen(){(document.exitFullscreen||document.mozCancelFullscreen||document.webkitExitFullscreen||document.msExitFullscreen).call(document)}static displayPointMarker(e,t,i=1e3,r=10){let n=cT.createPointMarker(r);return n.position.set(t.x,t.y,t.z),e.add(n),i&&setTimeout((()=>{e.remove(n)}),i),n}static joinStrings(...e){return e.join("")}static numberToString(e){let t=2;return Math.abs(e)<1e-6?t=2:Math.abs(e)<1e-5?t=7:Math.abs(e)<1e-4?t=6:Math.abs(e)<.001?t=5:Math.abs(e)<.01?t=4:Math.abs(e)<.1&&(t=3),e.toFixed(t)}static hexToBase64(e){return btoa((e.match(/\w{2}/g)||[]).map((function(e){return String.fromCharCode(parseInt(e,16))})).join(""))}static vectorToString(e){return e instanceof A?`(${this.numberToString(e.x)}, ${this.numberToString(e.y)}, ${this.numberToString(e.z)})`:`(${this.numberToString(e.x)}, ${this.numberToString(e.y)})`}static arrayToVector2(e){return e?e instanceof le?e:Array.isArray(e)&&e.length>=2?new le(e[0],e[1]):void 0:e}static arrayToVector3(e){return e?e instanceof A?e:Array.isArray(e)&&e.length>=2?new A(e[0],e[1],e.length>2?e[2]:0):void 0:e}static arrayToEuler(e){return e?e instanceof xr?e:Array.isArray(e)&&e.length>=3?new xr(e[0],e[1],e[2]):void 0:e}static arrayOrObjectToVector3(e){if(!e)return e;if(e instanceof A)return e;if(e instanceof le)return new A(e.x,e.y,0);if(Array.isArray(e)&&e.length>=2)return new A(e[0],e[1],e[2]||0);let t=e;return null!=t.x&&null!=t.y?new A(t.x,t.y,t.z||0):void 0}static isVectorValid(e){let t=e&&!isNaN(e.x)&&!isNaN(e.y)&&isFinite(e.x)&&isFinite(e.y);return t&&e instanceof A&&(t=!isNaN(e.z)&&isFinite(e.z)),t}static isBoxValid(e){return e&&!e.isEmpty()&&this.isVectorValid(e.min)&&this.isVectorValid(e.max)}static isMatrixValid(e){let t=e&&e.elements;if(!t||t.length<16)return!1;for(let e=0;e<16;++e){let i=t[e];if(Number.isNaN(i))return!1}return!0}static guid(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(e=>{let t=16*Math.random()|0;return("x"==e?t:3&t|8).toString(16)}))}static expandBoxByScale(e,t){let i=new A;e.getCenter(i);let r=(e.max.x-e.min.x)*t,n=(e.max.y-e.min.y)*t,s=(e.max.z-e.min.z)*t,a=new A(i.x-r/2,i.y-n/2,i.z-s/2),o=new A(i.x+r/2,i.y+n/2,i.z+s/2);e.set(a,o)}static expandBoxByMinSize(e,t){let i=new A;e.getCenter(i);let r=e.max.x-e.min.x,n=e.max.y-e.min.y,s=e.max.z-e.min.z;r{i.onload=function(){e(i)}}))}static renderingContextToImage(e,t,i="image/png",r=.8){if(t){let n=Math.max(t.min.x,0),s=Math.max(t.min.y,0),a=Math.max(t.max.x-n,0),o=Math.max(t.max.y-s,0),l=e.getImageData(n,s,a,o),h=document.createElement("canvas");return h.width=a,h.height=o,h.getContext("2d").putImageData(l,0,0),h.toDataURL(i,r)}return e.canvas.toDataURL(i,r)}static printMemory(e){if(Ii.isBrowser){let t=performance.memory;if(!t)return void ie.warn("[CommonUtils] performance.memory is not available in this browser");let i=(t.jsHeapSizeLimit/1048576).toFixed(2),r=(t.totalJSHeapSize/1048576).toFixed(2),n=(t.usedJSHeapSize/1048576).toFixed(2);ie.info(`[CommonUtils] ${e}. jsHeapSizeLimit: ${i}M , totalJSHeapSize: ${r}M , usedJSHeapSize: ${n}M `)}}static printGpuInfo(e){if(Ii.isBrowser){let t=e.getExtension("webgl_debug_renderer_info"),i=e.getParameter(t.UNMASKED_RENDERER_WEBGL);ie.info("[CommonUtils] gpu:",i)}}},UC=(e,t,i)=>{let{default:r,active:n}=t;i?(e.remove(r),e.add(n||r)):(n&&e.remove(n),e.add(r))},Ai=class{static getScreenPointByEvent(e,t){let i=new le,{left:r,top:n}=t.getBoundingClientRect();return i.x=e.clientX-r,i.y=e.clientY-n,i}static getScreenPointByTouchEvent(e,t){let i=new le,{left:r,top:n}=t.getBoundingClientRect();return i.x=e.touches[0].clientX-r,i.y=e.touches[0].clientY-n,i}static worldPosition2ScreenPoint(e,t,i){let{clientWidth:r,clientHeight:n}=i,s=e.clone(),a=new le;return s.project(t),a.x=Math.round((.5+s.x/2)*r),a.y=Math.round((.5-s.y/2)*n),a}static screenPoint2worldPosition(e,t,i){let r=Ai.screenPoint2NdcPoint(e,t,i);return new A(r.x,r.y,1).unproject(t)}static screenPoint2NdcPoint(e,t,i){let{clientWidth:r,clientHeight:n}=i,s=new le;return s.x=e.x/r*2-1,s.y=-e.y/n*2+1,s}},_f=class{static createCSS2DObject(e){let t=new oT(e);return e.dataset.objectId=t.id.toString(),t}static createDefaultHotpoint(e=12){let t=document.createElement("div"),i=t.style;return i.width=`${e}px`,i.height=`${e}px`,i.opacity="0.8",i.cursor="pointer",i.top=-e/2+"px",i.left=-e/2+"px",i.backgroundColor="#ffffff",i.border="2px solid #00DAB7",i.borderRadius="50%",this.createCSS2DObject(t)}static createHotpoint(e){if(e){let t=document.createElement("div"),i=t.style;return i.top="0px",i.left="0px",t.innerHTML=e,this.createCSS2DObject(t)}return this.createDefaultHotpoint()}static createLabel(e,t=""){let i=document.createElement("div");if(i.innerHTML=e,t)i.classList.add(t);else{let e=i.style;e.padding="5px 9px",e.color="#ffffffdd",e.fontSize="12px",e.position="absolute",e.backgroundColor="rgba(0, 0, 0, 0.3)",e.borderRadius="12px",e.cursor="pointer",e.top="0px",e.left="0px"}return this.createCSS2DObject(i)}static tryFindObjectId(e){if(null!=e.dataset.objectId)return parseInt(e.dataset.objectId);let t=e.parentElement;return!t||t instanceof HTMLBodyElement?void 0:this.tryFindObjectId(t)}},uT={unit:"file",decimalPrecision:99,camera:{near:.1,far:3e4},mouse:{sensitivity:3},keyboard:{sensitivity:3}},Zpe={"Precision from file":99,"0(1)":0,"0.1(1/2)":1,"0.01(1/4)":2,"0.001(1/8)":3,"0.0001(1/16)":4,"0.00001(1/32)":5,"0.000001(1/64)":6},qu=(e,t)=>e.toFixed(t===Zpe["Precision from file"]?2:t),Os=class{constructor(){this.map=new Map}addEventListener(e,t){let i=this.map.get(e);i||(i=new Set,this.map.set(e,i)),i.add(t)}dispatchEvent(e,t={}){let i=this.map.get(e);i&&[...i].forEach((e=>e(t)))}hasEventListener(e){return!!this.map.get(e)}removeEventListener(e,t){if(!e)return void this.map.clear();if(!t)return void this.map.delete(e);let i=this.map.get(e);i&&i.delete(t)}clearEventListeners(e){this.map.delete(e)}clearAllEventListener(){this.map.clear()}},ra=class{parse(e,t={}){if(t=Object.assign({decodeSpeed:5,encodeSpeed:5,encoderMethod:ra.MESH_EDGEBREAKER_ENCODING,quantization:[16,8,8,8,8],exportUvs:!0,exportNormals:!0,exportColor:!1},t),void 0===DracoEncoderModule)throw new Error("THREE.DRACOExporter: required the draco_encoder to work.");let i,r,n=e.geometry,s=DracoEncoderModule(),a=new s.Encoder;if(!0===e.isMesh){i=new s.MeshBuilder,r=new s.Mesh;let e=n.getAttribute("position");i.AddFloatAttributeToMesh(r,s.POSITION,e.count,e.itemSize,e.array);let a=n.getIndex();if(null!==a)i.AddFacesToMesh(r,a.count/3,a.array);else{let t=new(e.count>65535?Uint32Array:Uint16Array)(e.count);for(let e=0;e4?i=e.array[n*e.itemSize+t]:(0===t?i=e.getX(n):1===t?i=e.getY(n):2===t?i=e.getZ(n):3===t&&(i=e.getW(n)),!0===e.normalized&&(i=_r.normalize(i,e.array))),r.min[t]=Math.min(r.min[t],i),r.max[t]=Math.max(r.max[t],i)}return r}function rde(e){return 4*Math.ceil(e/4)}function CB(e,t=0){let i=rde(e.byteLength);if(i!==e.byteLength){let r=new Uint8Array(i);if(r.set(new Uint8Array(e)),0!==t)for(let n=e.byteLength;ne.toBlob(i,t)));let i;return"image/jpeg"===t?i=.92:"image/webp"===t&&(i=.8),e.convertToBlob({type:t,quality:i})}var AB=class{constructor(){this.plugins=[],this.options={},this.pending=[],this.buffers=[],this.byteOffset=0,this.buffers=[],this.nodeMap=new Map,this.skins=[],this.extensionsUsed={},this.uids=new Map,this.uid=0,this.json={asset:{version:"2.0",generator:"THREE.GLTFExporter"}},this.cache={meshes:new Map,attributes:new Map,attributesNormalized:new Map,materials:new Map,textures:new Map,images:new Map}}setPlugins(e){this.plugins=e}write(e,t){return ht(this,arguments,(function*(e,t,i={}){this.options=Object.assign({binary:!1,trs:!1,onlyVisible:!0,maxTextureSize:1/0,animations:[],includeCustomExtensions:!1},i),this.options.animations.length>0&&(this.options.trs=!0),this.processInput(e),yield Promise.all(this.pending);let r=this,n=r.buffers,s=r.json;i=r.options;let a=r.extensionsUsed,o=new Blob(n,{type:"application/octet-stream"}),l=Object.keys(a);if(l.length>0&&(s.extensionsUsed=l),s.buffers&&s.buffers.length>0&&(s.buffers[0].byteLength=o.size),!0===i.binary){let e=new FileReader;e.readAsArrayBuffer(o),e.onloadend=function(){let i=CB(e.result),r=new DataView(new ArrayBuffer(Qpe));r.setUint32(0,i.byteLength,!0),r.setUint32(4,sEt,!0);let n=CB(aEt(JSON.stringify(s)),32),a=new DataView(new ArrayBuffer(Qpe));a.setUint32(0,n.byteLength,!0),a.setUint32(4,nEt,!0);let o=new ArrayBuffer(Jpe),l=new DataView(o);l.setUint32(0,rEt,!0),l.setUint32(4,iEt,!0);let h=Jpe+a.byteLength+n.byteLength+r.byteLength+i.byteLength;l.setUint32(8,h,!0);let u=new Blob([o,a,n,r,i],{type:"application/octet-stream"}),c=new FileReader;c.readAsArrayBuffer(u),c.onloadend=function(){t(c.result)}}}else if(s.buffers&&s.buffers.length>0){let e=new FileReader;e.readAsDataURL(o),e.onloadend=function(){let i=e.result;s.buffers[0].uri=i,t(s)}}else t(s)}))}serializeUserData(e,t){if(0===Object.keys(e.userData).length)return;let i=this.options,r=this.extensionsUsed;try{let n=JSON.parse(JSON.stringify(e.userData));if(i.includeCustomExtensions&&n.gltfExtensions){void 0===t.extensions&&(t.extensions={});for(let e in n.gltfExtensions)t.extensions[e]=n.gltfExtensions[e],r[e]=!0;delete n.gltfExtensions}Object.keys(n).length>0&&(t.extras=n)}catch(t){console.warn("THREE.GLTFExporter: userData of '"+e.name+"' won't be serialized because of JSON.stringify error - "+t.message)}}getUID(e,t=!1){if(!1===this.uids.has(e)){let t=new Map;t.set(!0,this.uid++),t.set(!1,this.uid++),this.uids.set(e,t)}return this.uids.get(e).get(t)}isNormalizedNormalAttribute(e){if(this.cache.attributesNormalized.has(e))return!1;let t=new A;for(let i=0,r=e.count;i5e-4)return!1;return!0}createNormalizedNormalAttribute(e){let t=this.cache;if(t.attributesNormalized.has(e))return t.attributesNormalized.get(e);let i=e.clone(),r=new A;for(let e=0,t=i.count;e4?r=e.array[n*e.itemSize+i]:(0===i?r=e.getX(n):1===i?r=e.getY(n):2===i?r=e.getZ(n):3===i&&(r=e.getW(n)),!0===e.normalized&&(r=_r.normalize(r,e.array))),t===sn.FLOAT?l.setFloat32(h,r,!0):t===sn.UNSIGNED_INT?l.setUint32(h,r,!0):t===sn.UNSIGNED_SHORT?l.setUint16(h,r,!0):t===sn.UNSIGNED_BYTE&&l.setUint8(h,r),h+=s}let u={buffer:this.processBuffer(l.buffer),byteOffset:this.byteOffset,byteLength:o};return void 0!==n&&(u.target=n),n===sn.ARRAY_BUFFER&&(u.byteStride=e.itemSize*s),this.byteOffset+=o,a.bufferViews.push(u),{id:a.bufferViews.length-1,byteLength:0}}processBufferViewImage(e){let t=this,i=t.json;return i.bufferViews||(i.bufferViews=[]),new Promise((function(r){let n=new FileReader;n.readAsArrayBuffer(e),n.onloadend=function(){let e=CB(n.result),s={buffer:t.processBuffer(e),byteOffset:t.byteOffset,byteLength:e.byteLength};t.byteOffset+=e.byteLength,r(i.bufferViews.push(s)-1)}}))}processAccessor(e,t,i,r){let n,s=this.json;if(e.array.constructor===Float32Array)n=sn.FLOAT;else if(e.array.constructor===Uint32Array)n=sn.UNSIGNED_INT;else if(e.array.constructor===Uint16Array)n=sn.UNSIGNED_SHORT;else{if(e.array.constructor!==Uint8Array)throw new Error("THREE.GLTFExporter: Unsupported bufferAttribute component type.");n=sn.UNSIGNED_BYTE}if(void 0===i&&(i=0),void 0===r&&(r=e.count),0===r)return null;let a,o=lEt(e,i,r);void 0!==t&&(a=e===t.index?sn.ELEMENT_ARRAY_BUFFER:sn.ARRAY_BUFFER);let l=this.processBufferView(e,n,i,r,a),h={bufferView:l.id,byteOffset:l.byteOffset,componentType:n,count:r,max:o.max,min:o.min,type:{1:"SCALAR",2:"VEC2",3:"VEC3",4:"VEC4",16:"MAT4"}[e.itemSize]};return!0===e.normalized&&(h.normalized=!0),s.accessors||(s.accessors=[]),s.accessors.push(h)-1}processImage(e,t,i,r="image/png"){if(null!==e){let n=this,s=n.cache,a=n.json,o=n.options,l=n.pending;s.images.has(e)||s.images.set(e,{});let h=s.images.get(e),u=r+":flipY/"+i.toString();if(void 0!==h[u])return h[u];a.images||(a.images=[]);let c={mimeType:r},p=ede();p.width=Math.min(e.width,o.maxTextureSize),p.height=Math.min(e.height,o.maxTextureSize);let d=p.getContext("2d");if(!0===i&&(d.translate(0,p.height),d.scale(1,-1)),void 0!==e.data){t!==Gs&&console.error("GLTFExporter: Only RGBAFormat is supported."),(e.width>o.maxTextureSize||e.height>o.maxTextureSize)&&console.warn("GLTFExporter: Image size is bigger than maxTextureSize",e);let i=new Uint8ClampedArray(e.height*e.width*4);for(let t=0;tn.processBufferViewImage(e))).then((e=>{c.bufferView=e}))):void 0!==p.toDataURL?c.uri=p.toDataURL(r):l.push(tde(p,r).then((e=>(new FileReader).readAsDataURL(e))).then((e=>{c.uri=e})));let f=a.images.push(c)-1;return h[u]=f,f}throw new Error("THREE.GLTFExporter: No valid image data found. Unable to process texture.")}processSampler(e){let t=this.json;t.samplers||(t.samplers=[]);let i={magFilter:Wo[e.magFilter],minFilter:Wo[e.minFilter],wrapS:Wo[e.wrapS],wrapT:Wo[e.wrapT]};return t.samplers.push(i)-1}processTexture(e){let t=this.cache,i=this.json;if(t.textures.has(e))return t.textures.get(e);i.textures||(i.textures=[]);let r=e.userData.mimeType;"image/webp"===r&&(r="image/png");let n={sampler:this.processSampler(e),source:this.processImage(e.image,e.format,e.flipY,r)};e.name&&(n.name=e.name),this._invokeAll((function(t){t.writeTexture&&t.writeTexture(e,n)}));let s=i.textures.push(n)-1;return t.textures.set(e,s),s}processMaterial(e){let t=this.cache,i=this.json;if(t.materials.has(e))return t.materials.get(e);if(e.isShaderMaterial)return console.warn("GLTFExporter: THREE.ShaderMaterial not supported."),null;i.materials||(i.materials=[]);let r={pbrMetallicRoughness:{}};!0!==e.isMeshStandardMaterial&&!0!==e.isMeshBasicMaterial&&console.warn("GLTFExporter: Use MeshStandardMaterial or MeshBasicMaterial for best results.");let n=e.color.toArray().concat([e.opacity]);if(Vx(n,[1,1,1,1])||(r.pbrMetallicRoughness.baseColorFactor=n),e.isMeshStandardMaterial?(r.pbrMetallicRoughness.metallicFactor=e.metalness,r.pbrMetallicRoughness.roughnessFactor=e.roughness):(r.pbrMetallicRoughness.metallicFactor=.5,r.pbrMetallicRoughness.roughnessFactor=.5),e.metalnessMap||e.roughnessMap){let t=this.buildMetalRoughTexture(e.metalnessMap,e.roughnessMap),i={index:this.processTexture(t)};this.applyTextureTransform(i,t),r.pbrMetallicRoughness.metallicRoughnessTexture=i}if(e.map){let t={index:this.processTexture(e.map)};this.applyTextureTransform(t,e.map),r.pbrMetallicRoughness.baseColorTexture=t}if(e.emissive){let t=e.emissive.clone().multiplyScalar(e.emissiveIntensity),i=Math.max(t.r,t.g,t.b);if(i>1&&(t.multiplyScalar(1/i),console.warn("THREE.GLTFExporter: Some emissive components exceed 1; emissive has been limited")),i>0&&(r.emissiveFactor=t.toArray()),e.emissiveMap){let t={index:this.processTexture(e.emissiveMap)};this.applyTextureTransform(t,e.emissiveMap),r.emissiveTexture=t}}if(e.normalMap){let t={index:this.processTexture(e.normalMap)};e.normalScale&&1!==e.normalScale.x&&(t.scale=e.normalScale.x),this.applyTextureTransform(t,e.normalMap),r.normalTexture=t}if(e.aoMap){let t={index:this.processTexture(e.aoMap),texCoord:1};1!==e.aoMapIntensity&&(t.strength=e.aoMapIntensity),this.applyTextureTransform(t,e.aoMap),r.occlusionTexture=t}e.transparent?r.alphaMode="BLEND":e.alphaTest>0&&(r.alphaMode="MASK",r.alphaCutoff=e.alphaTest),e.side===yi&&(r.doubleSided=!0),""!==e.name&&(r.name=e.name),this.serializeUserData(e,r),this._invokeAll((function(t){t.writeMaterial&&t.writeMaterial(e,r)}));let s=i.materials.push(r)-1;return t.materials.set(e,s),s}processMesh(e){let t=this.cache,i=this.json,r=[e.geometry.uuid];if(Array.isArray(e.material))for(let t=0,i=e.material.length;t0){let i=[],r=[],n={};if(void 0!==e.morphTargetDictionary)for(let t in e.morphTargetDictionary)n[e.morphTargetDictionary[t]]=t;for(let s=0;s0&&(o.extras={},o.extras.targetNames=r)}let f=Array.isArray(e.material);if(f&&0===a.groups.length)return null;let m=f?e.material:[e.material],g=f?a.groups:[{materialIndex:0,start:void 0,count:void 0}];for(let e=0,i=g.length;e0&&(i.targets=u),null!==a.index){let r=this.getUID(a.index);(void 0!==g[e].start||void 0!==g[e].count)&&(r+=":"+g[e].start+":"+g[e].count),t.attributes.has(r)?i.indices=t.attributes.get(r):(i.indices=this.processAccessor(a.index,a,g[e].start,g[e].count),t.attributes.set(r,i.indices)),null===i.indices&&delete i.indices}let r=this.processMaterial(m[g[e].materialIndex]);null!==r&&(i.material=r),h.push(i)}o.primitives=h,i.meshes||(i.meshes=[]),this._invokeAll((function(t){t.writeMesh&&t.writeMesh(e,o)}));let y=i.meshes.push(o)-1;return t.meshes.set(n,y),y}processCamera(e){let t=this.json;t.cameras||(t.cameras=[]);let i=e.isOrthographicCamera,r={type:i?"orthographic":"perspective"};return i?r.orthographic={xmag:2*e.right,ymag:2*e.top,zfar:e.far<=0?.001:e.far,znear:e.near<0?0:e.near}:r.perspective={aspectRatio:e.aspect,yfov:_r.degToRad(e.fov),zfar:e.far<=0?.001:e.far,znear:e.near<0?0:e.near},""!==e.name&&(r.name=e.type),t.cameras.push(r)-1}processAnimation(e,t){let i=this.json,r=this.nodeMap;i.animations||(i.animations=[]);let n=(e=hT.Utils.mergeMorphTargetTracks(e.clone(),t)).tracks,s=[],a=[];for(let e=0;e0){let t=[];for(let r=0,n=e.children.length;r0&&(n.children=t)}this._invokeAll((function(t){t.writeNode&&t.writeNode(e,n)}));let s=t.nodes.push(n)-1;return r.set(e,s),s}processScene(e){let t=this.json,i=this.options;t.scenes||(t.scenes=[],t.scene=0);let r={};""!==e.name&&(r.name=e.name),t.scenes.push(r);let n=[];for(let t=0,r=e.children.length;t0&&(r.nodes=n),this.serializeUserData(e,r)}processObjects(e){let t=new Nn;t.name="AuxScene";for(let i=0;i0&&this.processObjects(i);for(let e=0;e0&&(s.range=e.distance)):e.isSpotLight&&(s.type="spot",e.distance>0&&(s.range=e.distance),s.spot={},s.spot.innerConeAngle=(e.penumbra-1)*e.angle*-1,s.spot.outerConeAngle=e.angle),void 0!==e.decay&&2!==e.decay&&console.warn("THREE.GLTFExporter: Light decay may be lost. glTF is physically-based, and expects light.decay=2."),e.target&&(e.target.parent!==e||0!==e.target.position.x||0!==e.target.position.y||-1!==e.target.position.z)&&console.warn("THREE.GLTFExporter: Light direction may be lost. For best results, make light.target a child of the light with position 0,0,-1."),n[this.name]||(r.extensions=r.extensions||{},r.extensions[this.name]={lights:[]},n[this.name]=!0);let a=r.extensions[this.name].lights;a.push(s),t.extensions=t.extensions||{},t.extensions[this.name]={light:a.length-1}}},PB=class{constructor(e){this.writer=e,this.name="KHR_materials_unlit"}writeMaterial(e,t){if(!e.isMeshBasicMaterial)return;let i=this.writer.extensionsUsed;t.extensions=t.extensions||{},t.extensions[this.name]={},i[this.name]=!0,t.pbrMetallicRoughness.metallicFactor=0,t.pbrMetallicRoughness.roughnessFactor=.9}},NB=class{constructor(e){this.writer=e,this.name="KHR_materials_clearcoat"}writeMaterial(e,t){if(!e.isMeshPhysicalMaterial||0===e.clearcoat)return;let i=this.writer,r=i.extensionsUsed,n={};if(n.clearcoatFactor=e.clearcoat,e.clearcoatMap){let t={index:i.processTexture(e.clearcoatMap)};i.applyTextureTransform(t,e.clearcoatMap),n.clearcoatTexture=t}if(n.clearcoatRoughnessFactor=e.clearcoatRoughness,e.clearcoatRoughnessMap){let t={index:i.processTexture(e.clearcoatRoughnessMap)};i.applyTextureTransform(t,e.clearcoatRoughnessMap),n.clearcoatRoughnessTexture=t}if(e.clearcoatNormalMap){let t={index:i.processTexture(e.clearcoatNormalMap)};i.applyTextureTransform(t,e.clearcoatNormalMap),n.clearcoatNormalTexture=t}t.extensions=t.extensions||{},t.extensions[this.name]=n,r[this.name]=!0}},LB=class{constructor(e){this.writer=e,this.name="KHR_materials_iridescence"}writeMaterial(e,t){if(!e.isMeshPhysicalMaterial||0===e.iridescence)return;let i=this.writer,r=i.extensionsUsed,n={};if(n.iridescenceFactor=e.iridescence,e.iridescenceMap){let t={index:i.processTexture(e.iridescenceMap)};i.applyTextureTransform(t,e.iridescenceMap),n.iridescenceTexture=t}if(n.iridescenceIor=e.iridescenceIOR,n.iridescenceThicknessMinimum=e.iridescenceThicknessRange[0],n.iridescenceThicknessMaximum=e.iridescenceThicknessRange[1],e.iridescenceThicknessMap){let t={index:i.processTexture(e.iridescenceThicknessMap)};i.applyTextureTransform(t,e.iridescenceThicknessMap),n.iridescenceThicknessTexture=t}t.extensions=t.extensions||{},t.extensions[this.name]=n,r[this.name]=!0}},FB=class{constructor(e){this.writer=e,this.name="KHR_materials_transmission"}writeMaterial(e,t){if(!e.isMeshPhysicalMaterial||0===e.transmission)return;let i=this.writer,r=i.extensionsUsed,n={};if(n.transmissionFactor=e.transmission,e.transmissionMap){let t={index:i.processTexture(e.transmissionMap)};i.applyTextureTransform(t,e.transmissionMap),n.transmissionTexture=t}t.extensions=t.extensions||{},t.extensions[this.name]=n,r[this.name]=!0}},HB=class{constructor(e){this.writer=e,this.name="KHR_materials_volume"}writeMaterial(e,t){if(!e.isMeshPhysicalMaterial||0===e.transmission)return;let i=this.writer,r=i.extensionsUsed,n={};if(n.thicknessFactor=e.thickness,e.thicknessMap){let t={index:i.processTexture(e.thicknessMap)};i.applyTextureTransform(t,e.thicknessMap),n.thicknessTexture=t}n.attenuationDistance=e.attenuationDistance,n.attenuationColor=e.attenuationColor.toArray(),t.extensions=t.extensions||{},t.extensions[this.name]=n,r[this.name]=!0}},UB=class{constructor(e){this.writer=e,this.name="KHR_materials_ior"}writeMaterial(e,t){if(!e.isMeshPhysicalMaterial||1.5===e.ior)return;let i=this.writer.extensionsUsed,r={};r.ior=e.ior,t.extensions=t.extensions||{},t.extensions[this.name]=r,i[this.name]=!0}},BB=class{constructor(e){this.writer=e,this.name="KHR_materials_specular"}writeMaterial(e,t){if(!e.isMeshPhysicalMaterial||1===e.specularIntensity&&e.specularColor.equals(tEt)&&!e.specularIntensityMap&&!e.specularColorTexture)return;let i=this.writer,r=i.extensionsUsed,n={};if(e.specularIntensityMap){let t={index:i.processTexture(e.specularIntensityMap)};i.applyTextureTransform(t,e.specularIntensityMap),n.specularTexture=t}if(e.specularColorMap){let t={index:i.processTexture(e.specularColorMap)};i.applyTextureTransform(t,e.specularColorMap),n.specularColorTexture=t}n.specularFactor=e.specularIntensity,n.specularColorFactor=e.specularColor.toArray(),t.extensions=t.extensions||{},t.extensions[this.name]=n,r[this.name]=!0}};hT.Utils={insertKeyframe:function(e,t){let i,r=e.getValueSize(),n=new e.TimeBufferType(e.times.length+1),s=new e.ValueBufferType(e.values.length+r),a=e.createInterpolant(new e.ValueBufferType(r));if(0===e.times.length){n[0]=t;for(let e=0;ee.times[e.times.length-1]){if(Math.abs(e.times[e.times.length-1]-t)<.001)return e.times.length-1;n[n.length-1]=t,n.set(e.times,0),s.set(e.values,0),s.set(a.evaluate(t),e.values.length),i=n.length-1}else for(let o=0;ot){n.set(e.times.slice(0,o+1),0),n[o+1]=t,n.set(e.times.slice(o+1),o+2),s.set(e.values.slice(0,(o+1)*r),0),s.set(a.evaluate(t),(o+1)*r),s.set(e.values.slice((o+1)*r),(o+2)*r),i=o+1;break}}return e.times=n,e.values=s,i},mergeMorphTargetTracks:function(e,t){let i=[],r={},n=e.tracks;for(let e=0;e{if(i.binary){t=xn.addExtention(t,xn.EXTENSION_GLB);let i=e;xn.saveArrayBuffer(i,t)}else t=xn.addExtention(t,xn.EXTENSION_GLTF),xn.saveJson(e,t)}),(e=>console.log(e)),i)}static exportToObj(e,t){if(!e||!t)throw new Error("Invalid input or filename!");t=xn.addExtention(t,xn.EXTENSION_OBJ);let i=(new BC).parse(e);xn.saveString(i,t)}static exportToDraco(e,t,i={}){if(!e||!t)throw new Error("Invalid input or filename!");t=xn.addExtention(t,xn.EXTENSION_DRACO);let r=new ra;i=Object.assign({},{encodeSpeed:5},i);let n=r.parse(e,i);xn.saveArrayBuffer(n,t)}static exportToThreeJsJson(e,t){let i=e.toJSON();t.toLowerCase().endsWith(xn.EXTENSION_JSON)||(t+=xn.EXTENSION_JSON),xn.saveJson(i,t)}static save(e,t){let i=xn.downloadLink;i||(i=document.createElement("a"),i.style.display="none",document.body.appendChild(i),xn.downloadLink=i),i.href=URL.createObjectURL(e),i.download=t,i.click()}static saveArrayBuffer(e,t){xn.save(new Blob([e],{type:"application/octet-stream"}),t)}static saveJson(e,t){xn.saveJsonString(JSON.stringify(e),t)}static saveJsonString(e,t){xn.save(new Blob([e],{type:"application/json"}),t)}static saveString(e,t){xn.save(new Blob([e],{type:"text/csv"}),t)}static addExtention(e,t){return e.toLowerCase().endsWith(t.toLowerCase())||(e+=t),e}},Vg=xn;Vg.EXTENSION_GLTF=".gltf",Vg.EXTENSION_GLB=".glb",Vg.EXTENSION_OBJ=".obj",Vg.EXTENSION_DRACO=".drc",Vg.EXTENSION_JSON=".json";var kC=class{constructor(){this.prevTime=(performance||Date).now(),this.beginTime=(performance||Date).now(),this.frames=0,this.fps=Number.NaN}begin(){this.beginTime=(performance||Date).now()}end(){this.frames++;let e=(performance||Date).now();return e>=this.prevTime+1e3&&(this.fps=Math.round(1e3*this.frames/(e-this.prevTime)),this.frames=0,this.prevTime=e),e}update(){this.beginTime=this.end()}},kB=1e-15,ar=class{static roundNumber(e,t){return Math.round(e*Math.pow(10,t))/Math.pow(10,t)}static floorNumber(e,t){return Math.floor(e*Math.pow(10,t))/Math.pow(10,t)}static areNumbersEqual(e,t,i=1e-7){return Math.abs(e-t)e[0]===t[0]&&e[1]===t[1],zB=e=>Array.isArray(e)&&e.length,sde=(e,t=0,i=!1)=>{let r,n;if(zB(e)&&"number"==typeof e[0][0]){let t=0,s=e;for(r=0,n=s.length;r0||i&&t<0)&&s.reverse()}else for(r=0,n=e.length;r0);if(0===t&&zB(e)&&zB(e[0])&&"number"==typeof e[0][0][0]){let t=e[0].slice(0,1)[0];e[0].pop(),e[0].push([t[0],t[1]])}return e},GC=class{constructor(e,t=5){if(this.distance=0,this.arcSegments=t,!zx(e))throw new Error("Offset requires at least one coodinate to work with");this.edges=[],zx(e)&&"number"==typeof e[0]?this.vertices=e:(this.vertices=sde(e),this.processContour(this.vertices,this.edges))}processContour(e,t){let i,r;if(zx(e[0])&&"number"==typeof e[0][0])for(r=e.length,nde(e[0],e[r-1])&&(r-=1),i=0;ih?l-h:l+o-h,c=(a?-u:o-u)/s;e.push(r);for(let r=1;r0?this.margin(this.distance):this.padding(-this.distance)}offsetSegment(e,t,i,r){let n=[i.offset(i.inNormal[0]*r,i.inNormal[1]*r),i.inverseOffset(i.outNormal[0]*r,i.outNormal[1]*r)],s=[];for(let i=0,a=2;i0&&e.push(i)}e.length>0&&(t=1===e.length?e[0]:(0,zg.union)(e[0],...e.slice(1)))}else t=1===this.vertices.length?this.offsetPoint(e):this.offsetContour(this.vertices,this.edges);return t}offsetContour(e,t){let i=[],r=0,n=0;if(zx(e[0])&&"number"==typeof e[0][0]){for(r=0,n=e.length-1;r0&&(i=1===i.length?[i[0]]:(0,zg.union)(i[0],i.slice(1)))}else{let s=[];for(r=0,n=t.length;r0&&s.push(i)}s.length>0&&(i=1===s.length?s[0]:(0,zg.union)(s[0],...s.slice(1)))}return i}offsetPoint(e){this.setDistance(e);let t=2*this.arcSegments,i=[],r=this.vertices,n=this.distance,s=0;t%2==0&&t++;for(let e=0;e{let i=e.attributes[t];if(i instanceof no){let r=i.clone();e.attributes[t]=r}}))}static isPointInPolygon(e,t,i=!1){let r=e.x,n=e.y,s=!1,a=t.length;for(let e=0,o=a-1;en!=u>n;i&&(c=l>=n!=u>=n),c&&r<(h-a)*(n-l)/(u-l)+a&&(s=!s)}return s}static caculateGeometryCenter(e){if(!e.hasAttribute("position"))return null;let t=e.getAttribute("position");if(0===t.count)return null;let i=new A,r=t.itemSize,n=t.array,s=[0,0,0];for(let e=0;e0&&i<0||r<0&&i>0)return!1;i=r}}return!0}static areLineSegmentsIntersecting(e,t){let{start:i,end:r}=e,{start:n,end:s}=t,a=n.clone().sub(i),o=r.clone().sub(i),l=s.clone().sub(i),h=a.cross(o).dot(l.cross(o)),u=i.clone().sub(n),c=s.clone().sub(n),p=r.clone().sub(n),d=u.cross(c).dot(p.cross(c));return h<0&&d<0}static getLineSegmentsIntersectingPoint(e,t){let{start:i,end:r}=e,{start:n,end:s}=t,a=lde.subVectors(r,i).normalize(),o=cde.subVectors(s,n).normalize();if(1===a.dot(o))return null;let l=ude.subVectors(n,i),h=a.clone().cross(o),u=l.clone().cross(o),c=l.clone().dot(h);if(c>=1e-5||c<=-1e-5)return null;let p=h.lengthSq();if(ar.areNumbersEqual(0,p))return;let d=u.clone().dot(h)/p,f=i.clone().add(a.multiplyScalar(d));return f.equals(i)||f.equals(r)?null:f}static isPointOnLineSegment(e,t,i=.001){let{start:r,end:n}=t,s=lde.subVectors(r,n).length(),a=cde.subVectors(e,r).length(),o=ude.subVectors(e,n).length();return Math.abs(s-(a+o))<=i}static isPointOnLineSegments(e,t,i=.001){let r=!1;for(let n=0;n{i?t.add(e):(t.x+=e.x,t.y+=e.y)})),t.divideScalar(e.length);let r=!1;if(kt.shouldRebasePositionOnRTC(t)){r=!0;for(let r=0;rjB||Math.abs(e.y)>jB||e instanceof A&&Math.abs(e.z)>jB}static calculateSurfaceArea(e){let t=0,i=e.getAttribute("position"),r=e.index;if(r)for(let e=0;e2&&(s=t?2*n:2*n-2);let a=new r(s),o=0;for(let e=0;e0&&e{let i=e.geometry.attributes.position.array;return e.localToWorld(new A(i[3*t],i[3*t+1],i[3*t+2]))};e.updateWorldMatrix(!0,!1);let a=(null==(i=e.geometry.getIndex())?void 0:i.array)||[],o=null!=(r=a[t])?r:t,l=null!=(n=a[t+1])?n:t+1;return[s(o),s(l)]}static arePolygonsIntersect(e,t){if(0===e.length||0===t.length||(ade.setFromPoints(e),ode.setFromPoints(t),!ade.intersectsBox(ode)))return!1;for(let i=0;i1-n)return;let o=t.y-e.y,l=e.x-t.x,h=o*e.x+l*e.y,u=r.y-i.y,c=i.x-r.x,p=u*i.x+c*i.y,d=o*c-u*l;return Math.abs(d){r.push([e.x,e.y])}));try{i=new GC(r).setArcSegments(2).offsetLine(t/2)}catch(e){return}if(!i||0===i.length)return;i=i[0];let n=[],s=[];for(let e=0;e{n.push(new le(e[0],e[1]))})),rs.isClockWise(n)||n.reverse();else{let t=[];i[e].forEach((e=>{t.push(new le(e[0],e[1]))})),rs.isClockWise(t)&&t.reverse(),s.push(t)}let a=rs.triangulateShape(n,s),o=[];for(let e=0;en.push(...e)));let l=(new lt).setFromPoints(n);return l.setIndex(o),l}static releaseGeometryManually(e){e.index=null,e.attributes={}}static getAdjacentNonRepeatPoints(e,t=1e-7){let i=[],r=e.length;for(let n=0;n(e.ObjectsBoxSection="ObjectsBoxSection",e.PickPlaneSection="PickPlaneSection",e.AxisPlaneSection="AxisPlaneSection",e))(pT||{}),ia=class{static createGroundGrid(e,t,i){e=e||this.DEFAULT_WIDTH,t=t||this.DEFAULT_WIDTH_SEGS;let r=new wx(e,t);i?r.position.set(i.x,i.y,i.z):r.position.y=0;let n=r.material;return Array.isArray(n)||(n.opacity=this.DEFAULT_MAT_PARAMS.opacity,n.transparent=this.DEFAULT_MAT_PARAMS.transparent),r.name=this.GROUND_GRID_NAME,r.layers.set(11),r.matrixAutoUpdate=!1,r.updateMatrix(),r}static createGrassGround(e,t,i,r,n){return ht(this,null,(function*(){return t=t||this.DEFAULT_WIDTH,i=i||this.DEFAULT_HEIGHT,new Promise((s=>{(new xs).load(e||"images/terrain/grass.jpg",(e=>{e.wrapS=e.wrapT=gn,e.repeat.set(r||this.DEFAULT_WIDTH_SEGS/5,n||this.DEFAULT_HEIGHT_SETS/5),e.anisotropy=16,e.encoding=gr;let a=new ao({map:e});a.side=tn;let o=new rt(new is(t,i),a);return o.rotation.x=-Math.PI/2,o.position.y=0,o.receiveShadow=!0,o.name=this.GRASS_GROUND_NAME,o.layers.set(11),o.matrixAutoUpdate=!1,o.updateMatrix(),s(o)}))}))}))}};ia.GROUND_GRID_NAME="GROUND_GRID",ia.GRASS_GROUND_NAME="GRASS_GROUND",ia.DEFAULT_WIDTH=1e3,ia.DEFAULT_HEIGHT=1e3,ia.DEFAULT_WIDTH_SEGS=100,ia.DEFAULT_HEIGHT_SETS=100,ia.DEFAULT_MAT_PARAMS={color:12829635,transparent:!0,opacity:.5,wireframeLinewidth:.5};var pde={NavCube:{front:"Front",back:"Back",top:"Top",bottom:"Bottom",left:"Left",right:"Right"},ContextMenu:{viewFitAll:"View Fit All",hideAll:"Hide All",showAll:"Show All",xRayAll:"X-Ray",xRayNone:"X-Ray None",selectNone:"Select None",resetView:"Reset View",viewFitEntity:"View Fit",hideEntity:"Hide",hideOthers:"Hide Others",xRayEntity:"X-Ray",xRayOthers:"X-Ray Others",select:"Select",deselect:"Undo Select",showSectionPlane:"Show Section Plane",showSectionBox:"Show Section Box",showAxisSection:"Show Axis Section",hideSectionPlane:"Hide Section Plane",hideSectionBox:"Hide Section Box",hideAxisSection:"Hide Axis Section",undoSection:"Undo Section"},ProgressBar:{Loading:"Loading",Comparing:"Comparing"},Toolbar:{homeView:"Home",orthoView:"Ortho View",measurement:"Measure",distanceMeasurement:"Distance",areaMeasurement:"Area",angleMeasurement:"Angle",coordinateMeasurement:"Coordinate",clearMeasurement:"Clear",markup:"Markup",markupArrow:"Arrow",markupRect:"Rect",markupCloudRect:"CloudRect",markupPolyLine:"PolyLine",markupCloudLine:"CloudLine",markupEllipse:"Ellipse",markupCircle:"Circle",markupDot:"Dot",markupText:"Text",markupX:"X",markupStroke:"Stroke Style",markupLineWidth:"Line Width",markupLineWidth2:"Line Width 2",markupLineWidth5:"Line Width 5",markupLineWidth10:"Line Width 10",markupFontSize:"Font Size",markupFontSize14:"14",markupFontSize18:"18",markupFontSize24:"24",clearMarkup:"Clear Markup",quitMarkup:"Quit markup",section:"Section",axisSection:"Axis Section",pickSectionPlane:"Pick Section Plane",sectionBox:"Section Box",bimTree:"BIM Tree",viewpoint:"Viewpoint",annotation:"Annotation",property:"Property",settings:"Settings",compared:"Compared",quitCompare:"Quit compare",fullscreen:"Full Screen",layers:"Layers",zoomToRectangle:"Zoom",screenshot:"Screenshot"},Tooltip:{measure:"Pick a point to continue, pressing ESC to exit",areaMeasurement:"Pick a point to continue, pressing ESC to exit, right click to finish",section:"Click to pick a section plane",boxSelect:"Box select an area"},PopPanel:{reset:"Reset"}},dde={NavCube:{front:"前",back:"后",top:"上",bottom:"下",left:"左",right:"右"},ContextMenu:{viewFitAll:"缩放视口到所有模型",hideAll:"全部隐藏",showAll:"全部显示",xRayAll:"全部应用 X 光模式",xRayNone:"清除 X 光模式",selectNone:"清空选择",resetView:"重置视图",viewFitEntity:"缩放视口到实体",hideEntity:"隐藏",hideOthers:"隐藏其他 (隔离)",xRayEntity:"应用 X 光模式",xRayOthers:"对其他实体应用 X 光模式",select:"选择",deselect:"取消选择",showSectionPlane:"显示剖切面",showSectionBox:"显示剖切盒",showAxisSection:"显示轴向剖切",hideSectionPlane:"隐藏剖切面",hideSectionBox:"隐藏剖切盒",hideAxisSection:"隐藏轴向剖切",undoSection:"取消剖切"},ProgressBar:{Loading:"正在加载",Comparing:"正在对比"},Toolbar:{homeView:"主视图",orthoView:"正交视图",measurement:"测量",distanceMeasurement:"距离测量",areaMeasurement:"面积测量",angleMeasurement:"角度测量",coordinateMeasurement:"坐标测量",clearMeasurement:"清除测量",markup:"批注",markupArrow:"箭头",markupRect:"矩形框",markupCloudRect:"云线框",markupPolyLine:"多段线",markupCloudLine:"云线",markupEllipse:"椭圆",markupCircle:"圆",markupDot:"点",markupText:"文字",markupX:"叉号",markupStroke:"画笔颜色",markupLineWidth:"线宽",markupLineWidth2:"线宽 2",markupLineWidth5:"线宽 5",markupLineWidth10:"线宽 10",markupFontSize:"字号",markupFontSize14:"14",markupFontSize18:"18",markupFontSize24:"24",clearMarkup:"清除批注",quitMarkup:"退出批注",section:"剖切",axisSection:"轴向剖切",pickSectionPlane:"面剖切",sectionBox:"剖切盒",bimTree:"BIM树",viewpoint:"视点",annotation:"批注",property:"属性",settings:"设置",compared:"图纸对比",quitCompare:"退出图纸对比",fullscreen:"全屏",layers:"图层",zoomToRectangle:"框选放大",screenshot:"截屏"},Tooltip:{measure:"点击继续测量, ESC 取消测量",areaMeasurement:"点击继续测量, ESC 取消测量,右键完成测量",section:"点击确定剖切面",boxSelect:"框选一个区域"},PopPanel:{reset:"重置"}},Ps=class{static materialEquals(e,t){if(e===t)return!0;if(e.type!==t.type)return!1;if(e instanceof jr&&t instanceof jr){let i=e,r=t;return e.alphaTest===t.alphaTest&&e.opacity===t.opacity&&e.side===t.side&&e.visible===t.visible&&e.name===t.name&&e.transparent===t.transparent&&this.colorEquals(i.color,r.color)&&this.colorEquals(i.emissive,r.emissive)&&i.roughness===r.roughness&&i.metalness===r.metalness&&i.alphaMap===r.alphaMap&&i.uniforms===r.uniforms&&i.defines===r.defines&&i.vertexShader===r.vertexShader&&i.fragmentShader===r.fragmentShader&&i.clippingPlanes===r.clippingPlanes&&i.map===r.map&&i.clipIntersection===r.clipIntersection}return!1}static materialsEquals(e,t){if(e===t)return!0;if(Array.isArray(e)&&Array.isArray(t)&&e.length===t.length){for(let i=0;i0){let e=[];return i.forEach((i=>{e.push(this.clonedHighlightMaterial(i,t))})),e}if(i instanceof jr)return this.clonedHighlightMaterial(i,t);console.warn(`[MaterialUtils] Invalid material: ${i}`)}static clonedHighlightMaterial(e,t={}){var i;let{depthTest:r,highlightColor:n=new je(583902),opacity:s=.7}=t,a=e.clone();return a instanceof Vu||a instanceof bs?(a.emissive.set(n),a.color.set(n)):a instanceof lr||a instanceof ao||a instanceof vr||a instanceof Op?a.color.set(n):a instanceof Yt?null==(i=a.uniforms.u_color)||i.value.set(n):a instanceof Eg?a.color.set(n):console.warn("[MaterialUtils] Unsupported Material:",a.type),a.opacity=s,a.transparent=!0,void 0!==r&&(a.depthTest=!1,a.side=yi),a}static cloneMaterial(e){if(!e)return e;if(Array.isArray(e)){let t=[];return e.forEach((e=>{t.push(e.clone())})),t}return e.clone()}static getMaterialColor(e){let t=new je(16777215);return e instanceof qn||e instanceof vr||e instanceof lr?t=e.color:e instanceof Yt&&e.uniforms.u_color&&(t=e.uniforms.u_color.value),t}static setMaterialColor(e,t){e instanceof qn||e instanceof vr||e instanceof lr?e.color=t:e instanceof Yt&&e.uniforms.u_color&&(e.uniforms.u_color.value=t)}static cloneMaterials(e){let t=new Map;e.traverse((e=>{e.material&&(e.material=(e=>{let i;return Array.isArray(e)?(i=[],e.forEach((e=>{if(t.has(e))i.push(t.get(e));else{let r=e.clone();t.set(e,r),i.push(r)}}))):e&&(t.has(e)?i=t.get(e):(i=e.clone(),t.set(e,i))),i})(e.material))}))}};function qo(e,t=!1){let i=null!==e[0].index,r=new Set(Object.keys(e[0].attributes)),n=new Set(Object.keys(e[0].morphAttributes)),s={},a={},o=e[0].morphTargetsRelative,l=new lt,h=0;for(let u=0;ut in r?Sc(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e,Zi=(r,t)=>{for(var e in t||(t={}))Ec.call(t,e)&&Eo(r,e,t[e]);if(Ao)for(var e of Ao(t))Cc.call(t,e)&&Eo(r,e,t[e]);return r},Co=(r,t)=>Tc(r,Ac(t));var ro="149";var Pc=0,Po=1,Rc=2;var Wa=1,Lc=2,Ni=3,Ue=0,he=1,We=2;var pn=0,ri=1,Ro=2,Lo=3,Io=4,Ic=5,ni=100,Dc=101,Nc=102,Do=103,No=104,Fc=200,zc=201,Oc=202,Bc=203,qa=204,Xa=205,Uc=206,kc=207,Vc=208,Gc=209,Hc=210,Wc=0,qc=1,Xc=2,Er=3,Yc=4,Zc=5,Jc=6,$c=7,Ya=0,Kc=1,jc=2,nn=0,Qc=1,tl=2,el=3,nl=4,il=5,Za=300,ci=301,li=302,Cr=303,Pr=304,Ls=306,Rr=1e3,Oe=1001,Lr=1002,ce=1003,Fo=1004;var Zs=1005;var Re=1006,sl=1007;var Oi=1008;var Dn=1009,rl=1010,ol=1011,Ja=1012,al=1013,Pn=1014,Rn=1015,Bi=1016,cl=1017,ll=1018,oi=1020,hl=1021,Be=1023,ul=1024,fl=1025,Ln=1026,hi=1027,dl=1028,pl=1029,ml=1030,gl=1031,xl=1033,Js=33776,$s=33777,Ks=33778,js=33779,zo=35840,Oo=35841,Bo=35842,Uo=35843,_l=36196,ko=37492,Vo=37496,Go=37808,Ho=37809,Wo=37810,qo=37811,Xo=37812,Yo=37813,Zo=37814,Jo=37815,$o=37816,Ko=37817,jo=37818,Qo=37819,ta=37820,ea=37821,Qs=36492,yl=36283,na=36284,ia=36285,sa=36286;var xs=2300,_s=2301,tr=2302,ra=2400,oa=2401,aa=2402;var Nn=3e3,Ot=3001,vl=3200,Ml=3201,bl=0,wl=1;var Ge="srgb",Ui="srgb-linear";var er=7680;var Sl=519,ca=35044;var la="300 es",Ir=1035,mn=class{addEventListener(t,e){this._listeners===void 0&&(this._listeners={});let n=this._listeners;n[t]===void 0&&(n[t]=[]),n[t].indexOf(e)===-1&&n[t].push(e)}hasEventListener(t,e){if(this._listeners===void 0)return!1;let n=this._listeners;return n[t]!==void 0&&n[t].indexOf(e)!==-1}removeEventListener(t,e){if(this._listeners===void 0)return;let i=this._listeners[t];if(i!==void 0){let s=i.indexOf(e);s!==-1&&i.splice(s,1)}}dispatchEvent(t){if(this._listeners===void 0)return;let n=this._listeners[t.type];if(n!==void 0){t.target=this;let i=n.slice(0);for(let s=0,a=i.length;s>8&255]+ne[r>>16&255]+ne[r>>24&255]+"-"+ne[t&255]+ne[t>>8&255]+"-"+ne[t>>16&15|64]+ne[t>>24&255]+"-"+ne[e&63|128]+ne[e>>8&255]+"-"+ne[e>>16&255]+ne[e>>24&255]+ne[n&255]+ne[n>>8&255]+ne[n>>16&255]+ne[n>>24&255]).toLowerCase()}function de(r,t,e){return Math.max(t,Math.min(e,r))}function Tl(r,t){return(r%t+t)%t}function ir(r,t,e){return(1-e)*r+e*t}function ua(r){return(r&r-1)===0&&r!==0}function Dr(r){return Math.pow(2,Math.floor(Math.log(r)/Math.LN2))}function Ji(r,t){switch(t.constructor){case Float32Array:return r;case Uint16Array:return r/65535;case Uint8Array:return r/255;case Int16Array:return Math.max(r/32767,-1);case Int8Array:return Math.max(r/127,-1);default:throw new Error("Invalid component type.")}}function Me(r,t){switch(t.constructor){case Float32Array:return r;case Uint16Array:return Math.round(r*65535);case Uint8Array:return Math.round(r*255);case Int16Array:return Math.round(r*32767);case Int8Array:return Math.round(r*127);default:throw new Error("Invalid component type.")}}var At=class{constructor(t=0,e=0){At.prototype.isVector2=!0,this.x=t,this.y=e}get width(){return this.x}set width(t){this.x=t}get height(){return this.y}set height(t){this.y=t}set(t,e){return this.x=t,this.y=e,this}setScalar(t){return this.x=t,this.y=t,this}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setComponent(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;default:throw new Error("index is out of range: "+t)}return this}getComponent(t){switch(t){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+t)}}clone(){return new this.constructor(this.x,this.y)}copy(t){return this.x=t.x,this.y=t.y,this}add(t){return this.x+=t.x,this.y+=t.y,this}addScalar(t){return this.x+=t,this.y+=t,this}addVectors(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this}addScaledVector(t,e){return this.x+=t.x*e,this.y+=t.y*e,this}sub(t){return this.x-=t.x,this.y-=t.y,this}subScalar(t){return this.x-=t,this.y-=t,this}subVectors(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this}multiply(t){return this.x*=t.x,this.y*=t.y,this}multiplyScalar(t){return this.x*=t,this.y*=t,this}divide(t){return this.x/=t.x,this.y/=t.y,this}divideScalar(t){return this.multiplyScalar(1/t)}applyMatrix3(t){let e=this.x,n=this.y,i=t.elements;return this.x=i[0]*e+i[3]*n+i[6],this.y=i[1]*e+i[4]*n+i[7],this}min(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this}max(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this}clamp(t,e){return this.x=Math.max(t.x,Math.min(e.x,this.x)),this.y=Math.max(t.y,Math.min(e.y,this.y)),this}clampScalar(t,e){return this.x=Math.max(t,Math.min(e,this.x)),this.y=Math.max(t,Math.min(e,this.y)),this}clampLength(t,e){let n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(t,Math.min(e,n)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}roundToZero(){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(){return this.x=-this.x,this.y=-this.y,this}dot(t){return this.x*t.x+this.y*t.y}cross(t){return this.x*t.y-this.y*t.x}lengthSq(){return this.x*this.x+this.y*this.y}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)}normalize(){return this.divideScalar(this.length()||1)}angle(){return Math.atan2(-this.y,-this.x)+Math.PI}distanceTo(t){return Math.sqrt(this.distanceToSquared(t))}distanceToSquared(t){let e=this.x-t.x,n=this.y-t.y;return e*e+n*n}manhattanDistanceTo(t){return Math.abs(this.x-t.x)+Math.abs(this.y-t.y)}setLength(t){return this.normalize().multiplyScalar(t)}lerp(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this}lerpVectors(t,e,n){return this.x=t.x+(e.x-t.x)*n,this.y=t.y+(e.y-t.y)*n,this}equals(t){return t.x===this.x&&t.y===this.y}fromArray(t,e=0){return this.x=t[e],this.y=t[e+1],this}toArray(t=[],e=0){return t[e]=this.x,t[e+1]=this.y,t}fromBufferAttribute(t,e){return this.x=t.getX(e),this.y=t.getY(e),this}rotateAround(t,e){let n=Math.cos(e),i=Math.sin(e),s=this.x-t.x,a=this.y-t.y;return this.x=s*n-a*i+t.x,this.y=s*i+a*n+t.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y}},le=class{constructor(){le.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1]}set(t,e,n,i,s,a,o,c,l){let h=this.elements;return h[0]=t,h[1]=i,h[2]=o,h[3]=e,h[4]=s,h[5]=c,h[6]=n,h[7]=a,h[8]=l,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(t){let e=this.elements,n=t.elements;return e[0]=n[0],e[1]=n[1],e[2]=n[2],e[3]=n[3],e[4]=n[4],e[5]=n[5],e[6]=n[6],e[7]=n[7],e[8]=n[8],this}extractBasis(t,e,n){return t.setFromMatrix3Column(this,0),e.setFromMatrix3Column(this,1),n.setFromMatrix3Column(this,2),this}setFromMatrix4(t){let e=t.elements;return this.set(e[0],e[4],e[8],e[1],e[5],e[9],e[2],e[6],e[10]),this}multiply(t){return this.multiplyMatrices(this,t)}premultiply(t){return this.multiplyMatrices(t,this)}multiplyMatrices(t,e){let n=t.elements,i=e.elements,s=this.elements,a=n[0],o=n[3],c=n[6],l=n[1],h=n[4],f=n[7],u=n[2],m=n[5],x=n[8],p=i[0],d=i[3],g=i[6],M=i[1],_=i[4],v=i[7],b=i[2],A=i[5],C=i[8];return s[0]=a*p+o*M+c*b,s[3]=a*d+o*_+c*A,s[6]=a*g+o*v+c*C,s[1]=l*p+h*M+f*b,s[4]=l*d+h*_+f*A,s[7]=l*g+h*v+f*C,s[2]=u*p+m*M+x*b,s[5]=u*d+m*_+x*A,s[8]=u*g+m*v+x*C,this}multiplyScalar(t){let e=this.elements;return e[0]*=t,e[3]*=t,e[6]*=t,e[1]*=t,e[4]*=t,e[7]*=t,e[2]*=t,e[5]*=t,e[8]*=t,this}determinant(){let t=this.elements,e=t[0],n=t[1],i=t[2],s=t[3],a=t[4],o=t[5],c=t[6],l=t[7],h=t[8];return e*a*h-e*o*l-n*s*h+n*o*c+i*s*l-i*a*c}invert(){let t=this.elements,e=t[0],n=t[1],i=t[2],s=t[3],a=t[4],o=t[5],c=t[6],l=t[7],h=t[8],f=h*a-o*l,u=o*c-h*s,m=l*s-a*c,x=e*f+n*u+i*m;if(x===0)return this.set(0,0,0,0,0,0,0,0,0);let p=1/x;return t[0]=f*p,t[1]=(i*l-h*n)*p,t[2]=(o*n-i*a)*p,t[3]=u*p,t[4]=(h*e-i*c)*p,t[5]=(i*s-o*e)*p,t[6]=m*p,t[7]=(n*c-l*e)*p,t[8]=(a*e-n*s)*p,this}transpose(){let t,e=this.elements;return t=e[1],e[1]=e[3],e[3]=t,t=e[2],e[2]=e[6],e[6]=t,t=e[5],e[5]=e[7],e[7]=t,this}getNormalMatrix(t){return this.setFromMatrix4(t).invert().transpose()}transposeIntoArray(t){let e=this.elements;return t[0]=e[0],t[1]=e[3],t[2]=e[6],t[3]=e[1],t[4]=e[4],t[5]=e[7],t[6]=e[2],t[7]=e[5],t[8]=e[8],this}setUvTransform(t,e,n,i,s,a,o){let c=Math.cos(s),l=Math.sin(s);return this.set(n*c,n*l,-n*(c*a+l*o)+a+t,-i*l,i*c,-i*(-l*a+c*o)+o+e,0,0,1),this}scale(t,e){return this.premultiply(sr.makeScale(t,e)),this}rotate(t){return this.premultiply(sr.makeRotation(-t)),this}translate(t,e){return this.premultiply(sr.makeTranslation(t,e)),this}makeTranslation(t,e){return this.set(1,0,t,0,1,e,0,0,1),this}makeRotation(t){let e=Math.cos(t),n=Math.sin(t);return this.set(e,-n,0,n,e,0,0,0,1),this}makeScale(t,e){return this.set(t,0,0,0,e,0,0,0,1),this}equals(t){let e=this.elements,n=t.elements;for(let i=0;i<9;i++)if(e[i]!==n[i])return!1;return!0}fromArray(t,e=0){for(let n=0;n<9;n++)this.elements[n]=t[n+e];return this}toArray(t=[],e=0){let n=this.elements;return t[e]=n[0],t[e+1]=n[1],t[e+2]=n[2],t[e+3]=n[3],t[e+4]=n[4],t[e+5]=n[5],t[e+6]=n[6],t[e+7]=n[7],t[e+8]=n[8],t}clone(){return new this.constructor().fromArray(this.elements)}},sr=new le;function $a(r){for(let t=r.length-1;t>=0;--t)if(r[t]>=65535)return!0;return!1}function ys(r){return document.createElementNS("http://www.w3.org/1999/xhtml",r)}function In(r){return r<.04045?r*.0773993808:Math.pow(r*.9478672986+.0521327014,2.4)}function gs(r){return r<.0031308?r*12.92:1.055*Math.pow(r,.41666)-.055}var rr={[Ge]:{[Ui]:In},[Ui]:{[Ge]:gs}},oe={legacyMode:!0,get workingColorSpace(){return Ui},set workingColorSpace(r){console.warn("THREE.ColorManagement: .workingColorSpace is readonly.")},convert:function(r,t,e){if(this.legacyMode||t===e||!t||!e)return r;if(rr[t]&&rr[t][e]!==void 0){let n=rr[t][e];return r.r=n(r.r),r.g=n(r.g),r.b=n(r.b),r}throw new Error("Unsupported color space conversion.")},fromWorkingColorSpace:function(r,t){return this.convert(r,this.workingColorSpace,t)},toWorkingColorSpace:function(r,t){return this.convert(r,t,this.workingColorSpace)}},Ka={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074},qt={r:0,g:0,b:0},Ne={h:0,s:0,l:0},$i={h:0,s:0,l:0};function or(r,t,e){return e<0&&(e+=1),e>1&&(e-=1),e<1/6?r+(t-r)*6*e:e<1/2?t:e<2/3?r+(t-r)*6*(2/3-e):r}function Ki(r,t){return t.r=r.r,t.g=r.g,t.b=r.b,t}var Bt=class{constructor(t,e,n){return this.isColor=!0,this.r=1,this.g=1,this.b=1,e===void 0&&n===void 0?this.set(t):this.setRGB(t,e,n)}set(t){return t&&t.isColor?this.copy(t):typeof t=="number"?this.setHex(t):typeof t=="string"&&this.setStyle(t),this}setScalar(t){return this.r=t,this.g=t,this.b=t,this}setHex(t,e=Ge){return t=Math.floor(t),this.r=(t>>16&255)/255,this.g=(t>>8&255)/255,this.b=(t&255)/255,oe.toWorkingColorSpace(this,e),this}setRGB(t,e,n,i=oe.workingColorSpace){return this.r=t,this.g=e,this.b=n,oe.toWorkingColorSpace(this,i),this}setHSL(t,e,n,i=oe.workingColorSpace){if(t=Tl(t,1),e=de(e,0,1),n=de(n,0,1),e===0)this.r=this.g=this.b=n;else{let s=n<=.5?n*(1+e):n+e-n*e,a=2*n-s;this.r=or(a,s,t+1/3),this.g=or(a,s,t),this.b=or(a,s,t-1/3)}return oe.toWorkingColorSpace(this,i),this}setStyle(t,e=Ge){function n(s){s!==void 0&&parseFloat(s)<1&&console.warn("THREE.Color: Alpha component of "+t+" will be ignored.")}let i;if(i=/^((?:rgb|hsl)a?)\\(([^\\)]*)\\)/.exec(t)){let s,a=i[1],o=i[2];switch(a){case"rgb":case"rgba":if(s=/^\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec(o))return this.r=Math.min(255,parseInt(s[1],10))/255,this.g=Math.min(255,parseInt(s[2],10))/255,this.b=Math.min(255,parseInt(s[3],10))/255,oe.toWorkingColorSpace(this,e),n(s[4]),this;if(s=/^\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec(o))return this.r=Math.min(100,parseInt(s[1],10))/100,this.g=Math.min(100,parseInt(s[2],10))/100,this.b=Math.min(100,parseInt(s[3],10))/100,oe.toWorkingColorSpace(this,e),n(s[4]),this;break;case"hsl":case"hsla":if(s=/^\\s*(\\d*\\.?\\d+)\\s*,\\s*(\\d*\\.?\\d+)\\%\\s*,\\s*(\\d*\\.?\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec(o)){let c=parseFloat(s[1])/360,l=parseFloat(s[2])/100,h=parseFloat(s[3])/100;return n(s[4]),this.setHSL(c,l,h,e)}break}}else if(i=/^\\#([A-Fa-f\\d]+)$/.exec(t)){let s=i[1],a=s.length;if(a===3)return this.r=parseInt(s.charAt(0)+s.charAt(0),16)/255,this.g=parseInt(s.charAt(1)+s.charAt(1),16)/255,this.b=parseInt(s.charAt(2)+s.charAt(2),16)/255,oe.toWorkingColorSpace(this,e),this;if(a===6)return this.r=parseInt(s.charAt(0)+s.charAt(1),16)/255,this.g=parseInt(s.charAt(2)+s.charAt(3),16)/255,this.b=parseInt(s.charAt(4)+s.charAt(5),16)/255,oe.toWorkingColorSpace(this,e),this}return t&&t.length>0?this.setColorName(t,e):this}setColorName(t,e=Ge){let n=Ka[t.toLowerCase()];return n!==void 0?this.setHex(n,e):console.warn("THREE.Color: Unknown color "+t),this}clone(){return new this.constructor(this.r,this.g,this.b)}copy(t){return this.r=t.r,this.g=t.g,this.b=t.b,this}copySRGBToLinear(t){return this.r=In(t.r),this.g=In(t.g),this.b=In(t.b),this}copyLinearToSRGB(t){return this.r=gs(t.r),this.g=gs(t.g),this.b=gs(t.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(t=Ge){return oe.fromWorkingColorSpace(Ki(this,qt),t),de(qt.r*255,0,255)<<16^de(qt.g*255,0,255)<<8^de(qt.b*255,0,255)<<0}getHexString(t=Ge){return("000000"+this.getHex(t).toString(16)).slice(-6)}getHSL(t,e=oe.workingColorSpace){oe.fromWorkingColorSpace(Ki(this,qt),e);let n=qt.r,i=qt.g,s=qt.b,a=Math.max(n,i,s),o=Math.min(n,i,s),c,l,h=(o+a)/2;if(o===a)c=0,l=0;else{let f=a-o;switch(l=h<=.5?f/(a+o):f/(2-a-o),a){case n:c=(i-s)/f+(i2048||e.height>2048?(console.warn("THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons",t),e.toDataURL("image/jpeg",.6)):e.toDataURL("image/png")}static sRGBToLinear(t){if(typeof HTMLImageElement!="undefined"&&t instanceof HTMLImageElement||typeof HTMLCanvasElement!="undefined"&&t instanceof HTMLCanvasElement||typeof ImageBitmap!="undefined"&&t instanceof ImageBitmap){let e=ys("canvas");e.width=t.width,e.height=t.height;let n=e.getContext("2d");n.drawImage(t,0,0,t.width,t.height);let i=n.getImageData(0,0,t.width,t.height),s=i.data;for(let a=0;a0&&(n.userData=this.userData),e||(t.textures[this.uuid]=n),n}dispose(){this.dispatchEvent({type:"dispose"})}transformUv(t){if(this.mapping!==Za)return t;if(t.applyMatrix3(this.matrix),t.x<0||t.x>1)switch(this.wrapS){case Rr:t.x=t.x-Math.floor(t.x);break;case Oe:t.x=t.x<0?0:1;break;case Lr:Math.abs(Math.floor(t.x)%2)===1?t.x=Math.ceil(t.x)-t.x:t.x=t.x-Math.floor(t.x);break}if(t.y<0||t.y>1)switch(this.wrapT){case Rr:t.y=t.y-Math.floor(t.y);break;case Oe:t.y=t.y<0?0:1;break;case Lr:Math.abs(Math.floor(t.y)%2)===1?t.y=Math.ceil(t.y)-t.y:t.y=t.y-Math.floor(t.y);break}return this.flipY&&(t.y=1-t.y),t}set needsUpdate(t){t===!0&&(this.version++,this.source.needsUpdate=!0)}};ue.DEFAULT_IMAGE=null;ue.DEFAULT_MAPPING=Za;ue.DEFAULT_ANISOTROPY=1;var Xt=class{constructor(t=0,e=0,n=0,i=1){Xt.prototype.isVector4=!0,this.x=t,this.y=e,this.z=n,this.w=i}get width(){return this.z}set width(t){this.z=t}get height(){return this.w}set height(t){this.w=t}set(t,e,n,i){return this.x=t,this.y=e,this.z=n,this.w=i,this}setScalar(t){return this.x=t,this.y=t,this.z=t,this.w=t,this}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setZ(t){return this.z=t,this}setW(t){return this.w=t,this}setComponent(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;case 2:this.z=e;break;case 3:this.w=e;break;default:throw new Error("index is out of range: "+t)}return this}getComponent(t){switch(t){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: "+t)}}clone(){return new this.constructor(this.x,this.y,this.z,this.w)}copy(t){return this.x=t.x,this.y=t.y,this.z=t.z,this.w=t.w!==void 0?t.w:1,this}add(t){return this.x+=t.x,this.y+=t.y,this.z+=t.z,this.w+=t.w,this}addScalar(t){return this.x+=t,this.y+=t,this.z+=t,this.w+=t,this}addVectors(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this.z=t.z+e.z,this.w=t.w+e.w,this}addScaledVector(t,e){return this.x+=t.x*e,this.y+=t.y*e,this.z+=t.z*e,this.w+=t.w*e,this}sub(t){return this.x-=t.x,this.y-=t.y,this.z-=t.z,this.w-=t.w,this}subScalar(t){return this.x-=t,this.y-=t,this.z-=t,this.w-=t,this}subVectors(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this.z=t.z-e.z,this.w=t.w-e.w,this}multiply(t){return this.x*=t.x,this.y*=t.y,this.z*=t.z,this.w*=t.w,this}multiplyScalar(t){return this.x*=t,this.y*=t,this.z*=t,this.w*=t,this}applyMatrix4(t){let e=this.x,n=this.y,i=this.z,s=this.w,a=t.elements;return this.x=a[0]*e+a[4]*n+a[8]*i+a[12]*s,this.y=a[1]*e+a[5]*n+a[9]*i+a[13]*s,this.z=a[2]*e+a[6]*n+a[10]*i+a[14]*s,this.w=a[3]*e+a[7]*n+a[11]*i+a[15]*s,this}divideScalar(t){return this.multiplyScalar(1/t)}setAxisAngleFromQuaternion(t){this.w=2*Math.acos(t.w);let e=Math.sqrt(1-t.w*t.w);return e<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=t.x/e,this.y=t.y/e,this.z=t.z/e),this}setAxisAngleFromRotationMatrix(t){let e,n,i,s,c=t.elements,l=c[0],h=c[4],f=c[8],u=c[1],m=c[5],x=c[9],p=c[2],d=c[6],g=c[10];if(Math.abs(h-u)<.01&&Math.abs(f-p)<.01&&Math.abs(x-d)<.01){if(Math.abs(h+u)<.1&&Math.abs(f+p)<.1&&Math.abs(x+d)<.1&&Math.abs(l+m+g-3)<.1)return this.set(1,0,0,0),this;e=Math.PI;let _=(l+1)/2,v=(m+1)/2,b=(g+1)/2,A=(h+u)/4,C=(f+p)/4,y=(x+d)/4;return _>v&&_>b?_<.01?(n=0,i=.707106781,s=.707106781):(n=Math.sqrt(_),i=A/n,s=C/n):v>b?v<.01?(n=.707106781,i=0,s=.707106781):(i=Math.sqrt(v),n=A/i,s=y/i):b<.01?(n=.707106781,i=.707106781,s=0):(s=Math.sqrt(b),n=C/s,i=y/s),this.set(n,i,s,e),this}let M=Math.sqrt((d-x)*(d-x)+(f-p)*(f-p)+(u-h)*(u-h));return Math.abs(M)<.001&&(M=1),this.x=(d-x)/M,this.y=(f-p)/M,this.z=(u-h)/M,this.w=Math.acos((l+m+g-1)/2),this}min(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this.z=Math.min(this.z,t.z),this.w=Math.min(this.w,t.w),this}max(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this.z=Math.max(this.z,t.z),this.w=Math.max(this.w,t.w),this}clamp(t,e){return this.x=Math.max(t.x,Math.min(e.x,this.x)),this.y=Math.max(t.y,Math.min(e.y,this.y)),this.z=Math.max(t.z,Math.min(e.z,this.z)),this.w=Math.max(t.w,Math.min(e.w,this.w)),this}clampScalar(t,e){return this.x=Math.max(t,Math.min(e,this.x)),this.y=Math.max(t,Math.min(e,this.y)),this.z=Math.max(t,Math.min(e,this.z)),this.w=Math.max(t,Math.min(e,this.w)),this}clampLength(t,e){let n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(t,Math.min(e,n)))}floor(){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(){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(){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(){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(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this.w=-this.w,this}dot(t){return this.x*t.x+this.y*t.y+this.z*t.z+this.w*t.w}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)}normalize(){return this.divideScalar(this.length()||1)}setLength(t){return this.normalize().multiplyScalar(t)}lerp(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.w+=(t.w-this.w)*e,this}lerpVectors(t,e,n){return this.x=t.x+(e.x-t.x)*n,this.y=t.y+(e.y-t.y)*n,this.z=t.z+(e.z-t.z)*n,this.w=t.w+(e.w-t.w)*n,this}equals(t){return t.x===this.x&&t.y===this.y&&t.z===this.z&&t.w===this.w}fromArray(t,e=0){return this.x=t[e],this.y=t[e+1],this.z=t[e+2],this.w=t[e+3],this}toArray(t=[],e=0){return t[e]=this.x,t[e+1]=this.y,t[e+2]=this.z,t[e+3]=this.w,t}fromBufferAttribute(t,e){return this.x=t.getX(e),this.y=t.getY(e),this.z=t.getZ(e),this.w=t.getW(e),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this.w=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z,yield this.w}},rn=class extends mn{constructor(t=1,e=1,n={}){super(),this.isWebGLRenderTarget=!0,this.width=t,this.height=e,this.depth=1,this.scissor=new Xt(0,0,t,e),this.scissorTest=!1,this.viewport=new Xt(0,0,t,e);let i={width:t,height:e,depth:1};this.texture=new ue(i,n.mapping,n.wrapS,n.wrapT,n.magFilter,n.minFilter,n.format,n.type,n.anisotropy,n.encoding),this.texture.isRenderTargetTexture=!0,this.texture.flipY=!1,this.texture.generateMipmaps=n.generateMipmaps!==void 0?n.generateMipmaps:!1,this.texture.internalFormat=n.internalFormat!==void 0?n.internalFormat:null,this.texture.minFilter=n.minFilter!==void 0?n.minFilter:Re,this.depthBuffer=n.depthBuffer!==void 0?n.depthBuffer:!0,this.stencilBuffer=n.stencilBuffer!==void 0?n.stencilBuffer:!1,this.depthTexture=n.depthTexture!==void 0?n.depthTexture:null,this.samples=n.samples!==void 0?n.samples:0}setSize(t,e,n=1){(this.width!==t||this.height!==e||this.depth!==n)&&(this.width=t,this.height=e,this.depth=n,this.texture.image.width=t,this.texture.image.height=e,this.texture.image.depth=n,this.dispose()),this.viewport.set(0,0,t,e),this.scissor.set(0,0,t,e)}clone(){return new this.constructor().copy(this)}copy(t){this.width=t.width,this.height=t.height,this.depth=t.depth,this.viewport.copy(t.viewport),this.texture=t.texture.clone(),this.texture.isRenderTargetTexture=!0;let e=Object.assign({},t.texture.image);return this.texture.source=new Ms(e),this.depthBuffer=t.depthBuffer,this.stencilBuffer=t.stencilBuffer,t.depthTexture!==null&&(this.depthTexture=t.depthTexture.clone()),this.samples=t.samples,this}dispose(){this.dispatchEvent({type:"dispose"})}},bs=class extends ue{constructor(t=null,e=1,n=1,i=1){super(null),this.isDataArrayTexture=!0,this.image={data:t,width:e,height:n,depth:i},this.magFilter=ce,this.minFilter=ce,this.wrapR=Oe,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}};var Nr=class extends ue{constructor(t=null,e=1,n=1,i=1){super(null),this.isData3DTexture=!0,this.image={data:t,width:e,height:n,depth:i},this.magFilter=ce,this.minFilter=ce,this.wrapR=Oe,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}};var gn=class{constructor(t=0,e=0,n=0,i=1){this.isQuaternion=!0,this._x=t,this._y=e,this._z=n,this._w=i}static slerpFlat(t,e,n,i,s,a,o){let c=n[i+0],l=n[i+1],h=n[i+2],f=n[i+3],u=s[a+0],m=s[a+1],x=s[a+2],p=s[a+3];if(o===0){t[e+0]=c,t[e+1]=l,t[e+2]=h,t[e+3]=f;return}if(o===1){t[e+0]=u,t[e+1]=m,t[e+2]=x,t[e+3]=p;return}if(f!==p||c!==u||l!==m||h!==x){let d=1-o,g=c*u+l*m+h*x+f*p,M=g>=0?1:-1,_=1-g*g;if(_>Number.EPSILON){let b=Math.sqrt(_),A=Math.atan2(b,g*M);d=Math.sin(d*A)/b,o=Math.sin(o*A)/b}let v=o*M;if(c=c*d+u*v,l=l*d+m*v,h=h*d+x*v,f=f*d+p*v,d===1-o){let b=1/Math.sqrt(c*c+l*l+h*h+f*f);c*=b,l*=b,h*=b,f*=b}}t[e]=c,t[e+1]=l,t[e+2]=h,t[e+3]=f}static multiplyQuaternionsFlat(t,e,n,i,s,a){let o=n[i],c=n[i+1],l=n[i+2],h=n[i+3],f=s[a],u=s[a+1],m=s[a+2],x=s[a+3];return t[e]=o*x+h*f+c*m-l*u,t[e+1]=c*x+h*u+l*f-o*m,t[e+2]=l*x+h*m+o*u-c*f,t[e+3]=h*x-o*f-c*u-l*m,t}get x(){return this._x}set x(t){this._x=t,this._onChangeCallback()}get y(){return this._y}set y(t){this._y=t,this._onChangeCallback()}get z(){return this._z}set z(t){this._z=t,this._onChangeCallback()}get w(){return this._w}set w(t){this._w=t,this._onChangeCallback()}set(t,e,n,i){return this._x=t,this._y=e,this._z=n,this._w=i,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._w)}copy(t){return this._x=t.x,this._y=t.y,this._z=t.z,this._w=t.w,this._onChangeCallback(),this}setFromEuler(t,e){let n=t._x,i=t._y,s=t._z,a=t._order,o=Math.cos,c=Math.sin,l=o(n/2),h=o(i/2),f=o(s/2),u=c(n/2),m=c(i/2),x=c(s/2);switch(a){case"XYZ":this._x=u*h*f+l*m*x,this._y=l*m*f-u*h*x,this._z=l*h*x+u*m*f,this._w=l*h*f-u*m*x;break;case"YXZ":this._x=u*h*f+l*m*x,this._y=l*m*f-u*h*x,this._z=l*h*x-u*m*f,this._w=l*h*f+u*m*x;break;case"ZXY":this._x=u*h*f-l*m*x,this._y=l*m*f+u*h*x,this._z=l*h*x+u*m*f,this._w=l*h*f-u*m*x;break;case"ZYX":this._x=u*h*f-l*m*x,this._y=l*m*f+u*h*x,this._z=l*h*x-u*m*f,this._w=l*h*f+u*m*x;break;case"YZX":this._x=u*h*f+l*m*x,this._y=l*m*f+u*h*x,this._z=l*h*x-u*m*f,this._w=l*h*f-u*m*x;break;case"XZY":this._x=u*h*f-l*m*x,this._y=l*m*f-u*h*x,this._z=l*h*x+u*m*f,this._w=l*h*f+u*m*x;break;default:console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: "+a)}return e!==!1&&this._onChangeCallback(),this}setFromAxisAngle(t,e){let n=e/2,i=Math.sin(n);return this._x=t.x*i,this._y=t.y*i,this._z=t.z*i,this._w=Math.cos(n),this._onChangeCallback(),this}setFromRotationMatrix(t){let e=t.elements,n=e[0],i=e[4],s=e[8],a=e[1],o=e[5],c=e[9],l=e[2],h=e[6],f=e[10],u=n+o+f;if(u>0){let m=.5/Math.sqrt(u+1);this._w=.25/m,this._x=(h-c)*m,this._y=(s-l)*m,this._z=(a-i)*m}else if(n>o&&n>f){let m=2*Math.sqrt(1+n-o-f);this._w=(h-c)/m,this._x=.25*m,this._y=(i+a)/m,this._z=(s+l)/m}else if(o>f){let m=2*Math.sqrt(1+o-n-f);this._w=(s-l)/m,this._x=(i+a)/m,this._y=.25*m,this._z=(c+h)/m}else{let m=2*Math.sqrt(1+f-n-o);this._w=(a-i)/m,this._x=(s+l)/m,this._y=(c+h)/m,this._z=.25*m}return this._onChangeCallback(),this}setFromUnitVectors(t,e){let n=t.dot(e)+1;return nMath.abs(t.z)?(this._x=-t.y,this._y=t.x,this._z=0,this._w=n):(this._x=0,this._y=-t.z,this._z=t.y,this._w=n)):(this._x=t.y*e.z-t.z*e.y,this._y=t.z*e.x-t.x*e.z,this._z=t.x*e.y-t.y*e.x,this._w=n),this.normalize()}angleTo(t){return 2*Math.acos(Math.abs(de(this.dot(t),-1,1)))}rotateTowards(t,e){let n=this.angleTo(t);if(n===0)return this;let i=Math.min(1,e/n);return this.slerp(t,i),this}identity(){return this.set(0,0,0,1)}invert(){return this.conjugate()}conjugate(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this}dot(t){return this._x*t._x+this._y*t._y+this._z*t._z+this._w*t._w}lengthSq(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}length(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)}normalize(){let t=this.length();return t===0?(this._x=0,this._y=0,this._z=0,this._w=1):(t=1/t,this._x=this._x*t,this._y=this._y*t,this._z=this._z*t,this._w=this._w*t),this._onChangeCallback(),this}multiply(t){return this.multiplyQuaternions(this,t)}premultiply(t){return this.multiplyQuaternions(t,this)}multiplyQuaternions(t,e){let n=t._x,i=t._y,s=t._z,a=t._w,o=e._x,c=e._y,l=e._z,h=e._w;return this._x=n*h+a*o+i*l-s*c,this._y=i*h+a*c+s*o-n*l,this._z=s*h+a*l+n*c-i*o,this._w=a*h-n*o-i*c-s*l,this._onChangeCallback(),this}slerp(t,e){if(e===0)return this;if(e===1)return this.copy(t);let n=this._x,i=this._y,s=this._z,a=this._w,o=a*t._w+n*t._x+i*t._y+s*t._z;if(o<0?(this._w=-t._w,this._x=-t._x,this._y=-t._y,this._z=-t._z,o=-o):this.copy(t),o>=1)return this._w=a,this._x=n,this._y=i,this._z=s,this;let c=1-o*o;if(c<=Number.EPSILON){let m=1-e;return this._w=m*a+e*this._w,this._x=m*n+e*this._x,this._y=m*i+e*this._y,this._z=m*s+e*this._z,this.normalize(),this._onChangeCallback(),this}let l=Math.sqrt(c),h=Math.atan2(l,o),f=Math.sin((1-e)*h)/l,u=Math.sin(e*h)/l;return this._w=a*f+this._w*u,this._x=n*f+this._x*u,this._y=i*f+this._y*u,this._z=s*f+this._z*u,this._onChangeCallback(),this}slerpQuaternions(t,e,n){return this.copy(t).slerp(e,n)}random(){let t=Math.random(),e=Math.sqrt(1-t),n=Math.sqrt(t),i=2*Math.PI*Math.random(),s=2*Math.PI*Math.random();return this.set(e*Math.cos(i),n*Math.sin(s),n*Math.cos(s),e*Math.sin(i))}equals(t){return t._x===this._x&&t._y===this._y&&t._z===this._z&&t._w===this._w}fromArray(t,e=0){return this._x=t[e],this._y=t[e+1],this._z=t[e+2],this._w=t[e+3],this._onChangeCallback(),this}toArray(t=[],e=0){return t[e]=this._x,t[e+1]=this._y,t[e+2]=this._z,t[e+3]=this._w,t}fromBufferAttribute(t,e){return this._x=t.getX(e),this._y=t.getY(e),this._z=t.getZ(e),this._w=t.getW(e),this}_onChange(t){return this._onChangeCallback=t,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}},R=class{constructor(t=0,e=0,n=0){R.prototype.isVector3=!0,this.x=t,this.y=e,this.z=n}set(t,e,n){return n===void 0&&(n=this.z),this.x=t,this.y=e,this.z=n,this}setScalar(t){return this.x=t,this.y=t,this.z=t,this}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setZ(t){return this.z=t,this}setComponent(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)}return this}getComponent(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(){return new this.constructor(this.x,this.y,this.z)}copy(t){return this.x=t.x,this.y=t.y,this.z=t.z,this}add(t){return this.x+=t.x,this.y+=t.y,this.z+=t.z,this}addScalar(t){return this.x+=t,this.y+=t,this.z+=t,this}addVectors(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this.z=t.z+e.z,this}addScaledVector(t,e){return this.x+=t.x*e,this.y+=t.y*e,this.z+=t.z*e,this}sub(t){return this.x-=t.x,this.y-=t.y,this.z-=t.z,this}subScalar(t){return this.x-=t,this.y-=t,this.z-=t,this}subVectors(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this.z=t.z-e.z,this}multiply(t){return this.x*=t.x,this.y*=t.y,this.z*=t.z,this}multiplyScalar(t){return this.x*=t,this.y*=t,this.z*=t,this}multiplyVectors(t,e){return this.x=t.x*e.x,this.y=t.y*e.y,this.z=t.z*e.z,this}applyEuler(t){return this.applyQuaternion(fa.setFromEuler(t))}applyAxisAngle(t,e){return this.applyQuaternion(fa.setFromAxisAngle(t,e))}applyMatrix3(t){let e=this.x,n=this.y,i=this.z,s=t.elements;return this.x=s[0]*e+s[3]*n+s[6]*i,this.y=s[1]*e+s[4]*n+s[7]*i,this.z=s[2]*e+s[5]*n+s[8]*i,this}applyNormalMatrix(t){return this.applyMatrix3(t).normalize()}applyMatrix4(t){let e=this.x,n=this.y,i=this.z,s=t.elements,a=1/(s[3]*e+s[7]*n+s[11]*i+s[15]);return this.x=(s[0]*e+s[4]*n+s[8]*i+s[12])*a,this.y=(s[1]*e+s[5]*n+s[9]*i+s[13])*a,this.z=(s[2]*e+s[6]*n+s[10]*i+s[14])*a,this}applyQuaternion(t){let e=this.x,n=this.y,i=this.z,s=t.x,a=t.y,o=t.z,c=t.w,l=c*e+a*i-o*n,h=c*n+o*e-s*i,f=c*i+s*n-a*e,u=-s*e-a*n-o*i;return this.x=l*c+u*-s+h*-o-f*-a,this.y=h*c+u*-a+f*-s-l*-o,this.z=f*c+u*-o+l*-a-h*-s,this}project(t){return this.applyMatrix4(t.matrixWorldInverse).applyMatrix4(t.projectionMatrix)}unproject(t){return this.applyMatrix4(t.projectionMatrixInverse).applyMatrix4(t.matrixWorld)}transformDirection(t){let e=this.x,n=this.y,i=this.z,s=t.elements;return this.x=s[0]*e+s[4]*n+s[8]*i,this.y=s[1]*e+s[5]*n+s[9]*i,this.z=s[2]*e+s[6]*n+s[10]*i,this.normalize()}divide(t){return this.x/=t.x,this.y/=t.y,this.z/=t.z,this}divideScalar(t){return this.multiplyScalar(1/t)}min(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this.z=Math.min(this.z,t.z),this}max(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this.z=Math.max(this.z,t.z),this}clamp(t,e){return this.x=Math.max(t.x,Math.min(e.x,this.x)),this.y=Math.max(t.y,Math.min(e.y,this.y)),this.z=Math.max(t.z,Math.min(e.z,this.z)),this}clampScalar(t,e){return this.x=Math.max(t,Math.min(e,this.x)),this.y=Math.max(t,Math.min(e,this.y)),this.z=Math.max(t,Math.min(e,this.z)),this}clampLength(t,e){let n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(t,Math.min(e,n)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}roundToZero(){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(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(t){return this.x*t.x+this.y*t.y+this.z*t.z}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(t){return this.normalize().multiplyScalar(t)}lerp(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(t,e,n){return this.x=t.x+(e.x-t.x)*n,this.y=t.y+(e.y-t.y)*n,this.z=t.z+(e.z-t.z)*n,this}cross(t){return this.crossVectors(this,t)}crossVectors(t,e){let n=t.x,i=t.y,s=t.z,a=e.x,o=e.y,c=e.z;return this.x=i*c-s*o,this.y=s*a-n*c,this.z=n*o-i*a,this}projectOnVector(t){let e=t.lengthSq();if(e===0)return this.set(0,0,0);let n=t.dot(this)/e;return this.copy(t).multiplyScalar(n)}projectOnPlane(t){return cr.copy(this).projectOnVector(t),this.sub(cr)}reflect(t){return this.sub(cr.copy(t).multiplyScalar(2*this.dot(t)))}angleTo(t){let e=Math.sqrt(this.lengthSq()*t.lengthSq());if(e===0)return Math.PI/2;let n=this.dot(t)/e;return Math.acos(de(n,-1,1))}distanceTo(t){return Math.sqrt(this.distanceToSquared(t))}distanceToSquared(t){let e=this.x-t.x,n=this.y-t.y,i=this.z-t.z;return e*e+n*n+i*i}manhattanDistanceTo(t){return Math.abs(this.x-t.x)+Math.abs(this.y-t.y)+Math.abs(this.z-t.z)}setFromSpherical(t){return this.setFromSphericalCoords(t.radius,t.phi,t.theta)}setFromSphericalCoords(t,e,n){let i=Math.sin(e)*t;return this.x=i*Math.sin(n),this.y=Math.cos(e)*t,this.z=i*Math.cos(n),this}setFromCylindrical(t){return this.setFromCylindricalCoords(t.radius,t.theta,t.y)}setFromCylindricalCoords(t,e,n){return this.x=t*Math.sin(e),this.y=n,this.z=t*Math.cos(e),this}setFromMatrixPosition(t){let e=t.elements;return this.x=e[12],this.y=e[13],this.z=e[14],this}setFromMatrixScale(t){let e=this.setFromMatrixColumn(t,0).length(),n=this.setFromMatrixColumn(t,1).length(),i=this.setFromMatrixColumn(t,2).length();return this.x=e,this.y=n,this.z=i,this}setFromMatrixColumn(t,e){return this.fromArray(t.elements,e*4)}setFromMatrix3Column(t,e){return this.fromArray(t.elements,e*3)}setFromEuler(t){return this.x=t._x,this.y=t._y,this.z=t._z,this}equals(t){return t.x===this.x&&t.y===this.y&&t.z===this.z}fromArray(t,e=0){return this.x=t[e],this.y=t[e+1],this.z=t[e+2],this}toArray(t=[],e=0){return t[e]=this.x,t[e+1]=this.y,t[e+2]=this.z,t}fromBufferAttribute(t,e){return this.x=t.getX(e),this.y=t.getY(e),this.z=t.getZ(e),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){let t=(Math.random()-.5)*2,e=Math.random()*Math.PI*2,n=Math.sqrt(1-t**2);return this.x=n*Math.cos(e),this.y=n*Math.sin(e),this.z=t,this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}},cr=new R,fa=new gn,fe=class{constructor(t=new R(1/0,1/0,1/0),e=new R(-1/0,-1/0,-1/0)){this.isBox3=!0,this.min=t,this.max=e}set(t,e){return this.min.copy(t),this.max.copy(e),this}setFromArray(t){let e=1/0,n=1/0,i=1/0,s=-1/0,a=-1/0,o=-1/0;for(let c=0,l=t.length;cs&&(s=h),f>a&&(a=f),u>o&&(o=u)}return this.min.set(e,n,i),this.max.set(s,a,o),this}setFromBufferAttribute(t){let e=1/0,n=1/0,i=1/0,s=-1/0,a=-1/0,o=-1/0;for(let c=0,l=t.count;cs&&(s=h),f>a&&(a=f),u>o&&(o=u)}return this.min.set(e,n,i),this.max.set(s,a,o),this}setFromPoints(t){this.makeEmpty();for(let e=0,n=t.length;ethis.max.x||t.ythis.max.y||t.zthis.max.z)}containsBox(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(t,e){return e.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))}intersectsBox(t){return!(t.max.xthis.max.x||t.max.ythis.max.y||t.max.zthis.max.z)}intersectsSphere(t){return this.clampPoint(t.center,Sn),Sn.distanceToSquared(t.center)<=t.radius*t.radius}intersectsPlane(t){let e,n;return t.normal.x>0?(e=t.normal.x*this.min.x,n=t.normal.x*this.max.x):(e=t.normal.x*this.max.x,n=t.normal.x*this.min.x),t.normal.y>0?(e+=t.normal.y*this.min.y,n+=t.normal.y*this.max.y):(e+=t.normal.y*this.max.y,n+=t.normal.y*this.min.y),t.normal.z>0?(e+=t.normal.z*this.min.z,n+=t.normal.z*this.max.z):(e+=t.normal.z*this.max.z,n+=t.normal.z*this.min.z),e<=-t.constant&&n>=-t.constant}intersectsTriangle(t){if(this.isEmpty())return!1;this.getCenter(Ei),ji.subVectors(this.max,Ei),Hn.subVectors(t.a,Ei),Wn.subVectors(t.b,Ei),qn.subVectors(t.c,Ei),ln.subVectors(Wn,Hn),hn.subVectors(qn,Wn),Tn.subVectors(Hn,qn);let e=[0,-ln.z,ln.y,0,-hn.z,hn.y,0,-Tn.z,Tn.y,ln.z,0,-ln.x,hn.z,0,-hn.x,Tn.z,0,-Tn.x,-ln.y,ln.x,0,-hn.y,hn.x,0,-Tn.y,Tn.x,0];return!hr(e,Hn,Wn,qn,ji)||(e=[1,0,0,0,1,0,0,0,1],!hr(e,Hn,Wn,qn,ji))?!1:(Qi.crossVectors(ln,hn),e=[Qi.x,Qi.y,Qi.z],hr(e,Hn,Wn,qn,ji))}clampPoint(t,e){return e.copy(t).clamp(this.min,this.max)}distanceToPoint(t){return Sn.copy(t).clamp(this.min,this.max).sub(t).length()}getBoundingSphere(t){return this.getCenter(t.center),t.radius=this.getSize(Sn).length()*.5,t}intersect(t){return this.min.max(t.min),this.max.min(t.max),this.isEmpty()&&this.makeEmpty(),this}union(t){return this.min.min(t.min),this.max.max(t.max),this}applyMatrix4(t){return this.isEmpty()?this:(Ke[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(t),Ke[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(t),Ke[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(t),Ke[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(t),Ke[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(t),Ke[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(t),Ke[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(t),Ke[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(t),this.setFromPoints(Ke),this)}translate(t){return this.min.add(t),this.max.add(t),this}equals(t){return t.min.equals(this.min)&&t.max.equals(this.max)}},Ke=[new R,new R,new R,new R,new R,new R,new R,new R],Sn=new R,lr=new fe,Hn=new R,Wn=new R,qn=new R,ln=new R,hn=new R,Tn=new R,Ei=new R,ji=new R,Qi=new R,An=new R;function hr(r,t,e,n,i){for(let s=0,a=r.length-3;s<=a;s+=3){An.fromArray(r,s);let o=i.x*Math.abs(An.x)+i.y*Math.abs(An.y)+i.z*Math.abs(An.z),c=t.dot(An),l=e.dot(An),h=n.dot(An);if(Math.max(-Math.max(c,l,h),Math.min(c,l,h))>o)return!1}return!0}var El=new fe,Ci=new R,ur=new R,Fn=class{constructor(t=new R,e=-1){this.center=t,this.radius=e}set(t,e){return this.center.copy(t),this.radius=e,this}setFromPoints(t,e){let n=this.center;e!==void 0?n.copy(e):El.setFromPoints(t).getCenter(n);let i=0;for(let s=0,a=t.length;sthis.radius*this.radius&&(e.sub(this.center).normalize(),e.multiplyScalar(this.radius).add(this.center)),e}getBoundingBox(t){return this.isEmpty()?(t.makeEmpty(),t):(t.set(this.center,this.center),t.expandByScalar(this.radius),t)}applyMatrix4(t){return this.center.applyMatrix4(t),this.radius=this.radius*t.getMaxScaleOnAxis(),this}translate(t){return this.center.add(t),this}expandByPoint(t){if(this.isEmpty())return this.center.copy(t),this.radius=0,this;Ci.subVectors(t,this.center);let e=Ci.lengthSq();if(e>this.radius*this.radius){let n=Math.sqrt(e),i=(n-this.radius)*.5;this.center.addScaledVector(Ci,i/n),this.radius+=i}return this}union(t){return t.isEmpty()?this:this.isEmpty()?(this.copy(t),this):(this.center.equals(t.center)===!0?this.radius=Math.max(this.radius,t.radius):(ur.subVectors(t.center,this.center).setLength(t.radius),this.expandByPoint(Ci.copy(t.center).add(ur)),this.expandByPoint(Ci.copy(t.center).sub(ur))),this)}equals(t){return t.center.equals(this.center)&&t.radius===this.radius}clone(){return new this.constructor().copy(this)}},je=new R,fr=new R,ts=new R,un=new R,dr=new R,es=new R,pr=new R,Fr=class{constructor(t=new R,e=new R(0,0,-1)){this.origin=t,this.direction=e}set(t,e){return this.origin.copy(t),this.direction.copy(e),this}copy(t){return this.origin.copy(t.origin),this.direction.copy(t.direction),this}at(t,e){return e.copy(this.direction).multiplyScalar(t).add(this.origin)}lookAt(t){return this.direction.copy(t).sub(this.origin).normalize(),this}recast(t){return this.origin.copy(this.at(t,je)),this}closestPointToPoint(t,e){e.subVectors(t,this.origin);let n=e.dot(this.direction);return n<0?e.copy(this.origin):e.copy(this.direction).multiplyScalar(n).add(this.origin)}distanceToPoint(t){return Math.sqrt(this.distanceSqToPoint(t))}distanceSqToPoint(t){let e=je.subVectors(t,this.origin).dot(this.direction);return e<0?this.origin.distanceToSquared(t):(je.copy(this.direction).multiplyScalar(e).add(this.origin),je.distanceToSquared(t))}distanceSqToSegment(t,e,n,i){fr.copy(t).add(e).multiplyScalar(.5),ts.copy(e).sub(t).normalize(),un.copy(this.origin).sub(fr);let s=t.distanceTo(e)*.5,a=-this.direction.dot(ts),o=un.dot(this.direction),c=-un.dot(ts),l=un.lengthSq(),h=Math.abs(1-a*a),f,u,m,x;if(h>0)if(f=a*c-o,u=a*o-c,x=s*h,f>=0)if(u>=-x)if(u<=x){let p=1/h;f*=p,u*=p,m=f*(f+a*u+2*o)+u*(a*f+u+2*c)+l}else u=s,f=Math.max(0,-(a*u+o)),m=-f*f+u*(u+2*c)+l;else u=-s,f=Math.max(0,-(a*u+o)),m=-f*f+u*(u+2*c)+l;else u<=-x?(f=Math.max(0,-(-a*s+o)),u=f>0?-s:Math.min(Math.max(-s,-c),s),m=-f*f+u*(u+2*c)+l):u<=x?(f=0,u=Math.min(Math.max(-s,-c),s),m=u*(u+2*c)+l):(f=Math.max(0,-(a*s+o)),u=f>0?s:Math.min(Math.max(-s,-c),s),m=-f*f+u*(u+2*c)+l);else u=a>0?-s:s,f=Math.max(0,-(a*u+o)),m=-f*f+u*(u+2*c)+l;return n&&n.copy(this.direction).multiplyScalar(f).add(this.origin),i&&i.copy(ts).multiplyScalar(u).add(fr),m}intersectSphere(t,e){je.subVectors(t.center,this.origin);let n=je.dot(this.direction),i=je.dot(je)-n*n,s=t.radius*t.radius;if(i>s)return null;let a=Math.sqrt(s-i),o=n-a,c=n+a;return o<0&&c<0?null:o<0?this.at(c,e):this.at(o,e)}intersectsSphere(t){return this.distanceSqToPoint(t.center)<=t.radius*t.radius}distanceToPlane(t){let e=t.normal.dot(this.direction);if(e===0)return t.distanceToPoint(this.origin)===0?0:null;let n=-(this.origin.dot(t.normal)+t.constant)/e;return n>=0?n:null}intersectPlane(t,e){let n=this.distanceToPlane(t);return n===null?null:this.at(n,e)}intersectsPlane(t){let e=t.distanceToPoint(this.origin);return e===0||t.normal.dot(this.direction)*e<0}intersectBox(t,e){let n,i,s,a,o,c,l=1/this.direction.x,h=1/this.direction.y,f=1/this.direction.z,u=this.origin;return l>=0?(n=(t.min.x-u.x)*l,i=(t.max.x-u.x)*l):(n=(t.max.x-u.x)*l,i=(t.min.x-u.x)*l),h>=0?(s=(t.min.y-u.y)*h,a=(t.max.y-u.y)*h):(s=(t.max.y-u.y)*h,a=(t.min.y-u.y)*h),n>a||s>i||((s>n||isNaN(n))&&(n=s),(a=0?(o=(t.min.z-u.z)*f,c=(t.max.z-u.z)*f):(o=(t.max.z-u.z)*f,c=(t.min.z-u.z)*f),n>c||o>i)||((o>n||n!==n)&&(n=o),(c=0?n:i,e)}intersectsBox(t){return this.intersectBox(t,je)!==null}intersectTriangle(t,e,n,i,s){dr.subVectors(e,t),es.subVectors(n,t),pr.crossVectors(dr,es);let a=this.direction.dot(pr),o;if(a>0){if(i)return null;o=1}else if(a<0)o=-1,a=-a;else return null;un.subVectors(this.origin,t);let c=o*this.direction.dot(es.crossVectors(un,es));if(c<0)return null;let l=o*this.direction.dot(dr.cross(un));if(l<0||c+l>a)return null;let h=-o*un.dot(pr);return h<0?null:this.at(h/a,s)}applyMatrix4(t){return this.origin.applyMatrix4(t),this.direction.transformDirection(t),this}equals(t){return t.origin.equals(this.origin)&&t.direction.equals(this.direction)}clone(){return new this.constructor().copy(this)}},zt=class{constructor(){zt.prototype.isMatrix4=!0,this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}set(t,e,n,i,s,a,o,c,l,h,f,u,m,x,p,d){let g=this.elements;return g[0]=t,g[4]=e,g[8]=n,g[12]=i,g[1]=s,g[5]=a,g[9]=o,g[13]=c,g[2]=l,g[6]=h,g[10]=f,g[14]=u,g[3]=m,g[7]=x,g[11]=p,g[15]=d,this}identity(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this}clone(){return new zt().fromArray(this.elements)}copy(t){let e=this.elements,n=t.elements;return e[0]=n[0],e[1]=n[1],e[2]=n[2],e[3]=n[3],e[4]=n[4],e[5]=n[5],e[6]=n[6],e[7]=n[7],e[8]=n[8],e[9]=n[9],e[10]=n[10],e[11]=n[11],e[12]=n[12],e[13]=n[13],e[14]=n[14],e[15]=n[15],this}copyPosition(t){let e=this.elements,n=t.elements;return e[12]=n[12],e[13]=n[13],e[14]=n[14],this}setFromMatrix3(t){let e=t.elements;return this.set(e[0],e[3],e[6],0,e[1],e[4],e[7],0,e[2],e[5],e[8],0,0,0,0,1),this}extractBasis(t,e,n){return t.setFromMatrixColumn(this,0),e.setFromMatrixColumn(this,1),n.setFromMatrixColumn(this,2),this}makeBasis(t,e,n){return this.set(t.x,e.x,n.x,0,t.y,e.y,n.y,0,t.z,e.z,n.z,0,0,0,0,1),this}extractRotation(t){let e=this.elements,n=t.elements,i=1/Xn.setFromMatrixColumn(t,0).length(),s=1/Xn.setFromMatrixColumn(t,1).length(),a=1/Xn.setFromMatrixColumn(t,2).length();return e[0]=n[0]*i,e[1]=n[1]*i,e[2]=n[2]*i,e[3]=0,e[4]=n[4]*s,e[5]=n[5]*s,e[6]=n[6]*s,e[7]=0,e[8]=n[8]*a,e[9]=n[9]*a,e[10]=n[10]*a,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,this}makeRotationFromEuler(t){let e=this.elements,n=t.x,i=t.y,s=t.z,a=Math.cos(n),o=Math.sin(n),c=Math.cos(i),l=Math.sin(i),h=Math.cos(s),f=Math.sin(s);if(t.order==="XYZ"){let u=a*h,m=a*f,x=o*h,p=o*f;e[0]=c*h,e[4]=-c*f,e[8]=l,e[1]=m+x*l,e[5]=u-p*l,e[9]=-o*c,e[2]=p-u*l,e[6]=x+m*l,e[10]=a*c}else if(t.order==="YXZ"){let u=c*h,m=c*f,x=l*h,p=l*f;e[0]=u+p*o,e[4]=x*o-m,e[8]=a*l,e[1]=a*f,e[5]=a*h,e[9]=-o,e[2]=m*o-x,e[6]=p+u*o,e[10]=a*c}else if(t.order==="ZXY"){let u=c*h,m=c*f,x=l*h,p=l*f;e[0]=u-p*o,e[4]=-a*f,e[8]=x+m*o,e[1]=m+x*o,e[5]=a*h,e[9]=p-u*o,e[2]=-a*l,e[6]=o,e[10]=a*c}else if(t.order==="ZYX"){let u=a*h,m=a*f,x=o*h,p=o*f;e[0]=c*h,e[4]=x*l-m,e[8]=u*l+p,e[1]=c*f,e[5]=p*l+u,e[9]=m*l-x,e[2]=-l,e[6]=o*c,e[10]=a*c}else if(t.order==="YZX"){let u=a*c,m=a*l,x=o*c,p=o*l;e[0]=c*h,e[4]=p-u*f,e[8]=x*f+m,e[1]=f,e[5]=a*h,e[9]=-o*h,e[2]=-l*h,e[6]=m*f+x,e[10]=u-p*f}else if(t.order==="XZY"){let u=a*c,m=a*l,x=o*c,p=o*l;e[0]=c*h,e[4]=-f,e[8]=l*h,e[1]=u*f+p,e[5]=a*h,e[9]=m*f-x,e[2]=x*f-m,e[6]=o*h,e[10]=p*f+u}return e[3]=0,e[7]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,this}makeRotationFromQuaternion(t){return this.compose(Cl,t,Pl)}lookAt(t,e,n){let i=this.elements;return be.subVectors(t,e),be.lengthSq()===0&&(be.z=1),be.normalize(),fn.crossVectors(n,be),fn.lengthSq()===0&&(Math.abs(n.z)===1?be.x+=1e-4:be.z+=1e-4,be.normalize(),fn.crossVectors(n,be)),fn.normalize(),ns.crossVectors(be,fn),i[0]=fn.x,i[4]=ns.x,i[8]=be.x,i[1]=fn.y,i[5]=ns.y,i[9]=be.y,i[2]=fn.z,i[6]=ns.z,i[10]=be.z,this}multiply(t){return this.multiplyMatrices(this,t)}premultiply(t){return this.multiplyMatrices(t,this)}multiplyMatrices(t,e){let n=t.elements,i=e.elements,s=this.elements,a=n[0],o=n[4],c=n[8],l=n[12],h=n[1],f=n[5],u=n[9],m=n[13],x=n[2],p=n[6],d=n[10],g=n[14],M=n[3],_=n[7],v=n[11],b=n[15],A=i[0],C=i[4],y=i[8],S=i[12],P=i[1],O=i[5],B=i[9],D=i[13],I=i[2],k=i[6],Y=i[10],Z=i[14],H=i[3],$=i[7],J=i[11],dt=i[15];return s[0]=a*A+o*P+c*I+l*H,s[4]=a*C+o*O+c*k+l*$,s[8]=a*y+o*B+c*Y+l*J,s[12]=a*S+o*D+c*Z+l*dt,s[1]=h*A+f*P+u*I+m*H,s[5]=h*C+f*O+u*k+m*$,s[9]=h*y+f*B+u*Y+m*J,s[13]=h*S+f*D+u*Z+m*dt,s[2]=x*A+p*P+d*I+g*H,s[6]=x*C+p*O+d*k+g*$,s[10]=x*y+p*B+d*Y+g*J,s[14]=x*S+p*D+d*Z+g*dt,s[3]=M*A+_*P+v*I+b*H,s[7]=M*C+_*O+v*k+b*$,s[11]=M*y+_*B+v*Y+b*J,s[15]=M*S+_*D+v*Z+b*dt,this}multiplyScalar(t){let 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(){let t=this.elements,e=t[0],n=t[4],i=t[8],s=t[12],a=t[1],o=t[5],c=t[9],l=t[13],h=t[2],f=t[6],u=t[10],m=t[14],x=t[3],p=t[7],d=t[11],g=t[15];return x*(+s*c*f-i*l*f-s*o*u+n*l*u+i*o*m-n*c*m)+p*(+e*c*m-e*l*u+s*a*u-i*a*m+i*l*h-s*c*h)+d*(+e*l*f-e*o*m-s*a*f+n*a*m+s*o*h-n*l*h)+g*(-i*o*h-e*c*f+e*o*u+i*a*f-n*a*u+n*c*h)}transpose(){let t=this.elements,e;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}setPosition(t,e,n){let i=this.elements;return t.isVector3?(i[12]=t.x,i[13]=t.y,i[14]=t.z):(i[12]=t,i[13]=e,i[14]=n),this}invert(){let t=this.elements,e=t[0],n=t[1],i=t[2],s=t[3],a=t[4],o=t[5],c=t[6],l=t[7],h=t[8],f=t[9],u=t[10],m=t[11],x=t[12],p=t[13],d=t[14],g=t[15],M=f*d*l-p*u*l+p*c*m-o*d*m-f*c*g+o*u*g,_=x*u*l-h*d*l-x*c*m+a*d*m+h*c*g-a*u*g,v=h*p*l-x*f*l+x*o*m-a*p*m-h*o*g+a*f*g,b=x*f*c-h*p*c-x*o*u+a*p*u+h*o*d-a*f*d,A=e*M+n*_+i*v+s*b;if(A===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);let C=1/A;return t[0]=M*C,t[1]=(p*u*s-f*d*s-p*i*m+n*d*m+f*i*g-n*u*g)*C,t[2]=(o*d*s-p*c*s+p*i*l-n*d*l-o*i*g+n*c*g)*C,t[3]=(f*c*s-o*u*s-f*i*l+n*u*l+o*i*m-n*c*m)*C,t[4]=_*C,t[5]=(h*d*s-x*u*s+x*i*m-e*d*m-h*i*g+e*u*g)*C,t[6]=(x*c*s-a*d*s-x*i*l+e*d*l+a*i*g-e*c*g)*C,t[7]=(a*u*s-h*c*s+h*i*l-e*u*l-a*i*m+e*c*m)*C,t[8]=v*C,t[9]=(x*f*s-h*p*s-x*n*m+e*p*m+h*n*g-e*f*g)*C,t[10]=(a*p*s-x*o*s+x*n*l-e*p*l-a*n*g+e*o*g)*C,t[11]=(h*o*s-a*f*s-h*n*l+e*f*l+a*n*m-e*o*m)*C,t[12]=b*C,t[13]=(h*p*i-x*f*i+x*n*u-e*p*u-h*n*d+e*f*d)*C,t[14]=(x*o*i-a*p*i-x*n*c+e*p*c+a*n*d-e*o*d)*C,t[15]=(a*f*i-h*o*i+h*n*c-e*f*c-a*n*u+e*o*u)*C,this}scale(t){let e=this.elements,n=t.x,i=t.y,s=t.z;return e[0]*=n,e[4]*=i,e[8]*=s,e[1]*=n,e[5]*=i,e[9]*=s,e[2]*=n,e[6]*=i,e[10]*=s,e[3]*=n,e[7]*=i,e[11]*=s,this}getMaxScaleOnAxis(){let t=this.elements,e=t[0]*t[0]+t[1]*t[1]+t[2]*t[2],n=t[4]*t[4]+t[5]*t[5]+t[6]*t[6],i=t[8]*t[8]+t[9]*t[9]+t[10]*t[10];return Math.sqrt(Math.max(e,n,i))}makeTranslation(t,e,n){return this.set(1,0,0,t,0,1,0,e,0,0,1,n,0,0,0,1),this}makeRotationX(t){let e=Math.cos(t),n=Math.sin(t);return this.set(1,0,0,0,0,e,-n,0,0,n,e,0,0,0,0,1),this}makeRotationY(t){let e=Math.cos(t),n=Math.sin(t);return this.set(e,0,n,0,0,1,0,0,-n,0,e,0,0,0,0,1),this}makeRotationZ(t){let e=Math.cos(t),n=Math.sin(t);return this.set(e,-n,0,0,n,e,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(t,e){let n=Math.cos(e),i=Math.sin(e),s=1-n,a=t.x,o=t.y,c=t.z,l=s*a,h=s*o;return this.set(l*a+n,l*o-i*c,l*c+i*o,0,l*o+i*c,h*o+n,h*c-i*a,0,l*c-i*o,h*c+i*a,s*c*c+n,0,0,0,0,1),this}makeScale(t,e,n){return this.set(t,0,0,0,0,e,0,0,0,0,n,0,0,0,0,1),this}makeShear(t,e,n,i,s,a){return this.set(1,n,s,0,t,1,a,0,e,i,1,0,0,0,0,1),this}compose(t,e,n){let i=this.elements,s=e._x,a=e._y,o=e._z,c=e._w,l=s+s,h=a+a,f=o+o,u=s*l,m=s*h,x=s*f,p=a*h,d=a*f,g=o*f,M=c*l,_=c*h,v=c*f,b=n.x,A=n.y,C=n.z;return i[0]=(1-(p+g))*b,i[1]=(m+v)*b,i[2]=(x-_)*b,i[3]=0,i[4]=(m-v)*A,i[5]=(1-(u+g))*A,i[6]=(d+M)*A,i[7]=0,i[8]=(x+_)*C,i[9]=(d-M)*C,i[10]=(1-(u+p))*C,i[11]=0,i[12]=t.x,i[13]=t.y,i[14]=t.z,i[15]=1,this}decompose(t,e,n){let i=this.elements,s=Xn.set(i[0],i[1],i[2]).length(),a=Xn.set(i[4],i[5],i[6]).length(),o=Xn.set(i[8],i[9],i[10]).length();this.determinant()<0&&(s=-s),t.x=i[12],t.y=i[13],t.z=i[14],Fe.copy(this);let l=1/s,h=1/a,f=1/o;return Fe.elements[0]*=l,Fe.elements[1]*=l,Fe.elements[2]*=l,Fe.elements[4]*=h,Fe.elements[5]*=h,Fe.elements[6]*=h,Fe.elements[8]*=f,Fe.elements[9]*=f,Fe.elements[10]*=f,e.setFromRotationMatrix(Fe),n.x=s,n.y=a,n.z=o,this}makePerspective(t,e,n,i,s,a){let o=this.elements,c=2*s/(e-t),l=2*s/(n-i),h=(e+t)/(e-t),f=(n+i)/(n-i),u=-(a+s)/(a-s),m=-2*a*s/(a-s);return o[0]=c,o[4]=0,o[8]=h,o[12]=0,o[1]=0,o[5]=l,o[9]=f,o[13]=0,o[2]=0,o[6]=0,o[10]=u,o[14]=m,o[3]=0,o[7]=0,o[11]=-1,o[15]=0,this}makeOrthographic(t,e,n,i,s,a){let o=this.elements,c=1/(e-t),l=1/(n-i),h=1/(a-s),f=(e+t)*c,u=(n+i)*l,m=(a+s)*h;return o[0]=2*c,o[4]=0,o[8]=0,o[12]=-f,o[1]=0,o[5]=2*l,o[9]=0,o[13]=-u,o[2]=0,o[6]=0,o[10]=-2*h,o[14]=-m,o[3]=0,o[7]=0,o[11]=0,o[15]=1,this}equals(t){let e=this.elements,n=t.elements;for(let i=0;i<16;i++)if(e[i]!==n[i])return!1;return!0}fromArray(t,e=0){for(let n=0;n<16;n++)this.elements[n]=t[n+e];return this}toArray(t=[],e=0){let n=this.elements;return t[e]=n[0],t[e+1]=n[1],t[e+2]=n[2],t[e+3]=n[3],t[e+4]=n[4],t[e+5]=n[5],t[e+6]=n[6],t[e+7]=n[7],t[e+8]=n[8],t[e+9]=n[9],t[e+10]=n[10],t[e+11]=n[11],t[e+12]=n[12],t[e+13]=n[13],t[e+14]=n[14],t[e+15]=n[15],t}},Xn=new R,Fe=new zt,Cl=new R(0,0,0),Pl=new R(1,1,1),fn=new R,ns=new R,be=new R,da=new zt,pa=new gn,ui=class{constructor(t=0,e=0,n=0,i=ui.DEFAULT_ORDER){this.isEuler=!0,this._x=t,this._y=e,this._z=n,this._order=i}get x(){return this._x}set x(t){this._x=t,this._onChangeCallback()}get y(){return this._y}set y(t){this._y=t,this._onChangeCallback()}get z(){return this._z}set z(t){this._z=t,this._onChangeCallback()}get order(){return this._order}set order(t){this._order=t,this._onChangeCallback()}set(t,e,n,i=this._order){return this._x=t,this._y=e,this._z=n,this._order=i,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._order)}copy(t){return this._x=t._x,this._y=t._y,this._z=t._z,this._order=t._order,this._onChangeCallback(),this}setFromRotationMatrix(t,e=this._order,n=!0){let i=t.elements,s=i[0],a=i[4],o=i[8],c=i[1],l=i[5],h=i[9],f=i[2],u=i[6],m=i[10];switch(e){case"XYZ":this._y=Math.asin(de(o,-1,1)),Math.abs(o)<.9999999?(this._x=Math.atan2(-h,m),this._z=Math.atan2(-a,s)):(this._x=Math.atan2(u,l),this._z=0);break;case"YXZ":this._x=Math.asin(-de(h,-1,1)),Math.abs(h)<.9999999?(this._y=Math.atan2(o,m),this._z=Math.atan2(c,l)):(this._y=Math.atan2(-f,s),this._z=0);break;case"ZXY":this._x=Math.asin(de(u,-1,1)),Math.abs(u)<.9999999?(this._y=Math.atan2(-f,m),this._z=Math.atan2(-a,l)):(this._y=0,this._z=Math.atan2(c,s));break;case"ZYX":this._y=Math.asin(-de(f,-1,1)),Math.abs(f)<.9999999?(this._x=Math.atan2(u,m),this._z=Math.atan2(c,s)):(this._x=0,this._z=Math.atan2(-a,l));break;case"YZX":this._z=Math.asin(de(c,-1,1)),Math.abs(c)<.9999999?(this._x=Math.atan2(-h,l),this._y=Math.atan2(-f,s)):(this._x=0,this._y=Math.atan2(o,m));break;case"XZY":this._z=Math.asin(-de(a,-1,1)),Math.abs(a)<.9999999?(this._x=Math.atan2(u,l),this._y=Math.atan2(o,s)):(this._x=Math.atan2(-h,m),this._y=0);break;default:console.warn("THREE.Euler: .setFromRotationMatrix() encountered an unknown order: "+e)}return this._order=e,n===!0&&this._onChangeCallback(),this}setFromQuaternion(t,e,n){return da.makeRotationFromQuaternion(t),this.setFromRotationMatrix(da,e,n)}setFromVector3(t,e=this._order){return this.set(t.x,t.y,t.z,e)}reorder(t){return pa.setFromEuler(this),this.setFromQuaternion(pa,t)}equals(t){return t._x===this._x&&t._y===this._y&&t._z===this._z&&t._order===this._order}fromArray(t){return this._x=t[0],this._y=t[1],this._z=t[2],t[3]!==void 0&&(this._order=t[3]),this._onChangeCallback(),this}toArray(t=[],e=0){return t[e]=this._x,t[e+1]=this._y,t[e+2]=this._z,t[e+3]=this._order,t}_onChange(t){return this._onChangeCallback=t,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._order}};ui.DEFAULT_ORDER="XYZ";var ws=class{constructor(){this.mask=1}set(t){this.mask=(1<>>0}enable(t){this.mask|=1<1){for(let e=0;e1){for(let n=0;n0&&(n=n.concat(a))}return n}getWorldPosition(t){return this.updateWorldMatrix(!0,!1),t.setFromMatrixPosition(this.matrixWorld)}getWorldQuaternion(t){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(Pi,t,Ll),t}getWorldScale(t){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(Pi,Il,t),t}getWorldDirection(t){this.updateWorldMatrix(!0,!1);let e=this.matrixWorld.elements;return t.set(e[8],e[9],e[10]).normalize()}raycast(){}traverse(t){t(this);let e=this.children;for(let n=0,i=e.length;n0&&(i.userData=this.userData),i.layers=this.layers.mask,i.matrix=this.matrix.toArray(),this.matrixAutoUpdate===!1&&(i.matrixAutoUpdate=!1),this.isInstancedMesh&&(i.type="InstancedMesh",i.count=this.count,i.instanceMatrix=this.instanceMatrix.toJSON(),this.instanceColor!==null&&(i.instanceColor=this.instanceColor.toJSON()));function s(o,c){return o[c.uuid]===void 0&&(o[c.uuid]=c.toJSON(t)),c.uuid}if(this.isScene)this.background&&(this.background.isColor?i.background=this.background.toJSON():this.background.isTexture&&(i.background=this.background.toJSON(t).uuid)),this.environment&&this.environment.isTexture&&this.environment.isRenderTargetTexture!==!0&&(i.environment=this.environment.toJSON(t).uuid);else if(this.isMesh||this.isLine||this.isPoints){i.geometry=s(t.geometries,this.geometry);let o=this.geometry.parameters;if(o!==void 0&&o.shapes!==void 0){let c=o.shapes;if(Array.isArray(c))for(let l=0,h=c.length;l0){i.children=[];for(let o=0;o0){i.animations=[];for(let o=0;o0&&(n.geometries=o),c.length>0&&(n.materials=c),l.length>0&&(n.textures=l),h.length>0&&(n.images=h),f.length>0&&(n.shapes=f),u.length>0&&(n.skeletons=u),m.length>0&&(n.animations=m),x.length>0&&(n.nodes=x)}return n.object=i,n;function a(o){let c=[];for(let l in o){let h=o[l];delete h.metadata,c.push(h)}return c}}clone(t){return new this.constructor().copy(this,t)}copy(t,e=!0){if(this.name=t.name,this.up.copy(t.up),this.position.copy(t.position),this.rotation.order=t.rotation.order,this.quaternion.copy(t.quaternion),this.scale.copy(t.scale),this.matrix.copy(t.matrix),this.matrixWorld.copy(t.matrixWorld),this.matrixAutoUpdate=t.matrixAutoUpdate,this.matrixWorldNeedsUpdate=t.matrixWorldNeedsUpdate,this.matrixWorldAutoUpdate=t.matrixWorldAutoUpdate,this.layers.mask=t.layers.mask,this.visible=t.visible,this.castShadow=t.castShadow,this.receiveShadow=t.receiveShadow,this.frustumCulled=t.frustumCulled,this.renderOrder=t.renderOrder,this.userData=JSON.parse(JSON.stringify(t.userData)),e===!0)for(let n=0;n0?i.multiplyScalar(1/Math.sqrt(s)):i.set(0,0,0)}static getBarycoord(t,e,n,i,s){ze.subVectors(i,e),tn.subVectors(n,e),mr.subVectors(t,e);let a=ze.dot(ze),o=ze.dot(tn),c=ze.dot(mr),l=tn.dot(tn),h=tn.dot(mr),f=a*l-o*o;if(f===0)return s.set(-2,-1,-1);let u=1/f,m=(l*c-o*h)*u,x=(a*h-o*c)*u;return s.set(1-m-x,x,m)}static containsPoint(t,e,n,i){return this.getBarycoord(t,e,n,i,en),en.x>=0&&en.y>=0&&en.x+en.y<=1}static getUV(t,e,n,i,s,a,o,c){return this.getBarycoord(t,e,n,i,en),c.set(0,0),c.addScaledVector(s,en.x),c.addScaledVector(a,en.y),c.addScaledVector(o,en.z),c}static isFrontFacing(t,e,n,i){return ze.subVectors(n,e),tn.subVectors(t,e),ze.cross(tn).dot(i)<0}set(t,e,n){return this.a.copy(t),this.b.copy(e),this.c.copy(n),this}setFromPointsAndIndices(t,e,n,i){return this.a.copy(t[e]),this.b.copy(t[n]),this.c.copy(t[i]),this}setFromAttributeAndIndices(t,e,n,i){return this.a.fromBufferAttribute(t,e),this.b.fromBufferAttribute(t,n),this.c.fromBufferAttribute(t,i),this}clone(){return new this.constructor().copy(this)}copy(t){return this.a.copy(t.a),this.b.copy(t.b),this.c.copy(t.c),this}getArea(){return ze.subVectors(this.c,this.b),tn.subVectors(this.a,this.b),ze.cross(tn).length()*.5}getMidpoint(t){return t.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}getNormal(t){return ie.getNormal(this.a,this.b,this.c,t)}getPlane(t){return t.setFromCoplanarPoints(this.a,this.b,this.c)}getBarycoord(t,e){return ie.getBarycoord(t,this.a,this.b,this.c,e)}getUV(t,e,n,i,s){return ie.getUV(t,this.a,this.b,this.c,e,n,i,s)}containsPoint(t){return ie.containsPoint(t,this.a,this.b,this.c)}isFrontFacing(t){return ie.isFrontFacing(this.a,this.b,this.c,t)}intersectsBox(t){return t.intersectsTriangle(this)}closestPointToPoint(t,e){let n=this.a,i=this.b,s=this.c,a,o;Zn.subVectors(i,n),Jn.subVectors(s,n),gr.subVectors(t,n);let c=Zn.dot(gr),l=Jn.dot(gr);if(c<=0&&l<=0)return e.copy(n);xr.subVectors(t,i);let h=Zn.dot(xr),f=Jn.dot(xr);if(h>=0&&f<=h)return e.copy(i);let u=c*f-h*l;if(u<=0&&c>=0&&h<=0)return a=c/(c-h),e.copy(n).addScaledVector(Zn,a);_r.subVectors(t,s);let m=Zn.dot(_r),x=Jn.dot(_r);if(x>=0&&m<=x)return e.copy(s);let p=m*l-c*x;if(p<=0&&l>=0&&x<=0)return o=l/(l-x),e.copy(n).addScaledVector(Jn,o);let d=h*x-m*f;if(d<=0&&f-h>=0&&m-x>=0)return va.subVectors(s,i),o=(f-h)/(f-h+(m-x)),e.copy(i).addScaledVector(va,o);let g=1/(d+p+u);return a=p*g,o=u*g,e.copy(n).addScaledVector(Zn,a).addScaledVector(Jn,o)}equals(t){return t.a.equals(this.a)&&t.b.equals(this.b)&&t.c.equals(this.c)}},Nl=0,fi=class extends mn{constructor(){super(),this.isMaterial=!0,Object.defineProperty(this,"id",{value:Nl++}),this.uuid=Gi(),this.name="",this.type="Material",this.blending=ri,this.side=Ue,this.vertexColors=!1,this.opacity=1,this.transparent=!1,this.blendSrc=qa,this.blendDst=Xa,this.blendEquation=ni,this.blendSrcAlpha=null,this.blendDstAlpha=null,this.blendEquationAlpha=null,this.depthFunc=Er,this.depthTest=!0,this.depthWrite=!0,this.stencilWriteMask=255,this.stencilFunc=Sl,this.stencilRef=0,this.stencilFuncMask=255,this.stencilFail=er,this.stencilZFail=er,this.stencilZPass=er,this.stencilWrite=!1,this.clippingPlanes=null,this.clipIntersection=!1,this.clipShadows=!1,this.shadowSide=null,this.colorWrite=!0,this.precision=null,this.polygonOffset=!1,this.polygonOffsetFactor=0,this.polygonOffsetUnits=0,this.dithering=!1,this.alphaToCoverage=!1,this.premultipliedAlpha=!1,this.forceSinglePass=!1,this.visible=!0,this.toneMapped=!0,this.userData={},this.version=0,this._alphaTest=0}get alphaTest(){return this._alphaTest}set alphaTest(t){this._alphaTest>0!=t>0&&this.version++,this._alphaTest=t}onBuild(){}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(t){if(t!==void 0)for(let e in t){let n=t[e];if(n===void 0){console.warn("THREE.Material: \'"+e+"\' parameter is undefined.");continue}let i=this[e];if(i===void 0){console.warn("THREE."+this.type+": \'"+e+"\' is not a property of this material.");continue}i&&i.isColor?i.set(n):i&&i.isVector3&&n&&n.isVector3?i.copy(n):this[e]=n}}toJSON(t){let e=t===void 0||typeof t=="string";e&&(t={textures:{},images:{}});let n={metadata:{version:4.5,type:"Material",generator:"Material.toJSON"}};n.uuid=this.uuid,n.type=this.type,this.name!==""&&(n.name=this.name),this.color&&this.color.isColor&&(n.color=this.color.getHex()),this.roughness!==void 0&&(n.roughness=this.roughness),this.metalness!==void 0&&(n.metalness=this.metalness),this.sheen!==void 0&&(n.sheen=this.sheen),this.sheenColor&&this.sheenColor.isColor&&(n.sheenColor=this.sheenColor.getHex()),this.sheenRoughness!==void 0&&(n.sheenRoughness=this.sheenRoughness),this.emissive&&this.emissive.isColor&&(n.emissive=this.emissive.getHex()),this.emissiveIntensity&&this.emissiveIntensity!==1&&(n.emissiveIntensity=this.emissiveIntensity),this.specular&&this.specular.isColor&&(n.specular=this.specular.getHex()),this.specularIntensity!==void 0&&(n.specularIntensity=this.specularIntensity),this.specularColor&&this.specularColor.isColor&&(n.specularColor=this.specularColor.getHex()),this.shininess!==void 0&&(n.shininess=this.shininess),this.clearcoat!==void 0&&(n.clearcoat=this.clearcoat),this.clearcoatRoughness!==void 0&&(n.clearcoatRoughness=this.clearcoatRoughness),this.clearcoatMap&&this.clearcoatMap.isTexture&&(n.clearcoatMap=this.clearcoatMap.toJSON(t).uuid),this.clearcoatRoughnessMap&&this.clearcoatRoughnessMap.isTexture&&(n.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(t).uuid),this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture&&(n.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(t).uuid,n.clearcoatNormalScale=this.clearcoatNormalScale.toArray()),this.iridescence!==void 0&&(n.iridescence=this.iridescence),this.iridescenceIOR!==void 0&&(n.iridescenceIOR=this.iridescenceIOR),this.iridescenceThicknessRange!==void 0&&(n.iridescenceThicknessRange=this.iridescenceThicknessRange),this.iridescenceMap&&this.iridescenceMap.isTexture&&(n.iridescenceMap=this.iridescenceMap.toJSON(t).uuid),this.iridescenceThicknessMap&&this.iridescenceThicknessMap.isTexture&&(n.iridescenceThicknessMap=this.iridescenceThicknessMap.toJSON(t).uuid),this.map&&this.map.isTexture&&(n.map=this.map.toJSON(t).uuid),this.matcap&&this.matcap.isTexture&&(n.matcap=this.matcap.toJSON(t).uuid),this.alphaMap&&this.alphaMap.isTexture&&(n.alphaMap=this.alphaMap.toJSON(t).uuid),this.lightMap&&this.lightMap.isTexture&&(n.lightMap=this.lightMap.toJSON(t).uuid,n.lightMapIntensity=this.lightMapIntensity),this.aoMap&&this.aoMap.isTexture&&(n.aoMap=this.aoMap.toJSON(t).uuid,n.aoMapIntensity=this.aoMapIntensity),this.bumpMap&&this.bumpMap.isTexture&&(n.bumpMap=this.bumpMap.toJSON(t).uuid,n.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(n.normalMap=this.normalMap.toJSON(t).uuid,n.normalMapType=this.normalMapType,n.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(n.displacementMap=this.displacementMap.toJSON(t).uuid,n.displacementScale=this.displacementScale,n.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(n.roughnessMap=this.roughnessMap.toJSON(t).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(n.metalnessMap=this.metalnessMap.toJSON(t).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(n.emissiveMap=this.emissiveMap.toJSON(t).uuid),this.specularMap&&this.specularMap.isTexture&&(n.specularMap=this.specularMap.toJSON(t).uuid),this.specularIntensityMap&&this.specularIntensityMap.isTexture&&(n.specularIntensityMap=this.specularIntensityMap.toJSON(t).uuid),this.specularColorMap&&this.specularColorMap.isTexture&&(n.specularColorMap=this.specularColorMap.toJSON(t).uuid),this.envMap&&this.envMap.isTexture&&(n.envMap=this.envMap.toJSON(t).uuid,this.combine!==void 0&&(n.combine=this.combine)),this.envMapIntensity!==void 0&&(n.envMapIntensity=this.envMapIntensity),this.reflectivity!==void 0&&(n.reflectivity=this.reflectivity),this.refractionRatio!==void 0&&(n.refractionRatio=this.refractionRatio),this.gradientMap&&this.gradientMap.isTexture&&(n.gradientMap=this.gradientMap.toJSON(t).uuid),this.transmission!==void 0&&(n.transmission=this.transmission),this.transmissionMap&&this.transmissionMap.isTexture&&(n.transmissionMap=this.transmissionMap.toJSON(t).uuid),this.thickness!==void 0&&(n.thickness=this.thickness),this.thicknessMap&&this.thicknessMap.isTexture&&(n.thicknessMap=this.thicknessMap.toJSON(t).uuid),this.attenuationDistance!==void 0&&this.attenuationDistance!==1/0&&(n.attenuationDistance=this.attenuationDistance),this.attenuationColor!==void 0&&(n.attenuationColor=this.attenuationColor.getHex()),this.size!==void 0&&(n.size=this.size),this.shadowSide!==null&&(n.shadowSide=this.shadowSide),this.sizeAttenuation!==void 0&&(n.sizeAttenuation=this.sizeAttenuation),this.blending!==ri&&(n.blending=this.blending),this.side!==Ue&&(n.side=this.side),this.vertexColors&&(n.vertexColors=!0),this.opacity<1&&(n.opacity=this.opacity),this.transparent===!0&&(n.transparent=this.transparent),n.depthFunc=this.depthFunc,n.depthTest=this.depthTest,n.depthWrite=this.depthWrite,n.colorWrite=this.colorWrite,n.stencilWrite=this.stencilWrite,n.stencilWriteMask=this.stencilWriteMask,n.stencilFunc=this.stencilFunc,n.stencilRef=this.stencilRef,n.stencilFuncMask=this.stencilFuncMask,n.stencilFail=this.stencilFail,n.stencilZFail=this.stencilZFail,n.stencilZPass=this.stencilZPass,this.rotation!==void 0&&this.rotation!==0&&(n.rotation=this.rotation),this.polygonOffset===!0&&(n.polygonOffset=!0),this.polygonOffsetFactor!==0&&(n.polygonOffsetFactor=this.polygonOffsetFactor),this.polygonOffsetUnits!==0&&(n.polygonOffsetUnits=this.polygonOffsetUnits),this.linewidth!==void 0&&this.linewidth!==1&&(n.linewidth=this.linewidth),this.dashSize!==void 0&&(n.dashSize=this.dashSize),this.gapSize!==void 0&&(n.gapSize=this.gapSize),this.scale!==void 0&&(n.scale=this.scale),this.dithering===!0&&(n.dithering=!0),this.alphaTest>0&&(n.alphaTest=this.alphaTest),this.alphaToCoverage===!0&&(n.alphaToCoverage=this.alphaToCoverage),this.premultipliedAlpha===!0&&(n.premultipliedAlpha=this.premultipliedAlpha),this.forceSinglePass===!0&&(n.forceSinglePass=this.forceSinglePass),this.wireframe===!0&&(n.wireframe=this.wireframe),this.wireframeLinewidth>1&&(n.wireframeLinewidth=this.wireframeLinewidth),this.wireframeLinecap!=="round"&&(n.wireframeLinecap=this.wireframeLinecap),this.wireframeLinejoin!=="round"&&(n.wireframeLinejoin=this.wireframeLinejoin),this.flatShading===!0&&(n.flatShading=this.flatShading),this.visible===!1&&(n.visible=!1),this.toneMapped===!1&&(n.toneMapped=!1),this.fog===!1&&(n.fog=!1),Object.keys(this.userData).length>0&&(n.userData=this.userData);function i(s){let a=[];for(let o in s){let c=s[o];delete c.metadata,a.push(c)}return a}if(e){let s=i(t.textures),a=i(t.images);s.length>0&&(n.textures=s),a.length>0&&(n.images=a)}return n}clone(){return new this.constructor().copy(this)}copy(t){this.name=t.name,this.blending=t.blending,this.side=t.side,this.vertexColors=t.vertexColors,this.opacity=t.opacity,this.transparent=t.transparent,this.blendSrc=t.blendSrc,this.blendDst=t.blendDst,this.blendEquation=t.blendEquation,this.blendSrcAlpha=t.blendSrcAlpha,this.blendDstAlpha=t.blendDstAlpha,this.blendEquationAlpha=t.blendEquationAlpha,this.depthFunc=t.depthFunc,this.depthTest=t.depthTest,this.depthWrite=t.depthWrite,this.stencilWriteMask=t.stencilWriteMask,this.stencilFunc=t.stencilFunc,this.stencilRef=t.stencilRef,this.stencilFuncMask=t.stencilFuncMask,this.stencilFail=t.stencilFail,this.stencilZFail=t.stencilZFail,this.stencilZPass=t.stencilZPass,this.stencilWrite=t.stencilWrite;let e=t.clippingPlanes,n=null;if(e!==null){let i=e.length;n=new Array(i);for(let s=0;s!==i;++s)n[s]=e[s].clone()}return this.clippingPlanes=n,this.clipIntersection=t.clipIntersection,this.clipShadows=t.clipShadows,this.shadowSide=t.shadowSide,this.colorWrite=t.colorWrite,this.precision=t.precision,this.polygonOffset=t.polygonOffset,this.polygonOffsetFactor=t.polygonOffsetFactor,this.polygonOffsetUnits=t.polygonOffsetUnits,this.dithering=t.dithering,this.alphaTest=t.alphaTest,this.alphaToCoverage=t.alphaToCoverage,this.premultipliedAlpha=t.premultipliedAlpha,this.forceSinglePass=t.forceSinglePass,this.visible=t.visible,this.toneMapped=t.toneMapped,this.userData=JSON.parse(JSON.stringify(t.userData)),this}dispose(){this.dispatchEvent({type:"dispose"})}set needsUpdate(t){t===!0&&this.version++}},Ss=class extends fi{constructor(t){super(),this.isMeshBasicMaterial=!0,this.type="MeshBasicMaterial",this.color=new Bt(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.combine=Ya,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(t)}copy(t){return super.copy(t),this.color.copy(t.color),this.map=t.map,this.lightMap=t.lightMap,this.lightMapIntensity=t.lightMapIntensity,this.aoMap=t.aoMap,this.aoMapIntensity=t.aoMapIntensity,this.specularMap=t.specularMap,this.alphaMap=t.alphaMap,this.envMap=t.envMap,this.combine=t.combine,this.reflectivity=t.reflectivity,this.refractionRatio=t.refractionRatio,this.wireframe=t.wireframe,this.wireframeLinewidth=t.wireframeLinewidth,this.wireframeLinecap=t.wireframeLinecap,this.wireframeLinejoin=t.wireframeLinejoin,this.fog=t.fog,this}},Ht=new R,ss=new At,Yt=class{constructor(t,e,n=!1){if(Array.isArray(t))throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.isBufferAttribute=!0,this.name="",this.array=t,this.itemSize=e,this.count=t!==void 0?t.length/e:0,this.normalized=n,this.usage=ca,this.updateRange={offset:0,count:-1},this.version=0}onUploadCallback(){}set needsUpdate(t){t===!0&&this.version++}setUsage(t){return this.usage=t,this}copy(t){return this.name=t.name,this.array=new t.array.constructor(t.array),this.itemSize=t.itemSize,this.count=t.count,this.normalized=t.normalized,this.usage=t.usage,this}copyAt(t,e,n){t*=this.itemSize,n*=e.itemSize;for(let i=0,s=this.itemSize;i0&&(t.userData=this.userData),this.parameters!==void 0){let c=this.parameters;for(let l in c)c[l]!==void 0&&(t[l]=c[l]);return t}t.data={attributes:{}};let e=this.index;e!==null&&(t.data.index={type:e.array.constructor.name,array:Array.prototype.slice.call(e.array)});let n=this.attributes;for(let c in n){let l=n[c];t.data.attributes[c]=l.toJSON(t.data)}let i={},s=!1;for(let c in this.morphAttributes){let l=this.morphAttributes[c],h=[];for(let f=0,u=l.length;f0&&(i[c]=h,s=!0)}s&&(t.data.morphAttributes=i,t.data.morphTargetsRelative=this.morphTargetsRelative);let a=this.groups;a.length>0&&(t.data.groups=JSON.parse(JSON.stringify(a)));let o=this.boundingSphere;return o!==null&&(t.data.boundingSphere={center:o.center.toArray(),radius:o.radius}),t}clone(){return new this.constructor().copy(this)}copy(t){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;let e={};this.name=t.name;let n=t.index;n!==null&&this.setIndex(n.clone(e));let i=t.attributes;for(let l in i){let h=i[l];this.setAttribute(l,h.clone(e))}let s=t.morphAttributes;for(let l in s){let h=[],f=s[l];for(let u=0,m=f.length;u0){let i=e[n[0]];if(i!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let s=0,a=i.length;se.far?null:{distance:l,point:ls.clone(),object:r}}function hs(r,t,e,n,i,s,a,o,c){r.getVertexPosition(a,Li),r.getVertexPosition(o,Ii),r.getVertexPosition(c,Di);let l=zl(r,t,e,n,Li,Ii,Di,br);if(l){i&&(os.fromBufferAttribute(i,a),as.fromBufferAttribute(i,o),cs.fromBufferAttribute(i,c),l.uv=ie.getUV(br,Li,Ii,Di,os,as,cs,new At)),s&&(os.fromBufferAttribute(s,a),as.fromBufferAttribute(s,o),cs.fromBufferAttribute(s,c),l.uv2=ie.getUV(br,Li,Ii,Di,os,as,cs,new At));let h={a,b:o,c,normal:new R,materialIndex:0};ie.getNormal(Li,Ii,Di,h.normal),l.face=h}return l}var zn=class extends ke{constructor(t=1,e=1,n=1,i=1,s=1,a=1){super(),this.type="BoxGeometry",this.parameters={width:t,height:e,depth:n,widthSegments:i,heightSegments:s,depthSegments:a};let o=this;i=Math.floor(i),s=Math.floor(s),a=Math.floor(a);let c=[],l=[],h=[],f=[],u=0,m=0;x("z","y","x",-1,-1,n,e,t,a,s,0),x("z","y","x",1,-1,n,e,-t,a,s,1),x("x","z","y",1,1,t,n,e,i,a,2),x("x","z","y",1,-1,t,n,-e,i,a,3),x("x","y","z",1,-1,t,e,n,i,s,4),x("x","y","z",-1,-1,t,e,-n,i,s,5),this.setIndex(c),this.setAttribute("position",new sn(l,3)),this.setAttribute("normal",new sn(h,3)),this.setAttribute("uv",new sn(f,2));function x(p,d,g,M,_,v,b,A,C,y,S){let P=v/C,O=b/y,B=v/2,D=b/2,I=A/2,k=C+1,Y=y+1,Z=0,H=0,$=new R;for(let J=0;J0?1:-1,h.push($.x,$.y,$.z),f.push(z/C),f.push(1-J/y),Z+=1}}for(let J=0;J0&&(e.defines=this.defines),e.vertexShader=this.vertexShader,e.fragmentShader=this.fragmentShader;let n={};for(let i in this.extensions)this.extensions[i]===!0&&(n[i]=!0);return Object.keys(n).length>0&&(e.extensions=n),e}},Es=class extends pe{constructor(){super(),this.isCamera=!0,this.type="Camera",this.matrixWorldInverse=new zt,this.projectionMatrix=new zt,this.projectionMatrixInverse=new zt}copy(t,e){return super.copy(t,e),this.matrixWorldInverse.copy(t.matrixWorldInverse),this.projectionMatrix.copy(t.projectionMatrix),this.projectionMatrixInverse.copy(t.projectionMatrixInverse),this}getWorldDirection(t){this.updateWorldMatrix(!0,!1);let e=this.matrixWorld.elements;return t.set(-e[8],-e[9],-e[10]).normalize()}updateMatrixWorld(t){super.updateMatrixWorld(t),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(t,e){super.updateWorldMatrix(t,e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}clone(){return new this.constructor().copy(this)}},Se=class extends Es{constructor(t=50,e=1,n=.1,i=2e3){super(),this.isPerspectiveCamera=!0,this.type="PerspectiveCamera",this.fov=t,this.zoom=1,this.near=n,this.far=i,this.focus=10,this.aspect=e,this.view=null,this.filmGauge=35,this.filmOffset=0,this.updateProjectionMatrix()}copy(t,e){return super.copy(t,e),this.fov=t.fov,this.zoom=t.zoom,this.near=t.near,this.far=t.far,this.focus=t.focus,this.aspect=t.aspect,this.view=t.view===null?null:Object.assign({},t.view),this.filmGauge=t.filmGauge,this.filmOffset=t.filmOffset,this}setFocalLength(t){let e=.5*this.getFilmHeight()/t;this.fov=ha*2*Math.atan(e),this.updateProjectionMatrix()}getFocalLength(){let t=Math.tan(nr*.5*this.fov);return .5*this.getFilmHeight()/t}getEffectiveFOV(){return ha*2*Math.atan(Math.tan(nr*.5*this.fov)/this.zoom)}getFilmWidth(){return this.filmGauge*Math.min(this.aspect,1)}getFilmHeight(){return this.filmGauge/Math.max(this.aspect,1)}setViewOffset(t,e,n,i,s,a){this.aspect=t/e,this.view===null&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=t,this.view.fullHeight=e,this.view.offsetX=n,this.view.offsetY=i,this.view.width=s,this.view.height=a,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){let t=this.near,e=t*Math.tan(nr*.5*this.fov)/this.zoom,n=2*e,i=this.aspect*n,s=-.5*i,a=this.view;if(this.view!==null&&this.view.enabled){let c=a.fullWidth,l=a.fullHeight;s+=a.offsetX*i/c,e-=a.offsetY*n/l,i*=a.width/c,n*=a.height/l}let o=this.filmOffset;o!==0&&(s+=t*o/this.getFilmWidth()),this.projectionMatrix.makePerspective(s,s+i,e,e-n,t,this.far),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(t){let e=super.toJSON(t);return e.object.fov=this.fov,e.object.zoom=this.zoom,e.object.near=this.near,e.object.far=this.far,e.object.focus=this.focus,e.object.aspect=this.aspect,this.view!==null&&(e.object.view=Object.assign({},this.view)),e.object.filmGauge=this.filmGauge,e.object.filmOffset=this.filmOffset,e}},jn=-90,Qn=1,zr=class extends pe{constructor(t,e,n){super(),this.type="CubeCamera",this.renderTarget=n;let i=new Se(jn,Qn,t,e);i.layers=this.layers,i.up.set(0,1,0),i.lookAt(1,0,0),this.add(i);let s=new Se(jn,Qn,t,e);s.layers=this.layers,s.up.set(0,1,0),s.lookAt(-1,0,0),this.add(s);let a=new Se(jn,Qn,t,e);a.layers=this.layers,a.up.set(0,0,-1),a.lookAt(0,1,0),this.add(a);let o=new Se(jn,Qn,t,e);o.layers=this.layers,o.up.set(0,0,1),o.lookAt(0,-1,0),this.add(o);let c=new Se(jn,Qn,t,e);c.layers=this.layers,c.up.set(0,1,0),c.lookAt(0,0,1),this.add(c);let l=new Se(jn,Qn,t,e);l.layers=this.layers,l.up.set(0,1,0),l.lookAt(0,0,-1),this.add(l)}update(t,e){this.parent===null&&this.updateMatrixWorld();let n=this.renderTarget,[i,s,a,o,c,l]=this.children,h=t.getRenderTarget(),f=t.toneMapping,u=t.xr.enabled;t.toneMapping=nn,t.xr.enabled=!1;let m=n.texture.generateMipmaps;n.texture.generateMipmaps=!1,t.setRenderTarget(n,0),t.render(e,i),t.setRenderTarget(n,1),t.render(e,s),t.setRenderTarget(n,2),t.render(e,a),t.setRenderTarget(n,3),t.render(e,o),t.setRenderTarget(n,4),t.render(e,c),n.texture.generateMipmaps=m,t.setRenderTarget(n,5),t.render(e,l),t.setRenderTarget(h),t.toneMapping=f,t.xr.enabled=u,n.texture.needsPMREMUpdate=!0}},Cs=class extends ue{constructor(t,e,n,i,s,a,o,c,l,h){t=t!==void 0?t:[],e=e!==void 0?e:ci,super(t,e,n,i,s,a,o,c,l,h),this.isCubeTexture=!0,this.flipY=!1}get images(){return this.image}set images(t){this.image=t}},Or=class extends rn{constructor(t=1,e={}){super(t,t,e),this.isWebGLCubeRenderTarget=!0;let n={width:t,height:t,depth:1},i=[n,n,n,n,n,n];this.texture=new Cs(i,e.mapping,e.wrapS,e.wrapT,e.magFilter,e.minFilter,e.format,e.type,e.anisotropy,e.encoding),this.texture.isRenderTargetTexture=!0,this.texture.generateMipmaps=e.generateMipmaps!==void 0?e.generateMipmaps:!1,this.texture.minFilter=e.minFilter!==void 0?e.minFilter:Re}fromEquirectangularTexture(t,e){this.texture.type=e.type,this.texture.encoding=e.encoding,this.texture.generateMipmaps=e.generateMipmaps,this.texture.minFilter=e.minFilter,this.texture.magFilter=e.magFilter;let n={uniforms:{tEquirect:{value:null}},vertexShader:`\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\tvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\n\t\t\t\t\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n\n\t\t\t\t}\n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvWorldDirection = transformDirection( position, modelMatrix );\n\n\t\t\t\t\t#include \n\t\t\t\t\t#include \n\n\t\t\t\t}\n\t\t\t`,fragmentShader:`\n\n\t\t\t\tuniform sampler2D tEquirect;\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\t#include \n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvec3 direction = normalize( vWorldDirection );\n\n\t\t\t\t\tvec2 sampleUV = equirectUv( direction );\n\n\t\t\t\t\tgl_FragColor = texture2D( tEquirect, sampleUV );\n\n\t\t\t\t}\n\t\t\t`},i=new zn(5,5,5),s=new on({name:"CubemapFromEquirect",uniforms:di(n.uniforms),vertexShader:n.vertexShader,fragmentShader:n.fragmentShader,side:he,blending:pn});s.uniforms.tEquirect.value=e;let a=new qe(i,s),o=e.minFilter;return e.minFilter===Oi&&(e.minFilter=Re),new zr(1,10,this).update(t,a),e.minFilter=o,a.geometry.dispose(),a.material.dispose(),this}clear(t,e,n,i){let s=t.getRenderTarget();for(let a=0;a<6;a++)t.setRenderTarget(this,a),t.clear(e,n,i);t.setRenderTarget(s)}},wr=new R,Vl=new R,Gl=new le,Te=class{constructor(t=new R(1,0,0),e=0){this.isPlane=!0,this.normal=t,this.constant=e}set(t,e){return this.normal.copy(t),this.constant=e,this}setComponents(t,e,n,i){return this.normal.set(t,e,n),this.constant=i,this}setFromNormalAndCoplanarPoint(t,e){return this.normal.copy(t),this.constant=-e.dot(this.normal),this}setFromCoplanarPoints(t,e,n){let i=wr.subVectors(n,e).cross(Vl.subVectors(t,e)).normalize();return this.setFromNormalAndCoplanarPoint(i,t),this}copy(t){return this.normal.copy(t.normal),this.constant=t.constant,this}normalize(){let t=1/this.normal.length();return this.normal.multiplyScalar(t),this.constant*=t,this}negate(){return this.constant*=-1,this.normal.negate(),this}distanceToPoint(t){return this.normal.dot(t)+this.constant}distanceToSphere(t){return this.distanceToPoint(t.center)-t.radius}projectPoint(t,e){return e.copy(this.normal).multiplyScalar(-this.distanceToPoint(t)).add(t)}intersectLine(t,e){let n=t.delta(wr),i=this.normal.dot(n);if(i===0)return this.distanceToPoint(t.start)===0?e.copy(t.start):null;let s=-(t.start.dot(this.normal)+this.constant)/i;return s<0||s>1?null:e.copy(n).multiplyScalar(s).add(t.start)}intersectsLine(t){let e=this.distanceToPoint(t.start),n=this.distanceToPoint(t.end);return e<0&&n>0||n<0&&e>0}intersectsBox(t){return t.intersectsPlane(this)}intersectsSphere(t){return t.intersectsPlane(this)}coplanarPoint(t){return t.copy(this.normal).multiplyScalar(-this.constant)}applyMatrix4(t,e){let n=e||Gl.getNormalMatrix(t),i=this.coplanarPoint(wr).applyMatrix4(t),s=this.normal.applyMatrix3(n).normalize();return this.constant=-i.dot(s),this}translate(t){return this.constant-=t.dot(this.normal),this}equals(t){return t.normal.equals(this.normal)&&t.constant===this.constant}clone(){return new this.constructor().copy(this)}},ti=new Fn,us=new R,Ps=class{constructor(t=new Te,e=new Te,n=new Te,i=new Te,s=new Te,a=new Te){this.planes=[t,e,n,i,s,a]}set(t,e,n,i,s,a){let o=this.planes;return o[0].copy(t),o[1].copy(e),o[2].copy(n),o[3].copy(i),o[4].copy(s),o[5].copy(a),this}copy(t){let e=this.planes;for(let n=0;n<6;n++)e[n].copy(t.planes[n]);return this}setFromProjectionMatrix(t){let e=this.planes,n=t.elements,i=n[0],s=n[1],a=n[2],o=n[3],c=n[4],l=n[5],h=n[6],f=n[7],u=n[8],m=n[9],x=n[10],p=n[11],d=n[12],g=n[13],M=n[14],_=n[15];return e[0].setComponents(o-i,f-c,p-u,_-d).normalize(),e[1].setComponents(o+i,f+c,p+u,_+d).normalize(),e[2].setComponents(o+s,f+l,p+m,_+g).normalize(),e[3].setComponents(o-s,f-l,p-m,_-g).normalize(),e[4].setComponents(o-a,f-h,p-x,_-M).normalize(),e[5].setComponents(o+a,f+h,p+x,_+M).normalize(),this}intersectsObject(t){let e=t.geometry;return e.boundingSphere===null&&e.computeBoundingSphere(),ti.copy(e.boundingSphere).applyMatrix4(t.matrixWorld),this.intersectsSphere(ti)}intersectsSprite(t){return ti.center.set(0,0,0),ti.radius=.7071067811865476,ti.applyMatrix4(t.matrixWorld),this.intersectsSphere(ti)}intersectsSphere(t){let e=this.planes,n=t.center,i=-t.radius;for(let s=0;s<6;s++)if(e[s].distanceToPoint(n)0?t.max.x:t.min.x,us.y=i.normal.y>0?t.max.y:t.min.y,us.z=i.normal.z>0?t.max.z:t.min.z,i.distanceToPoint(us)<0)return!1}return!0}containsPoint(t){let e=this.planes;for(let n=0;n<6;n++)if(e[n].distanceToPoint(t)<0)return!1;return!0}clone(){return new this.constructor().copy(this)}};function Qa(){let r=null,t=!1,e=null,n=null;function i(s,a){e(s,a),n=r.requestAnimationFrame(i)}return{start:function(){t!==!0&&e!==null&&(n=r.requestAnimationFrame(i),t=!0)},stop:function(){r.cancelAnimationFrame(n),t=!1},setAnimationLoop:function(s){e=s},setContext:function(s){r=s}}}function Hl(r,t){let e=t.isWebGL2,n=new WeakMap;function i(l,h){let f=l.array,u=l.usage,m=r.createBuffer();r.bindBuffer(h,m),r.bufferData(h,f,u),l.onUploadCallback();let x;if(f instanceof Float32Array)x=5126;else if(f instanceof Uint16Array)if(l.isFloat16BufferAttribute)if(e)x=5131;else throw new Error("THREE.WebGLAttributes: Usage of Float16BufferAttribute requires WebGL2.");else x=5123;else if(f instanceof Int16Array)x=5122;else if(f instanceof Uint32Array)x=5125;else if(f instanceof Int32Array)x=5124;else if(f instanceof Int8Array)x=5120;else if(f instanceof Uint8Array)x=5121;else if(f instanceof Uint8ClampedArray)x=5121;else throw new Error("THREE.WebGLAttributes: Unsupported buffer data format: "+f);return{buffer:m,type:x,bytesPerElement:f.BYTES_PER_ELEMENT,version:l.version}}function s(l,h,f){let u=h.array,m=h.updateRange;r.bindBuffer(f,l),m.count===-1?r.bufferSubData(f,0,u):(e?r.bufferSubData(f,m.offset*u.BYTES_PER_ELEMENT,u,m.offset,m.count):r.bufferSubData(f,m.offset*u.BYTES_PER_ELEMENT,u.subarray(m.offset,m.offset+m.count)),m.count=-1),h.onUploadCallback()}function a(l){return l.isInterleavedBufferAttribute&&(l=l.data),n.get(l)}function o(l){l.isInterleavedBufferAttribute&&(l=l.data);let h=n.get(l);h&&(r.deleteBuffer(h.buffer),n.delete(l))}function c(l,h){if(l.isGLBufferAttribute){let u=n.get(l);(!u||u.version 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v;\n\treturn cross( v1, v2 ) * theta_sintheta;\n}\nvec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) {\n\tvec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ];\n\tvec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ];\n\tvec3 lightNormal = cross( v1, v2 );\n\tif( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 );\n\tvec3 T1, T2;\n\tT1 = normalize( V - N * dot( V, N ) );\n\tT2 = - cross( N, T1 );\n\tmat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) );\n\tvec3 coords[ 4 ];\n\tcoords[ 0 ] = mat * ( rectCoords[ 0 ] - P );\n\tcoords[ 1 ] = mat * ( rectCoords[ 1 ] - P );\n\tcoords[ 2 ] = mat * ( rectCoords[ 2 ] - P );\n\tcoords[ 3 ] = mat * ( rectCoords[ 3 ] - P );\n\tcoords[ 0 ] = normalize( coords[ 0 ] );\n\tcoords[ 1 ] = normalize( coords[ 1 ] );\n\tcoords[ 2 ] = normalize( coords[ 2 ] );\n\tcoords[ 3 ] = normalize( coords[ 3 ] );\n\tvec3 vectorFormFactor = vec3( 0.0 );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );\n\tfloat result = LTC_ClippedSphereFormFactor( vectorFormFactor );\n\treturn vec3( result );\n}\nfloat G_BlinnPhong_Implicit( ) {\n\treturn 0.25;\n}\nfloat D_BlinnPhong( const in float shininess, const in float dotNH ) {\n\treturn RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess );\n}\nvec3 BRDF_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float shininess ) {\n\tvec3 halfDir = normalize( lightDir + viewDir );\n\tfloat dotNH = saturate( dot( normal, halfDir ) );\n\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\n\tvec3 F = F_Schlick( specularColor, 1.0, dotVH );\n\tfloat G = G_BlinnPhong_Implicit( );\n\tfloat D = D_BlinnPhong( shininess, dotNH );\n\treturn F * ( G * D );\n}\n#if defined( USE_SHEEN )\nfloat D_Charlie( float roughness, float dotNH ) {\n\tfloat alpha = pow2( roughness );\n\tfloat invAlpha = 1.0 / alpha;\n\tfloat cos2h = dotNH * dotNH;\n\tfloat sin2h = max( 1.0 - cos2h, 0.0078125 );\n\treturn ( 2.0 + invAlpha ) * pow( sin2h, invAlpha * 0.5 ) / ( 2.0 * PI );\n}\nfloat V_Neubelt( float dotNV, float dotNL ) {\n\treturn saturate( 1.0 / ( 4.0 * ( dotNL + dotNV - dotNL * dotNV ) ) );\n}\nvec3 BRDF_Sheen( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, vec3 sheenColor, const in float sheenRoughness ) {\n\tvec3 halfDir = normalize( lightDir + viewDir );\n\tfloat dotNL = saturate( dot( normal, lightDir ) );\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\tfloat dotNH = saturate( dot( normal, halfDir ) );\n\tfloat D = D_Charlie( sheenRoughness, dotNH );\n\tfloat V = V_Neubelt( dotNV, dotNL );\n\treturn sheenColor * ( D * V );\n}\n#endif`,Ql=`#ifdef USE_IRIDESCENCE\n\tconst mat3 XYZ_TO_REC709 = mat3(\n\t\t 3.2404542, -0.9692660, 0.0556434,\n\t\t-1.5371385, 1.8760108, -0.2040259,\n\t\t-0.4985314, 0.0415560, 1.0572252\n\t);\n\tvec3 Fresnel0ToIor( vec3 fresnel0 ) {\n\t\tvec3 sqrtF0 = sqrt( fresnel0 );\n\t\treturn ( vec3( 1.0 ) + sqrtF0 ) / ( vec3( 1.0 ) - sqrtF0 );\n\t}\n\tvec3 IorToFresnel0( vec3 transmittedIor, float incidentIor ) {\n\t\treturn pow2( ( transmittedIor - vec3( incidentIor ) ) / ( transmittedIor + vec3( incidentIor ) ) );\n\t}\n\tfloat IorToFresnel0( float transmittedIor, float incidentIor ) {\n\t\treturn pow2( ( transmittedIor - incidentIor ) / ( transmittedIor + incidentIor ));\n\t}\n\tvec3 evalSensitivity( float OPD, vec3 shift ) {\n\t\tfloat phase = 2.0 * PI * OPD * 1.0e-9;\n\t\tvec3 val = vec3( 5.4856e-13, 4.4201e-13, 5.2481e-13 );\n\t\tvec3 pos = vec3( 1.6810e+06, 1.7953e+06, 2.2084e+06 );\n\t\tvec3 var = vec3( 4.3278e+09, 9.3046e+09, 6.6121e+09 );\n\t\tvec3 xyz = val * sqrt( 2.0 * PI * var ) * cos( pos * phase + shift ) * exp( - pow2( phase ) * var );\n\t\txyz.x += 9.7470e-14 * sqrt( 2.0 * PI * 4.5282e+09 ) * cos( 2.2399e+06 * phase + shift[ 0 ] ) * exp( - 4.5282e+09 * pow2( phase ) );\n\t\txyz /= 1.0685e-7;\n\t\tvec3 rgb = XYZ_TO_REC709 * xyz;\n\t\treturn rgb;\n\t}\n\tvec3 evalIridescence( float outsideIOR, float eta2, float cosTheta1, float thinFilmThickness, vec3 baseF0 ) {\n\t\tvec3 I;\n\t\tfloat iridescenceIOR = mix( outsideIOR, eta2, smoothstep( 0.0, 0.03, thinFilmThickness ) );\n\t\tfloat sinTheta2Sq = pow2( outsideIOR / iridescenceIOR ) * ( 1.0 - pow2( cosTheta1 ) );\n\t\tfloat cosTheta2Sq = 1.0 - sinTheta2Sq;\n\t\tif ( cosTheta2Sq < 0.0 ) {\n\t\t\t return vec3( 1.0 );\n\t\t}\n\t\tfloat cosTheta2 = sqrt( cosTheta2Sq );\n\t\tfloat R0 = IorToFresnel0( iridescenceIOR, outsideIOR );\n\t\tfloat R12 = F_Schlick( R0, 1.0, cosTheta1 );\n\t\tfloat R21 = R12;\n\t\tfloat T121 = 1.0 - R12;\n\t\tfloat phi12 = 0.0;\n\t\tif ( iridescenceIOR < outsideIOR ) phi12 = PI;\n\t\tfloat phi21 = PI - phi12;\n\t\tvec3 baseIOR = Fresnel0ToIor( clamp( baseF0, 0.0, 0.9999 ) );\t\tvec3 R1 = IorToFresnel0( baseIOR, iridescenceIOR );\n\t\tvec3 R23 = F_Schlick( R1, 1.0, cosTheta2 );\n\t\tvec3 phi23 = vec3( 0.0 );\n\t\tif ( baseIOR[ 0 ] < iridescenceIOR ) phi23[ 0 ] = PI;\n\t\tif ( baseIOR[ 1 ] < iridescenceIOR ) phi23[ 1 ] = PI;\n\t\tif ( baseIOR[ 2 ] < iridescenceIOR ) phi23[ 2 ] = PI;\n\t\tfloat OPD = 2.0 * iridescenceIOR * thinFilmThickness * cosTheta2;\n\t\tvec3 phi = vec3( phi21 ) + phi23;\n\t\tvec3 R123 = clamp( R12 * R23, 1e-5, 0.9999 );\n\t\tvec3 r123 = sqrt( R123 );\n\t\tvec3 Rs = pow2( T121 ) * R23 / ( vec3( 1.0 ) - R123 );\n\t\tvec3 C0 = R12 + Rs;\n\t\tI = C0;\n\t\tvec3 Cm = Rs - T121;\n\t\tfor ( int m = 1; m <= 2; ++ m ) {\n\t\t\tCm *= r123;\n\t\t\tvec3 Sm = 2.0 * evalSensitivity( float( m ) * OPD, float( m ) * phi );\n\t\t\tI += Cm * Sm;\n\t\t}\n\t\treturn max( I, vec3( 0.0 ) );\n\t}\n#endif`,th=`#ifdef USE_BUMPMAP\n\tuniform sampler2D bumpMap;\n\tuniform float bumpScale;\n\tvec2 dHdxy_fwd() {\n\t\tvec2 dSTdx = dFdx( vUv );\n\t\tvec2 dSTdy = dFdy( vUv );\n\t\tfloat Hll = bumpScale * texture2D( bumpMap, vUv ).x;\n\t\tfloat dBx = bumpScale * texture2D( bumpMap, vUv + dSTdx ).x - Hll;\n\t\tfloat dBy = bumpScale * texture2D( bumpMap, vUv + dSTdy ).x - Hll;\n\t\treturn vec2( dBx, dBy );\n\t}\n\tvec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy, float faceDirection ) {\n\t\tvec3 vSigmaX = dFdx( surf_pos.xyz );\n\t\tvec3 vSigmaY = dFdy( surf_pos.xyz );\n\t\tvec3 vN = surf_norm;\n\t\tvec3 R1 = cross( vSigmaY, vN );\n\t\tvec3 R2 = cross( vN, vSigmaX );\n\t\tfloat fDet = dot( vSigmaX, R1 ) * faceDirection;\n\t\tvec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );\n\t\treturn normalize( abs( fDet ) * surf_norm - vGrad );\n\t}\n#endif`,eh=`#if NUM_CLIPPING_PLANES > 0\n\tvec4 plane;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\n\t\tplane = clippingPlanes[ i ];\n\t\tif ( dot( vClipPosition, plane.xyz ) > plane.w ) discard;\n\t}\n\t#pragma unroll_loop_end\n\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\n\t\tbool clipped = true;\n\t\t#pragma unroll_loop_start\n\t\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\n\t\t\tplane = clippingPlanes[ i ];\n\t\t\tclipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped;\n\t\t}\n\t\t#pragma unroll_loop_end\n\t\tif ( clipped ) discard;\n\t#endif\n#endif`,nh=`#if NUM_CLIPPING_PLANES > 0\n\tvarying vec3 vClipPosition;\n\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\n#endif`,ih=`#if NUM_CLIPPING_PLANES > 0\n\tvarying vec3 vClipPosition;\n#endif`,sh=`#if NUM_CLIPPING_PLANES > 0\n\tvClipPosition = - mvPosition.xyz;\n#endif`,rh=`#if defined( USE_COLOR_ALPHA )\n\tdiffuseColor *= vColor;\n#elif defined( USE_COLOR )\n\tdiffuseColor.rgb *= vColor;\n#endif`,oh=`#if defined( USE_COLOR_ALPHA )\n\tvarying vec4 vColor;\n#elif defined( USE_COLOR )\n\tvarying vec3 vColor;\n#endif`,ah=`#if defined( USE_COLOR_ALPHA )\n\tvarying vec4 vColor;\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\n\tvarying vec3 vColor;\n#endif`,ch=`#if defined( USE_COLOR_ALPHA )\n\tvColor = vec4( 1.0 );\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\n\tvColor = vec3( 1.0 );\n#endif\n#ifdef USE_COLOR\n\tvColor *= color;\n#endif\n#ifdef USE_INSTANCING_COLOR\n\tvColor.xyz *= instanceColor.xyz;\n#endif`,lh=`#define PI 3.141592653589793\n#define PI2 6.283185307179586\n#define PI_HALF 1.5707963267948966\n#define RECIPROCAL_PI 0.3183098861837907\n#define RECIPROCAL_PI2 0.15915494309189535\n#define EPSILON 1e-6\n#ifndef saturate\n#define saturate( a ) clamp( a, 0.0, 1.0 )\n#endif\n#define whiteComplement( a ) ( 1.0 - saturate( a ) )\nfloat pow2( const in float x ) { return x*x; }\nvec3 pow2( const in vec3 x ) { return x*x; }\nfloat pow3( const in float x ) { return x*x*x; }\nfloat pow4( const in float x ) { float x2 = x*x; return x2*x2; }\nfloat max3( const in vec3 v ) { return max( max( v.x, v.y ), v.z ); }\nfloat average( const in vec3 v ) { return dot( v, vec3( 0.3333333 ) ); }\nhighp float rand( const in vec2 uv ) {\n\tconst highp float a = 12.9898, b = 78.233, c = 43758.5453;\n\thighp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );\n\treturn fract( sin( sn ) * c );\n}\n#ifdef HIGH_PRECISION\n\tfloat precisionSafeLength( vec3 v ) { return length( v ); }\n#else\n\tfloat precisionSafeLength( vec3 v ) {\n\t\tfloat maxComponent = max3( abs( v ) );\n\t\treturn length( v / maxComponent ) * maxComponent;\n\t}\n#endif\nstruct IncidentLight {\n\tvec3 color;\n\tvec3 direction;\n\tbool visible;\n};\nstruct ReflectedLight {\n\tvec3 directDiffuse;\n\tvec3 directSpecular;\n\tvec3 indirectDiffuse;\n\tvec3 indirectSpecular;\n};\nstruct GeometricContext {\n\tvec3 position;\n\tvec3 normal;\n\tvec3 viewDir;\n#ifdef USE_CLEARCOAT\n\tvec3 clearcoatNormal;\n#endif\n};\nvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n}\nvec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {\n\treturn normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\n}\nmat3 transposeMat3( const in mat3 m ) {\n\tmat3 tmp;\n\ttmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x );\n\ttmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y );\n\ttmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z );\n\treturn tmp;\n}\nfloat luminance( const in vec3 rgb ) {\n\tconst vec3 weights = vec3( 0.2126729, 0.7151522, 0.0721750 );\n\treturn dot( weights, rgb );\n}\nbool isPerspectiveMatrix( mat4 m ) {\n\treturn m[ 2 ][ 3 ] == - 1.0;\n}\nvec2 equirectUv( in vec3 dir ) {\n\tfloat u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5;\n\tfloat v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\n\treturn vec2( u, v );\n}`,hh=`#ifdef ENVMAP_TYPE_CUBE_UV\n\t#define cubeUV_minMipLevel 4.0\n\t#define cubeUV_minTileSize 16.0\n\tfloat getFace( vec3 direction ) {\n\t\tvec3 absDirection = abs( direction );\n\t\tfloat face = - 1.0;\n\t\tif ( absDirection.x > absDirection.z ) {\n\t\t\tif ( absDirection.x > absDirection.y )\n\t\t\t\tface = direction.x > 0.0 ? 0.0 : 3.0;\n\t\t\telse\n\t\t\t\tface = direction.y > 0.0 ? 1.0 : 4.0;\n\t\t} else {\n\t\t\tif ( absDirection.z > absDirection.y )\n\t\t\t\tface = direction.z > 0.0 ? 2.0 : 5.0;\n\t\t\telse\n\t\t\t\tface = direction.y > 0.0 ? 1.0 : 4.0;\n\t\t}\n\t\treturn face;\n\t}\n\tvec2 getUV( vec3 direction, float face ) {\n\t\tvec2 uv;\n\t\tif ( face == 0.0 ) {\n\t\t\tuv = vec2( direction.z, direction.y ) / abs( direction.x );\n\t\t} else if ( face == 1.0 ) {\n\t\t\tuv = vec2( - direction.x, - direction.z ) / abs( direction.y );\n\t\t} else if ( face == 2.0 ) {\n\t\t\tuv = vec2( - direction.x, direction.y ) / abs( direction.z );\n\t\t} else if ( face == 3.0 ) {\n\t\t\tuv = vec2( - direction.z, direction.y ) / abs( direction.x );\n\t\t} else if ( face == 4.0 ) {\n\t\t\tuv = vec2( - direction.x, direction.z ) / abs( direction.y );\n\t\t} else {\n\t\t\tuv = vec2( direction.x, direction.y ) / abs( direction.z );\n\t\t}\n\t\treturn 0.5 * ( uv + 1.0 );\n\t}\n\tvec3 bilinearCubeUV( sampler2D envMap, vec3 direction, float mipInt ) {\n\t\tfloat face = getFace( direction );\n\t\tfloat filterInt = max( cubeUV_minMipLevel - mipInt, 0.0 );\n\t\tmipInt = max( mipInt, cubeUV_minMipLevel );\n\t\tfloat faceSize = exp2( mipInt );\n\t\thighp vec2 uv = getUV( direction, face ) * ( faceSize - 2.0 ) + 1.0;\n\t\tif ( face > 2.0 ) {\n\t\t\tuv.y += faceSize;\n\t\t\tface -= 3.0;\n\t\t}\n\t\tuv.x += face * faceSize;\n\t\tuv.x += filterInt * 3.0 * cubeUV_minTileSize;\n\t\tuv.y += 4.0 * ( exp2( CUBEUV_MAX_MIP ) - faceSize );\n\t\tuv.x *= CUBEUV_TEXEL_WIDTH;\n\t\tuv.y *= CUBEUV_TEXEL_HEIGHT;\n\t\t#ifdef texture2DGradEXT\n\t\t\treturn texture2DGradEXT( envMap, uv, vec2( 0.0 ), vec2( 0.0 ) ).rgb;\n\t\t#else\n\t\t\treturn texture2D( envMap, uv ).rgb;\n\t\t#endif\n\t}\n\t#define cubeUV_r0 1.0\n\t#define cubeUV_v0 0.339\n\t#define cubeUV_m0 - 2.0\n\t#define cubeUV_r1 0.8\n\t#define cubeUV_v1 0.276\n\t#define cubeUV_m1 - 1.0\n\t#define cubeUV_r4 0.4\n\t#define cubeUV_v4 0.046\n\t#define cubeUV_m4 2.0\n\t#define cubeUV_r5 0.305\n\t#define cubeUV_v5 0.016\n\t#define cubeUV_m5 3.0\n\t#define cubeUV_r6 0.21\n\t#define cubeUV_v6 0.0038\n\t#define cubeUV_m6 4.0\n\tfloat roughnessToMip( float roughness ) {\n\t\tfloat mip = 0.0;\n\t\tif ( roughness >= cubeUV_r1 ) {\n\t\t\tmip = ( cubeUV_r0 - roughness ) * ( cubeUV_m1 - cubeUV_m0 ) / ( cubeUV_r0 - cubeUV_r1 ) + cubeUV_m0;\n\t\t} else if ( roughness >= cubeUV_r4 ) {\n\t\t\tmip = ( cubeUV_r1 - roughness ) * ( cubeUV_m4 - cubeUV_m1 ) / ( cubeUV_r1 - cubeUV_r4 ) + cubeUV_m1;\n\t\t} else if ( roughness >= cubeUV_r5 ) {\n\t\t\tmip = ( cubeUV_r4 - roughness ) * ( cubeUV_m5 - cubeUV_m4 ) / ( cubeUV_r4 - cubeUV_r5 ) + cubeUV_m4;\n\t\t} else if ( roughness >= cubeUV_r6 ) {\n\t\t\tmip = ( cubeUV_r5 - roughness ) * ( cubeUV_m6 - cubeUV_m5 ) / ( cubeUV_r5 - cubeUV_r6 ) + cubeUV_m5;\n\t\t} else {\n\t\t\tmip = - 2.0 * log2( 1.16 * roughness );\t\t}\n\t\treturn mip;\n\t}\n\tvec4 textureCubeUV( sampler2D envMap, vec3 sampleDir, float roughness ) {\n\t\tfloat mip = clamp( roughnessToMip( roughness ), cubeUV_m0, CUBEUV_MAX_MIP );\n\t\tfloat mipF = fract( mip );\n\t\tfloat mipInt = floor( mip );\n\t\tvec3 color0 = bilinearCubeUV( envMap, sampleDir, mipInt );\n\t\tif ( mipF == 0.0 ) {\n\t\t\treturn vec4( color0, 1.0 );\n\t\t} else {\n\t\t\tvec3 color1 = bilinearCubeUV( envMap, sampleDir, mipInt + 1.0 );\n\t\t\treturn vec4( mix( color0, color1, mipF ), 1.0 );\n\t\t}\n\t}\n#endif`,uh=`vec3 transformedNormal = objectNormal;\n#ifdef USE_INSTANCING\n\tmat3 m = mat3( instanceMatrix );\n\ttransformedNormal /= vec3( dot( m[ 0 ], m[ 0 ] ), dot( m[ 1 ], m[ 1 ] ), dot( m[ 2 ], m[ 2 ] ) );\n\ttransformedNormal = m * transformedNormal;\n#endif\ntransformedNormal = normalMatrix * transformedNormal;\n#ifdef FLIP_SIDED\n\ttransformedNormal = - transformedNormal;\n#endif\n#ifdef USE_TANGENT\n\tvec3 transformedTangent = ( modelViewMatrix * vec4( objectTangent, 0.0 ) ).xyz;\n\t#ifdef FLIP_SIDED\n\t\ttransformedTangent = - transformedTangent;\n\t#endif\n#endif`,fh=`#ifdef USE_DISPLACEMENTMAP\n\tuniform sampler2D displacementMap;\n\tuniform float displacementScale;\n\tuniform float displacementBias;\n#endif`,dh=`#ifdef USE_DISPLACEMENTMAP\n\ttransformed += normalize( objectNormal ) * ( texture2D( displacementMap, vUv ).x * displacementScale + displacementBias );\n#endif`,ph=`#ifdef USE_EMISSIVEMAP\n\tvec4 emissiveColor = texture2D( emissiveMap, vUv );\n\ttotalEmissiveRadiance *= emissiveColor.rgb;\n#endif`,mh=`#ifdef USE_EMISSIVEMAP\n\tuniform sampler2D emissiveMap;\n#endif`,gh="gl_FragColor = linearToOutputTexel( gl_FragColor );",xh=`vec4 LinearToLinear( in vec4 value ) {\n\treturn value;\n}\nvec4 LinearTosRGB( in vec4 value ) {\n\treturn vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a );\n}`,_h=`#ifdef USE_ENVMAP\n\t#ifdef ENV_WORLDPOS\n\t\tvec3 cameraToFrag;\n\t\tif ( isOrthographic ) {\n\t\t\tcameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\n\t\t} else {\n\t\t\tcameraToFrag = normalize( vWorldPosition - cameraPosition );\n\t\t}\n\t\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvec3 reflectVec = reflect( cameraToFrag, worldNormal );\n\t\t#else\n\t\t\tvec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio );\n\t\t#endif\n\t#else\n\t\tvec3 reflectVec = vReflect;\n\t#endif\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tvec4 envColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\n\t#else\n\t\tvec4 envColor = vec4( 0.0 );\n\t#endif\n\t#ifdef ENVMAP_BLENDING_MULTIPLY\n\t\toutgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );\n\t#elif defined( ENVMAP_BLENDING_MIX )\n\t\toutgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );\n\t#elif defined( ENVMAP_BLENDING_ADD )\n\t\toutgoingLight += envColor.xyz * specularStrength * reflectivity;\n\t#endif\n#endif`,yh=`#ifdef USE_ENVMAP\n\tuniform float envMapIntensity;\n\tuniform float flipEnvMap;\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tuniform samplerCube envMap;\n\t#else\n\t\tuniform sampler2D envMap;\n\t#endif\n\t\n#endif`,vh=`#ifdef USE_ENVMAP\n\tuniform float reflectivity;\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT )\n\t\t#define ENV_WORLDPOS\n\t#endif\n\t#ifdef ENV_WORLDPOS\n\t\tvarying vec3 vWorldPosition;\n\t\tuniform float refractionRatio;\n\t#else\n\t\tvarying vec3 vReflect;\n\t#endif\n#endif`,Mh=`#ifdef USE_ENVMAP\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT )\n\t\t#define ENV_WORLDPOS\n\t#endif\n\t#ifdef ENV_WORLDPOS\n\t\t\n\t\tvarying vec3 vWorldPosition;\n\t#else\n\t\tvarying vec3 vReflect;\n\t\tuniform float refractionRatio;\n\t#endif\n#endif`,bh=`#ifdef USE_ENVMAP\n\t#ifdef ENV_WORLDPOS\n\t\tvWorldPosition = worldPosition.xyz;\n\t#else\n\t\tvec3 cameraToVertex;\n\t\tif ( isOrthographic ) {\n\t\t\tcameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\n\t\t} else {\n\t\t\tcameraToVertex = normalize( worldPosition.xyz - cameraPosition );\n\t\t}\n\t\tvec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvReflect = reflect( cameraToVertex, worldNormal );\n\t\t#else\n\t\t\tvReflect = refract( cameraToVertex, worldNormal, refractionRatio );\n\t\t#endif\n\t#endif\n#endif`,wh=`#ifdef USE_FOG\n\tvFogDepth = - mvPosition.z;\n#endif`,Sh=`#ifdef USE_FOG\n\tvarying float vFogDepth;\n#endif`,Th=`#ifdef USE_FOG\n\t#ifdef FOG_EXP2\n\t\tfloat fogFactor = 1.0 - exp( - fogDensity * fogDensity * vFogDepth * vFogDepth );\n\t#else\n\t\tfloat fogFactor = smoothstep( fogNear, fogFar, vFogDepth );\n\t#endif\n\tgl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );\n#endif`,Ah=`#ifdef USE_FOG\n\tuniform vec3 fogColor;\n\tvarying float vFogDepth;\n\t#ifdef FOG_EXP2\n\t\tuniform float fogDensity;\n\t#else\n\t\tuniform float fogNear;\n\t\tuniform float fogFar;\n\t#endif\n#endif`,Eh=`#ifdef USE_GRADIENTMAP\n\tuniform sampler2D gradientMap;\n#endif\nvec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {\n\tfloat dotNL = dot( normal, lightDirection );\n\tvec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );\n\t#ifdef USE_GRADIENTMAP\n\t\treturn vec3( texture2D( gradientMap, coord ).r );\n\t#else\n\t\tvec2 fw = fwidth( coord ) * 0.5;\n\t\treturn mix( vec3( 0.7 ), vec3( 1.0 ), smoothstep( 0.7 - fw.x, 0.7 + fw.x, coord.x ) );\n\t#endif\n}`,Ch=`#ifdef USE_LIGHTMAP\n\tvec4 lightMapTexel = texture2D( lightMap, vUv2 );\n\tvec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;\n\treflectedLight.indirectDiffuse += lightMapIrradiance;\n#endif`,Ph=`#ifdef USE_LIGHTMAP\n\tuniform sampler2D lightMap;\n\tuniform float lightMapIntensity;\n#endif`,Rh=`LambertMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;\nmaterial.specularStrength = specularStrength;`,Lh=`varying vec3 vViewPosition;\nstruct LambertMaterial {\n\tvec3 diffuseColor;\n\tfloat specularStrength;\n};\nvoid RE_Direct_Lambert( const in IncidentLight directLight, const in GeometricContext geometry, const in LambertMaterial material, inout ReflectedLight reflectedLight ) {\n\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\n\tvec3 irradiance = dotNL * directLight.color;\n\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectDiffuse_Lambert( const in vec3 irradiance, const in GeometricContext geometry, const in LambertMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\n#define RE_Direct\t\t\t\tRE_Direct_Lambert\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_Lambert`,Ih=`uniform bool receiveShadow;\nuniform vec3 ambientLightColor;\nuniform vec3 lightProbe[ 9 ];\nvec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {\n\tfloat x = normal.x, y = normal.y, z = normal.z;\n\tvec3 result = shCoefficients[ 0 ] * 0.886227;\n\tresult += shCoefficients[ 1 ] * 2.0 * 0.511664 * y;\n\tresult += shCoefficients[ 2 ] * 2.0 * 0.511664 * z;\n\tresult += shCoefficients[ 3 ] * 2.0 * 0.511664 * x;\n\tresult += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y;\n\tresult += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z;\n\tresult += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 );\n\tresult += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z;\n\tresult += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y );\n\treturn result;\n}\nvec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in vec3 normal ) {\n\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n\tvec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe );\n\treturn irradiance;\n}\nvec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {\n\tvec3 irradiance = ambientLightColor;\n\treturn irradiance;\n}\nfloat getDistanceAttenuation( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {\n\t#if defined ( PHYSICALLY_CORRECT_LIGHTS )\n\t\tfloat distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );\n\t\tif ( cutoffDistance > 0.0 ) {\n\t\t\tdistanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\n\t\t}\n\t\treturn distanceFalloff;\n\t#else\n\t\tif ( cutoffDistance > 0.0 && decayExponent > 0.0 ) {\n\t\t\treturn pow( saturate( - lightDistance / cutoffDistance + 1.0 ), decayExponent );\n\t\t}\n\t\treturn 1.0;\n\t#endif\n}\nfloat getSpotAttenuation( const in float coneCosine, const in float penumbraCosine, const in float angleCosine ) {\n\treturn smoothstep( coneCosine, penumbraCosine, angleCosine );\n}\n#if NUM_DIR_LIGHTS > 0\n\tstruct DirectionalLight {\n\t\tvec3 direction;\n\t\tvec3 color;\n\t};\n\tuniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];\n\tvoid getDirectionalLightInfo( const in DirectionalLight directionalLight, const in GeometricContext geometry, out IncidentLight light ) {\n\t\tlight.color = directionalLight.color;\n\t\tlight.direction = directionalLight.direction;\n\t\tlight.visible = true;\n\t}\n#endif\n#if NUM_POINT_LIGHTS > 0\n\tstruct PointLight {\n\t\tvec3 position;\n\t\tvec3 color;\n\t\tfloat distance;\n\t\tfloat decay;\n\t};\n\tuniform PointLight pointLights[ NUM_POINT_LIGHTS ];\n\tvoid getPointLightInfo( const in PointLight pointLight, const in GeometricContext geometry, out IncidentLight light ) {\n\t\tvec3 lVector = pointLight.position - geometry.position;\n\t\tlight.direction = normalize( lVector );\n\t\tfloat lightDistance = length( lVector );\n\t\tlight.color = pointLight.color;\n\t\tlight.color *= getDistanceAttenuation( lightDistance, pointLight.distance, pointLight.decay );\n\t\tlight.visible = ( light.color != vec3( 0.0 ) );\n\t}\n#endif\n#if NUM_SPOT_LIGHTS > 0\n\tstruct SpotLight {\n\t\tvec3 position;\n\t\tvec3 direction;\n\t\tvec3 color;\n\t\tfloat distance;\n\t\tfloat decay;\n\t\tfloat coneCos;\n\t\tfloat penumbraCos;\n\t};\n\tuniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];\n\tvoid getSpotLightInfo( const in SpotLight spotLight, const in GeometricContext geometry, out IncidentLight light ) {\n\t\tvec3 lVector = spotLight.position - geometry.position;\n\t\tlight.direction = normalize( lVector );\n\t\tfloat angleCos = dot( light.direction, spotLight.direction );\n\t\tfloat spotAttenuation = getSpotAttenuation( spotLight.coneCos, spotLight.penumbraCos, angleCos );\n\t\tif ( spotAttenuation > 0.0 ) {\n\t\t\tfloat lightDistance = length( lVector );\n\t\t\tlight.color = spotLight.color * spotAttenuation;\n\t\t\tlight.color *= getDistanceAttenuation( lightDistance, spotLight.distance, spotLight.decay );\n\t\t\tlight.visible = ( light.color != vec3( 0.0 ) );\n\t\t} else {\n\t\t\tlight.color = vec3( 0.0 );\n\t\t\tlight.visible = false;\n\t\t}\n\t}\n#endif\n#if NUM_RECT_AREA_LIGHTS > 0\n\tstruct RectAreaLight {\n\t\tvec3 color;\n\t\tvec3 position;\n\t\tvec3 halfWidth;\n\t\tvec3 halfHeight;\n\t};\n\tuniform sampler2D ltc_1;\tuniform sampler2D ltc_2;\n\tuniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ];\n#endif\n#if NUM_HEMI_LIGHTS > 0\n\tstruct HemisphereLight {\n\t\tvec3 direction;\n\t\tvec3 skyColor;\n\t\tvec3 groundColor;\n\t};\n\tuniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];\n\tvec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in vec3 normal ) {\n\t\tfloat dotNL = dot( normal, hemiLight.direction );\n\t\tfloat hemiDiffuseWeight = 0.5 * dotNL + 0.5;\n\t\tvec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );\n\t\treturn irradiance;\n\t}\n#endif`,Dh=`#if defined( USE_ENVMAP )\n\tvec3 getIBLIrradiance( const in vec3 normal ) {\n\t\t#if defined( ENVMAP_TYPE_CUBE_UV )\n\t\t\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n\t\t\tvec4 envMapColor = textureCubeUV( envMap, worldNormal, 1.0 );\n\t\t\treturn PI * envMapColor.rgb * envMapIntensity;\n\t\t#else\n\t\t\treturn vec3( 0.0 );\n\t\t#endif\n\t}\n\tvec3 getIBLRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness ) {\n\t\t#if defined( ENVMAP_TYPE_CUBE_UV )\n\t\t\tvec3 reflectVec = reflect( - viewDir, normal );\n\t\t\treflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );\n\t\t\treflectVec = inverseTransformDirection( reflectVec, viewMatrix );\n\t\t\tvec4 envMapColor = textureCubeUV( envMap, reflectVec, roughness );\n\t\t\treturn envMapColor.rgb * envMapIntensity;\n\t\t#else\n\t\t\treturn vec3( 0.0 );\n\t\t#endif\n\t}\n#endif`,Nh=`ToonMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;`,Fh=`varying vec3 vViewPosition;\nstruct ToonMaterial {\n\tvec3 diffuseColor;\n};\nvoid RE_Direct_Toon( const in IncidentLight directLight, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\n\tvec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color;\n\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\n#define RE_Direct\t\t\t\tRE_Direct_Toon\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_Toon`,zh=`BlinnPhongMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;\nmaterial.specularColor = specular;\nmaterial.specularShininess = shininess;\nmaterial.specularStrength = specularStrength;`,Oh=`varying vec3 vViewPosition;\nstruct BlinnPhongMaterial {\n\tvec3 diffuseColor;\n\tvec3 specularColor;\n\tfloat specularShininess;\n\tfloat specularStrength;\n};\nvoid RE_Direct_BlinnPhong( const in IncidentLight directLight, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\n\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\n\tvec3 irradiance = dotNL * directLight.color;\n\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n\treflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularShininess ) * material.specularStrength;\n}\nvoid RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\n#define RE_Direct\t\t\t\tRE_Direct_BlinnPhong\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_BlinnPhong`,Bh=`PhysicalMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\nvec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );\nfloat geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );\nmaterial.roughness = max( roughnessFactor, 0.0525 );material.roughness += geometryRoughness;\nmaterial.roughness = min( material.roughness, 1.0 );\n#ifdef IOR\n\tmaterial.ior = ior;\n\t#ifdef SPECULAR\n\t\tfloat specularIntensityFactor = specularIntensity;\n\t\tvec3 specularColorFactor = specularColor;\n\t\t#ifdef USE_SPECULARINTENSITYMAP\n\t\t\tspecularIntensityFactor *= texture2D( specularIntensityMap, vUv ).a;\n\t\t#endif\n\t\t#ifdef USE_SPECULARCOLORMAP\n\t\t\tspecularColorFactor *= texture2D( specularColorMap, vUv ).rgb;\n\t\t#endif\n\t\tmaterial.specularF90 = mix( specularIntensityFactor, 1.0, metalnessFactor );\n\t#else\n\t\tfloat specularIntensityFactor = 1.0;\n\t\tvec3 specularColorFactor = vec3( 1.0 );\n\t\tmaterial.specularF90 = 1.0;\n\t#endif\n\tmaterial.specularColor = mix( min( pow2( ( material.ior - 1.0 ) / ( material.ior + 1.0 ) ) * specularColorFactor, vec3( 1.0 ) ) * specularIntensityFactor, diffuseColor.rgb, metalnessFactor );\n#else\n\tmaterial.specularColor = mix( vec3( 0.04 ), diffuseColor.rgb, metalnessFactor );\n\tmaterial.specularF90 = 1.0;\n#endif\n#ifdef USE_CLEARCOAT\n\tmaterial.clearcoat = clearcoat;\n\tmaterial.clearcoatRoughness = clearcoatRoughness;\n\tmaterial.clearcoatF0 = vec3( 0.04 );\n\tmaterial.clearcoatF90 = 1.0;\n\t#ifdef USE_CLEARCOATMAP\n\t\tmaterial.clearcoat *= texture2D( clearcoatMap, vUv ).x;\n\t#endif\n\t#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n\t\tmaterial.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vUv ).y;\n\t#endif\n\tmaterial.clearcoat = saturate( material.clearcoat );\tmaterial.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 );\n\tmaterial.clearcoatRoughness += geometryRoughness;\n\tmaterial.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 );\n#endif\n#ifdef USE_IRIDESCENCE\n\tmaterial.iridescence = iridescence;\n\tmaterial.iridescenceIOR = iridescenceIOR;\n\t#ifdef USE_IRIDESCENCEMAP\n\t\tmaterial.iridescence *= texture2D( iridescenceMap, vUv ).r;\n\t#endif\n\t#ifdef USE_IRIDESCENCE_THICKNESSMAP\n\t\tmaterial.iridescenceThickness = (iridescenceThicknessMaximum - iridescenceThicknessMinimum) * texture2D( iridescenceThicknessMap, vUv ).g + iridescenceThicknessMinimum;\n\t#else\n\t\tmaterial.iridescenceThickness = iridescenceThicknessMaximum;\n\t#endif\n#endif\n#ifdef USE_SHEEN\n\tmaterial.sheenColor = sheenColor;\n\t#ifdef USE_SHEENCOLORMAP\n\t\tmaterial.sheenColor *= texture2D( sheenColorMap, vUv ).rgb;\n\t#endif\n\tmaterial.sheenRoughness = clamp( sheenRoughness, 0.07, 1.0 );\n\t#ifdef USE_SHEENROUGHNESSMAP\n\t\tmaterial.sheenRoughness *= texture2D( sheenRoughnessMap, vUv ).a;\n\t#endif\n#endif`,Uh=`struct PhysicalMaterial {\n\tvec3 diffuseColor;\n\tfloat roughness;\n\tvec3 specularColor;\n\tfloat specularF90;\n\t#ifdef USE_CLEARCOAT\n\t\tfloat clearcoat;\n\t\tfloat clearcoatRoughness;\n\t\tvec3 clearcoatF0;\n\t\tfloat clearcoatF90;\n\t#endif\n\t#ifdef USE_IRIDESCENCE\n\t\tfloat iridescence;\n\t\tfloat iridescenceIOR;\n\t\tfloat iridescenceThickness;\n\t\tvec3 iridescenceFresnel;\n\t\tvec3 iridescenceF0;\n\t#endif\n\t#ifdef USE_SHEEN\n\t\tvec3 sheenColor;\n\t\tfloat sheenRoughness;\n\t#endif\n\t#ifdef IOR\n\t\tfloat ior;\n\t#endif\n\t#ifdef USE_TRANSMISSION\n\t\tfloat transmission;\n\t\tfloat transmissionAlpha;\n\t\tfloat thickness;\n\t\tfloat attenuationDistance;\n\t\tvec3 attenuationColor;\n\t#endif\n};\nvec3 clearcoatSpecular = vec3( 0.0 );\nvec3 sheenSpecular = vec3( 0.0 );\nfloat IBLSheenBRDF( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\tfloat r2 = roughness * roughness;\n\tfloat a = roughness < 0.25 ? -339.2 * r2 + 161.4 * roughness - 25.9 : -8.48 * r2 + 14.3 * roughness - 9.95;\n\tfloat b = roughness < 0.25 ? 44.0 * r2 - 23.7 * roughness + 3.26 : 1.97 * r2 - 3.27 * roughness + 0.72;\n\tfloat DG = exp( a * dotNV + b ) + ( roughness < 0.25 ? 0.0 : 0.1 * ( roughness - 0.25 ) );\n\treturn saturate( DG * RECIPROCAL_PI );\n}\nvec2 DFGApprox( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\tconst vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 );\n\tconst vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 );\n\tvec4 r = roughness * c0 + c1;\n\tfloat a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y;\n\tvec2 fab = vec2( - 1.04, 1.04 ) * a004 + r.zw;\n\treturn fab;\n}\nvec3 EnvironmentBRDF( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness ) {\n\tvec2 fab = DFGApprox( normal, viewDir, roughness );\n\treturn specularColor * fab.x + specularF90 * fab.y;\n}\n#ifdef USE_IRIDESCENCE\nvoid computeMultiscatteringIridescence( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float iridescence, const in vec3 iridescenceF0, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\n#else\nvoid computeMultiscattering( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\n#endif\n\tvec2 fab = DFGApprox( normal, viewDir, roughness );\n\t#ifdef USE_IRIDESCENCE\n\t\tvec3 Fr = mix( specularColor, iridescenceF0, iridescence );\n\t#else\n\t\tvec3 Fr = specularColor;\n\t#endif\n\tvec3 FssEss = Fr * fab.x + specularF90 * fab.y;\n\tfloat Ess = fab.x + fab.y;\n\tfloat Ems = 1.0 - Ess;\n\tvec3 Favg = Fr + ( 1.0 - Fr ) * 0.047619;\tvec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg );\n\tsingleScatter += FssEss;\n\tmultiScatter += Fms * Ems;\n}\n#if NUM_RECT_AREA_LIGHTS > 0\n\tvoid RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\t\tvec3 normal = geometry.normal;\n\t\tvec3 viewDir = geometry.viewDir;\n\t\tvec3 position = geometry.position;\n\t\tvec3 lightPos = rectAreaLight.position;\n\t\tvec3 halfWidth = rectAreaLight.halfWidth;\n\t\tvec3 halfHeight = rectAreaLight.halfHeight;\n\t\tvec3 lightColor = rectAreaLight.color;\n\t\tfloat roughness = material.roughness;\n\t\tvec3 rectCoords[ 4 ];\n\t\trectCoords[ 0 ] = lightPos + halfWidth - halfHeight;\t\trectCoords[ 1 ] = lightPos - halfWidth - halfHeight;\n\t\trectCoords[ 2 ] = lightPos - halfWidth + halfHeight;\n\t\trectCoords[ 3 ] = lightPos + halfWidth + halfHeight;\n\t\tvec2 uv = LTC_Uv( normal, viewDir, roughness );\n\t\tvec4 t1 = texture2D( ltc_1, uv );\n\t\tvec4 t2 = texture2D( ltc_2, uv );\n\t\tmat3 mInv = mat3(\n\t\t\tvec3( t1.x, 0, t1.y ),\n\t\t\tvec3( 0, 1, 0 ),\n\t\t\tvec3( t1.z, 0, t1.w )\n\t\t);\n\t\tvec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y );\n\t\treflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords );\n\t\treflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords );\n\t}\n#endif\nvoid RE_Direct_Physical( const in IncidentLight directLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\n\tvec3 irradiance = dotNL * directLight.color;\n\t#ifdef USE_CLEARCOAT\n\t\tfloat dotNLcc = saturate( dot( geometry.clearcoatNormal, directLight.direction ) );\n\t\tvec3 ccIrradiance = dotNLcc * directLight.color;\n\t\tclearcoatSpecular += ccIrradiance * BRDF_GGX( directLight.direction, geometry.viewDir, geometry.clearcoatNormal, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );\n\t#endif\n\t#ifdef USE_SHEEN\n\t\tsheenSpecular += irradiance * BRDF_Sheen( directLight.direction, geometry.viewDir, geometry.normal, material.sheenColor, material.sheenRoughness );\n\t#endif\n\t#ifdef USE_IRIDESCENCE\n\t\treflectedLight.directSpecular += irradiance * BRDF_GGX_Iridescence( directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularF90, material.iridescence, material.iridescenceFresnel, material.roughness );\n\t#else\n\t\treflectedLight.directSpecular += irradiance * BRDF_GGX( directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularF90, material.roughness );\n\t#endif\n\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {\n\t#ifdef USE_CLEARCOAT\n\t\tclearcoatSpecular += clearcoatRadiance * EnvironmentBRDF( geometry.clearcoatNormal, geometry.viewDir, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );\n\t#endif\n\t#ifdef USE_SHEEN\n\t\tsheenSpecular += irradiance * material.sheenColor * IBLSheenBRDF( geometry.normal, geometry.viewDir, material.sheenRoughness );\n\t#endif\n\tvec3 singleScattering = vec3( 0.0 );\n\tvec3 multiScattering = vec3( 0.0 );\n\tvec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;\n\t#ifdef USE_IRIDESCENCE\n\t\tcomputeMultiscatteringIridescence( geometry.normal, geometry.viewDir, material.specularColor, material.specularF90, material.iridescence, material.iridescenceFresnel, material.roughness, singleScattering, multiScattering );\n\t#else\n\t\tcomputeMultiscattering( geometry.normal, geometry.viewDir, material.specularColor, material.specularF90, material.roughness, singleScattering, multiScattering );\n\t#endif\n\tvec3 totalScattering = singleScattering + multiScattering;\n\tvec3 diffuse = material.diffuseColor * ( 1.0 - max( max( totalScattering.r, totalScattering.g ), totalScattering.b ) );\n\treflectedLight.indirectSpecular += radiance * singleScattering;\n\treflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance;\n\treflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance;\n}\n#define RE_Direct\t\t\t\tRE_Direct_Physical\n#define RE_Direct_RectArea\t\tRE_Direct_RectArea_Physical\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_Physical\n#define RE_IndirectSpecular\t\tRE_IndirectSpecular_Physical\nfloat computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) {\n\treturn saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion );\n}`,kh=`\nGeometricContext geometry;\ngeometry.position = - vViewPosition;\ngeometry.normal = normal;\ngeometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition );\n#ifdef USE_CLEARCOAT\n\tgeometry.clearcoatNormal = clearcoatNormal;\n#endif\n#ifdef USE_IRIDESCENCE\n\tfloat dotNVi = saturate( dot( normal, geometry.viewDir ) );\n\tif ( material.iridescenceThickness == 0.0 ) {\n\t\tmaterial.iridescence = 0.0;\n\t} else {\n\t\tmaterial.iridescence = saturate( material.iridescence );\n\t}\n\tif ( material.iridescence > 0.0 ) {\n\t\tmaterial.iridescenceFresnel = evalIridescence( 1.0, material.iridescenceIOR, dotNVi, material.iridescenceThickness, material.specularColor );\n\t\tmaterial.iridescenceF0 = Schlick_to_F0( material.iridescenceFresnel, 1.0, dotNVi );\n\t}\n#endif\nIncidentLight directLight;\n#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\n\tPointLight pointLight;\n\t#if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0\n\tPointLightShadow pointLightShadow;\n\t#endif\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tpointLight = pointLights[ i ];\n\t\tgetPointLightInfo( pointLight, geometry, directLight );\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS )\n\t\tpointLightShadow = pointLightShadows[ i ];\n\t\tdirectLight.color *= ( directLight.visible && receiveShadow ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\n\tSpotLight spotLight;\n\tvec4 spotColor;\n\tvec3 spotLightCoord;\n\tbool inSpotLightMap;\n\t#if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0\n\tSpotLightShadow spotLightShadow;\n\t#endif\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tspotLight = spotLights[ i ];\n\t\tgetSpotLightInfo( spotLight, geometry, directLight );\n\t\t#if ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS )\n\t\t#define SPOT_LIGHT_MAP_INDEX UNROLLED_LOOP_INDEX\n\t\t#elif ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\n\t\t#define SPOT_LIGHT_MAP_INDEX NUM_SPOT_LIGHT_MAPS\n\t\t#else\n\t\t#define SPOT_LIGHT_MAP_INDEX ( UNROLLED_LOOP_INDEX - NUM_SPOT_LIGHT_SHADOWS + NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS )\n\t\t#endif\n\t\t#if ( SPOT_LIGHT_MAP_INDEX < NUM_SPOT_LIGHT_MAPS )\n\t\t\tspotLightCoord = vSpotLightCoord[ i ].xyz / vSpotLightCoord[ i ].w;\n\t\t\tinSpotLightMap = all( lessThan( abs( spotLightCoord * 2. - 1. ), vec3( 1.0 ) ) );\n\t\t\tspotColor = texture2D( spotLightMap[ SPOT_LIGHT_MAP_INDEX ], spotLightCoord.xy );\n\t\t\tdirectLight.color = inSpotLightMap ? directLight.color * spotColor.rgb : directLight.color;\n\t\t#endif\n\t\t#undef SPOT_LIGHT_MAP_INDEX\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\n\t\tspotLightShadow = spotLightShadows[ i ];\n\t\tdirectLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotLightCoord[ i ] ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\n\tDirectionalLight directionalLight;\n\t#if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0\n\tDirectionalLightShadow directionalLightShadow;\n\t#endif\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tdirectionalLight = directionalLights[ i ];\n\t\tgetDirectionalLightInfo( directionalLight, geometry, directLight );\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS )\n\t\tdirectionalLightShadow = directionalLightShadows[ i ];\n\t\tdirectLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\n\tRectAreaLight rectAreaLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {\n\t\trectAreaLight = rectAreaLights[ i ];\n\t\tRE_Direct_RectArea( rectAreaLight, geometry, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if defined( RE_IndirectDiffuse )\n\tvec3 iblIrradiance = vec3( 0.0 );\n\tvec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\n\tirradiance += getLightProbeIrradiance( lightProbe, geometry.normal );\n\t#if ( NUM_HEMI_LIGHTS > 0 )\n\t\t#pragma unroll_loop_start\n\t\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\n\t\t\tirradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry.normal );\n\t\t}\n\t\t#pragma unroll_loop_end\n\t#endif\n#endif\n#if defined( RE_IndirectSpecular )\n\tvec3 radiance = vec3( 0.0 );\n\tvec3 clearcoatRadiance = vec3( 0.0 );\n#endif`,Vh=`#if defined( RE_IndirectDiffuse )\n\t#ifdef USE_LIGHTMAP\n\t\tvec4 lightMapTexel = texture2D( lightMap, vUv2 );\n\t\tvec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;\n\t\tirradiance += lightMapIrradiance;\n\t#endif\n\t#if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV )\n\t\tiblIrradiance += getIBLIrradiance( geometry.normal );\n\t#endif\n#endif\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\n\tradiance += getIBLRadiance( geometry.viewDir, geometry.normal, material.roughness );\n\t#ifdef USE_CLEARCOAT\n\t\tclearcoatRadiance += getIBLRadiance( geometry.viewDir, geometry.clearcoatNormal, material.clearcoatRoughness );\n\t#endif\n#endif`,Gh=`#if defined( RE_IndirectDiffuse )\n\tRE_IndirectDiffuse( irradiance, geometry, material, reflectedLight );\n#endif\n#if defined( RE_IndirectSpecular )\n\tRE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometry, material, reflectedLight );\n#endif`,Hh=`#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\n\tgl_FragDepthEXT = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\n#endif`,Wh=`#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\n\tuniform float logDepthBufFC;\n\tvarying float vFragDepth;\n\tvarying float vIsPerspective;\n#endif`,qh=`#ifdef USE_LOGDEPTHBUF\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tvarying float vFragDepth;\n\t\tvarying float vIsPerspective;\n\t#else\n\t\tuniform float logDepthBufFC;\n\t#endif\n#endif`,Xh=`#ifdef USE_LOGDEPTHBUF\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tvFragDepth = 1.0 + gl_Position.w;\n\t\tvIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) );\n\t#else\n\t\tif ( isPerspectiveMatrix( projectionMatrix ) ) {\n\t\t\tgl_Position.z = log2( max( EPSILON, gl_Position.w + 1.0 ) ) * logDepthBufFC - 1.0;\n\t\t\tgl_Position.z *= gl_Position.w;\n\t\t}\n\t#endif\n#endif`,Yh=`#ifdef USE_MAP\n\tvec4 sampledDiffuseColor = texture2D( map, vUv );\n\t#ifdef DECODE_VIDEO_TEXTURE\n\t\tsampledDiffuseColor = vec4( mix( pow( sampledDiffuseColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), sampledDiffuseColor.rgb * 0.0773993808, vec3( lessThanEqual( sampledDiffuseColor.rgb, vec3( 0.04045 ) ) ) ), sampledDiffuseColor.w );\n\t#endif\n\tdiffuseColor *= sampledDiffuseColor;\n#endif`,Zh=`#ifdef USE_MAP\n\tuniform sampler2D map;\n#endif`,Jh=`#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\n\tvec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;\n#endif\n#ifdef USE_MAP\n\tdiffuseColor *= texture2D( map, uv );\n#endif\n#ifdef USE_ALPHAMAP\n\tdiffuseColor.a *= texture2D( alphaMap, uv ).g;\n#endif`,$h=`#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\n\tuniform mat3 uvTransform;\n#endif\n#ifdef USE_MAP\n\tuniform sampler2D map;\n#endif\n#ifdef USE_ALPHAMAP\n\tuniform sampler2D alphaMap;\n#endif`,Kh=`float metalnessFactor = metalness;\n#ifdef USE_METALNESSMAP\n\tvec4 texelMetalness = texture2D( metalnessMap, vUv );\n\tmetalnessFactor *= texelMetalness.b;\n#endif`,jh=`#ifdef USE_METALNESSMAP\n\tuniform sampler2D metalnessMap;\n#endif`,Qh=`#if defined( USE_MORPHCOLORS ) && defined( MORPHTARGETS_TEXTURE )\n\tvColor *= morphTargetBaseInfluence;\n\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\n\t\t#if defined( USE_COLOR_ALPHA )\n\t\t\tif ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ) * morphTargetInfluences[ i ];\n\t\t#elif defined( USE_COLOR )\n\t\t\tif ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ).rgb * morphTargetInfluences[ i ];\n\t\t#endif\n\t}\n#endif`,tu=`#ifdef USE_MORPHNORMALS\n\tobjectNormal *= morphTargetBaseInfluence;\n\t#ifdef MORPHTARGETS_TEXTURE\n\t\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\n\t\t\tif ( morphTargetInfluences[ i ] != 0.0 ) objectNormal += getMorph( gl_VertexID, i, 1 ).xyz * morphTargetInfluences[ i ];\n\t\t}\n\t#else\n\t\tobjectNormal += morphNormal0 * morphTargetInfluences[ 0 ];\n\t\tobjectNormal += morphNormal1 * morphTargetInfluences[ 1 ];\n\t\tobjectNormal += morphNormal2 * morphTargetInfluences[ 2 ];\n\t\tobjectNormal += morphNormal3 * morphTargetInfluences[ 3 ];\n\t#endif\n#endif`,eu=`#ifdef USE_MORPHTARGETS\n\tuniform float morphTargetBaseInfluence;\n\t#ifdef MORPHTARGETS_TEXTURE\n\t\tuniform float morphTargetInfluences[ MORPHTARGETS_COUNT ];\n\t\tuniform sampler2DArray morphTargetsTexture;\n\t\tuniform ivec2 morphTargetsTextureSize;\n\t\tvec4 getMorph( const in int vertexIndex, const in int morphTargetIndex, const in int offset ) {\n\t\t\tint texelIndex = vertexIndex * MORPHTARGETS_TEXTURE_STRIDE + offset;\n\t\t\tint y = texelIndex / morphTargetsTextureSize.x;\n\t\t\tint x = texelIndex - y * morphTargetsTextureSize.x;\n\t\t\tivec3 morphUV = ivec3( x, y, morphTargetIndex );\n\t\t\treturn texelFetch( morphTargetsTexture, morphUV, 0 );\n\t\t}\n\t#else\n\t\t#ifndef USE_MORPHNORMALS\n\t\t\tuniform float morphTargetInfluences[ 8 ];\n\t\t#else\n\t\t\tuniform float morphTargetInfluences[ 4 ];\n\t\t#endif\n\t#endif\n#endif`,nu=`#ifdef USE_MORPHTARGETS\n\ttransformed *= morphTargetBaseInfluence;\n\t#ifdef MORPHTARGETS_TEXTURE\n\t\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\n\t\t\tif ( morphTargetInfluences[ i ] != 0.0 ) transformed += getMorph( gl_VertexID, i, 0 ).xyz * morphTargetInfluences[ i ];\n\t\t}\n\t#else\n\t\ttransformed += morphTarget0 * morphTargetInfluences[ 0 ];\n\t\ttransformed += morphTarget1 * morphTargetInfluences[ 1 ];\n\t\ttransformed += morphTarget2 * morphTargetInfluences[ 2 ];\n\t\ttransformed += morphTarget3 * morphTargetInfluences[ 3 ];\n\t\t#ifndef USE_MORPHNORMALS\n\t\t\ttransformed += morphTarget4 * morphTargetInfluences[ 4 ];\n\t\t\ttransformed += morphTarget5 * morphTargetInfluences[ 5 ];\n\t\t\ttransformed += morphTarget6 * morphTargetInfluences[ 6 ];\n\t\t\ttransformed += morphTarget7 * morphTargetInfluences[ 7 ];\n\t\t#endif\n\t#endif\n#endif`,iu=`float faceDirection = gl_FrontFacing ? 1.0 : - 1.0;\n#ifdef FLAT_SHADED\n\tvec3 fdx = dFdx( vViewPosition );\n\tvec3 fdy = dFdy( vViewPosition );\n\tvec3 normal = normalize( cross( fdx, fdy ) );\n#else\n\tvec3 normal = normalize( vNormal );\n\t#ifdef DOUBLE_SIDED\n\t\tnormal = normal * faceDirection;\n\t#endif\n\t#ifdef USE_TANGENT\n\t\tvec3 tangent = normalize( vTangent );\n\t\tvec3 bitangent = normalize( vBitangent );\n\t\t#ifdef DOUBLE_SIDED\n\t\t\ttangent = tangent * faceDirection;\n\t\t\tbitangent = bitangent * faceDirection;\n\t\t#endif\n\t\t#if defined( TANGENTSPACE_NORMALMAP ) || defined( USE_CLEARCOAT_NORMALMAP )\n\t\t\tmat3 vTBN = mat3( tangent, bitangent, normal );\n\t\t#endif\n\t#endif\n#endif\nvec3 geometryNormal = normal;`,su=`#ifdef OBJECTSPACE_NORMALMAP\n\tnormal = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\n\t#ifdef FLIP_SIDED\n\t\tnormal = - normal;\n\t#endif\n\t#ifdef DOUBLE_SIDED\n\t\tnormal = normal * faceDirection;\n\t#endif\n\tnormal = normalize( normalMatrix * normal );\n#elif defined( TANGENTSPACE_NORMALMAP )\n\tvec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\n\tmapN.xy *= normalScale;\n\t#ifdef USE_TANGENT\n\t\tnormal = normalize( vTBN * mapN );\n\t#else\n\t\tnormal = perturbNormal2Arb( - vViewPosition, normal, mapN, faceDirection );\n\t#endif\n#elif defined( USE_BUMPMAP )\n\tnormal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection );\n#endif`,ru=`#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif`,ou=`#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif`,au=`#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n\t#ifdef USE_TANGENT\n\t\tvTangent = normalize( transformedTangent );\n\t\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\n\t#endif\n#endif`,cu=`#ifdef USE_NORMALMAP\n\tuniform sampler2D normalMap;\n\tuniform vec2 normalScale;\n#endif\n#ifdef OBJECTSPACE_NORMALMAP\n\tuniform mat3 normalMatrix;\n#endif\n#if ! defined ( USE_TANGENT ) && ( defined ( TANGENTSPACE_NORMALMAP ) || defined ( USE_CLEARCOAT_NORMALMAP ) )\n\tvec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm, vec3 mapN, float faceDirection ) {\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\t\tvec3 N = surf_norm;\n\t\tvec3 q1perp = cross( q1, N );\n\t\tvec3 q0perp = cross( N, q0 );\n\t\tvec3 T = q1perp * st0.x + q0perp * st1.x;\n\t\tvec3 B = q1perp * st0.y + q0perp * st1.y;\n\t\tfloat det = max( dot( T, T ), dot( B, B ) );\n\t\tfloat scale = ( det == 0.0 ) ? 0.0 : faceDirection * inversesqrt( det );\n\t\treturn normalize( T * ( mapN.x * scale ) + B * ( mapN.y * scale ) + N * mapN.z );\n\t}\n#endif`,lu=`#ifdef USE_CLEARCOAT\n\tvec3 clearcoatNormal = geometryNormal;\n#endif`,hu=`#ifdef USE_CLEARCOAT_NORMALMAP\n\tvec3 clearcoatMapN = texture2D( clearcoatNormalMap, vUv ).xyz * 2.0 - 1.0;\n\tclearcoatMapN.xy *= clearcoatNormalScale;\n\t#ifdef USE_TANGENT\n\t\tclearcoatNormal = normalize( vTBN * clearcoatMapN );\n\t#else\n\t\tclearcoatNormal = perturbNormal2Arb( - vViewPosition, clearcoatNormal, clearcoatMapN, faceDirection );\n\t#endif\n#endif`,uu=`#ifdef USE_CLEARCOATMAP\n\tuniform sampler2D clearcoatMap;\n#endif\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n\tuniform sampler2D clearcoatRoughnessMap;\n#endif\n#ifdef USE_CLEARCOAT_NORMALMAP\n\tuniform sampler2D clearcoatNormalMap;\n\tuniform vec2 clearcoatNormalScale;\n#endif`,fu=`#ifdef USE_IRIDESCENCEMAP\n\tuniform sampler2D iridescenceMap;\n#endif\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\n\tuniform sampler2D iridescenceThicknessMap;\n#endif`,du=`#ifdef OPAQUE\ndiffuseColor.a = 1.0;\n#endif\n#ifdef USE_TRANSMISSION\ndiffuseColor.a *= material.transmissionAlpha + 0.1;\n#endif\ngl_FragColor = vec4( outgoingLight, diffuseColor.a );`,pu=`vec3 packNormalToRGB( const in vec3 normal ) {\n\treturn normalize( normal ) * 0.5 + 0.5;\n}\nvec3 unpackRGBToNormal( const in vec3 rgb ) {\n\treturn 2.0 * rgb.xyz - 1.0;\n}\nconst float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;\nconst vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\nconst vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. );\nconst float ShiftRight8 = 1. / 256.;\nvec4 packDepthToRGBA( const in float v ) {\n\tvec4 r = vec4( fract( v * PackFactors ), v );\n\tr.yzw -= r.xyz * ShiftRight8;\treturn r * PackUpscale;\n}\nfloat unpackRGBAToDepth( const in vec4 v ) {\n\treturn dot( v, UnpackFactors );\n}\nvec2 packDepthToRG( in highp float v ) {\n\treturn packDepthToRGBA( v ).yx;\n}\nfloat unpackRGToDepth( const in highp vec2 v ) {\n\treturn unpackRGBAToDepth( vec4( v.xy, 0.0, 0.0 ) );\n}\nvec4 pack2HalfToRGBA( vec2 v ) {\n\tvec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ) );\n\treturn vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w );\n}\nvec2 unpackRGBATo2Half( vec4 v ) {\n\treturn vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) );\n}\nfloat viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) {\n\treturn ( viewZ + near ) / ( near - far );\n}\nfloat orthographicDepthToViewZ( const in float linearClipZ, const in float near, const in float far ) {\n\treturn linearClipZ * ( near - far ) - near;\n}\nfloat viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) {\n\treturn ( ( near + viewZ ) * far ) / ( ( far - near ) * viewZ );\n}\nfloat perspectiveDepthToViewZ( const in float invClipZ, const in float near, const in float far ) {\n\treturn ( near * far ) / ( ( far - near ) * invClipZ - far );\n}`,mu=`#ifdef PREMULTIPLIED_ALPHA\n\tgl_FragColor.rgb *= gl_FragColor.a;\n#endif`,gu=`vec4 mvPosition = vec4( transformed, 1.0 );\n#ifdef USE_INSTANCING\n\tmvPosition = instanceMatrix * mvPosition;\n#endif\nmvPosition = modelViewMatrix * mvPosition;\ngl_Position = projectionMatrix * mvPosition;`,xu=`#ifdef DITHERING\n\tgl_FragColor.rgb = dithering( gl_FragColor.rgb );\n#endif`,_u=`#ifdef DITHERING\n\tvec3 dithering( vec3 color ) {\n\t\tfloat grid_position = rand( gl_FragCoord.xy );\n\t\tvec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 );\n\t\tdither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position );\n\t\treturn color + dither_shift_RGB;\n\t}\n#endif`,yu=`float roughnessFactor = roughness;\n#ifdef USE_ROUGHNESSMAP\n\tvec4 texelRoughness = texture2D( roughnessMap, vUv );\n\troughnessFactor *= texelRoughness.g;\n#endif`,vu=`#ifdef USE_ROUGHNESSMAP\n\tuniform sampler2D roughnessMap;\n#endif`,Mu=`#if NUM_SPOT_LIGHT_COORDS > 0\n varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ];\n#endif\n#if NUM_SPOT_LIGHT_MAPS > 0\n uniform sampler2D spotLightMap[ NUM_SPOT_LIGHT_MAPS ];\n#endif\n#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\t\tuniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tstruct DirectionalLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\t\tuniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ];\n\t\tstruct SpotLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\t\tuniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tstruct PointLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t\tfloat shadowCameraNear;\n\t\t\tfloat shadowCameraFar;\n\t\t};\n\t\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\n\t#endif\n\tfloat texture2DCompare( sampler2D depths, vec2 uv, float compare ) {\n\t\treturn step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) );\n\t}\n\tvec2 texture2DDistribution( sampler2D shadow, vec2 uv ) {\n\t\treturn unpackRGBATo2Half( texture2D( shadow, uv ) );\n\t}\n\tfloat VSMShadow (sampler2D shadow, vec2 uv, float compare ){\n\t\tfloat occlusion = 1.0;\n\t\tvec2 distribution = texture2DDistribution( shadow, uv );\n\t\tfloat hard_shadow = step( compare , distribution.x );\n\t\tif (hard_shadow != 1.0 ) {\n\t\t\tfloat distance = compare - distribution.x ;\n\t\t\tfloat variance = max( 0.00000, distribution.y * distribution.y );\n\t\t\tfloat softness_probability = variance / (variance + distance * distance );\t\t\tsoftness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 );\t\t\tocclusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 );\n\t\t}\n\t\treturn occlusion;\n\t}\n\tfloat getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) {\n\t\tfloat shadow = 1.0;\n\t\tshadowCoord.xyz /= shadowCoord.w;\n\t\tshadowCoord.z += shadowBias;\n\t\tbool inFrustum = shadowCoord.x >= 0.0 && shadowCoord.x <= 1.0 && shadowCoord.y >= 0.0 && shadowCoord.y <= 1.0;\n\t\tbool frustumTest = inFrustum && shadowCoord.z <= 1.0;\n\t\tif ( frustumTest ) {\n\t\t#if defined( SHADOWMAP_TYPE_PCF )\n\t\t\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\n\t\t\tfloat dx0 = - texelSize.x * shadowRadius;\n\t\t\tfloat dy0 = - texelSize.y * shadowRadius;\n\t\t\tfloat dx1 = + texelSize.x * shadowRadius;\n\t\t\tfloat dy1 = + texelSize.y * shadowRadius;\n\t\t\tfloat dx2 = dx0 / 2.0;\n\t\t\tfloat dy2 = dy0 / 2.0;\n\t\t\tfloat dx3 = dx1 / 2.0;\n\t\t\tfloat dy3 = dy1 / 2.0;\n\t\t\tshadow = (\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy2 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy2 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy2 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy3 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy3 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy3 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\n\t\t\t) * ( 1.0 / 17.0 );\n\t\t#elif defined( SHADOWMAP_TYPE_PCF_SOFT )\n\t\t\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\n\t\t\tfloat dx = texelSize.x;\n\t\t\tfloat dy = texelSize.y;\n\t\t\tvec2 uv = shadowCoord.xy;\n\t\t\tvec2 f = fract( uv * shadowMapSize + 0.5 );\n\t\t\tuv -= f * texelSize;\n\t\t\tshadow = (\n\t\t\t\ttexture2DCompare( shadowMap, uv, shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, uv + vec2( dx, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, uv + vec2( 0.0, dy ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, uv + texelSize, shadowCoord.z ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, 0.0 ), shadowCoord.z ),\n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 0.0 ), shadowCoord.z ),\n\t\t\t\t\t f.x ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, dy ), shadowCoord.z ),\n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, dy ), shadowCoord.z ),\n\t\t\t\t\t f.x ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( 0.0, -dy ), shadowCoord.z ),\n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 0.0, 2.0 * dy ), shadowCoord.z ),\n\t\t\t\t\t f.y ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( dx, -dy ), shadowCoord.z ),\n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( dx, 2.0 * dy ), shadowCoord.z ),\n\t\t\t\t\t f.y ) +\n\t\t\t\tmix( mix( texture2DCompare( shadowMap, uv + vec2( -dx, -dy ), shadowCoord.z ),\n\t\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ),\n\t\t\t\t\t\t f.x ),\n\t\t\t\t\t mix( texture2DCompare( shadowMap, uv + vec2( -dx, 2.0 * dy ), shadowCoord.z ),\n\t\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ),\n\t\t\t\t\t\t f.x ),\n\t\t\t\t\t f.y )\n\t\t\t) * ( 1.0 / 9.0 );\n\t\t#elif defined( SHADOWMAP_TYPE_VSM )\n\t\t\tshadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z );\n\t\t#else\n\t\t\tshadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z );\n\t\t#endif\n\t\t}\n\t\treturn shadow;\n\t}\n\tvec2 cubeToUV( vec3 v, float texelSizeY ) {\n\t\tvec3 absV = abs( v );\n\t\tfloat scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) );\n\t\tabsV *= scaleToCube;\n\t\tv *= scaleToCube * ( 1.0 - 2.0 * texelSizeY );\n\t\tvec2 planar = v.xy;\n\t\tfloat almostATexel = 1.5 * texelSizeY;\n\t\tfloat almostOne = 1.0 - almostATexel;\n\t\tif ( absV.z >= almostOne ) {\n\t\t\tif ( v.z > 0.0 )\n\t\t\t\tplanar.x = 4.0 - v.x;\n\t\t} else if ( absV.x >= almostOne ) {\n\t\t\tfloat signX = sign( v.x );\n\t\t\tplanar.x = v.z * signX + 2.0 * signX;\n\t\t} else if ( absV.y >= almostOne ) {\n\t\t\tfloat signY = sign( v.y );\n\t\t\tplanar.x = v.x + 2.0 * signY + 2.0;\n\t\t\tplanar.y = v.z * signY - 2.0;\n\t\t}\n\t\treturn vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 );\n\t}\n\tfloat getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {\n\t\tvec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );\n\t\tvec3 lightToPosition = shadowCoord.xyz;\n\t\tfloat dp = ( length( lightToPosition ) - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear );\t\tdp += shadowBias;\n\t\tvec3 bd3D = normalize( lightToPosition );\n\t\t#if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM )\n\t\t\tvec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y;\n\t\t\treturn (\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp )\n\t\t\t) * ( 1.0 / 9.0 );\n\t\t#else\n\t\t\treturn texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp );\n\t\t#endif\n\t}\n#endif`,bu=`#if NUM_SPOT_LIGHT_COORDS > 0\n uniform mat4 spotLightMatrix[ NUM_SPOT_LIGHT_COORDS ];\n varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ];\n#endif\n#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\t\tuniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tstruct DirectionalLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\t\tstruct SpotLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\t\tuniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tstruct PointLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t\tfloat shadowCameraNear;\n\t\t\tfloat shadowCameraFar;\n\t\t};\n\t\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\n\t#endif\n#endif`,wu=`#if ( defined( USE_SHADOWMAP ) && ( NUM_DIR_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0 ) ) || ( NUM_SPOT_LIGHT_COORDS > 0 )\n\tvec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\n\tvec4 shadowWorldPosition;\n#endif\n#if defined( USE_SHADOWMAP )\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\t\t#pragma unroll_loop_start\n\t\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\n\t\t\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 );\n\t\t\tvDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition;\n\t\t}\n\t\t#pragma unroll_loop_end\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\t\t#pragma unroll_loop_start\n\t\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\n\t\t\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 );\n\t\t\tvPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition;\n\t\t}\n\t\t#pragma unroll_loop_end\n\t#endif\n#endif\n#if NUM_SPOT_LIGHT_COORDS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_SPOT_LIGHT_COORDS; i ++ ) {\n\t\tshadowWorldPosition = worldPosition;\n\t\t#if ( defined( USE_SHADOWMAP ) && UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\n\t\t\tshadowWorldPosition.xyz += shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias;\n\t\t#endif\n\t\tvSpotLightCoord[ i ] = spotLightMatrix[ i ] * shadowWorldPosition;\n\t}\n\t#pragma unroll_loop_end\n#endif`,Su=`float getShadowMask() {\n\tfloat shadow = 1.0;\n\t#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\tDirectionalLightShadow directionalLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\n\t\tdirectionalLight = directionalLightShadows[ i ];\n\t\tshadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\tSpotLightShadow spotLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\n\t\tspotLight = spotLightShadows[ i ];\n\t\tshadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotLightCoord[ i ] ) : 1.0;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\tPointLightShadow pointLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\n\t\tpointLight = pointLightShadows[ i ];\n\t\tshadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n\t#endif\n\treturn shadow;\n}`,Tu=`#ifdef USE_SKINNING\n\tmat4 boneMatX = getBoneMatrix( skinIndex.x );\n\tmat4 boneMatY = getBoneMatrix( skinIndex.y );\n\tmat4 boneMatZ = getBoneMatrix( skinIndex.z );\n\tmat4 boneMatW = getBoneMatrix( skinIndex.w );\n#endif`,Au=`#ifdef USE_SKINNING\n\tuniform mat4 bindMatrix;\n\tuniform mat4 bindMatrixInverse;\n\tuniform highp sampler2D boneTexture;\n\tuniform int boneTextureSize;\n\tmat4 getBoneMatrix( const in float i ) {\n\t\tfloat j = i * 4.0;\n\t\tfloat x = mod( j, float( boneTextureSize ) );\n\t\tfloat y = floor( j / float( boneTextureSize ) );\n\t\tfloat dx = 1.0 / float( boneTextureSize );\n\t\tfloat dy = 1.0 / float( boneTextureSize );\n\t\ty = dy * ( y + 0.5 );\n\t\tvec4 v1 = texture2D( boneTexture, vec2( dx * ( x + 0.5 ), y ) );\n\t\tvec4 v2 = texture2D( boneTexture, vec2( dx * ( x + 1.5 ), y ) );\n\t\tvec4 v3 = texture2D( boneTexture, vec2( dx * ( x + 2.5 ), y ) );\n\t\tvec4 v4 = texture2D( boneTexture, vec2( dx * ( x + 3.5 ), y ) );\n\t\tmat4 bone = mat4( v1, v2, v3, v4 );\n\t\treturn bone;\n\t}\n#endif`,Eu=`#ifdef USE_SKINNING\n\tvec4 skinVertex = bindMatrix * vec4( transformed, 1.0 );\n\tvec4 skinned = vec4( 0.0 );\n\tskinned += boneMatX * skinVertex * skinWeight.x;\n\tskinned += boneMatY * skinVertex * skinWeight.y;\n\tskinned += boneMatZ * skinVertex * skinWeight.z;\n\tskinned += boneMatW * skinVertex * skinWeight.w;\n\ttransformed = ( bindMatrixInverse * skinned ).xyz;\n#endif`,Cu=`#ifdef USE_SKINNING\n\tmat4 skinMatrix = mat4( 0.0 );\n\tskinMatrix += skinWeight.x * boneMatX;\n\tskinMatrix += skinWeight.y * boneMatY;\n\tskinMatrix += skinWeight.z * boneMatZ;\n\tskinMatrix += skinWeight.w * boneMatW;\n\tskinMatrix = bindMatrixInverse * skinMatrix * bindMatrix;\n\tobjectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz;\n\t#ifdef USE_TANGENT\n\t\tobjectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz;\n\t#endif\n#endif`,Pu=`float specularStrength;\n#ifdef USE_SPECULARMAP\n\tvec4 texelSpecular = texture2D( specularMap, vUv );\n\tspecularStrength = texelSpecular.r;\n#else\n\tspecularStrength = 1.0;\n#endif`,Ru=`#ifdef USE_SPECULARMAP\n\tuniform sampler2D specularMap;\n#endif`,Lu=`#if defined( TONE_MAPPING )\n\tgl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\n#endif`,Iu=`#ifndef saturate\n#define saturate( a ) clamp( a, 0.0, 1.0 )\n#endif\nuniform float toneMappingExposure;\nvec3 LinearToneMapping( vec3 color ) {\n\treturn toneMappingExposure * color;\n}\nvec3 ReinhardToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\treturn saturate( color / ( vec3( 1.0 ) + color ) );\n}\nvec3 OptimizedCineonToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\tcolor = max( vec3( 0.0 ), color - 0.004 );\n\treturn pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );\n}\nvec3 RRTAndODTFit( vec3 v ) {\n\tvec3 a = v * ( v + 0.0245786 ) - 0.000090537;\n\tvec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081;\n\treturn a / b;\n}\nvec3 ACESFilmicToneMapping( vec3 color ) {\n\tconst mat3 ACESInputMat = mat3(\n\t\tvec3( 0.59719, 0.07600, 0.02840 ),\t\tvec3( 0.35458, 0.90834, 0.13383 ),\n\t\tvec3( 0.04823, 0.01566, 0.83777 )\n\t);\n\tconst mat3 ACESOutputMat = mat3(\n\t\tvec3( 1.60475, -0.10208, -0.00327 ),\t\tvec3( -0.53108, 1.10813, -0.07276 ),\n\t\tvec3( -0.07367, -0.00605, 1.07602 )\n\t);\n\tcolor *= toneMappingExposure / 0.6;\n\tcolor = ACESInputMat * color;\n\tcolor = RRTAndODTFit( color );\n\tcolor = ACESOutputMat * color;\n\treturn saturate( color );\n}\nvec3 CustomToneMapping( vec3 color ) { return color; }`,Du=`#ifdef USE_TRANSMISSION\n\tmaterial.transmission = transmission;\n\tmaterial.transmissionAlpha = 1.0;\n\tmaterial.thickness = thickness;\n\tmaterial.attenuationDistance = attenuationDistance;\n\tmaterial.attenuationColor = attenuationColor;\n\t#ifdef USE_TRANSMISSIONMAP\n\t\tmaterial.transmission *= texture2D( transmissionMap, vUv ).r;\n\t#endif\n\t#ifdef USE_THICKNESSMAP\n\t\tmaterial.thickness *= texture2D( thicknessMap, vUv ).g;\n\t#endif\n\tvec3 pos = vWorldPosition;\n\tvec3 v = normalize( cameraPosition - pos );\n\tvec3 n = inverseTransformDirection( normal, viewMatrix );\n\tvec4 transmission = getIBLVolumeRefraction(\n\t\tn, v, material.roughness, material.diffuseColor, material.specularColor, material.specularF90,\n\t\tpos, modelMatrix, viewMatrix, projectionMatrix, material.ior, material.thickness,\n\t\tmaterial.attenuationColor, material.attenuationDistance );\n\tmaterial.transmissionAlpha = mix( material.transmissionAlpha, transmission.a, material.transmission );\n\ttotalDiffuse = mix( totalDiffuse, transmission.rgb, material.transmission );\n#endif`,Nu=`#ifdef USE_TRANSMISSION\n\tuniform float transmission;\n\tuniform float thickness;\n\tuniform float attenuationDistance;\n\tuniform vec3 attenuationColor;\n\t#ifdef USE_TRANSMISSIONMAP\n\t\tuniform sampler2D transmissionMap;\n\t#endif\n\t#ifdef USE_THICKNESSMAP\n\t\tuniform sampler2D thicknessMap;\n\t#endif\n\tuniform vec2 transmissionSamplerSize;\n\tuniform sampler2D transmissionSamplerMap;\n\tuniform mat4 modelMatrix;\n\tuniform mat4 projectionMatrix;\n\tvarying vec3 vWorldPosition;\n\tvec3 getVolumeTransmissionRay( const in vec3 n, const in vec3 v, const in float thickness, const in float ior, const in mat4 modelMatrix ) {\n\t\tvec3 refractionVector = refract( - v, normalize( n ), 1.0 / ior );\n\t\tvec3 modelScale;\n\t\tmodelScale.x = length( vec3( modelMatrix[ 0 ].xyz ) );\n\t\tmodelScale.y = length( vec3( modelMatrix[ 1 ].xyz ) );\n\t\tmodelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) );\n\t\treturn normalize( refractionVector ) * thickness * modelScale;\n\t}\n\tfloat applyIorToRoughness( const in float roughness, const in float ior ) {\n\t\treturn roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 );\n\t}\n\tvec4 getTransmissionSample( const in vec2 fragCoord, const in float roughness, const in float ior ) {\n\t\tfloat framebufferLod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior );\n\t\t#ifdef texture2DLodEXT\n\t\t\treturn texture2DLodEXT( transmissionSamplerMap, fragCoord.xy, framebufferLod );\n\t\t#else\n\t\t\treturn texture2D( transmissionSamplerMap, fragCoord.xy, framebufferLod );\n\t\t#endif\n\t}\n\tvec3 applyVolumeAttenuation( const in vec3 radiance, const in float transmissionDistance, const in vec3 attenuationColor, const in float attenuationDistance ) {\n\t\tif ( isinf( attenuationDistance ) ) {\n\t\t\treturn radiance;\n\t\t} else {\n\t\t\tvec3 attenuationCoefficient = -log( attenuationColor ) / attenuationDistance;\n\t\t\tvec3 transmittance = exp( - attenuationCoefficient * transmissionDistance );\t\t\treturn transmittance * radiance;\n\t\t}\n\t}\n\tvec4 getIBLVolumeRefraction( const in vec3 n, const in vec3 v, const in float roughness, const in vec3 diffuseColor,\n\t\tconst in vec3 specularColor, const in float specularF90, const in vec3 position, const in mat4 modelMatrix,\n\t\tconst in mat4 viewMatrix, const in mat4 projMatrix, const in float ior, const in float thickness,\n\t\tconst in vec3 attenuationColor, const in float attenuationDistance ) {\n\t\tvec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix );\n\t\tvec3 refractedRayExit = position + transmissionRay;\n\t\tvec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 );\n\t\tvec2 refractionCoords = ndcPos.xy / ndcPos.w;\n\t\trefractionCoords += 1.0;\n\t\trefractionCoords /= 2.0;\n\t\tvec4 transmittedLight = getTransmissionSample( refractionCoords, roughness, ior );\n\t\tvec3 attenuatedColor = applyVolumeAttenuation( transmittedLight.rgb, length( transmissionRay ), attenuationColor, attenuationDistance );\n\t\tvec3 F = EnvironmentBRDF( n, v, specularColor, specularF90, roughness );\n\t\treturn vec4( ( 1.0 - F ) * attenuatedColor * diffuseColor, transmittedLight.a );\n\t}\n#endif`,Fu=`#if ( defined( USE_UV ) && ! defined( UVS_VERTEX_ONLY ) )\n\tvarying vec2 vUv;\n#endif`,zu=`#ifdef USE_UV\n\t#ifdef UVS_VERTEX_ONLY\n\t\tvec2 vUv;\n\t#else\n\t\tvarying vec2 vUv;\n\t#endif\n\tuniform mat3 uvTransform;\n#endif`,Ou=`#ifdef USE_UV\n\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n#endif`,Bu=`#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tvarying vec2 vUv2;\n#endif`,Uu=`#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tattribute vec2 uv2;\n\tvarying vec2 vUv2;\n\tuniform mat3 uv2Transform;\n#endif`,ku=`#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tvUv2 = ( uv2Transform * vec3( uv2, 1 ) ).xy;\n#endif`,Vu=`#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION ) || NUM_SPOT_LIGHT_COORDS > 0\n\tvec4 worldPosition = vec4( transformed, 1.0 );\n\t#ifdef USE_INSTANCING\n\t\tworldPosition = instanceMatrix * worldPosition;\n\t#endif\n\tworldPosition = modelMatrix * worldPosition;\n#endif`,Gu=`varying vec2 vUv;\nuniform mat3 uvTransform;\nvoid main() {\n\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n\tgl_Position = vec4( position.xy, 1.0, 1.0 );\n}`,Hu=`uniform sampler2D t2D;\nuniform float backgroundIntensity;\nvarying vec2 vUv;\nvoid main() {\n\tvec4 texColor = texture2D( t2D, vUv );\n\t#ifdef DECODE_VIDEO_TEXTURE\n\t\ttexColor = vec4( mix( pow( texColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), texColor.rgb * 0.0773993808, vec3( lessThanEqual( texColor.rgb, vec3( 0.04045 ) ) ) ), texColor.w );\n\t#endif\n\ttexColor.rgb *= backgroundIntensity;\n\tgl_FragColor = texColor;\n\t#include \n\t#include \n}`,Wu=`varying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include \n\t#include \n\tgl_Position.z = gl_Position.w;\n}`,qu=`#ifdef ENVMAP_TYPE_CUBE\n\tuniform samplerCube envMap;\n#elif defined( ENVMAP_TYPE_CUBE_UV )\n\tuniform sampler2D envMap;\n#endif\nuniform float flipEnvMap;\nuniform float backgroundBlurriness;\nuniform float backgroundIntensity;\nvarying vec3 vWorldDirection;\n#include \nvoid main() {\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tvec4 texColor = textureCube( envMap, vec3( flipEnvMap * vWorldDirection.x, vWorldDirection.yz ) );\n\t#elif defined( ENVMAP_TYPE_CUBE_UV )\n\t\tvec4 texColor = textureCubeUV( envMap, vWorldDirection, backgroundBlurriness );\n\t#else\n\t\tvec4 texColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\t#endif\n\ttexColor.rgb *= backgroundIntensity;\n\tgl_FragColor = texColor;\n\t#include \n\t#include \n}`,Xu=`varying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include \n\t#include \n\tgl_Position.z = gl_Position.w;\n}`,Yu=`uniform samplerCube tCube;\nuniform float tFlip;\nuniform float opacity;\nvarying vec3 vWorldDirection;\nvoid main() {\n\tvec4 texColor = textureCube( tCube, vec3( tFlip * vWorldDirection.x, vWorldDirection.yz ) );\n\tgl_FragColor = texColor;\n\tgl_FragColor.a *= opacity;\n\t#include \n\t#include \n}`,Zu=`#include \n#include \n#include \n#include \n#include \n#include \n#include \nvarying vec2 vHighPrecisionZW;\nvoid main() {\n\t#include \n\t#include \n\t#ifdef USE_DISPLACEMENTMAP\n\t\t#include \n\t\t#include \n\t\t#include \n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvHighPrecisionZW = gl_Position.zw;\n}`,Ju=`#if DEPTH_PACKING == 3200\n\tuniform float opacity;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvarying vec2 vHighPrecisionZW;\nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( 1.0 );\n\t#if DEPTH_PACKING == 3200\n\t\tdiffuseColor.a = opacity;\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\tfloat fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5;\n\t#if DEPTH_PACKING == 3200\n\t\tgl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );\n\t#elif DEPTH_PACKING == 3201\n\t\tgl_FragColor = packDepthToRGBA( fragCoordZ );\n\t#endif\n}`,$u=`#define DISTANCE\nvarying vec3 vWorldPosition;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#ifdef USE_DISPLACEMENTMAP\n\t\t#include \n\t\t#include \n\t\t#include \n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvWorldPosition = worldPosition.xyz;\n}`,Ku=`#define DISTANCE\nuniform vec3 referencePosition;\nuniform float nearDistance;\nuniform float farDistance;\nvarying vec3 vWorldPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main () {\n\t#include \n\tvec4 diffuseColor = vec4( 1.0 );\n\t#include \n\t#include \n\t#include \n\tfloat dist = length( vWorldPosition - referencePosition );\n\tdist = ( dist - nearDistance ) / ( farDistance - nearDistance );\n\tdist = saturate( dist );\n\tgl_FragColor = packDepthToRGBA( dist );\n}`,ju=`varying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include \n\t#include \n}`,Qu=`uniform sampler2D tEquirect;\nvarying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvec3 direction = normalize( vWorldDirection );\n\tvec2 sampleUV = equirectUv( direction );\n\tgl_FragColor = texture2D( tEquirect, sampleUV );\n\t#include \n\t#include \n}`,tf=`uniform float scale;\nattribute float lineDistance;\nvarying float vLineDistance;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\tvLineDistance = scale * lineDistance;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}`,ef=`uniform vec3 diffuse;\nuniform float opacity;\nuniform float dashSize;\nuniform float totalSize;\nvarying float vLineDistance;\n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tif ( mod( vLineDistance, totalSize ) > dashSize ) {\n\t\tdiscard;\n\t}\n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\toutgoingLight = diffuseColor.rgb;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}`,nf=`#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#if defined ( USE_ENVMAP ) || defined ( USE_SKINNING )\n\t\t#include \n\t\t#include \n\t\t#include \n\t\t#include \n\t\t#include \n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}`,sf=`uniform vec3 diffuse;\nuniform float opacity;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\t#ifdef USE_LIGHTMAP\n\t\tvec4 lightMapTexel = texture2D( lightMap, vUv2 );\n\t\treflectedLight.indirectDiffuse += lightMapTexel.rgb * lightMapIntensity * RECIPROCAL_PI;\n\t#else\n\t\treflectedLight.indirectDiffuse += vec3( 1.0 );\n\t#endif\n\t#include \n\treflectedLight.indirectDiffuse *= diffuseColor.rgb;\n\tvec3 outgoingLight = reflectedLight.indirectDiffuse;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}`,rf=`#define LAMBERT\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n\t#include \n\t#include \n\t#include \n\t#include \n}`,of=`#define LAMBERT\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}`,af=`#define MATCAP\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n}`,cf=`#define MATCAP\nuniform vec3 diffuse;\nuniform float opacity;\nuniform sampler2D matcap;\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 viewDir = normalize( vViewPosition );\n\tvec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );\n\tvec3 y = cross( viewDir, x );\n\tvec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5;\n\t#ifdef USE_MATCAP\n\t\tvec4 matcapColor = texture2D( matcap, uv );\n\t#else\n\t\tvec4 matcapColor = vec4( vec3( mix( 0.2, 0.8, uv.y ) ), 1.0 );\n\t#endif\n\tvec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}`,lf=`#define NORMAL\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\n\tvarying vec3 vViewPosition;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\n\tvViewPosition = - mvPosition.xyz;\n#endif\n}`,hf=`#define NORMAL\nuniform float opacity;\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\n\tvarying vec3 vViewPosition;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\tgl_FragColor = vec4( packNormalToRGB( normal ), opacity );\n\t#ifdef OPAQUE\n\t\tgl_FragColor.a = 1.0;\n\t#endif\n}`,uf=`#define PHONG\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n\t#include \n\t#include \n\t#include \n\t#include \n}`,ff=`#define PHONG\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform vec3 specular;\nuniform float shininess;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}`,df=`#define STANDARD\nvarying vec3 vViewPosition;\n#ifdef USE_TRANSMISSION\n\tvarying vec3 vWorldPosition;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n\t#include \n\t#include \n\t#include \n#ifdef USE_TRANSMISSION\n\tvWorldPosition = worldPosition.xyz;\n#endif\n}`,pf=`#define STANDARD\n#ifdef PHYSICAL\n\t#define IOR\n\t#define SPECULAR\n#endif\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float roughness;\nuniform float metalness;\nuniform float opacity;\n#ifdef IOR\n\tuniform float ior;\n#endif\n#ifdef SPECULAR\n\tuniform float specularIntensity;\n\tuniform vec3 specularColor;\n\t#ifdef USE_SPECULARINTENSITYMAP\n\t\tuniform sampler2D specularIntensityMap;\n\t#endif\n\t#ifdef USE_SPECULARCOLORMAP\n\t\tuniform sampler2D specularColorMap;\n\t#endif\n#endif\n#ifdef USE_CLEARCOAT\n\tuniform float clearcoat;\n\tuniform float clearcoatRoughness;\n#endif\n#ifdef USE_IRIDESCENCE\n\tuniform float iridescence;\n\tuniform float iridescenceIOR;\n\tuniform float iridescenceThicknessMinimum;\n\tuniform float iridescenceThicknessMaximum;\n#endif\n#ifdef USE_SHEEN\n\tuniform vec3 sheenColor;\n\tuniform float sheenRoughness;\n\t#ifdef USE_SHEENCOLORMAP\n\t\tuniform sampler2D sheenColorMap;\n\t#endif\n\t#ifdef USE_SHEENROUGHNESSMAP\n\t\tuniform sampler2D sheenRoughnessMap;\n\t#endif\n#endif\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse;\n\tvec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular;\n\t#include \n\tvec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance;\n\t#ifdef USE_SHEEN\n\t\tfloat sheenEnergyComp = 1.0 - 0.157 * max3( material.sheenColor );\n\t\toutgoingLight = outgoingLight * sheenEnergyComp + sheenSpecular;\n\t#endif\n\t#ifdef USE_CLEARCOAT\n\t\tfloat dotNVcc = saturate( dot( geometry.clearcoatNormal, geometry.viewDir ) );\n\t\tvec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc );\n\t\toutgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + clearcoatSpecular * material.clearcoat;\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}`,mf=`#define TOON\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n\t#include \n\t#include \n\t#include \n}`,gf=`#define TOON\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}`,xf=`uniform float size;\nuniform float scale;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tgl_PointSize = size;\n\t#ifdef USE_SIZEATTENUATION\n\t\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\n\t\tif ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z );\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n}`,_f=`uniform vec3 diffuse;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\toutgoingLight = diffuseColor.rgb;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}`,yf=`#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}`,vf=`uniform vec3 color;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\tgl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );\n\t#include \n\t#include \n\t#include \n}`,Mf=`uniform float rotation;\nuniform vec2 center;\n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );\n\tvec2 scale;\n\tscale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) );\n\tscale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) );\n\t#ifndef USE_SIZEATTENUATION\n\t\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\n\t\tif ( isPerspective ) scale *= - mvPosition.z;\n\t#endif\n\tvec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale;\n\tvec2 rotatedPosition;\n\trotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;\n\trotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;\n\tmvPosition.xy += rotatedPosition;\n\tgl_Position = projectionMatrix * mvPosition;\n\t#include \n\t#include \n\t#include \n}`,bf=`uniform vec3 diffuse;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\toutgoingLight = diffuseColor.rgb;\n\t#include \n\t#include \n\t#include \n\t#include \n}`,wt={alphamap_fragment:Wl,alphamap_pars_fragment:ql,alphatest_fragment:Xl,alphatest_pars_fragment:Yl,aomap_fragment:Zl,aomap_pars_fragment:Jl,begin_vertex:$l,beginnormal_vertex:Kl,bsdfs:jl,iridescence_fragment:Ql,bumpmap_pars_fragment:th,clipping_planes_fragment:eh,clipping_planes_pars_fragment:nh,clipping_planes_pars_vertex:ih,clipping_planes_vertex:sh,color_fragment:rh,color_pars_fragment:oh,color_pars_vertex:ah,color_vertex:ch,common:lh,cube_uv_reflection_fragment:hh,defaultnormal_vertex:uh,displacementmap_pars_vertex:fh,displacementmap_vertex:dh,emissivemap_fragment:ph,emissivemap_pars_fragment:mh,encodings_fragment:gh,encodings_pars_fragment:xh,envmap_fragment:_h,envmap_common_pars_fragment:yh,envmap_pars_fragment:vh,envmap_pars_vertex:Mh,envmap_physical_pars_fragment:Dh,envmap_vertex:bh,fog_vertex:wh,fog_pars_vertex:Sh,fog_fragment:Th,fog_pars_fragment:Ah,gradientmap_pars_fragment:Eh,lightmap_fragment:Ch,lightmap_pars_fragment:Ph,lights_lambert_fragment:Rh,lights_lambert_pars_fragment:Lh,lights_pars_begin:Ih,lights_toon_fragment:Nh,lights_toon_pars_fragment:Fh,lights_phong_fragment:zh,lights_phong_pars_fragment:Oh,lights_physical_fragment:Bh,lights_physical_pars_fragment:Uh,lights_fragment_begin:kh,lights_fragment_maps:Vh,lights_fragment_end:Gh,logdepthbuf_fragment:Hh,logdepthbuf_pars_fragment:Wh,logdepthbuf_pars_vertex:qh,logdepthbuf_vertex:Xh,map_fragment:Yh,map_pars_fragment:Zh,map_particle_fragment:Jh,map_particle_pars_fragment:$h,metalnessmap_fragment:Kh,metalnessmap_pars_fragment:jh,morphcolor_vertex:Qh,morphnormal_vertex:tu,morphtarget_pars_vertex:eu,morphtarget_vertex:nu,normal_fragment_begin:iu,normal_fragment_maps:su,normal_pars_fragment:ru,normal_pars_vertex:ou,normal_vertex:au,normalmap_pars_fragment:cu,clearcoat_normal_fragment_begin:lu,clearcoat_normal_fragment_maps:hu,clearcoat_pars_fragment:uu,iridescence_pars_fragment:fu,output_fragment:du,packing:pu,premultiplied_alpha_fragment:mu,project_vertex:gu,dithering_fragment:xu,dithering_pars_fragment:_u,roughnessmap_fragment:yu,roughnessmap_pars_fragment:vu,shadowmap_pars_fragment:Mu,shadowmap_pars_vertex:bu,shadowmap_vertex:wu,shadowmask_pars_fragment:Su,skinbase_vertex:Tu,skinning_pars_vertex:Au,skinning_vertex:Eu,skinnormal_vertex:Cu,specularmap_fragment:Pu,specularmap_pars_fragment:Ru,tonemapping_fragment:Lu,tonemapping_pars_fragment:Iu,transmission_fragment:Du,transmission_pars_fragment:Nu,uv_pars_fragment:Fu,uv_pars_vertex:zu,uv_vertex:Ou,uv2_pars_fragment:Bu,uv2_pars_vertex:Uu,uv2_vertex:ku,worldpos_vertex:Vu,background_vert:Gu,background_frag:Hu,backgroundCube_vert:Wu,backgroundCube_frag:qu,cube_vert:Xu,cube_frag:Yu,depth_vert:Zu,depth_frag:Ju,distanceRGBA_vert:$u,distanceRGBA_frag:Ku,equirect_vert:ju,equirect_frag:Qu,linedashed_vert:tf,linedashed_frag:ef,meshbasic_vert:nf,meshbasic_frag:sf,meshlambert_vert:rf,meshlambert_frag:of,meshmatcap_vert:af,meshmatcap_frag:cf,meshnormal_vert:lf,meshnormal_frag:hf,meshphong_vert:uf,meshphong_frag:ff,meshphysical_vert:df,meshphysical_frag:pf,meshtoon_vert:mf,meshtoon_frag:gf,points_vert:xf,points_frag:_f,shadow_vert:yf,shadow_frag:vf,sprite_vert:Mf,sprite_frag:bf},et={common:{diffuse:{value:new Bt(16777215)},opacity:{value:1},map:{value:null},uvTransform:{value:new le},uv2Transform:{value:new le},alphaMap:{value:null},alphaTest:{value:0}},specularmap:{specularMap:{value:null}},envmap:{envMap:{value:null},flipEnvMap:{value:-1},reflectivity:{value:1},ior:{value:1.5},refractionRatio:{value:.98}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1}},emissivemap:{emissiveMap:{value:null}},bumpmap:{bumpMap:{value:null},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalScale:{value:new At(1,1)}},displacementmap:{displacementMap:{value:null},displacementScale:{value:1},displacementBias:{value:0}},roughnessmap:{roughnessMap:{value:null}},metalnessmap:{metalnessMap:{value:null}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new Bt(16777215)}},lights:{ambientLightColor:{value:[]},lightProbe:{value:[]},directionalLights:{value:[],properties:{direction:{},color:{}}},directionalLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},directionalShadowMap:{value:[]},directionalShadowMatrix:{value:[]},spotLights:{value:[],properties:{color:{},position:{},direction:{},distance:{},coneCos:{},penumbraCos:{},decay:{}}},spotLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},spotLightMap:{value:[]},spotShadowMap:{value:[]},spotLightMatrix:{value:[]},pointLights:{value:[],properties:{color:{},position:{},decay:{},distance:{}}},pointLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{},shadowCameraNear:{},shadowCameraFar:{}}},pointShadowMap:{value:[]},pointShadowMatrix:{value:[]},hemisphereLights:{value:[],properties:{direction:{},skyColor:{},groundColor:{}}},rectAreaLights:{value:[],properties:{color:{},position:{},width:{},height:{}}},ltc_1:{value:null},ltc_2:{value:null}},points:{diffuse:{value:new Bt(16777215)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},alphaTest:{value:0},uvTransform:{value:new le}},sprite:{diffuse:{value:new Bt(16777215)},opacity:{value:1},center:{value:new At(.5,.5)},rotation:{value:0},map:{value:null},alphaMap:{value:null},alphaTest:{value:0},uvTransform:{value:new le}}},He={basic:{uniforms:ae([et.common,et.specularmap,et.envmap,et.aomap,et.lightmap,et.fog]),vertexShader:wt.meshbasic_vert,fragmentShader:wt.meshbasic_frag},lambert:{uniforms:ae([et.common,et.specularmap,et.envmap,et.aomap,et.lightmap,et.emissivemap,et.bumpmap,et.normalmap,et.displacementmap,et.fog,et.lights,{emissive:{value:new Bt(0)}}]),vertexShader:wt.meshlambert_vert,fragmentShader:wt.meshlambert_frag},phong:{uniforms:ae([et.common,et.specularmap,et.envmap,et.aomap,et.lightmap,et.emissivemap,et.bumpmap,et.normalmap,et.displacementmap,et.fog,et.lights,{emissive:{value:new Bt(0)},specular:{value:new Bt(1118481)},shininess:{value:30}}]),vertexShader:wt.meshphong_vert,fragmentShader:wt.meshphong_frag},standard:{uniforms:ae([et.common,et.envmap,et.aomap,et.lightmap,et.emissivemap,et.bumpmap,et.normalmap,et.displacementmap,et.roughnessmap,et.metalnessmap,et.fog,et.lights,{emissive:{value:new Bt(0)},roughness:{value:1},metalness:{value:0},envMapIntensity:{value:1}}]),vertexShader:wt.meshphysical_vert,fragmentShader:wt.meshphysical_frag},toon:{uniforms:ae([et.common,et.aomap,et.lightmap,et.emissivemap,et.bumpmap,et.normalmap,et.displacementmap,et.gradientmap,et.fog,et.lights,{emissive:{value:new Bt(0)}}]),vertexShader:wt.meshtoon_vert,fragmentShader:wt.meshtoon_frag},matcap:{uniforms:ae([et.common,et.bumpmap,et.normalmap,et.displacementmap,et.fog,{matcap:{value:null}}]),vertexShader:wt.meshmatcap_vert,fragmentShader:wt.meshmatcap_frag},points:{uniforms:ae([et.points,et.fog]),vertexShader:wt.points_vert,fragmentShader:wt.points_frag},dashed:{uniforms:ae([et.common,et.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:wt.linedashed_vert,fragmentShader:wt.linedashed_frag},depth:{uniforms:ae([et.common,et.displacementmap]),vertexShader:wt.depth_vert,fragmentShader:wt.depth_frag},normal:{uniforms:ae([et.common,et.bumpmap,et.normalmap,et.displacementmap,{opacity:{value:1}}]),vertexShader:wt.meshnormal_vert,fragmentShader:wt.meshnormal_frag},sprite:{uniforms:ae([et.sprite,et.fog]),vertexShader:wt.sprite_vert,fragmentShader:wt.sprite_frag},background:{uniforms:{uvTransform:{value:new le},t2D:{value:null},backgroundIntensity:{value:1}},vertexShader:wt.background_vert,fragmentShader:wt.background_frag},backgroundCube:{uniforms:{envMap:{value:null},flipEnvMap:{value:-1},backgroundBlurriness:{value:0},backgroundIntensity:{value:1}},vertexShader:wt.backgroundCube_vert,fragmentShader:wt.backgroundCube_frag},cube:{uniforms:{tCube:{value:null},tFlip:{value:-1},opacity:{value:1}},vertexShader:wt.cube_vert,fragmentShader:wt.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:wt.equirect_vert,fragmentShader:wt.equirect_frag},distanceRGBA:{uniforms:ae([et.common,et.displacementmap,{referencePosition:{value:new R},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:wt.distanceRGBA_vert,fragmentShader:wt.distanceRGBA_frag},shadow:{uniforms:ae([et.lights,et.fog,{color:{value:new Bt(0)},opacity:{value:1}}]),vertexShader:wt.shadow_vert,fragmentShader:wt.shadow_frag}};He.physical={uniforms:ae([He.standard.uniforms,{clearcoat:{value:0},clearcoatMap:{value:null},clearcoatRoughness:{value:0},clearcoatRoughnessMap:{value:null},clearcoatNormalScale:{value:new At(1,1)},clearcoatNormalMap:{value:null},iridescence:{value:0},iridescenceMap:{value:null},iridescenceIOR:{value:1.3},iridescenceThicknessMinimum:{value:100},iridescenceThicknessMaximum:{value:400},iridescenceThicknessMap:{value:null},sheen:{value:0},sheenColor:{value:new Bt(0)},sheenColorMap:{value:null},sheenRoughness:{value:1},sheenRoughnessMap:{value:null},transmission:{value:0},transmissionMap:{value:null},transmissionSamplerSize:{value:new At},transmissionSamplerMap:{value:null},thickness:{value:0},thicknessMap:{value:null},attenuationDistance:{value:0},attenuationColor:{value:new Bt(0)},specularIntensity:{value:1},specularIntensityMap:{value:null},specularColor:{value:new Bt(1,1,1)},specularColorMap:{value:null}}]),vertexShader:wt.meshphysical_vert,fragmentShader:wt.meshphysical_frag};var fs={r:0,b:0,g:0};function wf(r,t,e,n,i,s,a){let o=new Bt(0),c=s===!0?0:1,l,h,f=null,u=0,m=null;function x(d,g){let M=!1,_=g.isScene===!0?g.background:null;_&&_.isTexture&&(_=(g.backgroundBlurriness>0?e:t).get(_));let v=r.xr,b=v.getSession&&v.getSession();b&&b.environmentBlendMode==="additive"&&(_=null),_===null?p(o,c):_&&_.isColor&&(p(_,1),M=!0),(r.autoClear||M)&&r.clear(r.autoClearColor,r.autoClearDepth,r.autoClearStencil),_&&(_.isCubeTexture||_.mapping===Ls)?(h===void 0&&(h=new qe(new zn(1,1,1),new on({name:"BackgroundCubeMaterial",uniforms:di(He.backgroundCube.uniforms),vertexShader:He.backgroundCube.vertexShader,fragmentShader:He.backgroundCube.fragmentShader,side:he,depthTest:!1,depthWrite:!1,fog:!1})),h.geometry.deleteAttribute("normal"),h.geometry.deleteAttribute("uv"),h.onBeforeRender=function(A,C,y){this.matrixWorld.copyPosition(y.matrixWorld)},Object.defineProperty(h.material,"envMap",{get:function(){return this.uniforms.envMap.value}}),i.update(h)),h.material.uniforms.envMap.value=_,h.material.uniforms.flipEnvMap.value=_.isCubeTexture&&_.isRenderTargetTexture===!1?-1:1,h.material.uniforms.backgroundBlurriness.value=g.backgroundBlurriness,h.material.uniforms.backgroundIntensity.value=g.backgroundIntensity,h.material.toneMapped=_.encoding!==Ot,(f!==_||u!==_.version||m!==r.toneMapping)&&(h.material.needsUpdate=!0,f=_,u=_.version,m=r.toneMapping),h.layers.enableAll(),d.unshift(h,h.geometry,h.material,0,0,null)):_&&_.isTexture&&(l===void 0&&(l=new qe(new ki(2,2),new on({name:"BackgroundMaterial",uniforms:di(He.background.uniforms),vertexShader:He.background.vertexShader,fragmentShader:He.background.fragmentShader,side:Ue,depthTest:!1,depthWrite:!1,fog:!1})),l.geometry.deleteAttribute("normal"),Object.defineProperty(l.material,"map",{get:function(){return this.uniforms.t2D.value}}),i.update(l)),l.material.uniforms.t2D.value=_,l.material.uniforms.backgroundIntensity.value=g.backgroundIntensity,l.material.toneMapped=_.encoding!==Ot,_.matrixAutoUpdate===!0&&_.updateMatrix(),l.material.uniforms.uvTransform.value.copy(_.matrix),(f!==_||u!==_.version||m!==r.toneMapping)&&(l.material.needsUpdate=!0,f=_,u=_.version,m=r.toneMapping),l.layers.enableAll(),d.unshift(l,l.geometry,l.material,0,0,null))}function p(d,g){d.getRGB(fs,ja(r)),n.buffers.color.setClear(fs.r,fs.g,fs.b,g,a)}return{getClearColor:function(){return o},setClearColor:function(d,g=1){o.set(d),c=g,p(o,c)},getClearAlpha:function(){return c},setClearAlpha:function(d){c=d,p(o,c)},render:x}}function Sf(r,t,e,n){let i=r.getParameter(34921),s=n.isWebGL2?null:t.get("OES_vertex_array_object"),a=n.isWebGL2||s!==null,o={},c=d(null),l=c,h=!1;function f(I,k,Y,Z,H){let $=!1;if(a){let J=p(Z,Y,k);l!==J&&(l=J,m(l.object)),$=g(I,Z,Y,H),$&&M(I,Z,Y,H)}else{let J=k.wireframe===!0;(l.geometry!==Z.id||l.program!==Y.id||l.wireframe!==J)&&(l.geometry=Z.id,l.program=Y.id,l.wireframe=J,$=!0)}H!==null&&e.update(H,34963),($||h)&&(h=!1,y(I,k,Y,Z),H!==null&&r.bindBuffer(34963,e.get(H).buffer))}function u(){return n.isWebGL2?r.createVertexArray():s.createVertexArrayOES()}function m(I){return n.isWebGL2?r.bindVertexArray(I):s.bindVertexArrayOES(I)}function x(I){return n.isWebGL2?r.deleteVertexArray(I):s.deleteVertexArrayOES(I)}function p(I,k,Y){let Z=Y.wireframe===!0,H=o[I.id];H===void 0&&(H={},o[I.id]=H);let $=H[k.id];$===void 0&&($={},H[k.id]=$);let J=$[Z];return J===void 0&&(J=d(u()),$[Z]=J),J}function d(I){let k=[],Y=[],Z=[];for(let H=0;H=0){let nt=H[z],it=$[z];if(it===void 0&&(z==="instanceMatrix"&&I.instanceMatrix&&(it=I.instanceMatrix),z==="instanceColor"&&I.instanceColor&&(it=I.instanceColor)),nt===void 0||nt.attribute!==it||it&&nt.data!==it.data)return!0;J++}return l.attributesNum!==J||l.index!==Z}function M(I,k,Y,Z){let H={},$=k.attributes,J=0,dt=Y.getAttributes();for(let z in dt)if(dt[z].location>=0){let nt=$[z];nt===void 0&&(z==="instanceMatrix"&&I.instanceMatrix&&(nt=I.instanceMatrix),z==="instanceColor"&&I.instanceColor&&(nt=I.instanceColor));let it={};it.attribute=nt,nt&&nt.data&&(it.data=nt.data),H[z]=it,J++}l.attributes=H,l.attributesNum=J,l.index=Z}function _(){let I=l.newAttributes;for(let k=0,Y=I.length;k=0){let K=H[dt];if(K===void 0&&(dt==="instanceMatrix"&&I.instanceMatrix&&(K=I.instanceMatrix),dt==="instanceColor"&&I.instanceColor&&(K=I.instanceColor)),K!==void 0){let nt=K.normalized,it=K.itemSize,U=e.get(K);if(U===void 0)continue;let Mt=U.buffer,ht=U.type,ut=U.bytesPerElement;if(K.isInterleavedBufferAttribute){let at=K.data,Ft=at.stride,bt=K.offset;if(at.isInstancedInterleavedBuffer){for(let _t=0;_t0&&r.getShaderPrecisionFormat(35632,36338).precision>0)return"highp";C="mediump"}return C==="mediump"&&r.getShaderPrecisionFormat(35633,36337).precision>0&&r.getShaderPrecisionFormat(35632,36337).precision>0?"mediump":"lowp"}let a=typeof WebGL2RenderingContext!="undefined"&&r instanceof WebGL2RenderingContext,o=e.precision!==void 0?e.precision:"highp",c=s(o);c!==o&&(console.warn("THREE.WebGLRenderer:",o,"not supported, using",c,"instead."),o=c);let l=a||t.has("WEBGL_draw_buffers"),h=e.logarithmicDepthBuffer===!0,f=r.getParameter(34930),u=r.getParameter(35660),m=r.getParameter(3379),x=r.getParameter(34076),p=r.getParameter(34921),d=r.getParameter(36347),g=r.getParameter(36348),M=r.getParameter(36349),_=u>0,v=a||t.has("OES_texture_float"),b=_&&v,A=a?r.getParameter(36183):0;return{isWebGL2:a,drawBuffers:l,getMaxAnisotropy:i,getMaxPrecision:s,precision:o,logarithmicDepthBuffer:h,maxTextures:f,maxVertexTextures:u,maxTextureSize:m,maxCubemapSize:x,maxAttributes:p,maxVertexUniforms:d,maxVaryings:g,maxFragmentUniforms:M,vertexTextures:_,floatFragmentTextures:v,floatVertexTextures:b,maxSamples:A}}function Ef(r){let t=this,e=null,n=0,i=!1,s=!1,a=new Te,o=new le,c={value:null,needsUpdate:!1};this.uniform=c,this.numPlanes=0,this.numIntersection=0,this.init=function(f,u){let m=f.length!==0||u||n!==0||i;return i=u,n=f.length,m},this.beginShadows=function(){s=!0,h(null)},this.endShadows=function(){s=!1},this.setGlobalState=function(f,u){e=h(f,u,0)},this.setState=function(f,u,m){let x=f.clippingPlanes,p=f.clipIntersection,d=f.clipShadows,g=r.get(f);if(!i||x===null||x.length===0||s&&!d)s?h(null):l();else{let M=s?0:n,_=M*4,v=g.clippingState||null;c.value=v,v=h(x,u,_,m);for(let b=0;b!==_;++b)v[b]=e[b];g.clippingState=v,this.numIntersection=p?this.numPlanes:0,this.numPlanes+=M}};function l(){c.value!==e&&(c.value=e,c.needsUpdate=n>0),t.numPlanes=n,t.numIntersection=0}function h(f,u,m,x){let p=f!==null?f.length:0,d=null;if(p!==0){if(d=c.value,x!==!0||d===null){let g=m+p*4,M=u.matrixWorldInverse;o.getNormalMatrix(M),(d===null||d.length0){let l=new Or(c.height/2);return l.fromEquirectangularTexture(r,a),t.set(a,l),a.addEventListener("dispose",i),e(l.texture,a.mapping)}else return null}}return a}function i(a){let o=a.target;o.removeEventListener("dispose",i);let c=t.get(o);c!==void 0&&(t.delete(o),c.dispose())}function s(){t=new WeakMap}return{get:n,dispose:s}}var Br=class extends Es{constructor(t=-1,e=1,n=1,i=-1,s=.1,a=2e3){super(),this.isOrthographicCamera=!0,this.type="OrthographicCamera",this.zoom=1,this.view=null,this.left=t,this.right=e,this.top=n,this.bottom=i,this.near=s,this.far=a,this.updateProjectionMatrix()}copy(t,e){return super.copy(t,e),this.left=t.left,this.right=t.right,this.top=t.top,this.bottom=t.bottom,this.near=t.near,this.far=t.far,this.zoom=t.zoom,this.view=t.view===null?null:Object.assign({},t.view),this}setViewOffset(t,e,n,i,s,a){this.view===null&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=t,this.view.fullHeight=e,this.view.offsetX=n,this.view.offsetY=i,this.view.width=s,this.view.height=a,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){let t=(this.right-this.left)/(2*this.zoom),e=(this.top-this.bottom)/(2*this.zoom),n=(this.right+this.left)/2,i=(this.top+this.bottom)/2,s=n-t,a=n+t,o=i+e,c=i-e;if(this.view!==null&&this.view.enabled){let l=(this.right-this.left)/this.view.fullWidth/this.zoom,h=(this.top-this.bottom)/this.view.fullHeight/this.zoom;s+=l*this.view.offsetX,a=s+l*this.view.width,o-=h*this.view.offsetY,c=o-h*this.view.height}this.projectionMatrix.makeOrthographic(s,a,o,c,this.near,this.far),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(t){let e=super.toJSON(t);return e.object.zoom=this.zoom,e.object.left=this.left,e.object.right=this.right,e.object.top=this.top,e.object.bottom=this.bottom,e.object.near=this.near,e.object.far=this.far,this.view!==null&&(e.object.view=Object.assign({},this.view)),e}},ii=4,ba=[.125,.215,.35,.446,.526,.582],Cn=20,Sr=new Br,wa=new Bt,Tr=null,En=(1+Math.sqrt(5))/2,ei=1/En,Sa=[new R(1,1,1),new R(-1,1,1),new R(1,1,-1),new R(-1,1,-1),new R(0,En,ei),new R(0,En,-ei),new R(ei,0,En),new R(-ei,0,En),new R(En,ei,0),new R(-En,ei,0)],Rs=class{constructor(t){this._renderer=t,this._pingPongRenderTarget=null,this._lodMax=0,this._cubeSize=0,this._lodPlanes=[],this._sizeLods=[],this._sigmas=[],this._blurMaterial=null,this._cubemapMaterial=null,this._equirectMaterial=null,this._compileMaterial(this._blurMaterial)}fromScene(t,e=0,n=.1,i=100){Tr=this._renderer.getRenderTarget(),this._setSize(256);let s=this._allocateTargets();return s.depthBuffer=!0,this._sceneToCubeUV(t,n,i,s),e>0&&this._blur(s,0,0,e),this._applyPMREM(s),this._cleanup(s),s}fromEquirectangular(t,e=null){return this._fromTexture(t,e)}fromCubemap(t,e=null){return this._fromTexture(t,e)}compileCubemapShader(){this._cubemapMaterial===null&&(this._cubemapMaterial=Ea(),this._compileMaterial(this._cubemapMaterial))}compileEquirectangularShader(){this._equirectMaterial===null&&(this._equirectMaterial=Aa(),this._compileMaterial(this._equirectMaterial))}dispose(){this._dispose(),this._cubemapMaterial!==null&&this._cubemapMaterial.dispose(),this._equirectMaterial!==null&&this._equirectMaterial.dispose()}_setSize(t){this._lodMax=Math.floor(Math.log2(t)),this._cubeSize=Math.pow(2,this._lodMax)}_dispose(){this._blurMaterial!==null&&this._blurMaterial.dispose(),this._pingPongRenderTarget!==null&&this._pingPongRenderTarget.dispose();for(let t=0;t2?_:0,_,_),h.setRenderTarget(i),p&&h.render(x,o),h.render(t,o)}x.geometry.dispose(),x.material.dispose(),h.toneMapping=u,h.autoClear=f,t.background=d}_textureToCubeUV(t,e){let n=this._renderer,i=t.mapping===ci||t.mapping===li;i?(this._cubemapMaterial===null&&(this._cubemapMaterial=Ea()),this._cubemapMaterial.uniforms.flipEnvMap.value=t.isRenderTargetTexture===!1?-1:1):this._equirectMaterial===null&&(this._equirectMaterial=Aa());let s=i?this._cubemapMaterial:this._equirectMaterial,a=new qe(this._lodPlanes[0],s),o=s.uniforms;o.envMap.value=t;let c=this._cubeSize;ds(e,0,0,3*c,2*c),n.setRenderTarget(e),n.render(a,Sr)}_applyPMREM(t){let e=this._renderer,n=e.autoClear;e.autoClear=!1;for(let i=1;iCn&&console.warn(`sigmaRadians, ${s}, is too large and will clip, as it requested ${d} samples when the maximum is set to ${Cn}`);let g=[],M=0;for(let C=0;C_-ii?i-_+ii:0),A=4*(this._cubeSize-v);ds(e,b,A,3*v,2*v),c.setRenderTarget(e),c.render(f,Sr)}};function Pf(r){let t=[],e=[],n=[],i=r,s=r-ii+1+ba.length;for(let a=0;ar-ii?c=ba[a-r+ii-1]:a===0&&(c=0),n.push(c);let l=1/(o-2),h=-l,f=1+l,u=[h,h,f,h,f,f,h,h,f,f,h,f],m=6,x=6,p=3,d=2,g=1,M=new Float32Array(p*x*m),_=new Float32Array(d*x*m),v=new Float32Array(g*x*m);for(let A=0;A2?0:-1,S=[C,y,0,C+2/3,y,0,C+2/3,y+1,0,C,y,0,C+2/3,y+1,0,C,y+1,0];M.set(S,p*x*A),_.set(u,d*x*A);let P=[A,A,A,A,A,A];v.set(P,g*x*A)}let b=new ke;b.setAttribute("position",new Yt(M,p)),b.setAttribute("uv",new Yt(_,d)),b.setAttribute("faceIndex",new Yt(v,g)),t.push(b),i>ii&&i--}return{lodPlanes:t,sizeLods:e,sigmas:n}}function Ta(r,t,e){let n=new rn(r,t,e);return n.texture.mapping=Ls,n.texture.name="PMREM.cubeUv",n.scissorTest=!0,n}function ds(r,t,e,n,i){r.viewport.set(t,e,n,i),r.scissor.set(t,e,n,i)}function Rf(r,t,e){let n=new Float32Array(Cn),i=new R(0,1,0);return new on({name:"SphericalGaussianBlur",defines:{n:Cn,CUBEUV_TEXEL_WIDTH:1/t,CUBEUV_TEXEL_HEIGHT:1/e,CUBEUV_MAX_MIP:`${r}.0`},uniforms:{envMap:{value:null},samples:{value:1},weights:{value:n},latitudinal:{value:!1},dTheta:{value:0},mipInt:{value:0},poleAxis:{value:i}},vertexShader:oo(),fragmentShader:`\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\t\t\tuniform int samples;\n\t\t\tuniform float weights[ n ];\n\t\t\tuniform bool latitudinal;\n\t\t\tuniform float dTheta;\n\t\t\tuniform float mipInt;\n\t\t\tuniform vec3 poleAxis;\n\n\t\t\t#define ENVMAP_TYPE_CUBE_UV\n\t\t\t#include \n\n\t\t\tvec3 getSample( float theta, vec3 axis ) {\n\n\t\t\t\tfloat cosTheta = cos( theta );\n\t\t\t\t// Rodrigues\' axis-angle rotation\n\t\t\t\tvec3 sampleDirection = vOutputDirection * cosTheta\n\t\t\t\t\t+ cross( axis, vOutputDirection ) * sin( theta )\n\t\t\t\t\t+ axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta );\n\n\t\t\t\treturn bilinearCubeUV( envMap, sampleDirection, mipInt );\n\n\t\t\t}\n\n\t\t\tvoid main() {\n\n\t\t\t\tvec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection );\n\n\t\t\t\tif ( all( equal( axis, vec3( 0.0 ) ) ) ) {\n\n\t\t\t\t\taxis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x );\n\n\t\t\t\t}\n\n\t\t\t\taxis = normalize( axis );\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\t\t\t\tgl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis );\n\n\t\t\t\tfor ( int i = 1; i < n; i++ ) {\n\n\t\t\t\t\tif ( i >= samples ) {\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfloat theta = dTheta * float( i );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( theta, axis );\n\n\t\t\t\t}\n\n\t\t\t}\n\t\t`,blending:pn,depthTest:!1,depthWrite:!1})}function Aa(){return new on({name:"EquirectangularToCubeUV",uniforms:{envMap:{value:null}},vertexShader:oo(),fragmentShader:`\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\n\t\t\t#include \n\n\t\t\tvoid main() {\n\n\t\t\t\tvec3 outputDirection = normalize( vOutputDirection );\n\t\t\t\tvec2 uv = equirectUv( outputDirection );\n\n\t\t\t\tgl_FragColor = vec4( texture2D ( envMap, uv ).rgb, 1.0 );\n\n\t\t\t}\n\t\t`,blending:pn,depthTest:!1,depthWrite:!1})}function Ea(){return new on({name:"CubemapToCubeUV",uniforms:{envMap:{value:null},flipEnvMap:{value:-1}},vertexShader:oo(),fragmentShader:`\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tuniform float flipEnvMap;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform samplerCube envMap;\n\n\t\t\tvoid main() {\n\n\t\t\t\tgl_FragColor = textureCube( envMap, vec3( flipEnvMap * vOutputDirection.x, vOutputDirection.yz ) );\n\n\t\t\t}\n\t\t`,blending:pn,depthTest:!1,depthWrite:!1})}function oo(){return`\n\n\t\tprecision mediump float;\n\t\tprecision mediump int;\n\n\t\tattribute float faceIndex;\n\n\t\tvarying vec3 vOutputDirection;\n\n\t\t// RH coordinate system; PMREM face-indexing convention\n\t\tvec3 getDirection( vec2 uv, float face ) {\n\n\t\t\tuv = 2.0 * uv - 1.0;\n\n\t\t\tvec3 direction = vec3( uv, 1.0 );\n\n\t\t\tif ( face == 0.0 ) {\n\n\t\t\t\tdirection = direction.zyx; // ( 1, v, u ) pos x\n\n\t\t\t} else if ( face == 1.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xz *= -1.0; // ( -u, 1, -v ) pos y\n\n\t\t\t} else if ( face == 2.0 ) {\n\n\t\t\t\tdirection.x *= -1.0; // ( -u, v, 1 ) pos z\n\n\t\t\t} else if ( face == 3.0 ) {\n\n\t\t\t\tdirection = direction.zyx;\n\t\t\t\tdirection.xz *= -1.0; // ( -1, v, -u ) neg x\n\n\t\t\t} else if ( face == 4.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xy *= -1.0; // ( -u, -1, v ) neg y\n\n\t\t\t} else if ( face == 5.0 ) {\n\n\t\t\t\tdirection.z *= -1.0; // ( u, v, -1 ) neg z\n\n\t\t\t}\n\n\t\t\treturn direction;\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tvOutputDirection = getDirection( uv, faceIndex );\n\t\t\tgl_Position = vec4( position, 1.0 );\n\n\t\t}\n\t`}function Lf(r){let t=new WeakMap,e=null;function n(o){if(o&&o.isTexture){let c=o.mapping,l=c===Cr||c===Pr,h=c===ci||c===li;if(l||h)if(o.isRenderTargetTexture&&o.needsPMREMUpdate===!0){o.needsPMREMUpdate=!1;let f=t.get(o);return e===null&&(e=new Rs(r)),f=l?e.fromEquirectangular(o,f):e.fromCubemap(o,f),t.set(o,f),f.texture}else{if(t.has(o))return t.get(o).texture;{let f=o.image;if(l&&f&&f.height>0||h&&f&&i(f)){e===null&&(e=new Rs(r));let u=l?e.fromEquirectangular(o):e.fromCubemap(o);return t.set(o,u),o.addEventListener("dispose",s),u.texture}else return null}}}return o}function i(o){let c=0,l=6;for(let h=0;ht.maxTextureSize&&(O=Math.ceil(P/t.maxTextureSize),P=t.maxTextureSize);let B=new Float32Array(P*O*4*p),D=new bs(B,P,O,p);D.type=Rn,D.needsUpdate=!0;let I=S*4;for(let Y=0;Y0)return r;let i=t*e,s=Ca[i];if(s===void 0&&(s=new Float32Array(i),Ca[i]=s),t!==0){n.toArray(s,0);for(let a=1,o=0;a!==t;++a)o+=e,r[a].toArray(s,o)}return s}function Zt(r,t){if(r.length!==t.length)return!1;for(let e=0,n=r.length;e":" "} ${o}: ${e[a]}`)}return n.join(`\n`)}function Pd(r){switch(r){case Nn:return["Linear","( value )"];case Ot:return["sRGB","( value )"];default:return console.warn("THREE.WebGLProgram: Unsupported encoding:",r),["Linear","( value )"]}}function Fa(r,t,e){let n=r.getShaderParameter(t,35713),i=r.getShaderInfoLog(t).trim();if(n&&i==="")return"";let s=/ERROR: 0:(\\d+)/.exec(i);if(s){let a=parseInt(s[1]);return e.toUpperCase()+`\n\n`+i+`\n\n`+Cd(r.getShaderSource(t),a)}else return i}function Rd(r,t){let e=Pd(t);return"vec4 "+r+"( vec4 value ) { return LinearTo"+e[0]+e[1]+"; }"}function Ld(r,t){let e;switch(t){case Qc:e="Linear";break;case tl:e="Reinhard";break;case el:e="OptimizedCineon";break;case nl:e="ACESFilmic";break;case il:e="Custom";break;default:console.warn("THREE.WebGLProgram: Unsupported toneMapping:",t),e="Linear"}return"vec3 "+r+"( vec3 color ) { return "+e+"ToneMapping( color ); }"}function Id(r){return[r.extensionDerivatives||r.envMapCubeUVHeight||r.bumpMap||r.tangentSpaceNormalMap||r.clearcoatNormalMap||r.flatShading||r.shaderID==="physical"?"#extension GL_OES_standard_derivatives : enable":"",(r.extensionFragDepth||r.logarithmicDepthBuffer)&&r.rendererExtensionFragDepth?"#extension GL_EXT_frag_depth : enable":"",r.extensionDrawBuffers&&r.rendererExtensionDrawBuffers?"#extension GL_EXT_draw_buffers : require":"",(r.extensionShaderTextureLOD||r.envMap||r.transmission)&&r.rendererExtensionShaderTextureLod?"#extension GL_EXT_shader_texture_lod : enable":""].filter(Fi).join(`\n`)}function Dd(r){let t=[];for(let e in r){let n=r[e];n!==!1&&t.push("#define "+e+" "+n)}return t.join(`\n`)}function Nd(r,t){let e={},n=r.getProgramParameter(t,35721);for(let i=0;i/gm;function Gr(r){return r.replace(Fd,zd)}function zd(r,t){let e=wt[t];if(e===void 0)throw new Error("Can not resolve #include <"+t+">");return Gr(e)}var Od=/#pragma unroll_loop_start\\s+for\\s*\\(\\s*int\\s+i\\s*=\\s*(\\d+)\\s*;\\s*i\\s*<\\s*(\\d+)\\s*;\\s*i\\s*\\+\\+\\s*\\)\\s*{([\\s\\S]+?)}\\s+#pragma unroll_loop_end/g;function Ba(r){return r.replace(Od,Bd)}function Bd(r,t,e,n){let i="";for(let s=parseInt(t);s0&&(d+=`\n`),g=[m,x].filter(Fi).join(`\n`),g.length>0&&(g+=`\n`)):(d=[Ua(e),"#define SHADER_NAME "+e.shaderName,x,e.instancing?"#define USE_INSTANCING":"",e.instancingColor?"#define USE_INSTANCING_COLOR":"",e.supportsVertexTextures?"#define VERTEX_TEXTURES":"",e.useFog&&e.fog?"#define USE_FOG":"",e.useFog&&e.fogExp2?"#define FOG_EXP2":"",e.map?"#define USE_MAP":"",e.envMap?"#define USE_ENVMAP":"",e.envMap?"#define "+h:"",e.lightMap?"#define USE_LIGHTMAP":"",e.aoMap?"#define USE_AOMAP":"",e.emissiveMap?"#define USE_EMISSIVEMAP":"",e.bumpMap?"#define USE_BUMPMAP":"",e.normalMap?"#define USE_NORMALMAP":"",e.normalMap&&e.objectSpaceNormalMap?"#define OBJECTSPACE_NORMALMAP":"",e.normalMap&&e.tangentSpaceNormalMap?"#define TANGENTSPACE_NORMALMAP":"",e.clearcoatMap?"#define USE_CLEARCOATMAP":"",e.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",e.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",e.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",e.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",e.displacementMap&&e.supportsVertexTextures?"#define USE_DISPLACEMENTMAP":"",e.specularMap?"#define USE_SPECULARMAP":"",e.specularIntensityMap?"#define USE_SPECULARINTENSITYMAP":"",e.specularColorMap?"#define USE_SPECULARCOLORMAP":"",e.roughnessMap?"#define USE_ROUGHNESSMAP":"",e.metalnessMap?"#define USE_METALNESSMAP":"",e.alphaMap?"#define USE_ALPHAMAP":"",e.transmission?"#define USE_TRANSMISSION":"",e.transmissionMap?"#define USE_TRANSMISSIONMAP":"",e.thicknessMap?"#define USE_THICKNESSMAP":"",e.sheenColorMap?"#define USE_SHEENCOLORMAP":"",e.sheenRoughnessMap?"#define USE_SHEENROUGHNESSMAP":"",e.vertexTangents?"#define USE_TANGENT":"",e.vertexColors?"#define USE_COLOR":"",e.vertexAlphas?"#define USE_COLOR_ALPHA":"",e.vertexUvs?"#define USE_UV":"",e.uvsVertexOnly?"#define UVS_VERTEX_ONLY":"",e.flatShading?"#define FLAT_SHADED":"",e.skinning?"#define USE_SKINNING":"",e.morphTargets?"#define USE_MORPHTARGETS":"",e.morphNormals&&e.flatShading===!1?"#define USE_MORPHNORMALS":"",e.morphColors&&e.isWebGL2?"#define USE_MORPHCOLORS":"",e.morphTargetsCount>0&&e.isWebGL2?"#define MORPHTARGETS_TEXTURE":"",e.morphTargetsCount>0&&e.isWebGL2?"#define MORPHTARGETS_TEXTURE_STRIDE "+e.morphTextureStride:"",e.morphTargetsCount>0&&e.isWebGL2?"#define MORPHTARGETS_COUNT "+e.morphTargetsCount:"",e.doubleSided?"#define DOUBLE_SIDED":"",e.flipSided?"#define FLIP_SIDED":"",e.shadowMapEnabled?"#define USE_SHADOWMAP":"",e.shadowMapEnabled?"#define "+c:"",e.sizeAttenuation?"#define USE_SIZEATTENUATION":"",e.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",e.logarithmicDepthBuffer&&e.rendererExtensionFragDepth?"#define USE_LOGDEPTHBUF_EXT":"","uniform mat4 modelMatrix;","uniform mat4 modelViewMatrix;","uniform mat4 projectionMatrix;","uniform mat4 viewMatrix;","uniform mat3 normalMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;","#ifdef USE_INSTANCING","\tattribute mat4 instanceMatrix;","#endif","#ifdef USE_INSTANCING_COLOR","\tattribute vec3 instanceColor;","#endif","attribute vec3 position;","attribute vec3 normal;","attribute vec2 uv;","#ifdef USE_TANGENT","\tattribute vec4 tangent;","#endif","#if defined( USE_COLOR_ALPHA )","\tattribute vec4 color;","#elif defined( USE_COLOR )","\tattribute vec3 color;","#endif","#if ( defined( USE_MORPHTARGETS ) && ! defined( MORPHTARGETS_TEXTURE ) )","\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",`\n`].filter(Fi).join(`\n`),g=[m,Ua(e),"#define SHADER_NAME "+e.shaderName,x,e.useFog&&e.fog?"#define USE_FOG":"",e.useFog&&e.fogExp2?"#define FOG_EXP2":"",e.map?"#define USE_MAP":"",e.matcap?"#define USE_MATCAP":"",e.envMap?"#define USE_ENVMAP":"",e.envMap?"#define "+l:"",e.envMap?"#define "+h:"",e.envMap?"#define "+f:"",u?"#define CUBEUV_TEXEL_WIDTH "+u.texelWidth:"",u?"#define CUBEUV_TEXEL_HEIGHT "+u.texelHeight:"",u?"#define CUBEUV_MAX_MIP "+u.maxMip+".0":"",e.lightMap?"#define USE_LIGHTMAP":"",e.aoMap?"#define USE_AOMAP":"",e.emissiveMap?"#define USE_EMISSIVEMAP":"",e.bumpMap?"#define USE_BUMPMAP":"",e.normalMap?"#define USE_NORMALMAP":"",e.normalMap&&e.objectSpaceNormalMap?"#define OBJECTSPACE_NORMALMAP":"",e.normalMap&&e.tangentSpaceNormalMap?"#define TANGENTSPACE_NORMALMAP":"",e.clearcoat?"#define USE_CLEARCOAT":"",e.clearcoatMap?"#define USE_CLEARCOATMAP":"",e.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",e.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",e.iridescence?"#define USE_IRIDESCENCE":"",e.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",e.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",e.specularMap?"#define USE_SPECULARMAP":"",e.specularIntensityMap?"#define USE_SPECULARINTENSITYMAP":"",e.specularColorMap?"#define USE_SPECULARCOLORMAP":"",e.roughnessMap?"#define USE_ROUGHNESSMAP":"",e.metalnessMap?"#define USE_METALNESSMAP":"",e.alphaMap?"#define USE_ALPHAMAP":"",e.alphaTest?"#define USE_ALPHATEST":"",e.sheen?"#define USE_SHEEN":"",e.sheenColorMap?"#define USE_SHEENCOLORMAP":"",e.sheenRoughnessMap?"#define USE_SHEENROUGHNESSMAP":"",e.transmission?"#define USE_TRANSMISSION":"",e.transmissionMap?"#define USE_TRANSMISSIONMAP":"",e.thicknessMap?"#define USE_THICKNESSMAP":"",e.decodeVideoTexture?"#define DECODE_VIDEO_TEXTURE":"",e.vertexTangents?"#define USE_TANGENT":"",e.vertexColors||e.instancingColor?"#define USE_COLOR":"",e.vertexAlphas?"#define USE_COLOR_ALPHA":"",e.vertexUvs?"#define USE_UV":"",e.uvsVertexOnly?"#define UVS_VERTEX_ONLY":"",e.gradientMap?"#define USE_GRADIENTMAP":"",e.flatShading?"#define FLAT_SHADED":"",e.doubleSided?"#define DOUBLE_SIDED":"",e.flipSided?"#define FLIP_SIDED":"",e.shadowMapEnabled?"#define USE_SHADOWMAP":"",e.shadowMapEnabled?"#define "+c:"",e.premultipliedAlpha?"#define PREMULTIPLIED_ALPHA":"",e.physicallyCorrectLights?"#define PHYSICALLY_CORRECT_LIGHTS":"",e.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",e.logarithmicDepthBuffer&&e.rendererExtensionFragDepth?"#define USE_LOGDEPTHBUF_EXT":"","uniform mat4 viewMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;",e.toneMapping!==nn?"#define TONE_MAPPING":"",e.toneMapping!==nn?wt.tonemapping_pars_fragment:"",e.toneMapping!==nn?Ld("toneMapping",e.toneMapping):"",e.dithering?"#define DITHERING":"",e.opaque?"#define OPAQUE":"",wt.encodings_pars_fragment,Rd("linearToOutputTexel",e.outputEncoding),e.useDepthPacking?"#define DEPTH_PACKING "+e.depthPacking:"",`\n`].filter(Fi).join(`\n`)),a=Gr(a),a=za(a,e),a=Oa(a,e),o=Gr(o),o=za(o,e),o=Oa(o,e),a=Ba(a),o=Ba(o),e.isWebGL2&&e.isRawShaderMaterial!==!0&&(M=`#version 300 es\n`,d=["precision mediump sampler2DArray;","#define attribute in","#define varying out","#define texture2D texture"].join(`\n`)+`\n`+d,g=["#define varying in",e.glslVersion===la?"":"layout(location = 0) out highp vec4 pc_fragColor;",e.glslVersion===la?"":"#define gl_FragColor pc_fragColor","#define gl_FragDepthEXT gl_FragDepth","#define texture2D texture","#define textureCube texture","#define texture2DProj textureProj","#define texture2DLodEXT textureLod","#define texture2DProjLodEXT textureProjLod","#define textureCubeLodEXT textureLod","#define texture2DGradEXT textureGrad","#define texture2DProjGradEXT textureProjGrad","#define textureCubeGradEXT textureGrad"].join(`\n`)+`\n`+g);let _=M+d+a,v=M+g+o,b=Na(i,35633,_),A=Na(i,35632,v);if(i.attachShader(p,b),i.attachShader(p,A),e.index0AttributeName!==void 0?i.bindAttribLocation(p,0,e.index0AttributeName):e.morphTargets===!0&&i.bindAttribLocation(p,0,"position"),i.linkProgram(p),r.debug.checkShaderErrors){let S=i.getProgramInfoLog(p).trim(),P=i.getShaderInfoLog(b).trim(),O=i.getShaderInfoLog(A).trim(),B=!0,D=!0;if(i.getProgramParameter(p,35714)===!1){B=!1;let I=Fa(i,b,"vertex"),k=Fa(i,A,"fragment");console.error("THREE.WebGLProgram: Shader Error "+i.getError()+" - VALIDATE_STATUS "+i.getProgramParameter(p,35715)+`\n\nProgram Info Log: `+S+`\n`+I+`\n`+k)}else S!==""?console.warn("THREE.WebGLProgram: Program Info Log:",S):(P===""||O==="")&&(D=!1);D&&(this.diagnostics={runnable:B,programLog:S,vertexShader:{log:P,prefix:d},fragmentShader:{log:O,prefix:g}})}i.deleteShader(b),i.deleteShader(A);let C;this.getUniforms=function(){return C===void 0&&(C=new ai(i,p)),C};let y;return this.getAttributes=function(){return y===void 0&&(y=Nd(i,p)),y},this.destroy=function(){n.releaseStatesOfProgram(this),i.deleteProgram(p),this.program=void 0},this.name=e.shaderName,this.id=Ed++,this.cacheKey=t,this.usedTimes=1,this.program=p,this.vertexShader=b,this.fragmentShader=A,this}var qd=0,Hr=class{constructor(){this.shaderCache=new Map,this.materialCache=new Map}update(t){let e=t.vertexShader,n=t.fragmentShader,i=this._getShaderStage(e),s=this._getShaderStage(n),a=this._getShaderCacheForMaterial(t);return a.has(i)===!1&&(a.add(i),i.usedTimes++),a.has(s)===!1&&(a.add(s),s.usedTimes++),this}remove(t){let e=this.materialCache.get(t);for(let n of e)n.usedTimes--,n.usedTimes===0&&this.shaderCache.delete(n.code);return this.materialCache.delete(t),this}getVertexShaderID(t){return this._getShaderStage(t.vertexShader).id}getFragmentShaderID(t){return this._getShaderStage(t.fragmentShader).id}dispose(){this.shaderCache.clear(),this.materialCache.clear()}_getShaderCacheForMaterial(t){let e=this.materialCache,n=e.get(t);return n===void 0&&(n=new Set,e.set(t,n)),n}_getShaderStage(t){let e=this.shaderCache,n=e.get(t);return n===void 0&&(n=new Wr(t),e.set(t,n)),n}},Wr=class{constructor(t){this.id=qd++,this.code=t,this.usedTimes=0}};function Xd(r,t,e,n,i,s,a){let o=new ws,c=new Hr,l=[],h=i.isWebGL2,f=i.logarithmicDepthBuffer,u=i.vertexTextures,m=i.precision,x={MeshDepthMaterial:"depth",MeshDistanceMaterial:"distanceRGBA",MeshNormalMaterial:"normal",MeshBasicMaterial:"basic",MeshLambertMaterial:"lambert",MeshPhongMaterial:"phong",MeshToonMaterial:"toon",MeshStandardMaterial:"physical",MeshPhysicalMaterial:"physical",MeshMatcapMaterial:"matcap",LineBasicMaterial:"basic",LineDashedMaterial:"dashed",PointsMaterial:"points",ShadowMaterial:"shadow",SpriteMaterial:"sprite"};function p(y,S,P,O,B){let D=O.fog,I=B.geometry,k=y.isMeshStandardMaterial?O.environment:null,Y=(y.isMeshStandardMaterial?e:t).get(y.envMap||k),Z=Y&&Y.mapping===Ls?Y.image.height:null,H=x[y.type];y.precision!==null&&(m=i.getMaxPrecision(y.precision),m!==y.precision&&console.warn("THREE.WebGLProgram.getParameters:",y.precision,"not supported, using",m,"instead."));let $=I.morphAttributes.position||I.morphAttributes.normal||I.morphAttributes.color,J=$!==void 0?$.length:0,dt=0;I.morphAttributes.position!==void 0&&(dt=1),I.morphAttributes.normal!==void 0&&(dt=2),I.morphAttributes.color!==void 0&&(dt=3);let z,K,nt,it;if(H){let Ft=He[H];z=Ft.vertexShader,K=Ft.fragmentShader}else z=y.vertexShader,K=y.fragmentShader,c.update(y),nt=c.getVertexShaderID(y),it=c.getFragmentShaderID(y);let U=r.getRenderTarget(),Mt=y.alphaTest>0,ht=y.clearcoat>0,ut=y.iridescence>0;return{isWebGL2:h,shaderID:H,shaderName:y.type,vertexShader:z,fragmentShader:K,defines:y.defines,customVertexShaderID:nt,customFragmentShaderID:it,isRawShaderMaterial:y.isRawShaderMaterial===!0,glslVersion:y.glslVersion,precision:m,instancing:B.isInstancedMesh===!0,instancingColor:B.isInstancedMesh===!0&&B.instanceColor!==null,supportsVertexTextures:u,outputEncoding:U===null?r.outputEncoding:U.isXRRenderTarget===!0?U.texture.encoding:Nn,map:!!y.map,matcap:!!y.matcap,envMap:!!Y,envMapMode:Y&&Y.mapping,envMapCubeUVHeight:Z,lightMap:!!y.lightMap,aoMap:!!y.aoMap,emissiveMap:!!y.emissiveMap,bumpMap:!!y.bumpMap,normalMap:!!y.normalMap,objectSpaceNormalMap:y.normalMapType===wl,tangentSpaceNormalMap:y.normalMapType===bl,decodeVideoTexture:!!y.map&&y.map.isVideoTexture===!0&&y.map.encoding===Ot,clearcoat:ht,clearcoatMap:ht&&!!y.clearcoatMap,clearcoatRoughnessMap:ht&&!!y.clearcoatRoughnessMap,clearcoatNormalMap:ht&&!!y.clearcoatNormalMap,iridescence:ut,iridescenceMap:ut&&!!y.iridescenceMap,iridescenceThicknessMap:ut&&!!y.iridescenceThicknessMap,displacementMap:!!y.displacementMap,roughnessMap:!!y.roughnessMap,metalnessMap:!!y.metalnessMap,specularMap:!!y.specularMap,specularIntensityMap:!!y.specularIntensityMap,specularColorMap:!!y.specularColorMap,opaque:y.transparent===!1&&y.blending===ri,alphaMap:!!y.alphaMap,alphaTest:Mt,gradientMap:!!y.gradientMap,sheen:y.sheen>0,sheenColorMap:!!y.sheenColorMap,sheenRoughnessMap:!!y.sheenRoughnessMap,transmission:y.transmission>0,transmissionMap:!!y.transmissionMap,thicknessMap:!!y.thicknessMap,combine:y.combine,vertexTangents:!!y.normalMap&&!!I.attributes.tangent,vertexColors:y.vertexColors,vertexAlphas:y.vertexColors===!0&&!!I.attributes.color&&I.attributes.color.itemSize===4,vertexUvs:!!y.map||!!y.bumpMap||!!y.normalMap||!!y.specularMap||!!y.alphaMap||!!y.emissiveMap||!!y.roughnessMap||!!y.metalnessMap||!!y.clearcoatMap||!!y.clearcoatRoughnessMap||!!y.clearcoatNormalMap||!!y.iridescenceMap||!!y.iridescenceThicknessMap||!!y.displacementMap||!!y.transmissionMap||!!y.thicknessMap||!!y.specularIntensityMap||!!y.specularColorMap||!!y.sheenColorMap||!!y.sheenRoughnessMap,uvsVertexOnly:!(y.map||y.bumpMap||y.normalMap||y.specularMap||y.alphaMap||y.emissiveMap||y.roughnessMap||y.metalnessMap||y.clearcoatNormalMap||y.iridescenceMap||y.iridescenceThicknessMap||y.transmission>0||y.transmissionMap||y.thicknessMap||y.specularIntensityMap||y.specularColorMap||y.sheen>0||y.sheenColorMap||y.sheenRoughnessMap)&&!!y.displacementMap,fog:!!D,useFog:y.fog===!0,fogExp2:D&&D.isFogExp2,flatShading:!!y.flatShading,sizeAttenuation:y.sizeAttenuation,logarithmicDepthBuffer:f,skinning:B.isSkinnedMesh===!0,morphTargets:I.morphAttributes.position!==void 0,morphNormals:I.morphAttributes.normal!==void 0,morphColors:I.morphAttributes.color!==void 0,morphTargetsCount:J,morphTextureStride:dt,numDirLights:S.directional.length,numPointLights:S.point.length,numSpotLights:S.spot.length,numSpotLightMaps:S.spotLightMap.length,numRectAreaLights:S.rectArea.length,numHemiLights:S.hemi.length,numDirLightShadows:S.directionalShadowMap.length,numPointLightShadows:S.pointShadowMap.length,numSpotLightShadows:S.spotShadowMap.length,numSpotLightShadowsWithMaps:S.numSpotLightShadowsWithMaps,numClippingPlanes:a.numPlanes,numClipIntersection:a.numIntersection,dithering:y.dithering,shadowMapEnabled:r.shadowMap.enabled&&P.length>0,shadowMapType:r.shadowMap.type,toneMapping:y.toneMapped?r.toneMapping:nn,physicallyCorrectLights:r.physicallyCorrectLights,premultipliedAlpha:y.premultipliedAlpha,doubleSided:y.side===We,flipSided:y.side===he,useDepthPacking:!!y.depthPacking,depthPacking:y.depthPacking||0,index0AttributeName:y.index0AttributeName,extensionDerivatives:y.extensions&&y.extensions.derivatives,extensionFragDepth:y.extensions&&y.extensions.fragDepth,extensionDrawBuffers:y.extensions&&y.extensions.drawBuffers,extensionShaderTextureLOD:y.extensions&&y.extensions.shaderTextureLOD,rendererExtensionFragDepth:h||n.has("EXT_frag_depth"),rendererExtensionDrawBuffers:h||n.has("WEBGL_draw_buffers"),rendererExtensionShaderTextureLod:h||n.has("EXT_shader_texture_lod"),customProgramCacheKey:y.customProgramCacheKey()}}function d(y){let S=[];if(y.shaderID?S.push(y.shaderID):(S.push(y.customVertexShaderID),S.push(y.customFragmentShaderID)),y.defines!==void 0)for(let P in y.defines)S.push(P),S.push(y.defines[P]);return y.isRawShaderMaterial===!1&&(g(S,y),M(S,y),S.push(r.outputEncoding)),S.push(y.customProgramCacheKey),S.join()}function g(y,S){y.push(S.precision),y.push(S.outputEncoding),y.push(S.envMapMode),y.push(S.envMapCubeUVHeight),y.push(S.combine),y.push(S.vertexUvs),y.push(S.fogExp2),y.push(S.sizeAttenuation),y.push(S.morphTargetsCount),y.push(S.morphAttributeCount),y.push(S.numDirLights),y.push(S.numPointLights),y.push(S.numSpotLights),y.push(S.numSpotLightMaps),y.push(S.numHemiLights),y.push(S.numRectAreaLights),y.push(S.numDirLightShadows),y.push(S.numPointLightShadows),y.push(S.numSpotLightShadows),y.push(S.numSpotLightShadowsWithMaps),y.push(S.shadowMapType),y.push(S.toneMapping),y.push(S.numClippingPlanes),y.push(S.numClipIntersection),y.push(S.depthPacking)}function M(y,S){o.disableAll(),S.isWebGL2&&o.enable(0),S.supportsVertexTextures&&o.enable(1),S.instancing&&o.enable(2),S.instancingColor&&o.enable(3),S.map&&o.enable(4),S.matcap&&o.enable(5),S.envMap&&o.enable(6),S.lightMap&&o.enable(7),S.aoMap&&o.enable(8),S.emissiveMap&&o.enable(9),S.bumpMap&&o.enable(10),S.normalMap&&o.enable(11),S.objectSpaceNormalMap&&o.enable(12),S.tangentSpaceNormalMap&&o.enable(13),S.clearcoat&&o.enable(14),S.clearcoatMap&&o.enable(15),S.clearcoatRoughnessMap&&o.enable(16),S.clearcoatNormalMap&&o.enable(17),S.iridescence&&o.enable(18),S.iridescenceMap&&o.enable(19),S.iridescenceThicknessMap&&o.enable(20),S.displacementMap&&o.enable(21),S.specularMap&&o.enable(22),S.roughnessMap&&o.enable(23),S.metalnessMap&&o.enable(24),S.gradientMap&&o.enable(25),S.alphaMap&&o.enable(26),S.alphaTest&&o.enable(27),S.vertexColors&&o.enable(28),S.vertexAlphas&&o.enable(29),S.vertexUvs&&o.enable(30),S.vertexTangents&&o.enable(31),S.uvsVertexOnly&&o.enable(32),y.push(o.mask),o.disableAll(),S.fog&&o.enable(0),S.useFog&&o.enable(1),S.flatShading&&o.enable(2),S.logarithmicDepthBuffer&&o.enable(3),S.skinning&&o.enable(4),S.morphTargets&&o.enable(5),S.morphNormals&&o.enable(6),S.morphColors&&o.enable(7),S.premultipliedAlpha&&o.enable(8),S.shadowMapEnabled&&o.enable(9),S.physicallyCorrectLights&&o.enable(10),S.doubleSided&&o.enable(11),S.flipSided&&o.enable(12),S.useDepthPacking&&o.enable(13),S.dithering&&o.enable(14),S.specularIntensityMap&&o.enable(15),S.specularColorMap&&o.enable(16),S.transmission&&o.enable(17),S.transmissionMap&&o.enable(18),S.thicknessMap&&o.enable(19),S.sheen&&o.enable(20),S.sheenColorMap&&o.enable(21),S.sheenRoughnessMap&&o.enable(22),S.decodeVideoTexture&&o.enable(23),S.opaque&&o.enable(24),y.push(o.mask)}function _(y){let S=x[y.type],P;if(S){let O=He[S];P=Bl.clone(O.uniforms)}else P=y.uniforms;return P}function v(y,S){let P;for(let O=0,B=l.length;O0?n.push(g):m.transparent===!0?i.push(g):e.push(g)}function c(f,u,m,x,p,d){let g=a(f,u,m,x,p,d);m.transmission>0?n.unshift(g):m.transparent===!0?i.unshift(g):e.unshift(g)}function l(f,u){e.length>1&&e.sort(f||Zd),n.length>1&&n.sort(u||ka),i.length>1&&i.sort(u||ka)}function h(){for(let f=t,u=r.length;f=s.length?(a=new Va,s.push(a)):a=s[i],a}function e(){r=new WeakMap}return{get:t,dispose:e}}function $d(){let r={};return{get:function(t){if(r[t.id]!==void 0)return r[t.id];let e;switch(t.type){case"DirectionalLight":e={direction:new R,color:new Bt};break;case"SpotLight":e={position:new R,direction:new R,color:new Bt,distance:0,coneCos:0,penumbraCos:0,decay:0};break;case"PointLight":e={position:new R,color:new Bt,distance:0,decay:0};break;case"HemisphereLight":e={direction:new R,skyColor:new Bt,groundColor:new Bt};break;case"RectAreaLight":e={color:new Bt,position:new R,halfWidth:new R,halfHeight:new R};break}return r[t.id]=e,e}}}function Kd(){let r={};return{get:function(t){if(r[t.id]!==void 0)return r[t.id];let e;switch(t.type){case"DirectionalLight":e={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new At};break;case"SpotLight":e={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new At};break;case"PointLight":e={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new At,shadowCameraNear:1,shadowCameraFar:1e3};break}return r[t.id]=e,e}}}var jd=0;function Qd(r,t){return(t.castShadow?2:0)-(r.castShadow?2:0)+(t.map?1:0)-(r.map?1:0)}function tp(r,t){let e=new $d,n=Kd(),i={version:0,hash:{directionalLength:-1,pointLength:-1,spotLength:-1,rectAreaLength:-1,hemiLength:-1,numDirectionalShadows:-1,numPointShadows:-1,numSpotShadows:-1,numSpotMaps:-1},ambient:[0,0,0],probe:[],directional:[],directionalShadow:[],directionalShadowMap:[],directionalShadowMatrix:[],spot:[],spotLightMap:[],spotShadow:[],spotShadowMap:[],spotLightMatrix:[],rectArea:[],rectAreaLTC1:null,rectAreaLTC2:null,point:[],pointShadow:[],pointShadowMap:[],pointShadowMatrix:[],hemi:[],numSpotLightShadowsWithMaps:0};for(let h=0;h<9;h++)i.probe.push(new R);let s=new R,a=new zt,o=new zt;function c(h,f){let u=0,m=0,x=0;for(let O=0;O<9;O++)i.probe[O].set(0,0,0);let p=0,d=0,g=0,M=0,_=0,v=0,b=0,A=0,C=0,y=0;h.sort(Qd);let S=f!==!0?Math.PI:1;for(let O=0,B=h.length;O0&&(t.isWebGL2||r.has("OES_texture_float_linear")===!0?(i.rectAreaLTC1=et.LTC_FLOAT_1,i.rectAreaLTC2=et.LTC_FLOAT_2):r.has("OES_texture_half_float_linear")===!0?(i.rectAreaLTC1=et.LTC_HALF_1,i.rectAreaLTC2=et.LTC_HALF_2):console.error("THREE.WebGLRenderer: Unable to use RectAreaLight. Missing WebGL extensions.")),i.ambient[0]=u,i.ambient[1]=m,i.ambient[2]=x;let P=i.hash;(P.directionalLength!==p||P.pointLength!==d||P.spotLength!==g||P.rectAreaLength!==M||P.hemiLength!==_||P.numDirectionalShadows!==v||P.numPointShadows!==b||P.numSpotShadows!==A||P.numSpotMaps!==C)&&(i.directional.length=p,i.spot.length=g,i.rectArea.length=M,i.point.length=d,i.hemi.length=_,i.directionalShadow.length=v,i.directionalShadowMap.length=v,i.pointShadow.length=b,i.pointShadowMap.length=b,i.spotShadow.length=A,i.spotShadowMap.length=A,i.directionalShadowMatrix.length=v,i.pointShadowMatrix.length=b,i.spotLightMatrix.length=A+C-y,i.spotLightMap.length=C,i.numSpotLightShadowsWithMaps=y,P.directionalLength=p,P.pointLength=d,P.spotLength=g,P.rectAreaLength=M,P.hemiLength=_,P.numDirectionalShadows=v,P.numPointShadows=b,P.numSpotShadows=A,P.numSpotMaps=C,i.version=jd++)}function l(h,f){let u=0,m=0,x=0,p=0,d=0,g=f.matrixWorldInverse;for(let M=0,_=h.length;M<_;M++){let v=h[M];if(v.isDirectionalLight){let b=i.directional[u];b.direction.setFromMatrixPosition(v.matrixWorld),s.setFromMatrixPosition(v.target.matrixWorld),b.direction.sub(s),b.direction.transformDirection(g),u++}else if(v.isSpotLight){let b=i.spot[x];b.position.setFromMatrixPosition(v.matrixWorld),b.position.applyMatrix4(g),b.direction.setFromMatrixPosition(v.matrixWorld),s.setFromMatrixPosition(v.target.matrixWorld),b.direction.sub(s),b.direction.transformDirection(g),x++}else if(v.isRectAreaLight){let b=i.rectArea[p];b.position.setFromMatrixPosition(v.matrixWorld),b.position.applyMatrix4(g),o.identity(),a.copy(v.matrixWorld),a.premultiply(g),o.extractRotation(a),b.halfWidth.set(v.width*.5,0,0),b.halfHeight.set(0,v.height*.5,0),b.halfWidth.applyMatrix4(o),b.halfHeight.applyMatrix4(o),p++}else if(v.isPointLight){let b=i.point[m];b.position.setFromMatrixPosition(v.matrixWorld),b.position.applyMatrix4(g),m++}else if(v.isHemisphereLight){let b=i.hemi[d];b.direction.setFromMatrixPosition(v.matrixWorld),b.direction.transformDirection(g),d++}}}return{setup:c,setupView:l,state:i}}function Ga(r,t){let e=new tp(r,t),n=[],i=[];function s(){n.length=0,i.length=0}function a(f){n.push(f)}function o(f){i.push(f)}function c(f){e.setup(n,f)}function l(f){e.setupView(n,f)}return{init:s,state:{lightsArray:n,shadowsArray:i,lights:e},setupLights:c,setupLightsView:l,pushLight:a,pushShadow:o}}function ep(r,t){let e=new WeakMap;function n(s,a=0){let o=e.get(s),c;return o===void 0?(c=new Ga(r,t),e.set(s,[c])):a>=o.length?(c=new Ga(r,t),o.push(c)):c=o[a],c}function i(){e=new WeakMap}return{get:n,dispose:i}}var qr=class extends fi{constructor(t){super(),this.isMeshDepthMaterial=!0,this.type="MeshDepthMaterial",this.depthPacking=vl,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.setValues(t)}copy(t){return super.copy(t),this.depthPacking=t.depthPacking,this.map=t.map,this.alphaMap=t.alphaMap,this.displacementMap=t.displacementMap,this.displacementScale=t.displacementScale,this.displacementBias=t.displacementBias,this.wireframe=t.wireframe,this.wireframeLinewidth=t.wireframeLinewidth,this}},Xr=class extends fi{constructor(t){super(),this.isMeshDistanceMaterial=!0,this.type="MeshDistanceMaterial",this.referencePosition=new R,this.nearDistance=1,this.farDistance=1e3,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.setValues(t)}copy(t){return super.copy(t),this.referencePosition.copy(t.referencePosition),this.nearDistance=t.nearDistance,this.farDistance=t.farDistance,this.map=t.map,this.alphaMap=t.alphaMap,this.displacementMap=t.displacementMap,this.displacementScale=t.displacementScale,this.displacementBias=t.displacementBias,this}},np=`void main() {\n\tgl_Position = vec4( position, 1.0 );\n}`,ip=`uniform sampler2D shadow_pass;\nuniform vec2 resolution;\nuniform float radius;\n#include \nvoid main() {\n\tconst float samples = float( VSM_SAMPLES );\n\tfloat mean = 0.0;\n\tfloat squared_mean = 0.0;\n\tfloat uvStride = samples <= 1.0 ? 0.0 : 2.0 / ( samples - 1.0 );\n\tfloat uvStart = samples <= 1.0 ? 0.0 : - 1.0;\n\tfor ( float i = 0.0; i < samples; i ++ ) {\n\t\tfloat uvOffset = uvStart + i * uvStride;\n\t\t#ifdef HORIZONTAL_PASS\n\t\t\tvec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( uvOffset, 0.0 ) * radius ) / resolution ) );\n\t\t\tmean += distribution.x;\n\t\t\tsquared_mean += distribution.y * distribution.y + distribution.x * distribution.x;\n\t\t#else\n\t\t\tfloat depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, uvOffset ) * radius ) / resolution ) );\n\t\t\tmean += depth;\n\t\t\tsquared_mean += depth * depth;\n\t\t#endif\n\t}\n\tmean = mean / samples;\n\tsquared_mean = squared_mean / samples;\n\tfloat std_dev = sqrt( squared_mean - mean * mean );\n\tgl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) );\n}`;function sp(r,t,e){let n=new Ps,i=new At,s=new At,a=new Xt,o=new qr({depthPacking:Ml}),c=new Xr,l={},h=e.maxTextureSize,f={[Ue]:he,[he]:Ue,[We]:We},u=new on({defines:{VSM_SAMPLES:8},uniforms:{shadow_pass:{value:null},resolution:{value:new At},radius:{value:4}},vertexShader:np,fragmentShader:ip}),m=u.clone();m.defines.HORIZONTAL_PASS=1;let x=new ke;x.setAttribute("position",new Yt(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));let p=new qe(x,u),d=this;this.enabled=!1,this.autoUpdate=!0,this.needsUpdate=!1,this.type=Wa,this.render=function(v,b,A){if(d.enabled===!1||d.autoUpdate===!1&&d.needsUpdate===!1||v.length===0)return;let C=r.getRenderTarget(),y=r.getActiveCubeFace(),S=r.getActiveMipmapLevel(),P=r.state;P.setBlending(pn),P.buffers.color.setClear(1,1,1,1),P.buffers.depth.setTest(!0),P.setScissorTest(!1);for(let O=0,B=v.length;Oh||i.y>h)&&(i.x>h&&(s.x=Math.floor(h/k.x),i.x=s.x*k.x,I.mapSize.x=s.x),i.y>h&&(s.y=Math.floor(h/k.y),i.y=s.y*k.y,I.mapSize.y=s.y)),I.map===null){let Z=this.type!==Ni?{minFilter:ce,magFilter:ce}:{};I.map=new rn(i.x,i.y,Z),I.map.texture.name=D.name+".shadowMap",I.camera.updateProjectionMatrix()}r.setRenderTarget(I.map),r.clear();let Y=I.getViewportCount();for(let Z=0;Z0||b.map&&b.alphaTest>0){let B=P.uuid,D=b.uuid,I=l[B];I===void 0&&(I={},l[B]=I);let k=I[D];k===void 0&&(k=P.clone(),I[D]=k),P=k}return P.visible=b.visible,P.wireframe=b.wireframe,S===Ni?P.side=b.shadowSide!==null?b.shadowSide:b.side:P.side=b.shadowSide!==null?b.shadowSide:f[b.side],P.alphaMap=b.alphaMap,P.alphaTest=b.alphaTest,P.map=b.map,P.clipShadows=b.clipShadows,P.clippingPlanes=b.clippingPlanes,P.clipIntersection=b.clipIntersection,P.displacementMap=b.displacementMap,P.displacementScale=b.displacementScale,P.displacementBias=b.displacementBias,P.wireframeLinewidth=b.wireframeLinewidth,P.linewidth=b.linewidth,A.isPointLight===!0&&P.isMeshDistanceMaterial===!0&&(P.referencePosition.setFromMatrixPosition(A.matrixWorld),P.nearDistance=C,P.farDistance=y),P}function _(v,b,A,C,y){if(v.visible===!1)return;if(v.layers.test(b.layers)&&(v.isMesh||v.isLine||v.isPoints)&&(v.castShadow||v.receiveShadow&&y===Ni)&&(!v.frustumCulled||n.intersectsObject(v))){v.modelViewMatrix.multiplyMatrices(A.matrixWorldInverse,v.matrixWorld);let O=t.update(v),B=v.material;if(Array.isArray(B)){let D=O.groups;for(let I=0,k=D.length;I=1):H.indexOf("OpenGL ES")!==-1&&(Z=parseFloat(/^OpenGL ES (\\d)/.exec(H)[1]),Y=Z>=2);let $=null,J={},dt=r.getParameter(3088),z=r.getParameter(2978),K=new Xt().fromArray(dt),nt=new Xt().fromArray(z);function it(L,V,j){let ot=new Uint8Array(4),lt=r.createTexture();r.bindTexture(L,lt),r.texParameteri(L,10241,9728),r.texParameteri(L,10240,9728);for(let It=0;ItQ||E.height>Q)&&(tt=Q/Math.max(E.width,E.height)),tt<1||w===!0)if(typeof HTMLImageElement!="undefined"&&E instanceof HTMLImageElement||typeof HTMLCanvasElement!="undefined"&&E instanceof HTMLCanvasElement||typeof ImageBitmap!="undefined"&&E instanceof ImageBitmap){let st=w?Dr:Math.floor,yt=st(tt*E.width),rt=st(tt*E.height);p===void 0&&(p=M(yt,rt));let X=W?M(yt,rt):p;return X.width=yt,X.height=rt,X.getContext("2d").drawImage(E,0,0,yt,rt),console.warn("THREE.WebGLRenderer: Texture has been resized from ("+E.width+"x"+E.height+") to ("+yt+"x"+rt+")."),X}else return"data"in E&&console.warn("THREE.WebGLRenderer: Image in DataTexture is too big ("+E.width+"x"+E.height+")."),E;return E}function v(E){return ua(E.width)&&ua(E.height)}function b(E){return o?!1:E.wrapS!==Oe||E.wrapT!==Oe||E.minFilter!==ce&&E.minFilter!==Re}function A(E,w){return E.generateMipmaps&&w&&E.minFilter!==ce&&E.minFilter!==Re}function C(E){r.generateMipmap(E)}function y(E,w,W,Q,tt=!1){if(o===!1)return w;if(E!==null){if(r[E]!==void 0)return r[E];console.warn("THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format \'"+E+"\'")}let st=w;return w===6403&&(W===5126&&(st=33326),W===5131&&(st=33325),W===5121&&(st=33321)),w===33319&&(W===5126&&(st=33328),W===5131&&(st=33327),W===5121&&(st=33323)),w===6408&&(W===5126&&(st=34836),W===5131&&(st=34842),W===5121&&(st=Q===Ot&&tt===!1?35907:32856),W===32819&&(st=32854),W===32820&&(st=32855)),(st===33325||st===33326||st===33327||st===33328||st===34842||st===34836)&&t.get("EXT_color_buffer_float"),st}function S(E,w,W){return A(E,W)===!0||E.isFramebufferTexture&&E.minFilter!==ce&&E.minFilter!==Re?Math.log2(Math.max(w.width,w.height))+1:E.mipmaps!==void 0&&E.mipmaps.length>0?E.mipmaps.length:E.isCompressedTexture&&Array.isArray(E.image)?w.mipmaps.length:1}function P(E){return E===ce||E===Fo||E===Zs?9728:9729}function O(E){let w=E.target;w.removeEventListener("dispose",O),D(w),w.isVideoTexture&&x.delete(w)}function B(E){let w=E.target;w.removeEventListener("dispose",B),k(w)}function D(E){let w=n.get(E);if(w.__webglInit===void 0)return;let W=E.source,Q=d.get(W);if(Q){let tt=Q[w.__cacheKey];tt.usedTimes--,tt.usedTimes===0&&I(E),Object.keys(Q).length===0&&d.delete(W)}n.remove(E)}function I(E){let w=n.get(E);r.deleteTexture(w.__webglTexture);let W=E.source,Q=d.get(W);delete Q[w.__cacheKey],a.memory.textures--}function k(E){let w=E.texture,W=n.get(E),Q=n.get(w);if(Q.__webglTexture!==void 0&&(r.deleteTexture(Q.__webglTexture),a.memory.textures--),E.depthTexture&&E.depthTexture.dispose(),E.isWebGLCubeRenderTarget)for(let tt=0;tt<6;tt++)r.deleteFramebuffer(W.__webglFramebuffer[tt]),W.__webglDepthbuffer&&r.deleteRenderbuffer(W.__webglDepthbuffer[tt]);else{if(r.deleteFramebuffer(W.__webglFramebuffer),W.__webglDepthbuffer&&r.deleteRenderbuffer(W.__webglDepthbuffer),W.__webglMultisampledFramebuffer&&r.deleteFramebuffer(W.__webglMultisampledFramebuffer),W.__webglColorRenderbuffer)for(let tt=0;tt=c&&console.warn("THREE.WebGLTextures: Trying to use "+E+" texture units while this GPU supports only "+c),Y+=1,E}function $(E){let w=[];return w.push(E.wrapS),w.push(E.wrapT),w.push(E.wrapR||0),w.push(E.magFilter),w.push(E.minFilter),w.push(E.anisotropy),w.push(E.internalFormat),w.push(E.format),w.push(E.type),w.push(E.generateMipmaps),w.push(E.premultiplyAlpha),w.push(E.flipY),w.push(E.unpackAlignment),w.push(E.encoding),w.join()}function J(E,w){let W=n.get(E);if(E.isVideoTexture&&Ze(E),E.isRenderTargetTexture===!1&&E.version>0&&W.__version!==E.version){let Q=E.image;if(Q===null)console.warn("THREE.WebGLRenderer: Texture marked for update but no image data found.");else if(Q.complete===!1)console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete");else{ht(W,E,w);return}}e.bindTexture(3553,W.__webglTexture,33984+w)}function dt(E,w){let W=n.get(E);if(E.version>0&&W.__version!==E.version){ht(W,E,w);return}e.bindTexture(35866,W.__webglTexture,33984+w)}function z(E,w){let W=n.get(E);if(E.version>0&&W.__version!==E.version){ht(W,E,w);return}e.bindTexture(32879,W.__webglTexture,33984+w)}function K(E,w){let W=n.get(E);if(E.version>0&&W.__version!==E.version){ut(W,E,w);return}e.bindTexture(34067,W.__webglTexture,33984+w)}let nt={[Rr]:10497,[Oe]:33071,[Lr]:33648},it={[ce]:9728,[Fo]:9984,[Zs]:9986,[Re]:9729,[sl]:9985,[Oi]:9987};function U(E,w,W){if(W?(r.texParameteri(E,10242,nt[w.wrapS]),r.texParameteri(E,10243,nt[w.wrapT]),(E===32879||E===35866)&&r.texParameteri(E,32882,nt[w.wrapR]),r.texParameteri(E,10240,it[w.magFilter]),r.texParameteri(E,10241,it[w.minFilter])):(r.texParameteri(E,10242,33071),r.texParameteri(E,10243,33071),(E===32879||E===35866)&&r.texParameteri(E,32882,33071),(w.wrapS!==Oe||w.wrapT!==Oe)&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping."),r.texParameteri(E,10240,P(w.magFilter)),r.texParameteri(E,10241,P(w.minFilter)),w.minFilter!==ce&&w.minFilter!==Re&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.")),t.has("EXT_texture_filter_anisotropic")===!0){let Q=t.get("EXT_texture_filter_anisotropic");if(w.magFilter===ce||w.minFilter!==Zs&&w.minFilter!==Oi||w.type===Rn&&t.has("OES_texture_float_linear")===!1||o===!1&&w.type===Bi&&t.has("OES_texture_half_float_linear")===!1)return;(w.anisotropy>1||n.get(w).__currentAnisotropy)&&(r.texParameterf(E,Q.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(w.anisotropy,i.getMaxAnisotropy())),n.get(w).__currentAnisotropy=w.anisotropy)}}function Mt(E,w){let W=!1;E.__webglInit===void 0&&(E.__webglInit=!0,w.addEventListener("dispose",O));let Q=w.source,tt=d.get(Q);tt===void 0&&(tt={},d.set(Q,tt));let st=$(w);if(st!==E.__cacheKey){tt[st]===void 0&&(tt[st]={texture:r.createTexture(),usedTimes:0},a.memory.textures++,W=!0),tt[st].usedTimes++;let yt=tt[E.__cacheKey];yt!==void 0&&(tt[E.__cacheKey].usedTimes--,yt.usedTimes===0&&I(w)),E.__cacheKey=st,E.__webglTexture=tt[st].texture}return W}function ht(E,w,W){let Q=3553;(w.isDataArrayTexture||w.isCompressedArrayTexture)&&(Q=35866),w.isData3DTexture&&(Q=32879);let tt=Mt(E,w),st=w.source;e.bindTexture(Q,E.__webglTexture,33984+W);let yt=n.get(st);if(st.version!==yt.__version||tt===!0){e.activeTexture(33984+W),r.pixelStorei(37440,w.flipY),r.pixelStorei(37441,w.premultiplyAlpha),r.pixelStorei(3317,w.unpackAlignment),r.pixelStorei(37443,0);let rt=b(w)&&v(w.image)===!1,X=_(w.image,rt,!1,h);X=De(w,X);let mt=v(X)||o,xt=s.convert(w.format,w.encoding),ct=s.convert(w.type),gt=y(w.internalFormat,xt,ct,w.encoding,w.isVideoTexture);U(Q,w,mt);let ft,Rt=w.mipmaps,Ut=o&&w.isVideoTexture!==!0,$t=yt.__version===void 0||tt===!0,L=S(w,X,mt);if(w.isDepthTexture)gt=6402,o?w.type===Rn?gt=36012:w.type===Pn?gt=33190:w.type===oi?gt=35056:gt=33189:w.type===Rn&&console.error("WebGLRenderer: Floating point depth texture requires WebGL2."),w.format===Ln&>===6402&&w.type!==Ja&&w.type!==Pn&&(console.warn("THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture."),w.type=Pn,ct=s.convert(w.type)),w.format===hi&>===6402&&(gt=34041,w.type!==oi&&(console.warn("THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture."),w.type=oi,ct=s.convert(w.type))),$t&&(Ut?e.texStorage2D(3553,1,gt,X.width,X.height):e.texImage2D(3553,0,gt,X.width,X.height,0,xt,ct,null));else if(w.isDataTexture)if(Rt.length>0&&mt){Ut&&$t&&e.texStorage2D(3553,L,gt,Rt[0].width,Rt[0].height);for(let V=0,j=Rt.length;V>=1,j>>=1}}else if(Rt.length>0&&mt){Ut&&$t&&e.texStorage2D(3553,L,gt,Rt[0].width,Rt[0].height);for(let V=0,j=Rt.length;V0&&$t++,e.texStorage2D(34067,$t,ft,X[0].width,X[0].height));for(let V=0;V<6;V++)if(rt){Rt?e.texSubImage2D(34069+V,0,0,0,X[V].width,X[V].height,ct,gt,X[V].data):e.texImage2D(34069+V,0,ft,X[V].width,X[V].height,0,ct,gt,X[V].data);for(let j=0;j=34069&&tt<=34074)&&r.framebufferTexture2D(36160,Q,tt,n.get(W).__webglTexture,0),e.bindFramebuffer(36160,null)}function Ft(E,w,W){if(r.bindRenderbuffer(36161,E),w.depthBuffer&&!w.stencilBuffer){let Q=33189;if(W||Nt(w)){let tt=w.depthTexture;tt&&tt.isDepthTexture&&(tt.type===Rn?Q=36012:tt.type===Pn&&(Q=33190));let st=Wt(w);Nt(w)?u.renderbufferStorageMultisampleEXT(36161,st,Q,w.width,w.height):r.renderbufferStorageMultisample(36161,st,Q,w.width,w.height)}else r.renderbufferStorage(36161,Q,w.width,w.height);r.framebufferRenderbuffer(36160,36096,36161,E)}else if(w.depthBuffer&&w.stencilBuffer){let Q=Wt(w);W&&Nt(w)===!1?r.renderbufferStorageMultisample(36161,Q,35056,w.width,w.height):Nt(w)?u.renderbufferStorageMultisampleEXT(36161,Q,35056,w.width,w.height):r.renderbufferStorage(36161,34041,w.width,w.height),r.framebufferRenderbuffer(36160,33306,36161,E)}else{let Q=w.isWebGLMultipleRenderTargets===!0?w.texture:[w.texture];for(let tt=0;tt0&&Nt(E)===!1){let rt=st?w:[w];W.__webglMultisampledFramebuffer=r.createFramebuffer(),W.__webglColorRenderbuffer=[],e.bindFramebuffer(36160,W.__webglMultisampledFramebuffer);for(let X=0;X0&&Nt(E)===!1){let w=E.isWebGLMultipleRenderTargets?E.texture:[E.texture],W=E.width,Q=E.height,tt=16384,st=[],yt=E.stencilBuffer?33306:36096,rt=n.get(E),X=E.isWebGLMultipleRenderTargets===!0;if(X)for(let mt=0;mt0&&t.has("WEBGL_multisampled_render_to_texture")===!0&&w.__useRenderToTexture!==!1}function Ze(E){let w=a.render.frame;x.get(E)!==w&&(x.set(E,w),E.update())}function De(E,w){let W=E.encoding,Q=E.format,tt=E.type;return E.isCompressedTexture===!0||E.isVideoTexture===!0||E.format===Ir||W!==Nn&&(W===Ot?o===!1?t.has("EXT_sRGB")===!0&&Q===Be?(E.format=Ir,E.minFilter=Re,E.generateMipmaps=!1):w=vs.sRGBToLinear(w):(Q!==Be||tt!==Dn)&&console.warn("THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType."):console.error("THREE.WebGLTextures: Unsupported texture encoding:",W)),w}this.allocateTextureUnit=H,this.resetTextureUnits=Z,this.setTexture2D=J,this.setTexture2DArray=dt,this.setTexture3D=z,this.setTextureCube=K,this.rebindTextures=se,this.setupRenderTarget=Ae,this.updateRenderTargetMipmap=te,this.updateMultisampleRenderTarget=Ee,this.setupDepthRenderbuffer=_t,this.setupFrameBufferTexture=at,this.useMultisampledRTT=Nt}function ap(r,t,e){let n=e.isWebGL2;function i(s,a=null){let o;if(s===Dn)return 5121;if(s===cl)return 32819;if(s===ll)return 32820;if(s===rl)return 5120;if(s===ol)return 5122;if(s===Ja)return 5123;if(s===al)return 5124;if(s===Pn)return 5125;if(s===Rn)return 5126;if(s===Bi)return n?5131:(o=t.get("OES_texture_half_float"),o!==null?o.HALF_FLOAT_OES:null);if(s===hl)return 6406;if(s===Be)return 6408;if(s===ul)return 6409;if(s===fl)return 6410;if(s===Ln)return 6402;if(s===hi)return 34041;if(s===Ir)return o=t.get("EXT_sRGB"),o!==null?o.SRGB_ALPHA_EXT:null;if(s===dl)return 6403;if(s===pl)return 36244;if(s===ml)return 33319;if(s===gl)return 33320;if(s===xl)return 36249;if(s===Js||s===$s||s===Ks||s===js)if(a===Ot)if(o=t.get("WEBGL_compressed_texture_s3tc_srgb"),o!==null){if(s===Js)return o.COMPRESSED_SRGB_S3TC_DXT1_EXT;if(s===$s)return o.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;if(s===Ks)return o.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;if(s===js)return o.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT}else return null;else if(o=t.get("WEBGL_compressed_texture_s3tc"),o!==null){if(s===Js)return o.COMPRESSED_RGB_S3TC_DXT1_EXT;if(s===$s)return o.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(s===Ks)return o.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(s===js)return o.COMPRESSED_RGBA_S3TC_DXT5_EXT}else return null;if(s===zo||s===Oo||s===Bo||s===Uo)if(o=t.get("WEBGL_compressed_texture_pvrtc"),o!==null){if(s===zo)return o.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(s===Oo)return o.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(s===Bo)return o.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(s===Uo)return o.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}else return null;if(s===_l)return o=t.get("WEBGL_compressed_texture_etc1"),o!==null?o.COMPRESSED_RGB_ETC1_WEBGL:null;if(s===ko||s===Vo)if(o=t.get("WEBGL_compressed_texture_etc"),o!==null){if(s===ko)return a===Ot?o.COMPRESSED_SRGB8_ETC2:o.COMPRESSED_RGB8_ETC2;if(s===Vo)return a===Ot?o.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:o.COMPRESSED_RGBA8_ETC2_EAC}else return null;if(s===Go||s===Ho||s===Wo||s===qo||s===Xo||s===Yo||s===Zo||s===Jo||s===$o||s===Ko||s===jo||s===Qo||s===ta||s===ea)if(o=t.get("WEBGL_compressed_texture_astc"),o!==null){if(s===Go)return a===Ot?o.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:o.COMPRESSED_RGBA_ASTC_4x4_KHR;if(s===Ho)return a===Ot?o.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:o.COMPRESSED_RGBA_ASTC_5x4_KHR;if(s===Wo)return a===Ot?o.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:o.COMPRESSED_RGBA_ASTC_5x5_KHR;if(s===qo)return a===Ot?o.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:o.COMPRESSED_RGBA_ASTC_6x5_KHR;if(s===Xo)return a===Ot?o.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:o.COMPRESSED_RGBA_ASTC_6x6_KHR;if(s===Yo)return a===Ot?o.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:o.COMPRESSED_RGBA_ASTC_8x5_KHR;if(s===Zo)return a===Ot?o.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:o.COMPRESSED_RGBA_ASTC_8x6_KHR;if(s===Jo)return a===Ot?o.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:o.COMPRESSED_RGBA_ASTC_8x8_KHR;if(s===$o)return a===Ot?o.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:o.COMPRESSED_RGBA_ASTC_10x5_KHR;if(s===Ko)return a===Ot?o.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:o.COMPRESSED_RGBA_ASTC_10x6_KHR;if(s===jo)return a===Ot?o.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:o.COMPRESSED_RGBA_ASTC_10x8_KHR;if(s===Qo)return a===Ot?o.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:o.COMPRESSED_RGBA_ASTC_10x10_KHR;if(s===ta)return a===Ot?o.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:o.COMPRESSED_RGBA_ASTC_12x10_KHR;if(s===ea)return a===Ot?o.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:o.COMPRESSED_RGBA_ASTC_12x12_KHR}else return null;if(s===Qs)if(o=t.get("EXT_texture_compression_bptc"),o!==null){if(s===Qs)return a===Ot?o.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT:o.COMPRESSED_RGBA_BPTC_UNORM_EXT}else return null;if(s===yl||s===na||s===ia||s===sa)if(o=t.get("EXT_texture_compression_rgtc"),o!==null){if(s===Qs)return o.COMPRESSED_RED_RGTC1_EXT;if(s===na)return o.COMPRESSED_SIGNED_RED_RGTC1_EXT;if(s===ia)return o.COMPRESSED_RED_GREEN_RGTC2_EXT;if(s===sa)return o.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT}else return null;return s===oi?n?34042:(o=t.get("WEBGL_depth_texture"),o!==null?o.UNSIGNED_INT_24_8_WEBGL:null):r[s]!==void 0?r[s]:null}return{convert:i}}var Yr=class extends Se{constructor(t=[]){super(),this.isArrayCamera=!0,this.cameras=t}},si=class extends pe{constructor(){super(),this.isGroup=!0,this.type="Group"}},cp={type:"move"},zi=class{constructor(){this._targetRay=null,this._grip=null,this._hand=null}getHandSpace(){return this._hand===null&&(this._hand=new si,this._hand.matrixAutoUpdate=!1,this._hand.visible=!1,this._hand.joints={},this._hand.inputState={pinching:!1}),this._hand}getTargetRaySpace(){return this._targetRay===null&&(this._targetRay=new si,this._targetRay.matrixAutoUpdate=!1,this._targetRay.visible=!1,this._targetRay.hasLinearVelocity=!1,this._targetRay.linearVelocity=new R,this._targetRay.hasAngularVelocity=!1,this._targetRay.angularVelocity=new R),this._targetRay}getGripSpace(){return this._grip===null&&(this._grip=new si,this._grip.matrixAutoUpdate=!1,this._grip.visible=!1,this._grip.hasLinearVelocity=!1,this._grip.linearVelocity=new R,this._grip.hasAngularVelocity=!1,this._grip.angularVelocity=new R),this._grip}dispatchEvent(t){return this._targetRay!==null&&this._targetRay.dispatchEvent(t),this._grip!==null&&this._grip.dispatchEvent(t),this._hand!==null&&this._hand.dispatchEvent(t),this}connect(t){if(t&&t.hand){let e=this._hand;if(e)for(let n of t.hand.values())this._getHandJoint(e,n)}return this.dispatchEvent({type:"connected",data:t}),this}disconnect(t){return this.dispatchEvent({type:"disconnected",data:t}),this._targetRay!==null&&(this._targetRay.visible=!1),this._grip!==null&&(this._grip.visible=!1),this._hand!==null&&(this._hand.visible=!1),this}update(t,e,n){let i=null,s=null,a=null,o=this._targetRay,c=this._grip,l=this._hand;if(t&&e.session.visibilityState!=="visible-blurred"){if(l&&t.hand){a=!0;for(let p of t.hand.values()){let d=e.getJointPose(p,n),g=this._getHandJoint(l,p);d!==null&&(g.matrix.fromArray(d.transform.matrix),g.matrix.decompose(g.position,g.rotation,g.scale),g.jointRadius=d.radius),g.visible=d!==null}let h=l.joints["index-finger-tip"],f=l.joints["thumb-tip"],u=h.position.distanceTo(f.position),m=.02,x=.005;l.inputState.pinching&&u>m+x?(l.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:t.handedness,target:this})):!l.inputState.pinching&&u<=m-x&&(l.inputState.pinching=!0,this.dispatchEvent({type:"pinchstart",handedness:t.handedness,target:this}))}else c!==null&&t.gripSpace&&(s=e.getPose(t.gripSpace,n),s!==null&&(c.matrix.fromArray(s.transform.matrix),c.matrix.decompose(c.position,c.rotation,c.scale),s.linearVelocity?(c.hasLinearVelocity=!0,c.linearVelocity.copy(s.linearVelocity)):c.hasLinearVelocity=!1,s.angularVelocity?(c.hasAngularVelocity=!0,c.angularVelocity.copy(s.angularVelocity)):c.hasAngularVelocity=!1));o!==null&&(i=e.getPose(t.targetRaySpace,n),i===null&&s!==null&&(i=s),i!==null&&(o.matrix.fromArray(i.transform.matrix),o.matrix.decompose(o.position,o.rotation,o.scale),i.linearVelocity?(o.hasLinearVelocity=!0,o.linearVelocity.copy(i.linearVelocity)):o.hasLinearVelocity=!1,i.angularVelocity?(o.hasAngularVelocity=!0,o.angularVelocity.copy(i.angularVelocity)):o.hasAngularVelocity=!1,this.dispatchEvent(cp)))}return o!==null&&(o.visible=i!==null),c!==null&&(c.visible=s!==null),l!==null&&(l.visible=a!==null),this}_getHandJoint(t,e){if(t.joints[e.jointName]===void 0){let n=new si;n.matrixAutoUpdate=!1,n.visible=!1,t.joints[e.jointName]=n,t.add(n)}return t.joints[e.jointName]}},Zr=class extends ue{constructor(t,e,n,i,s,a,o,c,l,h){if(h=h!==void 0?h:Ln,h!==Ln&&h!==hi)throw new Error("DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat");n===void 0&&h===Ln&&(n=Pn),n===void 0&&h===hi&&(n=oi),super(null,i,s,a,o,c,h,n,l),this.isDepthTexture=!0,this.image={width:t,height:e},this.magFilter=o!==void 0?o:ce,this.minFilter=c!==void 0?c:ce,this.flipY=!1,this.generateMipmaps=!1}},Jr=class extends mn{constructor(t,e){super();let n=this,i=null,s=1,a=null,o="local-floor",c=1,l=null,h=null,f=null,u=null,m=null,x=null,p=e.getContextAttributes(),d=null,g=null,M=[],_=[],v=new Set,b=new Map,A=new Se;A.layers.enable(1),A.viewport=new Xt;let C=new Se;C.layers.enable(2),C.viewport=new Xt;let y=[A,C],S=new Yr;S.layers.enable(1),S.layers.enable(2);let P=null,O=null;this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function(z){let K=M[z];return K===void 0&&(K=new zi,M[z]=K),K.getTargetRaySpace()},this.getControllerGrip=function(z){let K=M[z];return K===void 0&&(K=new zi,M[z]=K),K.getGripSpace()},this.getHand=function(z){let K=M[z];return K===void 0&&(K=new zi,M[z]=K),K.getHandSpace()};function B(z){let K=_.indexOf(z.inputSource);if(K===-1)return;let nt=M[K];nt!==void 0&&nt.dispatchEvent({type:z.type,data:z.inputSource})}function D(){i.removeEventListener("select",B),i.removeEventListener("selectstart",B),i.removeEventListener("selectend",B),i.removeEventListener("squeeze",B),i.removeEventListener("squeezestart",B),i.removeEventListener("squeezeend",B),i.removeEventListener("end",D),i.removeEventListener("inputsourceschange",I);for(let z=0;z=0&&(_[it]=null,M[it].disconnect(nt))}for(let K=0;K=_.length){_.push(nt),it=Mt;break}else if(_[Mt]===null){_[Mt]=nt,it=Mt;break}if(it===-1)break}let U=M[it];U&&U.connect(nt)}}let k=new R,Y=new R;function Z(z,K,nt){k.setFromMatrixPosition(K.matrixWorld),Y.setFromMatrixPosition(nt.matrixWorld);let it=k.distanceTo(Y),U=K.projectionMatrix.elements,Mt=nt.projectionMatrix.elements,ht=U[14]/(U[10]-1),ut=U[14]/(U[10]+1),at=(U[9]+1)/U[5],Ft=(U[9]-1)/U[5],bt=(U[8]-1)/U[0],_t=(Mt[8]+1)/Mt[0],se=ht*bt,Ae=ht*_t,te=it/(-bt+_t),Ee=te*-bt;K.matrixWorld.decompose(z.position,z.quaternion,z.scale),z.translateX(Ee),z.translateZ(te),z.matrixWorld.compose(z.position,z.quaternion,z.scale),z.matrixWorldInverse.copy(z.matrixWorld).invert();let Wt=ht+te,Nt=ut+te,Ze=se-Ee,De=Ae+(it-Ee),E=at*ut/Nt*Wt,w=Ft*ut/Nt*Wt;z.projectionMatrix.makePerspective(Ze,De,E,w,Wt,Nt)}function H(z,K){K===null?z.matrixWorld.copy(z.matrix):z.matrixWorld.multiplyMatrices(K.matrixWorld,z.matrix),z.matrixWorldInverse.copy(z.matrixWorld).invert()}this.updateCamera=function(z){if(i===null)return;S.near=C.near=A.near=z.near,S.far=C.far=A.far=z.far,(P!==S.near||O!==S.far)&&(i.updateRenderState({depthNear:S.near,depthFar:S.far}),P=S.near,O=S.far);let K=z.parent,nt=S.cameras;H(S,K);for(let U=0;UU&&(b.set(it,it.lastChangedTime),n.dispatchEvent({type:"planechanged",data:it}))}}x=null}let dt=new Qa;dt.setAnimationLoop(J),this.setAnimationLoop=function(z){$=z},this.dispose=function(){}}};function lp(r,t){function e(p,d){d.color.getRGB(p.fogColor.value,ja(r)),d.isFog?(p.fogNear.value=d.near,p.fogFar.value=d.far):d.isFogExp2&&(p.fogDensity.value=d.density)}function n(p,d,g,M,_){d.isMeshBasicMaterial||d.isMeshLambertMaterial?i(p,d):d.isMeshToonMaterial?(i(p,d),h(p,d)):d.isMeshPhongMaterial?(i(p,d),l(p,d)):d.isMeshStandardMaterial?(i(p,d),f(p,d),d.isMeshPhysicalMaterial&&u(p,d,_)):d.isMeshMatcapMaterial?(i(p,d),m(p,d)):d.isMeshDepthMaterial?i(p,d):d.isMeshDistanceMaterial?(i(p,d),x(p,d)):d.isMeshNormalMaterial?i(p,d):d.isLineBasicMaterial?(s(p,d),d.isLineDashedMaterial&&a(p,d)):d.isPointsMaterial?o(p,d,g,M):d.isSpriteMaterial?c(p,d):d.isShadowMaterial?(p.color.value.copy(d.color),p.opacity.value=d.opacity):d.isShaderMaterial&&(d.uniformsNeedUpdate=!1)}function i(p,d){p.opacity.value=d.opacity,d.color&&p.diffuse.value.copy(d.color),d.emissive&&p.emissive.value.copy(d.emissive).multiplyScalar(d.emissiveIntensity),d.map&&(p.map.value=d.map),d.alphaMap&&(p.alphaMap.value=d.alphaMap),d.bumpMap&&(p.bumpMap.value=d.bumpMap,p.bumpScale.value=d.bumpScale,d.side===he&&(p.bumpScale.value*=-1)),d.displacementMap&&(p.displacementMap.value=d.displacementMap,p.displacementScale.value=d.displacementScale,p.displacementBias.value=d.displacementBias),d.emissiveMap&&(p.emissiveMap.value=d.emissiveMap),d.normalMap&&(p.normalMap.value=d.normalMap,p.normalScale.value.copy(d.normalScale),d.side===he&&p.normalScale.value.negate()),d.specularMap&&(p.specularMap.value=d.specularMap),d.alphaTest>0&&(p.alphaTest.value=d.alphaTest);let g=t.get(d).envMap;if(g&&(p.envMap.value=g,p.flipEnvMap.value=g.isCubeTexture&&g.isRenderTargetTexture===!1?-1:1,p.reflectivity.value=d.reflectivity,p.ior.value=d.ior,p.refractionRatio.value=d.refractionRatio),d.lightMap){p.lightMap.value=d.lightMap;let v=r.physicallyCorrectLights!==!0?Math.PI:1;p.lightMapIntensity.value=d.lightMapIntensity*v}d.aoMap&&(p.aoMap.value=d.aoMap,p.aoMapIntensity.value=d.aoMapIntensity);let M;d.map?M=d.map:d.specularMap?M=d.specularMap:d.displacementMap?M=d.displacementMap:d.normalMap?M=d.normalMap:d.bumpMap?M=d.bumpMap:d.roughnessMap?M=d.roughnessMap:d.metalnessMap?M=d.metalnessMap:d.alphaMap?M=d.alphaMap:d.emissiveMap?M=d.emissiveMap:d.clearcoatMap?M=d.clearcoatMap:d.clearcoatNormalMap?M=d.clearcoatNormalMap:d.clearcoatRoughnessMap?M=d.clearcoatRoughnessMap:d.iridescenceMap?M=d.iridescenceMap:d.iridescenceThicknessMap?M=d.iridescenceThicknessMap:d.specularIntensityMap?M=d.specularIntensityMap:d.specularColorMap?M=d.specularColorMap:d.transmissionMap?M=d.transmissionMap:d.thicknessMap?M=d.thicknessMap:d.sheenColorMap?M=d.sheenColorMap:d.sheenRoughnessMap&&(M=d.sheenRoughnessMap),M!==void 0&&(M.isWebGLRenderTarget&&(M=M.texture),M.matrixAutoUpdate===!0&&M.updateMatrix(),p.uvTransform.value.copy(M.matrix));let _;d.aoMap?_=d.aoMap:d.lightMap&&(_=d.lightMap),_!==void 0&&(_.isWebGLRenderTarget&&(_=_.texture),_.matrixAutoUpdate===!0&&_.updateMatrix(),p.uv2Transform.value.copy(_.matrix))}function s(p,d){p.diffuse.value.copy(d.color),p.opacity.value=d.opacity}function a(p,d){p.dashSize.value=d.dashSize,p.totalSize.value=d.dashSize+d.gapSize,p.scale.value=d.scale}function o(p,d,g,M){p.diffuse.value.copy(d.color),p.opacity.value=d.opacity,p.size.value=d.size*g,p.scale.value=M*.5,d.map&&(p.map.value=d.map),d.alphaMap&&(p.alphaMap.value=d.alphaMap),d.alphaTest>0&&(p.alphaTest.value=d.alphaTest);let _;d.map?_=d.map:d.alphaMap&&(_=d.alphaMap),_!==void 0&&(_.matrixAutoUpdate===!0&&_.updateMatrix(),p.uvTransform.value.copy(_.matrix))}function c(p,d){p.diffuse.value.copy(d.color),p.opacity.value=d.opacity,p.rotation.value=d.rotation,d.map&&(p.map.value=d.map),d.alphaMap&&(p.alphaMap.value=d.alphaMap),d.alphaTest>0&&(p.alphaTest.value=d.alphaTest);let g;d.map?g=d.map:d.alphaMap&&(g=d.alphaMap),g!==void 0&&(g.matrixAutoUpdate===!0&&g.updateMatrix(),p.uvTransform.value.copy(g.matrix))}function l(p,d){p.specular.value.copy(d.specular),p.shininess.value=Math.max(d.shininess,1e-4)}function h(p,d){d.gradientMap&&(p.gradientMap.value=d.gradientMap)}function f(p,d){p.roughness.value=d.roughness,p.metalness.value=d.metalness,d.roughnessMap&&(p.roughnessMap.value=d.roughnessMap),d.metalnessMap&&(p.metalnessMap.value=d.metalnessMap),t.get(d).envMap&&(p.envMapIntensity.value=d.envMapIntensity)}function u(p,d,g){p.ior.value=d.ior,d.sheen>0&&(p.sheenColor.value.copy(d.sheenColor).multiplyScalar(d.sheen),p.sheenRoughness.value=d.sheenRoughness,d.sheenColorMap&&(p.sheenColorMap.value=d.sheenColorMap),d.sheenRoughnessMap&&(p.sheenRoughnessMap.value=d.sheenRoughnessMap)),d.clearcoat>0&&(p.clearcoat.value=d.clearcoat,p.clearcoatRoughness.value=d.clearcoatRoughness,d.clearcoatMap&&(p.clearcoatMap.value=d.clearcoatMap),d.clearcoatRoughnessMap&&(p.clearcoatRoughnessMap.value=d.clearcoatRoughnessMap),d.clearcoatNormalMap&&(p.clearcoatNormalScale.value.copy(d.clearcoatNormalScale),p.clearcoatNormalMap.value=d.clearcoatNormalMap,d.side===he&&p.clearcoatNormalScale.value.negate())),d.iridescence>0&&(p.iridescence.value=d.iridescence,p.iridescenceIOR.value=d.iridescenceIOR,p.iridescenceThicknessMinimum.value=d.iridescenceThicknessRange[0],p.iridescenceThicknessMaximum.value=d.iridescenceThicknessRange[1],d.iridescenceMap&&(p.iridescenceMap.value=d.iridescenceMap),d.iridescenceThicknessMap&&(p.iridescenceThicknessMap.value=d.iridescenceThicknessMap)),d.transmission>0&&(p.transmission.value=d.transmission,p.transmissionSamplerMap.value=g.texture,p.transmissionSamplerSize.value.set(g.width,g.height),d.transmissionMap&&(p.transmissionMap.value=d.transmissionMap),p.thickness.value=d.thickness,d.thicknessMap&&(p.thicknessMap.value=d.thicknessMap),p.attenuationDistance.value=d.attenuationDistance,p.attenuationColor.value.copy(d.attenuationColor)),p.specularIntensity.value=d.specularIntensity,p.specularColor.value.copy(d.specularColor),d.specularIntensityMap&&(p.specularIntensityMap.value=d.specularIntensityMap),d.specularColorMap&&(p.specularColorMap.value=d.specularColorMap)}function m(p,d){d.matcap&&(p.matcap.value=d.matcap)}function x(p,d){p.referencePosition.value.copy(d.referencePosition),p.nearDistance.value=d.nearDistance,p.farDistance.value=d.farDistance}return{refreshFogUniforms:e,refreshMaterialUniforms:n}}function hp(r,t,e,n){let i={},s={},a=[],o=e.isWebGL2?r.getParameter(35375):0;function c(M,_){let v=_.program;n.uniformBlockBinding(M,v)}function l(M,_){let v=i[M.id];v===void 0&&(x(M),v=h(M),i[M.id]=v,M.addEventListener("dispose",d));let b=_.program;n.updateUBOMapping(M,b);let A=t.render.frame;s[M.id]!==A&&(u(M),s[M.id]=A)}function h(M){let _=f();M.__bindingPointIndex=_;let v=r.createBuffer(),b=M.__size,A=M.usage;return r.bindBuffer(35345,v),r.bufferData(35345,b,A),r.bindBuffer(35345,null),r.bindBufferBase(35345,_,v),v}function f(){for(let M=0;M0){A=v%b;let B=b-A;A!==0&&B-P.boundary<0&&(v+=b-A,S.__offset=v)}v+=P.storage}return A=v%b,A>0&&(v+=b-A),M.__size=v,M.__cache={},this}function p(M){let _={boundary:0,storage:0};return typeof M=="number"?(_.boundary=4,_.storage=4):M.isVector2?(_.boundary=8,_.storage=8):M.isVector3||M.isColor?(_.boundary=16,_.storage=12):M.isVector4?(_.boundary=16,_.storage=16):M.isMatrix3?(_.boundary=48,_.storage=48):M.isMatrix4?(_.boundary=64,_.storage=64):M.isTexture?console.warn("THREE.WebGLRenderer: Texture samplers can not be part of an uniforms group."):console.warn("THREE.WebGLRenderer: Unsupported uniform value type.",M),_}function d(M){let _=M.target;_.removeEventListener("dispose",d);let v=a.indexOf(_.__bindingPointIndex);a.splice(v,1),r.deleteBuffer(i[_.id]),delete i[_.id],delete s[_.id]}function g(){for(let M in i)r.deleteBuffer(i[M]);a=[],i={},s={}}return{bind:c,update:l,dispose:g}}function up(){let r=ys("canvas");return r.style.display="block",r}function fp(r={}){this.isWebGLRenderer=!0;let t=r.canvas!==void 0?r.canvas:up(),e=r.context!==void 0?r.context:null,n=r.depth!==void 0?r.depth:!0,i=r.stencil!==void 0?r.stencil:!0,s=r.antialias!==void 0?r.antialias:!1,a=r.premultipliedAlpha!==void 0?r.premultipliedAlpha:!0,o=r.preserveDrawingBuffer!==void 0?r.preserveDrawingBuffer:!1,c=r.powerPreference!==void 0?r.powerPreference:"default",l=r.failIfMajorPerformanceCaveat!==void 0?r.failIfMajorPerformanceCaveat:!1,h;e!==null?h=e.getContextAttributes().alpha:h=r.alpha!==void 0?r.alpha:!1;let f=null,u=null,m=[],x=[];this.domElement=t,this.debug={checkShaderErrors:!0},this.autoClear=!0,this.autoClearColor=!0,this.autoClearDepth=!0,this.autoClearStencil=!0,this.sortObjects=!0,this.clippingPlanes=[],this.localClippingEnabled=!1,this.outputEncoding=Nn,this.physicallyCorrectLights=!1,this.toneMapping=nn,this.toneMappingExposure=1;let p=this,d=!1,g=0,M=0,_=null,v=-1,b=null,A=new Xt,C=new Xt,y=null,S=t.width,P=t.height,O=1,B=null,D=null,I=new Xt(0,0,S,P),k=new Xt(0,0,S,P),Y=!1,Z=new Ps,H=!1,$=!1,J=null,dt=new zt,z=new At,K=new R,nt={background:null,fog:null,environment:null,overrideMaterial:null,isScene:!0};function it(){return _===null?O:1}let U=e;function Mt(T,F){for(let G=0;G0?u=x[x.length-1]:u=null,m.pop(),m.length>0?f=m[m.length-1]:f=null};function Kt(T,F,G,N){if(T.visible===!1)return;if(T.layers.test(F.layers)){if(T.isGroup)G=T.renderOrder;else if(T.isLOD)T.autoUpdate===!0&&T.update(F);else if(T.isLight)u.pushLight(T),T.castShadow&&u.pushShadow(T);else if(T.isSprite){if(!T.frustumCulled||Z.intersectsSprite(T)){N&&K.setFromMatrixPosition(T.matrixWorld).applyMatrix4(dt);let vt=Wt.update(T),St=T.material;St.visible&&f.push(T,vt,St,G,K.z,null)}}else if((T.isMesh||T.isLine||T.isPoints)&&(T.isSkinnedMesh&&T.skeleton.frame!==Ft.render.frame&&(T.skeleton.update(),T.skeleton.frame=Ft.render.frame),!T.frustumCulled||Z.intersectsObject(T))){N&&K.setFromMatrixPosition(T.matrixWorld).applyMatrix4(dt);let vt=Wt.update(T),St=T.material;if(Array.isArray(St)){let Tt=vt.groups;for(let Lt=0,Et=Tt.length;Lt0&&vn(q,F,G),N&&at.viewport(A.copy(N)),q.length>0&&kt(q,F,G),pt.length>0&&kt(pt,F,G),vt.length>0&&kt(vt,F,G),at.buffers.depth.setTest(!0),at.buffers.depth.setMask(!0),at.buffers.color.setMask(!0),at.setPolygonOffset(!1)}function vn(T,F,G){let N=ut.isWebGL2;J===null&&(J=new rn(1,1,{generateMipmaps:!0,type:ht.has("EXT_color_buffer_half_float")?Bi:Dn,minFilter:Oi,samples:N&&s===!0?4:0})),p.getDrawingBufferSize(z),N?J.setSize(z.x,z.y):J.setSize(Dr(z.x),Dr(z.y));let q=p.getRenderTarget();p.setRenderTarget(J),p.clear();let pt=p.toneMapping;p.toneMapping=nn,kt(T,F,G),p.toneMapping=pt,_t.updateMultisampleRenderTarget(J),_t.updateRenderTargetMipmap(J),p.setRenderTarget(q)}function kt(T,F,G){let N=F.isScene===!0?F.overrideMaterial:null;for(let q=0,pt=T.length;q0&&_t.useMultisampledRTT(T)===!1?q=bt.get(T).__webglMultisampledFramebuffer:q=Et,A.copy(T.viewport),C.copy(T.scissor),y=T.scissorTest}else A.copy(I).multiplyScalar(O).floor(),C.copy(k).multiplyScalar(O).floor(),y=Y;if(at.bindFramebuffer(36160,q)&&ut.drawBuffers&&N&&at.drawBuffers(T,q),at.viewport(A),at.scissor(C),at.setScissorTest(y),pt){let Tt=bt.get(T.texture);U.framebufferTexture2D(36160,36064,34069+F,Tt.__webglTexture,G)}else if(vt){let Tt=bt.get(T.texture),Lt=F||0;U.framebufferTextureLayer(36160,36064,Tt.__webglTexture,G||0,Lt)}v=-1},this.readRenderTargetPixels=function(T,F,G,N,q,pt,vt){if(!(T&&T.isWebGLRenderTarget)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");return}let St=bt.get(T).__webglFramebuffer;if(T.isWebGLCubeRenderTarget&&vt!==void 0&&(St=St[vt]),St){at.bindFramebuffer(36160,St);try{let Tt=T.texture,Lt=Tt.format,Et=Tt.type;if(Lt!==Be&&rt.convert(Lt)!==U.getParameter(35739)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.");return}let Ct=Et===Bi&&(ht.has("EXT_color_buffer_half_float")||ut.isWebGL2&&ht.has("EXT_color_buffer_float"));if(Et!==Dn&&rt.convert(Et)!==U.getParameter(35738)&&!(Et===Rn&&(ut.isWebGL2||ht.has("OES_texture_float")||ht.has("WEBGL_color_buffer_float")))&&!Ct){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.");return}F>=0&&F<=T.width-N&&G>=0&&G<=T.height-q&&U.readPixels(F,G,N,q,rt.convert(Lt),rt.convert(Et),pt)}finally{let Tt=_!==null?bt.get(_).__webglFramebuffer:null;at.bindFramebuffer(36160,Tt)}}},this.copyFramebufferToTexture=function(T,F,G=0){let N=Math.pow(2,-G),q=Math.floor(F.image.width*N),pt=Math.floor(F.image.height*N);_t.setTexture2D(F,0),U.copyTexSubImage2D(3553,G,0,0,T.x,T.y,q,pt),at.unbindTexture()},this.copyTextureToTexture=function(T,F,G,N=0){let q=F.image.width,pt=F.image.height,vt=rt.convert(G.format),St=rt.convert(G.type);_t.setTexture2D(G,0),U.pixelStorei(37440,G.flipY),U.pixelStorei(37441,G.premultiplyAlpha),U.pixelStorei(3317,G.unpackAlignment),F.isDataTexture?U.texSubImage2D(3553,N,T.x,T.y,q,pt,vt,St,F.image.data):F.isCompressedTexture?U.compressedTexSubImage2D(3553,N,T.x,T.y,F.mipmaps[0].width,F.mipmaps[0].height,vt,F.mipmaps[0].data):U.texSubImage2D(3553,N,T.x,T.y,vt,St,F.image),N===0&&G.generateMipmaps&&U.generateMipmap(3553),at.unbindTexture()},this.copyTextureToTexture3D=function(T,F,G,N,q=0){if(p.isWebGL1Renderer){console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: can only be used with WebGL2.");return}let pt=T.max.x-T.min.x+1,vt=T.max.y-T.min.y+1,St=T.max.z-T.min.z+1,Tt=rt.convert(N.format),Lt=rt.convert(N.type),Et;if(N.isData3DTexture)_t.setTexture3D(N,0),Et=32879;else if(N.isDataArrayTexture)_t.setTexture2DArray(N,0),Et=35866;else{console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: only supports THREE.DataTexture3D and THREE.DataTexture2DArray.");return}U.pixelStorei(37440,N.flipY),U.pixelStorei(37441,N.premultiplyAlpha),U.pixelStorei(3317,N.unpackAlignment);let Ct=U.getParameter(3314),Vt=U.getParameter(32878),ye=U.getParameter(3316),$e=U.getParameter(3315),Mn=U.getParameter(32877),Gt=G.isCompressedTexture?G.mipmaps[0]:G.image;U.pixelStorei(3314,Gt.width),U.pixelStorei(32878,Gt.height),U.pixelStorei(3316,T.min.x),U.pixelStorei(3315,T.min.y),U.pixelStorei(32877,T.min.z),G.isDataTexture||G.isData3DTexture?U.texSubImage3D(Et,q,F.x,F.y,F.z,pt,vt,St,Tt,Lt,Gt.data):G.isCompressedArrayTexture?(console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: untested support for compressed srcTexture."),U.compressedTexSubImage3D(Et,q,F.x,F.y,F.z,pt,vt,St,Tt,Gt.data)):U.texSubImage3D(Et,q,F.x,F.y,F.z,pt,vt,St,Tt,Lt,Gt),U.pixelStorei(3314,Ct),U.pixelStorei(32878,Vt),U.pixelStorei(3316,ye),U.pixelStorei(3315,$e),U.pixelStorei(32877,Mn),q===0&&N.generateMipmaps&&U.generateMipmap(Et),at.unbindTexture()},this.initTexture=function(T){T.isCubeTexture?_t.setTextureCube(T,0):T.isData3DTexture?_t.setTexture3D(T,0):T.isDataArrayTexture||T.isCompressedArrayTexture?_t.setTexture2DArray(T,0):_t.setTexture2D(T,0),at.unbindTexture()},this.resetState=function(){g=0,M=0,_=null,at.reset(),X.reset()},typeof __THREE_DEVTOOLS__!="undefined"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}var $r=class extends fp{};$r.prototype.isWebGL1Renderer=!0;function dn(r,t,e){return sc(r)?new r.constructor(r.subarray(t,e!==void 0?e:r.length)):r.slice(t,e)}function ps(r,t,e){return!r||!e&&r.constructor===t?r:typeof t.BYTES_PER_ELEMENT=="number"?new t(r):Array.prototype.slice.call(r)}function sc(r){return ArrayBuffer.isView(r)&&!(r instanceof DataView)}var pi=class{constructor(t,e,n,i){this.parameterPositions=t,this._cachedIndex=0,this.resultBuffer=i!==void 0?i:new e.constructor(n),this.sampleValues=e,this.valueSize=n,this.settings=null,this.DefaultSettings_={}}evaluate(t){let e=this.parameterPositions,n=this._cachedIndex,i=e[n],s=e[n-1];n:{t:{let a;e:{i:if(!(t=s)){let o=e[1];t=s)break t}a=n,n=0;break e}break n}for(;n>>1;te;)--a;if(++a,s!==0||a!==i){s>=a&&(a=Math.max(a,1),s=a-1);let o=this.getValueSize();this.times=dn(n,s,a),this.values=dn(this.values,s*o,a*o)}return this}validate(){let t=!0,e=this.getValueSize();e-Math.floor(e)!==0&&(console.error("THREE.KeyframeTrack: Invalid value size in track.",this),t=!1);let n=this.times,i=this.values,s=n.length;s===0&&(console.error("THREE.KeyframeTrack: Track is empty.",this),t=!1);let a=null;for(let o=0;o!==s;o++){let c=n[o];if(typeof c=="number"&&isNaN(c)){console.error("THREE.KeyframeTrack: Time is not a valid number.",this,o,c),t=!1;break}if(a!==null&&a>c){console.error("THREE.KeyframeTrack: Out of order keys.",this,o,c,a),t=!1;break}a=c}if(i!==void 0&&sc(i))for(let o=0,c=i.length;o!==c;++o){let l=i[o];if(isNaN(l)){console.error("THREE.KeyframeTrack: Value is not a valid number.",this,o,l),t=!1;break}}return t}optimize(){let t=dn(this.times),e=dn(this.values),n=this.getValueSize(),i=this.getInterpolation()===tr,s=t.length-1,a=1;for(let o=1;o0){t[a]=t[s];for(let o=s*n,c=a*n,l=0;l!==n;++l)e[c+l]=e[o+l];++a}return a!==t.length?(this.times=dn(t,0,a),this.values=dn(e,0,a*n)):(this.times=t,this.values=e),this}clone(){let t=dn(this.times,0),e=dn(this.values,0),n=this.constructor,i=new n(this.name,t,e);return i.createInterpolant=this.createInterpolant,i}};Ve.prototype.TimeBufferType=Float32Array;Ve.prototype.ValueBufferType=Float32Array;Ve.prototype.DefaultInterpolation=_s;var On=class extends Ve{};On.prototype.ValueTypeName="bool";On.prototype.ValueBufferType=Array;On.prototype.DefaultInterpolation=xs;On.prototype.InterpolantFactoryMethodLinear=void 0;On.prototype.InterpolantFactoryMethodSmooth=void 0;var to=class extends Ve{};to.prototype.ValueTypeName="color";var eo=class extends Ve{};eo.prototype.ValueTypeName="number";var no=class extends pi{constructor(t,e,n,i){super(t,e,n,i)}interpolate_(t,e,n,i){let s=this.resultBuffer,a=this.sampleValues,o=this.valueSize,c=(n-e)/(i-e),l=t*o;for(let h=l+o;l!==h;l+=4)gn.slerpFlat(s,0,a,l-o,a,l,c);return s}},Vi=class extends Ve{InterpolantFactoryMethodLinear(t){return new no(this.times,this.values,this.getValueSize(),t)}};Vi.prototype.ValueTypeName="quaternion";Vi.prototype.DefaultInterpolation=_s;Vi.prototype.InterpolantFactoryMethodSmooth=void 0;var Bn=class extends Ve{};Bn.prototype.ValueTypeName="string";Bn.prototype.ValueBufferType=Array;Bn.prototype.DefaultInterpolation=xs;Bn.prototype.InterpolantFactoryMethodLinear=void 0;Bn.prototype.InterpolantFactoryMethodSmooth=void 0;var io=class extends Ve{};io.prototype.ValueTypeName="vector";var ao="\\\\[\\\\]\\\\.:\\\\/",dp=new RegExp("["+ao+"]","g"),co="[^"+ao+"]",pp="[^"+ao.replace("\\\\.","")+"]",mp=/((?:WC+[\\/:])*)/.source.replace("WC",co),gp=/(WCOD+)?/.source.replace("WCOD",pp),xp=/(?:\\.(WC+)(?:\\[(.+)\\])?)?/.source.replace("WC",co),_p=/\\.(WC+)(?:\\[(.+)\\])?/.source.replace("WC",co),yp=new RegExp("^"+mp+gp+xp+_p+"$"),vp=["material","materials","bones","map"],so=class{constructor(t,e,n){let i=n||Dt.parseTrackName(e);this._targetGroup=t,this._bindings=t.subscribe_(e,i)}getValue(t,e){this.bind();let n=this._targetGroup.nCachedObjects_,i=this._bindings[n];i!==void 0&&i.getValue(t,e)}setValue(t,e){let n=this._bindings;for(let i=this._targetGroup.nCachedObjects_,s=n.length;i!==s;++i)n[i].setValue(t,e)}bind(){let t=this._bindings;for(let e=this._targetGroup.nCachedObjects_,n=t.length;e!==n;++e)t[e].bind()}unbind(){let t=this._bindings;for(let e=this._targetGroup.nCachedObjects_,n=t.length;e!==n;++e)t[e].unbind()}},Dt=class{constructor(t,e,n){this.path=e,this.parsedPath=n||Dt.parseTrackName(e),this.node=Dt.findNode(t,this.parsedPath.nodeName)||t,this.rootNode=t,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}static create(t,e,n){return t&&t.isAnimationObjectGroup?new Dt.Composite(t,e,n):new Dt(t,e,n)}static sanitizeNodeName(t){return t.replace(/\\s/g,"_").replace(dp,"")}static parseTrackName(t){let e=yp.exec(t);if(e===null)throw new Error("PropertyBinding: Cannot parse trackName: "+t);let n={nodeName:e[2],objectName:e[3],objectIndex:e[4],propertyName:e[5],propertyIndex:e[6]},i=n.nodeName&&n.nodeName.lastIndexOf(".");if(i!==void 0&&i!==-1){let s=n.nodeName.substring(i+1);vp.indexOf(s)!==-1&&(n.nodeName=n.nodeName.substring(0,i),n.objectName=s)}if(n.propertyName===null||n.propertyName.length===0)throw new Error("PropertyBinding: can not parse propertyName from trackName: "+t);return n}static findNode(t,e){if(e===void 0||e===""||e==="."||e===-1||e===t.name||e===t.uuid)return t;if(t.skeleton){let n=t.skeleton.getBoneByName(e);if(n!==void 0)return n}if(t.children){let n=function(s){for(let a=0;ae&&(e=i,t=n)}return t}function ho(r,t){t.set(r)}function uo(r,t,e){let n,i;for(let s=0;s<3;s++){let a=s+3;n=r[s],i=t[s],e[s]=ni?n:i}}function Hi(r,t,e){for(let n=0;n<3;n++){let i=t[r+2*n],s=t[r+2*n+1],a=i-s,o=i+s;ae[n+3]&&(e[n+3]=o)}}function gi(r){let t=r[3]-r[0],e=r[4]-r[1],n=r[5]-r[2];return 2*(t*e+e*n+n*t)}function wp(r,t){if(!r.index){let e=r.attributes.position.count,n=t.useSharedArrayBuffer?SharedArrayBuffer:ArrayBuffer,i;e>65535?i=new Uint32Array(new n(4*e)):i=new Uint16Array(new n(2*e)),r.setIndex(new Yt(i,1));for(let s=0;si-s);for(let i=0;ic&&(c=C),g&&vx&&(x=v);let y=r[M+2],S=r[M+3],P=y-S,O=y+S;Pl&&(l=O),g&&yp&&(p=y);let B=r[M+4],D=r[M+5],I=B-D,k=B+D;Ih&&(h=k),g&&Bd&&(d=B)}n[0]=s,n[1]=a,n[2]=o,n[3]=c,n[4]=l,n[5]=h,g&&(i[0]=f,i[1]=u,i[2]=m,i[3]=x,i[4]=p,i[5]=d)}function Tp(r,t,e,n){let i=1/0,s=1/0,a=1/0,o=-1/0,c=-1/0,l=-1/0;for(let h=t*6,f=(t+e)*6;ho&&(o=u);let m=r[h+2];mc&&(c=m);let x=r[h+4];xl&&(l=x)}n[0]=i,n[1]=s,n[2]=a,n[3]=o,n[4]=c,n[5]=l}function Ap(r,t,e,n,i){let s=e,a=e+n-1,o=i.pos,c=i.axis*2;for(;;){for(;s<=a&&t[s*6+c]=o;)a--;if(sr.candidate-t.candidate,xn=new Array(an).fill().map(()=>({count:0,bounds:new Float32Array(6),rightCacheBounds:new Float32Array(6),leftCacheBounds:new Float32Array(6),candidate:0})),Ds=new Float32Array(6);function Cp(r,t,e,n,i,s){let a=-1,o=0;if(s===0)a=lo(t),a!==-1&&(o=(t[a]+t[a+3])/2);else if(s===1)a=lo(r),a!==-1&&(o=Pp(e,n,i,a));else if(s===2){let c=gi(r),l=1.25*i,h=n*6,f=(n+i)*6;for(let u=0;u<3;u++){let m=t[u],d=(t[u+3]-m)/an;if(i=C.candidate?Hi(v,e,C.rightCacheBounds):(Hi(v,e,C.leftCacheBounds),C.count++)}}for(let v=0;v<_;v++){let b=g[v],A=b.count,C=i-b.count,y=b.leftCacheBounds,S=b.rightCacheBounds,P=0;A!==0&&(P=gi(y)/c);let O=0;C!==0&&(O=gi(S)/c);let B=1+1.25*(P*A+O*C);B=an&&(A=an-1);let C=xn[A];C.count++,Hi(_,e,C.bounds)}let g=xn[an-1];ho(g.bounds,g.rightCacheBounds);for(let _=an-2;_>=0;_--){let v=xn[_],b=xn[_+1];uo(v.bounds,b.rightCacheBounds,v.rightCacheBounds)}let M=0;for(let _=0;_A&&(A=_),v>A&&(A=v);let C=(A-b)/2,y=g*2;s[m+y+0]=b+C,s[m+y+1]=C+(Math.abs(b)+C)*rc,bt[g+3]&&(t[g+3]=A)}}return s}function Lp(r,t){function e(g){u&&u(g/m)}function n(g,M,_,v=null,b=0){if(!x&&b>=c&&(x=!0,l&&(console.warn(`MeshBVH: Max depth of ${c} reached when generating BVH. Consider increasing maxDepth.`),console.warn(r))),_<=h||b>=c)return e(M+_),g.offset=M,g.count=_,g;let A=Cp(g.boundingData,v,a,M,_,f);if(A.axis===-1)return e(M+_),g.offset=M,g.count=_,g;let C=Ap(o,a,M,_,A);if(C===M||C===M+_)e(M+_),g.offset=M,g.count=_;else{g.splitAxis=A.axis;let y=new Un,S=M,P=C-M;g.left=y,y.boundingData=new Float32Array(6),po(a,S,P,y.boundingData,s),n(y,S,P,s,b+1);let O=new Un,B=C,D=_-P;g.right=O,O.boundingData=new Float32Array(6),po(a,B,D,O.boundingData,s),n(O,B,D,s,b+1)}return g}wp(r,t);let i=new Float32Array(6),s=new Float32Array(6),a=Rp(r,i),o=r.index.array,c=t.maxDepth,l=t.verbose,h=t.maxLeafTris,f=t.strategy,u=t.onProgress,m=r.index.count/3,x=!1,p=[],d=Sp(r);if(d.length===1){let g=d[0],M=new Un;M.boundingData=i,Tp(a,g.offset,g.count,s),n(M,g.offset,g.count,s),p.push(M)}else for(let g of d){let M=new Un;M.boundingData=new Float32Array(6),po(a,g.offset,g.count,M.boundingData,s),n(M,g.offset,g.count,s),p.push(M)}return p}function cc(r,t){let e=Lp(r,t),n,i,s,a=[],o=t.useSharedArrayBuffer?SharedArrayBuffer:ArrayBuffer;for(let h=0;hMath.pow(2,32))throw new Error("MeshBVH: Cannot store child pointer greater than 32 bits.");return i[u+6]=_/4,_=l(_,g),i[u+7]=M,_}}}var ge=class{constructor(){this.min=1/0,this.max=-1/0}setFromPointsField(t,e){let n=1/0,i=-1/0;for(let s=0,a=t.length;si?c:i}this.min=n,this.max=i}setFromPoints(t,e){let n=1/0,i=-1/0;for(let s=0,a=e.length;si?c:i}this.min=n,this.max=i}isSeparated(t){return this.min>t.max||t.min>this.max}};ge.prototype.setFromBox=function(){let r=new R;return function(e,n){let i=n.min,s=n.max,a=1/0,o=-1/0;for(let c=0;c<=1;c++)for(let l=0;l<=1;l++)for(let h=0;h<=1;h++){r.x=i.x*c+s.x*(1-c),r.y=i.y*l+s.y*(1-l),r.z=i.z*h+s.z*(1-h);let f=e.dot(r);a=Math.min(f,a),o=Math.max(f,o)}this.min=a,this.max=o}}();var Qp=function(){let r=new ge;return function(e,n){let i=e.points,s=e.satAxes,a=e.satBounds,o=n.points,c=n.satAxes,l=n.satBounds;for(let h=0;h<3;h++){let f=a[h],u=s[h];if(r.setFromPoints(u,o),f.isSeparated(r))return!1}for(let h=0;h<3;h++){let f=l[h],u=c[h];if(r.setFromPoints(u,i),f.isSeparated(r))return!1}}}();var Ip=function(){let r=new R,t=new R,e=new R;return function(i,s,a){let o=i.start,c=r,l=s.start,h=t;e.subVectors(o,l),r.subVectors(i.end,i.start),t.subVectors(s.end,s.start);let f=e.dot(h),u=h.dot(c),m=h.dot(h),x=e.dot(c),d=c.dot(c)*m-u*u,g,M;d!==0?g=(f*u-x*m)/d:g=0,M=(f+g*u)/m,a.x=g,a.y=M}}(),Wi=function(){let r=new At,t=new R,e=new R;return function(i,s,a,o){Ip(i,s,r);let c=r.x,l=r.y;if(c>=0&&c<=1&&l>=0&&l<=1){i.at(c,a),s.at(l,o);return}else if(c>=0&&c<=1){l<0?s.at(0,o):s.at(1,o),i.closestPointToPoint(o,!0,a);return}else if(l>=0&&l<=1){c<0?i.at(0,a):i.at(1,a),s.closestPointToPoint(a,!0,o);return}else{let h;c<0?h=i.start:h=i.end;let f;l<0?f=s.start:f=s.end;let u=t,m=e;if(i.closestPointToPoint(f,!0,t),s.closestPointToPoint(h,!0,e),u.distanceToSquared(f)<=m.distanceToSquared(h)){a.copy(u),o.copy(f);return}else{a.copy(h),o.copy(m);return}}}}(),lc=function(){let r=new R,t=new R,e=new Te,n=new me;return function(s,a){let{radius:o,center:c}=s,{a:l,b:h,c:f}=a;if(n.start=l,n.end=h,n.closestPointToPoint(c,!0,r).distanceTo(c)<=o||(n.start=l,n.end=f,n.closestPointToPoint(c,!0,r).distanceTo(c)<=o)||(n.start=h,n.end=f,n.closestPointToPoint(c,!0,r).distanceTo(c)<=o))return!0;let p=a.getPlane(e);if(Math.abs(p.distanceToPoint(c))<=o){let g=p.projectPoint(c,t);if(a.containsPoint(g))return!0}return!1}}();var Dp=1e-15;function xi(r){return Math.abs(r)new R),this.satBounds=new Array(4).fill().map(()=>new ge),this.points=[this.a,this.b,this.c],this.sphere=new Fn,this.plane=new Te,this.needsUpdate=!0}intersectsSphere(t){return lc(t,this)}update(){let t=this.a,e=this.b,n=this.c,i=this.points,s=this.satAxes,a=this.satBounds,o=s[0],c=a[0];this.getNormal(o),c.setFromPoints(o,i);let l=s[1],h=a[1];l.subVectors(t,e),h.setFromPoints(l,i);let f=s[2],u=a[2];f.subVectors(e,n),u.setFromPoints(f,i);let m=s[3],x=a[3];m.subVectors(n,t),x.setFromPoints(m,i),this.sphere.setFromPoints(this.points),this.plane.setFromNormalAndCoplanarPoint(o,t),this.needsUpdate=!1}};xe.prototype.closestPointToSegment=function(){let r=new R,t=new R,e=new me;return function(i,s=null,a=null){let{start:o,end:c}=i,l=this.points,h,f=1/0;for(let u=0;u<3;u++){let m=(u+1)%3;e.start.copy(l[u]),e.end.copy(l[m]),Wi(e,i,r,t),h=r.distanceToSquared(t),h1-1e-10){let M=this.satBounds,_=this.satAxes;e[0]=m.a,e[1]=m.b,e[2]=m.c;for(let A=0;A<4;A++){let C=M[A],y=_[A];if(n.setFromPoints(y,e),C.isSeparated(n))return!1}let v=m.satBounds,b=m.satAxes;t[0]=this.a,t[1]=this.b,t[2]=this.c;for(let A=0;A<4;A++){let C=v[A],y=b[A];if(n.setFromPoints(y,t),C.isSeparated(n))return!1}for(let A=0;A<4;A++){let C=_[A];for(let y=0;y<4;y++){let S=b[y];if(s.crossVectors(C,S),n.setFromPoints(s,t),i.setFromPoints(s,e),n.isSeparated(i))return!1}}return x&&(p||console.warn("ExtendedTriangle.intersectsTriangle: Triangles are coplanar which does not support an output edge. Setting edge to 0, 0, 0."),x.start.set(0,0,0),x.end.set(0,0,0)),!0}else{let M=this.points,_=!1,v=0;for(let I=0;I<3;I++){let k=M[I],Y=M[(I+1)%3];l.start.copy(k),l.end.copy(Y),l.delta(a);let Z=_?h.start:h.end,H=xi(g.distanceToPoint(k));if(xi(g.normal.dot(a))&&H){h.copy(l),v=2;break}if((g.intersectLine(l,Z)||H)&&!xi(Z.distanceTo(Y))){if(v++,_)break;_=!0}}if(v===1&&m.containsPoint(h.end))return x&&(x.start.copy(h.end),x.end.copy(h.end)),!0;if(v!==2)return!1;let b=m.points,A=!1,C=0;for(let I=0;I<3;I++){let k=b[I],Y=b[(I+1)%3];l.start.copy(k),l.end.copy(Y),l.delta(o);let Z=A?f.start:f.end,H=xi(d.distanceToPoint(k));if(xi(d.normal.dot(o))&&H){f.copy(l),C=2;break}if((d.intersectLine(l,Z)||H)&&!xi(Z.distanceTo(Y))){if(C++,A)break;A=!0}}if(C===1&&this.containsPoint(f.end))return x&&(x.start.copy(f.end),x.end.copy(f.end)),!0;if(C!==2)return!1;if(h.delta(a),f.delta(o),a.dot(o)<0){let I=f.start;f.start=f.end,f.end=I}let y=h.start.dot(a),S=h.end.dot(a),P=f.start.dot(a),O=f.end.dot(a),B=S0?x.start.copy(h.start):x.start.copy(f.start),c.subVectors(h.end,f.end),c.dot(a)<0?x.end.copy(h.end):x.end.copy(f.end)),!0)}}}();xe.prototype.distanceToPoint=function(){let r=new R;return function(e){return this.closestPointToPoint(e,r),e.distanceTo(r)}}();xe.prototype.distanceToTriangle=function(){let r=new R,t=new R,e=["a","b","c"],n=new me,i=new me;return function(a,o=null,c=null){let l=o||c?n:null;if(this.intersectsTriangle(a,l))return(o||c)&&(o&&l.getCenter(o),c&&l.getCenter(c)),0;let h=1/0;for(let f=0;f<3;f++){let u,m=e[f],x=a[m];this.closestPointToPoint(x,r),u=x.distanceToSquared(r),unew R),this.satAxes=new Array(3).fill().map(()=>new R),this.satBounds=new Array(3).fill().map(()=>new ge),this.alignedSatBounds=new Array(3).fill().map(()=>new ge),this.needsUpdate=!1,t&&this.min.copy(t),e&&this.max.copy(e),n&&this.matrix.copy(n)}set(t,e,n){this.min.copy(t),this.max.copy(e),this.matrix.copy(n),this.needsUpdate=!0}copy(t){this.min.copy(t.min),this.max.copy(t.max),this.matrix.copy(t.matrix),this.needsUpdate=!0}};_e.prototype.update=function(){return function(){let t=this.matrix,e=this.min,n=this.max,i=this.points;for(let l=0;l<=1;l++)for(let h=0;h<=1;h++)for(let f=0;f<=1;f++){let u=1*l|2*h|4*f,m=i[u];m.x=l?n.x:e.x,m.y=h?n.y:e.y,m.z=f?n.z:e.z,m.applyMatrix4(t)}let s=this.satBounds,a=this.satAxes,o=i[0];for(let l=0;l<3;l++){let h=a[l],f=s[l],u=1<new me),e=new Array(12).fill().map(()=>new me),n=new R,i=new R;return function(a,o=0,c=null,l=null){if(this.needsUpdate&&this.update(),this.intersectsBox(a))return(c||l)&&(a.getCenter(i),this.closestPointToPoint(i,n),a.closestPointToPoint(n,i),c&&c.copy(n),l&&l.copy(i)),0;let h=o*o,f=a.min,u=a.max,m=this.points,x=1/0;for(let d=0;d<8;d++){let g=m[d];i.copy(g).clamp(f,u);let M=g.distanceToSquared(i);if(M=0,m,x;u?(m=vi(r),x=Mi(r,o)):(m=Mi(r,o),x=vi(r));let d=Gs(m,s,n,Us)?Vs(m,t,e,n):null;if(d){let _=d.point[h];if(u?_<=s[x+l]:_>=s[x+l+3])return d}let M=Gs(x,s,n,Us)?Vs(x,t,e,n):null;return d&&M?d.distance<=M.distance?d:M:d||M||null}}var xc=function(){let r,t,e=[],n=new _i(()=>new fe);return function(...a){r=n.getPrimitive(),t=n.getPrimitive(),e.push(r,t);let o=i(...a);n.releasePrimitive(r),n.releasePrimitive(t),e.pop(),e.pop();let c=e.length;return c>0&&(t=e[c-1],r=e[c-2]),o};function i(s,a,o,c,l=null,h=0,f=0){function u(_){let v=_*2,b=_n,A=yn;for(;!cn(v,b);)_=vi(_),v=_*2;return kn(_,A)}function m(_){let v=_*2,b=_n,A=yn;for(;!cn(v,b);)_=Mi(_,A),v=_*2;return kn(_,A)+yi(v,b)}let x=s*2,p=wi,d=_n,g=yn;if(cn(x,d)){let _=kn(s,g),v=yi(x,d);return Le(s,p,r),c(_,v,!1,f,h+s,r)}else{let _=vi(s),v=Mi(s,g),b=_,A=v,C,y,S,P;if(l&&(S=r,P=t,Le(b,p,S),Le(A,p,P),C=l(S),y=l(P),yi.intersectsBox(y),intersectsTriangle:y=>{y.a.applyMatrix4(l),y.b.applyMatrix4(l),y.c.applyMatrix4(l),y.needsUpdate=!0;for(let S=b*3,P=(A+b)*3;Snew xe),Ye=class{static serialize(t,e={}){if(e.isBufferGeometry)return console.warn("MeshBVH.serialize: The arguments for the function have changed. See documentation for new signature."),Ye.serialize(arguments[0],{cloneBuffers:arguments[2]===void 0?!0:arguments[2]});e=Zi({cloneBuffers:!0},e);let n=t.geometry,i=t._roots,s=n.getIndex(),a;return e.cloneBuffers?a={roots:i.map(o=>o.slice()),index:s.array.slice()}:a={roots:i,index:s.array},a}static deserialize(t,e,n={}){if(typeof n=="boolean")return console.warn("MeshBVH.deserialize: The arguments for the function have changed. See documentation for new signature."),Ye.deserialize(arguments[0],arguments[1],{setIndex:arguments[2]===void 0?!0:arguments[2]});n=Zi({setIndex:!0},n);let{index:i,roots:s}=t,a=new Ye(e,Co(Zi({},n),{[yo]:!0}));if(a._roots=s,n.setIndex){let o=e.getIndex();if(o===null){let c=new Yt(t.index,1,!1);e.setIndex(c)}else o.array!==i&&(o.array.set(i),o.needsUpdate=!0)}return a}constructor(t,e={}){if(t.isBufferGeometry){if(t.index&&t.index.isInterleavedBufferAttribute)throw new Error("MeshBVH: InterleavedBufferAttribute is not supported for the index attribute.")}else throw new Error("MeshBVH: Only BufferGeometries are supported.");if(e=Object.assign({strategy:0,maxDepth:40,maxLeafTris:10,verbose:!0,useSharedArrayBuffer:!1,setBoundingBox:!0,onProgress:null,[yo]:!1},e),e.useSharedArrayBuffer&&typeof SharedArrayBuffer=="undefined")throw new Error("MeshBVH: SharedArrayBuffer is not available.");this._roots=null,e[yo]||(this._roots=cc(t,e),!t.boundingBox&&e.setBoundingBox&&(t.boundingBox=this.getBoundingBox(new fe))),this.geometry=t}refit(t=null){t&&Array.isArray(t)&&(t=new Set(t));let e=this.geometry,n=e.index.array,i=e.attributes.position,s,a,o,c,l=0,h=this._roots;for(let u=0,m=h.length;uA&&(A=B),DC&&(C=D),Iy&&(y=I)}return c[u+0]!==_||c[u+1]!==v||c[u+2]!==b||c[u+3]!==A||c[u+4]!==C||c[u+5]!==y?(c[u+0]=_,c[u+1]=v,c[u+2]=b,c[u+3]=A,c[u+4]=C,c[u+5]=y,!0):!1}else{let g=u+8,M=a[u+6],_=g+m,v=M+m,b=x,A=!1,C=!1;t?b||(A=t.has(_),C=t.has(v),b=!A&&!C):(A=!0,C=!0);let y=b||A,S=b||C,P=!1;y&&(P=f(g,m,b));let O=!1;S&&(O=f(M,m,b));let B=P||O;if(B)for(let D=0;D<3;D++){let I=g+D,k=M+D,Y=c[I],Z=c[I+3],H=c[k],$=c[k+3];c[u+D]=Y$?Z:$}return B}}}traverse(t,e=0){let n=this._roots[e],i=new Uint32Array(n),s=new Uint16Array(n);a(0);function a(o,c=0){let l=o*2,h=s[l+15]===65535;if(h){let f=i[o+6],u=s[l+14];t(c,h,new Float32Array(n,o*4,6),f,u)}else{let f=o+32/4,u=i[o+6],m=i[o+7];t(c,h,new Float32Array(n,o*4,6),m)||(a(f,c+1),a(u,c+1))}}}raycast(t,e=Ue){let n=this._roots,i=this.geometry,s=[],a=e.isMaterial,o=Array.isArray(e),c=i.groups,l=a?e.side:e;for(let h=0,f=n.length;h{let g=x*3;return u(m,g,g+1,g+2,p,d)}}t={boundsTraverseOrder:n,intersectsBounds:t,intersectsTriangle:e,intersectsRange:null},console.warn("MeshBVH: Shapecast function signature has changed and now takes an object of callbacks as a second argument. See docs for new signature.")}let s=Xe.getPrimitive(),{boundsTraverseOrder:a,intersectsBounds:o,intersectsRange:c,intersectsTriangle:l}=t;if(c&&l){let u=c;c=(m,x,p,d,g)=>u(m,x,p,d,g)?!0:xo(m,x,i,l,p,d,s)}else c||(l?c=(u,m,x,p)=>xo(u,m,i,l,x,p,s):c=(u,m,x)=>x);let h=!1,f=0;for(let u of this._roots){if(Si(u),h=xc(0,i,o,c,a,f),qi(),h)break;f+=u.byteLength}return Xe.releasePrimitive(s),h}bvhcast(t,e,n){let{intersectsRanges:i,intersectsTriangles:s}=n,a=this.geometry.index,o=this.geometry.attributes.position,c=t.geometry.index,l=t.geometry.attributes.position;Ti.copy(e).invert();let h=Xe.getPrimitive(),f=Xe.getPrimitive();if(s){let m=function(x,p,d,g,M,_,v,b){for(let A=d,C=d+g;AMo.intersectsBox(m),intersectsRange:(m,x,p,d,g,M)=>(vo.copy(M),vo.applyMatrix4(Ti),t.shapecast({intersectsBounds:_=>vo.intersectsBox(_),intersectsRange:(_,v,b,A,C)=>i(m,x,_,v,d,g,A,C)}))});return Xe.releasePrimitive(h),Xe.releasePrimitive(f),u}intersectsBox(t,e){return Vn.set(t.min,t.max,e),Vn.needsUpdate=!0,this.shapecast({intersectsBounds:n=>Vn.intersectsBox(n),intersectsTriangle:n=>Vn.intersectsTriangle(n)})}intersectsSphere(t){return this.shapecast({intersectsBounds:e=>t.intersectsBox(e),intersectsTriangle:e=>e.intersectsSphere(t)})}closestPointToGeometry(t,e,n={},i={},s=0,a=1/0){t.boundingBox||t.computeBoundingBox(),Vn.set(t.boundingBox.min,t.boundingBox.max,e),Vn.needsUpdate=!0;let o=this.geometry,c=o.attributes.position,l=o.index,h=t.attributes.position,f=t.index,u=Xe.getPrimitive(),m=Xe.getPrimitive(),x=Hs,p=Bp,d=null,g=null;i&&(d=Up,g=kp);let M=1/0,_=null,v=null;return Ti.copy(e).invert(),Xi.matrix.copy(Ti),this.shapecast({boundsTraverseOrder:b=>Vn.distanceToBox(b),intersectsBounds:(b,A,C)=>C{if(t.boundsTree)return t.boundsTree.shapecast({boundsTraverseOrder:C=>Xi.distanceToBox(C),intersectsBounds:(C,y,S)=>S{for(let S=C*3,P=(C+y)*3;S(Yi.copy(t).clamp(h.min,h.max),Yi.distanceToSquared(t)),intersectsBounds:(h,f,u)=>u{h.closestPointToPoint(t,Yi);let u=t.distanceToSquared(Yi);return u{Le(0,new Float32Array(n),yc),t.union(yc)}),t}};var bo=self;bo.addEventListener("message",async function({data:r}){let t=performance.now();function e(o){let c=performance.now();(c-t>=10||o===1)&&(postMessage({error:void 0,serialized:void 0,position:void 0,progress:o}),t=c)}let{id:n,index:i,position:s,options:a}=r;try{let o=new ke;if(o.setAttribute("position",new Yt(s,3,!1)),i&&o.setIndex(new Yt(i,1,!1)),a.includedProgressCallback&&(a.onProgress=e),a.groups){let h=a.groups;for(let f in h){let u=h[f];o.addGroup(u.start,u.count,u.materialIndex)}}let c=new Ye(o,a),l=Ye.serialize(c,{cloneBuffers:!1});bo.postMessage({id:n,error:void 0,serialized:l,position:s,progress:1},[l.index.buffer,s.buffer,...l.roots])}catch(o){bo.postMessage({id:n,error:o,serialized:void 0,position:void 0,progress:1})}});\n/*! Bundled license information:\n\nthree/build/three.module.js:\n (**\n * @license\n * Copyright 2010-2023 Three.js Authors\n * SPDX-License-Identifier: MIT\n *)\n*/\n')}var VC=class{constructor(){this.running=!1,this.worker=new $B,this.worker.onerror=e=>{throw e.message?new Error(`[GenerateMeshBVHWorker] Could not create Web Worker with error "${e.message}"`):new Error("[GenerateMeshBVHWorker] Could not create Web Worker.")}}isRunning(){return this.running}generate(e,t={}){if(this.running)return void ie.warn("[GenerateMeshBVHWorker] Already running job.");if(!this.worker)return void ie.warn("[GenerateMeshBVHWorker] Worker has been disposed.");let{worker:i}=this;this.running=!0;let r=new Map;e.forEach((e=>{r.set(e.id,e)}));let n=0;return new Promise(((e,s)=>{let a=()=>{++n===r.size&&(this.running=!1,i.onmessage=null,e())};i.onerror=e=>{ie.warn(`[GenerateMeshBVHWorker] ${e.message}`),s(new Error(`[GenerateMeshBVHWorker] ${e.message}`)),this.running=!1},i.onmessage=e=>{this.running=!1;let{data:i}=e;if(i.error)ie.warn(i.error),a();else if(i.serialized){let{serialized:e,position:n,id:s}=i,o=r.get(s),l=Fc.deserialize(e,o,{setIndex:!1}),h=Object.assign({setBoundingBox:!0},t);if(h.transferred&&(o.attributes.position.array=n),o.index)t.saveOriginalIndex&&!o.userData.originalIndex&&(o.userData.originalIndex=o.index.array),ie.debug("before update, index:",o.index.array),o.index.array=e.index;else{let t=new Wt(e.index,1,!1);o.setIndex(t)}o.index&&(ie.debug("after update, index:",o.index.array),o.index.needsUpdate=!0),h.setBoundingBox&&!o.boundingBox&&(o.boundingBox=l.getBoundingBox(new Dt)),o.boundsTree=l,a()}else t.onProgress&&t.onProgress(i.progress)};for(let e of r){let r=e[0],n=e[1],s=n.index?n.index.array:void 0,o=n.attributes.position,l=o.array;if(o.isInterleavedBufferAttribute||s&&s.isInterleavedBufferAttribute){ie.warn("[GenerateMeshBVHWorker] InterleavedBufferAttribute are not supported for the geometry attributes."),a();continue}let h=[];t.transferred&&(h.push(l),s&&(h.push(s),t.saveOriginalIndex&&(n.userData.originalIndex=s.slice()))),i.postMessage({id:r,index:s,position:l,options:Cn(Br({},t),{onProgress:null,includedProgressCallback:Boolean(t.onProgress),groups:[...n.groups]})},h.length>0?h.map((e=>e.buffer)):[])}}))}dispose(){this.worker.terminate(),this.worker=void 0}};function ZB(){return jx('var vr="149";var co=0,Pr=1,ho=2;var Ga=1,uo=2,li=3,nn=0,ye=1,tn=2;var en=0,Gn=1,Rr=2,Lr=3,Ir=4,fo=5,Bn=100,po=101,mo=102,Dr=103,Nr=104,go=200,_o=201,xo=202,yo=203,Ha=204,Wa=205,vo=206,Mo=207,bo=208,wo=209,So=210,To=0,Ao=1,Eo=2,Gs=3,Co=4,Po=5,Ro=6,Lo=7,Xa=0,Io=1,Do=2,We=0,No=1,Fo=2,zo=3,Oo=4,Uo=5,qa=300,Xn=301,qn=302,Hs=303,Ws=304,ns=306,Xs=1e3,Pe=1001,qs=1002,ae=1003,Fr=1004;var us=1005;var Se=1006,Bo=1007;var pi=1008;var yn=1009,ko=1010,Vo=1011,Ya=1012,Go=1013,mn=1014,gn=1015,mi=1016,Ho=1017,Wo=1018,Hn=1020,Xo=1021,Re=1023,qo=1024,Yo=1025,_n=1026,Yn=1027,Zo=1028,Jo=1029,$o=1030,Ko=1031,jo=1033,ds=33776,fs=33777,ps=33778,ms=33779,zr=35840,Or=35841,Ur=35842,Br=35843,Qo=36196,kr=37492,Vr=37496,Gr=37808,Hr=37809,Wr=37810,Xr=37811,qr=37812,Yr=37813,Zr=37814,Jr=37815,$r=37816,Kr=37817,jr=37818,Qr=37819,ta=37820,ea=37821,gs=36492,tl=36283,na=36284,ia=36285,sa=36286;var ki=2300,Vi=2301,_s=2302,ra=2400,aa=2401,oa=2402;var vn=3e3,zt=3001,el=3200,nl=3201,il=0,sl=1;var Ie="srgb",gi="srgb-linear";var xs=7680;var rl=519,la=35044;var ca="300 es",Ys=1035,sn=class{addEventListener(t,e){this._listeners===void 0&&(this._listeners={});let n=this._listeners;n[t]===void 0&&(n[t]=[]),n[t].indexOf(e)===-1&&n[t].push(e)}hasEventListener(t,e){if(this._listeners===void 0)return!1;let n=this._listeners;return n[t]!==void 0&&n[t].indexOf(e)!==-1}removeEventListener(t,e){if(this._listeners===void 0)return;let i=this._listeners[t];if(i!==void 0){let s=i.indexOf(e);s!==-1&&i.splice(s,1)}}dispatchEvent(t){if(this._listeners===void 0)return;let n=this._listeners[t.type];if(n!==void 0){t.target=this;let i=n.slice(0);for(let s=0,o=i.length;s>8&255]+ee[r>>16&255]+ee[r>>24&255]+"-"+ee[t&255]+ee[t>>8&255]+"-"+ee[t>>16&15|64]+ee[t>>24&255]+"-"+ee[e&63|128]+ee[e>>8&255]+"-"+ee[e>>16&255]+ee[e>>24&255]+ee[n&255]+ee[n>>8&255]+ee[n>>16&255]+ee[n>>24&255]).toLowerCase()}function ue(r,t,e){return Math.max(t,Math.min(e,r))}function Mr(r,t){return(r%t+t)%t}function al(r,t,e,n,i){return n+(r-t)*(i-n)/(e-t)}function ol(r,t,e){return r!==t?(e-r)/(t-r):0}function di(r,t,e){return(1-e)*r+e*t}function ll(r,t,e,n){return di(r,t,1-Math.exp(-e*n))}function cl(r,t=1){return t-Math.abs(Mr(r,t*2)-t)}function hl(r,t,e){return r<=t?0:r>=e?1:(r=(r-t)/(e-t),r*r*(3-2*r))}function ul(r,t,e){return r<=t?0:r>=e?1:(r=(r-t)/(e-t),r*r*r*(r*(r*6-15)+10))}function dl(r,t){return r+Math.floor(Math.random()*(t-r+1))}function fl(r,t){return r+Math.random()*(t-r)}function pl(r){return r*(.5-Math.random())}function ml(r){r!==void 0&&(ha=r);let t=ha+=1831565813;return t=Math.imul(t^t>>>15,t|1),t^=t+Math.imul(t^t>>>7,t|61),((t^t>>>14)>>>0)/4294967296}function gl(r){return r*ui}function _l(r){return r*Gi}function Zs(r){return(r&r-1)===0&&r!==0}function xl(r){return Math.pow(2,Math.ceil(Math.log(r)/Math.LN2))}function Hi(r){return Math.pow(2,Math.floor(Math.log(r)/Math.LN2))}function yl(r,t,e,n,i){let s=Math.cos,o=Math.sin,a=s(e/2),c=o(e/2),l=s((t+n)/2),h=o((t+n)/2),f=s((t-n)/2),u=o((t-n)/2),m=s((n-t)/2),_=o((n-t)/2);switch(i){case"XYX":r.set(a*h,c*f,c*u,a*l);break;case"YZY":r.set(c*u,a*h,c*f,a*l);break;case"ZXZ":r.set(c*f,c*u,a*h,a*l);break;case"XZX":r.set(a*h,c*_,c*m,a*l);break;case"YXY":r.set(c*m,a*h,c*_,a*l);break;case"ZYZ":r.set(c*_,c*m,a*h,a*l);break;default:console.warn("THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: "+i)}}function ci(r,t){switch(t.constructor){case Float32Array:return r;case Uint16Array:return r/65535;case Uint8Array:return r/255;case Int16Array:return Math.max(r/32767,-1);case Int8Array:return Math.max(r/127,-1);default:throw new Error("Invalid component type.")}}function he(r,t){switch(t.constructor){case Float32Array:return r;case Uint16Array:return Math.round(r*65535);case Uint8Array:return Math.round(r*255);case Int16Array:return Math.round(r*32767);case Int8Array:return Math.round(r*127);default:throw new Error("Invalid component type.")}}var Za=Object.freeze({__proto__:null,DEG2RAD:ui,RAD2DEG:Gi,ceilPowerOfTwo:xl,clamp:ue,damp:ll,degToRad:gl,denormalize:ci,euclideanModulo:Mr,floorPowerOfTwo:Hi,generateUUID:jn,inverseLerp:ol,isPowerOfTwo:Zs,lerp:di,mapLinear:al,normalize:he,pingpong:cl,radToDeg:_l,randFloat:fl,randFloatSpread:pl,randInt:dl,seededRandom:ml,setQuaternionFromProperEuler:yl,smootherstep:ul,smoothstep:hl}),Nt=class{constructor(t=0,e=0){Nt.prototype.isVector2=!0,this.x=t,this.y=e}get width(){return this.x}set width(t){this.x=t}get height(){return this.y}set height(t){this.y=t}set(t,e){return this.x=t,this.y=e,this}setScalar(t){return this.x=t,this.y=t,this}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setComponent(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;default:throw new Error("index is out of range: "+t)}return this}getComponent(t){switch(t){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+t)}}clone(){return new this.constructor(this.x,this.y)}copy(t){return this.x=t.x,this.y=t.y,this}add(t){return this.x+=t.x,this.y+=t.y,this}addScalar(t){return this.x+=t,this.y+=t,this}addVectors(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this}addScaledVector(t,e){return this.x+=t.x*e,this.y+=t.y*e,this}sub(t){return this.x-=t.x,this.y-=t.y,this}subScalar(t){return this.x-=t,this.y-=t,this}subVectors(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this}multiply(t){return this.x*=t.x,this.y*=t.y,this}multiplyScalar(t){return this.x*=t,this.y*=t,this}divide(t){return this.x/=t.x,this.y/=t.y,this}divideScalar(t){return this.multiplyScalar(1/t)}applyMatrix3(t){let e=this.x,n=this.y,i=t.elements;return this.x=i[0]*e+i[3]*n+i[6],this.y=i[1]*e+i[4]*n+i[7],this}min(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this}max(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this}clamp(t,e){return this.x=Math.max(t.x,Math.min(e.x,this.x)),this.y=Math.max(t.y,Math.min(e.y,this.y)),this}clampScalar(t,e){return this.x=Math.max(t,Math.min(e,this.x)),this.y=Math.max(t,Math.min(e,this.y)),this}clampLength(t,e){let n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(t,Math.min(e,n)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}roundToZero(){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(){return this.x=-this.x,this.y=-this.y,this}dot(t){return this.x*t.x+this.y*t.y}cross(t){return this.x*t.y-this.y*t.x}lengthSq(){return this.x*this.x+this.y*this.y}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)}normalize(){return this.divideScalar(this.length()||1)}angle(){return Math.atan2(-this.y,-this.x)+Math.PI}distanceTo(t){return Math.sqrt(this.distanceToSquared(t))}distanceToSquared(t){let e=this.x-t.x,n=this.y-t.y;return e*e+n*n}manhattanDistanceTo(t){return Math.abs(this.x-t.x)+Math.abs(this.y-t.y)}setLength(t){return this.normalize().multiplyScalar(t)}lerp(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this}lerpVectors(t,e,n){return this.x=t.x+(e.x-t.x)*n,this.y=t.y+(e.y-t.y)*n,this}equals(t){return t.x===this.x&&t.y===this.y}fromArray(t,e=0){return this.x=t[e],this.y=t[e+1],this}toArray(t=[],e=0){return t[e]=this.x,t[e+1]=this.y,t}fromBufferAttribute(t,e){return this.x=t.getX(e),this.y=t.getY(e),this}rotateAround(t,e){let n=Math.cos(e),i=Math.sin(e),s=this.x-t.x,o=this.y-t.y;return this.x=s*n-o*i+t.x,this.y=s*i+o*n+t.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y}},oe=class{constructor(){oe.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1]}set(t,e,n,i,s,o,a,c,l){let h=this.elements;return h[0]=t,h[1]=i,h[2]=a,h[3]=e,h[4]=s,h[5]=c,h[6]=n,h[7]=o,h[8]=l,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(t){let e=this.elements,n=t.elements;return e[0]=n[0],e[1]=n[1],e[2]=n[2],e[3]=n[3],e[4]=n[4],e[5]=n[5],e[6]=n[6],e[7]=n[7],e[8]=n[8],this}extractBasis(t,e,n){return t.setFromMatrix3Column(this,0),e.setFromMatrix3Column(this,1),n.setFromMatrix3Column(this,2),this}setFromMatrix4(t){let e=t.elements;return this.set(e[0],e[4],e[8],e[1],e[5],e[9],e[2],e[6],e[10]),this}multiply(t){return this.multiplyMatrices(this,t)}premultiply(t){return this.multiplyMatrices(t,this)}multiplyMatrices(t,e){let n=t.elements,i=e.elements,s=this.elements,o=n[0],a=n[3],c=n[6],l=n[1],h=n[4],f=n[7],u=n[2],m=n[5],_=n[8],p=i[0],d=i[3],v=i[6],T=i[1],b=i[4],M=i[7],A=i[2],C=i[5],I=i[8];return s[0]=o*p+a*T+c*A,s[3]=o*d+a*b+c*C,s[6]=o*v+a*M+c*I,s[1]=l*p+h*T+f*A,s[4]=l*d+h*b+f*C,s[7]=l*v+h*M+f*I,s[2]=u*p+m*T+_*A,s[5]=u*d+m*b+_*C,s[8]=u*v+m*M+_*I,this}multiplyScalar(t){let e=this.elements;return e[0]*=t,e[3]*=t,e[6]*=t,e[1]*=t,e[4]*=t,e[7]*=t,e[2]*=t,e[5]*=t,e[8]*=t,this}determinant(){let t=this.elements,e=t[0],n=t[1],i=t[2],s=t[3],o=t[4],a=t[5],c=t[6],l=t[7],h=t[8];return e*o*h-e*a*l-n*s*h+n*a*c+i*s*l-i*o*c}invert(){let t=this.elements,e=t[0],n=t[1],i=t[2],s=t[3],o=t[4],a=t[5],c=t[6],l=t[7],h=t[8],f=h*o-a*l,u=a*c-h*s,m=l*s-o*c,_=e*f+n*u+i*m;if(_===0)return this.set(0,0,0,0,0,0,0,0,0);let p=1/_;return t[0]=f*p,t[1]=(i*l-h*n)*p,t[2]=(a*n-i*o)*p,t[3]=u*p,t[4]=(h*e-i*c)*p,t[5]=(i*s-a*e)*p,t[6]=m*p,t[7]=(n*c-l*e)*p,t[8]=(o*e-n*s)*p,this}transpose(){let t,e=this.elements;return t=e[1],e[1]=e[3],e[3]=t,t=e[2],e[2]=e[6],e[6]=t,t=e[5],e[5]=e[7],e[7]=t,this}getNormalMatrix(t){return this.setFromMatrix4(t).invert().transpose()}transposeIntoArray(t){let e=this.elements;return t[0]=e[0],t[1]=e[3],t[2]=e[6],t[3]=e[1],t[4]=e[4],t[5]=e[7],t[6]=e[2],t[7]=e[5],t[8]=e[8],this}setUvTransform(t,e,n,i,s,o,a){let c=Math.cos(s),l=Math.sin(s);return this.set(n*c,n*l,-n*(c*o+l*a)+o+t,-i*l,i*c,-i*(-l*o+c*a)+a+e,0,0,1),this}scale(t,e){return this.premultiply(ys.makeScale(t,e)),this}rotate(t){return this.premultiply(ys.makeRotation(-t)),this}translate(t,e){return this.premultiply(ys.makeTranslation(t,e)),this}makeTranslation(t,e){return this.set(1,0,t,0,1,e,0,0,1),this}makeRotation(t){let e=Math.cos(t),n=Math.sin(t);return this.set(e,-n,0,n,e,0,0,0,1),this}makeScale(t,e){return this.set(t,0,0,0,e,0,0,0,1),this}equals(t){let e=this.elements,n=t.elements;for(let i=0;i<9;i++)if(e[i]!==n[i])return!1;return!0}fromArray(t,e=0){for(let n=0;n<9;n++)this.elements[n]=t[n+e];return this}toArray(t=[],e=0){let n=this.elements;return t[e]=n[0],t[e+1]=n[1],t[e+2]=n[2],t[e+3]=n[3],t[e+4]=n[4],t[e+5]=n[5],t[e+6]=n[6],t[e+7]=n[7],t[e+8]=n[8],t}clone(){return new this.constructor().fromArray(this.elements)}},ys=new oe;function Ja(r){for(let t=r.length-1;t>=0;--t)if(r[t]>=65535)return!0;return!1}function Wi(r){return document.createElementNS("http://www.w3.org/1999/xhtml",r)}function xn(r){return r<.04045?r*.0773993808:Math.pow(r*.9478672986+.0521327014,2.4)}function Bi(r){return r<.0031308?r*12.92:1.055*Math.pow(r,.41666)-.055}var vs={[Ie]:{[gi]:xn},[gi]:{[Ie]:Bi}},se={legacyMode:!0,get workingColorSpace(){return gi},set workingColorSpace(r){console.warn("THREE.ColorManagement: .workingColorSpace is readonly.")},convert:function(r,t,e){if(this.legacyMode||t===e||!t||!e)return r;if(vs[t]&&vs[t][e]!==void 0){let n=vs[t][e];return r.r=n(r.r),r.g=n(r.g),r.b=n(r.b),r}throw new Error("Unsupported color space conversion.")},fromWorkingColorSpace:function(r,t){return this.convert(r,this.workingColorSpace,t)},toWorkingColorSpace:function(r,t){return this.convert(r,t,this.workingColorSpace)}},$a={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074},Wt={r:0,g:0,b:0},Ae={h:0,s:0,l:0},vi={h:0,s:0,l:0};function Ms(r,t,e){return e<0&&(e+=1),e>1&&(e-=1),e<1/6?r+(t-r)*6*e:e<1/2?t:e<2/3?r+(t-r)*6*(2/3-e):r}function Mi(r,t){return t.r=r.r,t.g=r.g,t.b=r.b,t}var Ot=class{constructor(t,e,n){return this.isColor=!0,this.r=1,this.g=1,this.b=1,e===void 0&&n===void 0?this.set(t):this.setRGB(t,e,n)}set(t){return t&&t.isColor?this.copy(t):typeof t=="number"?this.setHex(t):typeof t=="string"&&this.setStyle(t),this}setScalar(t){return this.r=t,this.g=t,this.b=t,this}setHex(t,e=Ie){return t=Math.floor(t),this.r=(t>>16&255)/255,this.g=(t>>8&255)/255,this.b=(t&255)/255,se.toWorkingColorSpace(this,e),this}setRGB(t,e,n,i=se.workingColorSpace){return this.r=t,this.g=e,this.b=n,se.toWorkingColorSpace(this,i),this}setHSL(t,e,n,i=se.workingColorSpace){if(t=Mr(t,1),e=ue(e,0,1),n=ue(n,0,1),e===0)this.r=this.g=this.b=n;else{let s=n<=.5?n*(1+e):n+e-n*e,o=2*n-s;this.r=Ms(o,s,t+1/3),this.g=Ms(o,s,t),this.b=Ms(o,s,t-1/3)}return se.toWorkingColorSpace(this,i),this}setStyle(t,e=Ie){function n(s){s!==void 0&&parseFloat(s)<1&&console.warn("THREE.Color: Alpha component of "+t+" will be ignored.")}let i;if(i=/^((?:rgb|hsl)a?)\\(([^\\)]*)\\)/.exec(t)){let s,o=i[1],a=i[2];switch(o){case"rgb":case"rgba":if(s=/^\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec(a))return this.r=Math.min(255,parseInt(s[1],10))/255,this.g=Math.min(255,parseInt(s[2],10))/255,this.b=Math.min(255,parseInt(s[3],10))/255,se.toWorkingColorSpace(this,e),n(s[4]),this;if(s=/^\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec(a))return this.r=Math.min(100,parseInt(s[1],10))/100,this.g=Math.min(100,parseInt(s[2],10))/100,this.b=Math.min(100,parseInt(s[3],10))/100,se.toWorkingColorSpace(this,e),n(s[4]),this;break;case"hsl":case"hsla":if(s=/^\\s*(\\d*\\.?\\d+)\\s*,\\s*(\\d*\\.?\\d+)\\%\\s*,\\s*(\\d*\\.?\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec(a)){let c=parseFloat(s[1])/360,l=parseFloat(s[2])/100,h=parseFloat(s[3])/100;return n(s[4]),this.setHSL(c,l,h,e)}break}}else if(i=/^\\#([A-Fa-f\\d]+)$/.exec(t)){let s=i[1],o=s.length;if(o===3)return this.r=parseInt(s.charAt(0)+s.charAt(0),16)/255,this.g=parseInt(s.charAt(1)+s.charAt(1),16)/255,this.b=parseInt(s.charAt(2)+s.charAt(2),16)/255,se.toWorkingColorSpace(this,e),this;if(o===6)return this.r=parseInt(s.charAt(0)+s.charAt(1),16)/255,this.g=parseInt(s.charAt(2)+s.charAt(3),16)/255,this.b=parseInt(s.charAt(4)+s.charAt(5),16)/255,se.toWorkingColorSpace(this,e),this}return t&&t.length>0?this.setColorName(t,e):this}setColorName(t,e=Ie){let n=$a[t.toLowerCase()];return n!==void 0?this.setHex(n,e):console.warn("THREE.Color: Unknown color "+t),this}clone(){return new this.constructor(this.r,this.g,this.b)}copy(t){return this.r=t.r,this.g=t.g,this.b=t.b,this}copySRGBToLinear(t){return this.r=xn(t.r),this.g=xn(t.g),this.b=xn(t.b),this}copyLinearToSRGB(t){return this.r=Bi(t.r),this.g=Bi(t.g),this.b=Bi(t.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(t=Ie){return se.fromWorkingColorSpace(Mi(this,Wt),t),ue(Wt.r*255,0,255)<<16^ue(Wt.g*255,0,255)<<8^ue(Wt.b*255,0,255)<<0}getHexString(t=Ie){return("000000"+this.getHex(t).toString(16)).slice(-6)}getHSL(t,e=se.workingColorSpace){se.fromWorkingColorSpace(Mi(this,Wt),e);let n=Wt.r,i=Wt.g,s=Wt.b,o=Math.max(n,i,s),a=Math.min(n,i,s),c,l,h=(a+o)/2;if(a===o)c=0,l=0;else{let f=o-a;switch(l=h<=.5?f/(o+a):f/(2-o-a),o){case n:c=(i-s)/f+(i2048||e.height>2048?(console.warn("THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons",t),e.toDataURL("image/jpeg",.6)):e.toDataURL("image/png")}static sRGBToLinear(t){if(typeof HTMLImageElement!="undefined"&&t instanceof HTMLImageElement||typeof HTMLCanvasElement!="undefined"&&t instanceof HTMLCanvasElement||typeof ImageBitmap!="undefined"&&t instanceof ImageBitmap){let e=Wi("canvas");e.width=t.width,e.height=t.height;let n=e.getContext("2d");n.drawImage(t,0,0,t.width,t.height);let i=n.getImageData(0,0,t.width,t.height),s=i.data;for(let o=0;o0&&(n.userData=this.userData),e||(t.textures[this.uuid]=n),n}dispose(){this.dispatchEvent({type:"dispose"})}transformUv(t){if(this.mapping!==qa)return t;if(t.applyMatrix3(this.matrix),t.x<0||t.x>1)switch(this.wrapS){case Xs:t.x=t.x-Math.floor(t.x);break;case Pe:t.x=t.x<0?0:1;break;case qs:Math.abs(Math.floor(t.x)%2)===1?t.x=Math.ceil(t.x)-t.x:t.x=t.x-Math.floor(t.x);break}if(t.y<0||t.y>1)switch(this.wrapT){case Xs:t.y=t.y-Math.floor(t.y);break;case Pe:t.y=t.y<0?0:1;break;case qs:Math.abs(Math.floor(t.y)%2)===1?t.y=Math.ceil(t.y)-t.y:t.y=t.y-Math.floor(t.y);break}return this.flipY&&(t.y=1-t.y),t}set needsUpdate(t){t===!0&&(this.version++,this.source.needsUpdate=!0)}};le.DEFAULT_IMAGE=null;le.DEFAULT_MAPPING=qa;le.DEFAULT_ANISOTROPY=1;var Xt=class{constructor(t=0,e=0,n=0,i=1){Xt.prototype.isVector4=!0,this.x=t,this.y=e,this.z=n,this.w=i}get width(){return this.z}set width(t){this.z=t}get height(){return this.w}set height(t){this.w=t}set(t,e,n,i){return this.x=t,this.y=e,this.z=n,this.w=i,this}setScalar(t){return this.x=t,this.y=t,this.z=t,this.w=t,this}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setZ(t){return this.z=t,this}setW(t){return this.w=t,this}setComponent(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;case 2:this.z=e;break;case 3:this.w=e;break;default:throw new Error("index is out of range: "+t)}return this}getComponent(t){switch(t){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: "+t)}}clone(){return new this.constructor(this.x,this.y,this.z,this.w)}copy(t){return this.x=t.x,this.y=t.y,this.z=t.z,this.w=t.w!==void 0?t.w:1,this}add(t){return this.x+=t.x,this.y+=t.y,this.z+=t.z,this.w+=t.w,this}addScalar(t){return this.x+=t,this.y+=t,this.z+=t,this.w+=t,this}addVectors(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this.z=t.z+e.z,this.w=t.w+e.w,this}addScaledVector(t,e){return this.x+=t.x*e,this.y+=t.y*e,this.z+=t.z*e,this.w+=t.w*e,this}sub(t){return this.x-=t.x,this.y-=t.y,this.z-=t.z,this.w-=t.w,this}subScalar(t){return this.x-=t,this.y-=t,this.z-=t,this.w-=t,this}subVectors(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this.z=t.z-e.z,this.w=t.w-e.w,this}multiply(t){return this.x*=t.x,this.y*=t.y,this.z*=t.z,this.w*=t.w,this}multiplyScalar(t){return this.x*=t,this.y*=t,this.z*=t,this.w*=t,this}applyMatrix4(t){let e=this.x,n=this.y,i=this.z,s=this.w,o=t.elements;return this.x=o[0]*e+o[4]*n+o[8]*i+o[12]*s,this.y=o[1]*e+o[5]*n+o[9]*i+o[13]*s,this.z=o[2]*e+o[6]*n+o[10]*i+o[14]*s,this.w=o[3]*e+o[7]*n+o[11]*i+o[15]*s,this}divideScalar(t){return this.multiplyScalar(1/t)}setAxisAngleFromQuaternion(t){this.w=2*Math.acos(t.w);let e=Math.sqrt(1-t.w*t.w);return e<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=t.x/e,this.y=t.y/e,this.z=t.z/e),this}setAxisAngleFromRotationMatrix(t){let e,n,i,s,c=t.elements,l=c[0],h=c[4],f=c[8],u=c[1],m=c[5],_=c[9],p=c[2],d=c[6],v=c[10];if(Math.abs(h-u)<.01&&Math.abs(f-p)<.01&&Math.abs(_-d)<.01){if(Math.abs(h+u)<.1&&Math.abs(f+p)<.1&&Math.abs(_+d)<.1&&Math.abs(l+m+v-3)<.1)return this.set(1,0,0,0),this;e=Math.PI;let b=(l+1)/2,M=(m+1)/2,A=(v+1)/2,C=(h+u)/4,I=(f+p)/4,x=(_+d)/4;return b>M&&b>A?b<.01?(n=0,i=.707106781,s=.707106781):(n=Math.sqrt(b),i=C/n,s=I/n):M>A?M<.01?(n=.707106781,i=0,s=.707106781):(i=Math.sqrt(M),n=C/i,s=x/i):A<.01?(n=.707106781,i=.707106781,s=0):(s=Math.sqrt(A),n=I/s,i=x/s),this.set(n,i,s,e),this}let T=Math.sqrt((d-_)*(d-_)+(f-p)*(f-p)+(u-h)*(u-h));return Math.abs(T)<.001&&(T=1),this.x=(d-_)/T,this.y=(f-p)/T,this.z=(u-h)/T,this.w=Math.acos((l+m+v-1)/2),this}min(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this.z=Math.min(this.z,t.z),this.w=Math.min(this.w,t.w),this}max(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this.z=Math.max(this.z,t.z),this.w=Math.max(this.w,t.w),this}clamp(t,e){return this.x=Math.max(t.x,Math.min(e.x,this.x)),this.y=Math.max(t.y,Math.min(e.y,this.y)),this.z=Math.max(t.z,Math.min(e.z,this.z)),this.w=Math.max(t.w,Math.min(e.w,this.w)),this}clampScalar(t,e){return this.x=Math.max(t,Math.min(e,this.x)),this.y=Math.max(t,Math.min(e,this.y)),this.z=Math.max(t,Math.min(e,this.z)),this.w=Math.max(t,Math.min(e,this.w)),this}clampLength(t,e){let n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(t,Math.min(e,n)))}floor(){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(){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(){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(){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(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this.w=-this.w,this}dot(t){return this.x*t.x+this.y*t.y+this.z*t.z+this.w*t.w}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)}normalize(){return this.divideScalar(this.length()||1)}setLength(t){return this.normalize().multiplyScalar(t)}lerp(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.w+=(t.w-this.w)*e,this}lerpVectors(t,e,n){return this.x=t.x+(e.x-t.x)*n,this.y=t.y+(e.y-t.y)*n,this.z=t.z+(e.z-t.z)*n,this.w=t.w+(e.w-t.w)*n,this}equals(t){return t.x===this.x&&t.y===this.y&&t.z===this.z&&t.w===this.w}fromArray(t,e=0){return this.x=t[e],this.y=t[e+1],this.z=t[e+2],this.w=t[e+3],this}toArray(t=[],e=0){return t[e]=this.x,t[e+1]=this.y,t[e+2]=this.z,t[e+3]=this.w,t}fromBufferAttribute(t,e){return this.x=t.getX(e),this.y=t.getY(e),this.z=t.getZ(e),this.w=t.getW(e),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this.w=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z,yield this.w}},qe=class extends sn{constructor(t=1,e=1,n={}){super(),this.isWebGLRenderTarget=!0,this.width=t,this.height=e,this.depth=1,this.scissor=new Xt(0,0,t,e),this.scissorTest=!1,this.viewport=new Xt(0,0,t,e);let i={width:t,height:e,depth:1};this.texture=new le(i,n.mapping,n.wrapS,n.wrapT,n.magFilter,n.minFilter,n.format,n.type,n.anisotropy,n.encoding),this.texture.isRenderTargetTexture=!0,this.texture.flipY=!1,this.texture.generateMipmaps=n.generateMipmaps!==void 0?n.generateMipmaps:!1,this.texture.internalFormat=n.internalFormat!==void 0?n.internalFormat:null,this.texture.minFilter=n.minFilter!==void 0?n.minFilter:Se,this.depthBuffer=n.depthBuffer!==void 0?n.depthBuffer:!0,this.stencilBuffer=n.stencilBuffer!==void 0?n.stencilBuffer:!1,this.depthTexture=n.depthTexture!==void 0?n.depthTexture:null,this.samples=n.samples!==void 0?n.samples:0}setSize(t,e,n=1){(this.width!==t||this.height!==e||this.depth!==n)&&(this.width=t,this.height=e,this.depth=n,this.texture.image.width=t,this.texture.image.height=e,this.texture.image.depth=n,this.dispose()),this.viewport.set(0,0,t,e),this.scissor.set(0,0,t,e)}clone(){return new this.constructor().copy(this)}copy(t){this.width=t.width,this.height=t.height,this.depth=t.depth,this.viewport.copy(t.viewport),this.texture=t.texture.clone(),this.texture.isRenderTargetTexture=!0;let e=Object.assign({},t.texture.image);return this.texture.source=new qi(e),this.depthBuffer=t.depthBuffer,this.stencilBuffer=t.stencilBuffer,t.depthTexture!==null&&(this.depthTexture=t.depthTexture.clone()),this.samples=t.samples,this}dispose(){this.dispatchEvent({type:"dispose"})}},Yi=class extends le{constructor(t=null,e=1,n=1,i=1){super(null),this.isDataArrayTexture=!0,this.image={data:t,width:e,height:n,depth:i},this.magFilter=ae,this.minFilter=ae,this.wrapR=Pe,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}};var Js=class extends le{constructor(t=null,e=1,n=1,i=1){super(null),this.isData3DTexture=!0,this.image={data:t,width:e,height:n,depth:i},this.magFilter=ae,this.minFilter=ae,this.wrapR=Pe,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}};var rn=class{constructor(t=0,e=0,n=0,i=1){this.isQuaternion=!0,this._x=t,this._y=e,this._z=n,this._w=i}static slerpFlat(t,e,n,i,s,o,a){let c=n[i+0],l=n[i+1],h=n[i+2],f=n[i+3],u=s[o+0],m=s[o+1],_=s[o+2],p=s[o+3];if(a===0){t[e+0]=c,t[e+1]=l,t[e+2]=h,t[e+3]=f;return}if(a===1){t[e+0]=u,t[e+1]=m,t[e+2]=_,t[e+3]=p;return}if(f!==p||c!==u||l!==m||h!==_){let d=1-a,v=c*u+l*m+h*_+f*p,T=v>=0?1:-1,b=1-v*v;if(b>Number.EPSILON){let A=Math.sqrt(b),C=Math.atan2(A,v*T);d=Math.sin(d*C)/A,a=Math.sin(a*C)/A}let M=a*T;if(c=c*d+u*M,l=l*d+m*M,h=h*d+_*M,f=f*d+p*M,d===1-a){let A=1/Math.sqrt(c*c+l*l+h*h+f*f);c*=A,l*=A,h*=A,f*=A}}t[e]=c,t[e+1]=l,t[e+2]=h,t[e+3]=f}static multiplyQuaternionsFlat(t,e,n,i,s,o){let a=n[i],c=n[i+1],l=n[i+2],h=n[i+3],f=s[o],u=s[o+1],m=s[o+2],_=s[o+3];return t[e]=a*_+h*f+c*m-l*u,t[e+1]=c*_+h*u+l*f-a*m,t[e+2]=l*_+h*m+a*u-c*f,t[e+3]=h*_-a*f-c*u-l*m,t}get x(){return this._x}set x(t){this._x=t,this._onChangeCallback()}get y(){return this._y}set y(t){this._y=t,this._onChangeCallback()}get z(){return this._z}set z(t){this._z=t,this._onChangeCallback()}get w(){return this._w}set w(t){this._w=t,this._onChangeCallback()}set(t,e,n,i){return this._x=t,this._y=e,this._z=n,this._w=i,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._w)}copy(t){return this._x=t.x,this._y=t.y,this._z=t.z,this._w=t.w,this._onChangeCallback(),this}setFromEuler(t,e){let n=t._x,i=t._y,s=t._z,o=t._order,a=Math.cos,c=Math.sin,l=a(n/2),h=a(i/2),f=a(s/2),u=c(n/2),m=c(i/2),_=c(s/2);switch(o){case"XYZ":this._x=u*h*f+l*m*_,this._y=l*m*f-u*h*_,this._z=l*h*_+u*m*f,this._w=l*h*f-u*m*_;break;case"YXZ":this._x=u*h*f+l*m*_,this._y=l*m*f-u*h*_,this._z=l*h*_-u*m*f,this._w=l*h*f+u*m*_;break;case"ZXY":this._x=u*h*f-l*m*_,this._y=l*m*f+u*h*_,this._z=l*h*_+u*m*f,this._w=l*h*f-u*m*_;break;case"ZYX":this._x=u*h*f-l*m*_,this._y=l*m*f+u*h*_,this._z=l*h*_-u*m*f,this._w=l*h*f+u*m*_;break;case"YZX":this._x=u*h*f+l*m*_,this._y=l*m*f+u*h*_,this._z=l*h*_-u*m*f,this._w=l*h*f-u*m*_;break;case"XZY":this._x=u*h*f-l*m*_,this._y=l*m*f-u*h*_,this._z=l*h*_+u*m*f,this._w=l*h*f+u*m*_;break;default:console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: "+o)}return e!==!1&&this._onChangeCallback(),this}setFromAxisAngle(t,e){let n=e/2,i=Math.sin(n);return this._x=t.x*i,this._y=t.y*i,this._z=t.z*i,this._w=Math.cos(n),this._onChangeCallback(),this}setFromRotationMatrix(t){let e=t.elements,n=e[0],i=e[4],s=e[8],o=e[1],a=e[5],c=e[9],l=e[2],h=e[6],f=e[10],u=n+a+f;if(u>0){let m=.5/Math.sqrt(u+1);this._w=.25/m,this._x=(h-c)*m,this._y=(s-l)*m,this._z=(o-i)*m}else if(n>a&&n>f){let m=2*Math.sqrt(1+n-a-f);this._w=(h-c)/m,this._x=.25*m,this._y=(i+o)/m,this._z=(s+l)/m}else if(a>f){let m=2*Math.sqrt(1+a-n-f);this._w=(s-l)/m,this._x=(i+o)/m,this._y=.25*m,this._z=(c+h)/m}else{let m=2*Math.sqrt(1+f-n-a);this._w=(o-i)/m,this._x=(s+l)/m,this._y=(c+h)/m,this._z=.25*m}return this._onChangeCallback(),this}setFromUnitVectors(t,e){let n=t.dot(e)+1;return nMath.abs(t.z)?(this._x=-t.y,this._y=t.x,this._z=0,this._w=n):(this._x=0,this._y=-t.z,this._z=t.y,this._w=n)):(this._x=t.y*e.z-t.z*e.y,this._y=t.z*e.x-t.x*e.z,this._z=t.x*e.y-t.y*e.x,this._w=n),this.normalize()}angleTo(t){return 2*Math.acos(Math.abs(ue(this.dot(t),-1,1)))}rotateTowards(t,e){let n=this.angleTo(t);if(n===0)return this;let i=Math.min(1,e/n);return this.slerp(t,i),this}identity(){return this.set(0,0,0,1)}invert(){return this.conjugate()}conjugate(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this}dot(t){return this._x*t._x+this._y*t._y+this._z*t._z+this._w*t._w}lengthSq(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}length(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)}normalize(){let t=this.length();return t===0?(this._x=0,this._y=0,this._z=0,this._w=1):(t=1/t,this._x=this._x*t,this._y=this._y*t,this._z=this._z*t,this._w=this._w*t),this._onChangeCallback(),this}multiply(t){return this.multiplyQuaternions(this,t)}premultiply(t){return this.multiplyQuaternions(t,this)}multiplyQuaternions(t,e){let n=t._x,i=t._y,s=t._z,o=t._w,a=e._x,c=e._y,l=e._z,h=e._w;return this._x=n*h+o*a+i*l-s*c,this._y=i*h+o*c+s*a-n*l,this._z=s*h+o*l+n*c-i*a,this._w=o*h-n*a-i*c-s*l,this._onChangeCallback(),this}slerp(t,e){if(e===0)return this;if(e===1)return this.copy(t);let n=this._x,i=this._y,s=this._z,o=this._w,a=o*t._w+n*t._x+i*t._y+s*t._z;if(a<0?(this._w=-t._w,this._x=-t._x,this._y=-t._y,this._z=-t._z,a=-a):this.copy(t),a>=1)return this._w=o,this._x=n,this._y=i,this._z=s,this;let c=1-a*a;if(c<=Number.EPSILON){let m=1-e;return this._w=m*o+e*this._w,this._x=m*n+e*this._x,this._y=m*i+e*this._y,this._z=m*s+e*this._z,this.normalize(),this._onChangeCallback(),this}let l=Math.sqrt(c),h=Math.atan2(l,a),f=Math.sin((1-e)*h)/l,u=Math.sin(e*h)/l;return this._w=o*f+this._w*u,this._x=n*f+this._x*u,this._y=i*f+this._y*u,this._z=s*f+this._z*u,this._onChangeCallback(),this}slerpQuaternions(t,e,n){return this.copy(t).slerp(e,n)}random(){let t=Math.random(),e=Math.sqrt(1-t),n=Math.sqrt(t),i=2*Math.PI*Math.random(),s=2*Math.PI*Math.random();return this.set(e*Math.cos(i),n*Math.sin(s),n*Math.cos(s),e*Math.sin(i))}equals(t){return t._x===this._x&&t._y===this._y&&t._z===this._z&&t._w===this._w}fromArray(t,e=0){return this._x=t[e],this._y=t[e+1],this._z=t[e+2],this._w=t[e+3],this._onChangeCallback(),this}toArray(t=[],e=0){return t[e]=this._x,t[e+1]=this._y,t[e+2]=this._z,t[e+3]=this._w,t}fromBufferAttribute(t,e){return this._x=t.getX(e),this._y=t.getY(e),this._z=t.getZ(e),this._w=t.getW(e),this}_onChange(t){return this._onChangeCallback=t,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}},N=class{constructor(t=0,e=0,n=0){N.prototype.isVector3=!0,this.x=t,this.y=e,this.z=n}set(t,e,n){return n===void 0&&(n=this.z),this.x=t,this.y=e,this.z=n,this}setScalar(t){return this.x=t,this.y=t,this.z=t,this}setX(t){return this.x=t,this}setY(t){return this.y=t,this}setZ(t){return this.z=t,this}setComponent(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)}return this}getComponent(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(){return new this.constructor(this.x,this.y,this.z)}copy(t){return this.x=t.x,this.y=t.y,this.z=t.z,this}add(t){return this.x+=t.x,this.y+=t.y,this.z+=t.z,this}addScalar(t){return this.x+=t,this.y+=t,this.z+=t,this}addVectors(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this.z=t.z+e.z,this}addScaledVector(t,e){return this.x+=t.x*e,this.y+=t.y*e,this.z+=t.z*e,this}sub(t){return this.x-=t.x,this.y-=t.y,this.z-=t.z,this}subScalar(t){return this.x-=t,this.y-=t,this.z-=t,this}subVectors(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this.z=t.z-e.z,this}multiply(t){return this.x*=t.x,this.y*=t.y,this.z*=t.z,this}multiplyScalar(t){return this.x*=t,this.y*=t,this.z*=t,this}multiplyVectors(t,e){return this.x=t.x*e.x,this.y=t.y*e.y,this.z=t.z*e.z,this}applyEuler(t){return this.applyQuaternion(ua.setFromEuler(t))}applyAxisAngle(t,e){return this.applyQuaternion(ua.setFromAxisAngle(t,e))}applyMatrix3(t){let e=this.x,n=this.y,i=this.z,s=t.elements;return this.x=s[0]*e+s[3]*n+s[6]*i,this.y=s[1]*e+s[4]*n+s[7]*i,this.z=s[2]*e+s[5]*n+s[8]*i,this}applyNormalMatrix(t){return this.applyMatrix3(t).normalize()}applyMatrix4(t){let e=this.x,n=this.y,i=this.z,s=t.elements,o=1/(s[3]*e+s[7]*n+s[11]*i+s[15]);return this.x=(s[0]*e+s[4]*n+s[8]*i+s[12])*o,this.y=(s[1]*e+s[5]*n+s[9]*i+s[13])*o,this.z=(s[2]*e+s[6]*n+s[10]*i+s[14])*o,this}applyQuaternion(t){let e=this.x,n=this.y,i=this.z,s=t.x,o=t.y,a=t.z,c=t.w,l=c*e+o*i-a*n,h=c*n+a*e-s*i,f=c*i+s*n-o*e,u=-s*e-o*n-a*i;return this.x=l*c+u*-s+h*-a-f*-o,this.y=h*c+u*-o+f*-s-l*-a,this.z=f*c+u*-a+l*-o-h*-s,this}project(t){return this.applyMatrix4(t.matrixWorldInverse).applyMatrix4(t.projectionMatrix)}unproject(t){return this.applyMatrix4(t.projectionMatrixInverse).applyMatrix4(t.matrixWorld)}transformDirection(t){let e=this.x,n=this.y,i=this.z,s=t.elements;return this.x=s[0]*e+s[4]*n+s[8]*i,this.y=s[1]*e+s[5]*n+s[9]*i,this.z=s[2]*e+s[6]*n+s[10]*i,this.normalize()}divide(t){return this.x/=t.x,this.y/=t.y,this.z/=t.z,this}divideScalar(t){return this.multiplyScalar(1/t)}min(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this.z=Math.min(this.z,t.z),this}max(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this.z=Math.max(this.z,t.z),this}clamp(t,e){return this.x=Math.max(t.x,Math.min(e.x,this.x)),this.y=Math.max(t.y,Math.min(e.y,this.y)),this.z=Math.max(t.z,Math.min(e.z,this.z)),this}clampScalar(t,e){return this.x=Math.max(t,Math.min(e,this.x)),this.y=Math.max(t,Math.min(e,this.y)),this.z=Math.max(t,Math.min(e,this.z)),this}clampLength(t,e){let n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(t,Math.min(e,n)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}roundToZero(){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(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(t){return this.x*t.x+this.y*t.y+this.z*t.z}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(t){return this.normalize().multiplyScalar(t)}lerp(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(t,e,n){return this.x=t.x+(e.x-t.x)*n,this.y=t.y+(e.y-t.y)*n,this.z=t.z+(e.z-t.z)*n,this}cross(t){return this.crossVectors(this,t)}crossVectors(t,e){let n=t.x,i=t.y,s=t.z,o=e.x,a=e.y,c=e.z;return this.x=i*c-s*a,this.y=s*o-n*c,this.z=n*a-i*o,this}projectOnVector(t){let e=t.lengthSq();if(e===0)return this.set(0,0,0);let n=t.dot(this)/e;return this.copy(t).multiplyScalar(n)}projectOnPlane(t){return ws.copy(this).projectOnVector(t),this.sub(ws)}reflect(t){return this.sub(ws.copy(t).multiplyScalar(2*this.dot(t)))}angleTo(t){let e=Math.sqrt(this.lengthSq()*t.lengthSq());if(e===0)return Math.PI/2;let n=this.dot(t)/e;return Math.acos(ue(n,-1,1))}distanceTo(t){return Math.sqrt(this.distanceToSquared(t))}distanceToSquared(t){let e=this.x-t.x,n=this.y-t.y,i=this.z-t.z;return e*e+n*n+i*i}manhattanDistanceTo(t){return Math.abs(this.x-t.x)+Math.abs(this.y-t.y)+Math.abs(this.z-t.z)}setFromSpherical(t){return this.setFromSphericalCoords(t.radius,t.phi,t.theta)}setFromSphericalCoords(t,e,n){let i=Math.sin(e)*t;return this.x=i*Math.sin(n),this.y=Math.cos(e)*t,this.z=i*Math.cos(n),this}setFromCylindrical(t){return this.setFromCylindricalCoords(t.radius,t.theta,t.y)}setFromCylindricalCoords(t,e,n){return this.x=t*Math.sin(e),this.y=n,this.z=t*Math.cos(e),this}setFromMatrixPosition(t){let e=t.elements;return this.x=e[12],this.y=e[13],this.z=e[14],this}setFromMatrixScale(t){let e=this.setFromMatrixColumn(t,0).length(),n=this.setFromMatrixColumn(t,1).length(),i=this.setFromMatrixColumn(t,2).length();return this.x=e,this.y=n,this.z=i,this}setFromMatrixColumn(t,e){return this.fromArray(t.elements,e*4)}setFromMatrix3Column(t,e){return this.fromArray(t.elements,e*3)}setFromEuler(t){return this.x=t._x,this.y=t._y,this.z=t._z,this}equals(t){return t.x===this.x&&t.y===this.y&&t.z===this.z}fromArray(t,e=0){return this.x=t[e],this.y=t[e+1],this.z=t[e+2],this}toArray(t=[],e=0){return t[e]=this.x,t[e+1]=this.y,t[e+2]=this.z,t}fromBufferAttribute(t,e){return this.x=t.getX(e),this.y=t.getY(e),this.z=t.getZ(e),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){let t=(Math.random()-.5)*2,e=Math.random()*Math.PI*2,n=Math.sqrt(1-t**2);return this.x=n*Math.cos(e),this.y=n*Math.sin(e),this.z=t,this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}},ws=new N,ua=new rn,Mn=class{constructor(t=new N(1/0,1/0,1/0),e=new N(-1/0,-1/0,-1/0)){this.isBox3=!0,this.min=t,this.max=e}set(t,e){return this.min.copy(t),this.max.copy(e),this}setFromArray(t){let e=1/0,n=1/0,i=1/0,s=-1/0,o=-1/0,a=-1/0;for(let c=0,l=t.length;cs&&(s=h),f>o&&(o=f),u>a&&(a=u)}return this.min.set(e,n,i),this.max.set(s,o,a),this}setFromBufferAttribute(t){let e=1/0,n=1/0,i=1/0,s=-1/0,o=-1/0,a=-1/0;for(let c=0,l=t.count;cs&&(s=h),f>o&&(o=f),u>a&&(a=u)}return this.min.set(e,n,i),this.max.set(s,o,a),this}setFromPoints(t){this.makeEmpty();for(let e=0,n=t.length;ethis.max.x||t.ythis.max.y||t.zthis.max.z)}containsBox(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(t,e){return e.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))}intersectsBox(t){return!(t.max.xthis.max.x||t.max.ythis.max.y||t.max.zthis.max.z)}intersectsSphere(t){return this.clampPoint(t.center,hn),hn.distanceToSquared(t.center)<=t.radius*t.radius}intersectsPlane(t){let e,n;return t.normal.x>0?(e=t.normal.x*this.min.x,n=t.normal.x*this.max.x):(e=t.normal.x*this.max.x,n=t.normal.x*this.min.x),t.normal.y>0?(e+=t.normal.y*this.min.y,n+=t.normal.y*this.max.y):(e+=t.normal.y*this.max.y,n+=t.normal.y*this.min.y),t.normal.z>0?(e+=t.normal.z*this.min.z,n+=t.normal.z*this.max.z):(e+=t.normal.z*this.max.z,n+=t.normal.z*this.min.z),e<=-t.constant&&n>=-t.constant}intersectsTriangle(t){if(this.isEmpty())return!1;this.getCenter(ei),bi.subVectors(this.max,ei),An.subVectors(t.a,ei),En.subVectors(t.b,ei),Cn.subVectors(t.c,ei),Je.subVectors(En,An),$e.subVectors(Cn,En),un.subVectors(An,Cn);let e=[0,-Je.z,Je.y,0,-$e.z,$e.y,0,-un.z,un.y,Je.z,0,-Je.x,$e.z,0,-$e.x,un.z,0,-un.x,-Je.y,Je.x,0,-$e.y,$e.x,0,-un.y,un.x,0];return!Ts(e,An,En,Cn,bi)||(e=[1,0,0,0,1,0,0,0,1],!Ts(e,An,En,Cn,bi))?!1:(wi.crossVectors(Je,$e),e=[wi.x,wi.y,wi.z],Ts(e,An,En,Cn,bi))}clampPoint(t,e){return e.copy(t).clamp(this.min,this.max)}distanceToPoint(t){return hn.copy(t).clamp(this.min,this.max).sub(t).length()}getBoundingSphere(t){return this.getCenter(t.center),t.radius=this.getSize(hn).length()*.5,t}intersect(t){return this.min.max(t.min),this.max.min(t.max),this.isEmpty()&&this.makeEmpty(),this}union(t){return this.min.min(t.min),this.max.max(t.max),this}applyMatrix4(t){return this.isEmpty()?this:(Ue[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(t),Ue[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(t),Ue[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(t),Ue[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(t),Ue[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(t),Ue[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(t),Ue[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(t),Ue[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(t),this.setFromPoints(Ue),this)}translate(t){return this.min.add(t),this.max.add(t),this}equals(t){return t.min.equals(this.min)&&t.max.equals(this.max)}},Ue=[new N,new N,new N,new N,new N,new N,new N,new N],hn=new N,Ss=new Mn,An=new N,En=new N,Cn=new N,Je=new N,$e=new N,un=new N,ei=new N,bi=new N,wi=new N,dn=new N;function Ts(r,t,e,n,i){for(let s=0,o=r.length-3;s<=o;s+=3){dn.fromArray(r,s);let a=i.x*Math.abs(dn.x)+i.y*Math.abs(dn.y)+i.z*Math.abs(dn.z),c=t.dot(dn),l=e.dot(dn),h=n.dot(dn);if(Math.max(-Math.max(c,l,h),Math.min(c,l,h))>a)return!1}return!0}var Ml=new Mn,ni=new N,As=new N,_i=class{constructor(t=new N,e=-1){this.center=t,this.radius=e}set(t,e){return this.center.copy(t),this.radius=e,this}setFromPoints(t,e){let n=this.center;e!==void 0?n.copy(e):Ml.setFromPoints(t).getCenter(n);let i=0;for(let s=0,o=t.length;sthis.radius*this.radius&&(e.sub(this.center).normalize(),e.multiplyScalar(this.radius).add(this.center)),e}getBoundingBox(t){return this.isEmpty()?(t.makeEmpty(),t):(t.set(this.center,this.center),t.expandByScalar(this.radius),t)}applyMatrix4(t){return this.center.applyMatrix4(t),this.radius=this.radius*t.getMaxScaleOnAxis(),this}translate(t){return this.center.add(t),this}expandByPoint(t){if(this.isEmpty())return this.center.copy(t),this.radius=0,this;ni.subVectors(t,this.center);let e=ni.lengthSq();if(e>this.radius*this.radius){let n=Math.sqrt(e),i=(n-this.radius)*.5;this.center.addScaledVector(ni,i/n),this.radius+=i}return this}union(t){return t.isEmpty()?this:this.isEmpty()?(this.copy(t),this):(this.center.equals(t.center)===!0?this.radius=Math.max(this.radius,t.radius):(As.subVectors(t.center,this.center).setLength(t.radius),this.expandByPoint(ni.copy(t.center).add(As)),this.expandByPoint(ni.copy(t.center).sub(As))),this)}equals(t){return t.center.equals(this.center)&&t.radius===this.radius}clone(){return new this.constructor().copy(this)}},Be=new N,Es=new N,Si=new N,Ke=new N,Cs=new N,Ti=new N,Ps=new N,$s=class{constructor(t=new N,e=new N(0,0,-1)){this.origin=t,this.direction=e}set(t,e){return this.origin.copy(t),this.direction.copy(e),this}copy(t){return this.origin.copy(t.origin),this.direction.copy(t.direction),this}at(t,e){return e.copy(this.direction).multiplyScalar(t).add(this.origin)}lookAt(t){return this.direction.copy(t).sub(this.origin).normalize(),this}recast(t){return this.origin.copy(this.at(t,Be)),this}closestPointToPoint(t,e){e.subVectors(t,this.origin);let n=e.dot(this.direction);return n<0?e.copy(this.origin):e.copy(this.direction).multiplyScalar(n).add(this.origin)}distanceToPoint(t){return Math.sqrt(this.distanceSqToPoint(t))}distanceSqToPoint(t){let e=Be.subVectors(t,this.origin).dot(this.direction);return e<0?this.origin.distanceToSquared(t):(Be.copy(this.direction).multiplyScalar(e).add(this.origin),Be.distanceToSquared(t))}distanceSqToSegment(t,e,n,i){Es.copy(t).add(e).multiplyScalar(.5),Si.copy(e).sub(t).normalize(),Ke.copy(this.origin).sub(Es);let s=t.distanceTo(e)*.5,o=-this.direction.dot(Si),a=Ke.dot(this.direction),c=-Ke.dot(Si),l=Ke.lengthSq(),h=Math.abs(1-o*o),f,u,m,_;if(h>0)if(f=o*c-a,u=o*a-c,_=s*h,f>=0)if(u>=-_)if(u<=_){let p=1/h;f*=p,u*=p,m=f*(f+o*u+2*a)+u*(o*f+u+2*c)+l}else u=s,f=Math.max(0,-(o*u+a)),m=-f*f+u*(u+2*c)+l;else u=-s,f=Math.max(0,-(o*u+a)),m=-f*f+u*(u+2*c)+l;else u<=-_?(f=Math.max(0,-(-o*s+a)),u=f>0?-s:Math.min(Math.max(-s,-c),s),m=-f*f+u*(u+2*c)+l):u<=_?(f=0,u=Math.min(Math.max(-s,-c),s),m=u*(u+2*c)+l):(f=Math.max(0,-(o*s+a)),u=f>0?s:Math.min(Math.max(-s,-c),s),m=-f*f+u*(u+2*c)+l);else u=o>0?-s:s,f=Math.max(0,-(o*u+a)),m=-f*f+u*(u+2*c)+l;return n&&n.copy(this.direction).multiplyScalar(f).add(this.origin),i&&i.copy(Si).multiplyScalar(u).add(Es),m}intersectSphere(t,e){Be.subVectors(t.center,this.origin);let n=Be.dot(this.direction),i=Be.dot(Be)-n*n,s=t.radius*t.radius;if(i>s)return null;let o=Math.sqrt(s-i),a=n-o,c=n+o;return a<0&&c<0?null:a<0?this.at(c,e):this.at(a,e)}intersectsSphere(t){return this.distanceSqToPoint(t.center)<=t.radius*t.radius}distanceToPlane(t){let e=t.normal.dot(this.direction);if(e===0)return t.distanceToPoint(this.origin)===0?0:null;let n=-(this.origin.dot(t.normal)+t.constant)/e;return n>=0?n:null}intersectPlane(t,e){let n=this.distanceToPlane(t);return n===null?null:this.at(n,e)}intersectsPlane(t){let e=t.distanceToPoint(this.origin);return e===0||t.normal.dot(this.direction)*e<0}intersectBox(t,e){let n,i,s,o,a,c,l=1/this.direction.x,h=1/this.direction.y,f=1/this.direction.z,u=this.origin;return l>=0?(n=(t.min.x-u.x)*l,i=(t.max.x-u.x)*l):(n=(t.max.x-u.x)*l,i=(t.min.x-u.x)*l),h>=0?(s=(t.min.y-u.y)*h,o=(t.max.y-u.y)*h):(s=(t.max.y-u.y)*h,o=(t.min.y-u.y)*h),n>o||s>i||((s>n||isNaN(n))&&(n=s),(o=0?(a=(t.min.z-u.z)*f,c=(t.max.z-u.z)*f):(a=(t.max.z-u.z)*f,c=(t.min.z-u.z)*f),n>c||a>i)||((a>n||n!==n)&&(n=a),(c=0?n:i,e)}intersectsBox(t){return this.intersectBox(t,Be)!==null}intersectTriangle(t,e,n,i,s){Cs.subVectors(e,t),Ti.subVectors(n,t),Ps.crossVectors(Cs,Ti);let o=this.direction.dot(Ps),a;if(o>0){if(i)return null;a=1}else if(o<0)a=-1,o=-o;else return null;Ke.subVectors(this.origin,t);let c=a*this.direction.dot(Ti.crossVectors(Ke,Ti));if(c<0)return null;let l=a*this.direction.dot(Cs.cross(Ke));if(l<0||c+l>o)return null;let h=-a*Ke.dot(Ps);return h<0?null:this.at(h/o,s)}applyMatrix4(t){return this.origin.applyMatrix4(t),this.direction.transformDirection(t),this}equals(t){return t.origin.equals(this.origin)&&t.direction.equals(this.direction)}clone(){return new this.constructor().copy(this)}},qt=class{constructor(){qt.prototype.isMatrix4=!0,this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}set(t,e,n,i,s,o,a,c,l,h,f,u,m,_,p,d){let v=this.elements;return v[0]=t,v[4]=e,v[8]=n,v[12]=i,v[1]=s,v[5]=o,v[9]=a,v[13]=c,v[2]=l,v[6]=h,v[10]=f,v[14]=u,v[3]=m,v[7]=_,v[11]=p,v[15]=d,this}identity(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this}clone(){return new qt().fromArray(this.elements)}copy(t){let e=this.elements,n=t.elements;return e[0]=n[0],e[1]=n[1],e[2]=n[2],e[3]=n[3],e[4]=n[4],e[5]=n[5],e[6]=n[6],e[7]=n[7],e[8]=n[8],e[9]=n[9],e[10]=n[10],e[11]=n[11],e[12]=n[12],e[13]=n[13],e[14]=n[14],e[15]=n[15],this}copyPosition(t){let e=this.elements,n=t.elements;return e[12]=n[12],e[13]=n[13],e[14]=n[14],this}setFromMatrix3(t){let e=t.elements;return this.set(e[0],e[3],e[6],0,e[1],e[4],e[7],0,e[2],e[5],e[8],0,0,0,0,1),this}extractBasis(t,e,n){return t.setFromMatrixColumn(this,0),e.setFromMatrixColumn(this,1),n.setFromMatrixColumn(this,2),this}makeBasis(t,e,n){return this.set(t.x,e.x,n.x,0,t.y,e.y,n.y,0,t.z,e.z,n.z,0,0,0,0,1),this}extractRotation(t){let e=this.elements,n=t.elements,i=1/Pn.setFromMatrixColumn(t,0).length(),s=1/Pn.setFromMatrixColumn(t,1).length(),o=1/Pn.setFromMatrixColumn(t,2).length();return e[0]=n[0]*i,e[1]=n[1]*i,e[2]=n[2]*i,e[3]=0,e[4]=n[4]*s,e[5]=n[5]*s,e[6]=n[6]*s,e[7]=0,e[8]=n[8]*o,e[9]=n[9]*o,e[10]=n[10]*o,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,this}makeRotationFromEuler(t){let e=this.elements,n=t.x,i=t.y,s=t.z,o=Math.cos(n),a=Math.sin(n),c=Math.cos(i),l=Math.sin(i),h=Math.cos(s),f=Math.sin(s);if(t.order==="XYZ"){let u=o*h,m=o*f,_=a*h,p=a*f;e[0]=c*h,e[4]=-c*f,e[8]=l,e[1]=m+_*l,e[5]=u-p*l,e[9]=-a*c,e[2]=p-u*l,e[6]=_+m*l,e[10]=o*c}else if(t.order==="YXZ"){let u=c*h,m=c*f,_=l*h,p=l*f;e[0]=u+p*a,e[4]=_*a-m,e[8]=o*l,e[1]=o*f,e[5]=o*h,e[9]=-a,e[2]=m*a-_,e[6]=p+u*a,e[10]=o*c}else if(t.order==="ZXY"){let u=c*h,m=c*f,_=l*h,p=l*f;e[0]=u-p*a,e[4]=-o*f,e[8]=_+m*a,e[1]=m+_*a,e[5]=o*h,e[9]=p-u*a,e[2]=-o*l,e[6]=a,e[10]=o*c}else if(t.order==="ZYX"){let u=o*h,m=o*f,_=a*h,p=a*f;e[0]=c*h,e[4]=_*l-m,e[8]=u*l+p,e[1]=c*f,e[5]=p*l+u,e[9]=m*l-_,e[2]=-l,e[6]=a*c,e[10]=o*c}else if(t.order==="YZX"){let u=o*c,m=o*l,_=a*c,p=a*l;e[0]=c*h,e[4]=p-u*f,e[8]=_*f+m,e[1]=f,e[5]=o*h,e[9]=-a*h,e[2]=-l*h,e[6]=m*f+_,e[10]=u-p*f}else if(t.order==="XZY"){let u=o*c,m=o*l,_=a*c,p=a*l;e[0]=c*h,e[4]=-f,e[8]=l*h,e[1]=u*f+p,e[5]=o*h,e[9]=m*f-_,e[2]=_*f-m,e[6]=a*h,e[10]=p*f+u}return e[3]=0,e[7]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,this}makeRotationFromQuaternion(t){return this.compose(bl,t,wl)}lookAt(t,e,n){let i=this.elements;return me.subVectors(t,e),me.lengthSq()===0&&(me.z=1),me.normalize(),je.crossVectors(n,me),je.lengthSq()===0&&(Math.abs(n.z)===1?me.x+=1e-4:me.z+=1e-4,me.normalize(),je.crossVectors(n,me)),je.normalize(),Ai.crossVectors(me,je),i[0]=je.x,i[4]=Ai.x,i[8]=me.x,i[1]=je.y,i[5]=Ai.y,i[9]=me.y,i[2]=je.z,i[6]=Ai.z,i[10]=me.z,this}multiply(t){return this.multiplyMatrices(this,t)}premultiply(t){return this.multiplyMatrices(t,this)}multiplyMatrices(t,e){let n=t.elements,i=e.elements,s=this.elements,o=n[0],a=n[4],c=n[8],l=n[12],h=n[1],f=n[5],u=n[9],m=n[13],_=n[2],p=n[6],d=n[10],v=n[14],T=n[3],b=n[7],M=n[11],A=n[15],C=i[0],I=i[4],x=i[8],S=i[12],L=i[1],X=i[5],q=i[9],z=i[13],R=i[2],G=i[6],Y=i[10],j=i[14],W=i[3],Q=i[7],Z=i[11],ft=i[15];return s[0]=o*C+a*L+c*R+l*W,s[4]=o*I+a*X+c*G+l*Q,s[8]=o*x+a*q+c*Y+l*Z,s[12]=o*S+a*z+c*j+l*ft,s[1]=h*C+f*L+u*R+m*W,s[5]=h*I+f*X+u*G+m*Q,s[9]=h*x+f*q+u*Y+m*Z,s[13]=h*S+f*z+u*j+m*ft,s[2]=_*C+p*L+d*R+v*W,s[6]=_*I+p*X+d*G+v*Q,s[10]=_*x+p*q+d*Y+v*Z,s[14]=_*S+p*z+d*j+v*ft,s[3]=T*C+b*L+M*R+A*W,s[7]=T*I+b*X+M*G+A*Q,s[11]=T*x+b*q+M*Y+A*Z,s[15]=T*S+b*z+M*j+A*ft,this}multiplyScalar(t){let 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(){let t=this.elements,e=t[0],n=t[4],i=t[8],s=t[12],o=t[1],a=t[5],c=t[9],l=t[13],h=t[2],f=t[6],u=t[10],m=t[14],_=t[3],p=t[7],d=t[11],v=t[15];return _*(+s*c*f-i*l*f-s*a*u+n*l*u+i*a*m-n*c*m)+p*(+e*c*m-e*l*u+s*o*u-i*o*m+i*l*h-s*c*h)+d*(+e*l*f-e*a*m-s*o*f+n*o*m+s*a*h-n*l*h)+v*(-i*a*h-e*c*f+e*a*u+i*o*f-n*o*u+n*c*h)}transpose(){let t=this.elements,e;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}setPosition(t,e,n){let i=this.elements;return t.isVector3?(i[12]=t.x,i[13]=t.y,i[14]=t.z):(i[12]=t,i[13]=e,i[14]=n),this}invert(){let t=this.elements,e=t[0],n=t[1],i=t[2],s=t[3],o=t[4],a=t[5],c=t[6],l=t[7],h=t[8],f=t[9],u=t[10],m=t[11],_=t[12],p=t[13],d=t[14],v=t[15],T=f*d*l-p*u*l+p*c*m-a*d*m-f*c*v+a*u*v,b=_*u*l-h*d*l-_*c*m+o*d*m+h*c*v-o*u*v,M=h*p*l-_*f*l+_*a*m-o*p*m-h*a*v+o*f*v,A=_*f*c-h*p*c-_*a*u+o*p*u+h*a*d-o*f*d,C=e*T+n*b+i*M+s*A;if(C===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);let I=1/C;return t[0]=T*I,t[1]=(p*u*s-f*d*s-p*i*m+n*d*m+f*i*v-n*u*v)*I,t[2]=(a*d*s-p*c*s+p*i*l-n*d*l-a*i*v+n*c*v)*I,t[3]=(f*c*s-a*u*s-f*i*l+n*u*l+a*i*m-n*c*m)*I,t[4]=b*I,t[5]=(h*d*s-_*u*s+_*i*m-e*d*m-h*i*v+e*u*v)*I,t[6]=(_*c*s-o*d*s-_*i*l+e*d*l+o*i*v-e*c*v)*I,t[7]=(o*u*s-h*c*s+h*i*l-e*u*l-o*i*m+e*c*m)*I,t[8]=M*I,t[9]=(_*f*s-h*p*s-_*n*m+e*p*m+h*n*v-e*f*v)*I,t[10]=(o*p*s-_*a*s+_*n*l-e*p*l-o*n*v+e*a*v)*I,t[11]=(h*a*s-o*f*s-h*n*l+e*f*l+o*n*m-e*a*m)*I,t[12]=A*I,t[13]=(h*p*i-_*f*i+_*n*u-e*p*u-h*n*d+e*f*d)*I,t[14]=(_*a*i-o*p*i-_*n*c+e*p*c+o*n*d-e*a*d)*I,t[15]=(o*f*i-h*a*i+h*n*c-e*f*c-o*n*u+e*a*u)*I,this}scale(t){let e=this.elements,n=t.x,i=t.y,s=t.z;return e[0]*=n,e[4]*=i,e[8]*=s,e[1]*=n,e[5]*=i,e[9]*=s,e[2]*=n,e[6]*=i,e[10]*=s,e[3]*=n,e[7]*=i,e[11]*=s,this}getMaxScaleOnAxis(){let t=this.elements,e=t[0]*t[0]+t[1]*t[1]+t[2]*t[2],n=t[4]*t[4]+t[5]*t[5]+t[6]*t[6],i=t[8]*t[8]+t[9]*t[9]+t[10]*t[10];return Math.sqrt(Math.max(e,n,i))}makeTranslation(t,e,n){return this.set(1,0,0,t,0,1,0,e,0,0,1,n,0,0,0,1),this}makeRotationX(t){let e=Math.cos(t),n=Math.sin(t);return this.set(1,0,0,0,0,e,-n,0,0,n,e,0,0,0,0,1),this}makeRotationY(t){let e=Math.cos(t),n=Math.sin(t);return this.set(e,0,n,0,0,1,0,0,-n,0,e,0,0,0,0,1),this}makeRotationZ(t){let e=Math.cos(t),n=Math.sin(t);return this.set(e,-n,0,0,n,e,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(t,e){let n=Math.cos(e),i=Math.sin(e),s=1-n,o=t.x,a=t.y,c=t.z,l=s*o,h=s*a;return this.set(l*o+n,l*a-i*c,l*c+i*a,0,l*a+i*c,h*a+n,h*c-i*o,0,l*c-i*a,h*c+i*o,s*c*c+n,0,0,0,0,1),this}makeScale(t,e,n){return this.set(t,0,0,0,0,e,0,0,0,0,n,0,0,0,0,1),this}makeShear(t,e,n,i,s,o){return this.set(1,n,s,0,t,1,o,0,e,i,1,0,0,0,0,1),this}compose(t,e,n){let i=this.elements,s=e._x,o=e._y,a=e._z,c=e._w,l=s+s,h=o+o,f=a+a,u=s*l,m=s*h,_=s*f,p=o*h,d=o*f,v=a*f,T=c*l,b=c*h,M=c*f,A=n.x,C=n.y,I=n.z;return i[0]=(1-(p+v))*A,i[1]=(m+M)*A,i[2]=(_-b)*A,i[3]=0,i[4]=(m-M)*C,i[5]=(1-(u+v))*C,i[6]=(d+T)*C,i[7]=0,i[8]=(_+b)*I,i[9]=(d-T)*I,i[10]=(1-(u+p))*I,i[11]=0,i[12]=t.x,i[13]=t.y,i[14]=t.z,i[15]=1,this}decompose(t,e,n){let i=this.elements,s=Pn.set(i[0],i[1],i[2]).length(),o=Pn.set(i[4],i[5],i[6]).length(),a=Pn.set(i[8],i[9],i[10]).length();this.determinant()<0&&(s=-s),t.x=i[12],t.y=i[13],t.z=i[14],Ee.copy(this);let l=1/s,h=1/o,f=1/a;return Ee.elements[0]*=l,Ee.elements[1]*=l,Ee.elements[2]*=l,Ee.elements[4]*=h,Ee.elements[5]*=h,Ee.elements[6]*=h,Ee.elements[8]*=f,Ee.elements[9]*=f,Ee.elements[10]*=f,e.setFromRotationMatrix(Ee),n.x=s,n.y=o,n.z=a,this}makePerspective(t,e,n,i,s,o){let a=this.elements,c=2*s/(e-t),l=2*s/(n-i),h=(e+t)/(e-t),f=(n+i)/(n-i),u=-(o+s)/(o-s),m=-2*o*s/(o-s);return a[0]=c,a[4]=0,a[8]=h,a[12]=0,a[1]=0,a[5]=l,a[9]=f,a[13]=0,a[2]=0,a[6]=0,a[10]=u,a[14]=m,a[3]=0,a[7]=0,a[11]=-1,a[15]=0,this}makeOrthographic(t,e,n,i,s,o){let a=this.elements,c=1/(e-t),l=1/(n-i),h=1/(o-s),f=(e+t)*c,u=(n+i)*l,m=(o+s)*h;return a[0]=2*c,a[4]=0,a[8]=0,a[12]=-f,a[1]=0,a[5]=2*l,a[9]=0,a[13]=-u,a[2]=0,a[6]=0,a[10]=-2*h,a[14]=-m,a[3]=0,a[7]=0,a[11]=0,a[15]=1,this}equals(t){let e=this.elements,n=t.elements;for(let i=0;i<16;i++)if(e[i]!==n[i])return!1;return!0}fromArray(t,e=0){for(let n=0;n<16;n++)this.elements[n]=t[n+e];return this}toArray(t=[],e=0){let n=this.elements;return t[e]=n[0],t[e+1]=n[1],t[e+2]=n[2],t[e+3]=n[3],t[e+4]=n[4],t[e+5]=n[5],t[e+6]=n[6],t[e+7]=n[7],t[e+8]=n[8],t[e+9]=n[9],t[e+10]=n[10],t[e+11]=n[11],t[e+12]=n[12],t[e+13]=n[13],t[e+14]=n[14],t[e+15]=n[15],t}},Pn=new N,Ee=new qt,bl=new N(0,0,0),wl=new N(1,1,1),je=new N,Ai=new N,me=new N,da=new qt,fa=new rn,Zn=class{constructor(t=0,e=0,n=0,i=Zn.DEFAULT_ORDER){this.isEuler=!0,this._x=t,this._y=e,this._z=n,this._order=i}get x(){return this._x}set x(t){this._x=t,this._onChangeCallback()}get y(){return this._y}set y(t){this._y=t,this._onChangeCallback()}get z(){return this._z}set z(t){this._z=t,this._onChangeCallback()}get order(){return this._order}set order(t){this._order=t,this._onChangeCallback()}set(t,e,n,i=this._order){return this._x=t,this._y=e,this._z=n,this._order=i,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._order)}copy(t){return this._x=t._x,this._y=t._y,this._z=t._z,this._order=t._order,this._onChangeCallback(),this}setFromRotationMatrix(t,e=this._order,n=!0){let i=t.elements,s=i[0],o=i[4],a=i[8],c=i[1],l=i[5],h=i[9],f=i[2],u=i[6],m=i[10];switch(e){case"XYZ":this._y=Math.asin(ue(a,-1,1)),Math.abs(a)<.9999999?(this._x=Math.atan2(-h,m),this._z=Math.atan2(-o,s)):(this._x=Math.atan2(u,l),this._z=0);break;case"YXZ":this._x=Math.asin(-ue(h,-1,1)),Math.abs(h)<.9999999?(this._y=Math.atan2(a,m),this._z=Math.atan2(c,l)):(this._y=Math.atan2(-f,s),this._z=0);break;case"ZXY":this._x=Math.asin(ue(u,-1,1)),Math.abs(u)<.9999999?(this._y=Math.atan2(-f,m),this._z=Math.atan2(-o,l)):(this._y=0,this._z=Math.atan2(c,s));break;case"ZYX":this._y=Math.asin(-ue(f,-1,1)),Math.abs(f)<.9999999?(this._x=Math.atan2(u,m),this._z=Math.atan2(c,s)):(this._x=0,this._z=Math.atan2(-o,l));break;case"YZX":this._z=Math.asin(ue(c,-1,1)),Math.abs(c)<.9999999?(this._x=Math.atan2(-h,l),this._y=Math.atan2(-f,s)):(this._x=0,this._y=Math.atan2(a,m));break;case"XZY":this._z=Math.asin(-ue(o,-1,1)),Math.abs(o)<.9999999?(this._x=Math.atan2(u,l),this._y=Math.atan2(a,s)):(this._x=Math.atan2(-h,m),this._y=0);break;default:console.warn("THREE.Euler: .setFromRotationMatrix() encountered an unknown order: "+e)}return this._order=e,n===!0&&this._onChangeCallback(),this}setFromQuaternion(t,e,n){return da.makeRotationFromQuaternion(t),this.setFromRotationMatrix(da,e,n)}setFromVector3(t,e=this._order){return this.set(t.x,t.y,t.z,e)}reorder(t){return fa.setFromEuler(this),this.setFromQuaternion(fa,t)}equals(t){return t._x===this._x&&t._y===this._y&&t._z===this._z&&t._order===this._order}fromArray(t){return this._x=t[0],this._y=t[1],this._z=t[2],t[3]!==void 0&&(this._order=t[3]),this._onChangeCallback(),this}toArray(t=[],e=0){return t[e]=this._x,t[e+1]=this._y,t[e+2]=this._z,t[e+3]=this._order,t}_onChange(t){return this._onChangeCallback=t,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._order}};Zn.DEFAULT_ORDER="XYZ";var Zi=class{constructor(){this.mask=1}set(t){this.mask=(1<>>0}enable(t){this.mask|=1<1){for(let e=0;e1){for(let n=0;n0&&(n=n.concat(o))}return n}getWorldPosition(t){return this.updateWorldMatrix(!0,!1),t.setFromMatrixPosition(this.matrixWorld)}getWorldQuaternion(t){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(ii,t,Tl),t}getWorldScale(t){return this.updateWorldMatrix(!0,!1),this.matrixWorld.decompose(ii,Al,t),t}getWorldDirection(t){this.updateWorldMatrix(!0,!1);let e=this.matrixWorld.elements;return t.set(e[8],e[9],e[10]).normalize()}raycast(){}traverse(t){t(this);let e=this.children;for(let n=0,i=e.length;n0&&(i.userData=this.userData),i.layers=this.layers.mask,i.matrix=this.matrix.toArray(),this.matrixAutoUpdate===!1&&(i.matrixAutoUpdate=!1),this.isInstancedMesh&&(i.type="InstancedMesh",i.count=this.count,i.instanceMatrix=this.instanceMatrix.toJSON(),this.instanceColor!==null&&(i.instanceColor=this.instanceColor.toJSON()));function s(a,c){return a[c.uuid]===void 0&&(a[c.uuid]=c.toJSON(t)),c.uuid}if(this.isScene)this.background&&(this.background.isColor?i.background=this.background.toJSON():this.background.isTexture&&(i.background=this.background.toJSON(t).uuid)),this.environment&&this.environment.isTexture&&this.environment.isRenderTargetTexture!==!0&&(i.environment=this.environment.toJSON(t).uuid);else if(this.isMesh||this.isLine||this.isPoints){i.geometry=s(t.geometries,this.geometry);let a=this.geometry.parameters;if(a!==void 0&&a.shapes!==void 0){let c=a.shapes;if(Array.isArray(c))for(let l=0,h=c.length;l0){i.children=[];for(let a=0;a0){i.animations=[];for(let a=0;a0&&(n.geometries=a),c.length>0&&(n.materials=c),l.length>0&&(n.textures=l),h.length>0&&(n.images=h),f.length>0&&(n.shapes=f),u.length>0&&(n.skeletons=u),m.length>0&&(n.animations=m),_.length>0&&(n.nodes=_)}return n.object=i,n;function o(a){let c=[];for(let l in a){let h=a[l];delete h.metadata,c.push(h)}return c}}clone(t){return new this.constructor().copy(this,t)}copy(t,e=!0){if(this.name=t.name,this.up.copy(t.up),this.position.copy(t.position),this.rotation.order=t.rotation.order,this.quaternion.copy(t.quaternion),this.scale.copy(t.scale),this.matrix.copy(t.matrix),this.matrixWorld.copy(t.matrixWorld),this.matrixAutoUpdate=t.matrixAutoUpdate,this.matrixWorldNeedsUpdate=t.matrixWorldNeedsUpdate,this.matrixWorldAutoUpdate=t.matrixWorldAutoUpdate,this.layers.mask=t.layers.mask,this.visible=t.visible,this.castShadow=t.castShadow,this.receiveShadow=t.receiveShadow,this.frustumCulled=t.frustumCulled,this.renderOrder=t.renderOrder,this.userData=JSON.parse(JSON.stringify(t.userData)),e===!0)for(let n=0;n0?i.multiplyScalar(1/Math.sqrt(s)):i.set(0,0,0)}static getBarycoord(t,e,n,i,s){Ce.subVectors(i,e),Ve.subVectors(n,e),Rs.subVectors(t,e);let o=Ce.dot(Ce),a=Ce.dot(Ve),c=Ce.dot(Rs),l=Ve.dot(Ve),h=Ve.dot(Rs),f=o*l-a*a;if(f===0)return s.set(-2,-1,-1);let u=1/f,m=(l*c-a*h)*u,_=(o*h-a*c)*u;return s.set(1-m-_,_,m)}static containsPoint(t,e,n,i){return this.getBarycoord(t,e,n,i,Ge),Ge.x>=0&&Ge.y>=0&&Ge.x+Ge.y<=1}static getUV(t,e,n,i,s,o,a,c){return this.getBarycoord(t,e,n,i,Ge),c.set(0,0),c.addScaledVector(s,Ge.x),c.addScaledVector(o,Ge.y),c.addScaledVector(a,Ge.z),c}static isFrontFacing(t,e,n,i){return Ce.subVectors(n,e),Ve.subVectors(t,e),Ce.cross(Ve).dot(i)<0}set(t,e,n){return this.a.copy(t),this.b.copy(e),this.c.copy(n),this}setFromPointsAndIndices(t,e,n,i){return this.a.copy(t[e]),this.b.copy(t[n]),this.c.copy(t[i]),this}setFromAttributeAndIndices(t,e,n,i){return this.a.fromBufferAttribute(t,e),this.b.fromBufferAttribute(t,n),this.c.fromBufferAttribute(t,i),this}clone(){return new this.constructor().copy(this)}copy(t){return this.a.copy(t.a),this.b.copy(t.b),this.c.copy(t.c),this}getArea(){return Ce.subVectors(this.c,this.b),Ve.subVectors(this.a,this.b),Ce.cross(Ve).length()*.5}getMidpoint(t){return t.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}getNormal(t){return xe.getNormal(this.a,this.b,this.c,t)}getPlane(t){return t.setFromCoplanarPoints(this.a,this.b,this.c)}getBarycoord(t,e){return xe.getBarycoord(t,this.a,this.b,this.c,e)}getUV(t,e,n,i,s){return xe.getUV(t,this.a,this.b,this.c,e,n,i,s)}containsPoint(t){return xe.containsPoint(t,this.a,this.b,this.c)}isFrontFacing(t){return xe.isFrontFacing(this.a,this.b,this.c,t)}intersectsBox(t){return t.intersectsTriangle(this)}closestPointToPoint(t,e){let n=this.a,i=this.b,s=this.c,o,a;Ln.subVectors(i,n),In.subVectors(s,n),Ls.subVectors(t,n);let c=Ln.dot(Ls),l=In.dot(Ls);if(c<=0&&l<=0)return e.copy(n);Is.subVectors(t,i);let h=Ln.dot(Is),f=In.dot(Is);if(h>=0&&f<=h)return e.copy(i);let u=c*f-h*l;if(u<=0&&c>=0&&h<=0)return o=c/(c-h),e.copy(n).addScaledVector(Ln,o);Ds.subVectors(t,s);let m=Ln.dot(Ds),_=In.dot(Ds);if(_>=0&&m<=_)return e.copy(s);let p=m*l-c*_;if(p<=0&&l>=0&&_<=0)return a=l/(l-_),e.copy(n).addScaledVector(In,a);let d=h*_-m*f;if(d<=0&&f-h>=0&&m-_>=0)return ya.subVectors(s,i),a=(f-h)/(f-h+(m-_)),e.copy(i).addScaledVector(ya,a);let v=1/(d+p+u);return o=p*v,a=u*v,e.copy(n).addScaledVector(Ln,o).addScaledVector(In,a)}equals(t){return t.a.equals(this.a)&&t.b.equals(this.b)&&t.c.equals(this.c)}},Cl=0,Jn=class extends sn{constructor(){super(),this.isMaterial=!0,Object.defineProperty(this,"id",{value:Cl++}),this.uuid=jn(),this.name="",this.type="Material",this.blending=Gn,this.side=nn,this.vertexColors=!1,this.opacity=1,this.transparent=!1,this.blendSrc=Ha,this.blendDst=Wa,this.blendEquation=Bn,this.blendSrcAlpha=null,this.blendDstAlpha=null,this.blendEquationAlpha=null,this.depthFunc=Gs,this.depthTest=!0,this.depthWrite=!0,this.stencilWriteMask=255,this.stencilFunc=rl,this.stencilRef=0,this.stencilFuncMask=255,this.stencilFail=xs,this.stencilZFail=xs,this.stencilZPass=xs,this.stencilWrite=!1,this.clippingPlanes=null,this.clipIntersection=!1,this.clipShadows=!1,this.shadowSide=null,this.colorWrite=!0,this.precision=null,this.polygonOffset=!1,this.polygonOffsetFactor=0,this.polygonOffsetUnits=0,this.dithering=!1,this.alphaToCoverage=!1,this.premultipliedAlpha=!1,this.forceSinglePass=!1,this.visible=!0,this.toneMapped=!0,this.userData={},this.version=0,this._alphaTest=0}get alphaTest(){return this._alphaTest}set alphaTest(t){this._alphaTest>0!=t>0&&this.version++,this._alphaTest=t}onBuild(){}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(t){if(t!==void 0)for(let e in t){let n=t[e];if(n===void 0){console.warn("THREE.Material: \'"+e+"\' parameter is undefined.");continue}let i=this[e];if(i===void 0){console.warn("THREE."+this.type+": \'"+e+"\' is not a property of this material.");continue}i&&i.isColor?i.set(n):i&&i.isVector3&&n&&n.isVector3?i.copy(n):this[e]=n}}toJSON(t){let e=t===void 0||typeof t=="string";e&&(t={textures:{},images:{}});let n={metadata:{version:4.5,type:"Material",generator:"Material.toJSON"}};n.uuid=this.uuid,n.type=this.type,this.name!==""&&(n.name=this.name),this.color&&this.color.isColor&&(n.color=this.color.getHex()),this.roughness!==void 0&&(n.roughness=this.roughness),this.metalness!==void 0&&(n.metalness=this.metalness),this.sheen!==void 0&&(n.sheen=this.sheen),this.sheenColor&&this.sheenColor.isColor&&(n.sheenColor=this.sheenColor.getHex()),this.sheenRoughness!==void 0&&(n.sheenRoughness=this.sheenRoughness),this.emissive&&this.emissive.isColor&&(n.emissive=this.emissive.getHex()),this.emissiveIntensity&&this.emissiveIntensity!==1&&(n.emissiveIntensity=this.emissiveIntensity),this.specular&&this.specular.isColor&&(n.specular=this.specular.getHex()),this.specularIntensity!==void 0&&(n.specularIntensity=this.specularIntensity),this.specularColor&&this.specularColor.isColor&&(n.specularColor=this.specularColor.getHex()),this.shininess!==void 0&&(n.shininess=this.shininess),this.clearcoat!==void 0&&(n.clearcoat=this.clearcoat),this.clearcoatRoughness!==void 0&&(n.clearcoatRoughness=this.clearcoatRoughness),this.clearcoatMap&&this.clearcoatMap.isTexture&&(n.clearcoatMap=this.clearcoatMap.toJSON(t).uuid),this.clearcoatRoughnessMap&&this.clearcoatRoughnessMap.isTexture&&(n.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(t).uuid),this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture&&(n.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(t).uuid,n.clearcoatNormalScale=this.clearcoatNormalScale.toArray()),this.iridescence!==void 0&&(n.iridescence=this.iridescence),this.iridescenceIOR!==void 0&&(n.iridescenceIOR=this.iridescenceIOR),this.iridescenceThicknessRange!==void 0&&(n.iridescenceThicknessRange=this.iridescenceThicknessRange),this.iridescenceMap&&this.iridescenceMap.isTexture&&(n.iridescenceMap=this.iridescenceMap.toJSON(t).uuid),this.iridescenceThicknessMap&&this.iridescenceThicknessMap.isTexture&&(n.iridescenceThicknessMap=this.iridescenceThicknessMap.toJSON(t).uuid),this.map&&this.map.isTexture&&(n.map=this.map.toJSON(t).uuid),this.matcap&&this.matcap.isTexture&&(n.matcap=this.matcap.toJSON(t).uuid),this.alphaMap&&this.alphaMap.isTexture&&(n.alphaMap=this.alphaMap.toJSON(t).uuid),this.lightMap&&this.lightMap.isTexture&&(n.lightMap=this.lightMap.toJSON(t).uuid,n.lightMapIntensity=this.lightMapIntensity),this.aoMap&&this.aoMap.isTexture&&(n.aoMap=this.aoMap.toJSON(t).uuid,n.aoMapIntensity=this.aoMapIntensity),this.bumpMap&&this.bumpMap.isTexture&&(n.bumpMap=this.bumpMap.toJSON(t).uuid,n.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(n.normalMap=this.normalMap.toJSON(t).uuid,n.normalMapType=this.normalMapType,n.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(n.displacementMap=this.displacementMap.toJSON(t).uuid,n.displacementScale=this.displacementScale,n.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(n.roughnessMap=this.roughnessMap.toJSON(t).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(n.metalnessMap=this.metalnessMap.toJSON(t).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(n.emissiveMap=this.emissiveMap.toJSON(t).uuid),this.specularMap&&this.specularMap.isTexture&&(n.specularMap=this.specularMap.toJSON(t).uuid),this.specularIntensityMap&&this.specularIntensityMap.isTexture&&(n.specularIntensityMap=this.specularIntensityMap.toJSON(t).uuid),this.specularColorMap&&this.specularColorMap.isTexture&&(n.specularColorMap=this.specularColorMap.toJSON(t).uuid),this.envMap&&this.envMap.isTexture&&(n.envMap=this.envMap.toJSON(t).uuid,this.combine!==void 0&&(n.combine=this.combine)),this.envMapIntensity!==void 0&&(n.envMapIntensity=this.envMapIntensity),this.reflectivity!==void 0&&(n.reflectivity=this.reflectivity),this.refractionRatio!==void 0&&(n.refractionRatio=this.refractionRatio),this.gradientMap&&this.gradientMap.isTexture&&(n.gradientMap=this.gradientMap.toJSON(t).uuid),this.transmission!==void 0&&(n.transmission=this.transmission),this.transmissionMap&&this.transmissionMap.isTexture&&(n.transmissionMap=this.transmissionMap.toJSON(t).uuid),this.thickness!==void 0&&(n.thickness=this.thickness),this.thicknessMap&&this.thicknessMap.isTexture&&(n.thicknessMap=this.thicknessMap.toJSON(t).uuid),this.attenuationDistance!==void 0&&this.attenuationDistance!==1/0&&(n.attenuationDistance=this.attenuationDistance),this.attenuationColor!==void 0&&(n.attenuationColor=this.attenuationColor.getHex()),this.size!==void 0&&(n.size=this.size),this.shadowSide!==null&&(n.shadowSide=this.shadowSide),this.sizeAttenuation!==void 0&&(n.sizeAttenuation=this.sizeAttenuation),this.blending!==Gn&&(n.blending=this.blending),this.side!==nn&&(n.side=this.side),this.vertexColors&&(n.vertexColors=!0),this.opacity<1&&(n.opacity=this.opacity),this.transparent===!0&&(n.transparent=this.transparent),n.depthFunc=this.depthFunc,n.depthTest=this.depthTest,n.depthWrite=this.depthWrite,n.colorWrite=this.colorWrite,n.stencilWrite=this.stencilWrite,n.stencilWriteMask=this.stencilWriteMask,n.stencilFunc=this.stencilFunc,n.stencilRef=this.stencilRef,n.stencilFuncMask=this.stencilFuncMask,n.stencilFail=this.stencilFail,n.stencilZFail=this.stencilZFail,n.stencilZPass=this.stencilZPass,this.rotation!==void 0&&this.rotation!==0&&(n.rotation=this.rotation),this.polygonOffset===!0&&(n.polygonOffset=!0),this.polygonOffsetFactor!==0&&(n.polygonOffsetFactor=this.polygonOffsetFactor),this.polygonOffsetUnits!==0&&(n.polygonOffsetUnits=this.polygonOffsetUnits),this.linewidth!==void 0&&this.linewidth!==1&&(n.linewidth=this.linewidth),this.dashSize!==void 0&&(n.dashSize=this.dashSize),this.gapSize!==void 0&&(n.gapSize=this.gapSize),this.scale!==void 0&&(n.scale=this.scale),this.dithering===!0&&(n.dithering=!0),this.alphaTest>0&&(n.alphaTest=this.alphaTest),this.alphaToCoverage===!0&&(n.alphaToCoverage=this.alphaToCoverage),this.premultipliedAlpha===!0&&(n.premultipliedAlpha=this.premultipliedAlpha),this.forceSinglePass===!0&&(n.forceSinglePass=this.forceSinglePass),this.wireframe===!0&&(n.wireframe=this.wireframe),this.wireframeLinewidth>1&&(n.wireframeLinewidth=this.wireframeLinewidth),this.wireframeLinecap!=="round"&&(n.wireframeLinecap=this.wireframeLinecap),this.wireframeLinejoin!=="round"&&(n.wireframeLinejoin=this.wireframeLinejoin),this.flatShading===!0&&(n.flatShading=this.flatShading),this.visible===!1&&(n.visible=!1),this.toneMapped===!1&&(n.toneMapped=!1),this.fog===!1&&(n.fog=!1),Object.keys(this.userData).length>0&&(n.userData=this.userData);function i(s){let o=[];for(let a in s){let c=s[a];delete c.metadata,o.push(c)}return o}if(e){let s=i(t.textures),o=i(t.images);s.length>0&&(n.textures=s),o.length>0&&(n.images=o)}return n}clone(){return new this.constructor().copy(this)}copy(t){this.name=t.name,this.blending=t.blending,this.side=t.side,this.vertexColors=t.vertexColors,this.opacity=t.opacity,this.transparent=t.transparent,this.blendSrc=t.blendSrc,this.blendDst=t.blendDst,this.blendEquation=t.blendEquation,this.blendSrcAlpha=t.blendSrcAlpha,this.blendDstAlpha=t.blendDstAlpha,this.blendEquationAlpha=t.blendEquationAlpha,this.depthFunc=t.depthFunc,this.depthTest=t.depthTest,this.depthWrite=t.depthWrite,this.stencilWriteMask=t.stencilWriteMask,this.stencilFunc=t.stencilFunc,this.stencilRef=t.stencilRef,this.stencilFuncMask=t.stencilFuncMask,this.stencilFail=t.stencilFail,this.stencilZFail=t.stencilZFail,this.stencilZPass=t.stencilZPass,this.stencilWrite=t.stencilWrite;let e=t.clippingPlanes,n=null;if(e!==null){let i=e.length;n=new Array(i);for(let s=0;s!==i;++s)n[s]=e[s].clone()}return this.clippingPlanes=n,this.clipIntersection=t.clipIntersection,this.clipShadows=t.clipShadows,this.shadowSide=t.shadowSide,this.colorWrite=t.colorWrite,this.precision=t.precision,this.polygonOffset=t.polygonOffset,this.polygonOffsetFactor=t.polygonOffsetFactor,this.polygonOffsetUnits=t.polygonOffsetUnits,this.dithering=t.dithering,this.alphaTest=t.alphaTest,this.alphaToCoverage=t.alphaToCoverage,this.premultipliedAlpha=t.premultipliedAlpha,this.forceSinglePass=t.forceSinglePass,this.visible=t.visible,this.toneMapped=t.toneMapped,this.userData=JSON.parse(JSON.stringify(t.userData)),this}dispose(){this.dispatchEvent({type:"dispose"})}set needsUpdate(t){t===!0&&this.version++}},Ji=class extends Jn{constructor(t){super(),this.isMeshBasicMaterial=!0,this.type="MeshBasicMaterial",this.color=new Ot(16777215),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.combine=Xa,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(t)}copy(t){return super.copy(t),this.color.copy(t.color),this.map=t.map,this.lightMap=t.lightMap,this.lightMapIntensity=t.lightMapIntensity,this.aoMap=t.aoMap,this.aoMapIntensity=t.aoMapIntensity,this.specularMap=t.specularMap,this.alphaMap=t.alphaMap,this.envMap=t.envMap,this.combine=t.combine,this.reflectivity=t.reflectivity,this.refractionRatio=t.refractionRatio,this.wireframe=t.wireframe,this.wireframeLinewidth=t.wireframeLinewidth,this.wireframeLinecap=t.wireframeLinecap,this.wireframeLinejoin=t.wireframeLinejoin,this.fog=t.fog,this}},Gt=new N,Ci=new Nt,ce=class{constructor(t,e,n=!1){if(Array.isArray(t))throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.isBufferAttribute=!0,this.name="",this.array=t,this.itemSize=e,this.count=t!==void 0?t.length/e:0,this.normalized=n,this.usage=la,this.updateRange={offset:0,count:-1},this.version=0}onUploadCallback(){}set needsUpdate(t){t===!0&&this.version++}setUsage(t){return this.usage=t,this}copy(t){return this.name=t.name,this.array=new t.array.constructor(t.array),this.itemSize=t.itemSize,this.count=t.count,this.normalized=t.normalized,this.usage=t.usage,this}copyAt(t,e,n){t*=this.itemSize,n*=e.itemSize;for(let i=0,s=this.itemSize;i0&&(t.userData=this.userData),this.parameters!==void 0){let c=this.parameters;for(let l in c)c[l]!==void 0&&(t[l]=c[l]);return t}t.data={attributes:{}};let e=this.index;e!==null&&(t.data.index={type:e.array.constructor.name,array:Array.prototype.slice.call(e.array)});let n=this.attributes;for(let c in n){let l=n[c];t.data.attributes[c]=l.toJSON(t.data)}let i={},s=!1;for(let c in this.morphAttributes){let l=this.morphAttributes[c],h=[];for(let f=0,u=l.length;f0&&(i[c]=h,s=!0)}s&&(t.data.morphAttributes=i,t.data.morphTargetsRelative=this.morphTargetsRelative);let o=this.groups;o.length>0&&(t.data.groups=JSON.parse(JSON.stringify(o)));let a=this.boundingSphere;return a!==null&&(t.data.boundingSphere={center:a.center.toArray(),radius:a.radius}),t}clone(){return new this.constructor().copy(this)}copy(t){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;let e={};this.name=t.name;let n=t.index;n!==null&&this.setIndex(n.clone(e));let i=t.attributes;for(let l in i){let h=i[l];this.setAttribute(l,h.clone(e))}let s=t.morphAttributes;for(let l in s){let h=[],f=s[l];for(let u=0,m=f.length;u0){let i=e[n[0]];if(i!==void 0){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let s=0,o=i.length;se.far?null:{distance:l,point:Di.clone(),object:r}}function Ni(r,t,e,n,i,s,o,a,c){r.getVertexPosition(o,ri),r.getVertexPosition(a,ai),r.getVertexPosition(c,oi);let l=Rl(r,t,e,n,ri,ai,oi,Os);if(l){i&&(Ri.fromBufferAttribute(i,o),Li.fromBufferAttribute(i,a),Ii.fromBufferAttribute(i,c),l.uv=xe.getUV(Os,ri,ai,oi,Ri,Li,Ii,new Nt)),s&&(Ri.fromBufferAttribute(s,o),Li.fromBufferAttribute(s,a),Ii.fromBufferAttribute(s,c),l.uv2=xe.getUV(Os,ri,ai,oi,Ri,Li,Ii,new Nt));let h={a:o,b:a,c,normal:new N,materialIndex:0};xe.getNormal(ri,ai,oi,h.normal),l.face=h}return l}var bn=class extends Ye{constructor(t=1,e=1,n=1,i=1,s=1,o=1){super(),this.type="BoxGeometry",this.parameters={width:t,height:e,depth:n,widthSegments:i,heightSegments:s,depthSegments:o};let a=this;i=Math.floor(i),s=Math.floor(s),o=Math.floor(o);let c=[],l=[],h=[],f=[],u=0,m=0;_("z","y","x",-1,-1,n,e,t,o,s,0),_("z","y","x",1,-1,n,e,-t,o,s,1),_("x","z","y",1,1,t,n,e,i,o,2),_("x","z","y",1,-1,t,n,-e,i,o,3),_("x","y","z",1,-1,t,e,n,i,s,4),_("x","y","z",-1,-1,t,e,-n,i,s,5),this.setIndex(c),this.setAttribute("position",new Xe(l,3)),this.setAttribute("normal",new Xe(h,3)),this.setAttribute("uv",new Xe(f,2));function _(p,d,v,T,b,M,A,C,I,x,S){let L=M/I,X=A/x,q=M/2,z=A/2,R=C/2,G=I+1,Y=x+1,j=0,W=0,Q=new N;for(let Z=0;Z0?1:-1,h.push(Q.x,Q.y,Q.z),f.push(F/I),f.push(1-Z/x),j+=1}}for(let Z=0;Z0&&(e.defines=this.defines),e.vertexShader=this.vertexShader,e.fragmentShader=this.fragmentShader;let n={};for(let i in this.extensions)this.extensions[i]===!0&&(n[i]=!0);return Object.keys(n).length>0&&(e.extensions=n),e}},ji=class extends de{constructor(){super(),this.isCamera=!0,this.type="Camera",this.matrixWorldInverse=new qt,this.projectionMatrix=new qt,this.projectionMatrixInverse=new qt}copy(t,e){return super.copy(t,e),this.matrixWorldInverse.copy(t.matrixWorldInverse),this.projectionMatrix.copy(t.projectionMatrix),this.projectionMatrixInverse.copy(t.projectionMatrixInverse),this}getWorldDirection(t){this.updateWorldMatrix(!0,!1);let e=this.matrixWorld.elements;return t.set(-e[8],-e[9],-e[10]).normalize()}updateMatrixWorld(t){super.updateMatrixWorld(t),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(t,e){super.updateWorldMatrix(t,e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}clone(){return new this.constructor().copy(this)}},_e=class extends ji{constructor(t=50,e=1,n=.1,i=2e3){super(),this.isPerspectiveCamera=!0,this.type="PerspectiveCamera",this.fov=t,this.zoom=1,this.near=n,this.far=i,this.focus=10,this.aspect=e,this.view=null,this.filmGauge=35,this.filmOffset=0,this.updateProjectionMatrix()}copy(t,e){return super.copy(t,e),this.fov=t.fov,this.zoom=t.zoom,this.near=t.near,this.far=t.far,this.focus=t.focus,this.aspect=t.aspect,this.view=t.view===null?null:Object.assign({},t.view),this.filmGauge=t.filmGauge,this.filmOffset=t.filmOffset,this}setFocalLength(t){let e=.5*this.getFilmHeight()/t;this.fov=Gi*2*Math.atan(e),this.updateProjectionMatrix()}getFocalLength(){let t=Math.tan(ui*.5*this.fov);return .5*this.getFilmHeight()/t}getEffectiveFOV(){return Gi*2*Math.atan(Math.tan(ui*.5*this.fov)/this.zoom)}getFilmWidth(){return this.filmGauge*Math.min(this.aspect,1)}getFilmHeight(){return this.filmGauge/Math.max(this.aspect,1)}setViewOffset(t,e,n,i,s,o){this.aspect=t/e,this.view===null&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=t,this.view.fullHeight=e,this.view.offsetX=n,this.view.offsetY=i,this.view.width=s,this.view.height=o,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){let t=this.near,e=t*Math.tan(ui*.5*this.fov)/this.zoom,n=2*e,i=this.aspect*n,s=-.5*i,o=this.view;if(this.view!==null&&this.view.enabled){let c=o.fullWidth,l=o.fullHeight;s+=o.offsetX*i/c,e-=o.offsetY*n/l,i*=o.width/c,n*=o.height/l}let a=this.filmOffset;a!==0&&(s+=t*a/this.getFilmWidth()),this.projectionMatrix.makePerspective(s,s+i,e,e-n,t,this.far),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(t){let e=super.toJSON(t);return e.object.fov=this.fov,e.object.zoom=this.zoom,e.object.near=this.near,e.object.far=this.far,e.object.focus=this.focus,e.object.aspect=this.aspect,this.view!==null&&(e.object.view=Object.assign({},this.view)),e.object.filmGauge=this.filmGauge,e.object.filmOffset=this.filmOffset,e}},Fn=-90,zn=1,Ks=class extends de{constructor(t,e,n){super(),this.type="CubeCamera",this.renderTarget=n;let i=new _e(Fn,zn,t,e);i.layers=this.layers,i.up.set(0,1,0),i.lookAt(1,0,0),this.add(i);let s=new _e(Fn,zn,t,e);s.layers=this.layers,s.up.set(0,1,0),s.lookAt(-1,0,0),this.add(s);let o=new _e(Fn,zn,t,e);o.layers=this.layers,o.up.set(0,0,-1),o.lookAt(0,1,0),this.add(o);let a=new _e(Fn,zn,t,e);a.layers=this.layers,a.up.set(0,0,1),a.lookAt(0,-1,0),this.add(a);let c=new _e(Fn,zn,t,e);c.layers=this.layers,c.up.set(0,1,0),c.lookAt(0,0,1),this.add(c);let l=new _e(Fn,zn,t,e);l.layers=this.layers,l.up.set(0,1,0),l.lookAt(0,0,-1),this.add(l)}update(t,e){this.parent===null&&this.updateMatrixWorld();let n=this.renderTarget,[i,s,o,a,c,l]=this.children,h=t.getRenderTarget(),f=t.toneMapping,u=t.xr.enabled;t.toneMapping=We,t.xr.enabled=!1;let m=n.texture.generateMipmaps;n.texture.generateMipmaps=!1,t.setRenderTarget(n,0),t.render(e,i),t.setRenderTarget(n,1),t.render(e,s),t.setRenderTarget(n,2),t.render(e,o),t.setRenderTarget(n,3),t.render(e,a),t.setRenderTarget(n,4),t.render(e,c),n.texture.generateMipmaps=m,t.setRenderTarget(n,5),t.render(e,l),t.setRenderTarget(h),t.toneMapping=f,t.xr.enabled=u,n.texture.needsPMREMUpdate=!0}},Qi=class extends le{constructor(t,e,n,i,s,o,a,c,l,h){t=t!==void 0?t:[],e=e!==void 0?e:Xn,super(t,e,n,i,s,o,a,c,l,h),this.isCubeTexture=!0,this.flipY=!1}get images(){return this.image}set images(t){this.image=t}},js=class extends qe{constructor(t=1,e={}){super(t,t,e),this.isWebGLCubeRenderTarget=!0;let n={width:t,height:t,depth:1},i=[n,n,n,n,n,n];this.texture=new Qi(i,e.mapping,e.wrapS,e.wrapT,e.magFilter,e.minFilter,e.format,e.type,e.anisotropy,e.encoding),this.texture.isRenderTargetTexture=!0,this.texture.generateMipmaps=e.generateMipmaps!==void 0?e.generateMipmaps:!1,this.texture.minFilter=e.minFilter!==void 0?e.minFilter:Se}fromEquirectangularTexture(t,e){this.texture.type=e.type,this.texture.encoding=e.encoding,this.texture.generateMipmaps=e.generateMipmaps,this.texture.minFilter=e.minFilter,this.texture.magFilter=e.magFilter;let n={uniforms:{tEquirect:{value:null}},vertexShader:`\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\tvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\n\t\t\t\t\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n\n\t\t\t\t}\n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvWorldDirection = transformDirection( position, modelMatrix );\n\n\t\t\t\t\t#include \n\t\t\t\t\t#include \n\n\t\t\t\t}\n\t\t\t`,fragmentShader:`\n\n\t\t\t\tuniform sampler2D tEquirect;\n\n\t\t\t\tvarying vec3 vWorldDirection;\n\n\t\t\t\t#include \n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tvec3 direction = normalize( vWorldDirection );\n\n\t\t\t\t\tvec2 sampleUV = equirectUv( direction );\n\n\t\t\t\t\tgl_FragColor = texture2D( tEquirect, sampleUV );\n\n\t\t\t\t}\n\t\t\t`},i=new bn(5,5,5),s=new Ze({name:"CubemapFromEquirect",uniforms:$n(n.uniforms),vertexShader:n.vertexShader,fragmentShader:n.fragmentShader,side:ye,blending:en});s.uniforms.tEquirect.value=e;let o=new Ne(i,s),a=e.minFilter;return e.minFilter===pi&&(e.minFilter=Se),new Ks(1,10,this).update(t,o),e.minFilter=a,o.geometry.dispose(),o.material.dispose(),this}clear(t,e,n,i){let s=t.getRenderTarget();for(let o=0;o<6;o++)t.setRenderTarget(this,o),t.clear(e,n,i);t.setRenderTarget(s)}},Us=new N,Fl=new N,zl=new oe,He=class{constructor(t=new N(1,0,0),e=0){this.isPlane=!0,this.normal=t,this.constant=e}set(t,e){return this.normal.copy(t),this.constant=e,this}setComponents(t,e,n,i){return this.normal.set(t,e,n),this.constant=i,this}setFromNormalAndCoplanarPoint(t,e){return this.normal.copy(t),this.constant=-e.dot(this.normal),this}setFromCoplanarPoints(t,e,n){let i=Us.subVectors(n,e).cross(Fl.subVectors(t,e)).normalize();return this.setFromNormalAndCoplanarPoint(i,t),this}copy(t){return this.normal.copy(t.normal),this.constant=t.constant,this}normalize(){let t=1/this.normal.length();return this.normal.multiplyScalar(t),this.constant*=t,this}negate(){return this.constant*=-1,this.normal.negate(),this}distanceToPoint(t){return this.normal.dot(t)+this.constant}distanceToSphere(t){return this.distanceToPoint(t.center)-t.radius}projectPoint(t,e){return e.copy(this.normal).multiplyScalar(-this.distanceToPoint(t)).add(t)}intersectLine(t,e){let n=t.delta(Us),i=this.normal.dot(n);if(i===0)return this.distanceToPoint(t.start)===0?e.copy(t.start):null;let s=-(t.start.dot(this.normal)+this.constant)/i;return s<0||s>1?null:e.copy(n).multiplyScalar(s).add(t.start)}intersectsLine(t){let e=this.distanceToPoint(t.start),n=this.distanceToPoint(t.end);return e<0&&n>0||n<0&&e>0}intersectsBox(t){return t.intersectsPlane(this)}intersectsSphere(t){return t.intersectsPlane(this)}coplanarPoint(t){return t.copy(this.normal).multiplyScalar(-this.constant)}applyMatrix4(t,e){let n=e||zl.getNormalMatrix(t),i=this.coplanarPoint(Us).applyMatrix4(t),s=this.normal.applyMatrix3(n).normalize();return this.constant=-i.dot(s),this}translate(t){return this.constant-=t.dot(this.normal),this}equals(t){return t.normal.equals(this.normal)&&t.constant===this.constant}clone(){return new this.constructor().copy(this)}},On=new _i,Fi=new N,ts=class{constructor(t=new He,e=new He,n=new He,i=new He,s=new He,o=new He){this.planes=[t,e,n,i,s,o]}set(t,e,n,i,s,o){let a=this.planes;return a[0].copy(t),a[1].copy(e),a[2].copy(n),a[3].copy(i),a[4].copy(s),a[5].copy(o),this}copy(t){let e=this.planes;for(let n=0;n<6;n++)e[n].copy(t.planes[n]);return this}setFromProjectionMatrix(t){let e=this.planes,n=t.elements,i=n[0],s=n[1],o=n[2],a=n[3],c=n[4],l=n[5],h=n[6],f=n[7],u=n[8],m=n[9],_=n[10],p=n[11],d=n[12],v=n[13],T=n[14],b=n[15];return e[0].setComponents(a-i,f-c,p-u,b-d).normalize(),e[1].setComponents(a+i,f+c,p+u,b+d).normalize(),e[2].setComponents(a+s,f+l,p+m,b+v).normalize(),e[3].setComponents(a-s,f-l,p-m,b-v).normalize(),e[4].setComponents(a-o,f-h,p-_,b-T).normalize(),e[5].setComponents(a+o,f+h,p+_,b+T).normalize(),this}intersectsObject(t){let e=t.geometry;return e.boundingSphere===null&&e.computeBoundingSphere(),On.copy(e.boundingSphere).applyMatrix4(t.matrixWorld),this.intersectsSphere(On)}intersectsSprite(t){return On.center.set(0,0,0),On.radius=.7071067811865476,On.applyMatrix4(t.matrixWorld),this.intersectsSphere(On)}intersectsSphere(t){let e=this.planes,n=t.center,i=-t.radius;for(let s=0;s<6;s++)if(e[s].distanceToPoint(n)0?t.max.x:t.min.x,Fi.y=i.normal.y>0?t.max.y:t.min.y,Fi.z=i.normal.z>0?t.max.z:t.min.z,i.distanceToPoint(Fi)<0)return!1}return!0}containsPoint(t){let e=this.planes;for(let n=0;n<6;n++)if(e[n].distanceToPoint(t)<0)return!1;return!0}clone(){return new this.constructor().copy(this)}};function ja(){let r=null,t=!1,e=null,n=null;function i(s,o){e(s,o),n=r.requestAnimationFrame(i)}return{start:function(){t!==!0&&e!==null&&(n=r.requestAnimationFrame(i),t=!0)},stop:function(){r.cancelAnimationFrame(n),t=!1},setAnimationLoop:function(s){e=s},setContext:function(s){r=s}}}function Ol(r,t){let e=t.isWebGL2,n=new WeakMap;function i(l,h){let f=l.array,u=l.usage,m=r.createBuffer();r.bindBuffer(h,m),r.bufferData(h,f,u),l.onUploadCallback();let _;if(f instanceof Float32Array)_=5126;else if(f instanceof Uint16Array)if(l.isFloat16BufferAttribute)if(e)_=5131;else throw new Error("THREE.WebGLAttributes: Usage of Float16BufferAttribute requires WebGL2.");else _=5123;else if(f instanceof Int16Array)_=5122;else if(f instanceof Uint32Array)_=5125;else if(f instanceof Int32Array)_=5124;else if(f instanceof Int8Array)_=5120;else if(f instanceof Uint8Array)_=5121;else if(f instanceof Uint8ClampedArray)_=5121;else throw new Error("THREE.WebGLAttributes: Unsupported buffer data format: "+f);return{buffer:m,type:_,bytesPerElement:f.BYTES_PER_ELEMENT,version:l.version}}function s(l,h,f){let u=h.array,m=h.updateRange;r.bindBuffer(f,l),m.count===-1?r.bufferSubData(f,0,u):(e?r.bufferSubData(f,m.offset*u.BYTES_PER_ELEMENT,u,m.offset,m.count):r.bufferSubData(f,m.offset*u.BYTES_PER_ELEMENT,u.subarray(m.offset,m.offset+m.count)),m.count=-1),h.onUploadCallback()}function o(l){return l.isInterleavedBufferAttribute&&(l=l.data),n.get(l)}function a(l){l.isInterleavedBufferAttribute&&(l=l.data);let h=n.get(l);h&&(r.deleteBuffer(h.buffer),n.delete(l))}function c(l,h){if(l.isGLBufferAttribute){let u=n.get(l);(!u||u.version 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v;\n\treturn cross( v1, v2 ) * theta_sintheta;\n}\nvec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) {\n\tvec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ];\n\tvec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ];\n\tvec3 lightNormal = cross( v1, v2 );\n\tif( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 );\n\tvec3 T1, T2;\n\tT1 = normalize( V - N * dot( V, N ) );\n\tT2 = - cross( N, T1 );\n\tmat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) );\n\tvec3 coords[ 4 ];\n\tcoords[ 0 ] = mat * ( rectCoords[ 0 ] - P );\n\tcoords[ 1 ] = mat * ( rectCoords[ 1 ] - P );\n\tcoords[ 2 ] = mat * ( rectCoords[ 2 ] - P );\n\tcoords[ 3 ] = mat * ( rectCoords[ 3 ] - P );\n\tcoords[ 0 ] = normalize( coords[ 0 ] );\n\tcoords[ 1 ] = normalize( coords[ 1 ] );\n\tcoords[ 2 ] = normalize( coords[ 2 ] );\n\tcoords[ 3 ] = normalize( coords[ 3 ] );\n\tvec3 vectorFormFactor = vec3( 0.0 );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );\n\tfloat result = LTC_ClippedSphereFormFactor( vectorFormFactor );\n\treturn vec3( result );\n}\nfloat G_BlinnPhong_Implicit( ) {\n\treturn 0.25;\n}\nfloat D_BlinnPhong( const in float shininess, const in float dotNH ) {\n\treturn RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess );\n}\nvec3 BRDF_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float shininess ) {\n\tvec3 halfDir = normalize( lightDir + viewDir );\n\tfloat dotNH = saturate( dot( normal, halfDir ) );\n\tfloat dotVH = saturate( dot( viewDir, halfDir ) );\n\tvec3 F = F_Schlick( specularColor, 1.0, dotVH );\n\tfloat G = G_BlinnPhong_Implicit( );\n\tfloat D = D_BlinnPhong( shininess, dotNH );\n\treturn F * ( G * D );\n}\n#if defined( USE_SHEEN )\nfloat D_Charlie( float roughness, float dotNH ) {\n\tfloat alpha = pow2( roughness );\n\tfloat invAlpha = 1.0 / alpha;\n\tfloat cos2h = dotNH * dotNH;\n\tfloat sin2h = max( 1.0 - cos2h, 0.0078125 );\n\treturn ( 2.0 + invAlpha ) * pow( sin2h, invAlpha * 0.5 ) / ( 2.0 * PI );\n}\nfloat V_Neubelt( float dotNV, float dotNL ) {\n\treturn saturate( 1.0 / ( 4.0 * ( dotNL + dotNV - dotNL * dotNV ) ) );\n}\nvec3 BRDF_Sheen( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, vec3 sheenColor, const in float sheenRoughness ) {\n\tvec3 halfDir = normalize( lightDir + viewDir );\n\tfloat dotNL = saturate( dot( normal, lightDir ) );\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\tfloat dotNH = saturate( dot( normal, halfDir ) );\n\tfloat D = D_Charlie( sheenRoughness, dotNH );\n\tfloat V = V_Neubelt( dotNV, dotNL );\n\treturn sheenColor * ( D * V );\n}\n#endif`,Yl=`#ifdef USE_IRIDESCENCE\n\tconst mat3 XYZ_TO_REC709 = mat3(\n\t\t 3.2404542, -0.9692660, 0.0556434,\n\t\t-1.5371385, 1.8760108, -0.2040259,\n\t\t-0.4985314, 0.0415560, 1.0572252\n\t);\n\tvec3 Fresnel0ToIor( vec3 fresnel0 ) {\n\t\tvec3 sqrtF0 = sqrt( fresnel0 );\n\t\treturn ( vec3( 1.0 ) + sqrtF0 ) / ( vec3( 1.0 ) - sqrtF0 );\n\t}\n\tvec3 IorToFresnel0( vec3 transmittedIor, float incidentIor ) {\n\t\treturn pow2( ( transmittedIor - vec3( incidentIor ) ) / ( transmittedIor + vec3( incidentIor ) ) );\n\t}\n\tfloat IorToFresnel0( float transmittedIor, float incidentIor ) {\n\t\treturn pow2( ( transmittedIor - incidentIor ) / ( transmittedIor + incidentIor ));\n\t}\n\tvec3 evalSensitivity( float OPD, vec3 shift ) {\n\t\tfloat phase = 2.0 * PI * OPD * 1.0e-9;\n\t\tvec3 val = vec3( 5.4856e-13, 4.4201e-13, 5.2481e-13 );\n\t\tvec3 pos = vec3( 1.6810e+06, 1.7953e+06, 2.2084e+06 );\n\t\tvec3 var = vec3( 4.3278e+09, 9.3046e+09, 6.6121e+09 );\n\t\tvec3 xyz = val * sqrt( 2.0 * PI * var ) * cos( pos * phase + shift ) * exp( - pow2( phase ) * var );\n\t\txyz.x += 9.7470e-14 * sqrt( 2.0 * PI * 4.5282e+09 ) * cos( 2.2399e+06 * phase + shift[ 0 ] ) * exp( - 4.5282e+09 * pow2( phase ) );\n\t\txyz /= 1.0685e-7;\n\t\tvec3 rgb = XYZ_TO_REC709 * xyz;\n\t\treturn rgb;\n\t}\n\tvec3 evalIridescence( float outsideIOR, float eta2, float cosTheta1, float thinFilmThickness, vec3 baseF0 ) {\n\t\tvec3 I;\n\t\tfloat iridescenceIOR = mix( outsideIOR, eta2, smoothstep( 0.0, 0.03, thinFilmThickness ) );\n\t\tfloat sinTheta2Sq = pow2( outsideIOR / iridescenceIOR ) * ( 1.0 - pow2( cosTheta1 ) );\n\t\tfloat cosTheta2Sq = 1.0 - sinTheta2Sq;\n\t\tif ( cosTheta2Sq < 0.0 ) {\n\t\t\t return vec3( 1.0 );\n\t\t}\n\t\tfloat cosTheta2 = sqrt( cosTheta2Sq );\n\t\tfloat R0 = IorToFresnel0( iridescenceIOR, outsideIOR );\n\t\tfloat R12 = F_Schlick( R0, 1.0, cosTheta1 );\n\t\tfloat R21 = R12;\n\t\tfloat T121 = 1.0 - R12;\n\t\tfloat phi12 = 0.0;\n\t\tif ( iridescenceIOR < outsideIOR ) phi12 = PI;\n\t\tfloat phi21 = PI - phi12;\n\t\tvec3 baseIOR = Fresnel0ToIor( clamp( baseF0, 0.0, 0.9999 ) );\t\tvec3 R1 = IorToFresnel0( baseIOR, iridescenceIOR );\n\t\tvec3 R23 = F_Schlick( R1, 1.0, cosTheta2 );\n\t\tvec3 phi23 = vec3( 0.0 );\n\t\tif ( baseIOR[ 0 ] < iridescenceIOR ) phi23[ 0 ] = PI;\n\t\tif ( baseIOR[ 1 ] < iridescenceIOR ) phi23[ 1 ] = PI;\n\t\tif ( baseIOR[ 2 ] < iridescenceIOR ) phi23[ 2 ] = PI;\n\t\tfloat OPD = 2.0 * iridescenceIOR * thinFilmThickness * cosTheta2;\n\t\tvec3 phi = vec3( phi21 ) + phi23;\n\t\tvec3 R123 = clamp( R12 * R23, 1e-5, 0.9999 );\n\t\tvec3 r123 = sqrt( R123 );\n\t\tvec3 Rs = pow2( T121 ) * R23 / ( vec3( 1.0 ) - R123 );\n\t\tvec3 C0 = R12 + Rs;\n\t\tI = C0;\n\t\tvec3 Cm = Rs - T121;\n\t\tfor ( int m = 1; m <= 2; ++ m ) {\n\t\t\tCm *= r123;\n\t\t\tvec3 Sm = 2.0 * evalSensitivity( float( m ) * OPD, float( m ) * phi );\n\t\t\tI += Cm * Sm;\n\t\t}\n\t\treturn max( I, vec3( 0.0 ) );\n\t}\n#endif`,Zl=`#ifdef USE_BUMPMAP\n\tuniform sampler2D bumpMap;\n\tuniform float bumpScale;\n\tvec2 dHdxy_fwd() {\n\t\tvec2 dSTdx = dFdx( vUv );\n\t\tvec2 dSTdy = dFdy( vUv );\n\t\tfloat Hll = bumpScale * texture2D( bumpMap, vUv ).x;\n\t\tfloat dBx = bumpScale * texture2D( bumpMap, vUv + dSTdx ).x - Hll;\n\t\tfloat dBy = bumpScale * texture2D( bumpMap, vUv + dSTdy ).x - Hll;\n\t\treturn vec2( dBx, dBy );\n\t}\n\tvec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy, float faceDirection ) {\n\t\tvec3 vSigmaX = dFdx( surf_pos.xyz );\n\t\tvec3 vSigmaY = dFdy( surf_pos.xyz );\n\t\tvec3 vN = surf_norm;\n\t\tvec3 R1 = cross( vSigmaY, vN );\n\t\tvec3 R2 = cross( vN, vSigmaX );\n\t\tfloat fDet = dot( vSigmaX, R1 ) * faceDirection;\n\t\tvec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );\n\t\treturn normalize( abs( fDet ) * surf_norm - vGrad );\n\t}\n#endif`,Jl=`#if NUM_CLIPPING_PLANES > 0\n\tvec4 plane;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\n\t\tplane = clippingPlanes[ i ];\n\t\tif ( dot( vClipPosition, plane.xyz ) > plane.w ) discard;\n\t}\n\t#pragma unroll_loop_end\n\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\n\t\tbool clipped = true;\n\t\t#pragma unroll_loop_start\n\t\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\n\t\t\tplane = clippingPlanes[ i ];\n\t\t\tclipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped;\n\t\t}\n\t\t#pragma unroll_loop_end\n\t\tif ( clipped ) discard;\n\t#endif\n#endif`,$l=`#if NUM_CLIPPING_PLANES > 0\n\tvarying vec3 vClipPosition;\n\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\n#endif`,Kl=`#if NUM_CLIPPING_PLANES > 0\n\tvarying vec3 vClipPosition;\n#endif`,jl=`#if NUM_CLIPPING_PLANES > 0\n\tvClipPosition = - mvPosition.xyz;\n#endif`,Ql=`#if defined( USE_COLOR_ALPHA )\n\tdiffuseColor *= vColor;\n#elif defined( USE_COLOR )\n\tdiffuseColor.rgb *= vColor;\n#endif`,tc=`#if defined( USE_COLOR_ALPHA )\n\tvarying vec4 vColor;\n#elif defined( USE_COLOR )\n\tvarying vec3 vColor;\n#endif`,ec=`#if defined( USE_COLOR_ALPHA )\n\tvarying vec4 vColor;\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\n\tvarying vec3 vColor;\n#endif`,nc=`#if defined( USE_COLOR_ALPHA )\n\tvColor = vec4( 1.0 );\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\n\tvColor = vec3( 1.0 );\n#endif\n#ifdef USE_COLOR\n\tvColor *= color;\n#endif\n#ifdef USE_INSTANCING_COLOR\n\tvColor.xyz *= instanceColor.xyz;\n#endif`,ic=`#define PI 3.141592653589793\n#define PI2 6.283185307179586\n#define PI_HALF 1.5707963267948966\n#define RECIPROCAL_PI 0.3183098861837907\n#define RECIPROCAL_PI2 0.15915494309189535\n#define EPSILON 1e-6\n#ifndef saturate\n#define saturate( a ) clamp( a, 0.0, 1.0 )\n#endif\n#define whiteComplement( a ) ( 1.0 - saturate( a ) )\nfloat pow2( const in float x ) { return x*x; }\nvec3 pow2( const in vec3 x ) { return x*x; }\nfloat pow3( const in float x ) { return x*x*x; }\nfloat pow4( const in float x ) { float x2 = x*x; return x2*x2; }\nfloat max3( const in vec3 v ) { return max( max( v.x, v.y ), v.z ); }\nfloat average( const in vec3 v ) { return dot( v, vec3( 0.3333333 ) ); }\nhighp float rand( const in vec2 uv ) {\n\tconst highp float a = 12.9898, b = 78.233, c = 43758.5453;\n\thighp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );\n\treturn fract( sin( sn ) * c );\n}\n#ifdef HIGH_PRECISION\n\tfloat precisionSafeLength( vec3 v ) { return length( v ); }\n#else\n\tfloat precisionSafeLength( vec3 v ) {\n\t\tfloat maxComponent = max3( abs( v ) );\n\t\treturn length( v / maxComponent ) * maxComponent;\n\t}\n#endif\nstruct IncidentLight {\n\tvec3 color;\n\tvec3 direction;\n\tbool visible;\n};\nstruct ReflectedLight {\n\tvec3 directDiffuse;\n\tvec3 directSpecular;\n\tvec3 indirectDiffuse;\n\tvec3 indirectSpecular;\n};\nstruct GeometricContext {\n\tvec3 position;\n\tvec3 normal;\n\tvec3 viewDir;\n#ifdef USE_CLEARCOAT\n\tvec3 clearcoatNormal;\n#endif\n};\nvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n}\nvec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {\n\treturn normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\n}\nmat3 transposeMat3( const in mat3 m ) {\n\tmat3 tmp;\n\ttmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x );\n\ttmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y );\n\ttmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z );\n\treturn tmp;\n}\nfloat luminance( const in vec3 rgb ) {\n\tconst vec3 weights = vec3( 0.2126729, 0.7151522, 0.0721750 );\n\treturn dot( weights, rgb );\n}\nbool isPerspectiveMatrix( mat4 m ) {\n\treturn m[ 2 ][ 3 ] == - 1.0;\n}\nvec2 equirectUv( in vec3 dir ) {\n\tfloat u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5;\n\tfloat v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\n\treturn vec2( u, v );\n}`,sc=`#ifdef ENVMAP_TYPE_CUBE_UV\n\t#define cubeUV_minMipLevel 4.0\n\t#define cubeUV_minTileSize 16.0\n\tfloat getFace( vec3 direction ) {\n\t\tvec3 absDirection = abs( direction );\n\t\tfloat face = - 1.0;\n\t\tif ( absDirection.x > absDirection.z ) {\n\t\t\tif ( absDirection.x > absDirection.y )\n\t\t\t\tface = direction.x > 0.0 ? 0.0 : 3.0;\n\t\t\telse\n\t\t\t\tface = direction.y > 0.0 ? 1.0 : 4.0;\n\t\t} else {\n\t\t\tif ( absDirection.z > absDirection.y )\n\t\t\t\tface = direction.z > 0.0 ? 2.0 : 5.0;\n\t\t\telse\n\t\t\t\tface = direction.y > 0.0 ? 1.0 : 4.0;\n\t\t}\n\t\treturn face;\n\t}\n\tvec2 getUV( vec3 direction, float face ) {\n\t\tvec2 uv;\n\t\tif ( face == 0.0 ) {\n\t\t\tuv = vec2( direction.z, direction.y ) / abs( direction.x );\n\t\t} else if ( face == 1.0 ) {\n\t\t\tuv = vec2( - direction.x, - direction.z ) / abs( direction.y );\n\t\t} else if ( face == 2.0 ) {\n\t\t\tuv = vec2( - direction.x, direction.y ) / abs( direction.z );\n\t\t} else if ( face == 3.0 ) {\n\t\t\tuv = vec2( - direction.z, direction.y ) / abs( direction.x );\n\t\t} else if ( face == 4.0 ) {\n\t\t\tuv = vec2( - direction.x, direction.z ) / abs( direction.y );\n\t\t} else {\n\t\t\tuv = vec2( direction.x, direction.y ) / abs( direction.z );\n\t\t}\n\t\treturn 0.5 * ( uv + 1.0 );\n\t}\n\tvec3 bilinearCubeUV( sampler2D envMap, vec3 direction, float mipInt ) {\n\t\tfloat face = getFace( direction );\n\t\tfloat filterInt = max( cubeUV_minMipLevel - mipInt, 0.0 );\n\t\tmipInt = max( mipInt, cubeUV_minMipLevel );\n\t\tfloat faceSize = exp2( mipInt );\n\t\thighp vec2 uv = getUV( direction, face ) * ( faceSize - 2.0 ) + 1.0;\n\t\tif ( face > 2.0 ) {\n\t\t\tuv.y += faceSize;\n\t\t\tface -= 3.0;\n\t\t}\n\t\tuv.x += face * faceSize;\n\t\tuv.x += filterInt * 3.0 * cubeUV_minTileSize;\n\t\tuv.y += 4.0 * ( exp2( CUBEUV_MAX_MIP ) - faceSize );\n\t\tuv.x *= CUBEUV_TEXEL_WIDTH;\n\t\tuv.y *= CUBEUV_TEXEL_HEIGHT;\n\t\t#ifdef texture2DGradEXT\n\t\t\treturn texture2DGradEXT( envMap, uv, vec2( 0.0 ), vec2( 0.0 ) ).rgb;\n\t\t#else\n\t\t\treturn texture2D( envMap, uv ).rgb;\n\t\t#endif\n\t}\n\t#define cubeUV_r0 1.0\n\t#define cubeUV_v0 0.339\n\t#define cubeUV_m0 - 2.0\n\t#define cubeUV_r1 0.8\n\t#define cubeUV_v1 0.276\n\t#define cubeUV_m1 - 1.0\n\t#define cubeUV_r4 0.4\n\t#define cubeUV_v4 0.046\n\t#define cubeUV_m4 2.0\n\t#define cubeUV_r5 0.305\n\t#define cubeUV_v5 0.016\n\t#define cubeUV_m5 3.0\n\t#define cubeUV_r6 0.21\n\t#define cubeUV_v6 0.0038\n\t#define cubeUV_m6 4.0\n\tfloat roughnessToMip( float roughness ) {\n\t\tfloat mip = 0.0;\n\t\tif ( roughness >= cubeUV_r1 ) {\n\t\t\tmip = ( cubeUV_r0 - roughness ) * ( cubeUV_m1 - cubeUV_m0 ) / ( cubeUV_r0 - cubeUV_r1 ) + cubeUV_m0;\n\t\t} else if ( roughness >= cubeUV_r4 ) {\n\t\t\tmip = ( cubeUV_r1 - roughness ) * ( cubeUV_m4 - cubeUV_m1 ) / ( cubeUV_r1 - cubeUV_r4 ) + cubeUV_m1;\n\t\t} else if ( roughness >= cubeUV_r5 ) {\n\t\t\tmip = ( cubeUV_r4 - roughness ) * ( cubeUV_m5 - cubeUV_m4 ) / ( cubeUV_r4 - cubeUV_r5 ) + cubeUV_m4;\n\t\t} else if ( roughness >= cubeUV_r6 ) {\n\t\t\tmip = ( cubeUV_r5 - roughness ) * ( cubeUV_m6 - cubeUV_m5 ) / ( cubeUV_r5 - cubeUV_r6 ) + cubeUV_m5;\n\t\t} else {\n\t\t\tmip = - 2.0 * log2( 1.16 * roughness );\t\t}\n\t\treturn mip;\n\t}\n\tvec4 textureCubeUV( sampler2D envMap, vec3 sampleDir, float roughness ) {\n\t\tfloat mip = clamp( roughnessToMip( roughness ), cubeUV_m0, CUBEUV_MAX_MIP );\n\t\tfloat mipF = fract( mip );\n\t\tfloat mipInt = floor( mip );\n\t\tvec3 color0 = bilinearCubeUV( envMap, sampleDir, mipInt );\n\t\tif ( mipF == 0.0 ) {\n\t\t\treturn vec4( color0, 1.0 );\n\t\t} else {\n\t\t\tvec3 color1 = bilinearCubeUV( envMap, sampleDir, mipInt + 1.0 );\n\t\t\treturn vec4( mix( color0, color1, mipF ), 1.0 );\n\t\t}\n\t}\n#endif`,rc=`vec3 transformedNormal = objectNormal;\n#ifdef USE_INSTANCING\n\tmat3 m = mat3( instanceMatrix );\n\ttransformedNormal /= vec3( dot( m[ 0 ], m[ 0 ] ), dot( m[ 1 ], m[ 1 ] ), dot( m[ 2 ], m[ 2 ] ) );\n\ttransformedNormal = m * transformedNormal;\n#endif\ntransformedNormal = normalMatrix * transformedNormal;\n#ifdef FLIP_SIDED\n\ttransformedNormal = - transformedNormal;\n#endif\n#ifdef USE_TANGENT\n\tvec3 transformedTangent = ( modelViewMatrix * vec4( objectTangent, 0.0 ) ).xyz;\n\t#ifdef FLIP_SIDED\n\t\ttransformedTangent = - transformedTangent;\n\t#endif\n#endif`,ac=`#ifdef USE_DISPLACEMENTMAP\n\tuniform sampler2D displacementMap;\n\tuniform float displacementScale;\n\tuniform float displacementBias;\n#endif`,oc=`#ifdef USE_DISPLACEMENTMAP\n\ttransformed += normalize( objectNormal ) * ( texture2D( displacementMap, vUv ).x * displacementScale + displacementBias );\n#endif`,lc=`#ifdef USE_EMISSIVEMAP\n\tvec4 emissiveColor = texture2D( emissiveMap, vUv );\n\ttotalEmissiveRadiance *= emissiveColor.rgb;\n#endif`,cc=`#ifdef USE_EMISSIVEMAP\n\tuniform sampler2D emissiveMap;\n#endif`,hc="gl_FragColor = linearToOutputTexel( gl_FragColor );",uc=`vec4 LinearToLinear( in vec4 value ) {\n\treturn value;\n}\nvec4 LinearTosRGB( in vec4 value ) {\n\treturn vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a );\n}`,dc=`#ifdef USE_ENVMAP\n\t#ifdef ENV_WORLDPOS\n\t\tvec3 cameraToFrag;\n\t\tif ( isOrthographic ) {\n\t\t\tcameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\n\t\t} else {\n\t\t\tcameraToFrag = normalize( vWorldPosition - cameraPosition );\n\t\t}\n\t\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvec3 reflectVec = reflect( cameraToFrag, worldNormal );\n\t\t#else\n\t\t\tvec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio );\n\t\t#endif\n\t#else\n\t\tvec3 reflectVec = vReflect;\n\t#endif\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tvec4 envColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\n\t#else\n\t\tvec4 envColor = vec4( 0.0 );\n\t#endif\n\t#ifdef ENVMAP_BLENDING_MULTIPLY\n\t\toutgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );\n\t#elif defined( ENVMAP_BLENDING_MIX )\n\t\toutgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );\n\t#elif defined( ENVMAP_BLENDING_ADD )\n\t\toutgoingLight += envColor.xyz * specularStrength * reflectivity;\n\t#endif\n#endif`,fc=`#ifdef USE_ENVMAP\n\tuniform float envMapIntensity;\n\tuniform float flipEnvMap;\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tuniform samplerCube envMap;\n\t#else\n\t\tuniform sampler2D envMap;\n\t#endif\n\t\n#endif`,pc=`#ifdef USE_ENVMAP\n\tuniform float reflectivity;\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT )\n\t\t#define ENV_WORLDPOS\n\t#endif\n\t#ifdef ENV_WORLDPOS\n\t\tvarying vec3 vWorldPosition;\n\t\tuniform float refractionRatio;\n\t#else\n\t\tvarying vec3 vReflect;\n\t#endif\n#endif`,mc=`#ifdef USE_ENVMAP\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT )\n\t\t#define ENV_WORLDPOS\n\t#endif\n\t#ifdef ENV_WORLDPOS\n\t\t\n\t\tvarying vec3 vWorldPosition;\n\t#else\n\t\tvarying vec3 vReflect;\n\t\tuniform float refractionRatio;\n\t#endif\n#endif`,gc=`#ifdef USE_ENVMAP\n\t#ifdef ENV_WORLDPOS\n\t\tvWorldPosition = worldPosition.xyz;\n\t#else\n\t\tvec3 cameraToVertex;\n\t\tif ( isOrthographic ) {\n\t\t\tcameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\n\t\t} else {\n\t\t\tcameraToVertex = normalize( worldPosition.xyz - cameraPosition );\n\t\t}\n\t\tvec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvReflect = reflect( cameraToVertex, worldNormal );\n\t\t#else\n\t\t\tvReflect = refract( cameraToVertex, worldNormal, refractionRatio );\n\t\t#endif\n\t#endif\n#endif`,_c=`#ifdef USE_FOG\n\tvFogDepth = - mvPosition.z;\n#endif`,xc=`#ifdef USE_FOG\n\tvarying float vFogDepth;\n#endif`,yc=`#ifdef USE_FOG\n\t#ifdef FOG_EXP2\n\t\tfloat fogFactor = 1.0 - exp( - fogDensity * fogDensity * vFogDepth * vFogDepth );\n\t#else\n\t\tfloat fogFactor = smoothstep( fogNear, fogFar, vFogDepth );\n\t#endif\n\tgl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );\n#endif`,vc=`#ifdef USE_FOG\n\tuniform vec3 fogColor;\n\tvarying float vFogDepth;\n\t#ifdef FOG_EXP2\n\t\tuniform float fogDensity;\n\t#else\n\t\tuniform float fogNear;\n\t\tuniform float fogFar;\n\t#endif\n#endif`,Mc=`#ifdef USE_GRADIENTMAP\n\tuniform sampler2D gradientMap;\n#endif\nvec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {\n\tfloat dotNL = dot( normal, lightDirection );\n\tvec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );\n\t#ifdef USE_GRADIENTMAP\n\t\treturn vec3( texture2D( gradientMap, coord ).r );\n\t#else\n\t\tvec2 fw = fwidth( coord ) * 0.5;\n\t\treturn mix( vec3( 0.7 ), vec3( 1.0 ), smoothstep( 0.7 - fw.x, 0.7 + fw.x, coord.x ) );\n\t#endif\n}`,bc=`#ifdef USE_LIGHTMAP\n\tvec4 lightMapTexel = texture2D( lightMap, vUv2 );\n\tvec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;\n\treflectedLight.indirectDiffuse += lightMapIrradiance;\n#endif`,wc=`#ifdef USE_LIGHTMAP\n\tuniform sampler2D lightMap;\n\tuniform float lightMapIntensity;\n#endif`,Sc=`LambertMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;\nmaterial.specularStrength = specularStrength;`,Tc=`varying vec3 vViewPosition;\nstruct LambertMaterial {\n\tvec3 diffuseColor;\n\tfloat specularStrength;\n};\nvoid RE_Direct_Lambert( const in IncidentLight directLight, const in GeometricContext geometry, const in LambertMaterial material, inout ReflectedLight reflectedLight ) {\n\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\n\tvec3 irradiance = dotNL * directLight.color;\n\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectDiffuse_Lambert( const in vec3 irradiance, const in GeometricContext geometry, const in LambertMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\n#define RE_Direct\t\t\t\tRE_Direct_Lambert\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_Lambert`,Ac=`uniform bool receiveShadow;\nuniform vec3 ambientLightColor;\nuniform vec3 lightProbe[ 9 ];\nvec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {\n\tfloat x = normal.x, y = normal.y, z = normal.z;\n\tvec3 result = shCoefficients[ 0 ] * 0.886227;\n\tresult += shCoefficients[ 1 ] * 2.0 * 0.511664 * y;\n\tresult += shCoefficients[ 2 ] * 2.0 * 0.511664 * z;\n\tresult += shCoefficients[ 3 ] * 2.0 * 0.511664 * x;\n\tresult += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y;\n\tresult += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z;\n\tresult += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 );\n\tresult += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z;\n\tresult += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y );\n\treturn result;\n}\nvec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in vec3 normal ) {\n\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n\tvec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe );\n\treturn irradiance;\n}\nvec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {\n\tvec3 irradiance = ambientLightColor;\n\treturn irradiance;\n}\nfloat getDistanceAttenuation( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {\n\t#if defined ( PHYSICALLY_CORRECT_LIGHTS )\n\t\tfloat distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );\n\t\tif ( cutoffDistance > 0.0 ) {\n\t\t\tdistanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\n\t\t}\n\t\treturn distanceFalloff;\n\t#else\n\t\tif ( cutoffDistance > 0.0 && decayExponent > 0.0 ) {\n\t\t\treturn pow( saturate( - lightDistance / cutoffDistance + 1.0 ), decayExponent );\n\t\t}\n\t\treturn 1.0;\n\t#endif\n}\nfloat getSpotAttenuation( const in float coneCosine, const in float penumbraCosine, const in float angleCosine ) {\n\treturn smoothstep( coneCosine, penumbraCosine, angleCosine );\n}\n#if NUM_DIR_LIGHTS > 0\n\tstruct DirectionalLight {\n\t\tvec3 direction;\n\t\tvec3 color;\n\t};\n\tuniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];\n\tvoid getDirectionalLightInfo( const in DirectionalLight directionalLight, const in GeometricContext geometry, out IncidentLight light ) {\n\t\tlight.color = directionalLight.color;\n\t\tlight.direction = directionalLight.direction;\n\t\tlight.visible = true;\n\t}\n#endif\n#if NUM_POINT_LIGHTS > 0\n\tstruct PointLight {\n\t\tvec3 position;\n\t\tvec3 color;\n\t\tfloat distance;\n\t\tfloat decay;\n\t};\n\tuniform PointLight pointLights[ NUM_POINT_LIGHTS ];\n\tvoid getPointLightInfo( const in PointLight pointLight, const in GeometricContext geometry, out IncidentLight light ) {\n\t\tvec3 lVector = pointLight.position - geometry.position;\n\t\tlight.direction = normalize( lVector );\n\t\tfloat lightDistance = length( lVector );\n\t\tlight.color = pointLight.color;\n\t\tlight.color *= getDistanceAttenuation( lightDistance, pointLight.distance, pointLight.decay );\n\t\tlight.visible = ( light.color != vec3( 0.0 ) );\n\t}\n#endif\n#if NUM_SPOT_LIGHTS > 0\n\tstruct SpotLight {\n\t\tvec3 position;\n\t\tvec3 direction;\n\t\tvec3 color;\n\t\tfloat distance;\n\t\tfloat decay;\n\t\tfloat coneCos;\n\t\tfloat penumbraCos;\n\t};\n\tuniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];\n\tvoid getSpotLightInfo( const in SpotLight spotLight, const in GeometricContext geometry, out IncidentLight light ) {\n\t\tvec3 lVector = spotLight.position - geometry.position;\n\t\tlight.direction = normalize( lVector );\n\t\tfloat angleCos = dot( light.direction, spotLight.direction );\n\t\tfloat spotAttenuation = getSpotAttenuation( spotLight.coneCos, spotLight.penumbraCos, angleCos );\n\t\tif ( spotAttenuation > 0.0 ) {\n\t\t\tfloat lightDistance = length( lVector );\n\t\t\tlight.color = spotLight.color * spotAttenuation;\n\t\t\tlight.color *= getDistanceAttenuation( lightDistance, spotLight.distance, spotLight.decay );\n\t\t\tlight.visible = ( light.color != vec3( 0.0 ) );\n\t\t} else {\n\t\t\tlight.color = vec3( 0.0 );\n\t\t\tlight.visible = false;\n\t\t}\n\t}\n#endif\n#if NUM_RECT_AREA_LIGHTS > 0\n\tstruct RectAreaLight {\n\t\tvec3 color;\n\t\tvec3 position;\n\t\tvec3 halfWidth;\n\t\tvec3 halfHeight;\n\t};\n\tuniform sampler2D ltc_1;\tuniform sampler2D ltc_2;\n\tuniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ];\n#endif\n#if NUM_HEMI_LIGHTS > 0\n\tstruct HemisphereLight {\n\t\tvec3 direction;\n\t\tvec3 skyColor;\n\t\tvec3 groundColor;\n\t};\n\tuniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];\n\tvec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in vec3 normal ) {\n\t\tfloat dotNL = dot( normal, hemiLight.direction );\n\t\tfloat hemiDiffuseWeight = 0.5 * dotNL + 0.5;\n\t\tvec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );\n\t\treturn irradiance;\n\t}\n#endif`,Ec=`#if defined( USE_ENVMAP )\n\tvec3 getIBLIrradiance( const in vec3 normal ) {\n\t\t#if defined( ENVMAP_TYPE_CUBE_UV )\n\t\t\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n\t\t\tvec4 envMapColor = textureCubeUV( envMap, worldNormal, 1.0 );\n\t\t\treturn PI * envMapColor.rgb * envMapIntensity;\n\t\t#else\n\t\t\treturn vec3( 0.0 );\n\t\t#endif\n\t}\n\tvec3 getIBLRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness ) {\n\t\t#if defined( ENVMAP_TYPE_CUBE_UV )\n\t\t\tvec3 reflectVec = reflect( - viewDir, normal );\n\t\t\treflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );\n\t\t\treflectVec = inverseTransformDirection( reflectVec, viewMatrix );\n\t\t\tvec4 envMapColor = textureCubeUV( envMap, reflectVec, roughness );\n\t\t\treturn envMapColor.rgb * envMapIntensity;\n\t\t#else\n\t\t\treturn vec3( 0.0 );\n\t\t#endif\n\t}\n#endif`,Cc=`ToonMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;`,Pc=`varying vec3 vViewPosition;\nstruct ToonMaterial {\n\tvec3 diffuseColor;\n};\nvoid RE_Direct_Toon( const in IncidentLight directLight, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\n\tvec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color;\n\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\n#define RE_Direct\t\t\t\tRE_Direct_Toon\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_Toon`,Rc=`BlinnPhongMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;\nmaterial.specularColor = specular;\nmaterial.specularShininess = shininess;\nmaterial.specularStrength = specularStrength;`,Lc=`varying vec3 vViewPosition;\nstruct BlinnPhongMaterial {\n\tvec3 diffuseColor;\n\tvec3 specularColor;\n\tfloat specularShininess;\n\tfloat specularStrength;\n};\nvoid RE_Direct_BlinnPhong( const in IncidentLight directLight, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\n\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\n\tvec3 irradiance = dotNL * directLight.color;\n\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n\treflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularShininess ) * material.specularStrength;\n}\nvoid RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\n#define RE_Direct\t\t\t\tRE_Direct_BlinnPhong\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_BlinnPhong`,Ic=`PhysicalMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\nvec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );\nfloat geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );\nmaterial.roughness = max( roughnessFactor, 0.0525 );material.roughness += geometryRoughness;\nmaterial.roughness = min( material.roughness, 1.0 );\n#ifdef IOR\n\tmaterial.ior = ior;\n\t#ifdef SPECULAR\n\t\tfloat specularIntensityFactor = specularIntensity;\n\t\tvec3 specularColorFactor = specularColor;\n\t\t#ifdef USE_SPECULARINTENSITYMAP\n\t\t\tspecularIntensityFactor *= texture2D( specularIntensityMap, vUv ).a;\n\t\t#endif\n\t\t#ifdef USE_SPECULARCOLORMAP\n\t\t\tspecularColorFactor *= texture2D( specularColorMap, vUv ).rgb;\n\t\t#endif\n\t\tmaterial.specularF90 = mix( specularIntensityFactor, 1.0, metalnessFactor );\n\t#else\n\t\tfloat specularIntensityFactor = 1.0;\n\t\tvec3 specularColorFactor = vec3( 1.0 );\n\t\tmaterial.specularF90 = 1.0;\n\t#endif\n\tmaterial.specularColor = mix( min( pow2( ( material.ior - 1.0 ) / ( material.ior + 1.0 ) ) * specularColorFactor, vec3( 1.0 ) ) * specularIntensityFactor, diffuseColor.rgb, metalnessFactor );\n#else\n\tmaterial.specularColor = mix( vec3( 0.04 ), diffuseColor.rgb, metalnessFactor );\n\tmaterial.specularF90 = 1.0;\n#endif\n#ifdef USE_CLEARCOAT\n\tmaterial.clearcoat = clearcoat;\n\tmaterial.clearcoatRoughness = clearcoatRoughness;\n\tmaterial.clearcoatF0 = vec3( 0.04 );\n\tmaterial.clearcoatF90 = 1.0;\n\t#ifdef USE_CLEARCOATMAP\n\t\tmaterial.clearcoat *= texture2D( clearcoatMap, vUv ).x;\n\t#endif\n\t#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n\t\tmaterial.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vUv ).y;\n\t#endif\n\tmaterial.clearcoat = saturate( material.clearcoat );\tmaterial.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 );\n\tmaterial.clearcoatRoughness += geometryRoughness;\n\tmaterial.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 );\n#endif\n#ifdef USE_IRIDESCENCE\n\tmaterial.iridescence = iridescence;\n\tmaterial.iridescenceIOR = iridescenceIOR;\n\t#ifdef USE_IRIDESCENCEMAP\n\t\tmaterial.iridescence *= texture2D( iridescenceMap, vUv ).r;\n\t#endif\n\t#ifdef USE_IRIDESCENCE_THICKNESSMAP\n\t\tmaterial.iridescenceThickness = (iridescenceThicknessMaximum - iridescenceThicknessMinimum) * texture2D( iridescenceThicknessMap, vUv ).g + iridescenceThicknessMinimum;\n\t#else\n\t\tmaterial.iridescenceThickness = iridescenceThicknessMaximum;\n\t#endif\n#endif\n#ifdef USE_SHEEN\n\tmaterial.sheenColor = sheenColor;\n\t#ifdef USE_SHEENCOLORMAP\n\t\tmaterial.sheenColor *= texture2D( sheenColorMap, vUv ).rgb;\n\t#endif\n\tmaterial.sheenRoughness = clamp( sheenRoughness, 0.07, 1.0 );\n\t#ifdef USE_SHEENROUGHNESSMAP\n\t\tmaterial.sheenRoughness *= texture2D( sheenRoughnessMap, vUv ).a;\n\t#endif\n#endif`,Dc=`struct PhysicalMaterial {\n\tvec3 diffuseColor;\n\tfloat roughness;\n\tvec3 specularColor;\n\tfloat specularF90;\n\t#ifdef USE_CLEARCOAT\n\t\tfloat clearcoat;\n\t\tfloat clearcoatRoughness;\n\t\tvec3 clearcoatF0;\n\t\tfloat clearcoatF90;\n\t#endif\n\t#ifdef USE_IRIDESCENCE\n\t\tfloat iridescence;\n\t\tfloat iridescenceIOR;\n\t\tfloat iridescenceThickness;\n\t\tvec3 iridescenceFresnel;\n\t\tvec3 iridescenceF0;\n\t#endif\n\t#ifdef USE_SHEEN\n\t\tvec3 sheenColor;\n\t\tfloat sheenRoughness;\n\t#endif\n\t#ifdef IOR\n\t\tfloat ior;\n\t#endif\n\t#ifdef USE_TRANSMISSION\n\t\tfloat transmission;\n\t\tfloat transmissionAlpha;\n\t\tfloat thickness;\n\t\tfloat attenuationDistance;\n\t\tvec3 attenuationColor;\n\t#endif\n};\nvec3 clearcoatSpecular = vec3( 0.0 );\nvec3 sheenSpecular = vec3( 0.0 );\nfloat IBLSheenBRDF( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\tfloat r2 = roughness * roughness;\n\tfloat a = roughness < 0.25 ? -339.2 * r2 + 161.4 * roughness - 25.9 : -8.48 * r2 + 14.3 * roughness - 9.95;\n\tfloat b = roughness < 0.25 ? 44.0 * r2 - 23.7 * roughness + 3.26 : 1.97 * r2 - 3.27 * roughness + 0.72;\n\tfloat DG = exp( a * dotNV + b ) + ( roughness < 0.25 ? 0.0 : 0.1 * ( roughness - 0.25 ) );\n\treturn saturate( DG * RECIPROCAL_PI );\n}\nvec2 DFGApprox( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {\n\tfloat dotNV = saturate( dot( normal, viewDir ) );\n\tconst vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 );\n\tconst vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 );\n\tvec4 r = roughness * c0 + c1;\n\tfloat a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y;\n\tvec2 fab = vec2( - 1.04, 1.04 ) * a004 + r.zw;\n\treturn fab;\n}\nvec3 EnvironmentBRDF( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness ) {\n\tvec2 fab = DFGApprox( normal, viewDir, roughness );\n\treturn specularColor * fab.x + specularF90 * fab.y;\n}\n#ifdef USE_IRIDESCENCE\nvoid computeMultiscatteringIridescence( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float iridescence, const in vec3 iridescenceF0, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\n#else\nvoid computeMultiscattering( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\n#endif\n\tvec2 fab = DFGApprox( normal, viewDir, roughness );\n\t#ifdef USE_IRIDESCENCE\n\t\tvec3 Fr = mix( specularColor, iridescenceF0, iridescence );\n\t#else\n\t\tvec3 Fr = specularColor;\n\t#endif\n\tvec3 FssEss = Fr * fab.x + specularF90 * fab.y;\n\tfloat Ess = fab.x + fab.y;\n\tfloat Ems = 1.0 - Ess;\n\tvec3 Favg = Fr + ( 1.0 - Fr ) * 0.047619;\tvec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg );\n\tsingleScatter += FssEss;\n\tmultiScatter += Fms * Ems;\n}\n#if NUM_RECT_AREA_LIGHTS > 0\n\tvoid RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\t\tvec3 normal = geometry.normal;\n\t\tvec3 viewDir = geometry.viewDir;\n\t\tvec3 position = geometry.position;\n\t\tvec3 lightPos = rectAreaLight.position;\n\t\tvec3 halfWidth = rectAreaLight.halfWidth;\n\t\tvec3 halfHeight = rectAreaLight.halfHeight;\n\t\tvec3 lightColor = rectAreaLight.color;\n\t\tfloat roughness = material.roughness;\n\t\tvec3 rectCoords[ 4 ];\n\t\trectCoords[ 0 ] = lightPos + halfWidth - halfHeight;\t\trectCoords[ 1 ] = lightPos - halfWidth - halfHeight;\n\t\trectCoords[ 2 ] = lightPos - halfWidth + halfHeight;\n\t\trectCoords[ 3 ] = lightPos + halfWidth + halfHeight;\n\t\tvec2 uv = LTC_Uv( normal, viewDir, roughness );\n\t\tvec4 t1 = texture2D( ltc_1, uv );\n\t\tvec4 t2 = texture2D( ltc_2, uv );\n\t\tmat3 mInv = mat3(\n\t\t\tvec3( t1.x, 0, t1.y ),\n\t\t\tvec3( 0, 1, 0 ),\n\t\t\tvec3( t1.z, 0, t1.w )\n\t\t);\n\t\tvec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y );\n\t\treflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords );\n\t\treflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords );\n\t}\n#endif\nvoid RE_Direct_Physical( const in IncidentLight directLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\n\tvec3 irradiance = dotNL * directLight.color;\n\t#ifdef USE_CLEARCOAT\n\t\tfloat dotNLcc = saturate( dot( geometry.clearcoatNormal, directLight.direction ) );\n\t\tvec3 ccIrradiance = dotNLcc * directLight.color;\n\t\tclearcoatSpecular += ccIrradiance * BRDF_GGX( directLight.direction, geometry.viewDir, geometry.clearcoatNormal, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );\n\t#endif\n\t#ifdef USE_SHEEN\n\t\tsheenSpecular += irradiance * BRDF_Sheen( directLight.direction, geometry.viewDir, geometry.normal, material.sheenColor, material.sheenRoughness );\n\t#endif\n\t#ifdef USE_IRIDESCENCE\n\t\treflectedLight.directSpecular += irradiance * BRDF_GGX_Iridescence( directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularF90, material.iridescence, material.iridescenceFresnel, material.roughness );\n\t#else\n\t\treflectedLight.directSpecular += irradiance * BRDF_GGX( directLight.direction, geometry.viewDir, geometry.normal, material.specularColor, material.specularF90, material.roughness );\n\t#endif\n\treflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {\n\t#ifdef USE_CLEARCOAT\n\t\tclearcoatSpecular += clearcoatRadiance * EnvironmentBRDF( geometry.clearcoatNormal, geometry.viewDir, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );\n\t#endif\n\t#ifdef USE_SHEEN\n\t\tsheenSpecular += irradiance * material.sheenColor * IBLSheenBRDF( geometry.normal, geometry.viewDir, material.sheenRoughness );\n\t#endif\n\tvec3 singleScattering = vec3( 0.0 );\n\tvec3 multiScattering = vec3( 0.0 );\n\tvec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;\n\t#ifdef USE_IRIDESCENCE\n\t\tcomputeMultiscatteringIridescence( geometry.normal, geometry.viewDir, material.specularColor, material.specularF90, material.iridescence, material.iridescenceFresnel, material.roughness, singleScattering, multiScattering );\n\t#else\n\t\tcomputeMultiscattering( geometry.normal, geometry.viewDir, material.specularColor, material.specularF90, material.roughness, singleScattering, multiScattering );\n\t#endif\n\tvec3 totalScattering = singleScattering + multiScattering;\n\tvec3 diffuse = material.diffuseColor * ( 1.0 - max( max( totalScattering.r, totalScattering.g ), totalScattering.b ) );\n\treflectedLight.indirectSpecular += radiance * singleScattering;\n\treflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance;\n\treflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance;\n}\n#define RE_Direct\t\t\t\tRE_Direct_Physical\n#define RE_Direct_RectArea\t\tRE_Direct_RectArea_Physical\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_Physical\n#define RE_IndirectSpecular\t\tRE_IndirectSpecular_Physical\nfloat computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) {\n\treturn saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion );\n}`,Nc=`\nGeometricContext geometry;\ngeometry.position = - vViewPosition;\ngeometry.normal = normal;\ngeometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition );\n#ifdef USE_CLEARCOAT\n\tgeometry.clearcoatNormal = clearcoatNormal;\n#endif\n#ifdef USE_IRIDESCENCE\n\tfloat dotNVi = saturate( dot( normal, geometry.viewDir ) );\n\tif ( material.iridescenceThickness == 0.0 ) {\n\t\tmaterial.iridescence = 0.0;\n\t} else {\n\t\tmaterial.iridescence = saturate( material.iridescence );\n\t}\n\tif ( material.iridescence > 0.0 ) {\n\t\tmaterial.iridescenceFresnel = evalIridescence( 1.0, material.iridescenceIOR, dotNVi, material.iridescenceThickness, material.specularColor );\n\t\tmaterial.iridescenceF0 = Schlick_to_F0( material.iridescenceFresnel, 1.0, dotNVi );\n\t}\n#endif\nIncidentLight directLight;\n#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\n\tPointLight pointLight;\n\t#if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0\n\tPointLightShadow pointLightShadow;\n\t#endif\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tpointLight = pointLights[ i ];\n\t\tgetPointLightInfo( pointLight, geometry, directLight );\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS )\n\t\tpointLightShadow = pointLightShadows[ i ];\n\t\tdirectLight.color *= ( directLight.visible && receiveShadow ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\n\tSpotLight spotLight;\n\tvec4 spotColor;\n\tvec3 spotLightCoord;\n\tbool inSpotLightMap;\n\t#if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0\n\tSpotLightShadow spotLightShadow;\n\t#endif\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tspotLight = spotLights[ i ];\n\t\tgetSpotLightInfo( spotLight, geometry, directLight );\n\t\t#if ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS )\n\t\t#define SPOT_LIGHT_MAP_INDEX UNROLLED_LOOP_INDEX\n\t\t#elif ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\n\t\t#define SPOT_LIGHT_MAP_INDEX NUM_SPOT_LIGHT_MAPS\n\t\t#else\n\t\t#define SPOT_LIGHT_MAP_INDEX ( UNROLLED_LOOP_INDEX - NUM_SPOT_LIGHT_SHADOWS + NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS )\n\t\t#endif\n\t\t#if ( SPOT_LIGHT_MAP_INDEX < NUM_SPOT_LIGHT_MAPS )\n\t\t\tspotLightCoord = vSpotLightCoord[ i ].xyz / vSpotLightCoord[ i ].w;\n\t\t\tinSpotLightMap = all( lessThan( abs( spotLightCoord * 2. - 1. ), vec3( 1.0 ) ) );\n\t\t\tspotColor = texture2D( spotLightMap[ SPOT_LIGHT_MAP_INDEX ], spotLightCoord.xy );\n\t\t\tdirectLight.color = inSpotLightMap ? directLight.color * spotColor.rgb : directLight.color;\n\t\t#endif\n\t\t#undef SPOT_LIGHT_MAP_INDEX\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\n\t\tspotLightShadow = spotLightShadows[ i ];\n\t\tdirectLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotLightCoord[ i ] ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\n\tDirectionalLight directionalLight;\n\t#if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0\n\tDirectionalLightShadow directionalLightShadow;\n\t#endif\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tdirectionalLight = directionalLights[ i ];\n\t\tgetDirectionalLightInfo( directionalLight, geometry, directLight );\n\t\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS )\n\t\tdirectionalLightShadow = directionalLightShadows[ i ];\n\t\tdirectLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\n\tRectAreaLight rectAreaLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {\n\t\trectAreaLight = rectAreaLights[ i ];\n\t\tRE_Direct_RectArea( rectAreaLight, geometry, material, reflectedLight );\n\t}\n\t#pragma unroll_loop_end\n#endif\n#if defined( RE_IndirectDiffuse )\n\tvec3 iblIrradiance = vec3( 0.0 );\n\tvec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\n\tirradiance += getLightProbeIrradiance( lightProbe, geometry.normal );\n\t#if ( NUM_HEMI_LIGHTS > 0 )\n\t\t#pragma unroll_loop_start\n\t\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\n\t\t\tirradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry.normal );\n\t\t}\n\t\t#pragma unroll_loop_end\n\t#endif\n#endif\n#if defined( RE_IndirectSpecular )\n\tvec3 radiance = vec3( 0.0 );\n\tvec3 clearcoatRadiance = vec3( 0.0 );\n#endif`,Fc=`#if defined( RE_IndirectDiffuse )\n\t#ifdef USE_LIGHTMAP\n\t\tvec4 lightMapTexel = texture2D( lightMap, vUv2 );\n\t\tvec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;\n\t\tirradiance += lightMapIrradiance;\n\t#endif\n\t#if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV )\n\t\tiblIrradiance += getIBLIrradiance( geometry.normal );\n\t#endif\n#endif\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\n\tradiance += getIBLRadiance( geometry.viewDir, geometry.normal, material.roughness );\n\t#ifdef USE_CLEARCOAT\n\t\tclearcoatRadiance += getIBLRadiance( geometry.viewDir, geometry.clearcoatNormal, material.clearcoatRoughness );\n\t#endif\n#endif`,zc=`#if defined( RE_IndirectDiffuse )\n\tRE_IndirectDiffuse( irradiance, geometry, material, reflectedLight );\n#endif\n#if defined( RE_IndirectSpecular )\n\tRE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometry, material, reflectedLight );\n#endif`,Oc=`#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\n\tgl_FragDepthEXT = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\n#endif`,Uc=`#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\n\tuniform float logDepthBufFC;\n\tvarying float vFragDepth;\n\tvarying float vIsPerspective;\n#endif`,Bc=`#ifdef USE_LOGDEPTHBUF\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tvarying float vFragDepth;\n\t\tvarying float vIsPerspective;\n\t#else\n\t\tuniform float logDepthBufFC;\n\t#endif\n#endif`,kc=`#ifdef USE_LOGDEPTHBUF\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tvFragDepth = 1.0 + gl_Position.w;\n\t\tvIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) );\n\t#else\n\t\tif ( isPerspectiveMatrix( projectionMatrix ) ) {\n\t\t\tgl_Position.z = log2( max( EPSILON, gl_Position.w + 1.0 ) ) * logDepthBufFC - 1.0;\n\t\t\tgl_Position.z *= gl_Position.w;\n\t\t}\n\t#endif\n#endif`,Vc=`#ifdef USE_MAP\n\tvec4 sampledDiffuseColor = texture2D( map, vUv );\n\t#ifdef DECODE_VIDEO_TEXTURE\n\t\tsampledDiffuseColor = vec4( mix( pow( sampledDiffuseColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), sampledDiffuseColor.rgb * 0.0773993808, vec3( lessThanEqual( sampledDiffuseColor.rgb, vec3( 0.04045 ) ) ) ), sampledDiffuseColor.w );\n\t#endif\n\tdiffuseColor *= sampledDiffuseColor;\n#endif`,Gc=`#ifdef USE_MAP\n\tuniform sampler2D map;\n#endif`,Hc=`#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\n\tvec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;\n#endif\n#ifdef USE_MAP\n\tdiffuseColor *= texture2D( map, uv );\n#endif\n#ifdef USE_ALPHAMAP\n\tdiffuseColor.a *= texture2D( alphaMap, uv ).g;\n#endif`,Wc=`#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\n\tuniform mat3 uvTransform;\n#endif\n#ifdef USE_MAP\n\tuniform sampler2D map;\n#endif\n#ifdef USE_ALPHAMAP\n\tuniform sampler2D alphaMap;\n#endif`,Xc=`float metalnessFactor = metalness;\n#ifdef USE_METALNESSMAP\n\tvec4 texelMetalness = texture2D( metalnessMap, vUv );\n\tmetalnessFactor *= texelMetalness.b;\n#endif`,qc=`#ifdef USE_METALNESSMAP\n\tuniform sampler2D metalnessMap;\n#endif`,Yc=`#if defined( USE_MORPHCOLORS ) && defined( MORPHTARGETS_TEXTURE )\n\tvColor *= morphTargetBaseInfluence;\n\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\n\t\t#if defined( USE_COLOR_ALPHA )\n\t\t\tif ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ) * morphTargetInfluences[ i ];\n\t\t#elif defined( USE_COLOR )\n\t\t\tif ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ).rgb * morphTargetInfluences[ i ];\n\t\t#endif\n\t}\n#endif`,Zc=`#ifdef USE_MORPHNORMALS\n\tobjectNormal *= morphTargetBaseInfluence;\n\t#ifdef MORPHTARGETS_TEXTURE\n\t\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\n\t\t\tif ( morphTargetInfluences[ i ] != 0.0 ) objectNormal += getMorph( gl_VertexID, i, 1 ).xyz * morphTargetInfluences[ i ];\n\t\t}\n\t#else\n\t\tobjectNormal += morphNormal0 * morphTargetInfluences[ 0 ];\n\t\tobjectNormal += morphNormal1 * morphTargetInfluences[ 1 ];\n\t\tobjectNormal += morphNormal2 * morphTargetInfluences[ 2 ];\n\t\tobjectNormal += morphNormal3 * morphTargetInfluences[ 3 ];\n\t#endif\n#endif`,Jc=`#ifdef USE_MORPHTARGETS\n\tuniform float morphTargetBaseInfluence;\n\t#ifdef MORPHTARGETS_TEXTURE\n\t\tuniform float morphTargetInfluences[ MORPHTARGETS_COUNT ];\n\t\tuniform sampler2DArray morphTargetsTexture;\n\t\tuniform ivec2 morphTargetsTextureSize;\n\t\tvec4 getMorph( const in int vertexIndex, const in int morphTargetIndex, const in int offset ) {\n\t\t\tint texelIndex = vertexIndex * MORPHTARGETS_TEXTURE_STRIDE + offset;\n\t\t\tint y = texelIndex / morphTargetsTextureSize.x;\n\t\t\tint x = texelIndex - y * morphTargetsTextureSize.x;\n\t\t\tivec3 morphUV = ivec3( x, y, morphTargetIndex );\n\t\t\treturn texelFetch( morphTargetsTexture, morphUV, 0 );\n\t\t}\n\t#else\n\t\t#ifndef USE_MORPHNORMALS\n\t\t\tuniform float morphTargetInfluences[ 8 ];\n\t\t#else\n\t\t\tuniform float morphTargetInfluences[ 4 ];\n\t\t#endif\n\t#endif\n#endif`,$c=`#ifdef USE_MORPHTARGETS\n\ttransformed *= morphTargetBaseInfluence;\n\t#ifdef MORPHTARGETS_TEXTURE\n\t\tfor ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\n\t\t\tif ( morphTargetInfluences[ i ] != 0.0 ) transformed += getMorph( gl_VertexID, i, 0 ).xyz * morphTargetInfluences[ i ];\n\t\t}\n\t#else\n\t\ttransformed += morphTarget0 * morphTargetInfluences[ 0 ];\n\t\ttransformed += morphTarget1 * morphTargetInfluences[ 1 ];\n\t\ttransformed += morphTarget2 * morphTargetInfluences[ 2 ];\n\t\ttransformed += morphTarget3 * morphTargetInfluences[ 3 ];\n\t\t#ifndef USE_MORPHNORMALS\n\t\t\ttransformed += morphTarget4 * morphTargetInfluences[ 4 ];\n\t\t\ttransformed += morphTarget5 * morphTargetInfluences[ 5 ];\n\t\t\ttransformed += morphTarget6 * morphTargetInfluences[ 6 ];\n\t\t\ttransformed += morphTarget7 * morphTargetInfluences[ 7 ];\n\t\t#endif\n\t#endif\n#endif`,Kc=`float faceDirection = gl_FrontFacing ? 1.0 : - 1.0;\n#ifdef FLAT_SHADED\n\tvec3 fdx = dFdx( vViewPosition );\n\tvec3 fdy = dFdy( vViewPosition );\n\tvec3 normal = normalize( cross( fdx, fdy ) );\n#else\n\tvec3 normal = normalize( vNormal );\n\t#ifdef DOUBLE_SIDED\n\t\tnormal = normal * faceDirection;\n\t#endif\n\t#ifdef USE_TANGENT\n\t\tvec3 tangent = normalize( vTangent );\n\t\tvec3 bitangent = normalize( vBitangent );\n\t\t#ifdef DOUBLE_SIDED\n\t\t\ttangent = tangent * faceDirection;\n\t\t\tbitangent = bitangent * faceDirection;\n\t\t#endif\n\t\t#if defined( TANGENTSPACE_NORMALMAP ) || defined( USE_CLEARCOAT_NORMALMAP )\n\t\t\tmat3 vTBN = mat3( tangent, bitangent, normal );\n\t\t#endif\n\t#endif\n#endif\nvec3 geometryNormal = normal;`,jc=`#ifdef OBJECTSPACE_NORMALMAP\n\tnormal = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\n\t#ifdef FLIP_SIDED\n\t\tnormal = - normal;\n\t#endif\n\t#ifdef DOUBLE_SIDED\n\t\tnormal = normal * faceDirection;\n\t#endif\n\tnormal = normalize( normalMatrix * normal );\n#elif defined( TANGENTSPACE_NORMALMAP )\n\tvec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\n\tmapN.xy *= normalScale;\n\t#ifdef USE_TANGENT\n\t\tnormal = normalize( vTBN * mapN );\n\t#else\n\t\tnormal = perturbNormal2Arb( - vViewPosition, normal, mapN, faceDirection );\n\t#endif\n#elif defined( USE_BUMPMAP )\n\tnormal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection );\n#endif`,Qc=`#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif`,th=`#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n\t#ifdef USE_TANGENT\n\t\tvarying vec3 vTangent;\n\t\tvarying vec3 vBitangent;\n\t#endif\n#endif`,eh=`#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n\t#ifdef USE_TANGENT\n\t\tvTangent = normalize( transformedTangent );\n\t\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\n\t#endif\n#endif`,nh=`#ifdef USE_NORMALMAP\n\tuniform sampler2D normalMap;\n\tuniform vec2 normalScale;\n#endif\n#ifdef OBJECTSPACE_NORMALMAP\n\tuniform mat3 normalMatrix;\n#endif\n#if ! defined ( USE_TANGENT ) && ( defined ( TANGENTSPACE_NORMALMAP ) || defined ( USE_CLEARCOAT_NORMALMAP ) )\n\tvec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm, vec3 mapN, float faceDirection ) {\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\t\tvec3 N = surf_norm;\n\t\tvec3 q1perp = cross( q1, N );\n\t\tvec3 q0perp = cross( N, q0 );\n\t\tvec3 T = q1perp * st0.x + q0perp * st1.x;\n\t\tvec3 B = q1perp * st0.y + q0perp * st1.y;\n\t\tfloat det = max( dot( T, T ), dot( B, B ) );\n\t\tfloat scale = ( det == 0.0 ) ? 0.0 : faceDirection * inversesqrt( det );\n\t\treturn normalize( T * ( mapN.x * scale ) + B * ( mapN.y * scale ) + N * mapN.z );\n\t}\n#endif`,ih=`#ifdef USE_CLEARCOAT\n\tvec3 clearcoatNormal = geometryNormal;\n#endif`,sh=`#ifdef USE_CLEARCOAT_NORMALMAP\n\tvec3 clearcoatMapN = texture2D( clearcoatNormalMap, vUv ).xyz * 2.0 - 1.0;\n\tclearcoatMapN.xy *= clearcoatNormalScale;\n\t#ifdef USE_TANGENT\n\t\tclearcoatNormal = normalize( vTBN * clearcoatMapN );\n\t#else\n\t\tclearcoatNormal = perturbNormal2Arb( - vViewPosition, clearcoatNormal, clearcoatMapN, faceDirection );\n\t#endif\n#endif`,rh=`#ifdef USE_CLEARCOATMAP\n\tuniform sampler2D clearcoatMap;\n#endif\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n\tuniform sampler2D clearcoatRoughnessMap;\n#endif\n#ifdef USE_CLEARCOAT_NORMALMAP\n\tuniform sampler2D clearcoatNormalMap;\n\tuniform vec2 clearcoatNormalScale;\n#endif`,ah=`#ifdef USE_IRIDESCENCEMAP\n\tuniform sampler2D iridescenceMap;\n#endif\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\n\tuniform sampler2D iridescenceThicknessMap;\n#endif`,oh=`#ifdef OPAQUE\ndiffuseColor.a = 1.0;\n#endif\n#ifdef USE_TRANSMISSION\ndiffuseColor.a *= material.transmissionAlpha + 0.1;\n#endif\ngl_FragColor = vec4( outgoingLight, diffuseColor.a );`,lh=`vec3 packNormalToRGB( const in vec3 normal ) {\n\treturn normalize( normal ) * 0.5 + 0.5;\n}\nvec3 unpackRGBToNormal( const in vec3 rgb ) {\n\treturn 2.0 * rgb.xyz - 1.0;\n}\nconst float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;\nconst vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\nconst vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. );\nconst float ShiftRight8 = 1. / 256.;\nvec4 packDepthToRGBA( const in float v ) {\n\tvec4 r = vec4( fract( v * PackFactors ), v );\n\tr.yzw -= r.xyz * ShiftRight8;\treturn r * PackUpscale;\n}\nfloat unpackRGBAToDepth( const in vec4 v ) {\n\treturn dot( v, UnpackFactors );\n}\nvec2 packDepthToRG( in highp float v ) {\n\treturn packDepthToRGBA( v ).yx;\n}\nfloat unpackRGToDepth( const in highp vec2 v ) {\n\treturn unpackRGBAToDepth( vec4( v.xy, 0.0, 0.0 ) );\n}\nvec4 pack2HalfToRGBA( vec2 v ) {\n\tvec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ) );\n\treturn vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w );\n}\nvec2 unpackRGBATo2Half( vec4 v ) {\n\treturn vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) );\n}\nfloat viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) {\n\treturn ( viewZ + near ) / ( near - far );\n}\nfloat orthographicDepthToViewZ( const in float linearClipZ, const in float near, const in float far ) {\n\treturn linearClipZ * ( near - far ) - near;\n}\nfloat viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) {\n\treturn ( ( near + viewZ ) * far ) / ( ( far - near ) * viewZ );\n}\nfloat perspectiveDepthToViewZ( const in float invClipZ, const in float near, const in float far ) {\n\treturn ( near * far ) / ( ( far - near ) * invClipZ - far );\n}`,ch=`#ifdef PREMULTIPLIED_ALPHA\n\tgl_FragColor.rgb *= gl_FragColor.a;\n#endif`,hh=`vec4 mvPosition = vec4( transformed, 1.0 );\n#ifdef USE_INSTANCING\n\tmvPosition = instanceMatrix * mvPosition;\n#endif\nmvPosition = modelViewMatrix * mvPosition;\ngl_Position = projectionMatrix * mvPosition;`,uh=`#ifdef DITHERING\n\tgl_FragColor.rgb = dithering( gl_FragColor.rgb );\n#endif`,dh=`#ifdef DITHERING\n\tvec3 dithering( vec3 color ) {\n\t\tfloat grid_position = rand( gl_FragCoord.xy );\n\t\tvec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 );\n\t\tdither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position );\n\t\treturn color + dither_shift_RGB;\n\t}\n#endif`,fh=`float roughnessFactor = roughness;\n#ifdef USE_ROUGHNESSMAP\n\tvec4 texelRoughness = texture2D( roughnessMap, vUv );\n\troughnessFactor *= texelRoughness.g;\n#endif`,ph=`#ifdef USE_ROUGHNESSMAP\n\tuniform sampler2D roughnessMap;\n#endif`,mh=`#if NUM_SPOT_LIGHT_COORDS > 0\n varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ];\n#endif\n#if NUM_SPOT_LIGHT_MAPS > 0\n uniform sampler2D spotLightMap[ NUM_SPOT_LIGHT_MAPS ];\n#endif\n#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\t\tuniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tstruct DirectionalLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\t\tuniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ];\n\t\tstruct SpotLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\t\tuniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tstruct PointLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t\tfloat shadowCameraNear;\n\t\t\tfloat shadowCameraFar;\n\t\t};\n\t\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\n\t#endif\n\tfloat texture2DCompare( sampler2D depths, vec2 uv, float compare ) {\n\t\treturn step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) );\n\t}\n\tvec2 texture2DDistribution( sampler2D shadow, vec2 uv ) {\n\t\treturn unpackRGBATo2Half( texture2D( shadow, uv ) );\n\t}\n\tfloat VSMShadow (sampler2D shadow, vec2 uv, float compare ){\n\t\tfloat occlusion = 1.0;\n\t\tvec2 distribution = texture2DDistribution( shadow, uv );\n\t\tfloat hard_shadow = step( compare , distribution.x );\n\t\tif (hard_shadow != 1.0 ) {\n\t\t\tfloat distance = compare - distribution.x ;\n\t\t\tfloat variance = max( 0.00000, distribution.y * distribution.y );\n\t\t\tfloat softness_probability = variance / (variance + distance * distance );\t\t\tsoftness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 );\t\t\tocclusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 );\n\t\t}\n\t\treturn occlusion;\n\t}\n\tfloat getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) {\n\t\tfloat shadow = 1.0;\n\t\tshadowCoord.xyz /= shadowCoord.w;\n\t\tshadowCoord.z += shadowBias;\n\t\tbool inFrustum = shadowCoord.x >= 0.0 && shadowCoord.x <= 1.0 && shadowCoord.y >= 0.0 && shadowCoord.y <= 1.0;\n\t\tbool frustumTest = inFrustum && shadowCoord.z <= 1.0;\n\t\tif ( frustumTest ) {\n\t\t#if defined( SHADOWMAP_TYPE_PCF )\n\t\t\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\n\t\t\tfloat dx0 = - texelSize.x * shadowRadius;\n\t\t\tfloat dy0 = - texelSize.y * shadowRadius;\n\t\t\tfloat dx1 = + texelSize.x * shadowRadius;\n\t\t\tfloat dy1 = + texelSize.y * shadowRadius;\n\t\t\tfloat dx2 = dx0 / 2.0;\n\t\t\tfloat dy2 = dy0 / 2.0;\n\t\t\tfloat dx3 = dx1 / 2.0;\n\t\t\tfloat dy3 = dy1 / 2.0;\n\t\t\tshadow = (\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy2 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy2 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy2 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy3 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy3 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy3 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\n\t\t\t) * ( 1.0 / 17.0 );\n\t\t#elif defined( SHADOWMAP_TYPE_PCF_SOFT )\n\t\t\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\n\t\t\tfloat dx = texelSize.x;\n\t\t\tfloat dy = texelSize.y;\n\t\t\tvec2 uv = shadowCoord.xy;\n\t\t\tvec2 f = fract( uv * shadowMapSize + 0.5 );\n\t\t\tuv -= f * texelSize;\n\t\t\tshadow = (\n\t\t\t\ttexture2DCompare( shadowMap, uv, shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, uv + vec2( dx, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, uv + vec2( 0.0, dy ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, uv + texelSize, shadowCoord.z ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, 0.0 ), shadowCoord.z ),\n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 0.0 ), shadowCoord.z ),\n\t\t\t\t\t f.x ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, dy ), shadowCoord.z ),\n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, dy ), shadowCoord.z ),\n\t\t\t\t\t f.x ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( 0.0, -dy ), shadowCoord.z ),\n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 0.0, 2.0 * dy ), shadowCoord.z ),\n\t\t\t\t\t f.y ) +\n\t\t\t\tmix( texture2DCompare( shadowMap, uv + vec2( dx, -dy ), shadowCoord.z ),\n\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( dx, 2.0 * dy ), shadowCoord.z ),\n\t\t\t\t\t f.y ) +\n\t\t\t\tmix( mix( texture2DCompare( shadowMap, uv + vec2( -dx, -dy ), shadowCoord.z ),\n\t\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ),\n\t\t\t\t\t\t f.x ),\n\t\t\t\t\t mix( texture2DCompare( shadowMap, uv + vec2( -dx, 2.0 * dy ), shadowCoord.z ),\n\t\t\t\t\t\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ),\n\t\t\t\t\t\t f.x ),\n\t\t\t\t\t f.y )\n\t\t\t) * ( 1.0 / 9.0 );\n\t\t#elif defined( SHADOWMAP_TYPE_VSM )\n\t\t\tshadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z );\n\t\t#else\n\t\t\tshadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z );\n\t\t#endif\n\t\t}\n\t\treturn shadow;\n\t}\n\tvec2 cubeToUV( vec3 v, float texelSizeY ) {\n\t\tvec3 absV = abs( v );\n\t\tfloat scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) );\n\t\tabsV *= scaleToCube;\n\t\tv *= scaleToCube * ( 1.0 - 2.0 * texelSizeY );\n\t\tvec2 planar = v.xy;\n\t\tfloat almostATexel = 1.5 * texelSizeY;\n\t\tfloat almostOne = 1.0 - almostATexel;\n\t\tif ( absV.z >= almostOne ) {\n\t\t\tif ( v.z > 0.0 )\n\t\t\t\tplanar.x = 4.0 - v.x;\n\t\t} else if ( absV.x >= almostOne ) {\n\t\t\tfloat signX = sign( v.x );\n\t\t\tplanar.x = v.z * signX + 2.0 * signX;\n\t\t} else if ( absV.y >= almostOne ) {\n\t\t\tfloat signY = sign( v.y );\n\t\t\tplanar.x = v.x + 2.0 * signY + 2.0;\n\t\t\tplanar.y = v.z * signY - 2.0;\n\t\t}\n\t\treturn vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 );\n\t}\n\tfloat getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {\n\t\tvec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );\n\t\tvec3 lightToPosition = shadowCoord.xyz;\n\t\tfloat dp = ( length( lightToPosition ) - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear );\t\tdp += shadowBias;\n\t\tvec3 bd3D = normalize( lightToPosition );\n\t\t#if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM )\n\t\t\tvec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y;\n\t\t\treturn (\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp )\n\t\t\t) * ( 1.0 / 9.0 );\n\t\t#else\n\t\t\treturn texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp );\n\t\t#endif\n\t}\n#endif`,gh=`#if NUM_SPOT_LIGHT_COORDS > 0\n uniform mat4 spotLightMatrix[ NUM_SPOT_LIGHT_COORDS ];\n varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ];\n#endif\n#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\t\tuniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\n\t\tstruct DirectionalLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\t\tstruct SpotLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t};\n\t\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\t\tuniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\n\t\tstruct PointLightShadow {\n\t\t\tfloat shadowBias;\n\t\t\tfloat shadowNormalBias;\n\t\t\tfloat shadowRadius;\n\t\t\tvec2 shadowMapSize;\n\t\t\tfloat shadowCameraNear;\n\t\t\tfloat shadowCameraFar;\n\t\t};\n\t\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\n\t#endif\n#endif`,_h=`#if ( defined( USE_SHADOWMAP ) && ( NUM_DIR_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0 ) ) || ( NUM_SPOT_LIGHT_COORDS > 0 )\n\tvec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\n\tvec4 shadowWorldPosition;\n#endif\n#if defined( USE_SHADOWMAP )\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\t\t#pragma unroll_loop_start\n\t\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\n\t\t\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 );\n\t\t\tvDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition;\n\t\t}\n\t\t#pragma unroll_loop_end\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\t\t#pragma unroll_loop_start\n\t\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\n\t\t\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 );\n\t\t\tvPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition;\n\t\t}\n\t\t#pragma unroll_loop_end\n\t#endif\n#endif\n#if NUM_SPOT_LIGHT_COORDS > 0\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_SPOT_LIGHT_COORDS; i ++ ) {\n\t\tshadowWorldPosition = worldPosition;\n\t\t#if ( defined( USE_SHADOWMAP ) && UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\n\t\t\tshadowWorldPosition.xyz += shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias;\n\t\t#endif\n\t\tvSpotLightCoord[ i ] = spotLightMatrix[ i ] * shadowWorldPosition;\n\t}\n\t#pragma unroll_loop_end\n#endif`,xh=`float getShadowMask() {\n\tfloat shadow = 1.0;\n\t#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHT_SHADOWS > 0\n\tDirectionalLightShadow directionalLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\n\t\tdirectionalLight = directionalLightShadows[ i ];\n\t\tshadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n\t#if NUM_SPOT_LIGHT_SHADOWS > 0\n\tSpotLightShadow spotLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\n\t\tspotLight = spotLightShadows[ i ];\n\t\tshadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotLightCoord[ i ] ) : 1.0;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n\t#if NUM_POINT_LIGHT_SHADOWS > 0\n\tPointLightShadow pointLight;\n\t#pragma unroll_loop_start\n\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\n\t\tpointLight = pointLightShadows[ i ];\n\t\tshadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\n\t}\n\t#pragma unroll_loop_end\n\t#endif\n\t#endif\n\treturn shadow;\n}`,yh=`#ifdef USE_SKINNING\n\tmat4 boneMatX = getBoneMatrix( skinIndex.x );\n\tmat4 boneMatY = getBoneMatrix( skinIndex.y );\n\tmat4 boneMatZ = getBoneMatrix( skinIndex.z );\n\tmat4 boneMatW = getBoneMatrix( skinIndex.w );\n#endif`,vh=`#ifdef USE_SKINNING\n\tuniform mat4 bindMatrix;\n\tuniform mat4 bindMatrixInverse;\n\tuniform highp sampler2D boneTexture;\n\tuniform int boneTextureSize;\n\tmat4 getBoneMatrix( const in float i ) {\n\t\tfloat j = i * 4.0;\n\t\tfloat x = mod( j, float( boneTextureSize ) );\n\t\tfloat y = floor( j / float( boneTextureSize ) );\n\t\tfloat dx = 1.0 / float( boneTextureSize );\n\t\tfloat dy = 1.0 / float( boneTextureSize );\n\t\ty = dy * ( y + 0.5 );\n\t\tvec4 v1 = texture2D( boneTexture, vec2( dx * ( x + 0.5 ), y ) );\n\t\tvec4 v2 = texture2D( boneTexture, vec2( dx * ( x + 1.5 ), y ) );\n\t\tvec4 v3 = texture2D( boneTexture, vec2( dx * ( x + 2.5 ), y ) );\n\t\tvec4 v4 = texture2D( boneTexture, vec2( dx * ( x + 3.5 ), y ) );\n\t\tmat4 bone = mat4( v1, v2, v3, v4 );\n\t\treturn bone;\n\t}\n#endif`,Mh=`#ifdef USE_SKINNING\n\tvec4 skinVertex = bindMatrix * vec4( transformed, 1.0 );\n\tvec4 skinned = vec4( 0.0 );\n\tskinned += boneMatX * skinVertex * skinWeight.x;\n\tskinned += boneMatY * skinVertex * skinWeight.y;\n\tskinned += boneMatZ * skinVertex * skinWeight.z;\n\tskinned += boneMatW * skinVertex * skinWeight.w;\n\ttransformed = ( bindMatrixInverse * skinned ).xyz;\n#endif`,bh=`#ifdef USE_SKINNING\n\tmat4 skinMatrix = mat4( 0.0 );\n\tskinMatrix += skinWeight.x * boneMatX;\n\tskinMatrix += skinWeight.y * boneMatY;\n\tskinMatrix += skinWeight.z * boneMatZ;\n\tskinMatrix += skinWeight.w * boneMatW;\n\tskinMatrix = bindMatrixInverse * skinMatrix * bindMatrix;\n\tobjectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz;\n\t#ifdef USE_TANGENT\n\t\tobjectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz;\n\t#endif\n#endif`,wh=`float specularStrength;\n#ifdef USE_SPECULARMAP\n\tvec4 texelSpecular = texture2D( specularMap, vUv );\n\tspecularStrength = texelSpecular.r;\n#else\n\tspecularStrength = 1.0;\n#endif`,Sh=`#ifdef USE_SPECULARMAP\n\tuniform sampler2D specularMap;\n#endif`,Th=`#if defined( TONE_MAPPING )\n\tgl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\n#endif`,Ah=`#ifndef saturate\n#define saturate( a ) clamp( a, 0.0, 1.0 )\n#endif\nuniform float toneMappingExposure;\nvec3 LinearToneMapping( vec3 color ) {\n\treturn toneMappingExposure * color;\n}\nvec3 ReinhardToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\treturn saturate( color / ( vec3( 1.0 ) + color ) );\n}\nvec3 OptimizedCineonToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\tcolor = max( vec3( 0.0 ), color - 0.004 );\n\treturn pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );\n}\nvec3 RRTAndODTFit( vec3 v ) {\n\tvec3 a = v * ( v + 0.0245786 ) - 0.000090537;\n\tvec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081;\n\treturn a / b;\n}\nvec3 ACESFilmicToneMapping( vec3 color ) {\n\tconst mat3 ACESInputMat = mat3(\n\t\tvec3( 0.59719, 0.07600, 0.02840 ),\t\tvec3( 0.35458, 0.90834, 0.13383 ),\n\t\tvec3( 0.04823, 0.01566, 0.83777 )\n\t);\n\tconst mat3 ACESOutputMat = mat3(\n\t\tvec3( 1.60475, -0.10208, -0.00327 ),\t\tvec3( -0.53108, 1.10813, -0.07276 ),\n\t\tvec3( -0.07367, -0.00605, 1.07602 )\n\t);\n\tcolor *= toneMappingExposure / 0.6;\n\tcolor = ACESInputMat * color;\n\tcolor = RRTAndODTFit( color );\n\tcolor = ACESOutputMat * color;\n\treturn saturate( color );\n}\nvec3 CustomToneMapping( vec3 color ) { return color; }`,Eh=`#ifdef USE_TRANSMISSION\n\tmaterial.transmission = transmission;\n\tmaterial.transmissionAlpha = 1.0;\n\tmaterial.thickness = thickness;\n\tmaterial.attenuationDistance = attenuationDistance;\n\tmaterial.attenuationColor = attenuationColor;\n\t#ifdef USE_TRANSMISSIONMAP\n\t\tmaterial.transmission *= texture2D( transmissionMap, vUv ).r;\n\t#endif\n\t#ifdef USE_THICKNESSMAP\n\t\tmaterial.thickness *= texture2D( thicknessMap, vUv ).g;\n\t#endif\n\tvec3 pos = vWorldPosition;\n\tvec3 v = normalize( cameraPosition - pos );\n\tvec3 n = inverseTransformDirection( normal, viewMatrix );\n\tvec4 transmission = getIBLVolumeRefraction(\n\t\tn, v, material.roughness, material.diffuseColor, material.specularColor, material.specularF90,\n\t\tpos, modelMatrix, viewMatrix, projectionMatrix, material.ior, material.thickness,\n\t\tmaterial.attenuationColor, material.attenuationDistance );\n\tmaterial.transmissionAlpha = mix( material.transmissionAlpha, transmission.a, material.transmission );\n\ttotalDiffuse = mix( totalDiffuse, transmission.rgb, material.transmission );\n#endif`,Ch=`#ifdef USE_TRANSMISSION\n\tuniform float transmission;\n\tuniform float thickness;\n\tuniform float attenuationDistance;\n\tuniform vec3 attenuationColor;\n\t#ifdef USE_TRANSMISSIONMAP\n\t\tuniform sampler2D transmissionMap;\n\t#endif\n\t#ifdef USE_THICKNESSMAP\n\t\tuniform sampler2D thicknessMap;\n\t#endif\n\tuniform vec2 transmissionSamplerSize;\n\tuniform sampler2D transmissionSamplerMap;\n\tuniform mat4 modelMatrix;\n\tuniform mat4 projectionMatrix;\n\tvarying vec3 vWorldPosition;\n\tvec3 getVolumeTransmissionRay( const in vec3 n, const in vec3 v, const in float thickness, const in float ior, const in mat4 modelMatrix ) {\n\t\tvec3 refractionVector = refract( - v, normalize( n ), 1.0 / ior );\n\t\tvec3 modelScale;\n\t\tmodelScale.x = length( vec3( modelMatrix[ 0 ].xyz ) );\n\t\tmodelScale.y = length( vec3( modelMatrix[ 1 ].xyz ) );\n\t\tmodelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) );\n\t\treturn normalize( refractionVector ) * thickness * modelScale;\n\t}\n\tfloat applyIorToRoughness( const in float roughness, const in float ior ) {\n\t\treturn roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 );\n\t}\n\tvec4 getTransmissionSample( const in vec2 fragCoord, const in float roughness, const in float ior ) {\n\t\tfloat framebufferLod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior );\n\t\t#ifdef texture2DLodEXT\n\t\t\treturn texture2DLodEXT( transmissionSamplerMap, fragCoord.xy, framebufferLod );\n\t\t#else\n\t\t\treturn texture2D( transmissionSamplerMap, fragCoord.xy, framebufferLod );\n\t\t#endif\n\t}\n\tvec3 applyVolumeAttenuation( const in vec3 radiance, const in float transmissionDistance, const in vec3 attenuationColor, const in float attenuationDistance ) {\n\t\tif ( isinf( attenuationDistance ) ) {\n\t\t\treturn radiance;\n\t\t} else {\n\t\t\tvec3 attenuationCoefficient = -log( attenuationColor ) / attenuationDistance;\n\t\t\tvec3 transmittance = exp( - attenuationCoefficient * transmissionDistance );\t\t\treturn transmittance * radiance;\n\t\t}\n\t}\n\tvec4 getIBLVolumeRefraction( const in vec3 n, const in vec3 v, const in float roughness, const in vec3 diffuseColor,\n\t\tconst in vec3 specularColor, const in float specularF90, const in vec3 position, const in mat4 modelMatrix,\n\t\tconst in mat4 viewMatrix, const in mat4 projMatrix, const in float ior, const in float thickness,\n\t\tconst in vec3 attenuationColor, const in float attenuationDistance ) {\n\t\tvec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix );\n\t\tvec3 refractedRayExit = position + transmissionRay;\n\t\tvec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 );\n\t\tvec2 refractionCoords = ndcPos.xy / ndcPos.w;\n\t\trefractionCoords += 1.0;\n\t\trefractionCoords /= 2.0;\n\t\tvec4 transmittedLight = getTransmissionSample( refractionCoords, roughness, ior );\n\t\tvec3 attenuatedColor = applyVolumeAttenuation( transmittedLight.rgb, length( transmissionRay ), attenuationColor, attenuationDistance );\n\t\tvec3 F = EnvironmentBRDF( n, v, specularColor, specularF90, roughness );\n\t\treturn vec4( ( 1.0 - F ) * attenuatedColor * diffuseColor, transmittedLight.a );\n\t}\n#endif`,Ph=`#if ( defined( USE_UV ) && ! defined( UVS_VERTEX_ONLY ) )\n\tvarying vec2 vUv;\n#endif`,Rh=`#ifdef USE_UV\n\t#ifdef UVS_VERTEX_ONLY\n\t\tvec2 vUv;\n\t#else\n\t\tvarying vec2 vUv;\n\t#endif\n\tuniform mat3 uvTransform;\n#endif`,Lh=`#ifdef USE_UV\n\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n#endif`,Ih=`#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tvarying vec2 vUv2;\n#endif`,Dh=`#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tattribute vec2 uv2;\n\tvarying vec2 vUv2;\n\tuniform mat3 uv2Transform;\n#endif`,Nh=`#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tvUv2 = ( uv2Transform * vec3( uv2, 1 ) ).xy;\n#endif`,Fh=`#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION ) || NUM_SPOT_LIGHT_COORDS > 0\n\tvec4 worldPosition = vec4( transformed, 1.0 );\n\t#ifdef USE_INSTANCING\n\t\tworldPosition = instanceMatrix * worldPosition;\n\t#endif\n\tworldPosition = modelMatrix * worldPosition;\n#endif`,zh=`varying vec2 vUv;\nuniform mat3 uvTransform;\nvoid main() {\n\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n\tgl_Position = vec4( position.xy, 1.0, 1.0 );\n}`,Oh=`uniform sampler2D t2D;\nuniform float backgroundIntensity;\nvarying vec2 vUv;\nvoid main() {\n\tvec4 texColor = texture2D( t2D, vUv );\n\t#ifdef DECODE_VIDEO_TEXTURE\n\t\ttexColor = vec4( mix( pow( texColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), texColor.rgb * 0.0773993808, vec3( lessThanEqual( texColor.rgb, vec3( 0.04045 ) ) ) ), texColor.w );\n\t#endif\n\ttexColor.rgb *= backgroundIntensity;\n\tgl_FragColor = texColor;\n\t#include \n\t#include \n}`,Uh=`varying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include \n\t#include \n\tgl_Position.z = gl_Position.w;\n}`,Bh=`#ifdef ENVMAP_TYPE_CUBE\n\tuniform samplerCube envMap;\n#elif defined( ENVMAP_TYPE_CUBE_UV )\n\tuniform sampler2D envMap;\n#endif\nuniform float flipEnvMap;\nuniform float backgroundBlurriness;\nuniform float backgroundIntensity;\nvarying vec3 vWorldDirection;\n#include \nvoid main() {\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tvec4 texColor = textureCube( envMap, vec3( flipEnvMap * vWorldDirection.x, vWorldDirection.yz ) );\n\t#elif defined( ENVMAP_TYPE_CUBE_UV )\n\t\tvec4 texColor = textureCubeUV( envMap, vWorldDirection, backgroundBlurriness );\n\t#else\n\t\tvec4 texColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\t#endif\n\ttexColor.rgb *= backgroundIntensity;\n\tgl_FragColor = texColor;\n\t#include \n\t#include \n}`,kh=`varying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include \n\t#include \n\tgl_Position.z = gl_Position.w;\n}`,Vh=`uniform samplerCube tCube;\nuniform float tFlip;\nuniform float opacity;\nvarying vec3 vWorldDirection;\nvoid main() {\n\tvec4 texColor = textureCube( tCube, vec3( tFlip * vWorldDirection.x, vWorldDirection.yz ) );\n\tgl_FragColor = texColor;\n\tgl_FragColor.a *= opacity;\n\t#include \n\t#include \n}`,Gh=`#include \n#include \n#include \n#include \n#include \n#include \n#include \nvarying vec2 vHighPrecisionZW;\nvoid main() {\n\t#include \n\t#include \n\t#ifdef USE_DISPLACEMENTMAP\n\t\t#include \n\t\t#include \n\t\t#include \n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvHighPrecisionZW = gl_Position.zw;\n}`,Hh=`#if DEPTH_PACKING == 3200\n\tuniform float opacity;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvarying vec2 vHighPrecisionZW;\nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( 1.0 );\n\t#if DEPTH_PACKING == 3200\n\t\tdiffuseColor.a = opacity;\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\tfloat fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5;\n\t#if DEPTH_PACKING == 3200\n\t\tgl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );\n\t#elif DEPTH_PACKING == 3201\n\t\tgl_FragColor = packDepthToRGBA( fragCoordZ );\n\t#endif\n}`,Wh=`#define DISTANCE\nvarying vec3 vWorldPosition;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#ifdef USE_DISPLACEMENTMAP\n\t\t#include \n\t\t#include \n\t\t#include \n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvWorldPosition = worldPosition.xyz;\n}`,Xh=`#define DISTANCE\nuniform vec3 referencePosition;\nuniform float nearDistance;\nuniform float farDistance;\nvarying vec3 vWorldPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main () {\n\t#include \n\tvec4 diffuseColor = vec4( 1.0 );\n\t#include \n\t#include \n\t#include \n\tfloat dist = length( vWorldPosition - referencePosition );\n\tdist = ( dist - nearDistance ) / ( farDistance - nearDistance );\n\tdist = saturate( dist );\n\tgl_FragColor = packDepthToRGBA( dist );\n}`,qh=`varying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvWorldDirection = transformDirection( position, modelMatrix );\n\t#include \n\t#include \n}`,Yh=`uniform sampler2D tEquirect;\nvarying vec3 vWorldDirection;\n#include \nvoid main() {\n\tvec3 direction = normalize( vWorldDirection );\n\tvec2 sampleUV = equirectUv( direction );\n\tgl_FragColor = texture2D( tEquirect, sampleUV );\n\t#include \n\t#include \n}`,Zh=`uniform float scale;\nattribute float lineDistance;\nvarying float vLineDistance;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\tvLineDistance = scale * lineDistance;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}`,Jh=`uniform vec3 diffuse;\nuniform float opacity;\nuniform float dashSize;\nuniform float totalSize;\nvarying float vLineDistance;\n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tif ( mod( vLineDistance, totalSize ) > dashSize ) {\n\t\tdiscard;\n\t}\n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\toutgoingLight = diffuseColor.rgb;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}`,$h=`#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#if defined ( USE_ENVMAP ) || defined ( USE_SKINNING )\n\t\t#include \n\t\t#include \n\t\t#include \n\t\t#include \n\t\t#include \n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}`,Kh=`uniform vec3 diffuse;\nuniform float opacity;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\t#ifdef USE_LIGHTMAP\n\t\tvec4 lightMapTexel = texture2D( lightMap, vUv2 );\n\t\treflectedLight.indirectDiffuse += lightMapTexel.rgb * lightMapIntensity * RECIPROCAL_PI;\n\t#else\n\t\treflectedLight.indirectDiffuse += vec3( 1.0 );\n\t#endif\n\t#include \n\treflectedLight.indirectDiffuse *= diffuseColor.rgb;\n\tvec3 outgoingLight = reflectedLight.indirectDiffuse;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}`,jh=`#define LAMBERT\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n\t#include \n\t#include \n\t#include \n\t#include \n}`,Qh=`#define LAMBERT\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}`,tu=`#define MATCAP\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n}`,eu=`#define MATCAP\nuniform vec3 diffuse;\nuniform float opacity;\nuniform sampler2D matcap;\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 viewDir = normalize( vViewPosition );\n\tvec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );\n\tvec3 y = cross( viewDir, x );\n\tvec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5;\n\t#ifdef USE_MATCAP\n\t\tvec4 matcapColor = texture2D( matcap, uv );\n\t#else\n\t\tvec4 matcapColor = vec4( vec3( mix( 0.2, 0.8, uv.y ) ), 1.0 );\n\t#endif\n\tvec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}`,nu=`#define NORMAL\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\n\tvarying vec3 vViewPosition;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\n\tvViewPosition = - mvPosition.xyz;\n#endif\n}`,iu=`#define NORMAL\nuniform float opacity;\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\n\tvarying vec3 vViewPosition;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\tgl_FragColor = vec4( packNormalToRGB( normal ), opacity );\n\t#ifdef OPAQUE\n\t\tgl_FragColor.a = 1.0;\n\t#endif\n}`,su=`#define PHONG\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n\t#include \n\t#include \n\t#include \n\t#include \n}`,ru=`#define PHONG\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform vec3 specular;\nuniform float shininess;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}`,au=`#define STANDARD\nvarying vec3 vViewPosition;\n#ifdef USE_TRANSMISSION\n\tvarying vec3 vWorldPosition;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n\t#include \n\t#include \n\t#include \n#ifdef USE_TRANSMISSION\n\tvWorldPosition = worldPosition.xyz;\n#endif\n}`,ou=`#define STANDARD\n#ifdef PHYSICAL\n\t#define IOR\n\t#define SPECULAR\n#endif\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float roughness;\nuniform float metalness;\nuniform float opacity;\n#ifdef IOR\n\tuniform float ior;\n#endif\n#ifdef SPECULAR\n\tuniform float specularIntensity;\n\tuniform vec3 specularColor;\n\t#ifdef USE_SPECULARINTENSITYMAP\n\t\tuniform sampler2D specularIntensityMap;\n\t#endif\n\t#ifdef USE_SPECULARCOLORMAP\n\t\tuniform sampler2D specularColorMap;\n\t#endif\n#endif\n#ifdef USE_CLEARCOAT\n\tuniform float clearcoat;\n\tuniform float clearcoatRoughness;\n#endif\n#ifdef USE_IRIDESCENCE\n\tuniform float iridescence;\n\tuniform float iridescenceIOR;\n\tuniform float iridescenceThicknessMinimum;\n\tuniform float iridescenceThicknessMaximum;\n#endif\n#ifdef USE_SHEEN\n\tuniform vec3 sheenColor;\n\tuniform float sheenRoughness;\n\t#ifdef USE_SHEENCOLORMAP\n\t\tuniform sampler2D sheenColorMap;\n\t#endif\n\t#ifdef USE_SHEENROUGHNESSMAP\n\t\tuniform sampler2D sheenRoughnessMap;\n\t#endif\n#endif\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse;\n\tvec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular;\n\t#include \n\tvec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance;\n\t#ifdef USE_SHEEN\n\t\tfloat sheenEnergyComp = 1.0 - 0.157 * max3( material.sheenColor );\n\t\toutgoingLight = outgoingLight * sheenEnergyComp + sheenSpecular;\n\t#endif\n\t#ifdef USE_CLEARCOAT\n\t\tfloat dotNVcc = saturate( dot( geometry.clearcoatNormal, geometry.viewDir ) );\n\t\tvec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc );\n\t\toutgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + clearcoatSpecular * material.clearcoat;\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}`,lu=`#define TOON\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n\t#include \n\t#include \n\t#include \n}`,cu=`#define TOON\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}`,hu=`uniform float size;\nuniform float scale;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tgl_PointSize = size;\n\t#ifdef USE_SIZEATTENUATION\n\t\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\n\t\tif ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z );\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n}`,uu=`uniform vec3 diffuse;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\toutgoingLight = diffuseColor.rgb;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}`,du=`#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}`,fu=`uniform vec3 color;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\tgl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );\n\t#include \n\t#include \n\t#include \n}`,pu=`uniform float rotation;\nuniform vec2 center;\n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );\n\tvec2 scale;\n\tscale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) );\n\tscale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) );\n\t#ifndef USE_SIZEATTENUATION\n\t\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\n\t\tif ( isPerspective ) scale *= - mvPosition.z;\n\t#endif\n\tvec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale;\n\tvec2 rotatedPosition;\n\trotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;\n\trotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;\n\tmvPosition.xy += rotatedPosition;\n\tgl_Position = projectionMatrix * mvPosition;\n\t#include \n\t#include \n\t#include \n}`,mu=`uniform vec3 diffuse;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\toutgoingLight = diffuseColor.rgb;\n\t#include \n\t#include \n\t#include \n\t#include \n}`,wt={alphamap_fragment:Ul,alphamap_pars_fragment:Bl,alphatest_fragment:kl,alphatest_pars_fragment:Vl,aomap_fragment:Gl,aomap_pars_fragment:Hl,begin_vertex:Wl,beginnormal_vertex:Xl,bsdfs:ql,iridescence_fragment:Yl,bumpmap_pars_fragment:Zl,clipping_planes_fragment:Jl,clipping_planes_pars_fragment:$l,clipping_planes_pars_vertex:Kl,clipping_planes_vertex:jl,color_fragment:Ql,color_pars_fragment:tc,color_pars_vertex:ec,color_vertex:nc,common:ic,cube_uv_reflection_fragment:sc,defaultnormal_vertex:rc,displacementmap_pars_vertex:ac,displacementmap_vertex:oc,emissivemap_fragment:lc,emissivemap_pars_fragment:cc,encodings_fragment:hc,encodings_pars_fragment:uc,envmap_fragment:dc,envmap_common_pars_fragment:fc,envmap_pars_fragment:pc,envmap_pars_vertex:mc,envmap_physical_pars_fragment:Ec,envmap_vertex:gc,fog_vertex:_c,fog_pars_vertex:xc,fog_fragment:yc,fog_pars_fragment:vc,gradientmap_pars_fragment:Mc,lightmap_fragment:bc,lightmap_pars_fragment:wc,lights_lambert_fragment:Sc,lights_lambert_pars_fragment:Tc,lights_pars_begin:Ac,lights_toon_fragment:Cc,lights_toon_pars_fragment:Pc,lights_phong_fragment:Rc,lights_phong_pars_fragment:Lc,lights_physical_fragment:Ic,lights_physical_pars_fragment:Dc,lights_fragment_begin:Nc,lights_fragment_maps:Fc,lights_fragment_end:zc,logdepthbuf_fragment:Oc,logdepthbuf_pars_fragment:Uc,logdepthbuf_pars_vertex:Bc,logdepthbuf_vertex:kc,map_fragment:Vc,map_pars_fragment:Gc,map_particle_fragment:Hc,map_particle_pars_fragment:Wc,metalnessmap_fragment:Xc,metalnessmap_pars_fragment:qc,morphcolor_vertex:Yc,morphnormal_vertex:Zc,morphtarget_pars_vertex:Jc,morphtarget_vertex:$c,normal_fragment_begin:Kc,normal_fragment_maps:jc,normal_pars_fragment:Qc,normal_pars_vertex:th,normal_vertex:eh,normalmap_pars_fragment:nh,clearcoat_normal_fragment_begin:ih,clearcoat_normal_fragment_maps:sh,clearcoat_pars_fragment:rh,iridescence_pars_fragment:ah,output_fragment:oh,packing:lh,premultiplied_alpha_fragment:ch,project_vertex:hh,dithering_fragment:uh,dithering_pars_fragment:dh,roughnessmap_fragment:fh,roughnessmap_pars_fragment:ph,shadowmap_pars_fragment:mh,shadowmap_pars_vertex:gh,shadowmap_vertex:_h,shadowmask_pars_fragment:xh,skinbase_vertex:yh,skinning_pars_vertex:vh,skinning_vertex:Mh,skinnormal_vertex:bh,specularmap_fragment:wh,specularmap_pars_fragment:Sh,tonemapping_fragment:Th,tonemapping_pars_fragment:Ah,transmission_fragment:Eh,transmission_pars_fragment:Ch,uv_pars_fragment:Ph,uv_pars_vertex:Rh,uv_vertex:Lh,uv2_pars_fragment:Ih,uv2_pars_vertex:Dh,uv2_vertex:Nh,worldpos_vertex:Fh,background_vert:zh,background_frag:Oh,backgroundCube_vert:Uh,backgroundCube_frag:Bh,cube_vert:kh,cube_frag:Vh,depth_vert:Gh,depth_frag:Hh,distanceRGBA_vert:Wh,distanceRGBA_frag:Xh,equirect_vert:qh,equirect_frag:Yh,linedashed_vert:Zh,linedashed_frag:Jh,meshbasic_vert:$h,meshbasic_frag:Kh,meshlambert_vert:jh,meshlambert_frag:Qh,meshmatcap_vert:tu,meshmatcap_frag:eu,meshnormal_vert:nu,meshnormal_frag:iu,meshphong_vert:su,meshphong_frag:ru,meshphysical_vert:au,meshphysical_frag:ou,meshtoon_vert:lu,meshtoon_frag:cu,points_vert:hu,points_frag:uu,shadow_vert:du,shadow_frag:fu,sprite_vert:pu,sprite_frag:mu},et={common:{diffuse:{value:new Ot(16777215)},opacity:{value:1},map:{value:null},uvTransform:{value:new oe},uv2Transform:{value:new oe},alphaMap:{value:null},alphaTest:{value:0}},specularmap:{specularMap:{value:null}},envmap:{envMap:{value:null},flipEnvMap:{value:-1},reflectivity:{value:1},ior:{value:1.5},refractionRatio:{value:.98}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1}},emissivemap:{emissiveMap:{value:null}},bumpmap:{bumpMap:{value:null},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalScale:{value:new Nt(1,1)}},displacementmap:{displacementMap:{value:null},displacementScale:{value:1},displacementBias:{value:0}},roughnessmap:{roughnessMap:{value:null}},metalnessmap:{metalnessMap:{value:null}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new Ot(16777215)}},lights:{ambientLightColor:{value:[]},lightProbe:{value:[]},directionalLights:{value:[],properties:{direction:{},color:{}}},directionalLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},directionalShadowMap:{value:[]},directionalShadowMatrix:{value:[]},spotLights:{value:[],properties:{color:{},position:{},direction:{},distance:{},coneCos:{},penumbraCos:{},decay:{}}},spotLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},spotLightMap:{value:[]},spotShadowMap:{value:[]},spotLightMatrix:{value:[]},pointLights:{value:[],properties:{color:{},position:{},decay:{},distance:{}}},pointLightShadows:{value:[],properties:{shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{},shadowCameraNear:{},shadowCameraFar:{}}},pointShadowMap:{value:[]},pointShadowMatrix:{value:[]},hemisphereLights:{value:[],properties:{direction:{},skyColor:{},groundColor:{}}},rectAreaLights:{value:[],properties:{color:{},position:{},width:{},height:{}}},ltc_1:{value:null},ltc_2:{value:null}},points:{diffuse:{value:new Ot(16777215)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},alphaTest:{value:0},uvTransform:{value:new oe}},sprite:{diffuse:{value:new Ot(16777215)},opacity:{value:1},center:{value:new Nt(.5,.5)},rotation:{value:0},map:{value:null},alphaMap:{value:null},alphaTest:{value:0},uvTransform:{value:new oe}}},De={basic:{uniforms:re([et.common,et.specularmap,et.envmap,et.aomap,et.lightmap,et.fog]),vertexShader:wt.meshbasic_vert,fragmentShader:wt.meshbasic_frag},lambert:{uniforms:re([et.common,et.specularmap,et.envmap,et.aomap,et.lightmap,et.emissivemap,et.bumpmap,et.normalmap,et.displacementmap,et.fog,et.lights,{emissive:{value:new Ot(0)}}]),vertexShader:wt.meshlambert_vert,fragmentShader:wt.meshlambert_frag},phong:{uniforms:re([et.common,et.specularmap,et.envmap,et.aomap,et.lightmap,et.emissivemap,et.bumpmap,et.normalmap,et.displacementmap,et.fog,et.lights,{emissive:{value:new Ot(0)},specular:{value:new Ot(1118481)},shininess:{value:30}}]),vertexShader:wt.meshphong_vert,fragmentShader:wt.meshphong_frag},standard:{uniforms:re([et.common,et.envmap,et.aomap,et.lightmap,et.emissivemap,et.bumpmap,et.normalmap,et.displacementmap,et.roughnessmap,et.metalnessmap,et.fog,et.lights,{emissive:{value:new Ot(0)},roughness:{value:1},metalness:{value:0},envMapIntensity:{value:1}}]),vertexShader:wt.meshphysical_vert,fragmentShader:wt.meshphysical_frag},toon:{uniforms:re([et.common,et.aomap,et.lightmap,et.emissivemap,et.bumpmap,et.normalmap,et.displacementmap,et.gradientmap,et.fog,et.lights,{emissive:{value:new Ot(0)}}]),vertexShader:wt.meshtoon_vert,fragmentShader:wt.meshtoon_frag},matcap:{uniforms:re([et.common,et.bumpmap,et.normalmap,et.displacementmap,et.fog,{matcap:{value:null}}]),vertexShader:wt.meshmatcap_vert,fragmentShader:wt.meshmatcap_frag},points:{uniforms:re([et.points,et.fog]),vertexShader:wt.points_vert,fragmentShader:wt.points_frag},dashed:{uniforms:re([et.common,et.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:wt.linedashed_vert,fragmentShader:wt.linedashed_frag},depth:{uniforms:re([et.common,et.displacementmap]),vertexShader:wt.depth_vert,fragmentShader:wt.depth_frag},normal:{uniforms:re([et.common,et.bumpmap,et.normalmap,et.displacementmap,{opacity:{value:1}}]),vertexShader:wt.meshnormal_vert,fragmentShader:wt.meshnormal_frag},sprite:{uniforms:re([et.sprite,et.fog]),vertexShader:wt.sprite_vert,fragmentShader:wt.sprite_frag},background:{uniforms:{uvTransform:{value:new oe},t2D:{value:null},backgroundIntensity:{value:1}},vertexShader:wt.background_vert,fragmentShader:wt.background_frag},backgroundCube:{uniforms:{envMap:{value:null},flipEnvMap:{value:-1},backgroundBlurriness:{value:0},backgroundIntensity:{value:1}},vertexShader:wt.backgroundCube_vert,fragmentShader:wt.backgroundCube_frag},cube:{uniforms:{tCube:{value:null},tFlip:{value:-1},opacity:{value:1}},vertexShader:wt.cube_vert,fragmentShader:wt.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:wt.equirect_vert,fragmentShader:wt.equirect_frag},distanceRGBA:{uniforms:re([et.common,et.displacementmap,{referencePosition:{value:new N},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:wt.distanceRGBA_vert,fragmentShader:wt.distanceRGBA_frag},shadow:{uniforms:re([et.lights,et.fog,{color:{value:new Ot(0)},opacity:{value:1}}]),vertexShader:wt.shadow_vert,fragmentShader:wt.shadow_frag}};De.physical={uniforms:re([De.standard.uniforms,{clearcoat:{value:0},clearcoatMap:{value:null},clearcoatRoughness:{value:0},clearcoatRoughnessMap:{value:null},clearcoatNormalScale:{value:new Nt(1,1)},clearcoatNormalMap:{value:null},iridescence:{value:0},iridescenceMap:{value:null},iridescenceIOR:{value:1.3},iridescenceThicknessMinimum:{value:100},iridescenceThicknessMaximum:{value:400},iridescenceThicknessMap:{value:null},sheen:{value:0},sheenColor:{value:new Ot(0)},sheenColorMap:{value:null},sheenRoughness:{value:1},sheenRoughnessMap:{value:null},transmission:{value:0},transmissionMap:{value:null},transmissionSamplerSize:{value:new Nt},transmissionSamplerMap:{value:null},thickness:{value:0},thicknessMap:{value:null},attenuationDistance:{value:0},attenuationColor:{value:new Ot(0)},specularIntensity:{value:1},specularIntensityMap:{value:null},specularColor:{value:new Ot(1,1,1)},specularColorMap:{value:null}}]),vertexShader:wt.meshphysical_vert,fragmentShader:wt.meshphysical_frag};var zi={r:0,b:0,g:0};function gu(r,t,e,n,i,s,o){let a=new Ot(0),c=s===!0?0:1,l,h,f=null,u=0,m=null;function _(d,v){let T=!1,b=v.isScene===!0?v.background:null;b&&b.isTexture&&(b=(v.backgroundBlurriness>0?e:t).get(b));let M=r.xr,A=M.getSession&&M.getSession();A&&A.environmentBlendMode==="additive"&&(b=null),b===null?p(a,c):b&&b.isColor&&(p(b,1),T=!0),(r.autoClear||T)&&r.clear(r.autoClearColor,r.autoClearDepth,r.autoClearStencil),b&&(b.isCubeTexture||b.mapping===ns)?(h===void 0&&(h=new Ne(new bn(1,1,1),new Ze({name:"BackgroundCubeMaterial",uniforms:$n(De.backgroundCube.uniforms),vertexShader:De.backgroundCube.vertexShader,fragmentShader:De.backgroundCube.fragmentShader,side:ye,depthTest:!1,depthWrite:!1,fog:!1})),h.geometry.deleteAttribute("normal"),h.geometry.deleteAttribute("uv"),h.onBeforeRender=function(C,I,x){this.matrixWorld.copyPosition(x.matrixWorld)},Object.defineProperty(h.material,"envMap",{get:function(){return this.uniforms.envMap.value}}),i.update(h)),h.material.uniforms.envMap.value=b,h.material.uniforms.flipEnvMap.value=b.isCubeTexture&&b.isRenderTargetTexture===!1?-1:1,h.material.uniforms.backgroundBlurriness.value=v.backgroundBlurriness,h.material.uniforms.backgroundIntensity.value=v.backgroundIntensity,h.material.toneMapped=b.encoding!==zt,(f!==b||u!==b.version||m!==r.toneMapping)&&(h.material.needsUpdate=!0,f=b,u=b.version,m=r.toneMapping),h.layers.enableAll(),d.unshift(h,h.geometry,h.material,0,0,null)):b&&b.isTexture&&(l===void 0&&(l=new Ne(new xi(2,2),new Ze({name:"BackgroundMaterial",uniforms:$n(De.background.uniforms),vertexShader:De.background.vertexShader,fragmentShader:De.background.fragmentShader,side:nn,depthTest:!1,depthWrite:!1,fog:!1})),l.geometry.deleteAttribute("normal"),Object.defineProperty(l.material,"map",{get:function(){return this.uniforms.t2D.value}}),i.update(l)),l.material.uniforms.t2D.value=b,l.material.uniforms.backgroundIntensity.value=v.backgroundIntensity,l.material.toneMapped=b.encoding!==zt,b.matrixAutoUpdate===!0&&b.updateMatrix(),l.material.uniforms.uvTransform.value.copy(b.matrix),(f!==b||u!==b.version||m!==r.toneMapping)&&(l.material.needsUpdate=!0,f=b,u=b.version,m=r.toneMapping),l.layers.enableAll(),d.unshift(l,l.geometry,l.material,0,0,null))}function p(d,v){d.getRGB(zi,Ka(r)),n.buffers.color.setClear(zi.r,zi.g,zi.b,v,o)}return{getClearColor:function(){return a},setClearColor:function(d,v=1){a.set(d),c=v,p(a,c)},getClearAlpha:function(){return c},setClearAlpha:function(d){c=d,p(a,c)},render:_}}function _u(r,t,e,n){let i=r.getParameter(34921),s=n.isWebGL2?null:t.get("OES_vertex_array_object"),o=n.isWebGL2||s!==null,a={},c=d(null),l=c,h=!1;function f(R,G,Y,j,W){let Q=!1;if(o){let Z=p(j,Y,G);l!==Z&&(l=Z,m(l.object)),Q=v(R,j,Y,W),Q&&T(R,j,Y,W)}else{let Z=G.wireframe===!0;(l.geometry!==j.id||l.program!==Y.id||l.wireframe!==Z)&&(l.geometry=j.id,l.program=Y.id,l.wireframe=Z,Q=!0)}W!==null&&e.update(W,34963),(Q||h)&&(h=!1,x(R,G,Y,j),W!==null&&r.bindBuffer(34963,e.get(W).buffer))}function u(){return n.isWebGL2?r.createVertexArray():s.createVertexArrayOES()}function m(R){return n.isWebGL2?r.bindVertexArray(R):s.bindVertexArrayOES(R)}function _(R){return n.isWebGL2?r.deleteVertexArray(R):s.deleteVertexArrayOES(R)}function p(R,G,Y){let j=Y.wireframe===!0,W=a[R.id];W===void 0&&(W={},a[R.id]=W);let Q=W[G.id];Q===void 0&&(Q={},W[G.id]=Q);let Z=Q[j];return Z===void 0&&(Z=d(u()),Q[j]=Z),Z}function d(R){let G=[],Y=[],j=[];for(let W=0;W=0){let nt=W[F],it=Q[F];if(it===void 0&&(F==="instanceMatrix"&&R.instanceMatrix&&(it=R.instanceMatrix),F==="instanceColor"&&R.instanceColor&&(it=R.instanceColor)),nt===void 0||nt.attribute!==it||it&&nt.data!==it.data)return!0;Z++}return l.attributesNum!==Z||l.index!==j}function T(R,G,Y,j){let W={},Q=G.attributes,Z=0,ft=Y.getAttributes();for(let F in ft)if(ft[F].location>=0){let nt=Q[F];nt===void 0&&(F==="instanceMatrix"&&R.instanceMatrix&&(nt=R.instanceMatrix),F==="instanceColor"&&R.instanceColor&&(nt=R.instanceColor));let it={};it.attribute=nt,nt&&nt.data&&(it.data=nt.data),W[F]=it,Z++}l.attributes=W,l.attributesNum=Z,l.index=j}function b(){let R=l.newAttributes;for(let G=0,Y=R.length;G=0){let J=W[ft];if(J===void 0&&(ft==="instanceMatrix"&&R.instanceMatrix&&(J=R.instanceMatrix),ft==="instanceColor"&&R.instanceColor&&(J=R.instanceColor)),J!==void 0){let nt=J.normalized,it=J.itemSize,O=e.get(J);if(O===void 0)continue;let Mt=O.buffer,ht=O.type,ut=O.bytesPerElement;if(J.isInterleavedBufferAttribute){let ot=J.data,Ft=ot.stride,bt=J.offset;if(ot.isInstancedInterleavedBuffer){for(let xt=0;xt0&&r.getShaderPrecisionFormat(35632,36338).precision>0)return"highp";I="mediump"}return I==="mediump"&&r.getShaderPrecisionFormat(35633,36337).precision>0&&r.getShaderPrecisionFormat(35632,36337).precision>0?"mediump":"lowp"}let o=typeof WebGL2RenderingContext!="undefined"&&r instanceof WebGL2RenderingContext,a=e.precision!==void 0?e.precision:"highp",c=s(a);c!==a&&(console.warn("THREE.WebGLRenderer:",a,"not supported, using",c,"instead."),a=c);let l=o||t.has("WEBGL_draw_buffers"),h=e.logarithmicDepthBuffer===!0,f=r.getParameter(34930),u=r.getParameter(35660),m=r.getParameter(3379),_=r.getParameter(34076),p=r.getParameter(34921),d=r.getParameter(36347),v=r.getParameter(36348),T=r.getParameter(36349),b=u>0,M=o||t.has("OES_texture_float"),A=b&&M,C=o?r.getParameter(36183):0;return{isWebGL2:o,drawBuffers:l,getMaxAnisotropy:i,getMaxPrecision:s,precision:a,logarithmicDepthBuffer:h,maxTextures:f,maxVertexTextures:u,maxTextureSize:m,maxCubemapSize:_,maxAttributes:p,maxVertexUniforms:d,maxVaryings:v,maxFragmentUniforms:T,vertexTextures:b,floatFragmentTextures:M,floatVertexTextures:A,maxSamples:C}}function vu(r){let t=this,e=null,n=0,i=!1,s=!1,o=new He,a=new oe,c={value:null,needsUpdate:!1};this.uniform=c,this.numPlanes=0,this.numIntersection=0,this.init=function(f,u){let m=f.length!==0||u||n!==0||i;return i=u,n=f.length,m},this.beginShadows=function(){s=!0,h(null)},this.endShadows=function(){s=!1},this.setGlobalState=function(f,u){e=h(f,u,0)},this.setState=function(f,u,m){let _=f.clippingPlanes,p=f.clipIntersection,d=f.clipShadows,v=r.get(f);if(!i||_===null||_.length===0||s&&!d)s?h(null):l();else{let T=s?0:n,b=T*4,M=v.clippingState||null;c.value=M,M=h(_,u,b,m);for(let A=0;A!==b;++A)M[A]=e[A];v.clippingState=M,this.numIntersection=p?this.numPlanes:0,this.numPlanes+=T}};function l(){c.value!==e&&(c.value=e,c.needsUpdate=n>0),t.numPlanes=n,t.numIntersection=0}function h(f,u,m,_){let p=f!==null?f.length:0,d=null;if(p!==0){if(d=c.value,_!==!0||d===null){let v=m+p*4,T=u.matrixWorldInverse;a.getNormalMatrix(T),(d===null||d.length0){let l=new js(c.height/2);return l.fromEquirectangularTexture(r,o),t.set(o,l),o.addEventListener("dispose",i),e(l.texture,o.mapping)}else return null}}return o}function i(o){let a=o.target;a.removeEventListener("dispose",i);let c=t.get(a);c!==void 0&&(t.delete(a),c.dispose())}function s(){t=new WeakMap}return{get:n,dispose:s}}var Qs=class extends ji{constructor(t=-1,e=1,n=1,i=-1,s=.1,o=2e3){super(),this.isOrthographicCamera=!0,this.type="OrthographicCamera",this.zoom=1,this.view=null,this.left=t,this.right=e,this.top=n,this.bottom=i,this.near=s,this.far=o,this.updateProjectionMatrix()}copy(t,e){return super.copy(t,e),this.left=t.left,this.right=t.right,this.top=t.top,this.bottom=t.bottom,this.near=t.near,this.far=t.far,this.zoom=t.zoom,this.view=t.view===null?null:Object.assign({},t.view),this}setViewOffset(t,e,n,i,s,o){this.view===null&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=t,this.view.fullHeight=e,this.view.offsetX=n,this.view.offsetY=i,this.view.width=s,this.view.height=o,this.updateProjectionMatrix()}clearViewOffset(){this.view!==null&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){let t=(this.right-this.left)/(2*this.zoom),e=(this.top-this.bottom)/(2*this.zoom),n=(this.right+this.left)/2,i=(this.top+this.bottom)/2,s=n-t,o=n+t,a=i+e,c=i-e;if(this.view!==null&&this.view.enabled){let l=(this.right-this.left)/this.view.fullWidth/this.zoom,h=(this.top-this.bottom)/this.view.fullHeight/this.zoom;s+=l*this.view.offsetX,o=s+l*this.view.width,a-=h*this.view.offsetY,c=a-h*this.view.height}this.projectionMatrix.makeOrthographic(s,o,a,c,this.near,this.far),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(t){let e=super.toJSON(t);return e.object.zoom=this.zoom,e.object.left=this.left,e.object.right=this.right,e.object.top=this.top,e.object.bottom=this.bottom,e.object.near=this.near,e.object.far=this.far,this.view!==null&&(e.object.view=Object.assign({},this.view)),e}},kn=4,Ma=[.125,.215,.35,.446,.526,.582],pn=20,Bs=new Qs,ba=new Ot,ks=null,fn=(1+Math.sqrt(5))/2,Un=1/fn,wa=[new N(1,1,1),new N(-1,1,1),new N(1,1,-1),new N(-1,1,-1),new N(0,fn,Un),new N(0,fn,-Un),new N(Un,0,fn),new N(-Un,0,fn),new N(fn,Un,0),new N(-fn,Un,0)],es=class{constructor(t){this._renderer=t,this._pingPongRenderTarget=null,this._lodMax=0,this._cubeSize=0,this._lodPlanes=[],this._sizeLods=[],this._sigmas=[],this._blurMaterial=null,this._cubemapMaterial=null,this._equirectMaterial=null,this._compileMaterial(this._blurMaterial)}fromScene(t,e=0,n=.1,i=100){ks=this._renderer.getRenderTarget(),this._setSize(256);let s=this._allocateTargets();return s.depthBuffer=!0,this._sceneToCubeUV(t,n,i,s),e>0&&this._blur(s,0,0,e),this._applyPMREM(s),this._cleanup(s),s}fromEquirectangular(t,e=null){return this._fromTexture(t,e)}fromCubemap(t,e=null){return this._fromTexture(t,e)}compileCubemapShader(){this._cubemapMaterial===null&&(this._cubemapMaterial=Aa(),this._compileMaterial(this._cubemapMaterial))}compileEquirectangularShader(){this._equirectMaterial===null&&(this._equirectMaterial=Ta(),this._compileMaterial(this._equirectMaterial))}dispose(){this._dispose(),this._cubemapMaterial!==null&&this._cubemapMaterial.dispose(),this._equirectMaterial!==null&&this._equirectMaterial.dispose()}_setSize(t){this._lodMax=Math.floor(Math.log2(t)),this._cubeSize=Math.pow(2,this._lodMax)}_dispose(){this._blurMaterial!==null&&this._blurMaterial.dispose(),this._pingPongRenderTarget!==null&&this._pingPongRenderTarget.dispose();for(let t=0;t2?b:0,b,b),h.setRenderTarget(i),p&&h.render(_,a),h.render(t,a)}_.geometry.dispose(),_.material.dispose(),h.toneMapping=u,h.autoClear=f,t.background=d}_textureToCubeUV(t,e){let n=this._renderer,i=t.mapping===Xn||t.mapping===qn;i?(this._cubemapMaterial===null&&(this._cubemapMaterial=Aa()),this._cubemapMaterial.uniforms.flipEnvMap.value=t.isRenderTargetTexture===!1?-1:1):this._equirectMaterial===null&&(this._equirectMaterial=Ta());let s=i?this._cubemapMaterial:this._equirectMaterial,o=new Ne(this._lodPlanes[0],s),a=s.uniforms;a.envMap.value=t;let c=this._cubeSize;Oi(e,0,0,3*c,2*c),n.setRenderTarget(e),n.render(o,Bs)}_applyPMREM(t){let e=this._renderer,n=e.autoClear;e.autoClear=!1;for(let i=1;ipn&&console.warn(`sigmaRadians, ${s}, is too large and will clip, as it requested ${d} samples when the maximum is set to ${pn}`);let v=[],T=0;for(let I=0;Ib-kn?i-b+kn:0),C=4*(this._cubeSize-M);Oi(e,A,C,3*M,2*M),c.setRenderTarget(e),c.render(f,Bs)}};function bu(r){let t=[],e=[],n=[],i=r,s=r-kn+1+Ma.length;for(let o=0;or-kn?c=Ma[o-r+kn-1]:o===0&&(c=0),n.push(c);let l=1/(a-2),h=-l,f=1+l,u=[h,h,f,h,f,f,h,h,f,f,h,f],m=6,_=6,p=3,d=2,v=1,T=new Float32Array(p*_*m),b=new Float32Array(d*_*m),M=new Float32Array(v*_*m);for(let C=0;C2?0:-1,S=[I,x,0,I+2/3,x,0,I+2/3,x+1,0,I,x,0,I+2/3,x+1,0,I,x+1,0];T.set(S,p*_*C),b.set(u,d*_*C);let L=[C,C,C,C,C,C];M.set(L,v*_*C)}let A=new Ye;A.setAttribute("position",new ce(T,p)),A.setAttribute("uv",new ce(b,d)),A.setAttribute("faceIndex",new ce(M,v)),t.push(A),i>kn&&i--}return{lodPlanes:t,sizeLods:e,sigmas:n}}function Sa(r,t,e){let n=new qe(r,t,e);return n.texture.mapping=ns,n.texture.name="PMREM.cubeUv",n.scissorTest=!0,n}function Oi(r,t,e,n,i){r.viewport.set(t,e,n,i),r.scissor.set(t,e,n,i)}function wu(r,t,e){let n=new Float32Array(pn),i=new N(0,1,0);return new Ze({name:"SphericalGaussianBlur",defines:{n:pn,CUBEUV_TEXEL_WIDTH:1/t,CUBEUV_TEXEL_HEIGHT:1/e,CUBEUV_MAX_MIP:`${r}.0`},uniforms:{envMap:{value:null},samples:{value:1},weights:{value:n},latitudinal:{value:!1},dTheta:{value:0},mipInt:{value:0},poleAxis:{value:i}},vertexShader:br(),fragmentShader:`\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\t\t\tuniform int samples;\n\t\t\tuniform float weights[ n ];\n\t\t\tuniform bool latitudinal;\n\t\t\tuniform float dTheta;\n\t\t\tuniform float mipInt;\n\t\t\tuniform vec3 poleAxis;\n\n\t\t\t#define ENVMAP_TYPE_CUBE_UV\n\t\t\t#include \n\n\t\t\tvec3 getSample( float theta, vec3 axis ) {\n\n\t\t\t\tfloat cosTheta = cos( theta );\n\t\t\t\t// Rodrigues\' axis-angle rotation\n\t\t\t\tvec3 sampleDirection = vOutputDirection * cosTheta\n\t\t\t\t\t+ cross( axis, vOutputDirection ) * sin( theta )\n\t\t\t\t\t+ axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta );\n\n\t\t\t\treturn bilinearCubeUV( envMap, sampleDirection, mipInt );\n\n\t\t\t}\n\n\t\t\tvoid main() {\n\n\t\t\t\tvec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection );\n\n\t\t\t\tif ( all( equal( axis, vec3( 0.0 ) ) ) ) {\n\n\t\t\t\t\taxis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x );\n\n\t\t\t\t}\n\n\t\t\t\taxis = normalize( axis );\n\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n\t\t\t\tgl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis );\n\n\t\t\t\tfor ( int i = 1; i < n; i++ ) {\n\n\t\t\t\t\tif ( i >= samples ) {\n\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t}\n\n\t\t\t\t\tfloat theta = dTheta * float( i );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis );\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( theta, axis );\n\n\t\t\t\t}\n\n\t\t\t}\n\t\t`,blending:en,depthTest:!1,depthWrite:!1})}function Ta(){return new Ze({name:"EquirectangularToCubeUV",uniforms:{envMap:{value:null}},vertexShader:br(),fragmentShader:`\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform sampler2D envMap;\n\n\t\t\t#include \n\n\t\t\tvoid main() {\n\n\t\t\t\tvec3 outputDirection = normalize( vOutputDirection );\n\t\t\t\tvec2 uv = equirectUv( outputDirection );\n\n\t\t\t\tgl_FragColor = vec4( texture2D ( envMap, uv ).rgb, 1.0 );\n\n\t\t\t}\n\t\t`,blending:en,depthTest:!1,depthWrite:!1})}function Aa(){return new Ze({name:"CubemapToCubeUV",uniforms:{envMap:{value:null},flipEnvMap:{value:-1}},vertexShader:br(),fragmentShader:`\n\n\t\t\tprecision mediump float;\n\t\t\tprecision mediump int;\n\n\t\t\tuniform float flipEnvMap;\n\n\t\t\tvarying vec3 vOutputDirection;\n\n\t\t\tuniform samplerCube envMap;\n\n\t\t\tvoid main() {\n\n\t\t\t\tgl_FragColor = textureCube( envMap, vec3( flipEnvMap * vOutputDirection.x, vOutputDirection.yz ) );\n\n\t\t\t}\n\t\t`,blending:en,depthTest:!1,depthWrite:!1})}function br(){return`\n\n\t\tprecision mediump float;\n\t\tprecision mediump int;\n\n\t\tattribute float faceIndex;\n\n\t\tvarying vec3 vOutputDirection;\n\n\t\t// RH coordinate system; PMREM face-indexing convention\n\t\tvec3 getDirection( vec2 uv, float face ) {\n\n\t\t\tuv = 2.0 * uv - 1.0;\n\n\t\t\tvec3 direction = vec3( uv, 1.0 );\n\n\t\t\tif ( face == 0.0 ) {\n\n\t\t\t\tdirection = direction.zyx; // ( 1, v, u ) pos x\n\n\t\t\t} else if ( face == 1.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xz *= -1.0; // ( -u, 1, -v ) pos y\n\n\t\t\t} else if ( face == 2.0 ) {\n\n\t\t\t\tdirection.x *= -1.0; // ( -u, v, 1 ) pos z\n\n\t\t\t} else if ( face == 3.0 ) {\n\n\t\t\t\tdirection = direction.zyx;\n\t\t\t\tdirection.xz *= -1.0; // ( -1, v, -u ) neg x\n\n\t\t\t} else if ( face == 4.0 ) {\n\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xy *= -1.0; // ( -u, -1, v ) neg y\n\n\t\t\t} else if ( face == 5.0 ) {\n\n\t\t\t\tdirection.z *= -1.0; // ( u, v, -1 ) neg z\n\n\t\t\t}\n\n\t\t\treturn direction;\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tvOutputDirection = getDirection( uv, faceIndex );\n\t\t\tgl_Position = vec4( position, 1.0 );\n\n\t\t}\n\t`}function Su(r){let t=new WeakMap,e=null;function n(a){if(a&&a.isTexture){let c=a.mapping,l=c===Hs||c===Ws,h=c===Xn||c===qn;if(l||h)if(a.isRenderTargetTexture&&a.needsPMREMUpdate===!0){a.needsPMREMUpdate=!1;let f=t.get(a);return e===null&&(e=new es(r)),f=l?e.fromEquirectangular(a,f):e.fromCubemap(a,f),t.set(a,f),f.texture}else{if(t.has(a))return t.get(a).texture;{let f=a.image;if(l&&f&&f.height>0||h&&f&&i(f)){e===null&&(e=new es(r));let u=l?e.fromEquirectangular(a):e.fromCubemap(a);return t.set(a,u),a.addEventListener("dispose",s),u.texture}else return null}}}return a}function i(a){let c=0,l=6;for(let h=0;ht.maxTextureSize&&(X=Math.ceil(L/t.maxTextureSize),L=t.maxTextureSize);let q=new Float32Array(L*X*4*p),z=new Yi(q,L,X,p);z.type=gn,z.needsUpdate=!0;let R=S*4;for(let Y=0;Y0)return r;let i=t*e,s=Ea[i];if(s===void 0&&(s=new Float32Array(i),Ea[i]=s),t!==0){n.toArray(s,0);for(let o=1,a=0;o!==t;++o)a+=e,r[o].toArray(s,a)}return s}function Yt(r,t){if(r.length!==t.length)return!1;for(let e=0,n=r.length;e":" "} ${a}: ${e[o]}`)}return n.join(`\n`)}function bd(r){switch(r){case vn:return["Linear","( value )"];case zt:return["sRGB","( value )"];default:return console.warn("THREE.WebGLProgram: Unsupported encoding:",r),["Linear","( value )"]}}function Na(r,t,e){let n=r.getShaderParameter(t,35713),i=r.getShaderInfoLog(t).trim();if(n&&i==="")return"";let s=/ERROR: 0:(\\d+)/.exec(i);if(s){let o=parseInt(s[1]);return e.toUpperCase()+`\n\n`+i+`\n\n`+Md(r.getShaderSource(t),o)}else return i}function wd(r,t){let e=bd(t);return"vec4 "+r+"( vec4 value ) { return LinearTo"+e[0]+e[1]+"; }"}function Sd(r,t){let e;switch(t){case No:e="Linear";break;case Fo:e="Reinhard";break;case zo:e="OptimizedCineon";break;case Oo:e="ACESFilmic";break;case Uo:e="Custom";break;default:console.warn("THREE.WebGLProgram: Unsupported toneMapping:",t),e="Linear"}return"vec3 "+r+"( vec3 color ) { return "+e+"ToneMapping( color ); }"}function Td(r){return[r.extensionDerivatives||r.envMapCubeUVHeight||r.bumpMap||r.tangentSpaceNormalMap||r.clearcoatNormalMap||r.flatShading||r.shaderID==="physical"?"#extension GL_OES_standard_derivatives : enable":"",(r.extensionFragDepth||r.logarithmicDepthBuffer)&&r.rendererExtensionFragDepth?"#extension GL_EXT_frag_depth : enable":"",r.extensionDrawBuffers&&r.rendererExtensionDrawBuffers?"#extension GL_EXT_draw_buffers : require":"",(r.extensionShaderTextureLOD||r.envMap||r.transmission)&&r.rendererExtensionShaderTextureLod?"#extension GL_EXT_shader_texture_lod : enable":""].filter(hi).join(`\n`)}function Ad(r){let t=[];for(let e in r){let n=r[e];n!==!1&&t.push("#define "+e+" "+n)}return t.join(`\n`)}function Ed(r,t){let e={},n=r.getProgramParameter(t,35721);for(let i=0;i/gm;function ir(r){return r.replace(Cd,Pd)}function Pd(r,t){let e=wt[t];if(e===void 0)throw new Error("Can not resolve #include <"+t+">");return ir(e)}var Rd=/#pragma unroll_loop_start\\s+for\\s*\\(\\s*int\\s+i\\s*=\\s*(\\d+)\\s*;\\s*i\\s*<\\s*(\\d+)\\s*;\\s*i\\s*\\+\\+\\s*\\)\\s*{([\\s\\S]+?)}\\s+#pragma unroll_loop_end/g;function Oa(r){return r.replace(Rd,Ld)}function Ld(r,t,e,n){let i="";for(let s=parseInt(t);s0&&(d+=`\n`),v=[m,_].filter(hi).join(`\n`),v.length>0&&(v+=`\n`)):(d=[Ua(e),"#define SHADER_NAME "+e.shaderName,_,e.instancing?"#define USE_INSTANCING":"",e.instancingColor?"#define USE_INSTANCING_COLOR":"",e.supportsVertexTextures?"#define VERTEX_TEXTURES":"",e.useFog&&e.fog?"#define USE_FOG":"",e.useFog&&e.fogExp2?"#define FOG_EXP2":"",e.map?"#define USE_MAP":"",e.envMap?"#define USE_ENVMAP":"",e.envMap?"#define "+h:"",e.lightMap?"#define USE_LIGHTMAP":"",e.aoMap?"#define USE_AOMAP":"",e.emissiveMap?"#define USE_EMISSIVEMAP":"",e.bumpMap?"#define USE_BUMPMAP":"",e.normalMap?"#define USE_NORMALMAP":"",e.normalMap&&e.objectSpaceNormalMap?"#define OBJECTSPACE_NORMALMAP":"",e.normalMap&&e.tangentSpaceNormalMap?"#define TANGENTSPACE_NORMALMAP":"",e.clearcoatMap?"#define USE_CLEARCOATMAP":"",e.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",e.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",e.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",e.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",e.displacementMap&&e.supportsVertexTextures?"#define USE_DISPLACEMENTMAP":"",e.specularMap?"#define USE_SPECULARMAP":"",e.specularIntensityMap?"#define USE_SPECULARINTENSITYMAP":"",e.specularColorMap?"#define USE_SPECULARCOLORMAP":"",e.roughnessMap?"#define USE_ROUGHNESSMAP":"",e.metalnessMap?"#define USE_METALNESSMAP":"",e.alphaMap?"#define USE_ALPHAMAP":"",e.transmission?"#define USE_TRANSMISSION":"",e.transmissionMap?"#define USE_TRANSMISSIONMAP":"",e.thicknessMap?"#define USE_THICKNESSMAP":"",e.sheenColorMap?"#define USE_SHEENCOLORMAP":"",e.sheenRoughnessMap?"#define USE_SHEENROUGHNESSMAP":"",e.vertexTangents?"#define USE_TANGENT":"",e.vertexColors?"#define USE_COLOR":"",e.vertexAlphas?"#define USE_COLOR_ALPHA":"",e.vertexUvs?"#define USE_UV":"",e.uvsVertexOnly?"#define UVS_VERTEX_ONLY":"",e.flatShading?"#define FLAT_SHADED":"",e.skinning?"#define USE_SKINNING":"",e.morphTargets?"#define USE_MORPHTARGETS":"",e.morphNormals&&e.flatShading===!1?"#define USE_MORPHNORMALS":"",e.morphColors&&e.isWebGL2?"#define USE_MORPHCOLORS":"",e.morphTargetsCount>0&&e.isWebGL2?"#define MORPHTARGETS_TEXTURE":"",e.morphTargetsCount>0&&e.isWebGL2?"#define MORPHTARGETS_TEXTURE_STRIDE "+e.morphTextureStride:"",e.morphTargetsCount>0&&e.isWebGL2?"#define MORPHTARGETS_COUNT "+e.morphTargetsCount:"",e.doubleSided?"#define DOUBLE_SIDED":"",e.flipSided?"#define FLIP_SIDED":"",e.shadowMapEnabled?"#define USE_SHADOWMAP":"",e.shadowMapEnabled?"#define "+c:"",e.sizeAttenuation?"#define USE_SIZEATTENUATION":"",e.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",e.logarithmicDepthBuffer&&e.rendererExtensionFragDepth?"#define USE_LOGDEPTHBUF_EXT":"","uniform mat4 modelMatrix;","uniform mat4 modelViewMatrix;","uniform mat4 projectionMatrix;","uniform mat4 viewMatrix;","uniform mat3 normalMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;","#ifdef USE_INSTANCING","\tattribute mat4 instanceMatrix;","#endif","#ifdef USE_INSTANCING_COLOR","\tattribute vec3 instanceColor;","#endif","attribute vec3 position;","attribute vec3 normal;","attribute vec2 uv;","#ifdef USE_TANGENT","\tattribute vec4 tangent;","#endif","#if defined( USE_COLOR_ALPHA )","\tattribute vec4 color;","#elif defined( USE_COLOR )","\tattribute vec3 color;","#endif","#if ( defined( USE_MORPHTARGETS ) && ! defined( MORPHTARGETS_TEXTURE ) )","\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",`\n`].filter(hi).join(`\n`),v=[m,Ua(e),"#define SHADER_NAME "+e.shaderName,_,e.useFog&&e.fog?"#define USE_FOG":"",e.useFog&&e.fogExp2?"#define FOG_EXP2":"",e.map?"#define USE_MAP":"",e.matcap?"#define USE_MATCAP":"",e.envMap?"#define USE_ENVMAP":"",e.envMap?"#define "+l:"",e.envMap?"#define "+h:"",e.envMap?"#define "+f:"",u?"#define CUBEUV_TEXEL_WIDTH "+u.texelWidth:"",u?"#define CUBEUV_TEXEL_HEIGHT "+u.texelHeight:"",u?"#define CUBEUV_MAX_MIP "+u.maxMip+".0":"",e.lightMap?"#define USE_LIGHTMAP":"",e.aoMap?"#define USE_AOMAP":"",e.emissiveMap?"#define USE_EMISSIVEMAP":"",e.bumpMap?"#define USE_BUMPMAP":"",e.normalMap?"#define USE_NORMALMAP":"",e.normalMap&&e.objectSpaceNormalMap?"#define OBJECTSPACE_NORMALMAP":"",e.normalMap&&e.tangentSpaceNormalMap?"#define TANGENTSPACE_NORMALMAP":"",e.clearcoat?"#define USE_CLEARCOAT":"",e.clearcoatMap?"#define USE_CLEARCOATMAP":"",e.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",e.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",e.iridescence?"#define USE_IRIDESCENCE":"",e.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",e.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",e.specularMap?"#define USE_SPECULARMAP":"",e.specularIntensityMap?"#define USE_SPECULARINTENSITYMAP":"",e.specularColorMap?"#define USE_SPECULARCOLORMAP":"",e.roughnessMap?"#define USE_ROUGHNESSMAP":"",e.metalnessMap?"#define USE_METALNESSMAP":"",e.alphaMap?"#define USE_ALPHAMAP":"",e.alphaTest?"#define USE_ALPHATEST":"",e.sheen?"#define USE_SHEEN":"",e.sheenColorMap?"#define USE_SHEENCOLORMAP":"",e.sheenRoughnessMap?"#define USE_SHEENROUGHNESSMAP":"",e.transmission?"#define USE_TRANSMISSION":"",e.transmissionMap?"#define USE_TRANSMISSIONMAP":"",e.thicknessMap?"#define USE_THICKNESSMAP":"",e.decodeVideoTexture?"#define DECODE_VIDEO_TEXTURE":"",e.vertexTangents?"#define USE_TANGENT":"",e.vertexColors||e.instancingColor?"#define USE_COLOR":"",e.vertexAlphas?"#define USE_COLOR_ALPHA":"",e.vertexUvs?"#define USE_UV":"",e.uvsVertexOnly?"#define UVS_VERTEX_ONLY":"",e.gradientMap?"#define USE_GRADIENTMAP":"",e.flatShading?"#define FLAT_SHADED":"",e.doubleSided?"#define DOUBLE_SIDED":"",e.flipSided?"#define FLIP_SIDED":"",e.shadowMapEnabled?"#define USE_SHADOWMAP":"",e.shadowMapEnabled?"#define "+c:"",e.premultipliedAlpha?"#define PREMULTIPLIED_ALPHA":"",e.physicallyCorrectLights?"#define PHYSICALLY_CORRECT_LIGHTS":"",e.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",e.logarithmicDepthBuffer&&e.rendererExtensionFragDepth?"#define USE_LOGDEPTHBUF_EXT":"","uniform mat4 viewMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;",e.toneMapping!==We?"#define TONE_MAPPING":"",e.toneMapping!==We?wt.tonemapping_pars_fragment:"",e.toneMapping!==We?Sd("toneMapping",e.toneMapping):"",e.dithering?"#define DITHERING":"",e.opaque?"#define OPAQUE":"",wt.encodings_pars_fragment,wd("linearToOutputTexel",e.outputEncoding),e.useDepthPacking?"#define DEPTH_PACKING "+e.depthPacking:"",`\n`].filter(hi).join(`\n`)),o=ir(o),o=Fa(o,e),o=za(o,e),a=ir(a),a=Fa(a,e),a=za(a,e),o=Oa(o),a=Oa(a),e.isWebGL2&&e.isRawShaderMaterial!==!0&&(T=`#version 300 es\n`,d=["precision mediump sampler2DArray;","#define attribute in","#define varying out","#define texture2D texture"].join(`\n`)+`\n`+d,v=["#define varying in",e.glslVersion===ca?"":"layout(location = 0) out highp vec4 pc_fragColor;",e.glslVersion===ca?"":"#define gl_FragColor pc_fragColor","#define gl_FragDepthEXT gl_FragDepth","#define texture2D texture","#define textureCube texture","#define texture2DProj textureProj","#define texture2DLodEXT textureLod","#define texture2DProjLodEXT textureProjLod","#define textureCubeLodEXT textureLod","#define texture2DGradEXT textureGrad","#define texture2DProjGradEXT textureProjGrad","#define textureCubeGradEXT textureGrad"].join(`\n`)+`\n`+v);let b=T+d+o,M=T+v+a,A=Da(i,35633,b),C=Da(i,35632,M);if(i.attachShader(p,A),i.attachShader(p,C),e.index0AttributeName!==void 0?i.bindAttribLocation(p,0,e.index0AttributeName):e.morphTargets===!0&&i.bindAttribLocation(p,0,"position"),i.linkProgram(p),r.debug.checkShaderErrors){let S=i.getProgramInfoLog(p).trim(),L=i.getShaderInfoLog(A).trim(),X=i.getShaderInfoLog(C).trim(),q=!0,z=!0;if(i.getProgramParameter(p,35714)===!1){q=!1;let R=Na(i,A,"vertex"),G=Na(i,C,"fragment");console.error("THREE.WebGLProgram: Shader Error "+i.getError()+" - VALIDATE_STATUS "+i.getProgramParameter(p,35715)+`\n\nProgram Info Log: `+S+`\n`+R+`\n`+G)}else S!==""?console.warn("THREE.WebGLProgram: Program Info Log:",S):(L===""||X==="")&&(z=!1);z&&(this.diagnostics={runnable:q,programLog:S,vertexShader:{log:L,prefix:d},fragmentShader:{log:X,prefix:v}})}i.deleteShader(A),i.deleteShader(C);let I;this.getUniforms=function(){return I===void 0&&(I=new Wn(i,p)),I};let x;return this.getAttributes=function(){return x===void 0&&(x=Ed(i,p)),x},this.destroy=function(){n.releaseStatesOfProgram(this),i.deleteProgram(p),this.program=void 0},this.name=e.shaderName,this.id=vd++,this.cacheKey=t,this.usedTimes=1,this.program=p,this.vertexShader=A,this.fragmentShader=C,this}var Ud=0,sr=class{constructor(){this.shaderCache=new Map,this.materialCache=new Map}update(t){let e=t.vertexShader,n=t.fragmentShader,i=this._getShaderStage(e),s=this._getShaderStage(n),o=this._getShaderCacheForMaterial(t);return o.has(i)===!1&&(o.add(i),i.usedTimes++),o.has(s)===!1&&(o.add(s),s.usedTimes++),this}remove(t){let e=this.materialCache.get(t);for(let n of e)n.usedTimes--,n.usedTimes===0&&this.shaderCache.delete(n.code);return this.materialCache.delete(t),this}getVertexShaderID(t){return this._getShaderStage(t.vertexShader).id}getFragmentShaderID(t){return this._getShaderStage(t.fragmentShader).id}dispose(){this.shaderCache.clear(),this.materialCache.clear()}_getShaderCacheForMaterial(t){let e=this.materialCache,n=e.get(t);return n===void 0&&(n=new Set,e.set(t,n)),n}_getShaderStage(t){let e=this.shaderCache,n=e.get(t);return n===void 0&&(n=new rr(t),e.set(t,n)),n}},rr=class{constructor(t){this.id=Ud++,this.code=t,this.usedTimes=0}};function Bd(r,t,e,n,i,s,o){let a=new Zi,c=new sr,l=[],h=i.isWebGL2,f=i.logarithmicDepthBuffer,u=i.vertexTextures,m=i.precision,_={MeshDepthMaterial:"depth",MeshDistanceMaterial:"distanceRGBA",MeshNormalMaterial:"normal",MeshBasicMaterial:"basic",MeshLambertMaterial:"lambert",MeshPhongMaterial:"phong",MeshToonMaterial:"toon",MeshStandardMaterial:"physical",MeshPhysicalMaterial:"physical",MeshMatcapMaterial:"matcap",LineBasicMaterial:"basic",LineDashedMaterial:"dashed",PointsMaterial:"points",ShadowMaterial:"shadow",SpriteMaterial:"sprite"};function p(x,S,L,X,q){let z=X.fog,R=q.geometry,G=x.isMeshStandardMaterial?X.environment:null,Y=(x.isMeshStandardMaterial?e:t).get(x.envMap||G),j=Y&&Y.mapping===ns?Y.image.height:null,W=_[x.type];x.precision!==null&&(m=i.getMaxPrecision(x.precision),m!==x.precision&&console.warn("THREE.WebGLProgram.getParameters:",x.precision,"not supported, using",m,"instead."));let Q=R.morphAttributes.position||R.morphAttributes.normal||R.morphAttributes.color,Z=Q!==void 0?Q.length:0,ft=0;R.morphAttributes.position!==void 0&&(ft=1),R.morphAttributes.normal!==void 0&&(ft=2),R.morphAttributes.color!==void 0&&(ft=3);let F,J,nt,it;if(W){let Ft=De[W];F=Ft.vertexShader,J=Ft.fragmentShader}else F=x.vertexShader,J=x.fragmentShader,c.update(x),nt=c.getVertexShaderID(x),it=c.getFragmentShaderID(x);let O=r.getRenderTarget(),Mt=x.alphaTest>0,ht=x.clearcoat>0,ut=x.iridescence>0;return{isWebGL2:h,shaderID:W,shaderName:x.type,vertexShader:F,fragmentShader:J,defines:x.defines,customVertexShaderID:nt,customFragmentShaderID:it,isRawShaderMaterial:x.isRawShaderMaterial===!0,glslVersion:x.glslVersion,precision:m,instancing:q.isInstancedMesh===!0,instancingColor:q.isInstancedMesh===!0&&q.instanceColor!==null,supportsVertexTextures:u,outputEncoding:O===null?r.outputEncoding:O.isXRRenderTarget===!0?O.texture.encoding:vn,map:!!x.map,matcap:!!x.matcap,envMap:!!Y,envMapMode:Y&&Y.mapping,envMapCubeUVHeight:j,lightMap:!!x.lightMap,aoMap:!!x.aoMap,emissiveMap:!!x.emissiveMap,bumpMap:!!x.bumpMap,normalMap:!!x.normalMap,objectSpaceNormalMap:x.normalMapType===sl,tangentSpaceNormalMap:x.normalMapType===il,decodeVideoTexture:!!x.map&&x.map.isVideoTexture===!0&&x.map.encoding===zt,clearcoat:ht,clearcoatMap:ht&&!!x.clearcoatMap,clearcoatRoughnessMap:ht&&!!x.clearcoatRoughnessMap,clearcoatNormalMap:ht&&!!x.clearcoatNormalMap,iridescence:ut,iridescenceMap:ut&&!!x.iridescenceMap,iridescenceThicknessMap:ut&&!!x.iridescenceThicknessMap,displacementMap:!!x.displacementMap,roughnessMap:!!x.roughnessMap,metalnessMap:!!x.metalnessMap,specularMap:!!x.specularMap,specularIntensityMap:!!x.specularIntensityMap,specularColorMap:!!x.specularColorMap,opaque:x.transparent===!1&&x.blending===Gn,alphaMap:!!x.alphaMap,alphaTest:Mt,gradientMap:!!x.gradientMap,sheen:x.sheen>0,sheenColorMap:!!x.sheenColorMap,sheenRoughnessMap:!!x.sheenRoughnessMap,transmission:x.transmission>0,transmissionMap:!!x.transmissionMap,thicknessMap:!!x.thicknessMap,combine:x.combine,vertexTangents:!!x.normalMap&&!!R.attributes.tangent,vertexColors:x.vertexColors,vertexAlphas:x.vertexColors===!0&&!!R.attributes.color&&R.attributes.color.itemSize===4,vertexUvs:!!x.map||!!x.bumpMap||!!x.normalMap||!!x.specularMap||!!x.alphaMap||!!x.emissiveMap||!!x.roughnessMap||!!x.metalnessMap||!!x.clearcoatMap||!!x.clearcoatRoughnessMap||!!x.clearcoatNormalMap||!!x.iridescenceMap||!!x.iridescenceThicknessMap||!!x.displacementMap||!!x.transmissionMap||!!x.thicknessMap||!!x.specularIntensityMap||!!x.specularColorMap||!!x.sheenColorMap||!!x.sheenRoughnessMap,uvsVertexOnly:!(x.map||x.bumpMap||x.normalMap||x.specularMap||x.alphaMap||x.emissiveMap||x.roughnessMap||x.metalnessMap||x.clearcoatNormalMap||x.iridescenceMap||x.iridescenceThicknessMap||x.transmission>0||x.transmissionMap||x.thicknessMap||x.specularIntensityMap||x.specularColorMap||x.sheen>0||x.sheenColorMap||x.sheenRoughnessMap)&&!!x.displacementMap,fog:!!z,useFog:x.fog===!0,fogExp2:z&&z.isFogExp2,flatShading:!!x.flatShading,sizeAttenuation:x.sizeAttenuation,logarithmicDepthBuffer:f,skinning:q.isSkinnedMesh===!0,morphTargets:R.morphAttributes.position!==void 0,morphNormals:R.morphAttributes.normal!==void 0,morphColors:R.morphAttributes.color!==void 0,morphTargetsCount:Z,morphTextureStride:ft,numDirLights:S.directional.length,numPointLights:S.point.length,numSpotLights:S.spot.length,numSpotLightMaps:S.spotLightMap.length,numRectAreaLights:S.rectArea.length,numHemiLights:S.hemi.length,numDirLightShadows:S.directionalShadowMap.length,numPointLightShadows:S.pointShadowMap.length,numSpotLightShadows:S.spotShadowMap.length,numSpotLightShadowsWithMaps:S.numSpotLightShadowsWithMaps,numClippingPlanes:o.numPlanes,numClipIntersection:o.numIntersection,dithering:x.dithering,shadowMapEnabled:r.shadowMap.enabled&&L.length>0,shadowMapType:r.shadowMap.type,toneMapping:x.toneMapped?r.toneMapping:We,physicallyCorrectLights:r.physicallyCorrectLights,premultipliedAlpha:x.premultipliedAlpha,doubleSided:x.side===tn,flipSided:x.side===ye,useDepthPacking:!!x.depthPacking,depthPacking:x.depthPacking||0,index0AttributeName:x.index0AttributeName,extensionDerivatives:x.extensions&&x.extensions.derivatives,extensionFragDepth:x.extensions&&x.extensions.fragDepth,extensionDrawBuffers:x.extensions&&x.extensions.drawBuffers,extensionShaderTextureLOD:x.extensions&&x.extensions.shaderTextureLOD,rendererExtensionFragDepth:h||n.has("EXT_frag_depth"),rendererExtensionDrawBuffers:h||n.has("WEBGL_draw_buffers"),rendererExtensionShaderTextureLod:h||n.has("EXT_shader_texture_lod"),customProgramCacheKey:x.customProgramCacheKey()}}function d(x){let S=[];if(x.shaderID?S.push(x.shaderID):(S.push(x.customVertexShaderID),S.push(x.customFragmentShaderID)),x.defines!==void 0)for(let L in x.defines)S.push(L),S.push(x.defines[L]);return x.isRawShaderMaterial===!1&&(v(S,x),T(S,x),S.push(r.outputEncoding)),S.push(x.customProgramCacheKey),S.join()}function v(x,S){x.push(S.precision),x.push(S.outputEncoding),x.push(S.envMapMode),x.push(S.envMapCubeUVHeight),x.push(S.combine),x.push(S.vertexUvs),x.push(S.fogExp2),x.push(S.sizeAttenuation),x.push(S.morphTargetsCount),x.push(S.morphAttributeCount),x.push(S.numDirLights),x.push(S.numPointLights),x.push(S.numSpotLights),x.push(S.numSpotLightMaps),x.push(S.numHemiLights),x.push(S.numRectAreaLights),x.push(S.numDirLightShadows),x.push(S.numPointLightShadows),x.push(S.numSpotLightShadows),x.push(S.numSpotLightShadowsWithMaps),x.push(S.shadowMapType),x.push(S.toneMapping),x.push(S.numClippingPlanes),x.push(S.numClipIntersection),x.push(S.depthPacking)}function T(x,S){a.disableAll(),S.isWebGL2&&a.enable(0),S.supportsVertexTextures&&a.enable(1),S.instancing&&a.enable(2),S.instancingColor&&a.enable(3),S.map&&a.enable(4),S.matcap&&a.enable(5),S.envMap&&a.enable(6),S.lightMap&&a.enable(7),S.aoMap&&a.enable(8),S.emissiveMap&&a.enable(9),S.bumpMap&&a.enable(10),S.normalMap&&a.enable(11),S.objectSpaceNormalMap&&a.enable(12),S.tangentSpaceNormalMap&&a.enable(13),S.clearcoat&&a.enable(14),S.clearcoatMap&&a.enable(15),S.clearcoatRoughnessMap&&a.enable(16),S.clearcoatNormalMap&&a.enable(17),S.iridescence&&a.enable(18),S.iridescenceMap&&a.enable(19),S.iridescenceThicknessMap&&a.enable(20),S.displacementMap&&a.enable(21),S.specularMap&&a.enable(22),S.roughnessMap&&a.enable(23),S.metalnessMap&&a.enable(24),S.gradientMap&&a.enable(25),S.alphaMap&&a.enable(26),S.alphaTest&&a.enable(27),S.vertexColors&&a.enable(28),S.vertexAlphas&&a.enable(29),S.vertexUvs&&a.enable(30),S.vertexTangents&&a.enable(31),S.uvsVertexOnly&&a.enable(32),x.push(a.mask),a.disableAll(),S.fog&&a.enable(0),S.useFog&&a.enable(1),S.flatShading&&a.enable(2),S.logarithmicDepthBuffer&&a.enable(3),S.skinning&&a.enable(4),S.morphTargets&&a.enable(5),S.morphNormals&&a.enable(6),S.morphColors&&a.enable(7),S.premultipliedAlpha&&a.enable(8),S.shadowMapEnabled&&a.enable(9),S.physicallyCorrectLights&&a.enable(10),S.doubleSided&&a.enable(11),S.flipSided&&a.enable(12),S.useDepthPacking&&a.enable(13),S.dithering&&a.enable(14),S.specularIntensityMap&&a.enable(15),S.specularColorMap&&a.enable(16),S.transmission&&a.enable(17),S.transmissionMap&&a.enable(18),S.thicknessMap&&a.enable(19),S.sheen&&a.enable(20),S.sheenColorMap&&a.enable(21),S.sheenRoughnessMap&&a.enable(22),S.decodeVideoTexture&&a.enable(23),S.opaque&&a.enable(24),x.push(a.mask)}function b(x){let S=_[x.type],L;if(S){let X=De[S];L=Il.clone(X.uniforms)}else L=x.uniforms;return L}function M(x,S){let L;for(let X=0,q=l.length;X0?n.push(v):m.transparent===!0?i.push(v):e.push(v)}function c(f,u,m,_,p,d){let v=o(f,u,m,_,p,d);m.transmission>0?n.unshift(v):m.transparent===!0?i.unshift(v):e.unshift(v)}function l(f,u){e.length>1&&e.sort(f||Vd),n.length>1&&n.sort(u||Ba),i.length>1&&i.sort(u||Ba)}function h(){for(let f=t,u=r.length;f=s.length?(o=new ka,s.push(o)):o=s[i],o}function e(){r=new WeakMap}return{get:t,dispose:e}}function Hd(){let r={};return{get:function(t){if(r[t.id]!==void 0)return r[t.id];let e;switch(t.type){case"DirectionalLight":e={direction:new N,color:new Ot};break;case"SpotLight":e={position:new N,direction:new N,color:new Ot,distance:0,coneCos:0,penumbraCos:0,decay:0};break;case"PointLight":e={position:new N,color:new Ot,distance:0,decay:0};break;case"HemisphereLight":e={direction:new N,skyColor:new Ot,groundColor:new Ot};break;case"RectAreaLight":e={color:new Ot,position:new N,halfWidth:new N,halfHeight:new N};break}return r[t.id]=e,e}}}function Wd(){let r={};return{get:function(t){if(r[t.id]!==void 0)return r[t.id];let e;switch(t.type){case"DirectionalLight":e={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new Nt};break;case"SpotLight":e={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new Nt};break;case"PointLight":e={shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new Nt,shadowCameraNear:1,shadowCameraFar:1e3};break}return r[t.id]=e,e}}}var Xd=0;function qd(r,t){return(t.castShadow?2:0)-(r.castShadow?2:0)+(t.map?1:0)-(r.map?1:0)}function Yd(r,t){let e=new Hd,n=Wd(),i={version:0,hash:{directionalLength:-1,pointLength:-1,spotLength:-1,rectAreaLength:-1,hemiLength:-1,numDirectionalShadows:-1,numPointShadows:-1,numSpotShadows:-1,numSpotMaps:-1},ambient:[0,0,0],probe:[],directional:[],directionalShadow:[],directionalShadowMap:[],directionalShadowMatrix:[],spot:[],spotLightMap:[],spotShadow:[],spotShadowMap:[],spotLightMatrix:[],rectArea:[],rectAreaLTC1:null,rectAreaLTC2:null,point:[],pointShadow:[],pointShadowMap:[],pointShadowMatrix:[],hemi:[],numSpotLightShadowsWithMaps:0};for(let h=0;h<9;h++)i.probe.push(new N);let s=new N,o=new qt,a=new qt;function c(h,f){let u=0,m=0,_=0;for(let X=0;X<9;X++)i.probe[X].set(0,0,0);let p=0,d=0,v=0,T=0,b=0,M=0,A=0,C=0,I=0,x=0;h.sort(qd);let S=f!==!0?Math.PI:1;for(let X=0,q=h.length;X0&&(t.isWebGL2||r.has("OES_texture_float_linear")===!0?(i.rectAreaLTC1=et.LTC_FLOAT_1,i.rectAreaLTC2=et.LTC_FLOAT_2):r.has("OES_texture_half_float_linear")===!0?(i.rectAreaLTC1=et.LTC_HALF_1,i.rectAreaLTC2=et.LTC_HALF_2):console.error("THREE.WebGLRenderer: Unable to use RectAreaLight. Missing WebGL extensions.")),i.ambient[0]=u,i.ambient[1]=m,i.ambient[2]=_;let L=i.hash;(L.directionalLength!==p||L.pointLength!==d||L.spotLength!==v||L.rectAreaLength!==T||L.hemiLength!==b||L.numDirectionalShadows!==M||L.numPointShadows!==A||L.numSpotShadows!==C||L.numSpotMaps!==I)&&(i.directional.length=p,i.spot.length=v,i.rectArea.length=T,i.point.length=d,i.hemi.length=b,i.directionalShadow.length=M,i.directionalShadowMap.length=M,i.pointShadow.length=A,i.pointShadowMap.length=A,i.spotShadow.length=C,i.spotShadowMap.length=C,i.directionalShadowMatrix.length=M,i.pointShadowMatrix.length=A,i.spotLightMatrix.length=C+I-x,i.spotLightMap.length=I,i.numSpotLightShadowsWithMaps=x,L.directionalLength=p,L.pointLength=d,L.spotLength=v,L.rectAreaLength=T,L.hemiLength=b,L.numDirectionalShadows=M,L.numPointShadows=A,L.numSpotShadows=C,L.numSpotMaps=I,i.version=Xd++)}function l(h,f){let u=0,m=0,_=0,p=0,d=0,v=f.matrixWorldInverse;for(let T=0,b=h.length;T=a.length?(c=new Va(r,t),a.push(c)):c=a[o],c}function i(){e=new WeakMap}return{get:n,dispose:i}}var ar=class extends Jn{constructor(t){super(),this.isMeshDepthMaterial=!0,this.type="MeshDepthMaterial",this.depthPacking=el,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.setValues(t)}copy(t){return super.copy(t),this.depthPacking=t.depthPacking,this.map=t.map,this.alphaMap=t.alphaMap,this.displacementMap=t.displacementMap,this.displacementScale=t.displacementScale,this.displacementBias=t.displacementBias,this.wireframe=t.wireframe,this.wireframeLinewidth=t.wireframeLinewidth,this}},or=class extends Jn{constructor(t){super(),this.isMeshDistanceMaterial=!0,this.type="MeshDistanceMaterial",this.referencePosition=new N,this.nearDistance=1,this.farDistance=1e3,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.setValues(t)}copy(t){return super.copy(t),this.referencePosition.copy(t.referencePosition),this.nearDistance=t.nearDistance,this.farDistance=t.farDistance,this.map=t.map,this.alphaMap=t.alphaMap,this.displacementMap=t.displacementMap,this.displacementScale=t.displacementScale,this.displacementBias=t.displacementBias,this}},Jd=`void main() {\n\tgl_Position = vec4( position, 1.0 );\n}`,$d=`uniform sampler2D shadow_pass;\nuniform vec2 resolution;\nuniform float radius;\n#include \nvoid main() {\n\tconst float samples = float( VSM_SAMPLES );\n\tfloat mean = 0.0;\n\tfloat squared_mean = 0.0;\n\tfloat uvStride = samples <= 1.0 ? 0.0 : 2.0 / ( samples - 1.0 );\n\tfloat uvStart = samples <= 1.0 ? 0.0 : - 1.0;\n\tfor ( float i = 0.0; i < samples; i ++ ) {\n\t\tfloat uvOffset = uvStart + i * uvStride;\n\t\t#ifdef HORIZONTAL_PASS\n\t\t\tvec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( uvOffset, 0.0 ) * radius ) / resolution ) );\n\t\t\tmean += distribution.x;\n\t\t\tsquared_mean += distribution.y * distribution.y + distribution.x * distribution.x;\n\t\t#else\n\t\t\tfloat depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, uvOffset ) * radius ) / resolution ) );\n\t\t\tmean += depth;\n\t\t\tsquared_mean += depth * depth;\n\t\t#endif\n\t}\n\tmean = mean / samples;\n\tsquared_mean = squared_mean / samples;\n\tfloat std_dev = sqrt( squared_mean - mean * mean );\n\tgl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) );\n}`;function Kd(r,t,e){let n=new ts,i=new Nt,s=new Nt,o=new Xt,a=new ar({depthPacking:nl}),c=new or,l={},h=e.maxTextureSize,f={[nn]:ye,[ye]:nn,[tn]:tn},u=new Ze({defines:{VSM_SAMPLES:8},uniforms:{shadow_pass:{value:null},resolution:{value:new Nt},radius:{value:4}},vertexShader:Jd,fragmentShader:$d}),m=u.clone();m.defines.HORIZONTAL_PASS=1;let _=new Ye;_.setAttribute("position",new ce(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));let p=new Ne(_,u),d=this;this.enabled=!1,this.autoUpdate=!0,this.needsUpdate=!1,this.type=Ga,this.render=function(M,A,C){if(d.enabled===!1||d.autoUpdate===!1&&d.needsUpdate===!1||M.length===0)return;let I=r.getRenderTarget(),x=r.getActiveCubeFace(),S=r.getActiveMipmapLevel(),L=r.state;L.setBlending(en),L.buffers.color.setClear(1,1,1,1),L.buffers.depth.setTest(!0),L.setScissorTest(!1);for(let X=0,q=M.length;Xh||i.y>h)&&(i.x>h&&(s.x=Math.floor(h/G.x),i.x=s.x*G.x,R.mapSize.x=s.x),i.y>h&&(s.y=Math.floor(h/G.y),i.y=s.y*G.y,R.mapSize.y=s.y)),R.map===null){let j=this.type!==li?{minFilter:ae,magFilter:ae}:{};R.map=new qe(i.x,i.y,j),R.map.texture.name=z.name+".shadowMap",R.camera.updateProjectionMatrix()}r.setRenderTarget(R.map),r.clear();let Y=R.getViewportCount();for(let j=0;j0||A.map&&A.alphaTest>0){let q=L.uuid,z=A.uuid,R=l[q];R===void 0&&(R={},l[q]=R);let G=R[z];G===void 0&&(G=L.clone(),R[z]=G),L=G}return L.visible=A.visible,L.wireframe=A.wireframe,S===li?L.side=A.shadowSide!==null?A.shadowSide:A.side:L.side=A.shadowSide!==null?A.shadowSide:f[A.side],L.alphaMap=A.alphaMap,L.alphaTest=A.alphaTest,L.map=A.map,L.clipShadows=A.clipShadows,L.clippingPlanes=A.clippingPlanes,L.clipIntersection=A.clipIntersection,L.displacementMap=A.displacementMap,L.displacementScale=A.displacementScale,L.displacementBias=A.displacementBias,L.wireframeLinewidth=A.wireframeLinewidth,L.linewidth=A.linewidth,C.isPointLight===!0&&L.isMeshDistanceMaterial===!0&&(L.referencePosition.setFromMatrixPosition(C.matrixWorld),L.nearDistance=I,L.farDistance=x),L}function b(M,A,C,I,x){if(M.visible===!1)return;if(M.layers.test(A.layers)&&(M.isMesh||M.isLine||M.isPoints)&&(M.castShadow||M.receiveShadow&&x===li)&&(!M.frustumCulled||n.intersectsObject(M))){M.modelViewMatrix.multiplyMatrices(C.matrixWorldInverse,M.matrixWorld);let X=t.update(M),q=M.material;if(Array.isArray(q)){let z=X.groups;for(let R=0,G=z.length;R=1):W.indexOf("OpenGL ES")!==-1&&(j=parseFloat(/^OpenGL ES (\\d)/.exec(W)[1]),Y=j>=2);let Q=null,Z={},ft=r.getParameter(3088),F=r.getParameter(2978),J=new Xt().fromArray(ft),nt=new Xt().fromArray(F);function it(E,U,$){let at=new Uint8Array(4),ct=r.createTexture();r.bindTexture(E,ct),r.texParameteri(E,10241,9728),r.texParameteri(E,10240,9728);for(let Lt=0;Lt<$;Lt++)r.texImage2D(U+Lt,0,6408,1,1,0,6408,5121,at);return ct}let O={};O[3553]=it(3553,3553,1),O[34067]=it(34067,34069,6),a.setClear(0,0,0,1),c.setClear(1),l.setClear(0),Mt(2929),c.setFunc(Gs),Qt(!1),Me(Pr),Mt(2884),ne(en);function Mt(E){u[E]!==!0&&(r.enable(E),u[E]=!0)}function ht(E){u[E]!==!1&&(r.disable(E),u[E]=!1)}function ut(E,U){return m[E]!==U?(r.bindFramebuffer(E,U),m[E]=U,n&&(E===36009&&(m[36160]=U),E===36160&&(m[36009]=U)),!0):!1}function ot(E,U){let $=p,at=!1;if(E)if($=_.get(U),$===void 0&&($=[],_.set(U,$)),E.isWebGLMultipleRenderTargets){let ct=E.texture;if($.length!==ct.length||$[0]!==36064){for(let Lt=0,$t=ct.length;Lt<$t;Lt++)$[Lt]=36064+Lt;$.length=ct.length,at=!0}}else $[0]!==36064&&($[0]=36064,at=!0);else $[0]!==1029&&($[0]=1029,at=!0);at&&(e.isWebGL2?r.drawBuffers($):t.get("WEBGL_draw_buffers").drawBuffersWEBGL($))}function Ft(E){return d!==E?(r.useProgram(E),d=E,!0):!1}let bt={[Bn]:32774,[po]:32778,[mo]:32779};if(n)bt[Dr]=32775,bt[Nr]=32776;else{let E=t.get("EXT_blend_minmax");E!==null&&(bt[Dr]=E.MIN_EXT,bt[Nr]=E.MAX_EXT)}let xt={[go]:0,[_o]:1,[xo]:768,[Ha]:770,[So]:776,[bo]:774,[vo]:772,[yo]:769,[Wa]:771,[wo]:775,[Mo]:773};function ne(E,U,$,at,ct,Lt,$t,te){if(E===en){v===!0&&(ht(3042),v=!1);return}if(v===!1&&(Mt(3042),v=!0),E!==fo){if(E!==T||te!==S){if((b!==Bn||C!==Bn)&&(r.blendEquation(32774),b=Bn,C=Bn),te)switch(E){case Gn:r.blendFuncSeparate(1,771,1,771);break;case Rr:r.blendFunc(1,1);break;case Lr:r.blendFuncSeparate(0,769,0,1);break;case Ir:r.blendFuncSeparate(0,768,0,770);break;default:console.error("THREE.WebGLState: Invalid blending: ",E);break}else switch(E){case Gn:r.blendFuncSeparate(770,771,1,771);break;case Rr:r.blendFunc(770,1);break;case Lr:r.blendFuncSeparate(0,769,0,1);break;case Ir:r.blendFunc(0,768);break;default:console.error("THREE.WebGLState: Invalid blending: ",E);break}M=null,A=null,I=null,x=null,T=E,S=te}return}ct=ct||U,Lt=Lt||$,$t=$t||at,(U!==b||ct!==C)&&(r.blendEquationSeparate(bt[U],bt[ct]),b=U,C=ct),($!==M||at!==A||Lt!==I||$t!==x)&&(r.blendFuncSeparate(xt[$],xt[at],xt[Lt],xt[$t]),M=$,A=at,I=Lt,x=$t),T=E,S=!1}function ve(E,U){E.side===tn?ht(2884):Mt(2884);let $=E.side===ye;U&&($=!$),Qt($),E.blending===Gn&&E.transparent===!1?ne(en):ne(E.blending,E.blendEquation,E.blendSrc,E.blendDst,E.blendEquationAlpha,E.blendSrcAlpha,E.blendDstAlpha,E.premultipliedAlpha),c.setFunc(E.depthFunc),c.setTest(E.depthTest),c.setMask(E.depthWrite),a.setMask(E.colorWrite);let at=E.stencilWrite;l.setTest(at),at&&(l.setMask(E.stencilWriteMask),l.setFunc(E.stencilFunc,E.stencilRef,E.stencilFuncMask),l.setOp(E.stencilFail,E.stencilZFail,E.stencilZPass)),Dt(E.polygonOffset,E.polygonOffsetFactor,E.polygonOffsetUnits),E.alphaToCoverage===!0?Mt(32926):ht(32926)}function Qt(E){L!==E&&(E?r.frontFace(2304):r.frontFace(2305),L=E)}function Me(E){E!==co?(Mt(2884),E!==X&&(E===Pr?r.cullFace(1029):E===ho?r.cullFace(1028):r.cullFace(1032))):ht(2884),X=E}function Ht(E){E!==q&&(Y&&r.lineWidth(E),q=E)}function Dt(E,U,$){E?(Mt(32823),(z!==U||R!==$)&&(r.polygonOffset(U,$),z=U,R=$)):ht(32823)}function Fe(E){E?Mt(3089):ht(3089)}function Te(E){E===void 0&&(E=33984+G-1),Q!==E&&(r.activeTexture(E),Q=E)}function w(E,U,$){$===void 0&&(Q===null?$=33984+G-1:$=Q);let at=Z[$];at===void 0&&(at={type:void 0,texture:void 0},Z[$]=at),(at.type!==E||at.texture!==U)&&(Q!==$&&(r.activeTexture($),Q=$),r.bindTexture(E,U||O[E]),at.type=E,at.texture=U)}function g(){let E=Z[Q];E!==void 0&&E.type!==void 0&&(r.bindTexture(E.type,null),E.type=void 0,E.texture=void 0)}function k(){try{r.compressedTexImage2D.apply(r,arguments)}catch(E){console.error("THREE.WebGLState:",E)}}function K(){try{r.compressedTexImage3D.apply(r,arguments)}catch(E){console.error("THREE.WebGLState:",E)}}function tt(){try{r.texSubImage2D.apply(r,arguments)}catch(E){console.error("THREE.WebGLState:",E)}}function st(){try{r.texSubImage3D.apply(r,arguments)}catch(E){console.error("THREE.WebGLState:",E)}}function yt(){try{r.compressedTexSubImage2D.apply(r,arguments)}catch(E){console.error("THREE.WebGLState:",E)}}function rt(){try{r.compressedTexSubImage3D.apply(r,arguments)}catch(E){console.error("THREE.WebGLState:",E)}}function H(){try{r.texStorage2D.apply(r,arguments)}catch(E){console.error("THREE.WebGLState:",E)}}function mt(){try{r.texStorage3D.apply(r,arguments)}catch(E){console.error("THREE.WebGLState:",E)}}function _t(){try{r.texImage2D.apply(r,arguments)}catch(E){console.error("THREE.WebGLState:",E)}}function lt(){try{r.texImage3D.apply(r,arguments)}catch(E){console.error("THREE.WebGLState:",E)}}function gt(E){J.equals(E)===!1&&(r.scissor(E.x,E.y,E.z,E.w),J.copy(E))}function dt(E){nt.equals(E)===!1&&(r.viewport(E.x,E.y,E.z,E.w),nt.copy(E))}function Pt(E,U){let $=f.get(U);$===void 0&&($=new WeakMap,f.set(U,$));let at=$.get(E);at===void 0&&(at=r.getUniformBlockIndex(U,E.name),$.set(E,at))}function Ut(E,U){let at=f.get(U).get(E);h.get(U)!==at&&(r.uniformBlockBinding(U,at,E.__bindingPointIndex),h.set(U,at))}function Jt(){r.disable(3042),r.disable(2884),r.disable(2929),r.disable(32823),r.disable(3089),r.disable(2960),r.disable(32926),r.blendEquation(32774),r.blendFunc(1,0),r.blendFuncSeparate(1,0,1,0),r.colorMask(!0,!0,!0,!0),r.clearColor(0,0,0,0),r.depthMask(!0),r.depthFunc(513),r.clearDepth(1),r.stencilMask(4294967295),r.stencilFunc(519,0,4294967295),r.stencilOp(7680,7680,7680),r.clearStencil(0),r.cullFace(1029),r.frontFace(2305),r.polygonOffset(0,0),r.activeTexture(33984),r.bindFramebuffer(36160,null),n===!0&&(r.bindFramebuffer(36009,null),r.bindFramebuffer(36008,null)),r.useProgram(null),r.lineWidth(1),r.scissor(0,0,r.canvas.width,r.canvas.height),r.viewport(0,0,r.canvas.width,r.canvas.height),u={},Q=null,Z={},m={},_=new WeakMap,p=[],d=null,v=!1,T=null,b=null,M=null,A=null,C=null,I=null,x=null,S=!1,L=null,X=null,q=null,z=null,R=null,J.set(0,0,r.canvas.width,r.canvas.height),nt.set(0,0,r.canvas.width,r.canvas.height),a.reset(),c.reset(),l.reset()}return{buffers:{color:a,depth:c,stencil:l},enable:Mt,disable:ht,bindFramebuffer:ut,drawBuffers:ot,useProgram:Ft,setBlending:ne,setMaterial:ve,setFlipSided:Qt,setCullFace:Me,setLineWidth:Ht,setPolygonOffset:Dt,setScissorTest:Fe,activeTexture:Te,bindTexture:w,unbindTexture:g,compressedTexImage2D:k,compressedTexImage3D:K,texImage2D:_t,texImage3D:lt,updateUBOMapping:Pt,uniformBlockBinding:Ut,texStorage2D:H,texStorage3D:mt,texSubImage2D:tt,texSubImage3D:st,compressedTexSubImage2D:yt,compressedTexSubImage3D:rt,scissor:gt,viewport:dt,reset:Jt}}function Qd(r,t,e,n,i,s,o){let a=i.isWebGL2,c=i.maxTextures,l=i.maxCubemapSize,h=i.maxTextureSize,f=i.maxSamples,u=t.has("WEBGL_multisampled_render_to_texture")?t.get("WEBGL_multisampled_render_to_texture"):null,m=typeof navigator=="undefined"?!1:/OculusBrowser/g.test(navigator.userAgent),_=new WeakMap,p,d=new WeakMap,v=!1;try{v=typeof OffscreenCanvas!="undefined"&&new OffscreenCanvas(1,1).getContext("2d")!==null}catch(w){}function T(w,g){return v?new OffscreenCanvas(w,g):Wi("canvas")}function b(w,g,k,K){let tt=1;if((w.width>K||w.height>K)&&(tt=K/Math.max(w.width,w.height)),tt<1||g===!0)if(typeof HTMLImageElement!="undefined"&&w instanceof HTMLImageElement||typeof HTMLCanvasElement!="undefined"&&w instanceof HTMLCanvasElement||typeof ImageBitmap!="undefined"&&w instanceof ImageBitmap){let st=g?Hi:Math.floor,yt=st(tt*w.width),rt=st(tt*w.height);p===void 0&&(p=T(yt,rt));let H=k?T(yt,rt):p;return H.width=yt,H.height=rt,H.getContext("2d").drawImage(w,0,0,yt,rt),console.warn("THREE.WebGLRenderer: Texture has been resized from ("+w.width+"x"+w.height+") to ("+yt+"x"+rt+")."),H}else return"data"in w&&console.warn("THREE.WebGLRenderer: Image in DataTexture is too big ("+w.width+"x"+w.height+")."),w;return w}function M(w){return Zs(w.width)&&Zs(w.height)}function A(w){return a?!1:w.wrapS!==Pe||w.wrapT!==Pe||w.minFilter!==ae&&w.minFilter!==Se}function C(w,g){return w.generateMipmaps&&g&&w.minFilter!==ae&&w.minFilter!==Se}function I(w){r.generateMipmap(w)}function x(w,g,k,K,tt=!1){if(a===!1)return g;if(w!==null){if(r[w]!==void 0)return r[w];console.warn("THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format \'"+w+"\'")}let st=g;return g===6403&&(k===5126&&(st=33326),k===5131&&(st=33325),k===5121&&(st=33321)),g===33319&&(k===5126&&(st=33328),k===5131&&(st=33327),k===5121&&(st=33323)),g===6408&&(k===5126&&(st=34836),k===5131&&(st=34842),k===5121&&(st=K===zt&&tt===!1?35907:32856),k===32819&&(st=32854),k===32820&&(st=32855)),(st===33325||st===33326||st===33327||st===33328||st===34842||st===34836)&&t.get("EXT_color_buffer_float"),st}function S(w,g,k){return C(w,k)===!0||w.isFramebufferTexture&&w.minFilter!==ae&&w.minFilter!==Se?Math.log2(Math.max(g.width,g.height))+1:w.mipmaps!==void 0&&w.mipmaps.length>0?w.mipmaps.length:w.isCompressedTexture&&Array.isArray(w.image)?g.mipmaps.length:1}function L(w){return w===ae||w===Fr||w===us?9728:9729}function X(w){let g=w.target;g.removeEventListener("dispose",X),z(g),g.isVideoTexture&&_.delete(g)}function q(w){let g=w.target;g.removeEventListener("dispose",q),G(g)}function z(w){let g=n.get(w);if(g.__webglInit===void 0)return;let k=w.source,K=d.get(k);if(K){let tt=K[g.__cacheKey];tt.usedTimes--,tt.usedTimes===0&&R(w),Object.keys(K).length===0&&d.delete(k)}n.remove(w)}function R(w){let g=n.get(w);r.deleteTexture(g.__webglTexture);let k=w.source,K=d.get(k);delete K[g.__cacheKey],o.memory.textures--}function G(w){let g=w.texture,k=n.get(w),K=n.get(g);if(K.__webglTexture!==void 0&&(r.deleteTexture(K.__webglTexture),o.memory.textures--),w.depthTexture&&w.depthTexture.dispose(),w.isWebGLCubeRenderTarget)for(let tt=0;tt<6;tt++)r.deleteFramebuffer(k.__webglFramebuffer[tt]),k.__webglDepthbuffer&&r.deleteRenderbuffer(k.__webglDepthbuffer[tt]);else{if(r.deleteFramebuffer(k.__webglFramebuffer),k.__webglDepthbuffer&&r.deleteRenderbuffer(k.__webglDepthbuffer),k.__webglMultisampledFramebuffer&&r.deleteFramebuffer(k.__webglMultisampledFramebuffer),k.__webglColorRenderbuffer)for(let tt=0;tt=c&&console.warn("THREE.WebGLTextures: Trying to use "+w+" texture units while this GPU supports only "+c),Y+=1,w}function Q(w){let g=[];return g.push(w.wrapS),g.push(w.wrapT),g.push(w.wrapR||0),g.push(w.magFilter),g.push(w.minFilter),g.push(w.anisotropy),g.push(w.internalFormat),g.push(w.format),g.push(w.type),g.push(w.generateMipmaps),g.push(w.premultiplyAlpha),g.push(w.flipY),g.push(w.unpackAlignment),g.push(w.encoding),g.join()}function Z(w,g){let k=n.get(w);if(w.isVideoTexture&&Fe(w),w.isRenderTargetTexture===!1&&w.version>0&&k.__version!==w.version){let K=w.image;if(K===null)console.warn("THREE.WebGLRenderer: Texture marked for update but no image data found.");else if(K.complete===!1)console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete");else{ht(k,w,g);return}}e.bindTexture(3553,k.__webglTexture,33984+g)}function ft(w,g){let k=n.get(w);if(w.version>0&&k.__version!==w.version){ht(k,w,g);return}e.bindTexture(35866,k.__webglTexture,33984+g)}function F(w,g){let k=n.get(w);if(w.version>0&&k.__version!==w.version){ht(k,w,g);return}e.bindTexture(32879,k.__webglTexture,33984+g)}function J(w,g){let k=n.get(w);if(w.version>0&&k.__version!==w.version){ut(k,w,g);return}e.bindTexture(34067,k.__webglTexture,33984+g)}let nt={[Xs]:10497,[Pe]:33071,[qs]:33648},it={[ae]:9728,[Fr]:9984,[us]:9986,[Se]:9729,[Bo]:9985,[pi]:9987};function O(w,g,k){if(k?(r.texParameteri(w,10242,nt[g.wrapS]),r.texParameteri(w,10243,nt[g.wrapT]),(w===32879||w===35866)&&r.texParameteri(w,32882,nt[g.wrapR]),r.texParameteri(w,10240,it[g.magFilter]),r.texParameteri(w,10241,it[g.minFilter])):(r.texParameteri(w,10242,33071),r.texParameteri(w,10243,33071),(w===32879||w===35866)&&r.texParameteri(w,32882,33071),(g.wrapS!==Pe||g.wrapT!==Pe)&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping."),r.texParameteri(w,10240,L(g.magFilter)),r.texParameteri(w,10241,L(g.minFilter)),g.minFilter!==ae&&g.minFilter!==Se&&console.warn("THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.")),t.has("EXT_texture_filter_anisotropic")===!0){let K=t.get("EXT_texture_filter_anisotropic");if(g.magFilter===ae||g.minFilter!==us&&g.minFilter!==pi||g.type===gn&&t.has("OES_texture_float_linear")===!1||a===!1&&g.type===mi&&t.has("OES_texture_half_float_linear")===!1)return;(g.anisotropy>1||n.get(g).__currentAnisotropy)&&(r.texParameterf(w,K.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(g.anisotropy,i.getMaxAnisotropy())),n.get(g).__currentAnisotropy=g.anisotropy)}}function Mt(w,g){let k=!1;w.__webglInit===void 0&&(w.__webglInit=!0,g.addEventListener("dispose",X));let K=g.source,tt=d.get(K);tt===void 0&&(tt={},d.set(K,tt));let st=Q(g);if(st!==w.__cacheKey){tt[st]===void 0&&(tt[st]={texture:r.createTexture(),usedTimes:0},o.memory.textures++,k=!0),tt[st].usedTimes++;let yt=tt[w.__cacheKey];yt!==void 0&&(tt[w.__cacheKey].usedTimes--,yt.usedTimes===0&&R(g)),w.__cacheKey=st,w.__webglTexture=tt[st].texture}return k}function ht(w,g,k){let K=3553;(g.isDataArrayTexture||g.isCompressedArrayTexture)&&(K=35866),g.isData3DTexture&&(K=32879);let tt=Mt(w,g),st=g.source;e.bindTexture(K,w.__webglTexture,33984+k);let yt=n.get(st);if(st.version!==yt.__version||tt===!0){e.activeTexture(33984+k),r.pixelStorei(37440,g.flipY),r.pixelStorei(37441,g.premultiplyAlpha),r.pixelStorei(3317,g.unpackAlignment),r.pixelStorei(37443,0);let rt=A(g)&&M(g.image)===!1,H=b(g.image,rt,!1,h);H=Te(g,H);let mt=M(H)||a,_t=s.convert(g.format,g.encoding),lt=s.convert(g.type),gt=x(g.internalFormat,_t,lt,g.encoding,g.isVideoTexture);O(K,g,mt);let dt,Pt=g.mipmaps,Ut=a&&g.isVideoTexture!==!0,Jt=yt.__version===void 0||tt===!0,E=S(g,H,mt);if(g.isDepthTexture)gt=6402,a?g.type===gn?gt=36012:g.type===mn?gt=33190:g.type===Hn?gt=35056:gt=33189:g.type===gn&&console.error("WebGLRenderer: Floating point depth texture requires WebGL2."),g.format===_n&>===6402&&g.type!==Ya&&g.type!==mn&&(console.warn("THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture."),g.type=mn,lt=s.convert(g.type)),g.format===Yn&>===6402&&(gt=34041,g.type!==Hn&&(console.warn("THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture."),g.type=Hn,lt=s.convert(g.type))),Jt&&(Ut?e.texStorage2D(3553,1,gt,H.width,H.height):e.texImage2D(3553,0,gt,H.width,H.height,0,_t,lt,null));else if(g.isDataTexture)if(Pt.length>0&&mt){Ut&&Jt&&e.texStorage2D(3553,E,gt,Pt[0].width,Pt[0].height);for(let U=0,$=Pt.length;U<$;U++)dt=Pt[U],Ut?e.texSubImage2D(3553,U,0,0,dt.width,dt.height,_t,lt,dt.data):e.texImage2D(3553,U,gt,dt.width,dt.height,0,_t,lt,dt.data);g.generateMipmaps=!1}else Ut?(Jt&&e.texStorage2D(3553,E,gt,H.width,H.height),e.texSubImage2D(3553,0,0,0,H.width,H.height,_t,lt,H.data)):e.texImage2D(3553,0,gt,H.width,H.height,0,_t,lt,H.data);else if(g.isCompressedTexture)if(g.isCompressedArrayTexture){Ut&&Jt&&e.texStorage3D(35866,E,gt,Pt[0].width,Pt[0].height,H.depth);for(let U=0,$=Pt.length;U<$;U++)dt=Pt[U],g.format!==Re?_t!==null?Ut?e.compressedTexSubImage3D(35866,U,0,0,0,dt.width,dt.height,H.depth,_t,dt.data,0,0):e.compressedTexImage3D(35866,U,gt,dt.width,dt.height,H.depth,0,dt.data,0,0):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()"):Ut?e.texSubImage3D(35866,U,0,0,0,dt.width,dt.height,H.depth,_t,lt,dt.data):e.texImage3D(35866,U,gt,dt.width,dt.height,H.depth,0,_t,lt,dt.data)}else{Ut&&Jt&&e.texStorage2D(3553,E,gt,Pt[0].width,Pt[0].height);for(let U=0,$=Pt.length;U<$;U++)dt=Pt[U],g.format!==Re?_t!==null?Ut?e.compressedTexSubImage2D(3553,U,0,0,dt.width,dt.height,_t,dt.data):e.compressedTexImage2D(3553,U,gt,dt.width,dt.height,0,dt.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()"):Ut?e.texSubImage2D(3553,U,0,0,dt.width,dt.height,_t,lt,dt.data):e.texImage2D(3553,U,gt,dt.width,dt.height,0,_t,lt,dt.data)}else if(g.isDataArrayTexture)Ut?(Jt&&e.texStorage3D(35866,E,gt,H.width,H.height,H.depth),e.texSubImage3D(35866,0,0,0,0,H.width,H.height,H.depth,_t,lt,H.data)):e.texImage3D(35866,0,gt,H.width,H.height,H.depth,0,_t,lt,H.data);else if(g.isData3DTexture)Ut?(Jt&&e.texStorage3D(32879,E,gt,H.width,H.height,H.depth),e.texSubImage3D(32879,0,0,0,0,H.width,H.height,H.depth,_t,lt,H.data)):e.texImage3D(32879,0,gt,H.width,H.height,H.depth,0,_t,lt,H.data);else if(g.isFramebufferTexture){if(Jt)if(Ut)e.texStorage2D(3553,E,gt,H.width,H.height);else{let U=H.width,$=H.height;for(let at=0;at>=1,$>>=1}}else if(Pt.length>0&&mt){Ut&&Jt&&e.texStorage2D(3553,E,gt,Pt[0].width,Pt[0].height);for(let U=0,$=Pt.length;U<$;U++)dt=Pt[U],Ut?e.texSubImage2D(3553,U,0,0,_t,lt,dt):e.texImage2D(3553,U,gt,_t,lt,dt);g.generateMipmaps=!1}else Ut?(Jt&&e.texStorage2D(3553,E,gt,H.width,H.height),e.texSubImage2D(3553,0,0,0,_t,lt,H)):e.texImage2D(3553,0,gt,_t,lt,H);C(g,mt)&&I(K),yt.__version=st.version,g.onUpdate&&g.onUpdate(g)}w.__version=g.version}function ut(w,g,k){if(g.image.length!==6)return;let K=Mt(w,g),tt=g.source;e.bindTexture(34067,w.__webglTexture,33984+k);let st=n.get(tt);if(tt.version!==st.__version||K===!0){e.activeTexture(33984+k),r.pixelStorei(37440,g.flipY),r.pixelStorei(37441,g.premultiplyAlpha),r.pixelStorei(3317,g.unpackAlignment),r.pixelStorei(37443,0);let yt=g.isCompressedTexture||g.image[0].isCompressedTexture,rt=g.image[0]&&g.image[0].isDataTexture,H=[];for(let U=0;U<6;U++)!yt&&!rt?H[U]=b(g.image[U],!1,!0,l):H[U]=rt?g.image[U].image:g.image[U],H[U]=Te(g,H[U]);let mt=H[0],_t=M(mt)||a,lt=s.convert(g.format,g.encoding),gt=s.convert(g.type),dt=x(g.internalFormat,lt,gt,g.encoding),Pt=a&&g.isVideoTexture!==!0,Ut=st.__version===void 0||K===!0,Jt=S(g,mt,_t);O(34067,g,_t);let E;if(yt){Pt&&Ut&&e.texStorage2D(34067,Jt,dt,mt.width,mt.height);for(let U=0;U<6;U++){E=H[U].mipmaps;for(let $=0;$0&&Jt++,e.texStorage2D(34067,Jt,dt,H[0].width,H[0].height));for(let U=0;U<6;U++)if(rt){Pt?e.texSubImage2D(34069+U,0,0,0,H[U].width,H[U].height,lt,gt,H[U].data):e.texImage2D(34069+U,0,dt,H[U].width,H[U].height,0,lt,gt,H[U].data);for(let $=0;$=34069&&tt<=34074)&&r.framebufferTexture2D(36160,K,tt,n.get(k).__webglTexture,0),e.bindFramebuffer(36160,null)}function Ft(w,g,k){if(r.bindRenderbuffer(36161,w),g.depthBuffer&&!g.stencilBuffer){let K=33189;if(k||Dt(g)){let tt=g.depthTexture;tt&&tt.isDepthTexture&&(tt.type===gn?K=36012:tt.type===mn&&(K=33190));let st=Ht(g);Dt(g)?u.renderbufferStorageMultisampleEXT(36161,st,K,g.width,g.height):r.renderbufferStorageMultisample(36161,st,K,g.width,g.height)}else r.renderbufferStorage(36161,K,g.width,g.height);r.framebufferRenderbuffer(36160,36096,36161,w)}else if(g.depthBuffer&&g.stencilBuffer){let K=Ht(g);k&&Dt(g)===!1?r.renderbufferStorageMultisample(36161,K,35056,g.width,g.height):Dt(g)?u.renderbufferStorageMultisampleEXT(36161,K,35056,g.width,g.height):r.renderbufferStorage(36161,34041,g.width,g.height),r.framebufferRenderbuffer(36160,33306,36161,w)}else{let K=g.isWebGLMultipleRenderTargets===!0?g.texture:[g.texture];for(let tt=0;tt0&&Dt(w)===!1){let rt=st?g:[g];k.__webglMultisampledFramebuffer=r.createFramebuffer(),k.__webglColorRenderbuffer=[],e.bindFramebuffer(36160,k.__webglMultisampledFramebuffer);for(let H=0;H0&&Dt(w)===!1){let g=w.isWebGLMultipleRenderTargets?w.texture:[w.texture],k=w.width,K=w.height,tt=16384,st=[],yt=w.stencilBuffer?33306:36096,rt=n.get(w),H=w.isWebGLMultipleRenderTargets===!0;if(H)for(let mt=0;mt0&&t.has("WEBGL_multisampled_render_to_texture")===!0&&g.__useRenderToTexture!==!1}function Fe(w){let g=o.render.frame;_.get(w)!==g&&(_.set(w,g),w.update())}function Te(w,g){let k=w.encoding,K=w.format,tt=w.type;return w.isCompressedTexture===!0||w.isVideoTexture===!0||w.format===Ys||k!==vn&&(k===zt?a===!1?t.has("EXT_sRGB")===!0&&K===Re?(w.format=Ys,w.minFilter=Se,w.generateMipmaps=!1):g=Xi.sRGBToLinear(g):(K!==Re||tt!==yn)&&console.warn("THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType."):console.error("THREE.WebGLTextures: Unsupported texture encoding:",k)),g}this.allocateTextureUnit=W,this.resetTextureUnits=j,this.setTexture2D=Z,this.setTexture2DArray=ft,this.setTexture3D=F,this.setTextureCube=J,this.rebindTextures=ne,this.setupRenderTarget=ve,this.updateRenderTargetMipmap=Qt,this.updateMultisampleRenderTarget=Me,this.setupDepthRenderbuffer=xt,this.setupFrameBufferTexture=ot,this.useMultisampledRTT=Dt}function tf(r,t,e){let n=e.isWebGL2;function i(s,o=null){let a;if(s===yn)return 5121;if(s===Ho)return 32819;if(s===Wo)return 32820;if(s===ko)return 5120;if(s===Vo)return 5122;if(s===Ya)return 5123;if(s===Go)return 5124;if(s===mn)return 5125;if(s===gn)return 5126;if(s===mi)return n?5131:(a=t.get("OES_texture_half_float"),a!==null?a.HALF_FLOAT_OES:null);if(s===Xo)return 6406;if(s===Re)return 6408;if(s===qo)return 6409;if(s===Yo)return 6410;if(s===_n)return 6402;if(s===Yn)return 34041;if(s===Ys)return a=t.get("EXT_sRGB"),a!==null?a.SRGB_ALPHA_EXT:null;if(s===Zo)return 6403;if(s===Jo)return 36244;if(s===$o)return 33319;if(s===Ko)return 33320;if(s===jo)return 36249;if(s===ds||s===fs||s===ps||s===ms)if(o===zt)if(a=t.get("WEBGL_compressed_texture_s3tc_srgb"),a!==null){if(s===ds)return a.COMPRESSED_SRGB_S3TC_DXT1_EXT;if(s===fs)return a.COMPRESSED_SRGB_ALPHA_S3TC_DXT1_EXT;if(s===ps)return a.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;if(s===ms)return a.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT}else return null;else if(a=t.get("WEBGL_compressed_texture_s3tc"),a!==null){if(s===ds)return a.COMPRESSED_RGB_S3TC_DXT1_EXT;if(s===fs)return a.COMPRESSED_RGBA_S3TC_DXT1_EXT;if(s===ps)return a.COMPRESSED_RGBA_S3TC_DXT3_EXT;if(s===ms)return a.COMPRESSED_RGBA_S3TC_DXT5_EXT}else return null;if(s===zr||s===Or||s===Ur||s===Br)if(a=t.get("WEBGL_compressed_texture_pvrtc"),a!==null){if(s===zr)return a.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;if(s===Or)return a.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;if(s===Ur)return a.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;if(s===Br)return a.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG}else return null;if(s===Qo)return a=t.get("WEBGL_compressed_texture_etc1"),a!==null?a.COMPRESSED_RGB_ETC1_WEBGL:null;if(s===kr||s===Vr)if(a=t.get("WEBGL_compressed_texture_etc"),a!==null){if(s===kr)return o===zt?a.COMPRESSED_SRGB8_ETC2:a.COMPRESSED_RGB8_ETC2;if(s===Vr)return o===zt?a.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC:a.COMPRESSED_RGBA8_ETC2_EAC}else return null;if(s===Gr||s===Hr||s===Wr||s===Xr||s===qr||s===Yr||s===Zr||s===Jr||s===$r||s===Kr||s===jr||s===Qr||s===ta||s===ea)if(a=t.get("WEBGL_compressed_texture_astc"),a!==null){if(s===Gr)return o===zt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR:a.COMPRESSED_RGBA_ASTC_4x4_KHR;if(s===Hr)return o===zt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_5x4_KHR:a.COMPRESSED_RGBA_ASTC_5x4_KHR;if(s===Wr)return o===zt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_5x5_KHR:a.COMPRESSED_RGBA_ASTC_5x5_KHR;if(s===Xr)return o===zt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_6x5_KHR:a.COMPRESSED_RGBA_ASTC_6x5_KHR;if(s===qr)return o===zt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_6x6_KHR:a.COMPRESSED_RGBA_ASTC_6x6_KHR;if(s===Yr)return o===zt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_8x5_KHR:a.COMPRESSED_RGBA_ASTC_8x5_KHR;if(s===Zr)return o===zt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_8x6_KHR:a.COMPRESSED_RGBA_ASTC_8x6_KHR;if(s===Jr)return o===zt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_8x8_KHR:a.COMPRESSED_RGBA_ASTC_8x8_KHR;if(s===$r)return o===zt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x5_KHR:a.COMPRESSED_RGBA_ASTC_10x5_KHR;if(s===Kr)return o===zt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x6_KHR:a.COMPRESSED_RGBA_ASTC_10x6_KHR;if(s===jr)return o===zt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x8_KHR:a.COMPRESSED_RGBA_ASTC_10x8_KHR;if(s===Qr)return o===zt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_10x10_KHR:a.COMPRESSED_RGBA_ASTC_10x10_KHR;if(s===ta)return o===zt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_12x10_KHR:a.COMPRESSED_RGBA_ASTC_12x10_KHR;if(s===ea)return o===zt?a.COMPRESSED_SRGB8_ALPHA8_ASTC_12x12_KHR:a.COMPRESSED_RGBA_ASTC_12x12_KHR}else return null;if(s===gs)if(a=t.get("EXT_texture_compression_bptc"),a!==null){if(s===gs)return o===zt?a.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT:a.COMPRESSED_RGBA_BPTC_UNORM_EXT}else return null;if(s===tl||s===na||s===ia||s===sa)if(a=t.get("EXT_texture_compression_rgtc"),a!==null){if(s===gs)return a.COMPRESSED_RED_RGTC1_EXT;if(s===na)return a.COMPRESSED_SIGNED_RED_RGTC1_EXT;if(s===ia)return a.COMPRESSED_RED_GREEN_RGTC2_EXT;if(s===sa)return a.COMPRESSED_SIGNED_RED_GREEN_RGTC2_EXT}else return null;return s===Hn?n?34042:(a=t.get("WEBGL_depth_texture"),a!==null?a.UNSIGNED_INT_24_8_WEBGL:null):r[s]!==void 0?r[s]:null}return{convert:i}}var lr=class extends _e{constructor(t=[]){super(),this.isArrayCamera=!0,this.cameras=t}},Vn=class extends de{constructor(){super(),this.isGroup=!0,this.type="Group"}},ef={type:"move"},fi=class{constructor(){this._targetRay=null,this._grip=null,this._hand=null}getHandSpace(){return this._hand===null&&(this._hand=new Vn,this._hand.matrixAutoUpdate=!1,this._hand.visible=!1,this._hand.joints={},this._hand.inputState={pinching:!1}),this._hand}getTargetRaySpace(){return this._targetRay===null&&(this._targetRay=new Vn,this._targetRay.matrixAutoUpdate=!1,this._targetRay.visible=!1,this._targetRay.hasLinearVelocity=!1,this._targetRay.linearVelocity=new N,this._targetRay.hasAngularVelocity=!1,this._targetRay.angularVelocity=new N),this._targetRay}getGripSpace(){return this._grip===null&&(this._grip=new Vn,this._grip.matrixAutoUpdate=!1,this._grip.visible=!1,this._grip.hasLinearVelocity=!1,this._grip.linearVelocity=new N,this._grip.hasAngularVelocity=!1,this._grip.angularVelocity=new N),this._grip}dispatchEvent(t){return this._targetRay!==null&&this._targetRay.dispatchEvent(t),this._grip!==null&&this._grip.dispatchEvent(t),this._hand!==null&&this._hand.dispatchEvent(t),this}connect(t){if(t&&t.hand){let e=this._hand;if(e)for(let n of t.hand.values())this._getHandJoint(e,n)}return this.dispatchEvent({type:"connected",data:t}),this}disconnect(t){return this.dispatchEvent({type:"disconnected",data:t}),this._targetRay!==null&&(this._targetRay.visible=!1),this._grip!==null&&(this._grip.visible=!1),this._hand!==null&&(this._hand.visible=!1),this}update(t,e,n){let i=null,s=null,o=null,a=this._targetRay,c=this._grip,l=this._hand;if(t&&e.session.visibilityState!=="visible-blurred"){if(l&&t.hand){o=!0;for(let p of t.hand.values()){let d=e.getJointPose(p,n),v=this._getHandJoint(l,p);d!==null&&(v.matrix.fromArray(d.transform.matrix),v.matrix.decompose(v.position,v.rotation,v.scale),v.jointRadius=d.radius),v.visible=d!==null}let h=l.joints["index-finger-tip"],f=l.joints["thumb-tip"],u=h.position.distanceTo(f.position),m=.02,_=.005;l.inputState.pinching&&u>m+_?(l.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:t.handedness,target:this})):!l.inputState.pinching&&u<=m-_&&(l.inputState.pinching=!0,this.dispatchEvent({type:"pinchstart",handedness:t.handedness,target:this}))}else c!==null&&t.gripSpace&&(s=e.getPose(t.gripSpace,n),s!==null&&(c.matrix.fromArray(s.transform.matrix),c.matrix.decompose(c.position,c.rotation,c.scale),s.linearVelocity?(c.hasLinearVelocity=!0,c.linearVelocity.copy(s.linearVelocity)):c.hasLinearVelocity=!1,s.angularVelocity?(c.hasAngularVelocity=!0,c.angularVelocity.copy(s.angularVelocity)):c.hasAngularVelocity=!1));a!==null&&(i=e.getPose(t.targetRaySpace,n),i===null&&s!==null&&(i=s),i!==null&&(a.matrix.fromArray(i.transform.matrix),a.matrix.decompose(a.position,a.rotation,a.scale),i.linearVelocity?(a.hasLinearVelocity=!0,a.linearVelocity.copy(i.linearVelocity)):a.hasLinearVelocity=!1,i.angularVelocity?(a.hasAngularVelocity=!0,a.angularVelocity.copy(i.angularVelocity)):a.hasAngularVelocity=!1,this.dispatchEvent(ef)))}return a!==null&&(a.visible=i!==null),c!==null&&(c.visible=s!==null),l!==null&&(l.visible=o!==null),this}_getHandJoint(t,e){if(t.joints[e.jointName]===void 0){let n=new Vn;n.matrixAutoUpdate=!1,n.visible=!1,t.joints[e.jointName]=n,t.add(n)}return t.joints[e.jointName]}},cr=class extends le{constructor(t,e,n,i,s,o,a,c,l,h){if(h=h!==void 0?h:_n,h!==_n&&h!==Yn)throw new Error("DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat");n===void 0&&h===_n&&(n=mn),n===void 0&&h===Yn&&(n=Hn),super(null,i,s,o,a,c,h,n,l),this.isDepthTexture=!0,this.image={width:t,height:e},this.magFilter=a!==void 0?a:ae,this.minFilter=c!==void 0?c:ae,this.flipY=!1,this.generateMipmaps=!1}},hr=class extends sn{constructor(t,e){super();let n=this,i=null,s=1,o=null,a="local-floor",c=1,l=null,h=null,f=null,u=null,m=null,_=null,p=e.getContextAttributes(),d=null,v=null,T=[],b=[],M=new Set,A=new Map,C=new _e;C.layers.enable(1),C.viewport=new Xt;let I=new _e;I.layers.enable(2),I.viewport=new Xt;let x=[C,I],S=new lr;S.layers.enable(1),S.layers.enable(2);let L=null,X=null;this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function(F){let J=T[F];return J===void 0&&(J=new fi,T[F]=J),J.getTargetRaySpace()},this.getControllerGrip=function(F){let J=T[F];return J===void 0&&(J=new fi,T[F]=J),J.getGripSpace()},this.getHand=function(F){let J=T[F];return J===void 0&&(J=new fi,T[F]=J),J.getHandSpace()};function q(F){let J=b.indexOf(F.inputSource);if(J===-1)return;let nt=T[J];nt!==void 0&&nt.dispatchEvent({type:F.type,data:F.inputSource})}function z(){i.removeEventListener("select",q),i.removeEventListener("selectstart",q),i.removeEventListener("selectend",q),i.removeEventListener("squeeze",q),i.removeEventListener("squeezestart",q),i.removeEventListener("squeezeend",q),i.removeEventListener("end",z),i.removeEventListener("inputsourceschange",R);for(let F=0;F=0&&(b[it]=null,T[it].disconnect(nt))}for(let J=0;J=b.length){b.push(nt),it=Mt;break}else if(b[Mt]===null){b[Mt]=nt,it=Mt;break}if(it===-1)break}let O=T[it];O&&O.connect(nt)}}let G=new N,Y=new N;function j(F,J,nt){G.setFromMatrixPosition(J.matrixWorld),Y.setFromMatrixPosition(nt.matrixWorld);let it=G.distanceTo(Y),O=J.projectionMatrix.elements,Mt=nt.projectionMatrix.elements,ht=O[14]/(O[10]-1),ut=O[14]/(O[10]+1),ot=(O[9]+1)/O[5],Ft=(O[9]-1)/O[5],bt=(O[8]-1)/O[0],xt=(Mt[8]+1)/Mt[0],ne=ht*bt,ve=ht*xt,Qt=it/(-bt+xt),Me=Qt*-bt;J.matrixWorld.decompose(F.position,F.quaternion,F.scale),F.translateX(Me),F.translateZ(Qt),F.matrixWorld.compose(F.position,F.quaternion,F.scale),F.matrixWorldInverse.copy(F.matrixWorld).invert();let Ht=ht+Qt,Dt=ut+Qt,Fe=ne-Me,Te=ve+(it-Me),w=ot*ut/Dt*Ht,g=Ft*ut/Dt*Ht;F.projectionMatrix.makePerspective(Fe,Te,w,g,Ht,Dt)}function W(F,J){J===null?F.matrixWorld.copy(F.matrix):F.matrixWorld.multiplyMatrices(J.matrixWorld,F.matrix),F.matrixWorldInverse.copy(F.matrixWorld).invert()}this.updateCamera=function(F){if(i===null)return;S.near=I.near=C.near=F.near,S.far=I.far=C.far=F.far,(L!==S.near||X!==S.far)&&(i.updateRenderState({depthNear:S.near,depthFar:S.far}),L=S.near,X=S.far);let J=F.parent,nt=S.cameras;W(S,J);for(let O=0;OO&&(A.set(it,it.lastChangedTime),n.dispatchEvent({type:"planechanged",data:it}))}}_=null}let ft=new ja;ft.setAnimationLoop(Z),this.setAnimationLoop=function(F){Q=F},this.dispose=function(){}}};function nf(r,t){function e(p,d){d.color.getRGB(p.fogColor.value,Ka(r)),d.isFog?(p.fogNear.value=d.near,p.fogFar.value=d.far):d.isFogExp2&&(p.fogDensity.value=d.density)}function n(p,d,v,T,b){d.isMeshBasicMaterial||d.isMeshLambertMaterial?i(p,d):d.isMeshToonMaterial?(i(p,d),h(p,d)):d.isMeshPhongMaterial?(i(p,d),l(p,d)):d.isMeshStandardMaterial?(i(p,d),f(p,d),d.isMeshPhysicalMaterial&&u(p,d,b)):d.isMeshMatcapMaterial?(i(p,d),m(p,d)):d.isMeshDepthMaterial?i(p,d):d.isMeshDistanceMaterial?(i(p,d),_(p,d)):d.isMeshNormalMaterial?i(p,d):d.isLineBasicMaterial?(s(p,d),d.isLineDashedMaterial&&o(p,d)):d.isPointsMaterial?a(p,d,v,T):d.isSpriteMaterial?c(p,d):d.isShadowMaterial?(p.color.value.copy(d.color),p.opacity.value=d.opacity):d.isShaderMaterial&&(d.uniformsNeedUpdate=!1)}function i(p,d){p.opacity.value=d.opacity,d.color&&p.diffuse.value.copy(d.color),d.emissive&&p.emissive.value.copy(d.emissive).multiplyScalar(d.emissiveIntensity),d.map&&(p.map.value=d.map),d.alphaMap&&(p.alphaMap.value=d.alphaMap),d.bumpMap&&(p.bumpMap.value=d.bumpMap,p.bumpScale.value=d.bumpScale,d.side===ye&&(p.bumpScale.value*=-1)),d.displacementMap&&(p.displacementMap.value=d.displacementMap,p.displacementScale.value=d.displacementScale,p.displacementBias.value=d.displacementBias),d.emissiveMap&&(p.emissiveMap.value=d.emissiveMap),d.normalMap&&(p.normalMap.value=d.normalMap,p.normalScale.value.copy(d.normalScale),d.side===ye&&p.normalScale.value.negate()),d.specularMap&&(p.specularMap.value=d.specularMap),d.alphaTest>0&&(p.alphaTest.value=d.alphaTest);let v=t.get(d).envMap;if(v&&(p.envMap.value=v,p.flipEnvMap.value=v.isCubeTexture&&v.isRenderTargetTexture===!1?-1:1,p.reflectivity.value=d.reflectivity,p.ior.value=d.ior,p.refractionRatio.value=d.refractionRatio),d.lightMap){p.lightMap.value=d.lightMap;let M=r.physicallyCorrectLights!==!0?Math.PI:1;p.lightMapIntensity.value=d.lightMapIntensity*M}d.aoMap&&(p.aoMap.value=d.aoMap,p.aoMapIntensity.value=d.aoMapIntensity);let T;d.map?T=d.map:d.specularMap?T=d.specularMap:d.displacementMap?T=d.displacementMap:d.normalMap?T=d.normalMap:d.bumpMap?T=d.bumpMap:d.roughnessMap?T=d.roughnessMap:d.metalnessMap?T=d.metalnessMap:d.alphaMap?T=d.alphaMap:d.emissiveMap?T=d.emissiveMap:d.clearcoatMap?T=d.clearcoatMap:d.clearcoatNormalMap?T=d.clearcoatNormalMap:d.clearcoatRoughnessMap?T=d.clearcoatRoughnessMap:d.iridescenceMap?T=d.iridescenceMap:d.iridescenceThicknessMap?T=d.iridescenceThicknessMap:d.specularIntensityMap?T=d.specularIntensityMap:d.specularColorMap?T=d.specularColorMap:d.transmissionMap?T=d.transmissionMap:d.thicknessMap?T=d.thicknessMap:d.sheenColorMap?T=d.sheenColorMap:d.sheenRoughnessMap&&(T=d.sheenRoughnessMap),T!==void 0&&(T.isWebGLRenderTarget&&(T=T.texture),T.matrixAutoUpdate===!0&&T.updateMatrix(),p.uvTransform.value.copy(T.matrix));let b;d.aoMap?b=d.aoMap:d.lightMap&&(b=d.lightMap),b!==void 0&&(b.isWebGLRenderTarget&&(b=b.texture),b.matrixAutoUpdate===!0&&b.updateMatrix(),p.uv2Transform.value.copy(b.matrix))}function s(p,d){p.diffuse.value.copy(d.color),p.opacity.value=d.opacity}function o(p,d){p.dashSize.value=d.dashSize,p.totalSize.value=d.dashSize+d.gapSize,p.scale.value=d.scale}function a(p,d,v,T){p.diffuse.value.copy(d.color),p.opacity.value=d.opacity,p.size.value=d.size*v,p.scale.value=T*.5,d.map&&(p.map.value=d.map),d.alphaMap&&(p.alphaMap.value=d.alphaMap),d.alphaTest>0&&(p.alphaTest.value=d.alphaTest);let b;d.map?b=d.map:d.alphaMap&&(b=d.alphaMap),b!==void 0&&(b.matrixAutoUpdate===!0&&b.updateMatrix(),p.uvTransform.value.copy(b.matrix))}function c(p,d){p.diffuse.value.copy(d.color),p.opacity.value=d.opacity,p.rotation.value=d.rotation,d.map&&(p.map.value=d.map),d.alphaMap&&(p.alphaMap.value=d.alphaMap),d.alphaTest>0&&(p.alphaTest.value=d.alphaTest);let v;d.map?v=d.map:d.alphaMap&&(v=d.alphaMap),v!==void 0&&(v.matrixAutoUpdate===!0&&v.updateMatrix(),p.uvTransform.value.copy(v.matrix))}function l(p,d){p.specular.value.copy(d.specular),p.shininess.value=Math.max(d.shininess,1e-4)}function h(p,d){d.gradientMap&&(p.gradientMap.value=d.gradientMap)}function f(p,d){p.roughness.value=d.roughness,p.metalness.value=d.metalness,d.roughnessMap&&(p.roughnessMap.value=d.roughnessMap),d.metalnessMap&&(p.metalnessMap.value=d.metalnessMap),t.get(d).envMap&&(p.envMapIntensity.value=d.envMapIntensity)}function u(p,d,v){p.ior.value=d.ior,d.sheen>0&&(p.sheenColor.value.copy(d.sheenColor).multiplyScalar(d.sheen),p.sheenRoughness.value=d.sheenRoughness,d.sheenColorMap&&(p.sheenColorMap.value=d.sheenColorMap),d.sheenRoughnessMap&&(p.sheenRoughnessMap.value=d.sheenRoughnessMap)),d.clearcoat>0&&(p.clearcoat.value=d.clearcoat,p.clearcoatRoughness.value=d.clearcoatRoughness,d.clearcoatMap&&(p.clearcoatMap.value=d.clearcoatMap),d.clearcoatRoughnessMap&&(p.clearcoatRoughnessMap.value=d.clearcoatRoughnessMap),d.clearcoatNormalMap&&(p.clearcoatNormalScale.value.copy(d.clearcoatNormalScale),p.clearcoatNormalMap.value=d.clearcoatNormalMap,d.side===ye&&p.clearcoatNormalScale.value.negate())),d.iridescence>0&&(p.iridescence.value=d.iridescence,p.iridescenceIOR.value=d.iridescenceIOR,p.iridescenceThicknessMinimum.value=d.iridescenceThicknessRange[0],p.iridescenceThicknessMaximum.value=d.iridescenceThicknessRange[1],d.iridescenceMap&&(p.iridescenceMap.value=d.iridescenceMap),d.iridescenceThicknessMap&&(p.iridescenceThicknessMap.value=d.iridescenceThicknessMap)),d.transmission>0&&(p.transmission.value=d.transmission,p.transmissionSamplerMap.value=v.texture,p.transmissionSamplerSize.value.set(v.width,v.height),d.transmissionMap&&(p.transmissionMap.value=d.transmissionMap),p.thickness.value=d.thickness,d.thicknessMap&&(p.thicknessMap.value=d.thicknessMap),p.attenuationDistance.value=d.attenuationDistance,p.attenuationColor.value.copy(d.attenuationColor)),p.specularIntensity.value=d.specularIntensity,p.specularColor.value.copy(d.specularColor),d.specularIntensityMap&&(p.specularIntensityMap.value=d.specularIntensityMap),d.specularColorMap&&(p.specularColorMap.value=d.specularColorMap)}function m(p,d){d.matcap&&(p.matcap.value=d.matcap)}function _(p,d){p.referencePosition.value.copy(d.referencePosition),p.nearDistance.value=d.nearDistance,p.farDistance.value=d.farDistance}return{refreshFogUniforms:e,refreshMaterialUniforms:n}}function sf(r,t,e,n){let i={},s={},o=[],a=e.isWebGL2?r.getParameter(35375):0;function c(T,b){let M=b.program;n.uniformBlockBinding(T,M)}function l(T,b){let M=i[T.id];M===void 0&&(_(T),M=h(T),i[T.id]=M,T.addEventListener("dispose",d));let A=b.program;n.updateUBOMapping(T,A);let C=t.render.frame;s[T.id]!==C&&(u(T),s[T.id]=C)}function h(T){let b=f();T.__bindingPointIndex=b;let M=r.createBuffer(),A=T.__size,C=T.usage;return r.bindBuffer(35345,M),r.bufferData(35345,A,C),r.bindBuffer(35345,null),r.bindBufferBase(35345,b,M),M}function f(){for(let T=0;T0){C=M%A;let q=A-C;C!==0&&q-L.boundary<0&&(M+=A-C,S.__offset=M)}M+=L.storage}return C=M%A,C>0&&(M+=A-C),T.__size=M,T.__cache={},this}function p(T){let b={boundary:0,storage:0};return typeof T=="number"?(b.boundary=4,b.storage=4):T.isVector2?(b.boundary=8,b.storage=8):T.isVector3||T.isColor?(b.boundary=16,b.storage=12):T.isVector4?(b.boundary=16,b.storage=16):T.isMatrix3?(b.boundary=48,b.storage=48):T.isMatrix4?(b.boundary=64,b.storage=64):T.isTexture?console.warn("THREE.WebGLRenderer: Texture samplers can not be part of an uniforms group."):console.warn("THREE.WebGLRenderer: Unsupported uniform value type.",T),b}function d(T){let b=T.target;b.removeEventListener("dispose",d);let M=o.indexOf(b.__bindingPointIndex);o.splice(M,1),r.deleteBuffer(i[b.id]),delete i[b.id],delete s[b.id]}function v(){for(let T in i)r.deleteBuffer(i[T]);o=[],i={},s={}}return{bind:c,update:l,dispose:v}}function rf(){let r=Wi("canvas");return r.style.display="block",r}function af(r={}){this.isWebGLRenderer=!0;let t=r.canvas!==void 0?r.canvas:rf(),e=r.context!==void 0?r.context:null,n=r.depth!==void 0?r.depth:!0,i=r.stencil!==void 0?r.stencil:!0,s=r.antialias!==void 0?r.antialias:!1,o=r.premultipliedAlpha!==void 0?r.premultipliedAlpha:!0,a=r.preserveDrawingBuffer!==void 0?r.preserveDrawingBuffer:!1,c=r.powerPreference!==void 0?r.powerPreference:"default",l=r.failIfMajorPerformanceCaveat!==void 0?r.failIfMajorPerformanceCaveat:!1,h;e!==null?h=e.getContextAttributes().alpha:h=r.alpha!==void 0?r.alpha:!1;let f=null,u=null,m=[],_=[];this.domElement=t,this.debug={checkShaderErrors:!0},this.autoClear=!0,this.autoClearColor=!0,this.autoClearDepth=!0,this.autoClearStencil=!0,this.sortObjects=!0,this.clippingPlanes=[],this.localClippingEnabled=!1,this.outputEncoding=vn,this.physicallyCorrectLights=!1,this.toneMapping=We,this.toneMappingExposure=1;let p=this,d=!1,v=0,T=0,b=null,M=-1,A=null,C=new Xt,I=new Xt,x=null,S=t.width,L=t.height,X=1,q=null,z=null,R=new Xt(0,0,S,L),G=new Xt(0,0,S,L),Y=!1,j=new ts,W=!1,Q=!1,Z=null,ft=new qt,F=new Nt,J=new N,nt={background:null,fog:null,environment:null,overrideMaterial:null,isScene:!0};function it(){return b===null?X:1}let O=e;function Mt(y,D){for(let B=0;B0?u=_[_.length-1]:u=null,m.pop(),m.length>0?f=m[m.length-1]:f=null};function $t(y,D,B,P){if(y.visible===!1)return;if(y.layers.test(D.layers)){if(y.isGroup)B=y.renderOrder;else if(y.isLOD)y.autoUpdate===!0&&y.update(D);else if(y.isLight)u.pushLight(y),y.castShadow&&u.pushShadow(y);else if(y.isSprite){if(!y.frustumCulled||j.intersectsSprite(y)){P&&J.setFromMatrixPosition(y.matrixWorld).applyMatrix4(ft);let vt=Ht.update(y),St=y.material;St.visible&&f.push(y,vt,St,B,J.z,null)}}else if((y.isMesh||y.isLine||y.isPoints)&&(y.isSkinnedMesh&&y.skeleton.frame!==Ft.render.frame&&(y.skeleton.update(),y.skeleton.frame=Ft.render.frame),!y.frustumCulled||j.intersectsObject(y))){P&&J.setFromMatrixPosition(y.matrixWorld).applyMatrix4(ft);let vt=Ht.update(y),St=y.material;if(Array.isArray(St)){let Tt=vt.groups;for(let Rt=0,At=Tt.length;Rt0&&an(V,D,B),P&&ot.viewport(C.copy(P)),V.length>0&&Bt(V,D,B),pt.length>0&&Bt(pt,D,B),vt.length>0&&Bt(vt,D,B),ot.buffers.depth.setTest(!0),ot.buffers.depth.setMask(!0),ot.buffers.color.setMask(!0),ot.setPolygonOffset(!1)}function an(y,D,B){let P=ut.isWebGL2;Z===null&&(Z=new qe(1,1,{generateMipmaps:!0,type:ht.has("EXT_color_buffer_half_float")?mi:yn,minFilter:pi,samples:P&&s===!0?4:0})),p.getDrawingBufferSize(F),P?Z.setSize(F.x,F.y):Z.setSize(Hi(F.x),Hi(F.y));let V=p.getRenderTarget();p.setRenderTarget(Z),p.clear();let pt=p.toneMapping;p.toneMapping=We,Bt(y,D,B),p.toneMapping=pt,xt.updateMultisampleRenderTarget(Z),xt.updateRenderTargetMipmap(Z),p.setRenderTarget(V)}function Bt(y,D,B){let P=D.isScene===!0?D.overrideMaterial:null;for(let V=0,pt=y.length;V0&&xt.useMultisampledRTT(y)===!1?V=bt.get(y).__webglMultisampledFramebuffer:V=At,C.copy(y.viewport),I.copy(y.scissor),x=y.scissorTest}else C.copy(R).multiplyScalar(X).floor(),I.copy(G).multiplyScalar(X).floor(),x=Y;if(ot.bindFramebuffer(36160,V)&&ut.drawBuffers&&P&&ot.drawBuffers(y,V),ot.viewport(C),ot.scissor(I),ot.setScissorTest(x),pt){let Tt=bt.get(y.texture);O.framebufferTexture2D(36160,36064,34069+D,Tt.__webglTexture,B)}else if(vt){let Tt=bt.get(y.texture),Rt=D||0;O.framebufferTextureLayer(36160,36064,Tt.__webglTexture,B||0,Rt)}M=-1},this.readRenderTargetPixels=function(y,D,B,P,V,pt,vt){if(!(y&&y.isWebGLRenderTarget)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");return}let St=bt.get(y).__webglFramebuffer;if(y.isWebGLCubeRenderTarget&&vt!==void 0&&(St=St[vt]),St){ot.bindFramebuffer(36160,St);try{let Tt=y.texture,Rt=Tt.format,At=Tt.type;if(Rt!==Re&&rt.convert(Rt)!==O.getParameter(35739)){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.");return}let Et=At===mi&&(ht.has("EXT_color_buffer_half_float")||ut.isWebGL2&&ht.has("EXT_color_buffer_float"));if(At!==yn&&rt.convert(At)!==O.getParameter(35738)&&!(At===gn&&(ut.isWebGL2||ht.has("OES_texture_float")||ht.has("WEBGL_color_buffer_float")))&&!Et){console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.");return}D>=0&&D<=y.width-P&&B>=0&&B<=y.height-V&&O.readPixels(D,B,P,V,rt.convert(Rt),rt.convert(At),pt)}finally{let Tt=b!==null?bt.get(b).__webglFramebuffer:null;ot.bindFramebuffer(36160,Tt)}}},this.copyFramebufferToTexture=function(y,D,B=0){let P=Math.pow(2,-B),V=Math.floor(D.image.width*P),pt=Math.floor(D.image.height*P);xt.setTexture2D(D,0),O.copyTexSubImage2D(3553,B,0,0,y.x,y.y,V,pt),ot.unbindTexture()},this.copyTextureToTexture=function(y,D,B,P=0){let V=D.image.width,pt=D.image.height,vt=rt.convert(B.format),St=rt.convert(B.type);xt.setTexture2D(B,0),O.pixelStorei(37440,B.flipY),O.pixelStorei(37441,B.premultiplyAlpha),O.pixelStorei(3317,B.unpackAlignment),D.isDataTexture?O.texSubImage2D(3553,P,y.x,y.y,V,pt,vt,St,D.image.data):D.isCompressedTexture?O.compressedTexSubImage2D(3553,P,y.x,y.y,D.mipmaps[0].width,D.mipmaps[0].height,vt,D.mipmaps[0].data):O.texSubImage2D(3553,P,y.x,y.y,vt,St,D.image),P===0&&B.generateMipmaps&&O.generateMipmap(3553),ot.unbindTexture()},this.copyTextureToTexture3D=function(y,D,B,P,V=0){if(p.isWebGL1Renderer){console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: can only be used with WebGL2.");return}let pt=y.max.x-y.min.x+1,vt=y.max.y-y.min.y+1,St=y.max.z-y.min.z+1,Tt=rt.convert(P.format),Rt=rt.convert(P.type),At;if(P.isData3DTexture)xt.setTexture3D(P,0),At=32879;else if(P.isDataArrayTexture)xt.setTexture2DArray(P,0),At=35866;else{console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: only supports THREE.DataTexture3D and THREE.DataTexture2DArray.");return}O.pixelStorei(37440,P.flipY),O.pixelStorei(37441,P.premultiplyAlpha),O.pixelStorei(3317,P.unpackAlignment);let Et=O.getParameter(3314),kt=O.getParameter(32878),fe=O.getParameter(3316),Oe=O.getParameter(3315),on=O.getParameter(32877),Vt=B.isCompressedTexture?B.mipmaps[0]:B.image;O.pixelStorei(3314,Vt.width),O.pixelStorei(32878,Vt.height),O.pixelStorei(3316,y.min.x),O.pixelStorei(3315,y.min.y),O.pixelStorei(32877,y.min.z),B.isDataTexture||B.isData3DTexture?O.texSubImage3D(At,V,D.x,D.y,D.z,pt,vt,St,Tt,Rt,Vt.data):B.isCompressedArrayTexture?(console.warn("THREE.WebGLRenderer.copyTextureToTexture3D: untested support for compressed srcTexture."),O.compressedTexSubImage3D(At,V,D.x,D.y,D.z,pt,vt,St,Tt,Vt.data)):O.texSubImage3D(At,V,D.x,D.y,D.z,pt,vt,St,Tt,Rt,Vt),O.pixelStorei(3314,Et),O.pixelStorei(32878,kt),O.pixelStorei(3316,fe),O.pixelStorei(3315,Oe),O.pixelStorei(32877,on),V===0&&P.generateMipmaps&&O.generateMipmap(At),ot.unbindTexture()},this.initTexture=function(y){y.isCubeTexture?xt.setTextureCube(y,0):y.isData3DTexture?xt.setTexture3D(y,0):y.isDataArrayTexture||y.isCompressedArrayTexture?xt.setTexture2DArray(y,0):xt.setTexture2D(y,0),ot.unbindTexture()},this.resetState=function(){v=0,T=0,b=null,ot.reset(),H.reset()},typeof __THREE_DEVTOOLS__!="undefined"&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}var ur=class extends af{};ur.prototype.isWebGL1Renderer=!0;function Qe(r,t,e){return io(r)?new r.constructor(r.subarray(t,e!==void 0?e:r.length)):r.slice(t,e)}function Ui(r,t,e){return!r||!e&&r.constructor===t?r:typeof t.BYTES_PER_ELEMENT=="number"?new t(r):Array.prototype.slice.call(r)}function io(r){return ArrayBuffer.isView(r)&&!(r instanceof DataView)}var Kn=class{constructor(t,e,n,i){this.parameterPositions=t,this._cachedIndex=0,this.resultBuffer=i!==void 0?i:new e.constructor(n),this.sampleValues=e,this.valueSize=n,this.settings=null,this.DefaultSettings_={}}evaluate(t){let e=this.parameterPositions,n=this._cachedIndex,i=e[n],s=e[n-1];n:{t:{let o;e:{i:if(!(t=s)){let a=e[1];t=s)break t}o=n,n=0;break e}break n}for(;n>>1;te;)--o;if(++o,s!==0||o!==i){s>=o&&(o=Math.max(o,1),s=o-1);let a=this.getValueSize();this.times=Qe(n,s,o),this.values=Qe(this.values,s*a,o*a)}return this}validate(){let t=!0,e=this.getValueSize();e-Math.floor(e)!==0&&(console.error("THREE.KeyframeTrack: Invalid value size in track.",this),t=!1);let n=this.times,i=this.values,s=n.length;s===0&&(console.error("THREE.KeyframeTrack: Track is empty.",this),t=!1);let o=null;for(let a=0;a!==s;a++){let c=n[a];if(typeof c=="number"&&isNaN(c)){console.error("THREE.KeyframeTrack: Time is not a valid number.",this,a,c),t=!1;break}if(o!==null&&o>c){console.error("THREE.KeyframeTrack: Out of order keys.",this,a,c,o),t=!1;break}o=c}if(i!==void 0&&io(i))for(let a=0,c=i.length;a!==c;++a){let l=i[a];if(isNaN(l)){console.error("THREE.KeyframeTrack: Value is not a valid number.",this,a,l),t=!1;break}}return t}optimize(){let t=Qe(this.times),e=Qe(this.values),n=this.getValueSize(),i=this.getInterpolation()===_s,s=t.length-1,o=1;for(let a=1;a0){t[o]=t[s];for(let a=s*n,c=o*n,l=0;l!==n;++l)e[c+l]=e[a+l];++o}return o!==t.length?(this.times=Qe(t,0,o),this.values=Qe(e,0,o*n)):(this.times=t,this.values=e),this}clone(){let t=Qe(this.times,0),e=Qe(this.values,0),n=this.constructor,i=new n(this.name,t,e);return i.createInterpolant=this.createInterpolant,i}};Le.prototype.TimeBufferType=Float32Array;Le.prototype.ValueBufferType=Float32Array;Le.prototype.DefaultInterpolation=Vi;var wn=class extends Le{};wn.prototype.ValueTypeName="bool";wn.prototype.ValueBufferType=Array;wn.prototype.DefaultInterpolation=ki;wn.prototype.InterpolantFactoryMethodLinear=void 0;wn.prototype.InterpolantFactoryMethodSmooth=void 0;var mr=class extends Le{};mr.prototype.ValueTypeName="color";var gr=class extends Le{};gr.prototype.ValueTypeName="number";var _r=class extends Kn{constructor(t,e,n,i){super(t,e,n,i)}interpolate_(t,e,n,i){let s=this.resultBuffer,o=this.sampleValues,a=this.valueSize,c=(n-e)/(i-e),l=t*a;for(let h=l+a;l!==h;l+=4)rn.slerpFlat(s,0,o,l-a,o,l,c);return s}},yi=class extends Le{InterpolantFactoryMethodLinear(t){return new _r(this.times,this.values,this.getValueSize(),t)}};yi.prototype.ValueTypeName="quaternion";yi.prototype.DefaultInterpolation=Vi;yi.prototype.InterpolantFactoryMethodSmooth=void 0;var Sn=class extends Le{};Sn.prototype.ValueTypeName="string";Sn.prototype.ValueBufferType=Array;Sn.prototype.DefaultInterpolation=ki;Sn.prototype.InterpolantFactoryMethodLinear=void 0;Sn.prototype.InterpolantFactoryMethodSmooth=void 0;var xr=class extends Le{};xr.prototype.ValueTypeName="vector";var wr="\\\\[\\\\]\\\\.:\\\\/",of=new RegExp("["+wr+"]","g"),Sr="[^"+wr+"]",lf="[^"+wr.replace("\\\\.","")+"]",cf=/((?:WC+[\\/:])*)/.source.replace("WC",Sr),hf=/(WCOD+)?/.source.replace("WCOD",lf),uf=/(?:\\.(WC+)(?:\\[(.+)\\])?)?/.source.replace("WC",Sr),df=/\\.(WC+)(?:\\[(.+)\\])?/.source.replace("WC",Sr),ff=new RegExp("^"+cf+hf+uf+df+"$"),pf=["material","materials","bones","map"],yr=class{constructor(t,e,n){let i=n||It.parseTrackName(e);this._targetGroup=t,this._bindings=t.subscribe_(e,i)}getValue(t,e){this.bind();let n=this._targetGroup.nCachedObjects_,i=this._bindings[n];i!==void 0&&i.getValue(t,e)}setValue(t,e){let n=this._bindings;for(let i=this._targetGroup.nCachedObjects_,s=n.length;i!==s;++i)n[i].setValue(t,e)}bind(){let t=this._bindings;for(let e=this._targetGroup.nCachedObjects_,n=t.length;e!==n;++e)t[e].bind()}unbind(){let t=this._bindings;for(let e=this._targetGroup.nCachedObjects_,n=t.length;e!==n;++e)t[e].unbind()}},It=class{constructor(t,e,n){this.path=e,this.parsedPath=n||It.parseTrackName(e),this.node=It.findNode(t,this.parsedPath.nodeName)||t,this.rootNode=t,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}static create(t,e,n){return t&&t.isAnimationObjectGroup?new It.Composite(t,e,n):new It(t,e,n)}static sanitizeNodeName(t){return t.replace(/\\s/g,"_").replace(of,"")}static parseTrackName(t){let e=ff.exec(t);if(e===null)throw new Error("PropertyBinding: Cannot parse trackName: "+t);let n={nodeName:e[2],objectName:e[3],objectIndex:e[4],propertyName:e[5],propertyIndex:e[6]},i=n.nodeName&&n.nodeName.lastIndexOf(".");if(i!==void 0&&i!==-1){let s=n.nodeName.substring(i+1);pf.indexOf(s)!==-1&&(n.nodeName=n.nodeName.substring(0,i),n.objectName=s)}if(n.propertyName===null||n.propertyName.length===0)throw new Error("PropertyBinding: can not parse propertyName from trackName: "+t);return n}static findNode(t,e){if(e===void 0||e===""||e==="."||e===-1||e===t.name||e===t.uuid)return t;if(t.skeleton){let n=t.skeleton.getBoneByName(e);if(n!==void 0)return n}if(t.children){let n=function(s){for(let o=0;oMath.round(S*a);if(d[0]=`${x(A.x)}, ${x(A.y)}, ${x(A.z)}`,d[1]=`${x(C.x)}, ${x(C.y)}, ${x(C.z)}`,d[2]=`${x(I.x)}, ${x(I.y)}, ${x(I.z)}`,!(d[0]===d[1]||d[1]===d[2]||d[2]===d[0]))for(let S=0;S<3;S++){let L=(S+1)%3,X=d[S],q=d[L],z=as[p[S]],R=as[p[L]],G=`${X}_${q}`,Y=`${q}_${X}`;Y in v&&v[Y]?(Tr.dot(v[Y].normal)<=c&&(T.push(z.x,z.y,z.z),T.push(R.x,R.y,R.z)),v[Y]=null):G in v||(v[G]={index0:_[S],index1:_[L],normal:Tr.clone()})}}for(let M in v)if(v[M]){let{index0:A,index1:C}=v[M];ss.fromBufferAttribute(u,A),rs.fromBufferAttribute(u,C),T.push(ss.x,ss.y,ss.z),T.push(rs.x,rs.y,rs.z)}let b=new self[h](T);so.postMessage({id:e,vertices:b},[b.buffer])}});\n/*! Bundled license information:\n\nthree/build/three.module.js:\n (**\n * @license\n * Copyright 2010-2023 Three.js Authors\n * SPDX-License-Identifier: MIT\n *)\n*/\n')}var Yo,Wx=class{constructor(){this.worker=new ZB,this.geometries=new Map,this.loadedGeometries=new Map,this.jobCount=0,this.init()}add(e,t){this.geometries.set(e,t),this.jobCount++}get(e){return this.geometries.get(e)}init(){this.worker.addEventListener("message",(e=>{let t=this.geometries.get(e.data.id.toString());(null==t?void 0:t.length)>0&&(t.forEach((t=>{null!=t&&t.geometry&&null!=t&&t.matrix&&null!=t&&t.geom&&null!=t&&t.line&&(t.geom.parameters={geometry:t.geometry,thresholdAngle:5},t.geom.setAttribute("position",new dt(e.data.vertices,3)),t.geom.applyMatrix4(t.matrix),t.line.geometry=t.geom,t.line.visible=!0)})),this.geometries.delete(e.data.id.toString()),this.jobCount--),this.loadedGeometries.set(e.data.id.toString(),e.data.vertices)}))}postMessage(e){this.worker.postMessage(JSON.stringify(e))}},uEt=new A(0,1,0),jg=class{static resetObjectStyle(e){this.revertWireframeMode(e),this.revertObjectOpacity(e,[]),this.revertAppliedMaterialToObject(e),this.revertVisibleForFloors(e)}static resetObjectStyleById(e,t){let i=this.getObjectById(e,t);this.resetObjectStyle(i)}static setObjectOpacity(e,t=.3,i,r){let n=[],s=e=>{n.find((t=>t.id===e.id))||(n.push({id:e.id,opacity:e.opacity,transparent:e.transparent,side:e.side}),e.opacity*=t,e.transparent=!0,e.side=yi)},a=e=>{let i=n.find((t=>t.id===e.id));if(!i){let i=e.clone();return n.push({id:e.id,opacity:e.opacity,transparent:e.transparent,side:e.side,material:e,clonedMaterial:i}),i.opacity*=t,i.transparent=!0,i}return i.clonedMaterial};return e.traverse((e=>{if((!r||-1===r.indexOf(e.id))&&(!i||-1!==i.indexOf(e.id))&&e instanceof rt){let t=e;if(i||r){if(Array.isArray(t.material)){let e=[];t.material.forEach((t=>{let i=a(t);i&&e.push(i)})),t.material=e}else if(t.material){let e=a(t.material);e&&(t.material=e)}}else if(Array.isArray(t.material))t.material.forEach((e=>{s(e)}));else if(t.material){let e=t.material;s(e)}}})),n}static revertObjectOpacity(e,t,i,r){let n=e=>{let i=t.find((t=>t.id===e.id));i&&(e.opacity=i.opacity,e.transparent=i.transparent,e.side=i.side)},s=e=>{let i=t.find((t=>t.clonedMaterial&&t.clonedMaterial.id===e.id));if(i)return i.material};e.traverse((e=>{if((!r||-1===r.indexOf(e.id))&&(!i||-1!==i.indexOf(e.id))&&e instanceof rt)if(Array.isArray(e.material)){let t=[];e.material.forEach((e=>{let i=s(e);i?t.push(i):n(e)})),e.material=t}else if(e.material){let t=s(e.material);t?e.material=t:n(e.material)}}))}static setObjectOpacityById(e,t,i=.3,r,n){let s=e.getObjectById(t);if(!s)throw new Error(`Failed to find object by id: ${t}`);return jg.setObjectOpacity(s,i,r,n)}static revertObjectOpacityById(e,t,i,r,n){let s=e.getObjectById(t);if(!s)throw new Error(`Failed to find object by id: ${t}`);jg.revertObjectOpacity(s,i,r,n)}static applyMaterialToObject(e,t,i,r){e.traverse((e=>{r&&-1!==r.indexOf(e.id)||i&&-1===i.indexOf(e.id)||e instanceof rt&&(e.userData.originalMaterial||(e.userData.originalMaterial=e.material),e.material=t)}))}static revertAppliedMaterialToObject(e,t,i){e.traverse((e=>{i&&-1!==i.indexOf(e.id)||t&&-1===t.indexOf(e.id)||e.userData.originalMaterial&&(e.material=e.userData.originalMaterial,e.userData.originalMaterial=void 0)}))}static applyMaterialToObjectById(e,t,i,r,n){let s=e.getObjectById(t);if(!s)throw new Error(`Failed to find object by id: ${t}`);this.applyMaterialToObject(s,i,r,n)}static revertAppliedMaterialToObjectById(e,t,i,r){let n=e.getObjectById(t);if(!n)throw new Error(`Failed to find object by id: ${t}`);this.revertAppliedMaterialToObject(n,i,r)}static applyOpacityMaterialToObject(e,t,i){let r=new lr({color:0,transparent:!0,opacity:.05});this.applyMaterialToObject(e,r,t,i)}static setWireframeMode(e){let t=new lr({color:16732160,wireframe:!0,transparent:!0,opacity:.8});e.traverseVisible((e=>{if(e instanceof rt){let i=e;i.userData.materialForWireframe=i.material,i.material=t}}))}static setWireframeModeById(e,t){let i=e.getObjectById(t);if(!i)throw new Error(`Failed to find object by id: ${t}`);jg.setWireframeMode(i)}static revertWireframeMode(e){e.traverseVisible((e=>{e instanceof rt&&e.userData.materialForWireframe&&(e.material=e.userData.materialForWireframe,e.userData.materialForWireframe=void 0)}))}static revertWireframeModeById(e,t){let i=e.getObjectById(t);if(!i)throw new Error(`Failed to find object by id: ${t}`);jg.revertWireframeMode(i)}static findInner(e,t,i=[],r=!1){let n=t.toLowerCase(),s=[],a=e=>-1!==e.toLowerCase().indexOf(n),o=e=>-1!==e.toString().indexOf(n),l=e=>{if(e.name&&-1!==e.name.toLowerCase().indexOf(n))return!0;if(e.gltfExtensions){let t=e.gltfExtensions,i=t.objectId&&t.objectId.Value||t.elementId&&t.elementId.Value;if(i&&-1!==i.toLowerCase().indexOf(n))return!0}return!1};if(i.length>0)for(let t=0;t{(a(e.name)||o(e.id)||l(e.userData))&&s.push(e)})),r&&s.length>0)return[s[0]]}else if(e.traverse((e=>{(a(e.name)||o(e.id)||l(e.userData))&&s.push(e)})),r&&s.length>0)return[s[0]];return s}static find(e,t,i=[],r=!1){return this.findInner(e,t,i,r)}static findFirst(e,t,i=[],r=!1){let n=this.findInner(e,t,i,r);if(n.length>0)return n[0]}static getFloorsFromString(e){let t=[],i=new RegExp(/(?:-?(?:\d+(?:\.5)?)F)(?=\W|$)/,"g").exec(e);return i&&i.length>0&&i.forEach((e=>{if(e){let i=e.replace("F",""),r=Number(i);r?t.push(r):console.log(`[OU] invalid floor: ${e}`)}})),t}static matchFloor(e,t){return-1!==this.getFloorsFromString(e).findIndex((e=>e===t))}static matchFloors(e,t){return-1!==this.getFloorsFromString(e).findIndex((e=>-1!==t.findIndex((t=>t===e))))}static distinctFloors(e,t){let i=[],r=e=>{this.getFloorsFromString(e).forEach((e=>{i[e]=!0}))};return t.forEach((t=>{let i=e.getObjectById(t);i&&i.traverse((e=>{if(r(e.name),e.userData.gltfExtensions){let t=e.userData.gltfExtensions;t.level&&t.level.Value&&r(t.level.Value)}}))})),Object.keys(i).sort()}static traverseObjectByFloors(e,t,i,r,n){let s=e.getObjectById(t);if(!s)return[];s.traverse((e=>{let t=this.matchFloors(e.name,i);if(!t&&e.userData&&e.userData.gltfExtensions){let r=e.userData.gltfExtensions;r.level&&r.level.Value&&(t=this.matchFloors(r.level.Value,i))}t&&r&&r(e),!t&&n&&n(e)}))}static setVisibleForFloors(e,t,i,r=!0){this.traverseObjectByFloors(e,t,i,(e=>{let t=e;for(;t;)t.visible=!0,t=t.parent||void 0}),(e=>{r&&(e.visible=!1)}))}static revertVisibleForFloors(e){e.traverse((e=>{e.visible=!0}))}static revertVisibleForFloorsById(e,t){let i=this.getObjectById(e,t);this.revertVisibleForFloors(i)}static getObjectById(e,t){let i=e.getObjectById(t);if(!i)throw new Error(`Failed to find object by id: ${t}`);return i}static createOutlines(e,t={visibleOnly:!0,meshOnly:!0,replaceOriginalObject:!1}){if(!e)return[];if(0===e.children.length&&(t.visibleOnly&&!e.visible||t.meshOnly&&!(e instanceof rt)))return[];let i=e;for(let e=i.children.length-1;e>=0;--e){let r=i.children[e];this.createOutlines(r,t).forEach((e=>e.applyMatrix4(i.matrixWorld)))}if(!i.geometry)return[];let r=[];if(i instanceof rn)for(let e=0;e=0;--t){let i=e.children[t];i.children.length>0&&this.removeOutlines(i),i.userData.isOutline&&e.remove(i)}}static hasOutline(e){let t=!1;for(let i=0;i0&&(t=this.hasOutline(r),t))break}return t}static setOutlinesVisibility(e,t){e.traverse((e=>{e.userData.isOutline&&(e.visible=t)}))}static createOutline(e,t,i=this.OUTLINE_MATERIAL){let r=new Mp,n=new ci(r,i);if(n.layers.set(11),n.userData.isOutline=!0,n.matrixAutoUpdate=!1,n.visible=!1,n.updateMatrix(),Yo||(Yo=new Wx),Yo.loadedGeometries.has(e.id.toString())){let i=Yo.loadedGeometries.get(e.id.toString());return r.parameters={geometry:e,thresholdAngle:5},r.setAttribute("position",new dt(i,3)),r.applyMatrix4(t),n.geometry=r,n.visible=!0,n}if(Yo.get(e.id.toString())||Yo.add(e.id.toString(),[]),!Yo.loadedGeometries.has(e.id.toString())){Yo.add(e.id.toString(),Yo.get(e.id.toString()).concat([{geometry:e,matrix:t,geom:r,line:n}]));let i=e.getAttribute("position");Yo.postMessage({id:e.id,position:i.toJSON(),index:e.getIndex(),thresholdAngle:5})}return n}static createOutlineSync(e,t,i=this.OUTLINE_MATERIAL){let r=new Mp(e,5),n=new ci(r,i);return n.layers.set(11),n.userData.isOutline=!0,n.matrixAutoUpdate=!1,n.applyMatrix4(t),n}static cloneObject(e,t=!0){let i=e.clone();return t&&i.traverse((e=>{(e instanceof rt||e instanceof Ir)&&(e.material=Ps.cloneMaterial(e.material))})),i}static createBox(e,t,i,r=jg.BOX_FACE_MATERIAL,n=!0){let s=[],a=(e,t,i)=>{s.push(new A(e,t,i))};a(0,0,0),a(e,0,0),a(e,t,0),a(0,t,0),a(0,0,i),a(e,0,i),a(e,t,i),a(0,t,i);let o=new lt;o.setFromPoints(s);let l=[0,3,2,0,2,1,4,6,7,4,5,6,0,7,3,0,4,7,3,6,2,3,7,6,1,6,5,1,2,6];return n&&l.push(0,5,4,0,1,5),o.setIndex(l),o.computeVertexNormals(),new rt(o,r)}static rebaseObjectOnRTC(e){let t=e;if(!((t.isMesh||t.isLine||t.isPoints)&&t.geometry&&t.geometry instanceof lt))return e;let i=t.geometry;if(!i.hasAttribute("position"))return e;let r=i.getAttribute("position");if(0===r.count)return e;let n=r.itemSize,s=r.array,a=[];for(let e=0;e2?a[2]:0);let l=e.matrixAutoUpdate;return e.matrixAutoUpdate=!1,e.applyMatrix4(o),e.matrixAutoUpdate=l,e}static isEmptyObject(e){if(0===e.children.length){let t=e.geometry;if(!t||!t.hasAttribute("position")||0===t.getAttribute("position").count)return!0}return!1}static removeEmptyObjects(e){for(let t=0;t{e.removeFromParent()})),this.removeEmptyObjects(t))}static setSharedVariablesOfObject(e){e.uuid="",e.up=uEt}static isLeafObject(e){return(e instanceof rt||e instanceof Ir||e instanceof nn)&&!(e.children.length>0||!e.geometry)}},ti=jg;ti.OUTLINE_MATERIAL=new vr({name:"outline",color:0,transparent:!0,opacity:.2}),ti.BOX_FACE_MATERIAL=new bs({color:11648971,transparent:!0,opacity:.3,side:tn});var zC=new Be,hEt=new Be,jC=class{static resetMergeInfo(){this.mergeInfo.removedObjects=0,this.mergeInfo.mergedMeshes=0,this.mergeInfo.mergedLines=0,this.mergeInfo.mergedPoints=0,this.mergeInfo.mergedUnknownTypeObjects=0,this.mergeInfo.elapsedTime=0}static merge(e,t=!0){let i=Date.now();this.mergeInner(e,t),this.mergeInfo.elapsedTime+=Date.now()-i}static mergeInner(e,t=!0){if(!e.children||e.children.length<1)return;let i=e.children.length,r={},n=[];for(let s=0;s0){this.mergeInner(i,t);continue}if(i.userData.relativeToCenter||i.isInstancedMesh||!i.geometry||!(i.geometry instanceof lt))continue;let a=!1,o=Object.values(r);for(let t=o.length-1;t>=0;--t){let i=o[t].indexes[0];if(a=this.tryHandleMergeableObjects(e,s,i,r,n),a)break}for(let t=n.length-1;!a&&t>=0;--t){let i=n[t];if(a=this.tryHandleMergeableObjects(e,s,i,r,n),a)break}a||n.push(s)}if(Object.keys(r).length<=0)return;let s=[],a=[],o=[],l=[];Object.values(r).forEach((i=>{let r,n=i.indexes,h=e.children[n[0]],u=[],c=0,p=0,d=0,f=[];if(n.forEach((i=>{var r,n,s;let a=e.children[i],o=a.geometry.clone();if(o.applyMatrix4(a.matrix),kt.tryConvertInterleavedBufferAttributes(o),o.userData.isLineSegments=!0===a.isLineSegments,u.push(o),t){let e=null==(n=null==(r=o.attributes)?void 0:r.position)?void 0:n.count,t=(null==(s=o.index)?void 0:s.count)||0;f.push({batchId:c,positionStart:p,positionCount:e,indexStart:d,indexCount:t}),p+=e,d+=t,c++}})),0!==u.length){if(h.isMesh){let e=qo(u);if(!e)return;e.userData={},r=new rt(e,h.material),s.push(r)}else if(h.isLine){let e=this.mergeLineGeometries(u,t,h.material instanceof Op||h.material instanceof Yt,f);if(!e)return;r=new ci(e,h.material),a.push(r)}else if(h.isPoints){let e=qo(u);if(!e)return;e.userData={},r=new nn(e,h.material),o.push(r)}r&&(t?r.userData.batches=f:r.userData=h.userData,r.userData.layerName=h.userData.layerName,r.name=`[Merged] ${h.name}`,r.matrixAutoUpdate=!1,r.renderOrder=h.renderOrder,r.layers=h.layers,r.visible=h.visible,l.push(...n)),u.forEach((e=>{kt.releaseGeometryManually(e)})),u=[]}})),l.sort(((e,t)=>t-e)),l.forEach((t=>{let i=e.children[t];e.remove(i)})),[...s,...a,...o].forEach((t=>{e.add(t)})),e.updateMatrix(),this.mergeInfo.removedObjects+=l.length,this.mergeInfo.mergedMeshes+=s.length,this.mergeInfo.mergedLines+=a.length,this.mergeInfo.mergedPoints+=o.length}static tryHandleMergeableObjects(e,t,i,r,n){let s=!1,a=Array.isArray(e),o=a?e.length:e.children.length;if(t===i||t>=o||i>=o)return s;let l=a?e[t]:e.children[t],h=a?e[i]:e.children[i];return this.areObjectsMergeable(l,h)&&this.areGeometriesMergeable(l.geometry,h.geometry)&&Ps.materialsEquals(l.material,h.material)&&(r[i]||(r[i]={indexes:[i]},this.removeFromArray(n,i)),r[i].indexes.push(t),s=!0),s}static isFilteredByOtherFactors(e,t){let i=e;if(i.isMesh&&i.material.isShaderMaterial)return!0;let r=!1,n=e;for(;n&&n!==t;){let e=n.userData;if(e.relativeToCenter||e.spatialFilterHandle){r=!0;break}n=n.parent}return r}static deepMerge(e,t=undefined,i=!0,r=!0,n=!0){let s={added:[],removed:[]};if(e.length<=1)return s;let a=Date.now(),o={},l=[];for(let i=0;i=0;--t){let r=s[t].indexes[0];if(n=this.tryHandleMergeableObjects(e,i,r,o,l),n)break}for(let t=l.length-1;!n&&t>=0;--t){let r=l[t];if(n=this.tryHandleMergeableObjects(e,i,r,o,l),n)break}n||l.push(i)}if(Object.keys(o).length<=0)return s;ie.debug(`[Merge] Built merged indexes for ${e.length} objects in ${(Date.now()-a)/1e3}s`),a=Date.now();let h=[],u=[],c=[],p=[];Object.values(o).forEach((i=>{let r=i.indexes;if(r.length<2)return;let s,a=e[r[0]],o=[],l=0,d=0,f=0,m=[];if(r.forEach((i=>{var r,s,h;let u=e[i],c=u.geometry.clone();if(a.material instanceof vr&&c.deleteAttribute("lineDistance"),this.applyMatrix(c,u,t),c.userData.isLineSegments=!0===u.isLineSegments,o.push(c),n){let e,t=null==(s=null==(r=c.attributes)?void 0:r.position)?void 0:s.count,i=(null==(h=c.index)?void 0:h.count)||0;a.isLine&&(c.boundingSphere||c.computeBoundingSphere(),e=c.boundingSphere.clone()),m.push({batchId:l,positionStart:d,positionCount:t,indexStart:f,indexCount:i,boundingSphere:e}),d+=t,f+=i,l++}})),0!==o.length){if(a.isMesh){let e=qo(o);if(!e)return;e.userData={},s=new rt(e,a.material),h.push(s)}else if(a.isLine){let e=this.mergeLineGeometries(o,n,a.material instanceof Op||a.material instanceof Yt,m);if(!e)return;s=new ci(e,a.material),u.push(s)}else if(a.isPoints){let e=qo(o);if(!e)return;e.userData={},s=new nn(e,a.material),c.push(s)}s&&(n?s.userData.batches=m:s.userData=a.userData,s.userData.layerName=a.userData.layerName,s.name=`[Merged] ${a.name}`,s.matrixAutoUpdate=!1,s.renderOrder=a.renderOrder,s.layers=a.layers,s.visible=a.visible,r.forEach((e=>p.push(e)))),o.forEach((e=>{kt.releaseGeometryManually(e)})),o=[]}})),ie.debug(`[Merge] Ran deepMerge() in ${(Date.now()-a)/1e3}s`);let d=s.removed;p.forEach((t=>{let r=e[t];d.push(r),i&&r.removeFromParent()}));let f=s.added;return[...h,...u,...c].forEach((e=>{f.push(e),i&&t&&(t.add(e),e.updateWorldMatrix(!1,!1))})),this.mergeInfo.removedObjects+=p.length,this.mergeInfo.mergedMeshes+=h.length,this.mergeInfo.mergedLines+=u.length,this.mergeInfo.mergedPoints+=c.length,r&&t&&ti.removeEmptyObjects(t),s}static applyMatrix(e,t,i){let r=t;for(zC.identity();r&&r!==i&&(zC.premultiply(r.matrix),r.parent);)r=r.parent;return zC.equals(hEt)?e:e.applyMatrix4(zC)}static mergeLineGeometries(e,t,i,r){let n;if(i)n=jC.mergeBufferGeometriesWithLinesToLineSegements(e,t,r);else{if(n=qo(e),!n)return;n.userData={};let i=[],s=0;e.forEach(((e,n)=>{let a=e.attributes.position;if(!a)return;let o=e.index,l=!0===e.userData.isLineSegments,h=i.length;if(o)for(let e=0;e0&&i.push(s+o.array[e-1],s+t)}else for(let e=0;e0&&(l?e%2==1&&i.push(s+e-1,s+e):i.push(s+e-1,s+e));s+=a.count,t&&r&&(r[n].indexStart=h,r[n].indexCount=i.length-h)})),n.setIndex(i)}return n}static mergeBufferGeometriesWithLinesToLineSegements(e,t,i){let r=new Set(Object.keys(e[0].attributes)),n={},s=new lt,a=[],o=0;for(let s=0;s=0;--i)if(e[i]===t)return void e.splice(i,1)}static removeObjectFromArray(e,t){for(let i=e.length-1;i>=0;--i)if(e[i]===t)return void e.splice(i,1)}static areGeometriesMergeable(e,t){if(!e||!t||"InstancedBufferGeometry"===e.type||"InstancedBufferGeometry"===t.type||!!e.index!=!!t.index)return!1;let i=Object.keys(e.attributes);if(i.length!==Object.keys(t.attributes).length)return!1;for(let e of i)if(!t.attributes[e])return!1;return!0}static areObjectsMergeable(e,t){if(e.layers.mask!==t.layers.mask||e.renderOrder!==t.renderOrder||e.visible!==t.visible||e.userData.layerName!==t.userData.layerName)return!1;if(e.type===t.type)return!0;let i=e,r=t;return i.isMesh&&r.isMesh||i.isLine&&r.isLine||i.isPoints&&r.isPoints}static isMergedMesh(e){return!(!e||!e.userData.batches)}static isFaceIndexInBatch(e,t,i){if(e.boundsTree){let r=e.index.getX(3*i);if(r>=t.positionStart&&r=e&&i<=r)return!0}else{let e=3*i;if(e>=t.positionStart&&e80*i){r=s=e[0],n=a=e[1];for(let t=i;ts&&(s=o),l>a&&(a=l);h=Math.max(s-r,a-n),h=0!==h?32767/h:0}return Zx(p,d,i,r,n,h,0),d}};function Ude(e,t,i,r,n){let s,a;if(n===i1t(e,t,i,r)>0)for(s=t;s=t;s-=r)a=Fde(s,e[s],e[s+1],a);return a&&QC(a,a.next)&&(Jx(a),a=a.next),a}function qg(e,t){if(!e)return e;t||(t=e);let i,r=e;do{if(i=!1,r.steiner||!QC(r,r.next)&&0!==Ln(r.prev,r,r.next))r=r.next;else{if(Jx(r),r=t=r.prev,r===r.next)break;i=!0}}while(i||r!==t);return t}function Zx(e,t,i,r,n,s,a){if(!e)return;!a&&s&&KEt(e,r,n,s);let o,l,h=e;for(;e.prev!==e.next;)if(o=e.prev,l=e.next,s?zEt(e,r,n,s):VEt(e))t.push(o.i/i|0),t.push(e.i/i|0),t.push(l.i/i|0),Jx(e),e=l.next,h=l.next;else if((e=l)===h){a?1===a?Zx(e=jEt(qg(e),t,i),t,i,r,n,s,2):2===a&&WEt(e,t,i,r,n,s):Zx(qg(e),t,i,r,n,s,1);break}}function VEt(e){let t=e.prev,i=e,r=e.next;if(Ln(t,i,r)>=0)return!1;let n=t.x,s=i.x,a=r.x,o=t.y,l=i.y,h=r.y,u=ns?n>a?n:a:s>a?s:a,d=o>l?o>h?o:h:l>h?l:h,f=r.next;for(;f!==t;){if(f.x>=u&&f.x<=p&&f.y>=c&&f.y<=d&&dT(n,o,s,l,a,h,f.x,f.y)&&Ln(f.prev,f,f.next)>=0)return!1;f=f.next}return!0}function zEt(e,t,i,r){let n=e.prev,s=e,a=e.next;if(Ln(n,s,a)>=0)return!1;let o=n.x,l=s.x,h=a.x,u=n.y,c=s.y,p=a.y,d=ol?o>h?o:h:l>h?l:h,g=u>c?u>p?u:p:c>p?c:p,y=ik(d,f,t,i,r),v=ik(m,g,t,i,r),T=e.prevZ,x=e.nextZ;for(;T&&T.z>=y&&x&&x.z<=v;){if(T.x>=d&&T.x<=m&&T.y>=f&&T.y<=g&&T!==n&&T!==a&&dT(o,u,l,c,h,p,T.x,T.y)&&Ln(T.prev,T,T.next)>=0||(T=T.prevZ,x.x>=d&&x.x<=m&&x.y>=f&&x.y<=g&&x!==n&&x!==a&&dT(o,u,l,c,h,p,x.x,x.y)&&Ln(x.prev,x,x.next)>=0))return!1;x=x.nextZ}for(;T&&T.z>=y;){if(T.x>=d&&T.x<=m&&T.y>=f&&T.y<=g&&T!==n&&T!==a&&dT(o,u,l,c,h,p,T.x,T.y)&&Ln(T.prev,T,T.next)>=0)return!1;T=T.prevZ}for(;x&&x.z<=v;){if(x.x>=d&&x.x<=m&&x.y>=f&&x.y<=g&&x!==n&&x!==a&&dT(o,u,l,c,h,p,x.x,x.y)&&Ln(x.prev,x,x.next)>=0)return!1;x=x.nextZ}return!0}function jEt(e,t,i){let r=e;do{let n=r.prev,s=r.next.next;!QC(n,s)&&Bde(n,r,r.next,s)&&Kx(n,s)&&Kx(s,n)&&(t.push(n.i/i|0),t.push(r.i/i|0),t.push(s.i/i|0),Jx(r),Jx(r.next),r=e=s),r=r.next}while(r!==e);return qg(r)}function WEt(e,t,i,r,n,s){let a=e;do{let e=a.next.next;for(;e!==a.prev;){if(a.i!==e.i&&e1t(a,e)){let o=kde(a,e);return a=qg(a,a.next),o=qg(o,o.next),Zx(a,t,i,r,n,s,0),void Zx(o,t,i,r,n,s,0)}e=e.next}a=a.next}while(a!==e)}function qEt(e,t,i,r){let n,s,a,o,l,h=[];for(n=0,s=t.length;n=r.next.y&&r.next.y!==r.y){let e=r.x+(a-r.y)*(r.next.x-r.x)/(r.next.y-r.y);if(e<=s&&e>n&&(n=e,i=r.x=r.x&&r.x>=h&&s!==r.x&&dT(ai.x||r.x===i.x&&ZEt(i,r)))&&(i=r,c=o)),r=r.next}while(r!==l);return i}function ZEt(e,t){return Ln(e.prev,e,t.prev)<0&&Ln(t.next,e,e.next)<0}function KEt(e,t,i,r){let n=e;do{0===n.z&&(n.z=ik(n.x,n.y,t,i,r)),n.prevZ=n.prev,n.nextZ=n.next,n=n.next}while(n!==e);n.prevZ.nextZ=null,n.prevZ=null,JEt(n)}function JEt(e){let t,i,r,n,s,a,o,l,h=1;do{for(i=e,e=null,s=null,a=0;i;){for(a++,r=i,o=0,t=0;t0||l>0&&r;)0!==o&&(0===l||!r||i.z<=r.z)?(n=i,i=i.nextZ,o--):(n=r,r=r.nextZ,l--),s?s.nextZ=n:e=n,n.prevZ=s,s=n;i=r}s.nextZ=null,h*=2}while(a>1);return e}function ik(e,t,i,r,n){return(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=(e-i)*n|0)|e<<8))|e<<4))|e<<2))|e<<1))|(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=(t-r)*n|0)|t<<8))|t<<4))|t<<2))|t<<1))<<1}function QEt(e){let t=e,i=e;do{(t.x=(e-a)*(s-o)&&(e-a)*(r-o)>=(i-a)*(t-o)&&(i-a)*(s-o)>=(n-a)*(r-o)}function e1t(e,t){return e.next.i!==t.i&&e.prev.i!==t.i&&!t1t(e,t)&&(Kx(e,t)&&Kx(t,e)&&r1t(e,t)&&(Ln(e.prev,e,t.prev)||Ln(e,t.prev,t))||QC(e,t)&&Ln(e.prev,e,e.next)>0&&Ln(t.prev,t,t.next)>0)}function Ln(e,t,i){return(t.y-e.y)*(i.x-t.x)-(t.x-e.x)*(i.y-t.y)}function QC(e,t){return e.x===t.x&&e.y===t.y}function Bde(e,t,i,r){let n=JC(Ln(e,t,i)),s=JC(Ln(e,t,r)),a=JC(Ln(i,r,e)),o=JC(Ln(i,r,t));return!!(n!==s&&a!==o||0===n&&KC(e,i,t)||0===s&&KC(e,r,t)||0===a&&KC(i,e,r)||0===o&&KC(i,t,r))}function KC(e,t,i){return t.x<=Math.max(e.x,i.x)&&t.x>=Math.min(e.x,i.x)&&t.y<=Math.max(e.y,i.y)&&t.y>=Math.min(e.y,i.y)}function JC(e){return e>0?1:e<0?-1:0}function t1t(e,t){let i=e;do{if(i.i!==e.i&&i.next.i!==e.i&&i.i!==t.i&&i.next.i!==t.i&&Bde(i,i.next,e,t))return!0;i=i.next}while(i!==e);return!1}function Kx(e,t){return Ln(e.prev,e,e.next)<0?Ln(e,t,e.next)>=0&&Ln(e,e.prev,t)>=0:Ln(e,t,e.prev)<0||Ln(e,e.next,t)<0}function r1t(e,t){let i=e,r=!1,n=(e.x+t.x)/2,s=(e.y+t.y)/2;do{i.y>s!=i.next.y>s&&i.next.y!==i.y&&n<(i.next.x-i.x)*(s-i.y)/(i.next.y-i.y)+i.x&&(r=!r),i=i.next}while(i!==e);return r}function kde(e,t){let i=new nk(e.i,e.x,e.y),r=new nk(t.i,t.x,t.y),n=e.next,s=t.prev;return e.next=t,t.prev=e,i.next=n,n.prev=i,r.next=i,i.prev=r,s.next=r,r.prev=s,r}function Fde(e,t,i,r){let n=new nk(e,t,i);return r?(n.next=r.next,n.prev=r,r.next.prev=n,r.next=n):(n.prev=n,n.next=n),n}function Jx(e){e.next.prev=e.prev,e.prev.next=e.next,e.prevZ&&(e.prevZ.nextZ=e.nextZ),e.nextZ&&(e.nextZ.prevZ=e.prevZ)}function nk(e,t,i){this.i=e,this.x=t,this.y=i,this.prev=null,this.next=null,this.z=0,this.prevZ=null,this.nextZ=null,this.steiner=!1}function i1t(e,t,i,r){let n=0;for(let s=t,a=i-r;se.toArray())).reduce(((e,t)=>(e.push(...t),e)),[]),i=[];return Hde.triangulate(t,[],3).forEach((e=>i.push(e))),i}static arePointsCoplanar(e){if(e.length<4)return!0;let t=e[1].clone().sub(e[0]),i=e[2].clone().sub(e[0]).cross(t).normalize();for(let t=3;tn1t)return!1;return!0}static isSelfIntersecting(e){let t=e.map((e=>e.toArray().slice(0,-1)));return(0,Gde.default)(t).length>0}},sk=class{constructor(e,t,i=undefined,r=sk.DEFAULT_SCALE){this.isExplodeUp=!1,this.scene=e,this.objectId=t,t||console.log(`[EXP] Invalid objectId: ${t}`),this.scale=r,r<=0&&console.log(`[EXP] Invalid scale: ${r}`),i?this.position=i:(this.position=new A,this.getObjectCenter(this.position))}explode(){if(!this.objectId||!this.position||!this.scale)return void console.log(`[EXP] Invalid objectId: ${this.objectId}, or position: ${this.position}, or this.power: ${this.scale}`);let e=this.scene.getObjectById(this.objectId);e&&e.children?(console.log(`[EXP] Exploding ${e.name} at: ${this.position.x}, ${this.position.y}, ${this.position.z}`),this.explodeObject(e)):console.log("[EXP] No children to explode!")}explodeObject(e){e.geometry?this.explodeLeafObject(e):e.children.length>0?e.children.forEach((e=>this.explodeObject(e))):this.explodeLeafObject(e)}explodeLeafObject(e){if(e.geometry){if(e.userData.originalPosition=e.position.clone(),e instanceof rn){let t=new Be,i=new A,r=new Hr,n=new A;for(let s=0;s0?e.children.forEach((e=>this.unexplodeObject(e))):this.unexplodeLeafObject(e)}unexplodeLeafObject(e){let t=e.userData.originalPosition;t&&(e.position.set(t.x,t.y,t.z),e.updateMatrix(),delete e.userData.originalPosition)}setOnlyExplodeUp(e){this.isExplodeUp=e}getObjectCenter(e){let t=new Dt;if(!this.objectId)return void console.log(`[EXP] Invalid objectId: ${this.objectId}`);let i=this.scene.getObjectById(this.objectId);i&&i.children?(i.traverse((e=>{t.expandByObject(e)})),t.getCenter(e)):console.log("[EXP] No children to explode!")}},Qx=sk;Qx.DEFAULT_SCALE=1;var yn=class{static getVisibleObjectBoundingBox(e){let t=new Dt;return e.traverseVisible((e=>{e instanceof rt&&!1!==e.userData.selectable&&t.expandByObject(e)})),t}static getObjectsBoundingBox(e,t,i){let r=new Dt;return t.forEach((t=>{let n=e.getObjectById(t);if(n){let e=yn.getBoundingBox(n,i);e.isEmpty()||r.union(e)}})),r}static getBoundingBox(e,t=!0){let i=new Dt;if(e instanceof rn)return yn.getInstancedMeshBoundingBox(e);if(0===e.children.length)return i.expandByObject(e),i;let r=e.children.length,n=1;r>20&&(n=3),r>100&&(n=5),r>200&&(n=10),r>1e3&&(n=100),e.updateMatrixWorld(!1);for(let s=0;s{i.find((e=>e===n.id))&&(n.children&&1===n.children.length?yn.explodeObject(n.children[0],e,t,r):yn.explodeObject(n,e,t,r))})),t}static unexplodeObjects(e,t){e.traverse((e=>{let i=t[e.id];i&&(i.unexplode(),delete t[e.id])}))}static getObjectCenter(e,t){let i=yn.getBoundingBox(e);i.getCenter(t),t.y=i.min.y}},Xu=class{static setMaterialSection(e,t,i=!1,r=!1){let n=i&&e.clippingPlanes?e.clippingPlanes:[];n.push(...t),e.clippingPlanes=n,e.clipIntersection=r}static removeSection(e){e&&e.traverse((e=>{let t=e.material;Array.isArray(t)?t.forEach((e=>{e.clippingPlanes=void 0})):t&&(t.clippingPlanes=void 0)}))}static addSection(e,t,i=!1,r=!1){e&&e.traverse((e=>{let n=e.material;Array.isArray(n)?n.forEach((e=>{Xu.setMaterialSection(e,t,i,r)})):n&&Xu.setMaterialSection(n,t,i,r)}))}static generateSectionPlanesByBox(e){let t=e.min,i=e.max;return[new xi(new A(0,-1,0),i.y),new xi(new A(0,1,0),-t.y),new xi(new A(1,0,0),-t.x),new xi(new A(-1,0,0),i.x)]}static generateSectionPlanesByPoints(e,t=!0){let i=e.length;if(i<2)return;let r=[];for(let n=0;n-1&&e.splice(i,1)}function a1t(e,t){let i=t.position.distanceTo(e.position),r=0,n=[];for(let i=0,r=e.faces.length;i=0;e--)i.faces[e]&&i.faces[e].hasVertex(r)&&o1t(i.faces[e],t);for(let e=i.faces.length-1;e>=0;e--)i.faces[e].replaceVertex(i,r);jde(i,e);for(let e=0;e0?(new tA).modify(e,i):e}static simplifyPoints(e,t=1){let i=(0,qde.default)(e,t);return this.simplifiedInfo.total+=e.length,this.simplifiedInfo.removed+=e.length-i.length,i}static getNumberOfVerticesToRemove(e,t){let i=0;e instanceof lt&&e.index&&(i=e.attributes.position.count);let r=Math.floor(i*t);return i<20?0:r}};eI.simplifiedInfo={total:0,removed:0};var Xg=class{static createSkyOfGradientRamp(e=4e3,t=32,i=15,r=new A,n=new A(0,.7,.5)){let s=this.COLOR_TEMPLATES.default,a={topColor:{value:new je(s[0])},skylineColor:{value:new je(s[1])},bottomColor:{value:new je(s[2])},offset:{value:400},exponent:{value:.9},skyCenter:{value:r||new A},sunDirection:{value:n.normalize()}},o=new so(e,t,i),l=new Yt({uniforms:a,vertexShader:this.vertexShader,fragmentShader:this.fragmentShader,side:Wn}),h=new rt(o,l);return h.matrixAutoUpdate=!1,h.name=this.NAME,h.userData.selectable=!1,h.layers.set(11),h}static createSkyOfGradientRampByBoundingBox(e){let t=2*(e.max.x-e.min.x+(e.max.y-e.min.y)+(e.max.z-e.min.z));tXg.MAX_SKY_RADIUS&&(t=Xg.MAX_SKY_RADIUS);let i=new A;e.getCenter(i);let r=Xg.createSkyOfGradientRamp(t,void 0,void 0,i);return r.position.set(i.x,0,i.z),r}static createSkyFromTextures(e){return ht(this,null,(function*(){let t=new bx;return new Promise((i=>{t.load(e,(e=>i(e)))}))}))}},$o=Xg;$o.NAME="SKYBOX",$o.MIN_SKY_RADIUS=4e3,$o.MAX_SKY_RADIUS=2e4,$o.vertexShader="\n varying vec3 vWorldPosition;\n void main() {\n vec4 worldPosition = modelMatrix * vec4( position, 1.0 );\n vWorldPosition = worldPosition.xyz;\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n }",$o.fragmentShader="\n uniform vec3 topColor;\n uniform vec3 skylineColor;\n uniform vec3 bottomColor;\n uniform float offset;\n uniform float exponent;\n uniform vec3 skyCenter;\n uniform vec3 sunDirection;\n varying vec3 vWorldPosition;\n // Used to find the position to draw the sun. Sun size is bigger when this value is smaller\n const float sunDirectionDotThreshold = 0.98;\n\n void main() {\n vec3 position = vec3(vWorldPosition.x - skyCenter.x, vWorldPosition.y - skyCenter.y, vWorldPosition.z - skyCenter.z);\n vec3 normalizedPosition = normalize( position + offset );\n float h = normalizedPosition.y;\n vec3 color;\n if (h > 0.0) {\n color = mix( skylineColor, topColor, pow( h, exponent ) );\n\n // draw the sun\n float dotResult = dot(sunDirection, normalizedPosition);\n if (dotResult > sunDirectionDotThreshold) {\n const float sunSize = 1.0 - sunDirectionDotThreshold; // maximum sun size\n const vec3 sunColor = vec3(1.0, 1.0, 1.0);\n color = mix(color, sunColor, pow((dotResult + sunSize - 1.0) / sunSize, 3.0));\n }\n } else {\n color = mix( skylineColor, bottomColor, pow( -h, exponent ) );\n }\n gl_FragColor = vec4(color , 1.0);\n }",$o.COLOR_TEMPLATES={default:[8828661,16777215,10066329],blueSky:[11189247,16777215,6974058],boardwalk:[14413823,16777215,15459804]};var iA=class extends Lg{constructor(e){super(e),this.type=Go}parse(e){let t=function(e,t){switch(e){case 1:console.error("THREE.RGBELoader Read Error: "+(t||""));break;case 2:console.error("THREE.RGBELoader Write Error: "+(t||""));break;case 3:console.error("THREE.RGBELoader Bad File Format: "+(t||""));break;default:console.error("THREE.RGBELoader: Error: "+(t||""))}return-1},i=function(e,t,i){t=t||1024;let r=e.pos,n=-1,s=0,a="",o=String.fromCharCode.apply(null,new Uint16Array(e.subarray(r,r+128)));for(;0>(n=o.indexOf("\n"))&&s=e.byteLength||!(r=i(e)))return t(1,"no header found");if(!(n=r.match(/^#\?(\S+)/)))return t(3,"bad initial token");for(h.valid|=1,h.programtype=n[1],h.string+=r+"\n";r=i(e),!1!==r;)if(h.string+=r+"\n","#"!==r.charAt(0)){if((n=r.match(s))&&(h.gamma=parseFloat(n[1])),(n=r.match(a))&&(h.exposure=parseFloat(n[1])),(n=r.match(o))&&(h.valid|=2,h.format=n[1]),(n=r.match(l))&&(h.valid|=4,h.height=parseInt(n[1],10),h.width=parseInt(n[2],10)),2&h.valid&&4&h.valid)break}else h.comments+=r+"\n";return 2&h.valid?4&h.valid?h:t(3,"missing image size specifier"):t(3,"missing format specifier")}(s);if(-1!==a){let e=a.width,i=a.height,o=function(e,i,r){let n=i;if(n<8||n>32767||2!==e[0]||2!==e[1]||128&e[2])return new Uint8Array(e);if(n!==(e[2]<<8|e[3]))return t(3,"wrong scanline width");let s=new Uint8Array(4*i*r);if(!s.length)return t(4,"unable to allocate buffer space");let a=0,o=0,l=4*n,h=new Uint8Array(4),u=new Uint8Array(l),c=r;for(;c>0&&oe.byteLength)return t(1);if(h[0]=e[o++],h[1]=e[o++],h[2]=e[o++],h[3]=e[o++],2!=h[0]||2!=h[1]||(h[2]<<8|h[3])!=n)return t(3,"bad rgbe scanline format");let i,r=0;for(;r128;if(n&&(i-=128),0===i||r+i>l)return t(3,"bad scanline data");if(n){let t=e[o++];for(let e=0;e{i.load(t,(t=>{if(e){let i=e.fromEquirectangular(t).texture;e.dispose(),r(i)}}))}))}))}static createEnvTextureFromDataArray(e){return ht(this,arguments,(function*(e,t=this.HDR_CITY_STREET_64x32,i=64,r=32){if(e){let n=new wl(t,i,r);n.flipY=!0,n.magFilter=li,n.minFilter=li,n.type=Go,n.version=1;let s=e.fromEquirectangular(n).texture;return e.dispose(),Promise.resolve(s)}return Promise.reject("Invalid pmremGenerator!")}))}};function u1t(){if(Ii.isBrowser){let e=document.createElement("div");return e.setAttribute("style","height: 1in; visibility: hidden; position: absolute; margin: 0; padding: 0;"),document.body.appendChild(e),.0254/e.clientHeight}return.0254/96}Hc.HDR_CITY_STREET_64x32=Uint16Array.from([11910,12340,12797,15360,11926,12348,12806,15360,11958,12364,12814,15360,11974,12380,12830,15360,11958,12364,12822,15360,11926,12348,12797,15360,11878,12324,12773,15360,11830,12308,12749,15360,11798,12292,12733,15360,11782,12279,12725,15360,11765,12263,12709,15360,11749,12247,12701,15360,11733,12231,12701,15360,11701,12215,12693,15360,11685,12199,12685,15360,11685,12199,12685,15360,11701,12215,12693,15360,11717,12231,12701,15360,11733,12247,12709,15360,11749,12263,12717,15360,11749,12279,12717,15360,11765,12279,12725,15360,11765,12279,12725,15360,11765,12292,12725,15360,11798,12300,12733,15360,11830,12316,12749,15360,11846,12324,12757,15360,11894,12340,12781,15360,11926,12356,12797,15360,11942,12356,12797,15360,11926,12348,12789,15360,11926,12348,12789,15360,11942,12356,12797,15360,11942,12356,12797,15360,11942,12348,12806,15360,11942,12356,12806,15360,11942,12356,12814,15360,11958,12372,12830,15360,11974,12372,12830,15360,11974,12372,12838,15360,11990,12388,12854,15360,12055,12420,12886,15360,12119,12452,12918,15360,12167,12476,12950,15360,12231,12500,12982,15360,12263,12516,12998,15360,12231,12500,12974,15360,12199,12484,12958,15360,12199,12484,12958,15360,12199,12492,12966,15360,12247,12508,12982,15360,12247,12508,12990,15360,12231,12500,12982,15360,12199,12484,12966,15360,12167,12468,12942,15360,12119,12444,12918,15360,12087,12436,12902,15360,12055,12420,12886,15360,12055,12412,12878,15360,12039,12412,12878,15360,12022,12396,12862,15360,12006,12388,12846,15360,11958,12364,12830,15360,11910,12340,12806,15360,12119,12508,13103,15360,12087,12484,13071,15360,12055,12468,13046,15360,12006,12436,13006,15360,11926,12396,12958,15360,11878,12364,12926,15360,11846,12348,12894,15360,11782,12308,12854,15360,11749,12292,12830,15360,11717,12263,12814,15360,11685,12247,12806,15360,11669,12215,12789,15360,11685,12231,12789,15360,11701,12247,12797,15360,11701,12247,12806,15360,11717,12263,12814,15360,11749,12292,12822,15360,11782,12308,12838,15360,11798,12316,12846,15360,11814,12332,12862,15360,11846,12340,12870,15360,11862,12348,12878,15360,11846,12340,12870,15360,11846,12340,12862,15360,11878,12356,12886,15360,11910,12372,12910,15360,11942,12396,12934,15360,11958,12412,12958,15360,12039,12452,12998,15360,12071,12468,13022,15360,12039,12452,12998,15360,12039,12452,12998,15360,12006,12444,13006,15360,11974,12436,12998,15360,11942,12412,12982,15360,11926,12396,12974,15360,11926,12404,12974,15360,11958,12420,12998,15360,12006,12452,13038,15360,12055,12476,13071,15360,12039,12476,13079,15360,12087,12508,13127,15360,12247,12597,13231,15360,12388,12693,13332,15360,12420,12741,13364,15360,12436,12757,13372,15360,12468,12773,13380,15360,12500,12806,13388,15360,12516,12822,13404,15360,12629,12934,13452,15360,12741,13046,13508,15360,12806,13095,13532,15360,12757,13046,13516,15360,12645,12950,13460,15360,12565,12870,13428,15360,12532,12838,13412,15360,12549,12854,13412,15360,12516,12838,13396,15360,12452,12757,13356,15360,12420,12725,13340,15360,12404,12709,13332,15360,12372,12677,13316,15360,12279,12589,13207,15360,12135,12516,13119,15360,12388,12709,13348,15360,12247,12581,13223,15360,12055,12476,13087,15360,11910,12388,12982,15360,11733,12308,12886,15360,11669,12247,12846,15360,11621,12199,12814,15360,11541,12103,12765,15360,11492,12055,12733,15360,11508,12055,12733,15360,11476,12022,12717,15360,11525,12055,12725,15360,11589,12135,12757,15360,11669,12199,12765,15360,11765,12292,12814,15360,11862,12348,12886,15360,11910,12372,12910,15360,12006,12420,12966,15360,12071,12452,12998,15360,12119,12476,13022,15360,12167,12492,13046,15360,12183,12500,13063,15360,12199,12524,13079,15360,12308,12589,13151,15360,12300,12581,13151,15360,12167,12516,13087,15360,12087,12468,13030,15360,12022,12444,13014,15360,11990,12420,12990,15360,11974,12420,12990,15360,11974,12420,12990,15360,11990,12436,13014,15360,11990,12444,13030,15360,12103,12500,13103,15360,12087,12508,13111,15360,12039,12484,13103,15360,12039,12476,13103,15360,11942,12436,13054,15360,11974,12452,13087,15360,12039,12492,13135,15360,12103,12532,13199,15360,12183,12581,13263,15360,12308,12661,13340,15360,12484,12822,13436,15360,12613,12918,13484,15360,12725,13046,13540,15360,13046,13332,13677,15360,13143,13380,13717,15360,13223,13420,13741,15360,13396,13540,13862,15360,13436,13589,13902,15360,13484,13629,13942,15360,13468,13621,13934,15360,13412,13564,13878,15360,13372,13524,13846,15360,13287,13452,13781,15360,13223,13428,13749,15360,13340,13492,13805,15360,13239,13428,13749,15360,13095,13364,13685,15360,12918,13223,13597,15360,12822,13111,13556,15360,12613,12934,13468,15360,12532,12854,13428,15360,12565,12870,13444,15360,12468,12789,13396,15360,12372,12693,13340,15360,12087,12492,13111,15360,11846,12364,12958,15360,11717,12300,12878,15360,11557,12135,12781,15360,11476,12055,12741,15360,11460,12022,12725,15360,11476,12022,12725,15360,11476,12022,12709,15360,11476,11958,12605,15360,11364,11733,12332,15360,11111,11412,11661,15360,11223,11476,11773,15360,11388,11669,12095,15360,11765,12119,12492,15360,12388,12613,13079,15360,12661,12902,13356,15360,12998,13255,13564,15360,13372,13508,13797,15360,13412,13548,13846,15360,13287,13436,13725,15360,13271,13428,13709,15360,13287,13428,13717,15360,13014,13287,13597,15360,12709,12998,13460,15360,12452,12741,13332,15360,12364,12653,13271,15360,12404,12693,13316,15360,12420,12709,13316,15360,12420,12709,13332,15360,12263,12589,13231,15360,12332,12661,13312,15360,12300,12629,13295,15360,12263,12605,13287,15360,12231,12597,13279,15360,12247,12613,13303,15360,12231,12597,13295,15360,12231,12605,13312,15360,12199,12597,13324,15360,12231,12613,13340,15360,12516,12870,13468,15360,12725,13063,13564,15360,12741,13079,13573,15360,12854,13175,13613,15360,12902,13223,13629,15360,13046,13348,13693,15360,13356,13516,13846,15360,13605,13765,14078,15360,13717,13870,14191,15360,13765,13918,14255,15360,13765,13910,14247,15360,13701,13854,14191,15360,13573,13733,14070,15360,13508,13677,14006,15360,13380,13548,13886,15360,13111,13380,13741,15360,13063,13348,13709,15360,12886,13207,13629,15360,12725,13046,13548,15360,12645,12966,13508,15360,12677,12982,13508,15360,12629,12950,13492,15360,12452,12789,13412,15360,12324,12661,13332,15360,12356,12677,13340,15360,12388,12693,13348,15360,12279,12597,13247,15360,11894,12396,12998,15360,11637,12231,12846,15360,11573,12135,12789,15360,11589,12151,12797,15360,11621,12167,12797,15360,11637,12119,12677,15360,11079,11404,11693,15360,10517,10701,10653,15360,10252,10348,10007,15360,9902,9999,9428,15360,9846,9886,9047,15360,10135,10260,9685,15360,10412,10533,10412,15360,11268,11436,11549,15360,12364,12605,13087,15360,12444,12709,13255,15360,12549,12822,13348,15360,12613,12886,13396,15360,12597,12886,13412,15360,12581,12870,13404,15360,12661,12950,13460,15360,12725,13014,13492,15360,13079,13332,13645,15360,12757,13046,13500,15360,12677,12982,13476,15360,12854,13143,13556,15360,12693,12982,13492,15360,12581,12886,13452,15360,12709,13030,13508,15360,12372,12709,13364,15360,12324,12661,13348,15360,12292,12645,13340,15360,12292,12645,13348,15360,12468,12806,13436,15360,12532,12854,13460,15360,12500,12854,13468,15360,12500,12854,13484,15360,12725,13063,13589,15360,12982,13324,13701,15360,13111,13388,13741,15360,13014,13340,13709,15360,13014,13332,13717,15360,13287,13476,13862,15360,13436,13621,13974,15360,13532,13717,14095,15360,13725,13902,14295,15360,13942,14103,14420,15360,13974,14135,14436,15360,13862,14022,14388,15360,13725,13894,14295,15360,13789,13958,14336,15360,13830,13990,14348,15360,13372,13548,13942,15360,13014,13332,13733,15360,12886,13239,13661,15360,12854,13207,13637,15360,12757,13095,13589,15360,12757,13079,13573,15360,12645,12982,13516,15360,12629,12966,13532,15360,12549,12870,13468,15360,12356,12693,13372,15360,12151,12549,13231,15360,12215,12573,13247,15360,12199,12565,13231,15360,12071,12492,13135,15360,12055,12468,13087,15360,11878,12372,12958,15360,11685,12199,12781,15360,10774,11159,11412,15360,9533,9621,8870,15360,9308,9340,8071,15360,9276,9300,7878,15360,9324,9332,8420,15360,9191,9216,7991,15360,8950,8983,7766,15360,9493,9525,8677,15360,10252,10332,10007,15360,10661,10846,10894,15360,10701,10926,10998,15360,10950,11276,11428,15360,11364,11637,12063,15360,11958,12388,12926,15360,12183,12540,13175,15360,12340,12645,13295,15360,12420,12693,13316,15360,12757,13030,13460,15360,13046,13324,13645,15360,13095,13348,13677,15360,13303,13460,13781,15360,13207,13404,13741,15360,13127,13372,13717,15360,13372,13524,13862,15360,12693,13030,13540,15360,12725,13046,13548,15360,12468,12822,13436,15360,12263,12629,13348,15360,12436,12773,13428,15360,12693,12998,13524,15360,12725,13046,13564,15360,12645,12982,13556,15360,12613,12966,13556,15360,12886,13255,13685,15360,13436,13629,14022,15360,13637,13813,14231,15360,13621,13789,14215,15360,13878,14038,14412,15360,14022,14183,14468,15360,13926,14119,14452,15360,14054,14231,14508,15360,14135,14311,14540,15360,14348,14436,14669,15360,14460,14540,14749,15360,14404,14484,14709,15360,14420,14500,14709,15360,14653,14717,14894,15360,14119,14279,14508,15360,13484,13669,14078,15360,13063,13380,13773,15360,12677,13079,13613,15360,12484,12886,13516,15360,12436,12822,13476,15360,12468,12838,13476,15360,12039,12532,13316,15360,12231,12613,13340,15360,12468,12789,13436,15360,12388,12725,13396,15360,12135,12557,13287,15360,12151,12557,13271,15360,12039,12484,13175,15360,11878,12396,13038,15360,11814,12348,12950,15360,11492,11894,12460,15360,9950,10103,9621,15360,8830,8838,7220,15360,8565,8533,7015,15360,8541,8501,6919,15360,8332,8300,6822,15360,8412,8372,7220,15360,8710,8701,7686,15360,9372,9404,8549,15360,9533,9621,9079,15360,9268,9292,8196,15360,9452,9460,8167,15360,9533,9581,8533,15360,9742,9870,9316,15360,11460,11814,12348,15360,11942,12388,12902,15360,11749,12167,12573,15360,11300,11492,11621,15360,11974,12332,12669,15360,12436,12741,13364,15360,12597,12886,13460,15360,12966,13271,13653,15360,12998,13303,13669,15360,13476,13629,13974,15360,13733,13886,14239,15360,13364,13524,13894,15360,13063,13356,13725,15360,12982,13287,13669,15360,12484,12806,13444,15360,12565,12902,13500,15360,12950,13287,13693,15360,12934,13271,13677,15360,12693,13046,13589,15360,12661,13030,13605,15360,12870,13271,13717,15360,13348,13548,13966,15360,13621,13813,14271,15360,13797,13974,14412,15360,13942,14119,14484,15360,14263,14388,14629,15360,14420,14508,14733,15360,14460,14548,14773,15360,14982,15046,15231,15360,15564,15580,15669,15360,15974,15982,16078,15360,15805,15821,15926,15360,15460,15476,15572,15360,15436,15460,15556,15360,14781,14862,15127,15360,13621,13813,14348,15360,12789,13207,13757,15360,12452,12886,13581,15360,12263,12709,13476,15360,12039,12597,13396,15360,11942,12516,13340,15360,11846,12468,13271,15360,11733,12380,13127,15360,11926,12460,13191,15360,12055,12524,13263,15360,11878,12428,13159,15360,11605,12231,12886,15360,11412,11990,12709,15360,11508,12103,12789,15360,11637,12231,12854,15360,10661,11079,11380,15360,9541,9685,9252,15360,8573,8605,7493,15360,8404,8388,7348,15360,8830,8822,8212,15360,9308,9324,9095,15360,9324,9364,9220,15360,9047,9119,8653,15360,9023,9055,8404,15360,9055,9063,8167,15360,8870,8846,7541,15360,8862,8806,7380,15360,8950,8910,7252,15360,9268,9284,7557,15360,10316,10468,10380,15360,11239,11476,11677,15360,10653,10942,11047,15360,9661,9814,9324,15360,10693,10958,11047,15360,11396,11653,11990,15360,11878,12292,12597,15360,12468,12789,13396,15360,12773,13095,13589,15360,13364,13516,13894,15360,13894,14054,14380,15360,13717,13870,14247,15360,13420,13589,13958,15360,13255,13452,13830,15360,12806,13143,13637,15360,13159,13412,13830,15360,13629,13813,14215,15360,13303,13500,13910,15360,13079,13396,13805,15360,13191,13452,13878,15360,13412,13621,14062,15360,14103,14279,14540,15360,14773,14854,15086,15360,14717,14805,15046,15360,14295,14420,14685,15360,14380,14476,14733,15360,14572,14661,14902,15360,15596,15612,15701,15360,16351,16335,16384,15360,16484,16476,16492,15360,16516,16500,16516,15360,16388,16375,16404,15360,16054,16054,16118,15360,15918,15926,16006,15360,15556,15572,15669,15360,14653,14725,14982,15360,13637,13838,14319,15360,13412,13613,14054,15360,12870,13287,13789,15360,12404,12838,13524,15360,12199,12677,13428,15360,12324,12741,13452,15360,11942,12516,13324,15360,11765,12380,13111,15360,11428,11942,12589,15360,10886,11388,11902,15360,10372,10717,11006,15360,9846,10240,10191,15360,10252,10549,10766,15360,10613,11079,11484,15360,10581,10998,11388,15360,9613,9846,9629,15360,8525,8557,7541,15360,8605,8613,7814,15360,9292,9324,9079,15360,9388,9396,9220,15360,10709,10846,11031,15360,9894,9966,9854,15360,9252,9236,8774,15360,8822,8790,8183,15360,8292,8260,6533,15360,8111,8007,6324,15360,8228,8183,6405,15360,8501,8501,6565,15360,8814,8878,7172,15360,9260,9364,8244,15360,8902,9095,8252,15360,9444,9581,9047,15360,9509,9637,8790,15360,9477,9613,8806,15360,10725,11063,11079,15360,11508,11910,12356,15360,12484,12789,13380,15360,12838,13159,13629,15360,13428,13589,13974,15360,14135,14279,14484,15360,13942,14087,14396,15360,13677,13846,14247,15360,13436,13613,14006,15360,13597,13781,14183,15360,14183,14340,14540,15360,14022,14215,14484,15360,13637,13838,14271,15360,14038,14231,14508,15360,14380,14476,14701,15360,14757,14854,15078,15360,15030,15111,15343,15360,15420,15452,15556,15360,15476,15500,15588,15360,15351,15388,15492,15360,15572,15596,15677,15360,15653,15669,15717,15360,15821,15821,15853,15360,15845,15845,15869,15360,15998,15990,16022,15360,15926,15926,15974,15360,15653,15669,15733,15360,15661,15677,15749,15360,15612,15629,15717,15360,15271,15335,15452,15360,14484,14572,14821,15360,14215,14372,14588,15360,13468,13677,14167,15360,12773,13175,13653,15360,12725,13143,13637,15360,12452,12886,13532,15360,12263,12709,13444,15360,11894,12436,13103,15360,10252,10533,10661,15360,8613,8693,7445,15360,8742,8782,7047,15360,8420,8412,6565,15360,7926,7910,6405,15360,8806,8854,7300,15360,9127,9228,8007,15360,8685,8750,7300,15360,8348,8356,6758,15360,8380,8340,7300,15360,8991,8918,8388,15360,9838,9790,9549,15360,10055,10127,10047,15360,9501,9493,9268,15360,9332,9292,8902,15360,9079,9007,8509,15360,8300,8260,7252,15360,8693,8701,8196,15360,8228,8212,7111,15360,8469,8501,7380,15360,8420,8501,6919,15360,8549,8645,6983,15360,8581,8661,6951,15360,9268,9332,7718,15360,9063,9207,7445,15360,9284,9380,7718,15360,9412,9557,8693,15360,10276,10517,10103,15360,11830,12279,12589,15360,12725,13079,13589,15360,13127,13396,13773,15360,14087,14231,14460,15360,13974,14119,14412,15360,13677,13854,14247,15360,14119,14279,14500,15360,13990,14167,14460,15360,14364,14452,14653,15360,14564,14653,14837,15360,14404,14492,14701,15360,14870,14942,15135,15360,15388,15420,15500,15360,15207,15287,15420,15360,14797,14894,15127,15360,15271,15335,15452,15360,15926,15942,15990,15360,16207,16207,16231,15360,16118,16110,16126,15360,15741,15733,15741,15360,16239,16207,16175,15360,16444,16460,16484,15360,16046,16022,16006,15360,15942,15950,15966,15360,15773,15789,15829,15360,15789,15797,15845,15360,15693,15709,15757,15360,15540,15564,15653,15360,15303,15364,15468,15360,14733,14813,15014,15360,13862,14054,14420,15360,12838,13255,13725,15360,12789,13207,13693,15360,12468,12918,13564,15360,12404,12838,13500,15360,11428,11862,12412,15360,9143,9276,8388,15360,8541,8533,6726,15360,8444,8428,6629,15360,8212,8183,6597,15360,8388,8380,7015,15360,8726,8710,6758,15360,8332,8316,6437,15360,8453,8428,6565,15360,8597,8605,7814,15360,8701,8661,8151,15360,9452,9396,9015,15360,10581,10557,10380,15360,10950,10974,10846,15360,10380,10356,10252,15360,10749,10741,10685,15360,9870,9854,9693,15360,9023,9039,8669,15360,8790,8854,8509,15360,8196,8167,7332,15360,7975,8015,7079,15360,8589,8750,7445,15360,9095,9260,7111,15360,8983,9135,7188,15360,8902,8991,7252,15360,8862,9007,7015,15360,8967,9111,7300,15360,8742,8878,7493,15360,9557,9999,9549,15360,11292,11613,11862,15360,12135,12468,12982,15360,12215,12460,12878,15360,13356,13468,13685,15360,13821,13934,14199,15360,13548,13701,14022,15360,14103,14263,14468,15360,14279,14388,14572,15360,14364,14452,14645,15360,14709,14789,14950,15360,15143,15199,15327,15360,15388,15412,15468,15360,15476,15500,15548,15360,15420,15444,15492,15360,15436,15460,15516,15360,15612,15637,15685,15360,16086,16086,16110,15360,16396,16388,16396,15360,16094,16094,16110,15360,15869,15861,15861,15360,16135,16110,16070,15360,16428,16420,16404,15360,15588,15556,15524,15360,15484,15500,15508,15360,15335,15364,15396,15360,15677,15685,15717,15360,15604,15621,15661,15360,15420,15444,15500,15360,15303,15372,15452,15360,14717,14805,14998,15360,14412,14508,14701,15360,13548,13765,14199,15360,13271,13508,13942,15360,12661,13159,13709,15360,12468,12854,13436,15360,10260,10484,10509,15360,8613,8669,6951,15360,8151,8143,6469,15360,8653,8629,7814,15360,8469,8444,7541,15360,8718,8693,7814,15360,8372,8332,6597,15360,8356,8308,7111,15360,9047,8983,8396,15360,8822,8798,8308,15360,9372,9348,8967,15360,10364,10364,10183,15360,10268,10260,9894,15360,10541,10533,10468,15360,10380,10364,10276,15360,10621,10613,10549,15360,9910,9942,9758,15360,8364,8380,7621,15360,8581,8637,8135,15360,8252,8300,7573,15360,8119,8175,7300,15360,8372,8453,7493,15360,8420,8501,6983,15360,8742,8822,7573,15360,8782,8854,8151,15360,8581,8661,7079,15360,9220,9268,8340,15360,9549,9645,8854,15360,11717,11950,12127,15360,12468,12741,13207,15360,12709,12966,13388,15360,12300,12508,12886,15360,12492,12709,13063,15360,13239,13372,13548,15360,12476,12597,12814,15360,13581,13685,13878,15360,14476,14548,14685,15360,14556,14629,14773,15360,14765,14829,14966,15360,15159,15207,15303,15360,15372,15396,15444,15360,15516,15532,15572,15360,15653,15661,15693,15360,15829,15837,15853,15360,16022,16014,16022,15360,16311,16295,16279,15360,16343,16319,16303,15360,16412,16388,16359,15360,15813,15797,15773,15360,13063,13151,13183,15360,11484,11701,11798,15360,12300,12412,12468,15360,14613,14637,14653,15360,11974,12215,12316,15360,14135,14215,14303,15360,15604,15629,15677,15360,15524,15548,15596,15360,15351,15380,15428,15360,14797,14894,15054,15360,13990,14231,14500,15360,13492,13709,14070,15360,12886,13316,13701,15360,12613,13207,13749,15360,11525,11974,12428,15360,9284,9412,8629,15360,8597,8653,6951,15360,7806,7790,6292,15360,7589,7541,6437,15360,7485,7437,6597,15360,7453,7404,6180,15360,7774,7686,6565,15360,8300,8260,7332,15360,9918,9942,9862,15360,10348,10372,10231,15360,9725,9709,9228,15360,10613,10621,10509,15360,10199,10175,9838,15360,10380,10388,10340,15360,11207,11255,11284,15360,10661,10717,10725,15360,10103,10135,9950,15360,8444,8436,7669,15360,8469,8501,7445,15360,8950,9111,8854,15360,9485,9798,10071,15360,8364,8501,8039,15360,7959,7951,6806,15360,8597,8605,8039,15360,8501,8533,7557,15360,8758,8830,7509,15360,10758,10830,10693,15360,11508,11605,11621,15360,13524,13669,13886,15360,13830,14022,14327,15360,13926,14103,14364,15360,13460,13621,13886,15360,12854,13191,13420,15360,13597,13733,13926,15360,13846,13990,14223,15360,13773,13942,14199,15360,13910,14087,14356,15360,13813,14022,14319,15360,14247,14396,14540,15360,14693,14765,14878,15360,15223,15279,15343,15360,15508,15524,15540,15360,15540,15548,15564,15360,15327,15335,15319,15360,15303,15311,15303,15360,15918,15910,15886,15360,16247,16207,16151,15360,16175,16143,16086,15360,14436,14452,14436,15360,12263,12380,12404,15360,11476,11701,11773,15360,12380,12492,12532,15360,14797,14797,14757,15360,11372,11589,11677,15360,12597,12934,13356,15360,13990,14364,14725,15360,14183,14444,14773,15360,14231,14444,14717,15360,14412,14532,14709,15360,14054,14199,14380,15360,12372,12500,12605,15360,12199,12565,13006,15360,12581,13175,13653,15360,10055,10380,10324,15360,8557,8573,6726,15360,8167,8196,6533,15360,7517,7485,6119,15360,7244,7172,5798,15360,7071,6959,5718,15360,7669,7581,6260,15360,8661,8605,7975,15360,10942,11079,11151,15360,12573,12741,13014,15360,11902,12030,12191,15360,10308,10332,10135,15360,11255,11300,11284,15360,11276,11348,11396,15360,10055,10215,10292,15360,12183,12332,12468,15360,9918,9966,9798,15360,8734,8742,8196,15360,8967,8950,8469,15360,10260,10276,10039,15360,9734,9758,9605,15360,9388,9404,9308,15360,7943,7878,7095,15360,7726,7637,6645,15360,8047,7983,7204,15360,9284,9236,8693,15360,9621,9565,9143,15360,11255,11268,11047,15360,13175,13332,13420,15360,13773,13934,14175,15360,13854,14022,14271,15360,13870,14038,14279,15360,13388,13516,13677,15360,12279,12629,12966,15360,13348,13452,13564,15360,13821,13918,14054,15360,13701,13846,14022,15360,13460,13605,13781,15360,13492,13637,13821,15360,13709,13821,13950,15360,14372,14428,14476,15360,14516,14572,14613,15360,14741,14789,14813,15360,14725,14749,14749,15360,13452,13484,13468,15360,13476,13500,13492,15360,14990,15022,15022,15360,14556,14572,14564,15360,15094,15111,15094,15360,13231,13287,13215,15360,11255,11380,11175,15360,10677,10886,10492,15360,11846,12006,11934,15360,14327,14340,14279,15360,10766,11039,10862,15360,12918,13255,13452,15360,14231,14548,14886,15360,13878,14380,14765,15360,13444,13862,14412,15360,12151,12404,12621,15360,12637,12902,13215,15360,11549,11749,11870,15360,12279,12653,13119,15360,13223,13404,13516,15360,9228,9260,8276,15360,8087,7991,6308,15360,7918,7814,6919,15360,7469,7364,6148,15360,7485,7380,6212,15360,8228,7991,7204,15360,9276,8967,8212,15360,9806,9573,8742,15360,10135,10087,9621,15360,11452,11452,11452,15360,10629,10637,10509,15360,10693,10733,10637,15360,11095,11111,10982,15360,11292,11348,11372,15360,10199,10244,10167,15360,10814,10926,10846,15360,8669,8774,7493,15360,7870,7910,6244,15360,8204,8183,6919,15360,9806,9758,9159,15360,9460,9436,8629,15360,9159,9087,8260,15360,7637,7509,6790,15360,7758,7629,6838,15360,7967,7918,6774,15360,10854,10749,10501,15360,11508,11412,11316,15360,12372,12300,12151,15360,12030,12119,12063,15360,12781,12910,12982,15360,13476,13581,13661,15360,13484,13589,13677,15360,12404,12428,12380,15360,11605,11765,11798,15360,11492,11533,11452,15360,11838,11886,11798,15360,12263,12372,12380,15360,12151,12231,12175,15360,11492,11508,11412,15360,11119,11111,10838,15360,12508,12581,12573,15360,12621,12693,12677,15360,12573,12629,12589,15360,12292,12324,12231,15360,12476,12565,12573,15360,11998,12159,12215,15360,12950,13071,13159,15360,12263,12372,12428,15360,12380,12428,12444,15360,11300,11308,11143,15360,10199,10244,9734,15360,9709,9701,9252,15360,10492,10581,10404,15360,11476,11516,11388,15360,9477,9517,8790,15360,11717,11854,11838,15360,14247,14420,14524,15360,14054,14311,14436,15360,13597,13805,13982,15360,11364,11533,11597,15360,12263,12428,12549,15360,11436,11605,11653,15360,13079,13324,13444,15360,12516,12613,12605,15360,10039,10015,9605,15360,8693,8621,7878,15360,7951,7862,6902,15360,8196,8204,7015,15360,8677,8589,7637,15360,9284,9031,8340,15360,9814,9605,8902,15360,10685,10428,9910,15360,10492,10260,9685,15360,9404,9252,7943,15360,8830,8766,7220,15360,9220,9047,7943,15360,9693,9669,9015,15360,11412,11468,11372,15360,11135,11159,11023,15360,10087,10055,9428,15360,9910,10007,9621,15360,9236,9300,8934,15360,9597,9557,8902,15360,10669,10549,9782,15360,9926,9870,9127,15360,9894,9918,9047,15360,8685,8742,7910,15360,9958,10167,10284,15360,10215,10332,10396,15360,11396,11428,11452,15360,11223,11255,11300,15360,11814,11862,11958,15360,10685,10846,10870,15360,10340,10380,10007,15360,11175,11207,10894,15360,12103,12207,12215,15360,11143,11103,10902,15360,9910,9966,9613,15360,10015,10079,9493,15360,10806,10846,10517,15360,10862,10934,10637,15360,10838,10942,10661,15360,10958,11087,10878,15360,10709,10838,10701,15360,10669,10741,10589,15360,10581,10669,10525,15360,10252,10348,9974,15360,11396,11500,11525,15360,11207,11255,11264,15360,10878,10910,10934,15360,11031,11063,11159,15360,11292,11324,11396,15360,11223,11255,11300,15360,10693,10685,10645,15360,10428,10420,10324,15360,10300,10252,9991,15360,10838,10846,10798,15360,10428,10428,10364,15360,9669,9605,9380,15360,10167,10244,10087,15360,11709,11854,11910,15360,11223,11284,11268,15360,10231,10244,9878,15360,10199,10244,9862,15360,10183,10260,9942,15360,10525,10653,10541,15360,12500,12597,12621,15360,11814,11741,11597,15360,11533,11460,11175,15360,11103,11006,10557,15360,10444,10396,9846,15360,10007,10023,9228,15360,9653,9790,8469,15360,9316,9372,8039,15360,9557,9830,8071,15360,9621,9918,8071,15360,9677,10015,8167,15360,9991,10284,8420,15360,10215,10436,8581,15360,10260,10484,8645,15360,10292,10476,8902,15360,10324,10468,9252,15360,9910,9894,8886,15360,10525,10573,9701,15360,9782,10039,8581,15360,9565,9814,8167,15360,9950,10039,8934,15360,10749,10758,10199,15360,10669,10685,10244,15360,10838,10838,10460,15360,11215,10910,10087,15360,11492,11364,10806,15360,11095,11159,11055,15360,11364,11388,11356,15360,11023,11039,10990,15360,11653,11653,11613,15360,11798,11725,11557,15360,11974,11862,11637,15360,12039,11942,11765,15360,12119,12047,11934,15360,12151,12071,11950,15360,12087,12006,11886,15360,12047,11966,11838,15360,11990,11926,11790,15360,11974,11910,11798,15360,11998,11934,11814,15360,12111,12039,11886,15360,12231,12143,11998,15360,12292,12199,12039,15360,12039,11974,11846,15360,11822,11782,11653,15360,11862,11838,11765,15360,11798,11765,11701,15360,11782,11733,11669,15360,11798,11749,11685,15360,11838,11790,11725,15360,11870,11822,11749,15360,11741,11701,11621,15360,11565,11541,11452,15360,11533,11500,11412,15360,11621,11581,11484,15360,11605,11557,11460,15360,11516,11468,11372,15360,11565,11533,11444,15360,11677,11637,11541,15360,11725,11661,11557,15360,11725,11661,11557,15360,11733,11669,11573,15360,11838,11773,11677,15360,11998,11926,11814,15360,12014,11926,11798,15360,11460,11404,11332,15360,11637,11557,11428,15360,12014,11894,11693,15360,12167,12022,11765,15360,12119,11982,11709,15360,11926,11806,11516,15360,11685,11589,11300,15360,11476,11404,10886,15360,11239,11151,10468,15360,10766,10733,9894,15360,10565,10565,9589,15360,10436,10444,9332,15360,10308,10308,9031,15360,10308,10316,8999,15360,10199,10244,8774,15360,9725,9645,8549,15360,10244,10276,8967,15360,10878,10838,10183,15360,11055,10966,10348,15360,11119,11006,10404,15360,11264,11135,10565,15360,11404,11316,10822,15360,11492,11388,10982,15360,11798,11613,11223,15360,12047,11830,11412,15360,12039,11894,11597,15360,12127,11990,11693,15360,12127,11990,11725,15360,12191,12055,11806,15360,12191,12055,11830,15360,11870,11773,11613,15360,11573,11516,11428,15360,11533,11484,11412,15360,11541,11492,11420,15360,11565,11516,11452,15360,11589,11541,11476,15360,11605,11557,11500,15360,11637,11589,11533,15360,11669,11621,11557,15360,11701,11645,11573,15360,11733,11669,11589,15360,11798,11717,11605,15360,11838,11749,11621,15360,11878,11782,11661,15360,11894,11798,11661,15360,11926,11806,11653,15360,11958,11822,11661,15360,11982,11846,11677,15360,12006,11870,11685,15360,12095,11950,11765,15360,12047,11910,11741,15360,11886,11765,11605,15360,11838,11733,11589,15360,11814,11717,11589,15360,11814,11709,11573,15360,11790,11693,11565,15360,11741,11677,11589,15360,11733,11677,11613,15360,11733,11685,11629,15360,11717,11669,11621,15360,11685,11645,11589,15360,11629,11589,11533,15360,11573,11525,11468,15360,11492,11444,11380,15360,11316,11255,11111,15360,11348,11292,11143,15360,11516,11436,11316,15360,11854,11749,11589,15360,12127,11990,11765,15360,12199,12055,11782,15360,12340,12231,11910,15360,12372,12292,11958,15360,12380,12300,11974,15360,12348,12247,11910,15360,12324,12215,11878,15360,12247,12103,11773,15360,12095,11958,11637,15360,12055,11926,11613,15360,11974,11854,11541,15360,11870,11765,11468,15360,11966,11854,11541,15360,12300,12151,11846,15360,12396,12316,12006,15360,12388,12308,11990,15360,12388,12308,12006,15360,12396,12316,12022,15360,12396,12308,12022,15360,12396,12308,12022,15360,12364,12279,11974,15360,12340,12247,11942,15360,12340,12231,11926,15360,12215,12071,11806,15360,12095,11966,11749,15360,11741,11645,11500,15360,11420,11356,11255,15360,11364,11308,11207,15360,11356,11300,11175,15360,11348,11292,11191,15360,11372,11324,11255,15360,11412,11364,11308,15360,11420,11372,11316,15360,11428,11380,11324,15360,11444,11388,11332,15360,11484,11428,11364,15360,11508,11460,11396,15360,11557,11500,11436,15360,11589,11533,11460,15360,11613,11557,11484,15360,11621,11557,11492,15360,11613,11557,11500,15360,11621,11557,11500,15360,11629,11573,11508,15360,11629,11573,11508,15360,11605,11557,11484,15360,11589,11533,11468,15360,11557,11508,11436,15360,11549,11500,11428,15360,11557,11500,11436,15360,11549,11492,11436,15360,11533,11484,11428,15360,11525,11476,11428,15360,11516,11476,11428,15360,11525,11484,11444,15360,11516,11476,11428,15360,11468,11428,11380,15360,11428,11388,11332,15360,11356,11308,11239,15360,11308,11255,11127,15360,11167,11071,10926,15360,11223,11119,10966,15360,11276,11175,10998,15360,11404,11332,11191,15360,11773,11693,11557,15360,11926,11798,11613,15360,12207,12039,11773,15360,12348,12231,11894,15360,12308,12151,11846,15360,12332,12215,11894,15360,12364,12279,11958,15360,12380,12292,11974,15360,12396,12316,12022,15360,12404,12316,12039,15360,12412,12332,12087,15360,12412,12332,12103,15360,12436,12356,12135,15360,12372,12292,12039,15360,12420,12332,12087,15360,12396,12316,12055,15360,12356,12263,11990,15360,12340,12231,11942,15360,12271,12127,11854,15360,12215,12071,11814,15360,12292,12135,11878,15360,12288,12135,11870,15360,12111,11982,11765,15360,11990,11886,11717,15360,11637,11557,11428,15360,11364,11300,11143,15360,11316,11239,11079,15360,11300,11207,11047,15360,11268,11159,11015,15360,11268,11159,11015,15360,11268,11159,11031,15360,11300,11223,11095,15360,11340,11292,11191,15360,11348,11300,11223,15360,11372,11324,11255,15360,11380,11332,11255,15360,11372,11316,11239,15360,11396,11340,11268,15360,11468,11404,11300,15360,11460,11404,11324,15360,11484,11428,11356,15360,11492,11436,11372,15360,11500,11444,11388,15360,11508,11460,11404,15360,11500,11452,11396,15360,11492,11436,11380,15360,11468,11412,11356,15360,11444,11388,11324,15360,11444,11388,11324,15360,11428,11380,11316,15360,11412,11356,11300,15360,11404,11348,11300,15360,11404,11356,11308,15360,11396,11356,11308,15360,11388,11348,11308,15360,11372,11340,11292,15360,11348,11308,11255,15360,11284,11223,11111,15360,11231,11143,11023,15360,11199,11111,10974,15360,11047,10958,10814,15360,11127,11023,10870,15360,11119,11006,10846,15360,11175,11055,10886,15360,11292,11191,10998,15360,11525,11404,11284,15360,11822,11637,11476,15360,11878,11733,11549,15360,11918,11790,11573,15360,12063,11918,11653,15360,12223,12063,11765,15360,12300,12151,11846,15360,12255,12103,11814,15360,12271,12127,11846,15360,12271,12127,11862,15360,12271,12127,11886,15360,12308,12183,11942,15360,12175,12039,11814,15360,12063,11934,11709,15360,12159,12014,11765,15360,12215,12063,11798,15360,12143,11998,11757,15360,12071,11934,11693,15360,11998,11870,11661,15360,11974,11870,11685,15360,11998,11910,11757,15360,11846,11765,11629,15360,11468,11396,11284,15360,11308,11223,11031,15360,11215,11103,10934,15360,11207,11095,10942,15360,11215,11103,10950,15360,11191,11087,10942,15360,11175,11079,10942,15360,11167,11063,10934,15360,11143,11031,10902,15360,11247,11143,11015,15360,11284,11191,11079,15360,11300,11223,11095,15360,11316,11268,11127,15360,11340,11284,11143,15360,11340,11284,11159,15360,11356,11300,11191,15360,11372,11316,11239,15360,11380,11324,11255,15360,11372,11316,11255,15360,11380,11324,11276,15360,11380,11324,11268,15360,11372,11316,11255,15360,11364,11316,11255,15360,11364,11308,11239,15360,11348,11292,11207,15360,11340,11284,11191,15360,11348,11292,11191,15360,11348,11292,11207,15360,11340,11292,11207,15360,11340,11292,11207,15360,11324,11276,11207,15360,11308,11255,11175,15360,11264,11175,11079,15360,11119,11039,10934,15360,11103,11015,10902,15360,11095,11006,10878,15360,11031,10942,10806,15360,10990,10902,10766,15360,11047,10942,10814,15360,11031,10926,10790,15360,11055,10942,10806,15360,11119,10998,10846,15360,11151,11015,10830,15360,11268,11095,10886,15360,11484,11396,11268,15360,11790,11701,11549,15360,11886,11790,11637,15360,11838,11741,11581,15360,11838,11725,11541,15360,11902,11782,11581,15360,11966,11838,11629,15360,11974,11846,11629,15360,11958,11838,11629,15360,11950,11838,11637,15360,11814,11701,11525,15360,11581,11492,11332,15360,11645,11541,11380,15360,11806,11701,11533,15360,11902,11806,11637,15360,11950,11862,11717,15360,12014,11934,11790,15360,11942,11862,11725,15360,11565,11492,11388,15360,11292,11191,11015,15360,11231,11111,10950,15360,11159,11047,10894,15360,11119,11006,10854,15360,11127,11023,10878,15360,11159,11055,10902,15360,11135,11031,10894,15360,11111,11006,10878,15360,11095,10990,10870,15360,11095,10998,10886,15360,11071,10966,10846,15360,11111,11006,10902,15360,11191,11095,10974,15360,11268,11159,11031,15360,11284,11191,11063,15360,11292,11207,11063,15360,11300,11223,11079,15360,11332,11268,11143,15360,11316,11255,11127,15360,11316,11255,11143,15360,11308,11239,11127,15360,11316,11255,11159,15360,11300,11223,11127,15360,11292,11207,11095,15360,11300,11223,11111,15360,11300,11223,11095,15360,11300,11223,11095,15360,11308,11239,11111,15360,11300,11223,11111,15360,11292,11207,11111,15360,11264,11167,11071,15360,11215,11127,11047,15360,11135,11055,10966,15360,11015,10934,10846,15360,10918,10838,10733,15360,10982,10894,10782,15360,10974,10886,10766,15360,10982,10894,10766,15360,10958,10862,10749,15360,10982,10886,10774,15360,10958,10862,10758,15360,10958,10862,10749,15360,11015,10910,10790,15360,11023,10910,10774,15360,11079,10958,10806,15360,11103,10974,10798,15360,11191,11047,10846,15360,11468,11388,11276,15360,11846,11765,11637,15360,12006,11918,11782,15360,11998,11910,11782,15360,11902,11822,11693,15360,11838,11749,11637,15360,11782,11709,11605,15360,11806,11741,11645,15360,11782,11717,11629,15360,11773,11717,11621,15360,11870,11806,11701,15360,11942,11862,11757,15360,12183,12103,11974,15360,11974,11894,11765,15360,11476,11404,11308,15360,11268,11143,10966,15360,11183,11063,10902,15360,11111,10998,10854,15360,11055,10942,10806,15360,11023,10910,10766,15360,11047,10934,10782,15360,11039,10926,10782,15360,11079,10966,10830,15360,11031,10918,10782,15360,11031,10926,10806,15360,10990,10894,10782,15360,10974,10886,10790,15360,10966,10870,10774,15360,11006,10902,10806,15360,11039,10942,10838,15360,11127,11023,10910,15360,11175,11079,10958,15360,11191,11087,10958,15360,11207,11095,10958,15360,11268,11143,11015,15360,11276,11175,11047,15360,11284,11191,11079,15360,11292,11191,11079,15360,11276,11175,11079,15360,11239,11135,11031,15360,11268,11159,11047,15360,11215,11111,11006,15360,11239,11127,11015,15360,11255,11143,11031,15360,11223,11119,11015,15360,11199,11103,10998,15360,11175,11087,10982,15360,11143,11047,10958,15360,11031,10942,10854,15360,10958,10878,10790,15360,10910,10830,10741,15360,10942,10862,10758,15360,10926,10838,10733,15360,10854,10758,10637,15360,10918,10830,10709,15360,10910,10822,10717,15360,10942,10846,10749,15360,10942,10854,10741,15360,10942,10854,10749,15360,10966,10870,10758,15360,10966,10870,10758,15360,10958,10854,10733,15360,10998,10886,10741,15360,10942,10830,10677,15360,11039,10918,10749,15360,11095,10974,10806,15360,11308,11223,11031,15360,11468,11396,11292,15360,11605,11533,11428,15360,11701,11621,11525,15360,11693,11629,11541,15360,11685,11621,11549,15360,11685,11629,11549,15360,11629,11565,11484,15360,11589,11533,11444,15360,11364,11308,11191,15360,11191,11087,10958,15360,11135,11031,10902,15360,11135,11031,10894,15360,11055,10950,10830,15360,11015,10910,10782,15360,10958,10854,10733,15360,10942,10838,10717,15360,10974,10870,10733,15360,10982,10878,10749,15360,10990,10886,10758,15360,11015,10910,10798,15360,10966,10862,10758,15360,10950,10854,10758,15360,10910,10822,10733,15360,10894,10798,10709,15360,10902,10814,10725,15360,10934,10846,10758,15360,10910,10822,10733,15360,10950,10854,10749,15360,10974,10878,10766,15360,11047,10942,10830,15360,11095,10990,10878,15360,11167,11055,10942,15360,11199,11103,10990,15360,11191,11087,10982,15360,11151,11047,10950,15360,11135,11031,10934,15360,11095,10998,10902,15360,11143,11047,10950,15360,11079,10990,10894,15360,11079,10990,10902,15360,11103,11006,10910,15360,11079,10982,10886,15360,11023,10926,10822,15360,10982,10894,10798,15360,10958,10870,10782,15360,10910,10814,10725,15360,10926,10838,10741,15360,10934,10838,10733,15360,10950,10854,10749,15360,10886,10798,10709,15360,10910,10814,10709,15360,10926,10830,10725,15360,10910,10814,10701,15360,10862,10774,10677,15360,10950,10854,10733,15360,10926,10830,10717,15360,10926,10838,10725,15360,10926,10830,10725,15360,10894,10798,10685,15360,10926,10830,10701,15360,10958,10854,10717,15360,10934,10830,10685,15360,10950,10846,10709,15360,10974,10862,10717,15360,10942,10830,10685,15360,10958,10846,10701,15360,11006,10894,10749,15360,10950,10846,10725,15360,10958,10862,10741,15360,10894,10806,10701,15360,10854,10774,10669,15360,10886,10806,10701,15360,10862,10790,10693,15360,10878,10806,10717,15360,10982,10902,10798,15360,10990,10902,10798,15360,10950,10862,10758,15360,10942,10846,10733,15360,10870,10774,10669,15360,10894,10798,10693,15360,10918,10830,10725,15360,10894,10806,10701,15360,10926,10830,10733,15360,10902,10830,10725,15360,10870,10790,10693,15360,10886,10814,10725,15360,10814,10741,10661,15360,10838,10766,10677,15360,10822,10741,10661,15360,10822,10741,10669,15360,10862,10790,10709,15360,10846,10758,10669,15360,10894,10798,10693,15360,10974,10878,10766,15360,10966,10870,10766,15360,11023,10926,10814,15360,11079,10974,10862,15360,11006,10910,10814,15360,10950,10862,10766,15360,10982,10894,10798,15360,10958,10862,10774,15360,10958,10870,10782,15360,10910,10830,10741,15360,10950,10862,10766,15360,10982,10886,10790,15360,10918,10822,10725,15360,10886,10798,10701,15360,10854,10766,10669,15360,10894,10806,10709,15360,10926,10830,10725,15360,10926,10830,10725,15360,10958,10862,10749,15360,10958,10862,10749,15360,10894,10806,10717,15360,10902,10814,10717,15360,10878,10790,10677,15360,10942,10838,10717,15360,10918,10814,10701,15360,10886,10790,10661,15360,10942,10838,10717,15360,10950,10854,10725,15360,10950,10854,10725,15360,10910,10814,10693,15360,10910,10814,10685,15360,10942,10838,10709,15360,10894,10790,10661,15360,10910,10806,10669,15360,10822,10725,10597,15360,10749,10661,10541,15360,10830,10733,10613,15360,10838,10741,10629,15360,10806,10709,10597,15360,10854,10766,10653,15360,10862,10774,10669,15360,10798,10725,10629,15360,10822,10749,10653,15360,10854,10782,10693,15360,10806,10741,10661,15360,10862,10790,10701,15360,10870,10790,10685,15360,10870,10790,10693,15360,10878,10790,10677,15360,10862,10782,10677,15360,10870,10790,10693,15360,10870,10782,10685,15360,10894,10814,10709,15360,10886,10814,10709,15360,10846,10782,10685,15360,10741,10669,10573,15360,10766,10693,10589,15360,10709,10637,10541,15360,10741,10669,10589,15360,10741,10677,10589,15360,10709,10637,10557,15360,10774,10701,10613,15360,10862,10774,10677,15360,11006,10918,10806,15360,11006,10902,10782,15360,10974,10870,10749,15360,10958,10854,10733,15360,10934,10838,10725,15360,10934,10838,10733,15360,10934,10838,10725,15360,10886,10790,10685,15360,10854,10766,10661,15360,10886,10798,10701,15360,10838,10749,10645,15360,10878,10782,10661,15360,10822,10725,10613,15360,10822,10717,10605,15360,10846,10749,10629,15360,10854,10749,10637,15360,10950,10854,10733,15360,10958,10854,10741,15360,10910,10806,10693,15360,10926,10822,10693,15360,10934,10838,10725,15360,10910,10822,10709,15360,10910,10822,10709,15360,10886,10782,10661,15360,10910,10814,10677,15360,10910,10806,10677,15360,10926,10822,10685,15360,10958,10854,10717,15360,10974,10870,10725,15360,10926,10830,10693,15360,10926,10830,10693,15360,10918,10822,10693,15360,10934,10838,10701,15360,10918,10814,10685,15360,10878,10782,10653,15360,10870,10774,10645,15360,10838,10749,10629,15360,10806,10717,10605,15360,10822,10733,10621,15360,10822,10733,10621,15360,10846,10758,10653,15360,10846,10766,10653,15360,10822,10741,10629,15360,10806,10733,10629,15360,10806,10725,10621,15360,10790,10709,10605,15360,10766,10693,10589,15360,10814,10741,10629,15360,10846,10766,10653,15360,10838,10758,10653,15360,10878,10790,10677,15360,10894,10798,10685,15360,10830,10741,10629,15360,10830,10758,10653,15360,10798,10725,10629,15360,10806,10733,10629,15360,10717,10637,10525,15360,10661,10581,10476,15360,10701,10621,10517,15360,10733,10661,10565,15360,10782,10685,10557,15360,10862,10758,10613,15360,10974,10862,10725,15360,10958,10846,10709,15360,11006,10902,10766,15360,11006,10902,10774,15360,11039,10934,10814,15360,11006,10902,10790,15360,11006,10910,10790,15360,10950,10854,10741,15360,10934,10830,10709,15360,10918,10814,10701,15360,10854,10758,10653,15360,10918,10814,10701,15360,10870,10766,10645,15360,10830,10733,10621,15360,10934,10830,10709,15360,10990,10886,10758,15360,10950,10838,10717,15360,10910,10814,10701,15360,10926,10822,10693,15360,10934,10830,10709,15360,10878,10774,10653,15360,10934,10830,10701,15360,10926,10822,10693,15360,10878,10782,10661,15360,10878,10782,10661,15360,10862,10766,10621,15360,10886,10782,10645,15360,10886,10782,10653,15360,10926,10822,10701,15360,10902,10806,10685,15360,10926,10822,10701,15360,10918,10814,10685,15360,10878,10782,10645,15360,10910,10806,10669,15360,10854,10758,10621,15360,10886,10790,10645,15360,10854,10758,10629,15360,10830,10741,10613,15360,10918,10814,10685,15360,10862,10766,10645,15360,10830,10741,10613,15360,10806,10717,10597,15360,10741,10661,10557,15360,10774,10693,10581,15360,10749,10669,10557,15360,10774,10693,10581,15360,10766,10685,10573,15360,10790,10709,10597,15360,10782,10701,10589,15360,10790,10709,10597,15360,10838,10749,10621,15360,10870,10774,10645,15360,10894,10790,10661,15360,10878,10782,10653,15360,10846,10741,10613,15360,10790,10693,10557,15360,10814,10717,10597,15360,10790,10701,10581,15360,10741,10645,10525,15360,10717,10629,10509,15360,10774,10685,10573,15360,10725,10637,10525,15360,10854,10749,10621,15360,10950,10846,10701,15360,10966,10854,10709,15360,10934,10814,10677,15360,10926,10822,10701,15360,10982,10878,10766,15360,10998,10894,10782,15360,10990,10878,10766,15360,10998,10894,10782,15360,10998,10886,10774,15360,10998,10886,10758,15360,11006,10894,10774,15360,10942,10838,10733,15360,10958,10854,10741,15360,10958,10854,10749,15360,11006,10902,10790,15360,11015,10902,10798,15360,10982,10870,10758,15360,10998,10894,10782,15360,10974,10870,10758,15360,11006,10902,10790,15360,10998,10894,10774,15360,10974,10870,10758,15360,10950,10854,10741,15360,10878,10790,10693,15360,10902,10814,10701,15360,10918,10822,10709,15360,10838,10733,10613,15360,10878,10782,10661,15360,10934,10838,10717,15360,10902,10806,10693,15360,10918,10822,10709,15360,10926,10830,10709,15360,10838,10733,10605,15360,10910,10806,10661,15360,10942,10838,10693,15360,10886,10782,10645,15360,10886,10782,10637,15360,10854,10749,10621,15360,10926,10830,10709,15360,10966,10862,10741,15360,10846,10749,10629,15360,10830,10733,10605,15360,10854,10758,10637,15360,10822,10725,10605,15360,10886,10790,10661,15360,10902,10806,10669,15360,10918,10814,10677,15360,10830,10733,10605,15360,10806,10717,10589,15360,10870,10774,10645,15360,10934,10838,10709,15360,10958,10862,10733,15360,10886,10790,10661,15360,10894,10798,10661,15360,10958,10854,10709,15360,10934,10830,10709,15360,10814,10717,10581,15360,10862,10758,10613,15360,10854,10741,10589,15360,10814,10717,10573,15360,10886,10782,10645,15360,10814,10725,10597,15360,10862,10766,10637,15360,10910,10806,10669,15360,10942,10838,10709,15360,10966,10862,10733,15360,10974,10870,10741,15360,10974,10870,10749,15360,10958,10862,10749,15360,11031,10934,10822,15360,10998,10894,10782,15360,10974,10870,10766,15360,11023,10918,10814,15360,11039,10926,10822,15360,10958,10846,10741,15360,10918,10814,10693,15360,10966,10870,10741,15360,10982,10886,10766,15360,10982,10878,10766,15360,10942,10846,10733,15360,10958,10862,10758,15360,10950,10854,10758,15360,10934,10830,10717,15360,10966,10862,10733,15360,10942,10846,10725,15360,10934,10846,10733,15360,10934,10846,10733,15360,10878,10798,10693,15360,10886,10798,10693,15360,10910,10814,10709,15360,10942,10846,10733,15360,10838,10733,10597,15360,10878,10774,10645,15360,10918,10822,10701,15360,10878,10782,10653,15360,10894,10790,10661,15360,10934,10838,10725,15360,10958,10854,10725,15360,10966,10862,10733,15360,10910,10806,10685,15360,10982,10878,10758,15360,10942,10854,10749,15360,10934,10838,10733,15360,10918,10814,10701,15360,10894,10798,10669,15360,10894,10798,10669,15360,10814,10725,10605,15360,10902,10798,10669,15360,10814,10725,10605,15360,10894,10798,10685,15360,10958,10862,10749,15360,10910,10814,10701,15360,10910,10806,10685,15360,10918,10814,10693,15360,10926,10822,10709,15360,10894,10790,10661,15360,10902,10806,10677,15360,10902,10806,10685,15360,10934,10838,10717,15360,10934,10838,10701,15360,10934,10838,10717,15360,10950,10854,10725,15360,10894,10798,10661,15360,10862,10749,10597,15360,10894,10798,10677,15360,10878,10782,10661,15360,10926,10838,10717,15360,10926,10838,10717,15360,10918,10822,10709,15360,10934,10838,10733,15360,10926,10838,10733,15360,10958,10870,10766,15360,10942,10854,10749,15360,10958,10870,10774,15360,10974,10878,10774,15360,10958,10854,10741,15360,10950,10846,10741,15360,10950,10854,10758,15360,10934,10838,10733,15360,10942,10846,10725,15360,10966,10862,10741,15360,10926,10838,10733,15360,10958,10862,10749,15360,10910,10822,10709,15360,10942,10854,10758,15360,10926,10838,10733,15360,10910,10822,10717,15360,10934,10838,10733,15360,10934,10846,10733,15360,10902,10814,10709,15360,10926,10830,10717,15360,10918,10822,10709,15360,10838,10749,10637,15360,10878,10790,10677,15360,10942,10846,10733,15360,10926,10822,10701,15360,10958,10862,10749,15360,10886,10790,10685,15360,10918,10814,10693,15360,10910,10814,10693,15360,10902,10806,10701,15360,10878,10774,10637,15360,10798,10693,10565,15360,10822,10725,10597,15360,10934,10838,10709,15360,10958,10854,10725,15360,10886,10790,10669,15360,10910,10806,10677,15360,10886,10782,10645,15360,10830,10725,10597,15360,10822,10717,10581,15360,10862,10758,10637,15360,10878,10782,10669,15360,10926,10822,10709,15360,10974,10878,10774,15360,10966,10870,10758,15360,10918,10822,10709,15360,10846,10749,10645,15360,10894,10798,10693,15360,10918,10822,10709,15360,10974,10878,10774,15360,10918,10822,10717,15360,10982,10886,10774,15360,10974,10878,10758,15360,10950,10854,10741,15360,10958,10854,10725,15360,10982,10886,10766,15360,10918,10822,10701,15360,10878,10782,10669,15360,10886,10790,10669,15360,10934,10838,10717,15360,10950,10854,10741,15360,10934,10838,10733,15360,10982,10886,10782,15360,10886,10798,10701,15360,10870,10782,10685,15360,10894,10814,10717,15360,10910,10822,10725,15360,10934,10838,10733,15360,10950,10846,10741,15360,10934,10838,10725,15360,10934,10846,10749,15360,10902,10814,10717,15360,10878,10790,10677,15360,10878,10782,10669,15360,10854,10766,10645,15360,10838,10749,10629,15360,10902,10814,10701,15360,10910,10814,10693,15360,10902,10798,10669,15360,10910,10806,10677,15360,10886,10782,10653,15360,10854,10749,10629,15360,10870,10774,10653,15360,10974,10870,10758,15360,10990,10878,10758,15360,10918,10822,10709,15360,10926,10838,10725,15360,10958,10854,10733,15360,10894,10790,10653,15360,10822,10725,10605,15360,10878,10782,10661,15360,10974,10870,10749,15360,10902,10806,10677,15360,10934,10838,10725,15360,10870,10774,10653,15360,10798,10701,10581,15360,10854,10749,10621,15360,10894,10798,10669,15360,10934,10822,10685,15360,10942,10830,10701,15360,10910,10806,10669,15360,10870,10758,10629,15360,10886,10774,10645,15360,10950,10838,10701,15360,10966,10870,10749,15360,10886,10790,10685,15360,10870,10782,10677,15360,10934,10838,10733,15360,10934,10838,10725,15360,10822,10725,10621,15360,10878,10790,10677,15360,10894,10798,10693,15360,10822,10733,10629,15360,10894,10798,10685,15360,10998,10902,10790,15360,11015,10918,10806,15360,10950,10854,10741,15360,10950,10846,10741,15360,10934,10838,10733,15360,10942,10846,10749,15360,10910,10822,10725,15360,10846,10758,10653,15360,10878,10790,10685,15360,10894,10798,10701,15360,10862,10774,10669,15360,10814,10725,10621,15360,10846,10758,10645,15360,10870,10774,10661,15360,10870,10774,10677,15360,10878,10790,10693,15360,10878,10782,10677,15360,10830,10741,10637,15360,10870,10782,10677,15360,10966,10870,10766,15360,11015,10918,10814,15360,10910,10814,10701,15360,10942,10846,10725,15360,10950,10846,10725,15360,10942,10838,10725,15360,10934,10830,10701,15360,10910,10798,10677,15360,10886,10782,10653,15360,10838,10733,10597,15360,10902,10806,10669,15360,10830,10733,10613,15360,10838,10741,10621,15360,10838,10741,10621,15360,10894,10798,10669,15360,10934,10830,10685,15360,10886,10790,10669,15360,10902,10806,10685,15360,10854,10749,10637,15360]);var Yde={file:1,m:1,mm:.001,cm:.01,ft:.3048,in:.0254,pt:u1t()},h1t={file:"m",m:"m",mm:"mm",cm:"cm",ft:"ft",in:"in",pt:"pt"},Xde=e=>2===e?"²":3===e?"³":"",tI=(e,t=1)=>h1t[e]+Xde(t),yZt=(e,t,i,r=1)=>(null==i&&(i=t),i===t?{value:e,unit:tI(i)}:{value:e*Math.pow(Yde[t]/Yde[i],r),unit:tI(i)+Xde(r)}),lk=(e=>(e.Top="Top",e.Bottom="Bottom",e.Front="Front",e.Back="Back",e.Left="Left",e.Right="Right",e))(lk||{}),nA=class{static getCameraPositionByBboxAndView(e,t,i,r,n){let s=nA.getCameraDirectionByView(t);return this.getCameraPositionByBboxAndDirection(e,i,r,n,s)}static getCameraPositionByBboxAndDirection(e,t,i,r,n){if(e.isEmpty()||!r)return;let s=new A,a=new A,o=new A(0,1,0);e.getSize(a),e.getCenter(s);let l,h,u=(a.x+a.y+a.z)/3*1.5;if(!n||null!=n&&n.equals(new A))l=new A(s.x+u,s.y+u/1.5,s.z+u),h=l.clone().sub(s);else{let e=new A(u,u/1.5,u).length();h=new A(-n.x,-n.y,-n.z).normalize().multiplyScalar(e),l=h.clone().add(s)}u=h.length(),h=h.normalize();let c=new Be;c.lookAt(l,s,o);let p=new Be;p.makeTranslation(-l.x,-l.y,-l.z);let d=e.clone().applyMatrix4(p).applyMatrix4(c.invert()).applyMatrix4(r),f=Math.max(Math.abs(d.max.x),Math.abs(d.min.x)),m=Math.max(Math.abs(d.max.y),Math.abs(d.min.y));u*=1.1*Math.sqrt(Math.pow(f,2)+Math.pow(m,2)),l=h.multiplyScalar(u).add(s),i.set(s.x,s.y,s.z),t.set(l.x,l.y,l.z)}static getCameraDirectionByView(e){let t=new A(1,0,0);return"Top"===e?t.set(0,-1,0):"Bottom"===e?t.set(0,1,0):"Front"===e?t.set(0,0,-1):"Back"===e?t.set(0,0,1):"Left"===e?t.set(1,0,0):"Right"===e&&t.set(-1,0,0),t}static sleep(e){return ht(this,null,(function*(){let t;return new Promise((i=>{t=setTimeout((()=>{i("")}),e)})).then((()=>{clearTimeout(t)}))}))}static twinkle(e,t=500){return ht(this,null,(function*(){let i=nA.twinklingObjectIds;i[e.id]||(i[e.id]=!0,e.visible=!e.visible,yield this.sleep(t),e.visible=!e.visible,yield this.sleep(t),e.visible=!e.visible,yield this.sleep(t),e.visible=!e.visible,yield this.sleep(t),e.visible=!e.visible,yield this.sleep(t),e.visible=!e.visible,delete i[e.id])}))}},Is=nA;Is.twinklingObjectIds={};var p1t=!1,Na=class extends Os{constructor(e){super(),this.DEFAULT_LINE_WIDTH=1,this.DEFAULT_STROKE_STYLE="#000000",this.DEFAULT_FILL_STYLE="#000000",this.lineWidth=this.DEFAULT_LINE_WIDTH,this.lineColor=this.DEFAULT_STROKE_STYLE,this.fillColor=this.DEFAULT_FILL_STYLE,this.x=0,this.y=0,this.points=[],this.userData={},this.width=0,this.height=0,this.tolerance=1,this.visible=!0,this.selected=!1,this.needsFrustumCulled=!0,this.editPointSize=3,this.editPointColor="#ffffff",this.matrix=new Be,this.id=e||_t.guid()}setTolerance(e){this.tolerance=e}render(e,t){this.ctx=e,this.draw(e,t),this.selected&&this.drawSelect(e,t),p1t&&(this.drawBounds(e,t),this.drawCenter(e,t))}getData(){return{id:this.id,points:this.points.map((e=>[e.x,e.y])),lineWidth:this.lineWidth,lineColor:this.lineColor,fillColor:this.fillColor,type:this.getClassType()}}setData(e){this.id=e.id,this.setLineWidth(e.lineWidth),this.setLineColor(e.lineColor),this.setFillColor(e.fillColor)}getVertexs(){return[new A(this.x,this.y,0),new A(this.x+this.width,this.y,0),new A(this.x+this.width,this.y+this.height,0),new A(this.x,this.y+this.height,0)]}setLineWidth(e){this.lineWidth=e||this.DEFAULT_LINE_WIDTH}setLineColor(e){this.lineColor=e||this.DEFAULT_STROKE_STYLE}setFillColor(e){this.fillColor=e||this.DEFAULT_FILL_STYLE}isSelected(){return this.selected}getCenter(){return this.getBounds().getCenter(new A)}transToScreenCoord(e,t){return this.ctx?Ai.worldPosition2ScreenPoint(e,t,this.ctx.canvas):new le}drawBounds(e,t){let{min:i,max:r}=this.getBounds(),n=[],s=(e,t,i)=>n.push(new A(e,t,i));s(r.x,r.y,r.z),s(i.x,r.y,r.z),s(i.x,i.y,r.z),s(r.x,i.y,r.z),s(r.x,r.y,i.z),s(i.x,r.y,i.z),s(i.x,i.y,i.z),s(r.x,i.y,i.z),s(i.x,r.y,r.z),s(i.x,i.y,r.z),s(r.x,r.y,r.z),s(r.x,i.y,r.z),s(r.x,r.y,i.z),s(r.x,i.y,i.z),s(i.x,r.y,i.z),s(i.x,i.y,i.z),s(i.x,r.y,r.z),s(i.x,r.y,i.z),s(r.x,r.y,r.z),s(r.x,r.y,i.z),s(i.x,i.y,r.z),s(i.x,i.y,i.z),s(r.x,i.y,r.z),s(r.x,i.y,i.z),e.save(),e.strokeStyle="yellow",e.beginPath(),n.forEach(((i,r)=>{let n=this.transToScreenCoord(i,t);r%2==0?e.moveTo(n.x,n.y):e.lineTo(n.x,n.y)})),e.closePath(),e.stroke(),e.restore()}drawCenter(e,t){let i=this.transToScreenCoord(this.getCenter(),t);e.save(),e.fillStyle="yellow",e.beginPath(),e.arc(i.x,i.y,5,0,2*Math.PI),e.closePath(),e.fill(),e.restore()}getBounds(){let e=this.getVertexs();return(new Dt).setFromPoints(e)}},Df=(e=>(e.MouseClicked="MouseClicked",e.LayoutChanged="LayoutChanged",e.ModelLoaded="ModelLoaded",e.RenderAfter="RenderAfter",e.CameraChanged="CameraChanged",e.MarkupDeactived="MarkupDeactived",e.MarkupAdded="MarkupAdded",e.MarkupUpdated="MarkupUpdated",e.MarkupRemoved="MarkupRemoved",e.BeforeRemoveMarkup="BeforeRemoveMarkup",e))(Df||{}),$de={},wr=class extends Os{constructor(e){super(),this.drawableLists=[],this.frustum=new ea,this.projScreenMatrix=new Be,this.viewer=e,this.init()}static _registerDrawableClass(e){$de[e.prototype.getClassType()]=e}static createDrawable(e){let t=$de[e.type];if(!t)throw new Error(`Invalid drawable type: ${t}`);let i=e.points.map((e=>new A(e[0],e[1],e[2]||0))),r=new t(e.id,i);return r.setData(e),r}get container(){return this.viewer.viewerContainer}get camera(){return this.viewer.camera}get raycaster(){return this.viewer.getRaycaster()}getPixelSize(e,t){if(!this.canvas)return 1;let{clientWidth:i,clientHeight:r}=this.canvas,n=0;if("OrthographicCamera"===t.type){let s=t;n=e*Math.max(s.right-s.left,s.top-s.bottom)/s.zoom/Math.max(i,r)}else if("PerspectiveCamera"===t.type){let i=t,s=this.viewer.cameraCfg,a=s&&_t.arrayToVector3(s.eye),o=s&&_t.arrayToVector3(s.look);n=2*e*(a.distanceTo(o)*Math.tan(i.fov/2*Math.PI/180))/r}return n}init(){this.initCanvas(),this.viewer.addEventListener("RenderAfter",(()=>{this.projScreenMatrix.multiplyMatrices(this.camera.projectionMatrix,this.camera.matrixWorldInverse),this.frustum.setFromProjectionMatrix(this.projScreenMatrix),this.render()}))}initCanvas(){let e=this.viewer.getViewConfig();if(Ii.isBrowser&&!e.context2d){let e=this.canvas=document.createElement("canvas"),t=this.viewer.viewerContainer;t.appendChild(e),e.classList.add("overlay-renderer"),e.style.pointerEvents="none",e.style.position="absolute",e.style.left="0px",e.style.top="0px",e.style.userSelect="none",this.context=e.getContext("2d",{willReadFrequently:!0});let{clientWidth:i,clientHeight:r}=t;this.setSize(i,r)}else e.context2d&&(this.context=e.context2d,this.canvas=Ii.creatReactNativeCanvas(this.context),this.context.canvas||(this.context.canvas=this.canvas))}toHighDpr(e,t,i){let r=Math.max(window.devicePixelRatio||1,1),n=this.canvas;return n.width=t*r,n.height=i*r,e.scale(r,r),n.style.width=`${t}px`,n.style.height=`${i}px`,e}clearCanvas(){var e,t,i;null==(i=this.context)||i.clearRect(0,0,null==(e=this.canvas)?void 0:e.width,null==(t=this.canvas)?void 0:t.height)}addDrawableList(e){this.drawableLists.push(e)}render(){if(!this.canvas||!this.context)return;this.clearCanvas();let e=this.getSortedDrawables(),t=new qi;for(let i=0;i{e.push(...Array.from(t.getDrawables().values()))})),e.sort(((e,t)=>t.getCenter().distanceTo(this.camera.position)-e.getCenter().distanceTo(this.camera.position))),e}getDrawablesByPosition(e,t){let i=this.getSortedDrawables().reverse(),r=[];for(let n=0;ne.clear())),this.drawableLists=[],this.canvas&&(null==(e=this.viewer.viewerContainer)||e.removeChild(this.canvas),this.canvas=void 0)}},$u=class extends Os{constructor(e){super(),this.drawableMap=new Map,this.category=e}addDrawable(e){this.drawableMap.set(e.id,e),this.dispatchEvent("addDrawable",e.getData())}updateDrawable(e,t){e.setData(t),this.dispatchEvent("updateDrawable",e.getData())}removeDrawable(e){this.drawableMap.delete(e.id),this.dispatchEvent("removeDrawable",e.getData())}getDrawableById(e){return this.drawableMap.get(e)}clear(){this.drawableMap.forEach((e=>this.removeDrawable(e)))}getDrawables(){return this.drawableMap}getDrawableDatas(){return Array.from(this.drawableMap).map((([e,t])=>t.getData()))}setDrawableDatas(e){for(let t=0;t{let r=this.transToScreenCoord(i,t);e.moveTo(r.x,r.y),e.arc(r.x,r.y,this.editPointSize,0,2*Math.PI)})),e.closePath(),e.fill(),e.restore()}setEditPointSize(e){this.editPointSize=e}setEditPointColor(e){this.editPointColor=e}getCenter(){return this.getBounds().getCenter(new A)}isPointInPath(e){let t=this.getVertexs().map((e=>new le(e.x,e.y)));return kt.isPointInPolygon(new le(e.x,e.y),t,!0)}setData(e){super.setData(e),this.update(e.points.map((e=>new A(e[0],e[1],0))))}translate(e,t){let i=new A(e,t,0);return this.points.forEach((e=>e.add(i))),this.update(this.points),this}rotate(){return this}scale(){return this}},Zo=(e=>(e.Arrow="ArrowMarkup",e.Circle="CircleMarkup",e.CloudLine="CloudLineMarkup",e.CloudLineRectangle="CloudRectMarkup",e.Dot="DotMarkup",e.Ellipse="EllipseMarkup",e.PolyLine="PolylineMarkup",e.Rectangle="RectMarkup",e.Text="TextMarkup",e.X="XMarkup",e))(Zo||{}),ck=class extends Rn{constructor(e,t){super(e),this.type="ArrowMarkup",this.update(t)}draw(e,t){let i=this.points.map((e=>this.transToScreenCoord(e,t))),[r,n]=this.points,s=(new A).subVectors(r,n).length()/10/this.tolerance;this.drawArrowLine(e,i,s),this.drawArrowHead(e,i[0],i[1],10,s)}drawArrowLine(e,t,i){e.save(),e.lineWidth=this.lineWidth,e.strokeStyle=this.lineColor;let[r,n]=t,s=(new le).subVectors(n,r).normalize();e.beginPath(),e.moveTo(r.x,r.y);let a=n.clone().sub(s.multiplyScalar(i));e.lineTo(a.x,a.y),e.closePath(),e.stroke(),e.restore()}drawArrowHead(e,t,i,r,n){let s=180*Math.atan2(t.y-i.y,t.x-i.x)/Math.PI,a=(s+r)*Math.PI/180,o=(s-r)*Math.PI/180,l=n*Math.cos(a),h=n*Math.sin(a),u=n*Math.cos(o),c=n*Math.sin(o),p=new le(i.x+l,i.y+h),d=new le(i.x+u,i.y+c);e.save(),e.fillStyle=this.lineColor,e.beginPath(),e.moveTo(i.x,i.y),e.lineTo(p.x,p.y),e.lineTo(d.x,d.y),e.closePath(),e.fill(),e.restore()}getVertexs(){return this.points}update(e){let[t,i]=e;return this.points=e,this.x=Math.min(t.x,i.x),this.y=Math.min(t.y,i.y),this.width=Math.abs(i.x-t.x),this.height=Math.abs(i.y-t.y),this}isPointInPath(e){return kt.isPointOnLineSegments(e,this.points,this.tolerance)}getClassType(){return"ArrowMarkup"}};wr._registerDrawableClass(ck);var uk=class extends Rn{constructor(e,t){super(e),this.radius=1,this.type="CircleMarkup",this.update(t)}draw(e,t){let[i,r]=this.points.map((e=>this.transToScreenCoord(e,t)));this.radius=(new le).subVectors(r,i).length(),e.save(),e.lineWidth=this.lineWidth,e.strokeStyle=this.lineColor,e.fillStyle=this.fillColor,e.beginPath(),e.arc(i.x,i.y,this.radius,0,2*Math.PI),e.closePath(),e.stroke(),e.restore()}update(e){let[t,i]=e,r=(new A).subVectors(i,t).length();return this.width=2*r,this.height=2*r,this.x=t.x-this.width/2,this.y=t.y-this.height/2,this.points=e,this}isPointInPath(e){let[t,i]=this.points,r=(new A).subVectors(t,i).length();return Math.abs(e.distanceTo(t)-r)<=2*this.tolerance}getClassType(){return"CircleMarkup"}};wr._registerDrawableClass(uk);var d1t=new Dt,Gp=class extends Rn{constructor(e,t){super(e),this.type="CloudLineMarkup",this.update(t)}draw(e,t){let i=this.points,r=[];e.save(),e.lineWidth=this.lineWidth,e.strokeStyle=this.lineColor,e.fillStyle=this.fillColor,e.beginPath();for(let n=0;nthis.transToScreenCoord(e,t))),n=(new le).lerpVectors(i,r,.5);this.radiusX=Math.abs(r.x-i.x)/2,this.radiusY=Math.abs(r.y-i.y)/2,e.save(),e.lineWidth=this.lineWidth,e.strokeStyle=this.lineColor,e.fillStyle=this.fillColor,e.beginPath(),e.ellipse(n.x,n.y,this.radiusX,this.radiusY,0,0,2*Math.PI),e.closePath(),e.stroke(),e.restore()}update(e){let[t,i]=e;return this.x=Math.min(t.x,i.x),this.y=Math.min(t.y,i.y),this.width=Math.abs(i.x-t.x),this.height=Math.abs(i.y-t.y),this.points=e,this}isPointInPath(e){let[t,i]=this.points,r=(new A).lerpVectors(t,i,.5),n=Math.abs(i.x-t.x)/2,s=Math.abs(i.y-t.y)/2,a=Math.pow(e.x-r.x,2)/(n*n),o=Math.pow(e.y-r.y,2)/(s*s);return Math.abs(a+o-1)<=.1}getClassType(){return"EllipseMarkup"}};wr._registerDrawableClass(dk);var fk=class extends Rn{constructor(e,t){super(e),this.type="PolylineMarkup",this.update(t)}draw(e,t){e.save(),e.lineWidth=this.lineWidth,e.strokeStyle=this.lineColor,e.fillStyle=this.fillColor;let i=this.points;e.beginPath(),i.forEach(((i,r)=>{let n=this.transToScreenCoord(i,t);0===r?e.moveTo(n.x,n.y):e.lineTo(n.x,n.y)})),e.stroke(),e.restore()}isPointInPath(e){let t=this.points,i=[];for(let e=0;e{let n=this.transToScreenCoord(i,t);0===r?e.moveTo(n.x,n.y):e.lineTo(n.x,n.y)})),e.closePath(),e.stroke(),e.restore()}update(e){let[t,i]=e;return this.x=Math.min(t.x,i.x),this.y=Math.min(t.y,i.y),this.width=Math.abs(i.x-t.x),this.height=Math.abs(i.y-t.y),this.points=e,this}isPointInPath(e){let t=this.getVertexs(),i=[];for(let e=0;ethis.textWidth&&(this.textWidth=s),r.push({lineWidth:s,lineText:n})}return this.textRow!==r.length&&(this.y-=(r.length-1)*this.fontSize),r.reverse()}setFontSize(e){this.fontSize=e}update(e){let t=e[0];return this.x=t.x,this.y=t.y,this.points=[t],this.textRow=1,this}setData(e){super.setData(e),this.text=e.text,this.setFontSize(e.fontSize)}updateText(e){this.text=e}getData(){return{id:this.id,points:this.points.map((e=>[e.x,e.y])),text:this.text,lineWidth:this.lineWidth,lineColor:this.lineColor,fillColor:this.fillColor,fontSize:this.fontSize,type:this.getClassType()}}getClassType(){return"TextMarkup"}};wr._registerDrawableClass(gk);var vk=class extends Rn{constructor(e,t){super(e),this.type="XMarkup",this.update(t)}draw(e,t){e.save(),e.lineWidth=this.lineWidth,e.strokeStyle=this.lineColor,e.beginPath();let[i,r,n,s]=this.getVertexs().map((e=>this.transToScreenCoord(e,t)));e.moveTo(i.x,i.y),e.lineTo(n.x,n.y),e.moveTo(r.x,r.y),e.lineTo(s.x,s.y),e.closePath(),e.stroke(),e.restore()}isPointInPath(e){let[t,i,r,n]=this.getVertexs();return kt.isPointOnLineSegments(e,[t,r,i,n],.1)}update(e){let[t,i]=e;return this.points=e,this.x=Math.min(t.x,i.x),this.y=Math.min(t.y,i.y),this.width=Math.abs(i.x-t.x),this.height=Math.abs(i.y-t.y),this}getClassType(){return"XMarkup"}};wr._registerDrawableClass(vk);var sA=class{constructor(e,t){this.flyDuration=500,this.autoRotateRemainingTime=0,this.automaticallyAdjustCameraPosition=!0,this.rotateIntervalStartTime=0,this.camera=e,this.controls=t}flyTo(e,t,i){let r=this.camera,n=this.controls;if(!r||!n)return;if(e.equals(t))return void console.error("[BimViewer] camera position and lookAt cannot be the same!");if(isNaN(e.x)||isNaN(e.y)||isNaN(e.z)||isNaN(t.x)||isNaN(t.y)||isNaN(t.z))return void console.error("[BimViewer] invalid position or lookAt!");if(this.automaticallyAdjustCameraPosition){let i=e.distanceTo(t);ir.far&&(e=e.clone().sub(t).normalize().multiplyScalar(.9*r.far),console.warn("[BimViewer] camera could be too far to see the object!"))}let s=r.position.clone(),a=n.target.clone(),o=this.flyDuration,l=Date.now();this.cameraUpdateInterval&&clearInterval(this.cameraUpdateInterval),this.cameraUpdateInterval=setInterval((()=>{let h=Date.now()-l;h>o&&(h=o);let u=(e,t,i)=>{let r=e.x+(t.x-e.x)*i,n=e.y+(t.y-e.y)*i,s=e.z+(t.z-e.z)*i;return new A(r,n,s)};((e,t)=>{r.lookAt(t),r.position.set(e.x,e.y,e.z),n.target.set(t.x,t.y,t.z),n.update()})(u(s,e,h/o),u(a,t,h/o)),h>=o&&(clearInterval(this.cameraUpdateInterval),this.cameraUpdateInterval=void 0,i&&i())}),10)}lookTo(e){let t=this.camera,i=this.controls;if(!t||!i)return;let r=t.position,n=i.target.distanceTo(r),s=e.normalize().multiplyScalar(n),a=new A(r.x+s.x,r.y+s.y,r.z+s.z);this.flyTo(r,a)}startAutoRotate(){let e=this.camera,t=this.controls;if(!e||!t)return;t.autoRotate=!0;let i=new A;e.getWorldPosition(i);let r=t.target;if(r.y===i.y)return;let n=(r.y-i.y)/50;for(let e=0;e<50;++e)setTimeout((()=>{let e=t.target.y-n;t.target.setY(e),t.update()}),30*e)}delayAutoRotate(){this.autoRotateRemainingTime=5e3,this.controls&&(this.controls.autoRotate=!1)}startToRotate(e){let t=Date.now()-this.rotateIntervalStartTime;this.rotateIntervalStartTime=Date.now(),!(this.rotateInterval&&t<100)&&(this.rotateInterval&&clearInterval(this.rotateInterval),this.rotateInterval=setInterval((()=>{if(Date.now()-this.rotateIntervalStartTime>=100)return clearInterval(this.rotateInterval),void(this.rotateInterval=void 0);"ArrowLeft"===e.code||"ArrowRight"===e.code?this.rotateLeftOrRight(.3,"ArrowLeft"===e.code):("ArrowUp"===e.code||"ArrowDown"===e.code)&&this.rotateUpOrDown(.3,"ArrowUp"===e.code)}),1))}rotateLeftOrRight(e,t=!0){let i=this.controls;if(!this.camera||!i)return;let r=this.camera.position,n=i.target,s=n.clone(),a=Math.PI*e/180;t&&(a=-a),s.x=(n.x-r.x)*Math.cos(a)-(n.z-r.z)*Math.sin(a)+r.x,s.z=(n.z-r.z)*Math.cos(a)+(n.x-r.x)*Math.sin(a)+r.z,this.camera.lookAt(s),i.target=s,i.update()}rotateUpOrDown(e,t=!0){let i=this.controls;if(!this.camera||!i)return;let r=this.camera.position,n=i.target,s=n.clone(),a=Math.PI*e/180,o=new A(n.x-r.x,n.y-r.y,n.z-r.z).length(),l=n.y-r.y;t||(a=-a);let h=Math.asin(l/o)+a;if(h<-Math.PI/2||h>Math.PI/2)return;let u=Math.sin(h)*o;s.y=n.y+(u-l),i.target=s,i.update()}},aA=class{constructor(e){this.object=e}instantiate(){let e=Date.now();this.instantiateInner(this.object),console.log(`[Inst] instantiate() costed ${(Date.now()-e)/1e3}s`)}instantiateInner(e){if(!e.children||0===e.children.length)return;let t=e.children.length,i={},r=[];for(let n=0;n0||!t.geometry)continue;let s=!1,a=Object.values(i);for(let o=a.length-1;o>=0;--o){let l=a[o].indexes[0],h=e.children[l];if(this.geometryEquals(t.geometry,h.geometry)&&Ps.materialsEquals(t.material,h.material)){i[l]||(i[l]={indexes:[l]},this.removeFromArray(r,l)),i[l].indexes.push(n),s=!0;break}}for(let a=r.length-1;!s&&a>=0;--a){let o=r[a],l=e.children[o];if(this.geometryEquals(t.geometry,l.geometry)&&Ps.materialsEquals(t.material,l.material)){i[o]||(i[o]={indexes:[o]},this.removeFromArray(r,o)),i[o].indexes.push(n),s=!0;break}}s||r.push(n)}if(Object.keys(i).length<=0)return;let n=[],s=[];Object.values(i).forEach((t=>{let i=t.indexes;s.push(...i);let r=e.children[i[0]],a=r.material;if(a instanceof jr)a=a.clone();else if(Array.isArray(a)){let e=[];a.forEach((t=>e.push(t.clone()))),a=e}let o=new rn(r.geometry,a,i.length);o.name=`[Instanced] ${r.name}`;for(let t=0;tt-e)),s.forEach((t=>e.remove(e.children[t]))),n.forEach((t=>{t.parent=e,e.children.push(t)})),e.updateMatrix(),console.log(`[Inst] ${s.length}(out of ${t}) objects instanced to ${n.length} InstancedMesh`)}removeFromArray(e,t){for(let i=e.length-1;i>=0;--i)if(e[i]===t)return void e.splice(i,1)}geometryEquals(e,t){return kt.geometryEquals(e,t)}},fT=class{constructor(){this.TIMEOUT="timeout",this.INTERVAL="interval",this.timeoutMap={},this.intervalMap={}}run(e=this.INTERVAL,t,i=16.7){let r=Date.now,n=r(),s=n,a=Symbol(""),o=()=>{this.setIdMap(a,e,o),s=r(),s-n>=i&&(e===this.intervalMap&&(n=r(),s=n),t(),e===this.TIMEOUT&&this.clearTimeout(a))};return this.setIdMap(a,e,o),a}setIdMap(e,t,i){let r=requestAnimationFrame(i);t===this.INTERVAL?this.intervalMap[e]=r:t===this.TIMEOUT&&(this.timeoutMap[e]=r)}setTimeout(e,t){return this.run(this.TIMEOUT,e,t)}clearTimeout(e){cancelAnimationFrame(this.timeoutMap[e])}setInterval(e,t){return this.run(this.INTERVAL,e,t)}clearInterval(e){cancelAnimationFrame(this.intervalMap[e])}},Ek=kn(Zde(),1),Cf=class{constructor(e,t){this.endian=t&&"big"===t?"big":"little",this.position=0,this.data=new DataView(e)}readAsciiString(e){if(this.data.byteLength256||24!==e.colormap_size||1!==e.colormap_type)&&console.error("THREE.TGALoader: Invalid type colormap data for indexed type.");break;case r:case n:case a:case o:e.colormap_type&&console.error("THREE.TGALoader: Invalid type colormap data for colormap type.");break;case t:console.error("THREE.TGALoader: No data.");default:console.error('THREE.TGALoader: Invalid type "%s".',e.image_type)}(e.width<=0||e.height<=0)&&console.error("THREE.TGALoader: Invalid image size."),8!==e.pixel_size&&16!==e.pixel_size&&24!==e.pixel_size&&32!==e.pixel_size&&console.error('THREE.TGALoader: Invalid pixel size "%s".',e.pixel_size)})(g),g.id_length+f>e.length&&console.error("THREE.TGALoader: No data."),f+=g.id_length;let y=!1,v=!1,T=!1;switch(g.image_type){case s:y=!0,v=!0;break;case i:v=!0;break;case a:y=!0;break;case r:break;case o:y=!0,T=!0;break;case n:T=!0}let x=new Uint8Array(g.width*g.height*4),b=function(e,t,i,r,n){let s,a,o=i.pixel_size>>3,l=i.width*i.height*o;if(t&&(a=n.subarray(r,r+=i.colormap_length*(i.colormap_size>>3))),e){s=new Uint8Array(l);let e,t,i,a=0,h=new Uint8Array(o);for(;a>h){default:case p:s=0,o=1,m=t,a=0,f=1,y=i;break;case u:s=0,o=1,m=t,a=i-1,f=-1,y=-1;break;case d:s=t-1,o=-1,m=-1,a=0,f=1,y=i;break;case c:s=t-1,o=-1,m=-1,a=i-1,f=-1,y=-1}if(T)switch(g.pixel_size){case 8:!function(e,t,i,r,n,s,a,o){let l,h,u,c=0,p=g.width;for(u=t;u!==r;u+=i)for(h=n;h!==a;h+=s,c++)l=o[c],e[4*(h+p*u)+0]=l,e[4*(h+p*u)+1]=l,e[4*(h+p*u)+2]=l,e[4*(h+p*u)+3]=255}(e,a,f,y,s,o,m,r);break;case 16:!function(e,t,i,r,n,s,a,o){let l,h,u=0,c=g.width;for(h=t;h!==r;h+=i)for(l=n;l!==a;l+=s,u+=2)e[4*(l+c*h)+0]=o[u+0],e[4*(l+c*h)+1]=o[u+0],e[4*(l+c*h)+2]=o[u+0],e[4*(l+c*h)+3]=o[u+1]}(e,a,f,y,s,o,m,r);break;default:console.error("THREE.TGALoader: Format not supported.")}else switch(g.pixel_size){case 8:!function(e,t,i,r,n,s,a,o,l){let h,u,c,p=l,d=0,f=g.width;for(c=t;c!==r;c+=i)for(u=n;u!==a;u+=s,d++)h=o[d],e[4*(u+f*c)+3]=255,e[4*(u+f*c)+2]=p[3*h+0],e[4*(u+f*c)+1]=p[3*h+1],e[4*(u+f*c)+0]=p[3*h+2]}(e,a,f,y,s,o,m,r,n);break;case 16:!function(e,t,i,r,n,s,a,o){let l,h,u,c=0,p=g.width;for(u=t;u!==r;u+=i)for(h=n;h!==a;h+=s,c+=2)l=o[c+0]+(o[c+1]<<8),e[4*(h+p*u)+0]=(31744&l)>>7,e[4*(h+p*u)+1]=(992&l)>>2,e[4*(h+p*u)+2]=(31&l)<<3,e[4*(h+p*u)+3]=32768&l?0:255}(e,a,f,y,s,o,m,r);break;case 24:!function(e,t,i,r,n,s,a,o){let l,h,u=0,c=g.width;for(h=t;h!==r;h+=i)for(l=n;l!==a;l+=s,u+=3)e[4*(l+c*h)+3]=255,e[4*(l+c*h)+2]=o[u+0],e[4*(l+c*h)+1]=o[u+1],e[4*(l+c*h)+0]=o[u+2]}(e,a,f,y,s,o,m,r);break;case 32:!function(e,t,i,r,n,s,a,o){let l,h,u=0,c=g.width;for(h=t;h!==r;h+=i)for(l=n;l!==a;l+=s,u+=4)e[4*(l+c*h)+2]=o[u+0],e[4*(l+c*h)+1]=o[u+1],e[4*(l+c*h)+0]=o[u+2],e[4*(l+c*h)+3]=o[u+3]}(e,a,f,y,s,o,m,r);break;default:console.error("THREE.TGALoader: Format not supported.")}}(x,g.width,g.height,b.pixel_data,b.palettes),{data:x,width:g.width,height:g.height,flipY:!0,generateMipmaps:!0,minFilter:Ca}}},oA=class extends ui{constructor(e){super(e)}load(e,t,i,r){let n=this,s=""===n.path?Vs.extractUrlBase(e):n.path,a=new hi(n.manager);a.setPath(n.path),a.setRequestHeader(n.requestHeader),a.setWithCredentials(n.withCredentials),a.load(e,(function(i){try{t(n.parse(i,s))}catch(t){r?r(t):console.error(t),n.manager.itemError(e)}}),i,r)}parse(e,t){function i(e,t){let i=[],r=e.childNodes;for(let e=0,n=r.length;e0&&t.push(new oo(r+".position",n,s)),a.length>0&&t.push(new Oa(r+".quaternion",n,a)),o.length>0&&t.push(new oo(r+".scale",n,o)),t}function _(e,t,i){let r,n,s,a=!0;for(n=0,s=e.length;n=0;){let r=e[t];if(null!==r.value[i])return r;t--}return null}function w(e,t,i){for(;t>>0));t="tga"===(i=i.toLowerCase(),i)?Je:Ke;return t}(n);if(void 0!==i){let r=i.load(n),s=e.extra;if(void 0!==s&&void 0!==s.technique&&!1===o(s.technique)){let e=s.technique;r.wrapS=e.wrapU?gn:mn,r.wrapT=e.wrapV?gn:mn,r.offset.set(e.offsetU||0,e.offsetV||0),r.repeat.set(e.repeatU||1,e.repeatV||1)}else r.wrapS=gn,r.wrapT=gn;return null!==t&&(r.encoding=t),r}return console.warn("THREE.ColladaLoader: Loader for texture %s not found.",n),null}return console.warn("THREE.ColladaLoader: Couldn't create texture with ID:",e.id),null}t.name=e.name||"";let s=r.parameters;for(let e in s){let i=s[e];switch(e){case"diffuse":i.color&&t.color.fromArray(i.color),i.texture&&(t.map=n(i.texture,gr));break;case"specular":i.color&&t.specular&&t.specular.fromArray(i.color),i.texture&&(t.specularMap=n(i.texture));break;case"bump":i.texture&&(t.normalMap=n(i.texture));break;case"ambient":i.texture&&(t.lightMap=n(i.texture,gr));break;case"shininess":i.float&&t.shininess&&(t.shininess=i.float);break;case"emission":i.color&&t.emissive&&t.emissive.fromArray(i.color),i.texture&&(t.emissiveMap=n(i.texture,gr))}}t.color.convertSRGBToLinear(),t.specular&&t.specular.convertSRGBToLinear(),t.emissive&&t.emissive.convertSRGBToLinear();let a=s.transparent,l=s.transparency;if(void 0===l&&a&&(l={float:1}),void 0===a&&l&&(a={opaque:"A_ONE",data:{color:[1,1,1,1]}}),a&&l)if(a.data.texture)t.transparent=!0;else{let e=a.data.color;switch(a.opaque){case"A_ONE":t.opacity=e[3]*l.float;break;case"RGB_ZERO":t.opacity=1-e[0]*l.float;break;case"A_ZERO":t.opacity=1-e[3]*l.float;break;case"RGB_ONE":t.opacity=e[0]*l.float;break;default:console.warn('THREE.ColladaLoader: Invalid opaque type "%s" of transparent tag.',a.opaque)}t.opacity<1&&(t.transparent=!0)}if(void 0!==r.extra&&void 0!==r.extra.technique){let e=r.extra.technique;for(let i in e){let r=e[i];switch(i){case"double_sided":t.side=1===r?yi:tn;break;case"bump":t.normalMap=n(r.texture),t.normalScale=new le(1,1)}}}return t}function $(e){return p(nt.materials[e],K)}function J(e){for(let t=0;t0?i+o:i;t.inputs[l]={id:e,offset:n},t.stride=Math.max(t.stride,n+1),"TEXCOORD"===i&&(t.hasUV=!0);break;case"vcount":t.vcount=s(r.textContent);break;case"p":t.p=s(r.textContent)}}return t}function ce(e){let t=0;for(let i=0,r=e.length;i0&&t0&&d.setAttribute("position",new dt(n.array,n.stride)),s.array.length>0&&d.setAttribute("normal",new dt(s.array,s.stride)),l.array.length>0&&d.setAttribute("color",new dt(l.array,l.stride)),a.array.length>0&&d.setAttribute("uv",new dt(a.array,a.stride)),o.array.length>0&&d.setAttribute("uv2",new dt(o.array,o.stride)),h.length>0&&d.setAttribute("skinIndex",new dt(h,u)),c.length>0&&d.setAttribute("skinWeight",new dt(c,p)),r.data=d,r.type=e[0].type,r.materialKeys=f,r}function fe(e,t,i,r,n=!1){let s=e.p,a=e.stride,o=e.vcount;function l(e){let t=s[e+i]*u,a=t+u;for(;t4)for(let t=1,r=i-2;t<=r;t++){let i=e+a*t,r=e+a*(t+1);l(e+0*a),l(i),l(r)}e+=a*i}}else for(let e=0,t=s.length;e=t.limits.max&&(t.static=!0),t.middlePosition=(t.limits.min+t.limits.max)/2,t}function xe(e){let t={sid:e.getAttribute("sid"),name:e.getAttribute("name")||"",attachments:[],transforms:[]};for(let i=0;ir.limits.max||t{this.decodeDracoFile(e,t).catch(r)}),i,r)}decodeDracoFile(e,t,i,r){let n={attributeIDs:i||this.defaultAttributeIDs,attributeTypes:r||this.defaultAttributeTypes,useUniqueIDs:!!i};return this.decodeGeometry(e,n).then(t)}decodeGeometry(e,t){let i=JSON.stringify(t);if(bk.has(e)){let t=bk.get(e);if(t.key===i)return t.promise;if(0===e.byteLength)throw new Error("THREE.DRACOLoader: Unable to re-decode a buffer with different settings. Buffer has already been transferred.")}let r,n=this.workerNextTaskID++,s=e.byteLength,a=this._getWorker(n,s).then((i=>(r=i,new Promise(((i,s)=>{r._callbacks[n]={resolve:i,reject:s},r.postMessage({type:"decode",id:n,taskConfig:t,buffer:e},[e])}))))).then((e=>this._createGeometry(e.geometry)));return a.catch((()=>!0)).then((()=>{r&&n&&this._releaseTask(r,n)})),bk.set(e,{key:i,promise:a}),a}_createGeometry(e){let t=new lt;e.index&&t.setIndex(new Wt(e.index.array,1));for(let i=0;i{i.load(e,t,void 0,r)}))}preload(){return this._initDecoder(),this}_initDecoder(){if(this.decoderPending)return this.decoderPending;let e="object"!=typeof WebAssembly||"js"===this.decoderConfig.type,t=[];return e?t.push(this._loadLibrary("draco_decoder.js","text")):(t.push(this._loadLibrary("draco_wasm_wrapper.js","text")),t.push(this._loadLibrary("draco_decoder.wasm","arraybuffer"))),this.decoderPending=Promise.all(t).then((t=>{let i=t[0];e||(this.decoderConfig.wasmBinary=t[1]);let r=f1t.toString(),n=["/* draco decoder */",i,"","/* worker */",r.substring(r.indexOf("{")+1,r.lastIndexOf("}"))].join("\n");this.workerSourceURL=URL.createObjectURL(new Blob([n]))})),this.decoderPending}_getWorker(e,t){return this._initDecoder().then((()=>{if(this.workerPool.lengtht._taskLoad?-1:1}));let i=this.workerPool[this.workerPool.length-1];return i._taskCosts[e]=t,i._taskLoad+=t,i}))}_releaseTask(e,t){e._taskLoad-=e._taskCosts[t],delete e._callbacks[t],delete e._taskCosts[t]}debug(){console.log("Task load: ",this.workerPool.map((e=>e._taskLoad)))}dispose(){for(let e=0;e{let t=e.draco,a=new t.Decoder,o=new t.DecoderBuffer;o.Init(new Int8Array(r),r.byteLength);try{let e=function(e,t,r,n){let s,a,o=n.attributeIDs,l=n.attributeTypes,h=t.GetEncodedGeometryType(r);if(h===e.TRIANGULAR_MESH)s=new e.Mesh,a=t.DecodeBufferToMesh(r,s);else{if(h!==e.POINT_CLOUD)throw new Error("THREE.DRACOLoader: Unexpected geometry type.");s=new e.PointCloud,a=t.DecodeBufferToPointCloud(r,s)}if(!a.ok()||0===s.ptr)throw new Error("THREE.DRACOLoader: Decoding failed: "+a.error_msg());let u={index:null,attributes:[]};for(let r in o){let a,h,c=self[l[r]];if(n.useUniqueIDs)h=o[r],a=t.GetAttributeByUniqueId(s,h);else{if(h=t.GetAttributeId(s,e[o[r]]),-1===h)continue;a=t.GetAttribute(s,h)}u.attributes.push(i(e,t,s,r,c,a))}return h===e.TRIANGULAR_MESH&&(u.index=function(e,t,i){let r=3*i.num_faces(),n=4*r,s=e._malloc(n);t.GetTrianglesUInt32Array(i,n,s);let a=new Uint32Array(e.HEAPF32.buffer,s,r).slice();return e._free(s),{array:a,itemSize:1}}(e,t,s)),e.destroy(s),u}(t,a,o,s),r=e.attributes.map((e=>e.array.buffer));e.index&&r.push(e.index.array.buffer),self.postMessage({type:"decode",id:n.id,geometry:e},r)}catch(e){console.error(e),self.postMessage({type:"error",id:n.id,error:e.message})}finally{t.destroy(o),t.destroy(a)}}))}}}var Kde=function(e){return URL.createObjectURL(new Blob([e],{type:"text/javascript"}))},m1t=function(e){return new Worker(e)};try{URL.revokeObjectURL(Kde(""))}catch(e){Kde=function(e){return"data:application/javascript;charset=UTF-8,"+encodeURI(e)},m1t=function(e){return new Worker(e,{type:"module"})}}var kl=Uint8Array,Af=Uint16Array,_k=Uint32Array,Jde=new kl([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]),Qde=new kl([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]),g1t=new kl([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),efe=function(e,t){for(var i=new Af(31),r=0;r<31;++r)i[r]=t+=1<>>1|(21845&Gi)<<1))>>>2|(13107&Vp)<<2))>>>4|(3855&Vp)<<4,Sk[Gi]=((65280&Vp)>>>8|(255&Vp)<<8)>>>1;var Vp,iI=function(e,t,i){for(var r=e.length,n=0,s=new Af(t);n>>l]=h}else for(a=new Af(r),n=0;n>>15-e[n]);return a},nI=new kl(288);for(Gi=0;Gi<144;++Gi)nI[Gi]=8;for(Gi=144;Gi<256;++Gi)nI[Gi]=9;for(Gi=256;Gi<280;++Gi)nI[Gi]=7;for(Gi=280;Gi<288;++Gi)nI[Gi]=8;var Gi,nfe=new kl(32);for(Gi=0;Gi<32;++Gi)nfe[Gi]=5;var T1t=iI(nI,9,1),E1t=iI(nfe,5,1),xk=function(e){for(var t=e[0],i=1;it&&(t=e[i]);return t},Uc=function(e,t,i){var r=t/8|0;return(e[r]|e[r+1]<<8)>>(7&t)&i},Ik=function(e,t){var i=t/8|0;return(e[i]|e[i+1]<<8|e[i+2]<<16)>>(7&t)},b1t=function(e){return(e/8|0)+(7&e&&1)},x1t=function(e,t,i){(null==t||t<0)&&(t=0),(null==i||i>e.length)&&(i=e.length);var r=new(e instanceof Af?Af:e instanceof _k?_k:kl)(i-t);return r.set(e.subarray(t,i)),r},I1t=function(e,t,i){var r=e.length;if(!r||i&&!i.l&&r<5)return t||new kl(0);var n=!t||i,s=!i||i.i;i||(i={}),t||(t=new kl(3*r));var a=function(e){var i=t.length;if(e>i){var r=new kl(Math.max(2*i,e));r.set(t),t=r}},o=i.f||0,l=i.p||0,h=i.b||0,u=i.l,c=i.d,p=i.m,d=i.n,f=8*r;do{if(!u){i.f=o=Uc(e,l,1);var m=Uc(e,l+1,3);if(l+=3,!m){var g=e[(M=b1t(l)+4)-4]|e[M-3]<<8,y=M+g;if(y>r){if(s)throw"unexpected EOF";break}n&&a(h+g),t.set(e.subarray(M,y),h),i.b=h+=g,i.p=l=8*y;continue}if(1==m)u=T1t,c=E1t,p=9,d=5;else{if(2!=m)throw"invalid block type";var v=Uc(e,l,31)+257,T=Uc(e,l+10,15)+4,x=v+Uc(e,l+5,31)+1;l+=14;for(var b=new kl(x),_=new kl(19),E=0;E>>4)<16)b[E++]=M;else{var D=0,O=0;for(16==M?(O=3+Uc(e,l,3),l+=2,D=b[E-1]):17==M?(O=3+Uc(e,l,7),l+=3):18==M&&(O=11+Uc(e,l,127),l+=7);O--;)b[E++]=D}}var R=b.subarray(0,v),C=b.subarray(v);p=xk(R),d=xk(C),u=iI(R,p,1),c=iI(C,d,1)}if(l>f){if(s)throw"unexpected EOF";break}}n&&a(h+131072);for(var N=(1<>>4;if((l+=15&D)>f){if(s)throw"unexpected EOF";break}if(!D)throw"invalid length/literal";if(F<256)t[h++]=F;else{if(256==F){L=l,u=null;break}var U=F-254;if(F>264){var k=Jde[E=F-257];U=Uc(e,l,(1<>>4;if(!B)throw"invalid distance";l+=15&B;C=y1t[G];if(G>3){k=Qde[G];C+=Ik(e,l)&(1<f){if(s)throw"unexpected EOF";break}n&&a(h+131072);for(var z=h+U;h>>4>7||(e[0]<<8|e[1])%31)throw"invalid zlib data";if(32&e[1])throw"invalid zlib data: preset dictionaries not supported"};function sfe(e,t){return I1t((S1t(e),e.subarray(2,-4)),t)}var w1t="undefined"!=typeof TextDecoder&&new TextDecoder,R1t=0;try{w1t.decode(_1t,{stream:!0}),R1t=1}catch(e){}function afe(e,t,i){let r=i.length-e-1;if(t>=i[r])return r-1;if(t<=i[e])return e;let n=e,s=r,a=Math.floor((n+s)/2);for(;t=i[a+1];)t=s&&(l[n][0]=l[t][0]/o[u+1][h],r=l[n][0]*o[h][u]);let c=e-1<=u?s-1:i-e;for(let e=h>=-1?1:-h;e<=c;++e)l[n][e]=(l[t][e]-l[t][e-1])/o[u+1][h+e],r+=l[n][e]*o[h+e][u];e<=u&&(l[n][s]=-l[t][s-1]/o[u+1][e],r+=l[n][s]*o[e][u]),a[s][e]=r;let p=t;t=n,n=p}}let u=i;for(let e=1;e<=r;++e){for(let t=0;t<=i;++t)a[e][t]*=u;u*=i-e}return a}function A1t(e,t,i,r,n){let s=n0,s="string"==typeof n.Content&&""!==n.Content;if(e||s){let e=this.parseImage(i[r]);t[n.RelativeFilename||n.Filename]=e}}}}for(let i in e){let r=e[i];void 0!==t[r]?e[i]=t[r]:e[i]=e[i].split("\\").pop()}return e}parseImage(e){let t,i=e.Content,r=e.RelativeFilename||e.Filename,n=r.slice(r.lastIndexOf(".")+1).toLowerCase();switch(n){case"bmp":t="image/bmp";break;case"jpg":case"jpeg":t="image/jpeg";break;case"png":t="image/png";break;case"tif":t="image/tiff";break;case"tga":null===this.manager.getHandler(".tga")&&console.warn("FBXLoader: TGA loader not found, skipping ",r),t="image/tga";break;default:return void console.warn('FBXLoader: Image type "'+n+'" is not supported.')}if("string"==typeof i)return"data:"+t+";base64,"+i;{let e=new Uint8Array(i);return window.URL.createObjectURL(new Blob([e],{type:t}))}}parseTextures(e){let t=new Map;if("Texture"in pi.Objects){let i=pi.Objects.Texture;for(let r in i){let n=this.parseTexture(i[r],e);t.set(parseInt(r),n)}}return t}parseTexture(e,t){let i=this.loadTexture(e,t);i.ID=e.id,i.name=e.attrName;let r=e.WrapModeU,n=e.WrapModeV,s=void 0!==r?r.value:0,a=void 0!==n?n.value:0;if(i.wrapS=0===s?gn:mn,i.wrapT=0===a?gn:mn,"Scaling"in e){let t=e.Scaling.value;i.repeat.x=t[0],i.repeat.y=t[1]}if("Translation"in e){let t=e.Translation.value;i.offset.x=t[0],i.offset.y=t[1]}return i}loadTexture(e,t){let i,r=this.textureLoader.path,n=ss.get(e.id).children;void 0!==n&&n.length>0&&void 0!==t[n[0].ID]&&(i=t[n[0].ID],(0===i.indexOf("blob:")||0===i.indexOf("data:"))&&this.textureLoader.setPath(void 0));let s,a=e.FileName.slice(-3).toLowerCase();if("tga"===a){let t=this.manager.getHandler(".tga");null===t?(console.warn("FBXLoader: TGA loader not found, creating placeholder texture for",e.RelativeFilename),s=new Bi):(t.setPath(this.textureLoader.path),s=t.load(i))}else"psd"===a?(console.warn("FBXLoader: PSD textures are not supported, creating placeholder texture for",e.RelativeFilename),s=new Bi):s=this.textureLoader.load(i);return this.textureLoader.setPath(r),s}parseMaterials(e){let t=new Map;if("Material"in pi.Objects){let i=pi.Objects.Material;for(let r in i){let n=this.parseMaterial(i[r],e);null!==n&&t.set(parseInt(r),n)}}return t}parseMaterial(e,t){let i=e.id,r=e.attrName,n=e.ShadingModel;if("object"==typeof n&&(n=n.value),!ss.has(i))return null;let s,a=this.parseParameters(e,t,i);switch(n.toLowerCase()){case"phong":s=new bs;break;case"lambert":s=new ao;break;default:console.warn('THREE.FBXLoader: unknown material type "%s". Defaulting to MeshPhongMaterial.',n),s=new bs}return s.setValues(a),s.name=r,s}parseParameters(e,t,i){let r={};e.BumpFactor&&(r.bumpScale=e.BumpFactor.value),e.Diffuse?r.color=(new je).fromArray(e.Diffuse.value):e.DiffuseColor&&("Color"===e.DiffuseColor.type||"ColorRGB"===e.DiffuseColor.type)&&(r.color=(new je).fromArray(e.DiffuseColor.value)),e.DisplacementFactor&&(r.displacementScale=e.DisplacementFactor.value),e.Emissive?r.emissive=(new je).fromArray(e.Emissive.value):e.EmissiveColor&&("Color"===e.EmissiveColor.type||"ColorRGB"===e.EmissiveColor.type)&&(r.emissive=(new je).fromArray(e.EmissiveColor.value)),e.EmissiveFactor&&(r.emissiveIntensity=parseFloat(e.EmissiveFactor.value)),e.Opacity&&(r.opacity=parseFloat(e.Opacity.value)),r.opacity<1&&(r.transparent=!0),e.ReflectionFactor&&(r.reflectivity=e.ReflectionFactor.value),e.Shininess&&(r.shininess=e.Shininess.value),e.Specular?r.specular=(new je).fromArray(e.Specular.value):e.SpecularColor&&"Color"===e.SpecularColor.type&&(r.specular=(new je).fromArray(e.SpecularColor.value));let n=this;return ss.get(i).children.forEach((function(e){let i=e.relationship;switch(i){case"Bump":r.bumpMap=n.getTexture(t,e.ID);break;case"Maya|TEX_ao_map":r.aoMap=n.getTexture(t,e.ID);break;case"DiffuseColor":case"Maya|TEX_color_map":r.map=n.getTexture(t,e.ID),void 0!==r.map&&(r.map.encoding=gr);break;case"DisplacementColor":r.displacementMap=n.getTexture(t,e.ID);break;case"EmissiveColor":r.emissiveMap=n.getTexture(t,e.ID),void 0!==r.emissiveMap&&(r.emissiveMap.encoding=gr);break;case"NormalMap":case"Maya|TEX_normal_map":r.normalMap=n.getTexture(t,e.ID);break;case"ReflectionColor":r.envMap=n.getTexture(t,e.ID),void 0!==r.envMap&&(r.envMap.mapping=vg,r.envMap.encoding=gr);break;case"SpecularColor":r.specularMap=n.getTexture(t,e.ID),void 0!==r.specularMap&&(r.specularMap.encoding=gr);break;case"TransparentColor":case"TransparencyFactor":r.alphaMap=n.getTexture(t,e.ID),r.transparent=!0;break;default:console.warn("THREE.FBXLoader: %s map is not supported in three.js, skipping texture.",i)}})),r}getTexture(e,t){return"LayeredTexture"in pi.Objects&&t in pi.Objects.LayeredTexture&&(console.warn("THREE.FBXLoader: layered textures are not supported in three.js. Discarding all but first layer."),t=ss.get(t).children[0].ID),e.get(t)}parseDeformers(){let e={},t={};if("Deformer"in pi.Objects){let i=pi.Objects.Deformer;for(let r in i){let n=i[r],s=ss.get(parseInt(r));if("Skin"===n.attrType){let t=this.parseSkeleton(s,i);t.ID=r,s.parents.length>1&&console.warn("THREE.FBXLoader: skeleton attached to more than one geometry is not supported."),t.geometryID=s.parents[0].ID,e[r]=t}else if("BlendShape"===n.attrType){let e={id:r};e.rawTargets=this.parseMorphTargets(s,i),e.id=r,s.parents.length>1&&console.warn("THREE.FBXLoader: morph target attached to more than one geometry is not supported."),t[r]=e}}}return{skeletons:e,morphTargets:t}}parseSkeleton(e,t){let i=[];return e.children.forEach((function(e){let r=t[e.ID];if("Cluster"!==r.attrType)return;let n={ID:e.ID,indices:[],weights:[],transformLink:(new Be).fromArray(r.TransformLink.a)};"Indexes"in r&&(n.indices=r.Indexes.a,n.weights=r.Weights.a),i.push(n)})),{rawBones:i,bones:[]}}parseMorphTargets(e,t){let i=[];for(let r=0;r1?s=a:a.length>0?s=a[0]:(s=new bs({color:13421772}),a.push(s)),"color"in n.attributes&&a.forEach((function(e){e.vertexColors=!0})),n.FBX_Deformer?(r=new ku(n,s),r.normalizeSkinWeights()):r=new rt(n,s),r}createCurve(e,t){let i=e.children.reduce((function(e,i){return t.has(i.ID)&&(e=t.get(i.ID)),e}),null),r=new vr({color:3342591,linewidth:1});return new Ir(i,r)}getTransformData(e,t){let i={};"InheritType"in t&&(i.inheritType=parseInt(t.InheritType.value)),i.eulerOrder="RotationOrder"in t?pfe(t.RotationOrder.value):"ZYX","Lcl_Translation"in t&&(i.translation=t.Lcl_Translation.value),"PreRotation"in t&&(i.preRotation=t.PreRotation.value),"Lcl_Rotation"in t&&(i.rotation=t.Lcl_Rotation.value),"PostRotation"in t&&(i.postRotation=t.PostRotation.value),"Lcl_Scaling"in t&&(i.scale=t.Lcl_Scaling.value),"ScalingOffset"in t&&(i.scalingOffset=t.ScalingOffset.value),"ScalingPivot"in t&&(i.scalingPivot=t.ScalingPivot.value),"RotationOffset"in t&&(i.rotationOffset=t.RotationOffset.value),"RotationPivot"in t&&(i.rotationPivot=t.RotationPivot.value),e.userData.transformData=i}setLookAtProperties(e,t){"LookAtProperty"in t&&ss.get(e.ID).children.forEach((function(t){if("LookAtProperty"===t.relationship){let i=pi.Objects.Model[t.ID];if("Lcl_Translation"in i){let t=i.Lcl_Translation.value;void 0!==e.target?(e.target.position.fromArray(t),mo.add(e.target)):e.lookAt((new A).fromArray(t))}}}))}bindSkeleton(e,t,i){let r=this.parsePoseNodes();for(let n in e){let s=e[n];ss.get(parseInt(s.ID)).parents.forEach((function(e){if(t.has(e.ID)){let t=e.ID;ss.get(t).parents.forEach((function(e){i.has(e.ID)&&i.get(e.ID).bind(new Dl(s.bones),r[e.ID])}))}}))}}parsePoseNodes(){let e={};if("Pose"in pi.Objects){let t=pi.Objects.Pose;for(let i in t)if("BindPose"===t[i].attrType&&t[i].NbPoseNodes>0){let r=t[i].PoseNode;Array.isArray(r)?r.forEach((function(t){e[t.Node]=(new Be).fromArray(t.Matrix.a)})):e[r.Node]=(new Be).fromArray(r.Matrix.a)}}return e}createAmbientLight(){if("GlobalSettings"in pi&&"AmbientColor"in pi.GlobalSettings){let e=pi.GlobalSettings.AmbientColor.value,t=e[0],i=e[1],r=e[2];if(0!==t||0!==i||0!==r){let e=new je(t,i,r);mo.add(new Pl(e,1))}}}},Dk=class{constructor(){this.negativeMaterialIndices=!1}parse(e){let t=new Map;if("Geometry"in pi.Objects){let i=pi.Objects.Geometry;for(let r in i){let n=ss.get(parseInt(r)),s=this.parseGeometry(n,i[r],e);t.set(parseInt(r),s)}}return!0===this.negativeMaterialIndices&&console.warn("THREE.FBXLoader: The FBX file contains invalid (negative) material indices. The asset might not render as expected."),t}parseGeometry(e,t,i){switch(t.attrType){case"Mesh":return this.parseMeshGeometry(e,t,i);case"NurbsCurve":return this.parseNurbsGeometry(t)}}parseMeshGeometry(e,t,i){let r=i.skeletons,n=[],s=e.parents.map((function(e){return pi.Objects.Model[e.ID]}));if(0===s.length)return;let a=e.children.reduce((function(e,t){return void 0!==r[t.ID]&&(e=r[t.ID]),e}),null);e.children.forEach((function(e){void 0!==i.morphTargets[e.ID]&&n.push(i.morphTargets[e.ID])}));let o=s[0],l={};"RotationOrder"in o&&(l.eulerOrder=pfe(o.RotationOrder.value)),"InheritType"in o&&(l.inheritType=parseInt(o.InheritType.value)),"GeometricTranslation"in o&&(l.translation=o.GeometricTranslation.value),"GeometricRotation"in o&&(l.rotation=o.GeometricRotation.value),"GeometricScaling"in o&&(l.scale=o.GeometricScaling.value);let h=hfe(l);return this.genGeometry(t,a,n,h)}genGeometry(e,t,i,r){let n=new lt;e.attrName&&(n.name=e.attrName);let s=this.parseGeoNode(e,t),a=this.genBuffers(s),o=new dt(a.vertex,3);if(o.applyMatrix4(r),n.setAttribute("position",o),a.colors.length>0&&n.setAttribute("color",new dt(a.colors,3)),t&&(n.setAttribute("skinIndex",new yg(a.weightsIndices,4)),n.setAttribute("skinWeight",new dt(a.vertexWeights,4)),n.FBX_Deformer=t),a.normal.length>0){let e=(new Ni).getNormalMatrix(r),t=new dt(a.normal,3);t.applyNormalMatrix(e),n.setAttribute("normal",t)}if(a.uvs.forEach((function(e,t){let i="uv"+(t+1).toString();0===t&&(i="uv"),n.setAttribute(i,new dt(a.uvs[t],2))})),s.material&&"AllSame"!==s.material.mappingType){let e=a.materialIndex[0],t=0;if(a.materialIndex.forEach((function(i,r){i!==e&&(n.addGroup(t,r-t,e),e=i,t=r)})),n.groups.length>0){let t=n.groups[n.groups.length-1],i=t.start+t.count;i!==a.materialIndex.length&&n.addGroup(i,a.materialIndex.length-i,e)}0===n.groups.length&&n.addGroup(0,a.materialIndex.length,a.materialIndex[0])}return this.addMorphTargets(n,e,i,r),n}parseGeoNode(e,t){let i={};if(i.vertexPositions=void 0!==e.Vertices?e.Vertices.a:[],i.vertexIndices=void 0!==e.PolygonVertexIndex?e.PolygonVertexIndex.a:[],e.LayerElementColor&&(i.color=this.parseVertexColors(e.LayerElementColor[0])),e.LayerElementMaterial&&(i.material=this.parseMaterialIndices(e.LayerElementMaterial[0])),e.LayerElementNormal&&(i.normal=this.parseNormals(e.LayerElementNormal[0])),e.LayerElementUV){i.uv=[];let t=0;for(;e.LayerElementUV[t];)e.LayerElementUV[t].UV&&i.uv.push(this.parseUVs(e.LayerElementUV[t])),t++}return i.weightTable={},null!==t&&(i.skeleton=t,t.rawBones.forEach((function(e,t){e.indices.forEach((function(r,n){void 0===i.weightTable[r]&&(i.weightTable[r]=[]),i.weightTable[r].push({id:t,weight:e.weights[n]})}))}))),i}genBuffers(e){let t={vertex:[],normal:[],colors:[],uvs:[],materialIndex:[],vertexWeights:[],weightsIndices:[]},i=0,r=0,n=!1,s=[],a=[],o=[],l=[],h=[],u=[],c=this;return e.vertexIndices.forEach((function(p,d){let f,m=!1;p<0&&(p^=-1,m=!0);let g=[],y=[];if(s.push(3*p,3*p+1,3*p+2),e.color){let t=uA(d,i,p,e.color);o.push(t[0],t[1],t[2])}if(e.skeleton){if(void 0!==e.weightTable[p]&&e.weightTable[p].forEach((function(e){y.push(e.weight),g.push(e.id)})),y.length>4){n||(console.warn("THREE.FBXLoader: Vertex has more than 4 skinning weights assigned to vertex. Deleting additional weights."),n=!0);let e=[0,0,0,0],t=[0,0,0,0];y.forEach((function(i,r){let n=i,s=g[r];t.forEach((function(t,i,r){if(n>t){r[i]=n,n=t;let a=e[i];e[i]=s,s=a}}))})),g=e,y=t}for(;y.length<4;)y.push(0),g.push(0);for(let e=0;e<4;++e)h.push(y[e]),u.push(g[e])}if(e.normal){let t=uA(d,i,p,e.normal);a.push(t[0],t[1],t[2])}e.material&&"AllSame"!==e.material.mappingType&&(f=uA(d,i,p,e.material)[0],f<0&&(c.negativeMaterialIndices=!0,f=0)),e.uv&&e.uv.forEach((function(e,t){let r=uA(d,i,p,e);void 0===l[t]&&(l[t]=[]),l[t].push(r[0]),l[t].push(r[1])})),r++,m&&(r>4&&console.warn("THREE.FBXLoader: Polygons with more than four sides are not supported. Make sure to triangulate the geometry during export."),c.genFace(t,e,s,f,a,o,l,h,u,r),i++,r=0,s=[],a=[],o=[],l=[],h=[],u=[])})),t}genFace(e,t,i,r,n,s,a,o,l,h){for(let u=2;u1&&console.warn("THREE.FBXLoader: Encountered an animation stack with multiple layers, this is currently not supported. Ignoring subsequent layers.");let s=e.get(n[0].ID);i[r]={name:t[r].attrName,layer:s}}return i}addClip(e){let t=[],i=this;return e.layer.forEach((function(e){t=t.concat(i.generateTracks(e))})),new lo(e.name,-1,t)}generateTracks(e){let t=[],i=new A,r=new Hr,n=new A;if(e.transform&&e.transform.decompose(i,r,n),i=i.toArray(),r=(new xr).setFromQuaternion(r,e.eulerOrder).toArray(),n=n.toArray(),void 0!==e.T&&Object.keys(e.T.curves).length>0){let r=this.generateVectorTrack(e.modelName,e.T.curves,i,"position");void 0!==r&&t.push(r)}if(void 0!==e.R&&Object.keys(e.R.curves).length>0){let i=this.generateRotationTrack(e.modelName,e.R.curves,r,e.preRotation,e.postRotation,e.eulerOrder);void 0!==i&&t.push(i)}if(void 0!==e.S&&Object.keys(e.S.curves).length>0){let i=this.generateVectorTrack(e.modelName,e.S.curves,n,"scale");void 0!==i&&t.push(i)}if(void 0!==e.DeformPercent){let i=this.generateMorphTrack(e);void 0!==i&&t.push(i)}return t}generateVectorTrack(e,t,i,r){let n=this.getTimesForAllAxes(t),s=this.getKeyframeTrackValues(n,t,i);return new oo(e+"."+r,n,s)}generateRotationTrack(e,t,i,r,n,s){void 0!==t.x&&(this.interpolateRotations(t.x),t.x.values=t.x.values.map(_r.degToRad)),void 0!==t.y&&(this.interpolateRotations(t.y),t.y.values=t.y.values.map(_r.degToRad)),void 0!==t.z&&(this.interpolateRotations(t.z),t.z.values=t.z.values.map(_r.degToRad));let a=this.getTimesForAllAxes(t),o=this.getKeyframeTrackValues(a,t,i);void 0!==r&&((r=r.map(_r.degToRad)).push(s),r=(new xr).fromArray(r),r=(new Hr).setFromEuler(r)),void 0!==n&&((n=n.map(_r.degToRad)).push(s),n=(new xr).fromArray(n),n=(new Hr).setFromEuler(n).invert());let l=new Hr,h=new xr,u=[];for(let e=0;e1){let e=1,i=t[0];for(let r=1;r=180){let s=n/180,a=r/s,o=i+a,l=e.times[t-1],h=(e.times[t]-l)/s,u=l+h,c=[],p=[];for(;u1&&(i=e[1].replace(/^(\w+)::/,""),r=e[2]),{id:t,name:i,type:r}}parseNodeProperty(e,t,i){let r=t[1].replace(/^"/,"").replace(/"$/,"").trim(),n=t[2].replace(/^"/,"").replace(/"$/,"").trim();"Content"===r&&","===n&&(n=i.replace(/"/g,"").replace(/,$/,"").trim());let s=this.getCurrentNode();if("Properties70"!==s.name){if("C"===r){let e=n.split(",").slice(1),t=parseInt(e[0]),i=parseInt(e[1]),a=n.split(",").slice(3);a=a.map((function(e){return e.trim().replace(/^"/,"")})),r="connections",n=[t,i],B1t(n,a),void 0===s[r]&&(s[r]=[])}"Node"===r&&(s.id=n),r in s&&Array.isArray(s[r])?s[r].push(n):"a"!==r?s[r]=n:s.a=n,this.setCurrentProp(s,r),"a"===r&&","!==n.slice(-1)&&(s.a=Rk(n))}else this.parseNodeSpecialProperty(e,r,n)}parseNodePropertyContinued(e){let t=this.getCurrentNode();t.a+=e,","!==e.slice(-1)&&(t.a=Rk(t.a))}parseNodeSpecialProperty(e,t,i){let r=i.split('",').map((function(e){return e.trim().replace(/^\"/,"").replace(/\s/,"_")})),n=r[0],s=r[1],a=r[2],o=r[3],l=r[4];switch(s){case"int":case"enum":case"bool":case"ULongLong":case"double":case"Number":case"FieldOfView":l=parseFloat(l);break;case"Color":case"ColorRGB":case"Vector3D":case"Lcl_Translation":case"Lcl_Rotation":case"Lcl_Scaling":l=Rk(l)}this.getPrevNode()[n]={type:s,type2:a,flag:o,value:l},this.setCurrentProp(this.getPrevNode(),n)}},Ok=class{parse(e){let t=new pA(e);t.skip(23);let i=t.getUint32();if(i<6400)throw new Error("THREE.FBXLoader: FBX version not supported, FileVersion: "+i);let r=new dA;for(;!this.endOfContent(t);){let e=this.parseNode(t,i);null!==e&&r.add(e.name,e)}return r}endOfContent(e){return e.size()%16==0?(e.getOffset()+160+16&-16)>=e.size():e.getOffset()+160+16>=e.size()}parseNode(e,t){let i={},r=t>=7500?e.getUint64():e.getUint32(),n=t>=7500?e.getUint64():e.getUint32();t>=7500?e.getUint64():e.getUint32();let s=e.getUint8(),a=e.getString(s);if(0===r)return null;let o=[];for(let t=0;t0?o[0]:"",h=o.length>1?o[1]:"",u=o.length>2?o[2]:"";for(i.singleProperty=1===n&&e.getOffset()===r;r>e.getOffset();){let r=this.parseNode(e,t);null!==r&&this.parseSubNode(a,i,r)}return i.propertyList=o,"number"==typeof l&&(i.id=l),""!==h&&(i.attrName=h),""!==u&&(i.attrType=u),""!==a&&(i.name=a),i}parseSubNode(e,t,i){if(!0===i.singleProperty){let e=i.propertyList[0];Array.isArray(e)?(t[i.name]=i,i.a=e):t[i.name]=e}else if("Connections"===e&&"C"===i.name){let e=[];i.propertyList.forEach((function(t,i){0!==i&&e.push(t)})),void 0===t.connections&&(t.connections=[]),t.connections.push(e)}else if("Properties70"===i.name)Object.keys(i).forEach((function(e){t[e]=i[e]}));else if("Properties70"===e&&"P"===i.name){let e,r=i.propertyList[0],n=i.propertyList[1],s=i.propertyList[2],a=i.propertyList[3];0===r.indexOf("Lcl ")&&(r=r.replace("Lcl ","Lcl_")),0===n.indexOf("Lcl ")&&(n=n.replace("Lcl ","Lcl_")),e="Color"===n||"ColorRGB"===n||"Vector"===n||"Vector3D"===n||0===n.indexOf("Lcl_")?[i.propertyList[4],i.propertyList[5],i.propertyList[6]]:i.propertyList[4],t[r]={type:n,type2:s,flag:a,value:e}}else void 0===t[i.name]?"number"==typeof i.id?(t[i.name]={},t[i.name][i.id]=i):t[i.name]=i:"PoseNode"===i.name?(Array.isArray(t[i.name])||(t[i.name]=[t[i.name]]),t[i.name].push(i)):void 0===t[i.name][i.id]&&(t[i.name][i.id]=i)}parseProperty(e){let t,i=e.getString(1);switch(i){case"C":return e.getBoolean();case"D":return e.getFloat64();case"F":return e.getFloat32();case"I":return e.getInt32();case"L":return e.getInt64();case"R":return t=e.getUint32(),e.getArrayBuffer(t);case"S":return t=e.getUint32(),e.getString(t);case"Y":return e.getInt16();case"b":case"c":case"d":case"f":case"i":case"l":let r=e.getUint32(),n=e.getUint32(),s=e.getUint32();if(0===n)switch(i){case"b":case"c":return e.getBooleanArray(r);case"d":return e.getFloat64Array(r);case"f":return e.getFloat32Array(r);case"i":return e.getInt32Array(r);case"l":return e.getInt64Array(r)}let a=sfe(new Uint8Array(e.getArrayBuffer(s))),o=new pA(a.buffer);switch(i){case"b":case"c":return o.getBooleanArray(r);case"d":return o.getFloat64Array(r);case"f":return o.getFloat32Array(r);case"i":return o.getInt32Array(r);case"l":return o.getInt64Array(r)}break;default:throw new Error("THREE.FBXLoader: Unknown property type "+i)}}},pA=class{constructor(e,t){this.dv=new DataView(e),this.offset=0,this.littleEndian=void 0===t||t,this._textDecoder=new TextDecoder}getOffset(){return this.offset}size(){return this.dv.buffer.byteLength}skip(e){this.offset+=e}getBoolean(){return 1==(1&this.getUint8())}getBooleanArray(e){let t=[];for(let i=0;i=0&&(i=new Uint8Array(this.dv.buffer,t,r)),this._textDecoder.decode(i)}},dA=class{add(e,t){this[e]=t}};function L1t(e){let t="Kaydara FBX Binary \0";return e.byteLength>=t.length&&t===dfe(e,0,t.length)}function F1t(e){let t=["K","a","y","d","a","r","a","\\","F","B","X","\\","B","i","n","a","r","y","\\","\\"],i=0;function r(t){let r=e[t-1];return e=e.slice(i+t),i++,r}for(let e=0;e=2.0 are supported.")));let l=new r8(n,{path:t||this.resourcePath||"",crossOrigin:this.crossOrigin,requestHeader:this.requestHeader,manager:this.manager,ktx2Loader:this.ktx2Loader,meshoptDecoder:this.meshoptDecoder});l.fileLoader.setRequestHeader(this.requestHeader);for(let e=0;e=0&&void 0===a[t]&&console.warn('THREE.GLTFLoader: Unknown extension "'+t+'".')}}l.setExtensions(s),l.setPlugins(a),l.parse(i,r)}parseAsync(e,t){let i=this;return new Promise((function(r,n){i.parse(e,t,r,n)}))}};function z1t(){let e={};return{get:function(t){return e[t]},add:function(t,i){e[t]=i},remove:function(t){delete e[t]},removeAll:function(){e={}}}}var Oi={KHR_BINARY_GLTF:"KHR_binary_glTF",KHR_DRACO_MESH_COMPRESSION:"KHR_draco_mesh_compression",KHR_LIGHTS_PUNCTUAL:"KHR_lights_punctual",KHR_MATERIALS_CLEARCOAT:"KHR_materials_clearcoat",KHR_MATERIALS_IOR:"KHR_materials_ior",KHR_MATERIALS_SHEEN:"KHR_materials_sheen",KHR_MATERIALS_SPECULAR:"KHR_materials_specular",KHR_MATERIALS_TRANSMISSION:"KHR_materials_transmission",KHR_MATERIALS_IRIDESCENCE:"KHR_materials_iridescence",KHR_MATERIALS_UNLIT:"KHR_materials_unlit",KHR_MATERIALS_VOLUME:"KHR_materials_volume",KHR_TEXTURE_BASISU:"KHR_texture_basisu",KHR_TEXTURE_TRANSFORM:"KHR_texture_transform",KHR_MESH_QUANTIZATION:"KHR_mesh_quantization",KHR_MATERIALS_EMISSIVE_STRENGTH:"KHR_materials_emissive_strength",EXT_TEXTURE_WEBP:"EXT_texture_webp",EXT_MESHOPT_COMPRESSION:"EXT_meshopt_compression",EXT_MESH_GPU_INSTANCING:"EXT_mesh_gpu_instancing"},Lk=class{constructor(e){this.parser=e,this.name=Oi.KHR_LIGHTS_PUNCTUAL,this.cache={refs:{},uses:{}}}_markDefs(){let e=this.parser,t=this.parser.json.nodes||[];for(let i=0,r=t.length;i=0)throw new Error("THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures");return null}return t.loadTextureImage(e,n.source,s)}},qk=class{constructor(e){this.parser=e,this.name=Oi.EXT_TEXTURE_WEBP,this.isSupported=null}loadTexture(e){let t=this.name,i=this.parser,r=i.json,n=r.textures[e];if(!n.extensions||!n.extensions[t])return null;let s=n.extensions[t],a=r.images[s.source],o=i.textureLoader;if(a.uri){let e=i.options.manager.getHandler(a.uri);null!==e&&(o=e)}return this.detectSupport().then((function(n){if(n)return i.loadTextureImage(e,s.source,o);if(r.extensionsRequired&&r.extensionsRequired.indexOf(t)>=0)throw new Error("THREE.GLTFLoader: WebP required by asset but unsupported.");return i.loadTexture(e)}))}detectSupport(){return this.isSupported||(this.isSupported=new Promise((function(e){let t=new Image;t.src="data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA",t.onload=t.onerror=function(){e(1===t.height)}}))),this.isSupported}},Yk=class{constructor(e){this.name=Oi.EXT_MESHOPT_COMPRESSION,this.parser=e}loadBufferView(e){let t=this.parser.json,i=t.bufferViews[e];if(i.extensions&&i.extensions[this.name]){let e=i.extensions[this.name],r=this.parser.getDependency("buffer",e.buffer),n=this.parser.options.meshoptDecoder;if(!n||!n.supported){if(t.extensionsRequired&&t.extensionsRequired.indexOf(this.name)>=0)throw new Error("THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files");return null}return r.then((function(t){let i=e.byteOffset||0,r=e.byteLength||0,s=e.count,a=e.byteStride,o=new Uint8Array(t,i,r);return n.decodeGltfBufferAsync?n.decodeGltfBufferAsync(s,a,o,e.mode,e.filter).then((function(e){return e.buffer})):n.ready.then((function(){let t=new ArrayBuffer(s*a);return n.decodeGltfBuffer(new Uint8Array(t),s,a,o,e.mode,e.filter),t}))}))}return null}},Xk=class{constructor(e){this.name=Oi.EXT_MESH_GPU_INSTANCING,this.parser=e}createNodeMesh(e){let t=this.parser.json,i=t.nodes[e];if(!i.extensions||!i.extensions[this.name]||void 0===i.mesh)return null;let r=t.meshes[i.mesh];for(let e of r.primitives)if(e.mode!==Gl.TRIANGLES&&e.mode!==Gl.TRIANGLE_STRIP&&e.mode!==Gl.TRIANGLE_FAN&&void 0!==e.mode)return null;let n=i.extensions[this.name].attributes,s=[],a={};for(let e in n)s.push(this.parser.getDependency("accessor",n[e]).then((t=>(a[e]=t,a[e]))));return s.length<1?null:(s.push(this.parser.createNodeMesh(e)),Promise.all(s).then((e=>{let t=e.pop(),i=t.isGroup?t.children:[t],r=e[0].count,n=[];for(let e of i){let t=new Be,i=new A,s=new Hr,o=new A(1,1,1),l=new rn(e.geometry,e.material,r);for(let e=0;e0||0===e.search(/^data\:image\/jpeg/)?"image/jpeg":e.search(/\.webp($|\?)/i)>0||0===e.search(/^data\:image\/webp/)?"image/webp":"image/png"}var K1t=new Be,r8=class{constructor(e={},t={}){this.json=e,this.extensions={},this.plugins={},this.options=t,this.cache=new z1t,this.associations=new Map,this.primitiveCache={},this.meshCache={refs:{},uses:{}},this.cameraCache={refs:{},uses:{}},this.lightCache={refs:{},uses:{}},this.sourceCache={},this.textureCache={},this.nodeNamesUsed={};let i=!1,r=!1,n=-1;"undefined"!=typeof navigator&&(i=!0===/^((?!chrome|android).)*safari/i.test(navigator.userAgent),r=navigator.userAgent.indexOf("Firefox")>-1,n=r?navigator.userAgent.match(/Firefox\/([0-9]+)\./)[1]:-1),"undefined"==typeof createImageBitmap||i||r&&n<98?this.textureLoader=new xs(this.options.manager):this.textureLoader=new Ix(this.options.manager),this.textureLoader.setCrossOrigin(this.options.crossOrigin),this.textureLoader.setRequestHeader(this.options.requestHeader),this.fileLoader=new hi(this.options.manager),this.fileLoader.setResponseType("arraybuffer"),"use-credentials"===this.options.crossOrigin&&this.fileLoader.setWithCredentials(!0)}setExtensions(e){this.extensions=e}setPlugins(e){this.plugins=e}parse(e,t){let i=this,r=this.json,n=this.extensions;this.cache.removeAll(),this._invokeAll((function(e){return e._markDefs&&e._markDefs()})),Promise.all(this._invokeAll((function(e){return e.beforeRoot&&e.beforeRoot()}))).then((function(){return Promise.all([i.getDependencies("scene"),i.getDependencies("animation"),i.getDependencies("camera")])})).then((function(t){let s={scene:t[0][r.scene||0],scenes:t[0],animations:t[1],cameras:t[2],asset:r.asset,parser:i,userData:{}};aI(n,s,r),Pf(s,r),Promise.all(i._invokeAll((function(e){return e.afterRoot&&e.afterRoot(s)}))).then((function(){e(s)}))})).catch(t)}_markDefs(){let e=this.json.nodes||[],t=this.json.skins||[],i=this.json.meshes||[];for(let i=0,r=t.length;i{let i=this.associations.get(e);null!=i&&this.associations.set(t,i);for(let[i,r]of e.children.entries())n(r,t.children[i])};return n(i,r),r.name+="_instance_"+e.uses[t]++,r}_invokeOne(e){let t=Object.values(this.plugins);t.push(this);for(let i=0;i=2&&s.setY(t,c[e*o+1]),o>=3&&s.setZ(t,c[e*o+2]),o>=4&&s.setW(t,c[e*o+3]),o>=5)throw new Error("THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.")}}return s}))}loadTexture(e){let t=this.json,i=this.options,r=t.textures[e].source,n=t.images[r],s=this.textureLoader;if(n.uri){let e=i.manager.getHandler(n.uri);null!==e&&(s=e)}return this.loadTextureImage(e,r,s)}loadTextureImage(e,t,i){let r=this,n=this.json,s=n.textures[e],a=n.images[t],o=(a.uri||a.bufferView)+":"+s.sampler;if(this.textureCache[o])return this.textureCache[o];let l=this.loadImageSource(t,i).then((function(t){t.flipY=!1,t.name=s.name||a.name||"";let i=(n.samplers||{})[s.sampler]||{};return t.magFilter=mfe[i.magFilter]||li,t.minFilter=mfe[i.minFilter]||Ca,t.wrapS=gfe[i.wrapS]||gn,t.wrapT=gfe[i.wrapT]||gn,r.associations.set(t,{textures:e}),t})).catch((function(){return null}));return this.textureCache[o]=l,l}loadImageSource(e,t){let i=this.json,r=this.options;if(void 0!==this.sourceCache[e])return this.sourceCache[e].then((e=>e.clone()));let n=i.images[e],s=self.URL||self.webkitURL,a=n.uri||"",o=!1;if(void 0!==n.bufferView)a=this.getDependency("bufferView",n.bufferView).then((function(e){o=!0;let t=new Blob([e],{type:n.mimeType});return a=s.createObjectURL(t),a}));else if(void 0===n.uri)throw new Error("THREE.GLTFLoader: Image "+e+" is missing URI and bufferView");let l=Promise.resolve(a).then((function(e){return new Promise((function(i,n){let s=i;!0===t.isImageBitmapLoader&&(s=function(e){let t=new Bi(e);t.needsUpdate=!0,i(t)}),t.load(Vs.resolveURL(e,r.path),s,void 0,n)}))})).then((function(e){return!0===o&&s.revokeObjectURL(a),e.userData.mimeType=n.mimeType||Z1t(n.uri),e})).catch((function(e){throw console.error("THREE.GLTFLoader: Couldn't load texture",a),e}));return this.sourceCache[e]=l,l}assignTexture(e,t,i,r){let n=this;return this.getDependency("texture",i.index).then((function(s){if(!s)return null;if(void 0!==i.texCoord&&0!=i.texCoord&&!("aoMap"===t&&1==i.texCoord)&&console.warn("THREE.GLTFLoader: Custom UV set "+i.texCoord+" for texture "+t+" not yet supported."),n.extensions[Oi.KHR_TEXTURE_TRANSFORM]){let e=void 0!==i.extensions?i.extensions[Oi.KHR_TEXTURE_TRANSFORM]:void 0;if(e){let t=n.associations.get(s);s=n.extensions[Oi.KHR_TEXTURE_TRANSFORM].extendTexture(s,e),n.associations.set(s,t)}}return void 0!==r&&(s.encoding=r),e[t]=s,s}))}assignFinalMaterial(e){let t=e.geometry,i=e.material,r=void 0===t.attributes.tangent,n=void 0!==t.attributes.color,s=void 0===t.attributes.normal;if(e.isPoints){let e="PointsMaterial:"+i.uuid,t=this.cache.get(e);t||(t=new qn,jr.prototype.copy.call(t,i),t.color.copy(i.color),t.map=i.map,t.sizeAttenuation=!1,this.cache.add(e,t)),i=t}else if(e.isLine){let e="LineBasicMaterial:"+i.uuid,t=this.cache.get(e);t||(t=new vr,jr.prototype.copy.call(t,i),t.color.copy(i.color),this.cache.add(e,t)),i=t}if(r||n||s){let e="ClonedMaterial:"+i.uuid+":";r&&(e+="derivative-tangents:"),n&&(e+="vertex-colors:"),s&&(e+="flat-shading:");let t=this.cache.get(e);t||(t=i.clone(),n&&(t.vertexColors=!0),s&&(t.flatShading=!0),r&&(t.normalScale&&(t.normalScale.y*=-1),t.clearcoatNormalScale&&(t.clearcoatNormalScale.y*=-1)),this.cache.add(e,t),this.associations.set(t,this.associations.get(i))),i=t}i.aoMap&&void 0===t.attributes.uv2&&void 0!==t.attributes.uv&&t.setAttribute("uv2",t.attributes.uv),e.material=i}getMaterialType(){return Vu}loadMaterial(e){let t,i=this,r=this.json,n=this.extensions,s=r.materials[e],a={},o=[];if((s.extensions||{})[Oi.KHR_MATERIALS_UNLIT]){let e=n[Oi.KHR_MATERIALS_UNLIT];t=e.getMaterialType(),o.push(e.extendParams(a,s,i))}else{let r=s.pbrMetallicRoughness||{};if(a.color=new je(1,1,1),a.opacity=1,Array.isArray(r.baseColorFactor)){let e=r.baseColorFactor;a.color.fromArray(e),a.opacity=e[3]}void 0!==r.baseColorTexture&&o.push(i.assignTexture(a,"map",r.baseColorTexture,gr)),a.metalness=void 0!==r.metallicFactor?r.metallicFactor:1,a.roughness=void 0!==r.roughnessFactor?r.roughnessFactor:1,void 0!==r.metallicRoughnessTexture&&(o.push(i.assignTexture(a,"metalnessMap",r.metallicRoughnessTexture)),o.push(i.assignTexture(a,"roughnessMap",r.metallicRoughnessTexture))),t=this._invokeOne((function(t){return t.getMaterialType&&t.getMaterialType(e)})),o.push(Promise.all(this._invokeAll((function(t){return t.extendMaterialParams&&t.extendMaterialParams(e,a)}))))}!0===s.doubleSided&&(a.side=yi);let l=s.alphaMode||Nk.OPAQUE;if(l===Nk.BLEND?(a.transparent=!0,a.depthWrite=!1):(a.transparent=!1,l===Nk.MASK&&(a.alphaTest=void 0!==s.alphaCutoff?s.alphaCutoff:.5)),void 0!==s.normalTexture&&t!==lr&&(o.push(i.assignTexture(a,"normalMap",s.normalTexture)),a.normalScale=new le(1,1),void 0!==s.normalTexture.scale)){let e=s.normalTexture.scale;a.normalScale.set(e,e)}return void 0!==s.occlusionTexture&&t!==lr&&(o.push(i.assignTexture(a,"aoMap",s.occlusionTexture)),void 0!==s.occlusionTexture.strength&&(a.aoMapIntensity=s.occlusionTexture.strength)),void 0!==s.emissiveFactor&&t!==lr&&(a.emissive=(new je).fromArray(s.emissiveFactor)),void 0!==s.emissiveTexture&&t!==lr&&o.push(i.assignTexture(a,"emissiveMap",s.emissiveTexture,gr)),Promise.all(o).then((function(){let r=new t(a);return s.name&&(r.name=s.name),Pf(r,s),i.associations.set(r,{materials:e}),s.extensions&&aI(n,r,s),r}))}createUniqueName(e){let t=Mr.sanitizeNodeName(e||""),i=t;for(let e=1;this.nodeNamesUsed[i];++e)i=t+"_"+e;return this.nodeNamesUsed[i]=!0,i}loadGeometries(e){let t=this,i=this.extensions,r=this.primitiveCache;function n(e){return i[Oi.KHR_DRACO_MESH_COMPRESSION].decodePrimitive(e,t).then((function(i){return yfe(i,e,t)}))}let s=[];for(let i=0,a=e.length;i0&&X1t(h,n),h.name=t.createUniqueName(n.name||"mesh_"+e),Pf(h,n),c.extensions&&aI(r,h,c),t.assignFinalMaterial(h),l.push(h)}for(let i=0,r=l.length;i1?new ur:1===o.length?o[0]:new sr,a!==o[0])for(let e=0,t=o.length;e{let t=new Map;for(let[e,i]of r.associations)(e instanceof jr||e instanceof Bi)&&t.set(e,i);return e.traverse((e=>{let i=r.associations.get(e);null!=i&&t.set(e,i)})),t})(n),n}))}};function J1t(e,t,i){let r=t.attributes,n=new Dt;if(void 0===r.POSITION)return;{let e=i.json.accessors[r.POSITION],t=e.min,s=e.max;if(void 0===t||void 0===s)return void console.warn("THREE.GLTFLoader: Missing min/max properties for accessor POSITION.");if(n.set(new A(t[0],t[1],t[2]),new A(s[0],s[1],s[2])),e.normalized){let t=t8(vT[e.componentType]);n.min.multiplyScalar(t),n.max.multiplyScalar(t)}}let s=t.targets;if(void 0!==s){let e=new A,t=new A;for(let r=0,n=s.length;rt in e?Q1t(e,t,{enumerable:!0,configurable:!0,writable:!0,value:i}):e[t]=i,xfe=(e,t)=>{for(var i in t||(t={}))ebt.call(t,i)&&bfe(e,i,t[i]);if(Efe)for(var i of Efe(t))tbt.call(t,i)&&bfe(e,i,t[i]);return e},i8=e=>{if(void 0!==n2)return n2(e);throw new Error('Dynamic require of "'+e+'" is not supported')},_fe=(e,t)=>function(){return t||(0,e[Object.keys(e)[0]])((t={exports:{}}).exports,t),t.exports},rbt=(e,t,i)=>new Promise(((r,n)=>{var s=e=>{try{o(i.next(e))}catch(e){n(e)}},a=e=>{try{o(i.throw(e))}catch(e){n(e)}},o=e=>e.done?r(e.value):Promise.resolve(e.value).then(s,a);o((i=i.apply(e,t)).next())})),ibt=_fe({"(disabled):crypto"(){}}),nbt=_fe({"dist/web-ifc.js"(e,t){var i,r=(i="undefined"!=typeof document&&document.currentScript?document.currentScript.src:void 0,"undefined"!=typeof __filename&&(i=i||__filename),function(e){var t,r,n=void 0!==(e=e||{})?e:{};n.ready=new Promise((function(e,i){t=e,r=i}));var s,a={};for(s in n)n.hasOwnProperty(s)&&(a[s]=n[s]);var o,l=[],h="./this.program",u=function(e,t){throw t},c=!1,p=!1,d=!1;c="object"==typeof window,p="function"==typeof importScripts,d="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,o=!c&&!d&&!p;var f,m,g,y,v="";d?(v=p?i8("path").dirname(v)+"/":__dirname+"/",f=function(e,t){return g||(g=i8("fs")),y||(y=i8("path")),e=y.normalize(e),g.readFileSync(e,t?null:"utf8")},m=function(e){var t=f(e,!0);return t.buffer||(t=new Uint8Array(t)),M(t.buffer),t},process.argv.length>1&&(h=process.argv[1].replace(/\\/g,"/")),l=process.argv.slice(2),process.on("uncaughtException",(function(e){if(!(e instanceof bi))throw e})),process.on("unhandledRejection",he),u=function(e){process.exit(e)},n.inspect=function(){return"[Emscripten Module object]"}):o?("undefined"!=typeof read&&(f=function(e){return read(e)}),m=function(e){var t;return"function"==typeof readbuffer?new Uint8Array(readbuffer(e)):(M("object"==typeof(t=read(e,"binary"))),t)},"undefined"!=typeof scriptArgs?l=scriptArgs:void 0!==arguments&&(l=arguments),"function"==typeof quit&&(u=function(e){quit(e)}),"undefined"!=typeof print&&("undefined"==typeof console&&(console={}),console.log=print,console.warn=console.error="undefined"!=typeof printErr?printErr:print)):(c||p)&&(p?v=self.location.href:"undefined"!=typeof document&&document.currentScript&&(v=document.currentScript.src),i&&(v=i),v=0!==v.indexOf("blob:")?v.slice(0,v.lastIndexOf("/")+1):"",f=function(e){var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),t.responseText},p&&(m=function(e){var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}));var T=n.print||console.log.bind(console),x=n.printErr||console.warn.bind(console);for(s in a)a.hasOwnProperty(s)&&(n[s]=a[s]);a=null,n.arguments&&(l=n.arguments),n.thisProgram&&(h=n.thisProgram),n.quit&&(u=n.quit);var b,_,E=16,w=function(e){};n.wasmBinary&&(b=n.wasmBinary),n.noExitRuntime&&(_=n.noExitRuntime),"object"!=typeof WebAssembly&&he("no native wasm support detected");var S,I=!1;function M(e,t){e||he("Assertion failed: "+t)}var A="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function D(e,t,i){for(var r=(t>>>=0)+i,n=t;e[n>>>0]&&!(n>=r);)++n;if(n-t>16&&e.subarray&&A)return A.decode(e.subarray(t>>>0,n>>>0));for(var s="";t>>0];if(128&a){var o=63&e[t++>>>0];if(192!=(224&a)){var l=63&e[t++>>>0];if((a=224==(240&a)?(15&a)<<12|o<<6|l:(7&a)<<18|o<<12|l<<6|63&e[t++>>>0])<65536)s+=String.fromCharCode(a);else{var h=a-65536;s+=String.fromCharCode(55296|h>>10,56320|1023&h)}}else s+=String.fromCharCode((31&a)<<6|o)}else s+=String.fromCharCode(a)}return s}function O(e,t){return(e>>>=0)?D(F,e,t):""}function R(e,t,i,r){if(!(r>0))return 0;for(var n=i>>>=0,s=i+r-1,a=0;a=55296&&o<=57343&&(o=65536+((1023&o)<<10)|1023&e.charCodeAt(++a)),o<=127){if(i>=s)break;t[i++>>>0]=o}else if(o<=2047){if(i+1>=s)break;t[i++>>>0]=192|o>>6,t[i++>>>0]=128|63&o}else if(o<=65535){if(i+2>=s)break;t[i++>>>0]=224|o>>12,t[i++>>>0]=128|o>>6&63,t[i++>>>0]=128|63&o}else{if(i+3>=s)break;t[i++>>>0]=240|o>>18,t[i++>>>0]=128|o>>12&63,t[i++>>>0]=128|o>>6&63,t[i++>>>0]=128|63&o}}return t[i>>>0]=0,i-n}function C(e,t,i){return R(e,F,t,i)}function N(e){for(var t=0,i=0;i=55296&&r<=57343&&(r=65536+((1023&r)<<10)|1023&e.charCodeAt(++i)),r<=127?++t:t+=r<=2047?2:r<=65535?3:4}return t}var P,L,F,U,k,B,G,z,H,V="undefined"!=typeof TextDecoder?new TextDecoder("utf-16le"):void 0;function j(e,t){for(var i=e,r=i>>1,n=r+t/2;!(r>=n)&&k[r>>>0];)++r;if((i=r<<1)-e>32&&V)return V.decode(F.subarray(e>>>0,i>>>0));for(var s="",a=0;!(a>=t/2);++a){var o=U[e+2*a>>>1];if(0==o)break;s+=String.fromCharCode(o)}return s}function W(e,t,i){if(void 0===i&&(i=2147483647),i<2)return 0;for(var r=t,n=(i-=2)<2*e.length?i/2:e.length,s=0;s>>1]=a,t+=2}return U[t>>>1]=0,t-r}function Y(e){return 2*e.length}function X(e,t){for(var i=0,r="";!(i>=t/4);){var n=B[e+4*i>>>2];if(0==n)break;if(++i,n>=65536){var s=n-65536;r+=String.fromCharCode(55296|s>>10,56320|1023&s)}else r+=String.fromCharCode(n)}return r}function q(e,t,i){if(void 0===i&&(i=2147483647),i<4)return 0;for(var r=t>>>=0,n=r+i-4,s=0;s=55296&&a<=57343&&(a=65536+((1023&a)<<10)|1023&e.charCodeAt(++s)),B[t>>>2]=a,(t+=4)+4>n)break}return B[t>>>2]=0,t-r}function Z(e){for(var t=0,i=0;i=55296&&r<=57343&&++i,t+=4}return t}function K(e,t){return e%t>0&&(e+=t-e%t),e}function $(e){P=e,n.HEAP8=L=new Int8Array(e),n.HEAP16=U=new Int16Array(e),n.HEAP32=B=new Int32Array(e),n.HEAPU8=F=new Uint8Array(e),n.HEAPU16=k=new Uint16Array(e),n.HEAPU32=G=new Uint32Array(e),n.HEAPF32=z=new Float32Array(e),n.HEAPF64=H=new Float64Array(e)}var J=n.INITIAL_MEMORY||16777216;(S=n.wasmMemory?n.wasmMemory:new WebAssembly.Memory({initial:J/65536,maximum:65536}))&&(P=S.buffer),J=P.byteLength,$(P);var Q,ee=[],te=[],ie=[],re=[],ne=0,se=null,ae=null;function oe(e){ne++,n.monitorRunDependencies&&n.monitorRunDependencies(ne)}function le(e){if(ne--,n.monitorRunDependencies&&n.monitorRunDependencies(ne),0==ne&&(null!==se&&(clearInterval(se),se=null),ae)){var t=ae;ae=null,t()}}function he(e){n.onAbort&&n.onAbort(e),x(e+=""),I=!0,e="abort("+e+"). Build with -s ASSERTIONS=1 for more info.";var t=new WebAssembly.RuntimeError(e);throw r(t),t}function ue(e,t){return String.prototype.startsWith?e.startsWith(t):0===e.indexOf(t)}n.preloadedImages={},n.preloadedAudios={};var ce="data:application/octet-stream;base64,";function pe(e){return ue(e,ce)}var de="file://";function fe(e){return ue(e,de)}var me,ge,ye,ve=WRe+"web-ifc.wasm";function Te(){try{if(b)return new Uint8Array(b);if(m)return m(ve);throw"both async and sync fetching of the wasm failed"}catch(e){he(e)}}function xe(e){for(;e.length>0;){var t=e.shift();if("function"!=typeof t){var i=t.func;"number"==typeof i?void 0===t.arg?Q.get(i)():Q.get(i)(t.arg):i(void 0===t.arg?null:t.arg)}else t(n)}}function be(e,t,i){return-1!=e.indexOf("j")?function(e,t,i){return i&&i.length?n["dynCall_"+e].apply(null,[t].concat(i)):n["dynCall_"+e].call(null,t)}(e,t,i):Q.get(t).apply(null,i)}function _e(e){return B[Ti()>>>2]=e,e}pe(ve)||(me=ve,ve=n.locateFile?n.locateFile(me,v):v+me);var Ee={splitPath:function(e){return/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1)},normalizeArray:function(e,t){for(var i=0,r=e.length-1;r>=0;r--){var n=e[r];"."===n?e.splice(r,1):".."===n?(e.splice(r,1),i++):i&&(e.splice(r,1),i--)}if(t)for(;i;i--)e.unshift("..");return e},normalize:function(e){var t="/"===e.charAt(0),i="/"===e.slice(-1);return!(e=Ee.normalizeArray(e.split("/").filter((function(e){return!!e})),!t).join("/"))&&!t&&(e="."),e&&i&&(e+="/"),(t?"/":"")+e},dirname:function(e){var t=Ee.splitPath(e),i=t[0],r=t[1];return i||r?(r&&(r=r.slice(0,r.length-1)),i+r):"."},basename:function(e){if("/"===e)return"/";var t=(e=(e=Ee.normalize(e)).replace(/\/$/,"")).lastIndexOf("/");return-1===t?e:e.slice(t+1)},extname:function(e){return Ee.splitPath(e)[3]},join:function(){var e=Array.prototype.slice.call(arguments,0);return Ee.normalize(e.join("/"))},join2:function(e,t){return Ee.normalize(e+"/"+t)}},we={resolve:function(){for(var e="",t=!1,i=arguments.length-1;i>=-1&&!t;i--){var r=i>=0?arguments[i]:Ae.cwd();if("string"!=typeof r)throw new TypeError("Arguments to path.resolve must be strings");if(!r)return"";e=r+"/"+e,t="/"===r.charAt(0)}return(t?"/":"")+(e=Ee.normalizeArray(e.split("/").filter((function(e){return!!e})),!t).join("/"))||"."},relative:function(e,t){function i(e){for(var t=0;t=0&&""===e[i];i--);return t>i?[]:e.slice(t,i-t+1)}e=we.resolve(e).slice(1),t=we.resolve(t).slice(1);for(var r=i(e.split("/")),n=i(t.split("/")),s=Math.min(r.length,n.length),a=s,o=0;o0?i.slice(0,r).toString("utf-8"):null}else"undefined"!=typeof window&&"function"==typeof window.prompt?null!==(t=window.prompt("Input: "))&&(t+="\n"):"function"==typeof readline&&null!==(t=readline())&&(t+="\n");if(!t)return null;e.input=di(t,!0)}return e.input.shift()},put_char:function(e,t){null===t||10===t?(T(D(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},flush:function(e){e.output&&e.output.length>0&&(T(D(e.output,0)),e.output=[])}},default_tty1_ops:{put_char:function(e,t){null===t||10===t?(x(D(e.output,0)),e.output=[]):0!=t&&e.output.push(t)},flush:function(e){e.output&&e.output.length>0&&(x(D(e.output,0)),e.output=[])}}};function Ie(e){for(var t=function(e,t){return t||(t=E),Math.ceil(e/t)*t}(e,16384),i=yi(t);e>>0]=0;return i}var Me={ops_table:null,mount:function(e){return Me.createNode(null,"/",16895,0)},createNode:function(e,t,i,r){if(Ae.isBlkdev(i)||Ae.isFIFO(i))throw new Ae.ErrnoError(63);Me.ops_table||(Me.ops_table={dir:{node:{getattr:Me.node_ops.getattr,setattr:Me.node_ops.setattr,lookup:Me.node_ops.lookup,mknod:Me.node_ops.mknod,rename:Me.node_ops.rename,unlink:Me.node_ops.unlink,rmdir:Me.node_ops.rmdir,readdir:Me.node_ops.readdir,symlink:Me.node_ops.symlink},stream:{llseek:Me.stream_ops.llseek}},file:{node:{getattr:Me.node_ops.getattr,setattr:Me.node_ops.setattr},stream:{llseek:Me.stream_ops.llseek,read:Me.stream_ops.read,write:Me.stream_ops.write,allocate:Me.stream_ops.allocate,mmap:Me.stream_ops.mmap,msync:Me.stream_ops.msync}},link:{node:{getattr:Me.node_ops.getattr,setattr:Me.node_ops.setattr,readlink:Me.node_ops.readlink},stream:{}},chrdev:{node:{getattr:Me.node_ops.getattr,setattr:Me.node_ops.setattr},stream:Ae.chrdev_stream_ops}});var n=Ae.createNode(e,t,i,r);return Ae.isDir(n.mode)?(n.node_ops=Me.ops_table.dir.node,n.stream_ops=Me.ops_table.dir.stream,n.contents={}):Ae.isFile(n.mode)?(n.node_ops=Me.ops_table.file.node,n.stream_ops=Me.ops_table.file.stream,n.usedBytes=0,n.contents=null):Ae.isLink(n.mode)?(n.node_ops=Me.ops_table.link.node,n.stream_ops=Me.ops_table.link.stream):Ae.isChrdev(n.mode)&&(n.node_ops=Me.ops_table.chrdev.node,n.stream_ops=Me.ops_table.chrdev.stream),n.timestamp=Date.now(),e&&(e.contents[t]=n),n},getFileDataAsRegularArray:function(e){if(e.contents&&e.contents.subarray){for(var t=[],i=0;i>>=0;var i=e.contents?e.contents.length:0;if(!(i>=t)){t=Math.max(t,i*(i<1048576?2:1.125)>>>0),0!=i&&(t=Math.max(t,256));var r=e.contents;e.contents=new Uint8Array(t),e.usedBytes>0&&e.contents.set(r.subarray(0,e.usedBytes),0)}},resizeFileStorage:function(e,t){if(t>>>=0,e.usedBytes!=t){if(0==t)return e.contents=null,void(e.usedBytes=0);if(!e.contents||e.contents.subarray){var i=e.contents;return e.contents=new Uint8Array(t),i&&e.contents.set(i.subarray(0,Math.min(t,e.usedBytes))),void(e.usedBytes=t)}if(e.contents||(e.contents=[]),e.contents.length>t)e.contents.length=t;else for(;e.contents.length=e.node.usedBytes)return 0;var a=Math.min(e.node.usedBytes-n,r);if(a>8&&s.subarray)t.set(s.subarray(n,n+a),i);else for(var o=0;o0||r+i>>=0,L.set(l,a>>>0)}else o=!1,a=l.byteOffset;return{ptr:a,allocated:o}},msync:function(e,t,i,r,n){if(!Ae.isFile(e.node.mode))throw new Ae.ErrnoError(43);return 2&n||Me.stream_ops.write(e,t,0,r,i,!1),0}}},Ae={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,trackingDelegate:{},tracking:{openFlags:{READ:1,WRITE:2}},ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath:function(e,t){if(t=t||{},!(e=we.resolve(Ae.cwd(),e)))return{path:"",node:null};var i={follow_mount:!0,recurse_count:0};for(var r in i)void 0===t[r]&&(t[r]=i[r]);if(t.recurse_count>8)throw new Ae.ErrnoError(32);for(var n=Ee.normalizeArray(e.split("/").filter((function(e){return!!e})),!1),s=Ae.root,a="/",o=0;o40)throw new Ae.ErrnoError(32)}}return{path:a,node:s}},getPath:function(e){for(var t;;){if(Ae.isRoot(e)){var i=e.mount.mountpoint;return t?"/"!==i[i.length-1]?i+"/"+t:i+t:i}t=t?e.name+"/"+t:e.name,e=e.parent}},hashName:function(e,t){for(var i=0,r=0;r>>0)%Ae.nameTable.length},hashAddNode:function(e){var t=Ae.hashName(e.parent.id,e.name);e.name_next=Ae.nameTable[t],Ae.nameTable[t]=e},hashRemoveNode:function(e){var t=Ae.hashName(e.parent.id,e.name);if(Ae.nameTable[t]===e)Ae.nameTable[t]=e.name_next;else for(var i=Ae.nameTable[t];i;){if(i.name_next===e){i.name_next=e.name_next;break}i=i.name_next}},lookupNode:function(e,t){var i=Ae.mayLookup(e);if(i)throw new Ae.ErrnoError(i,e);for(var r=Ae.hashName(e.id,t),n=Ae.nameTable[r];n;n=n.name_next){var s=n.name;if(n.parent.id===e.id&&s===t)return n}return Ae.lookup(e,t)},createNode:function(e,t,i,r){var n=new Ae.FSNode(e,t,i,r);return Ae.hashAddNode(n),n},destroyNode:function(e){Ae.hashRemoveNode(e)},isRoot:function(e){return e===e.parent},isMountpoint:function(e){return!!e.mounted},isFile:function(e){return 32768==(61440&e)},isDir:function(e){return 16384==(61440&e)},isLink:function(e){return 40960==(61440&e)},isChrdev:function(e){return 8192==(61440&e)},isBlkdev:function(e){return 24576==(61440&e)},isFIFO:function(e){return 4096==(61440&e)},isSocket:function(e){return 49152==(49152&e)},flagModes:{r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},modeStringToFlags:function(e){var t=Ae.flagModes[e];if(void 0===t)throw new Error("Unknown file open mode: "+e);return t},flagsToPermissionString:function(e){var t=["r","w","rw"][3&e];return 512&e&&(t+="w"),t},nodePermissions:function(e,t){return Ae.ignorePermissions||(-1===t.indexOf("r")||292&e.mode)&&(-1===t.indexOf("w")||146&e.mode)&&(-1===t.indexOf("x")||73&e.mode)?0:2},mayLookup:function(e){return Ae.nodePermissions(e,"x")||(e.node_ops.lookup?0:2)},mayCreate:function(e,t){try{return Ae.lookupNode(e,t),20}catch(e){}return Ae.nodePermissions(e,"wx")},mayDelete:function(e,t,i){var r;try{r=Ae.lookupNode(e,t)}catch(e){return e.errno}var n=Ae.nodePermissions(e,"wx");if(n)return n;if(i){if(!Ae.isDir(r.mode))return 54;if(Ae.isRoot(r)||Ae.getPath(r)===Ae.cwd())return 10}else if(Ae.isDir(r.mode))return 31;return 0},mayOpen:function(e,t){return e?Ae.isLink(e.mode)?32:Ae.isDir(e.mode)&&("r"!==Ae.flagsToPermissionString(t)||512&t)?31:Ae.nodePermissions(e,Ae.flagsToPermissionString(t)):44},MAX_OPEN_FDS:4096,nextfd:function(e,t){e=e||0,t=t||Ae.MAX_OPEN_FDS;for(var i=e;i<=t;i++)if(!Ae.streams[i])return i;throw new Ae.ErrnoError(33)},getStream:function(e){return Ae.streams[e]},createStream:function(e,t,i){Ae.FSStream||(Ae.FSStream=function(){},Ae.FSStream.prototype={object:{get:function(){return this.node},set:function(e){this.node=e}},isRead:{get:function(){return 1!=(2097155&this.flags)}},isWrite:{get:function(){return 0!=(2097155&this.flags)}},isAppend:{get:function(){return 1024&this.flags}}});var r=new Ae.FSStream;for(var n in e)r[n]=e[n];e=r;var s=Ae.nextfd(t,i);return e.fd=s,Ae.streams[s]=e,e},closeStream:function(e){Ae.streams[e]=null},chrdev_stream_ops:{open:function(e){var t=Ae.getDevice(e.node.rdev);e.stream_ops=t.stream_ops,e.stream_ops.open&&e.stream_ops.open(e)},llseek:function(){throw new Ae.ErrnoError(70)}},major:function(e){return e>>8},minor:function(e){return 255&e},makedev:function(e,t){return e<<8|t},registerDevice:function(e,t){Ae.devices[e]={stream_ops:t}},getDevice:function(e){return Ae.devices[e]},getMounts:function(e){for(var t=[],i=[e];i.length;){var r=i.pop();t.push(r),i.push.apply(i,r.mounts)}return t},syncfs:function(e,t){"function"==typeof e&&(t=e,e=!1),Ae.syncFSRequests++,Ae.syncFSRequests>1&&x("warning: "+Ae.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work");var i=Ae.getMounts(Ae.root.mount),r=0;function n(e){return Ae.syncFSRequests--,t(e)}function s(e){if(e)return s.errored?void 0:(s.errored=!0,n(e));++r>=i.length&&n(null)}i.forEach((function(t){if(!t.type.syncfs)return s(null);t.type.syncfs(t,e,s)}))},mount:function(e,t,i){var r,n="/"===i,s=!i;if(n&&Ae.root)throw new Ae.ErrnoError(10);if(!n&&!s){var a=Ae.lookupPath(i,{follow_mount:!1});if(i=a.path,r=a.node,Ae.isMountpoint(r))throw new Ae.ErrnoError(10);if(!Ae.isDir(r.mode))throw new Ae.ErrnoError(54)}var o={type:e,opts:t,mountpoint:i,mounts:[]},l=e.mount(o);return l.mount=o,o.root=l,n?Ae.root=l:r&&(r.mounted=o,r.mount&&r.mount.mounts.push(o)),l},unmount:function(e){var t=Ae.lookupPath(e,{follow_mount:!1});if(!Ae.isMountpoint(t.node))throw new Ae.ErrnoError(28);var i=t.node,r=i.mounted,n=Ae.getMounts(r);Object.keys(Ae.nameTable).forEach((function(e){for(var t=Ae.nameTable[e];t;){var i=t.name_next;-1!==n.indexOf(t.mount)&&Ae.destroyNode(t),t=i}})),i.mounted=null;var s=i.mount.mounts.indexOf(r);i.mount.mounts.splice(s,1)},lookup:function(e,t){return e.node_ops.lookup(e,t)},mknod:function(e,t,i){var r=Ae.lookupPath(e,{parent:!0}).node,n=Ee.basename(e);if(!n||"."===n||".."===n)throw new Ae.ErrnoError(28);var s=Ae.mayCreate(r,n);if(s)throw new Ae.ErrnoError(s);if(!r.node_ops.mknod)throw new Ae.ErrnoError(63);return r.node_ops.mknod(r,n,t,i)},create:function(e,t){return t=void 0!==t?t:438,t&=4095,t|=32768,Ae.mknod(e,t,0)},mkdir:function(e,t){return t=void 0!==t?t:511,t&=1023,t|=16384,Ae.mknod(e,t,0)},mkdirTree:function(e,t){for(var i=e.split("/"),r="",n=0;n>>=0,r<0||n<0)throw new Ae.ErrnoError(28);if(Ae.isClosed(e))throw new Ae.ErrnoError(8);if(1==(2097155&e.flags))throw new Ae.ErrnoError(8);if(Ae.isDir(e.node.mode))throw new Ae.ErrnoError(31);if(!e.stream_ops.read)throw new Ae.ErrnoError(28);var s=void 0!==n;if(s){if(!e.seekable)throw new Ae.ErrnoError(70)}else n=e.position;var a=e.stream_ops.read(e,t,i,r,n);return s||(e.position+=a),a},write:function(e,t,i,r,n,s){if(i>>>=0,r<0||n<0)throw new Ae.ErrnoError(28);if(Ae.isClosed(e))throw new Ae.ErrnoError(8);if(!(2097155&e.flags))throw new Ae.ErrnoError(8);if(Ae.isDir(e.node.mode))throw new Ae.ErrnoError(31);if(!e.stream_ops.write)throw new Ae.ErrnoError(28);e.seekable&&1024&e.flags&&Ae.llseek(e,0,2);var a=void 0!==n;if(a){if(!e.seekable)throw new Ae.ErrnoError(70)}else n=e.position;var o=e.stream_ops.write(e,t,i,r,n,s);a||(e.position+=o);try{e.path&&Ae.trackingDelegate.onWriteToFile&&Ae.trackingDelegate.onWriteToFile(e.path)}catch(t){x("FS.trackingDelegate['onWriteToFile']('"+e.path+"') threw an exception: "+t.message)}return o},allocate:function(e,t,i){if(Ae.isClosed(e))throw new Ae.ErrnoError(8);if(t<0||i<=0)throw new Ae.ErrnoError(28);if(!(2097155&e.flags))throw new Ae.ErrnoError(8);if(!Ae.isFile(e.node.mode)&&!Ae.isDir(e.node.mode))throw new Ae.ErrnoError(43);if(!e.stream_ops.allocate)throw new Ae.ErrnoError(138);e.stream_ops.allocate(e,t,i)},mmap:function(e,t,i,r,n,s){if(t>>>=0,2&n&&!(2&s)&&2!=(2097155&e.flags))throw new Ae.ErrnoError(2);if(1==(2097155&e.flags))throw new Ae.ErrnoError(2);if(!e.stream_ops.mmap)throw new Ae.ErrnoError(43);return e.stream_ops.mmap(e,t,i,r,n,s)},msync:function(e,t,i,r,n){return i>>>=0,e&&e.stream_ops.msync?e.stream_ops.msync(e,t,i,r,n):0},munmap:function(e){return 0},ioctl:function(e,t,i){if(!e.stream_ops.ioctl)throw new Ae.ErrnoError(59);return e.stream_ops.ioctl(e,t,i)},readFile:function(e,t){if((t=t||{}).flags=t.flags||0,t.encoding=t.encoding||"binary","utf8"!==t.encoding&&"binary"!==t.encoding)throw new Error('Invalid encoding type "'+t.encoding+'"');var i,r=Ae.open(e,t.flags),n=Ae.stat(e).size,s=new Uint8Array(n);return Ae.read(r,s,0,n,0),"utf8"===t.encoding?i=D(s,0):"binary"===t.encoding&&(i=s),Ae.close(r),i},writeFile:function(e,t,i){(i=i||{}).flags=i.flags||577;var r=Ae.open(e,i.flags,i.mode);if("string"==typeof t){var n=new Uint8Array(N(t)+1),s=R(t,n,0,n.length);Ae.write(r,n,0,s,void 0,i.canOwn)}else{if(!ArrayBuffer.isView(t))throw new Error("Unsupported data type");Ae.write(r,t,0,t.byteLength,void 0,i.canOwn)}Ae.close(r)},cwd:function(){return Ae.currentPath},chdir:function(e){var t=Ae.lookupPath(e,{follow:!0});if(null===t.node)throw new Ae.ErrnoError(44);if(!Ae.isDir(t.node.mode))throw new Ae.ErrnoError(54);var i=Ae.nodePermissions(t.node,"x");if(i)throw new Ae.ErrnoError(i);Ae.currentPath=t.path},createDefaultDirectories:function(){Ae.mkdir("/tmp"),Ae.mkdir("/home"),Ae.mkdir("/home/web_user")},createDefaultDevices:function(){Ae.mkdir("/dev"),Ae.registerDevice(Ae.makedev(1,3),{read:function(){return 0},write:function(e,t,i,r,n){return r}}),Ae.mkdev("/dev/null",Ae.makedev(1,3)),Se.register(Ae.makedev(5,0),Se.default_tty_ops),Se.register(Ae.makedev(6,0),Se.default_tty1_ops),Ae.mkdev("/dev/tty",Ae.makedev(5,0)),Ae.mkdev("/dev/tty1",Ae.makedev(6,0));var e=function(){if("object"==typeof crypto&&"function"==typeof crypto.getRandomValues){var e=new Uint8Array(1);return function(){return crypto.getRandomValues(e),e[0]}}if(d)try{var t=ibt();return function(){return t.randomBytes(1)[0]}}catch(e){}return function(){he("randomDevice")}}();Ae.createDevice("/dev","random",e),Ae.createDevice("/dev","urandom",e),Ae.mkdir("/dev/shm"),Ae.mkdir("/dev/shm/tmp")},createSpecialDirectories:function(){Ae.mkdir("/proc"),Ae.mkdir("/proc/self"),Ae.mkdir("/proc/self/fd"),Ae.mount({mount:function(){var e=Ae.createNode("/proc/self","fd",16895,73);return e.node_ops={lookup:function(e,t){var i=+t,r=Ae.getStream(i);if(!r)throw new Ae.ErrnoError(8);var n={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:function(){return r.path}}};return n.parent=n,n}},e}},{},"/proc/self/fd")},createStandardStreams:function(){n.stdin?Ae.createDevice("/dev","stdin",n.stdin):Ae.symlink("/dev/tty","/dev/stdin"),n.stdout?Ae.createDevice("/dev","stdout",null,n.stdout):Ae.symlink("/dev/tty","/dev/stdout"),n.stderr?Ae.createDevice("/dev","stderr",null,n.stderr):Ae.symlink("/dev/tty1","/dev/stderr"),Ae.open("/dev/stdin",0),Ae.open("/dev/stdout",1),Ae.open("/dev/stderr",1)},ensureErrnoError:function(){Ae.ErrnoError||(Ae.ErrnoError=function(e,t){this.node=t,this.setErrno=function(e){this.errno=e},this.setErrno(e),this.message="FS error"},Ae.ErrnoError.prototype=new Error,Ae.ErrnoError.prototype.constructor=Ae.ErrnoError,[44].forEach((function(e){Ae.genericErrors[e]=new Ae.ErrnoError(e),Ae.genericErrors[e].stack=""})))},staticInit:function(){Ae.ensureErrnoError(),Ae.nameTable=new Array(4096),Ae.mount(Me,{},"/"),Ae.createDefaultDirectories(),Ae.createDefaultDevices(),Ae.createSpecialDirectories(),Ae.filesystems={MEMFS:Me}},init:function(e,t,i){Ae.init.initialized=!0,Ae.ensureErrnoError(),n.stdin=e||n.stdin,n.stdout=t||n.stdout,n.stderr=i||n.stderr,Ae.createStandardStreams()},quit:function(){Ae.init.initialized=!1;var e=n._fflush;e&&e(0);for(var t=0;tthis.length-1||e<0)){var t=e%this.chunkSize,i=e/this.chunkSize|0;return this.getter(i)[t]}},s.prototype.setDataGetter=function(e){this.getter=e},s.prototype.cacheLength=function(){var e=new XMLHttpRequest;if(e.open("HEAD",i,!1),e.send(null),!(e.status>=200&&e.status<300||304===e.status))throw new Error("Couldn't load "+i+". Status: "+e.status);var t,r=Number(e.getResponseHeader("Content-length")),n=(t=e.getResponseHeader("Accept-Ranges"))&&"bytes"===t,s=(t=e.getResponseHeader("Content-Encoding"))&&"gzip"===t,a=1048576;n||(a=r);var o=this;o.setDataGetter((function(e){var t=e*a,n=(e+1)*a-1;if(n=Math.min(n,r-1),void 0===o.chunks[e]&&(o.chunks[e]=function(e,t){if(e>t)throw new Error("invalid range ("+e+", "+t+") or no bytes requested!");if(t>r-1)throw new Error("only "+r+" bytes available! programmer error!");var n=new XMLHttpRequest;if(n.open("GET",i,!1),r!==a&&n.setRequestHeader("Range","bytes="+e+"-"+t),"undefined"!=typeof Uint8Array&&(n.responseType="arraybuffer"),n.overrideMimeType&&n.overrideMimeType("text/plain; charset=x-user-defined"),n.send(null),!(n.status>=200&&n.status<300||304===n.status))throw new Error("Couldn't load "+i+". Status: "+n.status);return void 0!==n.response?new Uint8Array(n.response||[]):di(n.responseText||"",!0)}(t,n)),void 0===o.chunks[e])throw new Error("doXHR failed!");return o.chunks[e]})),(s||!r)&&(a=r=1,r=this.getter(0).length,a=r,T("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=r,this._chunkSize=a,this.lengthKnown=!0},"undefined"!=typeof XMLHttpRequest){if(!p)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var a=new s;Object.defineProperties(a,{length:{get:function(){return this.lengthKnown||this.cacheLength(),this._length}},chunkSize:{get:function(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}});var o={isDevice:!1,contents:a}}else o={isDevice:!1,url:i};var l=Ae.createFile(e,t,o,r,n);o.contents?l.contents=o.contents:o.url&&(l.contents=null,l.url=o.url),Object.defineProperties(l,{usedBytes:{get:function(){return this.contents.length}}});var h={};return Object.keys(l.stream_ops).forEach((function(e){var t=l.stream_ops[e];h[e]=function(){return Ae.forceLoadFile(l),t.apply(null,arguments)}})),h.read=function(e,t,i,r,n){Ae.forceLoadFile(l);var s=e.node.contents;if(n>=s.length)return 0;var a=Math.min(s.length-n,r);if(s.slice)for(var o=0;o>>2]=r.dev,B[i+4>>>2]=0,B[i+8>>>2]=r.ino,B[i+12>>>2]=r.mode,B[i+16>>>2]=r.nlink,B[i+20>>>2]=r.uid,B[i+24>>>2]=r.gid,B[i+28>>>2]=r.rdev,B[i+32>>>2]=0,ye=[r.size>>>0,(ge=r.size,+Math.abs(ge)>=1?ge>0?(0|Math.min(+Math.floor(ge/4294967296),4294967295))>>>0:~~+Math.ceil((ge-+(~~ge>>>0))/4294967296)>>>0:0)],B[i+40>>>2]=ye[0],B[i+44>>>2]=ye[1],B[i+48>>>2]=4096,B[i+52>>>2]=r.blocks,B[i+56>>>2]=r.atime.getTime()/1e3|0,B[i+60>>>2]=0,B[i+64>>>2]=r.mtime.getTime()/1e3|0,B[i+68>>>2]=0,B[i+72>>>2]=r.ctime.getTime()/1e3|0,B[i+76>>>2]=0,ye=[r.ino>>>0,(ge=r.ino,+Math.abs(ge)>=1?ge>0?(0|Math.min(+Math.floor(ge/4294967296),4294967295))>>>0:~~+Math.ceil((ge-+(~~ge>>>0))/4294967296)>>>0:0)],B[i+80>>>2]=ye[0],B[i+84>>>2]=ye[1],0},doMsync:function(e,t,i,r,n){var s=F.slice(e,e+i);Ae.msync(t,s,n,i,r)},doMkdir:function(e,t){return"/"===(e=Ee.normalize(e))[e.length-1]&&(e=e.slice(0,e.length-1)),Ae.mkdir(e,t,0),0},doMknod:function(e,t,i){switch(61440&t){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}return Ae.mknod(e,t,i),0},doReadlink:function(e,t,i){if(i<=0)return-28;var r=Ae.readlink(e),n=Math.min(i,N(r)),s=L[t+n>>>0];return C(r,t,i+1),L[t+n>>>0]=s,n},doAccess:function(e,t){if(-8&t)return-28;var i;if(!(i=Ae.lookupPath(e,{follow:!0}).node))return-44;var r="";return 4&t&&(r+="r"),2&t&&(r+="w"),1&t&&(r+="x"),r&&Ae.nodePermissions(i,r)?-2:0},doDup:function(e,t,i){var r=Ae.getStream(i);return r&&Ae.close(r),Ae.open(e,t,0,i,i).fd},doReadv:function(e,t,i,r){for(var n=0,s=0;s>>2],o=B[t+(8*s+4)>>>2],l=Ae.read(e,L,a,o,r);if(l<0)return-1;if(n+=l,l>>2],o=B[t+(8*s+4)>>>2],l=Ae.write(e,L,a,o,r);if(l<0)return-1;n+=l}return n},varargs:void 0,get:function(){return De.varargs+=4,B[De.varargs-4>>>2]},getStr:function(e){return O(e)},getStreamFromFD:function(e){var t=Ae.getStream(e);if(!t)throw new Ae.ErrnoError(8);return t},get64:function(e,t){return e}},Oe={};function Re(e){for(;e.length;){var t=e.pop();e.pop()(t)}}function Ce(e){return this.fromWireType(G[e>>>2])}var Ne={},Pe={},Le={},Fe=48,Ue=57;function ke(e){if(void 0===e)return"_unknown";var t=(e=e.replace(/[^a-zA-Z0-9_]/g,"$")).charCodeAt(0);return t>=Fe&&t<=Ue?"_"+e:e}function Be(e,t){return e=ke(e),new Function("body","return function "+e+'() {\n "use strict"; return body.apply(this, arguments);\n};\n')(t)}function Ge(e,t){var i=Be(t,(function(e){this.name=t,this.message=e;var i=new Error(e).stack;void 0!==i&&(this.stack=this.toString()+"\n"+i.replace(/^Error(:[^\n]*)?\n/,""))}));return i.prototype=Object.create(e.prototype),i.prototype.constructor=i,i.prototype.toString=function(){return void 0===this.message?this.name:this.name+": "+this.message},i}var ze=void 0;function He(e){throw new ze(e)}function Ve(e,t,i){function r(t){var r=i(t);r.length!==e.length&&He("Mismatched type converter count");for(var n=0;n>>0];)t+=Ye[F[i++>>>0]];return t}var qe=void 0;function Ze(e){throw new qe(e)}function Ke(e,t,i){if(i=i||{},!("argPackAdvance"in t))throw new TypeError("registerType registeredInstance requires argPackAdvance");var r=t.name;if(e||Ze('type "'+r+'" must have a positive integer typeid pointer'),Pe.hasOwnProperty(e)){if(i.ignoreDuplicateRegistrations)return;Ze("Cannot register type '"+r+"' twice")}if(Pe[e]=t,delete Le[e],Ne.hasOwnProperty(e)){var n=Ne[e];delete Ne[e],n.forEach((function(e){e()}))}}function $e(e){if(!(this instanceof ct&&e instanceof ct))return!1;for(var t=this.$$.ptrType.registeredClass,i=this.$$.ptr,r=e.$$.ptrType.registeredClass,n=e.$$.ptr;t.baseClass;)i=t.upcast(i),t=t.baseClass;for(;r.baseClass;)n=r.upcast(n),r=r.baseClass;return t===r&&i===n}function Je(e){return{count:e.count,deleteScheduled:e.deleteScheduled,preservePointerOnDelete:e.preservePointerOnDelete,ptr:e.ptr,ptrType:e.ptrType,smartPtr:e.smartPtr,smartPtrType:e.smartPtrType}}function Qe(e){Ze(e.$$.ptrType.registeredClass.name+" instance already deleted")}var et=!1;function tt(e){}function it(e){e.count.value-=1,0===e.count.value&&function(e){e.smartPtr?e.smartPtrType.rawDestructor(e.smartPtr):e.ptrType.registeredClass.rawDestructor(e.ptr)}(e)}function rt(e){return"undefined"==typeof FinalizationGroup?(rt=function(e){return e},e):(et=new FinalizationGroup((function(e){for(var t=e.next();!t.done;t=e.next()){var i=t.value;i.ptr?it(i):console.warn("object already deleted: "+i.ptr)}})),tt=function(e){et.unregister(e.$$)},(rt=function(e){return et.register(e,e.$$,e.$$),e})(e))}function nt(){if(this.$$.ptr||Qe(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var e=rt(Object.create(Object.getPrototypeOf(this),{$$:{value:Je(this.$$)}}));return e.$$.count.value+=1,e.$$.deleteScheduled=!1,e}function st(){this.$$.ptr||Qe(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&Ze("Object already scheduled for deletion"),tt(this),it(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)}function at(){return!this.$$.ptr}var ot=void 0,lt=[];function ht(){for(;lt.length;){var e=lt.pop();e.$$.deleteScheduled=!1,e.delete()}}function ut(){return this.$$.ptr||Qe(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&Ze("Object already scheduled for deletion"),lt.push(this),1===lt.length&&ot&&ot(ht),this.$$.deleteScheduled=!0,this}function ct(){}var pt={};function dt(e,t,i){if(void 0===e[t].overloadTable){var r=e[t];e[t]=function(){return e[t].overloadTable.hasOwnProperty(arguments.length)||Ze("Function '"+i+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+e[t].overloadTable+")!"),e[t].overloadTable[arguments.length].apply(this,arguments)},e[t].overloadTable=[],e[t].overloadTable[r.argCount]=r}}function ft(e,t,i){n.hasOwnProperty(e)?((void 0===i||void 0!==n[e].overloadTable&&void 0!==n[e].overloadTable[i])&&Ze("Cannot register public name '"+e+"' twice"),dt(n,e,e),n.hasOwnProperty(i)&&Ze("Cannot register multiple overloads of a function with the same number of arguments ("+i+")!"),n[e].overloadTable[i]=t):(n[e]=t,void 0!==i&&(n[e].numArguments=i))}function mt(e,t,i,r,n,s,a,o){this.name=e,this.constructor=t,this.instancePrototype=i,this.rawDestructor=r,this.baseClass=n,this.getActualType=s,this.upcast=a,this.downcast=o,this.pureVirtualFunctions=[]}function gt(e,t,i){for(;t!==i;)t.upcast||Ze("Expected null or instance of "+i.name+", got an instance of "+t.name),e=t.upcast(e),t=t.baseClass;return e}function yt(e,t){if(null===t)return this.isReference&&Ze("null is not a valid "+this.name),0;t.$$||Ze('Cannot pass "'+Wt(t)+'" as a '+this.name),t.$$.ptr||Ze("Cannot pass deleted object as a pointer of type "+this.name);var i=t.$$.ptrType.registeredClass;return gt(t.$$.ptr,i,this.registeredClass)}function vt(e,t){var i;if(null===t)return this.isReference&&Ze("null is not a valid "+this.name),this.isSmartPointer?(i=this.rawConstructor(),null!==e&&e.push(this.rawDestructor,i),i):0;t.$$||Ze('Cannot pass "'+Wt(t)+'" as a '+this.name),t.$$.ptr||Ze("Cannot pass deleted object as a pointer of type "+this.name),!this.isConst&&t.$$.ptrType.isConst&&Ze("Cannot convert argument of type "+(t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name)+" to parameter type "+this.name);var r=t.$$.ptrType.registeredClass;if(i=gt(t.$$.ptr,r,this.registeredClass),this.isSmartPointer)switch(void 0===t.$$.smartPtr&&Ze("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:t.$$.smartPtrType===this?i=t.$$.smartPtr:Ze("Cannot convert argument of type "+(t.$$.smartPtrType?t.$$.smartPtrType.name:t.$$.ptrType.name)+" to parameter type "+this.name);break;case 1:i=t.$$.smartPtr;break;case 2:if(t.$$.smartPtrType===this)i=t.$$.smartPtr;else{var n=t.clone();i=this.rawShare(i,jt((function(){n.delete()}))),null!==e&&e.push(this.rawDestructor,i)}break;default:Ze("Unsupporting sharing policy")}return i}function Tt(e,t){if(null===t)return this.isReference&&Ze("null is not a valid "+this.name),0;t.$$||Ze('Cannot pass "'+Wt(t)+'" as a '+this.name),t.$$.ptr||Ze("Cannot pass deleted object as a pointer of type "+this.name),t.$$.ptrType.isConst&&Ze("Cannot convert argument of type "+t.$$.ptrType.name+" to parameter type "+this.name);var i=t.$$.ptrType.registeredClass;return gt(t.$$.ptr,i,this.registeredClass)}function xt(e){return this.rawGetPointee&&(e=this.rawGetPointee(e)),e}function bt(e){this.rawDestructor&&this.rawDestructor(e)}function _t(e){null!==e&&e.delete()}function Et(e,t,i){if(t===i)return e;if(void 0===i.baseClass)return null;var r=Et(e,t,i.baseClass);return null===r?null:i.downcast(r)}function wt(){return Object.keys(Mt).length}function St(){var e=[];for(var t in Mt)Mt.hasOwnProperty(t)&&e.push(Mt[t]);return e}function It(e){ot=e,lt.length&&ot&&ot(ht)}var Mt={};function At(e,t){return t=function(e,t){for(void 0===t&&Ze("ptr should not be undefined");e.baseClass;)t=e.upcast(t),e=e.baseClass;return t}(e,t),Mt[t]}function Dt(e,t){return(!t.ptrType||!t.ptr)&&He("makeClassHandle requires ptr and ptrType"),!!t.smartPtrType!=!!t.smartPtr&&He("Both smartPtrType and smartPtr must be specified"),t.count={value:1},rt(Object.create(e,{$$:{value:t}}))}function Ot(e){var t=this.getPointee(e);if(!t)return this.destructor(e),null;var i=At(this.registeredClass,t);if(void 0!==i){if(0===i.$$.count.value)return i.$$.ptr=t,i.$$.smartPtr=e,i.clone();var r=i.clone();return this.destructor(e),r}function n(){return this.isSmartPointer?Dt(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:t,smartPtrType:this,smartPtr:e}):Dt(this.registeredClass.instancePrototype,{ptrType:this,ptr:e})}var s,a=this.registeredClass.getActualType(t),o=pt[a];if(!o)return n.call(this);s=this.isConst?o.constPointerType:o.pointerType;var l=Et(t,this.registeredClass,s.registeredClass);return null===l?n.call(this):this.isSmartPointer?Dt(s.registeredClass.instancePrototype,{ptrType:s,ptr:l,smartPtrType:this,smartPtr:e}):Dt(s.registeredClass.instancePrototype,{ptrType:s,ptr:l})}function Rt(e,t,i,r,n,s,a,o,l,h,u){this.name=e,this.registeredClass=t,this.isReference=i,this.isConst=r,this.isSmartPointer=n,this.pointeeType=s,this.sharingPolicy=a,this.rawGetPointee=o,this.rawConstructor=l,this.rawShare=h,this.rawDestructor=u,n||void 0!==t.baseClass?this.toWireType=vt:r?(this.toWireType=yt,this.destructorFunction=null):(this.toWireType=Tt,this.destructorFunction=null)}function Ct(e,t,i){n.hasOwnProperty(e)||He("Replacing nonexistant public symbol"),void 0!==n[e].overloadTable&&void 0!==i?n[e].overloadTable[i]=t:(n[e]=t,n[e].argCount=i)}function Nt(e,t){var i=-1!=(e=Xe(e)).indexOf("j")?function(e,t){M(e.indexOf("j")>=0,"getDynCaller should only be called with i64 sigs");var i=[];return function(){i.length=arguments.length;for(var r=0;r>2)+r>>>0]);return i}function kt(e,t,i,r,n){var s=t.length;s<2&&Ze("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var a=null!==t[1]&&null!==i,o=!1,l=1;l0?", ":"")+c),p+=(h?"var rv = ":"")+"invoker(fn"+(c.length>0?", ":"")+c+");\n",o)p+="runDestructors(destructors);\n";else for(l=a?1:2;l4&&0==--Gt[e].refcount&&(Gt[e]=void 0,Bt.push(e))}function Ht(){for(var e=0,t=5;t>>2])};case 3:return function(e){return this.fromWireType(H[e>>>3])};default:throw new TypeError("Unknown float type: "+e)}}function Xt(e,t,i){switch(t){case 0:return i?function(e){return L[e>>>0]}:function(e){return F[e>>>0]};case 1:return i?function(e){return U[e>>>1]}:function(e){return k[e>>>1]};case 2:return i?function(e){return B[e>>>2]}:function(e){return G[e>>>2]};default:throw new TypeError("Unknown integer type: "+e)}}function qt(e){return e||Ze("Cannot use deleted val. handle = "+e),Gt[e].value}function Zt(e,t){var i=Pe[e];return void 0===i&&Ze(t+" has unknown type "+Lt(e)),i}var Kt,$t={};function Jt(e){var t=$t[e];return void 0===t?Xe(e):t}function Qt(){return"object"==typeof globalThis?globalThis:Function("return this")()}Kt=d?function(){var e=process.hrtime();return 1e3*e[0]+e[1]/1e6}:"undefined"!=typeof dateNow?dateNow:function(){return performance.now()};var ei=!0;function ti(e){try{return S.grow(e-P.byteLength+65535>>>16),$(S.buffer),1}catch(e){}}var ii={};function ri(){if(!ri.strings){var e={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:h||"./this.program"};for(var t in ii)e[t]=ii[t];var i=[];for(var t in e)i.push(t+"="+e[t]);ri.strings=i}return ri.strings}function ni(e){return e%4==0&&(e%100!=0||e%400==0)}function si(e,t){for(var i=0,r=0;r<=t;i+=e[r++]);return i}var ai=[31,29,31,30,31,30,31,31,30,31,30,31],oi=[31,28,31,30,31,30,31,31,30,31,30,31];function li(e,t){for(var i=new Date(e.getTime());t>0;){var r=ni(i.getFullYear()),n=i.getMonth(),s=(r?ai:oi)[n];if(!(t>s-i.getDate()))return i.setDate(i.getDate()+t),i;t-=s-i.getDate()+1,i.setDate(1),n<11?i.setMonth(n+1):(i.setMonth(0),i.setFullYear(i.getFullYear()+1))}return i}function hi(e,t,i,r){var n=B[r+40>>>2],s={tm_sec:B[r>>>2],tm_min:B[r+4>>>2],tm_hour:B[r+8>>>2],tm_mday:B[r+12>>>2],tm_mon:B[r+16>>>2],tm_year:B[r+20>>>2],tm_wday:B[r+24>>>2],tm_yday:B[r+28>>>2],tm_isdst:B[r+32>>>2],tm_gmtoff:B[r+36>>>2],tm_zone:n?O(n):""},a=O(i),o={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var l in o)a=a.replace(new RegExp(l,"g"),o[l]);var h=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],u=["January","February","March","April","May","June","July","August","September","October","November","December"];function c(e,t,i){for(var r="number"==typeof e?e.toString():e||"";r.length0?1:0}var r;return 0===(r=i(e.getFullYear()-t.getFullYear()))&&0===(r=i(e.getMonth()-t.getMonth()))&&(r=i(e.getDate()-t.getDate())),r}function f(e){switch(e.getDay()){case 0:return new Date(e.getFullYear()-1,11,29);case 1:return e;case 2:return new Date(e.getFullYear(),0,3);case 3:return new Date(e.getFullYear(),0,2);case 4:return new Date(e.getFullYear(),0,1);case 5:return new Date(e.getFullYear()-1,11,31);case 6:return new Date(e.getFullYear()-1,11,30)}}function m(e){var t=li(new Date(e.tm_year+1900,0,1),e.tm_yday),i=new Date(t.getFullYear(),0,4),r=new Date(t.getFullYear()+1,0,4),n=f(i),s=f(r);return d(n,t)<=0?d(s,t)<=0?t.getFullYear()+1:t.getFullYear():t.getFullYear()-1}var g={"%a":function(e){return h[e.tm_wday].substring(0,3)},"%A":function(e){return h[e.tm_wday]},"%b":function(e){return u[e.tm_mon].substring(0,3)},"%B":function(e){return u[e.tm_mon]},"%C":function(e){return p((e.tm_year+1900)/100|0,2)},"%d":function(e){return p(e.tm_mday,2)},"%e":function(e){return c(e.tm_mday,2," ")},"%g":function(e){return m(e).toString().substring(2)},"%G":function(e){return m(e)},"%H":function(e){return p(e.tm_hour,2)},"%I":function(e){var t=e.tm_hour;return 0==t?t=12:t>12&&(t-=12),p(t,2)},"%j":function(e){return p(e.tm_mday+si(ni(e.tm_year+1900)?ai:oi,e.tm_mon-1),3)},"%m":function(e){return p(e.tm_mon+1,2)},"%M":function(e){return p(e.tm_min,2)},"%n":function(){return"\n"},"%p":function(e){return e.tm_hour>=0&&e.tm_hour<12?"AM":"PM"},"%S":function(e){return p(e.tm_sec,2)},"%t":function(){return"\t"},"%u":function(e){return e.tm_wday||7},"%U":function(e){var t=new Date(e.tm_year+1900,0,1),i=0===t.getDay()?t:li(t,7-t.getDay()),r=new Date(e.tm_year+1900,e.tm_mon,e.tm_mday);if(d(i,r)<0){var n=si(ni(r.getFullYear())?ai:oi,r.getMonth()-1)-31,s=31-i.getDate()+n+r.getDate();return p(Math.ceil(s/7),2)}return 0===d(i,t)?"01":"00"},"%V":function(e){var t,i=new Date(e.tm_year+1900,0,4),r=new Date(e.tm_year+1901,0,4),n=f(i),s=f(r),a=li(new Date(e.tm_year+1900,0,1),e.tm_yday);return d(a,n)<0?"53":d(s,a)<=0?"01":(t=n.getFullYear()=0;return t=(t=Math.abs(t)/60)/60*100+t%60,(i?"+":"-")+String("0000"+t).slice(-4)},"%Z":function(e){return e.tm_zone},"%%":function(){return"%"}};for(var l in g)a.indexOf(l)>=0&&(a=a.replace(new RegExp(l,"g"),g[l](s)));var y=di(a,!1);return y.length>t?0:(function(e,t){L.set(e,t>>>0)}(y,e),y.length-1)}var ui=function(e,t,i,r){e||(e=this),this.parent=e,this.mount=e.mount,this.mounted=null,this.id=Ae.nextInode++,this.name=t,this.mode=i,this.node_ops={},this.stream_ops={},this.rdev=r},ci=365,pi=146;function di(e,t,i){var r=i>0?i:N(e)+1,n=new Array(r),s=R(e,n,0,n.length);return t&&(n.length=s),n}Object.defineProperties(ui.prototype,{read:{get:function(){return(this.mode&ci)===ci},set:function(e){e?this.mode|=ci:this.mode&=~ci}},write:{get:function(){return(this.mode&pi)===pi},set:function(e){e?this.mode|=pi:this.mode&=~pi}},isFolder:{get:function(){return Ae.isDir(this.mode)}},isDevice:{get:function(){return Ae.isChrdev(this.mode)}}}),Ae.FSNode=ui,Ae.staticInit(),n.FS_createPath=Ae.createPath,n.FS_createDataFile=Ae.createDataFile,n.FS_createPreloadedFile=Ae.createPreloadedFile,n.FS_createLazyFile=Ae.createLazyFile,n.FS_createDevice=Ae.createDevice,n.FS_unlink=Ae.unlink,ze=n.InternalError=Ge(Error,"InternalError"),function(){for(var e=new Array(256),t=0;t<256;++t)e[t]=String.fromCharCode(t);Ye=e}(),qe=n.BindingError=Ge(Error,"BindingError"),ct.prototype.isAliasOf=$e,ct.prototype.clone=nt,ct.prototype.delete=st,ct.prototype.isDeleted=at,ct.prototype.deleteLater=ut,Rt.prototype.getPointee=xt,Rt.prototype.destructor=bt,Rt.prototype.argPackAdvance=8,Rt.prototype.readValueFromPointer=Ce,Rt.prototype.deleteObject=_t,Rt.prototype.fromWireType=Ot,n.getInheritedInstanceCount=wt,n.getLiveInheritedInstances=St,n.flushPendingDeletes=ht,n.setDelayFunction=It,Pt=n.UnboundTypeError=Ge(Error,"UnboundTypeError"),n.count_emval_handles=Ht,n.get_first_emval=Vt,te.push({func:function(){gi()}});var fi,mi={x:function(e,t,i,r){he("Assertion failed: "+O(e)+", at: "+[t?O(t):"unknown filename",i,r?O(r):"unknown function"])},A:function(e,t,i){De.varargs=i;try{var r=De.getStreamFromFD(e);switch(t){case 0:return(n=De.get())<0?-28:Ae.open(r.path,r.flags,0,n).fd;case 1:case 2:case 13:case 14:return 0;case 3:return r.flags;case 4:var n=De.get();return r.flags|=n,0;case 12:return n=De.get(),U[n+0>>>1]=2,0;case 16:case 8:default:return-28;case 9:return _e(28),-1}}catch(e){return(void 0===Ae||!(e instanceof Ae.ErrnoError))&&he(e),-e.errno}},P:function(e,t,i){De.varargs=i;try{var r=De.getStreamFromFD(e);switch(t){case 21509:case 21505:case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:case 21523:case 21524:return r.tty?0:-59;case 21519:if(!r.tty)return-59;var n=De.get();return B[n>>>2]=0,0;case 21520:return r.tty?-28:-59;case 21531:return n=De.get(),Ae.ioctl(r,t,n);default:he("bad ioctl syscall "+t)}}catch(e){return(void 0===Ae||!(e instanceof Ae.ErrnoError))&&he(e),-e.errno}},Q:function(e,t,i){De.varargs=i;try{var r=De.getStr(e),n=De.get();return Ae.open(r,t,n).fd}catch(e){return(void 0===Ae||!(e instanceof Ae.ErrnoError))&&he(e),-e.errno}},U:function(e){var t=Oe[e];delete Oe[e];var i=t.elements,r=i.length,n=i.map((function(e){return e.getterReturnType})).concat(i.map((function(e){return e.setterArgumentType}))),s=t.rawConstructor,a=t.rawDestructor;Ve([e],n,(function(e){return i.forEach((function(t,i){var n=e[i],s=t.getter,a=t.getterContext,o=e[i+r],l=t.setter,h=t.setterContext;t.read=function(e){return n.fromWireType(s(a,e))},t.write=function(e,t){var i=[];l(h,e,o.toWireType(i,t)),Re(i)}})),[{name:t.name,fromWireType:function(e){for(var t=new Array(r),n=0;n>>s])},destructorFunction:null})},v:function(e,t,i,r,n,s,a,o,l,h,u,c,p){u=Xe(u),s=Nt(n,s),o&&(o=Nt(a,o)),h&&(h=Nt(l,h)),p=Nt(c,p);var d=ke(u);ft(d,(function(){Ft("Cannot construct "+u+" due to unbound types",[r])})),Ve([e,t,i],r?[r]:[],(function(t){var i,n;t=t[0],n=r?(i=t.registeredClass).instancePrototype:ct.prototype;var a=Be(d,(function(){if(Object.getPrototypeOf(this)!==l)throw new qe("Use 'new' to construct "+u);if(void 0===c.constructor_body)throw new qe(u+" has no accessible constructor");var e=c.constructor_body[arguments.length];if(void 0===e)throw new qe("Tried to invoke ctor of "+u+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(c.constructor_body).toString()+") parameters instead!");return e.apply(this,arguments)})),l=Object.create(n,{constructor:{value:a}});a.prototype=l;var c=new mt(u,a,l,p,i,s,o,h),f=new Rt(u,c,!0,!1,!1),m=new Rt(u+"*",c,!1,!1,!1),g=new Rt(u+" const*",c,!1,!0,!1);return pt[e]={pointerType:m,constPointerType:g},Ct(d,a),[f,m,g]}))},u:function(e,t,i,r,n,s){M(t>0);var a=Ut(t,i);n=Nt(r,n);var o=[s],l=[];Ve([],[e],(function(e){var i="constructor "+(e=e[0]).name;if(void 0===e.registeredClass.constructor_body&&(e.registeredClass.constructor_body=[]),void 0!==e.registeredClass.constructor_body[t-1])throw new qe("Cannot register multiple constructors with identical number of parameters ("+(t-1)+") for class '"+e.name+"'! Overload resolution is currently only performed using the parameter count, not actual type info!");return e.registeredClass.constructor_body[t-1]=function(){Ft("Cannot construct "+e.name+" due to unbound types",a)},Ve([],a,(function(r){return e.registeredClass.constructor_body[t-1]=function(){arguments.length!==t-1&&Ze(i+" called with "+arguments.length+" arguments, expected "+(t-1)),l.length=0,o.length=t;for(var e=1;e>>o}}var l=-1!=t.indexOf("unsigned");Ke(e,{name:t,fromWireType:a,toWireType:function(e,i){if("number"!=typeof i&&"boolean"!=typeof i)throw new TypeError('Cannot convert "'+Wt(i)+'" to '+this.name);if(in)throw new TypeError('Passing a number "'+Wt(i)+'" from JS side to C/C++ side to an argument of type "'+t+'", which is outside the valid range ['+r+", "+n+"]!");return l?i>>>0:0|i},argPackAdvance:8,readValueFromPointer:Xt(t,s,0!==r),destructorFunction:null})},k:function(e,t,i){var r=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][t];function n(e){var t=G,i=t[(e>>=2)>>>0],n=t[e+1>>>0];return new r(P,n,i)}Ke(e,{name:i=Xe(i),fromWireType:n,argPackAdvance:8,readValueFromPointer:n},{ignoreDuplicateRegistrations:!0})},D:function(e,t){var i="std::string"===(t=Xe(t));Ke(e,{name:t,fromWireType:function(e){var t,r=G[e>>>2];if(i)for(var n=e+4,s=0;s<=r;++s){var a=e+4+s;if(s==r||0==F[a>>>0]){var o=O(n,a-n);void 0===t?t=o:(t+=String.fromCharCode(0),t+=o),n=a+1}}else{var l=new Array(r);for(s=0;s>>0]);t=l.join("")}return xi(e),t},toWireType:function(e,t){t instanceof ArrayBuffer&&(t=new Uint8Array(t));var r="string"==typeof t;r||t instanceof Uint8Array||t instanceof Uint8ClampedArray||t instanceof Int8Array||Ze("Cannot pass non-string to std::string");var n=(i&&r?function(){return N(t)}:function(){return t.length})(),s=yi(4+n+1);if(G[(s>>>=0)>>>2]=n,i&&r)C(t,s+4,n+1);else if(r)for(var a=0;a255&&(xi(s),Ze("String has UTF-16 code units that do not fit in 8 bits")),F[s+4+a>>>0]=o}else for(a=0;a>>0]=t[a];return null!==e&&e.push(xi,s),s},argPackAdvance:8,readValueFromPointer:Ce,destructorFunction:function(e){xi(e)}})},w:function(e,t,i){var r,n,s,a,o;i=Xe(i),2===t?(r=j,n=W,a=Y,s=function(){return k},o=1):4===t&&(r=X,n=q,a=Z,s=function(){return G},o=2),Ke(e,{name:i,fromWireType:function(e){for(var i,n=G[e>>>2],a=s(),l=e+4,h=0;h<=n;++h){var u=e+4+h*t;if(h==n||0==a[u>>>o]){var c=r(l,u-l);void 0===i?i=c:(i+=String.fromCharCode(0),i+=c),l=u+t}}return xi(e),i},toWireType:function(e,r){"string"!=typeof r&&Ze("Cannot pass non-string to C++ string type "+i);var s=a(r),l=yi(4+s+t);return G[(l>>>=0)>>>2]=s>>o,n(r,l+4,s+t),null!==e&&e.push(xi,l),l},argPackAdvance:8,readValueFromPointer:Ce,destructorFunction:function(e){xi(e)}})},V:function(e,t,i,r,n,s){Oe[e]={name:Xe(t),rawConstructor:Nt(i,r),rawDestructor:Nt(n,s),elements:[]}},g:function(e,t,i,r,n,s,a,o,l){Oe[e].elements.push({getterReturnType:t,getter:Nt(i,r),getterContext:n,setterArgumentType:s,setter:Nt(a,o),setterContext:l})},t:function(e,t,i,r,n,s){je[e]={name:Xe(t),rawConstructor:Nt(i,r),rawDestructor:Nt(n,s),fields:[]}},j:function(e,t,i,r,n,s,a,o,l,h){je[e].fields.push({fieldName:Xe(t),getterReturnType:i,getter:Nt(r,n),getterContext:s,setterArgumentType:a,setter:Nt(o,l),setterContext:h})},T:function(e,t){Ke(e,{isVoid:!0,name:t=Xe(t),argPackAdvance:0,fromWireType:function(){},toWireType:function(e,t){}})},q:function(e,t,i){e=qt(e),t=Zt(t,"emval::as");var r=[],n=jt(r);return B[i>>>2]=n,t.toWireType(r,e)},W:function(e,t,i,r){e=qt(e);for(var n=function(e,t){for(var i=new Array(e),r=0;r>2)+r>>>0],"parameter "+r);return i}(t,i),s=new Array(t),a=0;a4&&(Gt[e].refcount+=1)},N:function(e,t){return(e=qt(e))instanceof(t=qt(t))},E:function(e){return"number"==typeof(e=qt(e))},y:function(){return jt([])},f:function(e){return jt(Jt(e))},r:function(){return jt({})},p:function(e){Re(Gt[e].value),zt(e)},i:function(e,t,i){e=qt(e),t=qt(t),i=qt(i),e[t]=i},e:function(e,t){return jt((e=Zt(e,"_emval_take_value")).readValueFromPointer(t))},c:function(){he()},M:function(e,t){var i;if(0===e)i=Date.now();else{if(1!==e&&4!==e||!ei)return _e(28),-1;i=Kt()}return B[t>>>2]=i/1e3|0,B[t+4>>>2]=i%1e3*1e3*1e3|0,0},I:function(e,t,i){F.copyWithin(e>>>0,t>>>0,t+i>>>0)},o:function(e){e>>>=0;var t=F.length,i=4294967296;if(e>i)return!1;for(var r=1;r<=4;r*=2){var n=t*(1+.2/r);if(n=Math.min(n,e+100663296),ti(Math.min(i,K(Math.max(16777216,e,n),65536))))return!0}return!1},K:function(e,t){try{var i=0;return ri().forEach((function(r,n){var s=t+i;B[e+4*n>>>2]=s,function(e,t,i){for(var r=0;r>>0]=e.charCodeAt(r);i||(L[t>>>0]=0)}(r,s),i+=r.length+1})),0}catch(e){return(void 0===Ae||!(e instanceof Ae.ErrnoError))&&he(e),e.errno}},L:function(e,t){try{var i=ri();B[e>>>2]=i.length;var r=0;return i.forEach((function(e){r+=e.length+1})),B[t>>>2]=r,0}catch(e){return(void 0===Ae||!(e instanceof Ae.ErrnoError))&&he(e),e.errno}},B:function(e){try{var t=De.getStreamFromFD(e);return Ae.close(t),0}catch(e){return(void 0===Ae||!(e instanceof Ae.ErrnoError))&&he(e),e.errno}},O:function(e,t,i,r){try{var n=De.getStreamFromFD(e),s=De.doReadv(n,t,i);return B[r>>>2]=s,0}catch(e){return(void 0===Ae||!(e instanceof Ae.ErrnoError))&&he(e),e.errno}},G:function(e,t,i,r,n){try{var s=De.getStreamFromFD(e),a=4294967296*i+(t>>>0),o=9007199254740992;return a<=-o||a>=o?-61:(Ae.llseek(s,a,r),ye=[s.position>>>0,(ge=s.position,+Math.abs(ge)>=1?ge>0?(0|Math.min(+Math.floor(ge/4294967296),4294967295))>>>0:~~+Math.ceil((ge-+(~~ge>>>0))/4294967296)>>>0:0)],B[n>>>2]=ye[0],B[n+4>>>2]=ye[1],s.getdents&&0===a&&0===r&&(s.getdents=null),0)}catch(e){return(void 0===Ae||!(e instanceof Ae.ErrnoError))&&he(e),e.errno}},z:function(e,t,i,r){try{var n=De.getStreamFromFD(e),s=De.doWritev(n,t,i);return B[r>>>2]=s,0}catch(e){return(void 0===Ae||!(e instanceof Ae.ErrnoError))&&he(e),e.errno}},a:S,H:function(e){w(0|e)},J:function(e,t,i,r){return hi(e,t,i,r)}},gi=(function(){var e={a:mi};function t(e,t){var i=e.exports;n.asm=i,Q=n.asm.X,le()}function i(e){t(e.instance)}function s(t){return(b||!c&&!p||"function"!=typeof fetch||fe(ve)?Promise.resolve().then(Te):fetch(ve,{credentials:"same-origin"}).then((function(e){if(!e.ok)throw"failed to load wasm binary file at '"+ve+"'";return e.arrayBuffer()})).catch((function(){return Te()}))).then((function(t){return WebAssembly.instantiate(t,e)})).then(t,(function(e){x("failed to asynchronously prepare wasm: "+e),he(e)}))}if(oe(),n.instantiateWasm)try{return n.instantiateWasm(e,t)}catch(e){return x("Module.instantiateWasm callback failed with error: "+e),!1}(b||"function"!=typeof WebAssembly.instantiateStreaming||pe(ve)||fe(ve)||"function"!=typeof fetch?s(i):fetch(ve,{credentials:"same-origin"}).then((function(t){return WebAssembly.instantiateStreaming(t,e).then(i,(function(e){return x("wasm streaming compile failed: "+e),x("falling back to ArrayBuffer instantiation"),s(i)}))}))).catch(r)}(),n.___wasm_call_ctors=function(){return(gi=n.___wasm_call_ctors=n.asm.Y).apply(null,arguments)}),yi=(n._main=function(){return(n._main=n.asm.Z).apply(null,arguments)},n._malloc=function(){return(yi=n._malloc=n.asm._).apply(null,arguments)}),vi=n.___getTypeName=function(){return(vi=n.___getTypeName=n.asm.$).apply(null,arguments)},Ti=(n.___embind_register_native_and_builtin_types=function(){return(n.___embind_register_native_and_builtin_types=n.asm.aa).apply(null,arguments)},n.___errno_location=function(){return(Ti=n.___errno_location=n.asm.ba).apply(null,arguments)}),xi=n._free=function(){return(xi=n._free=n.asm.ca).apply(null,arguments)};function bi(e){this.name="ExitStatus",this.message="Program terminated with exit("+e+")",this.status=e}function _i(e){var t=n._main;try{!function(e,t){t&&_&&0===e||(_||(n.onExit&&n.onExit(e),I=!0),u(e,new bi(e)))}(t(0,0),!0)}catch(e){if(e instanceof bi)return;if("unwind"==e)return void(_=!0);var i=e;e&&"object"==typeof e&&e.stack&&(i=[e,e.stack]),x("exception thrown: "+i),u(1,e)}}function Ei(e){function i(){fi||(fi=!0,n.calledRun=!0,!I&&(!n.noFSInit&&!Ae.init.initialized&&Ae.init(),Se.init(),xe(te),Ae.ignorePermissions=!1,xe(ie),t(n),n.onRuntimeInitialized&&n.onRuntimeInitialized(),wi&&_i(),function(){if(n.postRun)for("function"==typeof n.postRun&&(n.postRun=[n.postRun]);n.postRun.length;)e=n.postRun.shift(),re.unshift(e);var e;xe(re)}()))}e=e||l,ne>0||(function(){if(n.preRun)for("function"==typeof n.preRun&&(n.preRun=[n.preRun]);n.preRun.length;)e=n.preRun.shift(),ee.unshift(e);var e;xe(ee)}(),ne>0)||(n.setStatus?(n.setStatus("Running..."),setTimeout((function(){setTimeout((function(){n.setStatus("")}),1),i()}),1)):i())}if(n.dynCall_jiji=function(){return(n.dynCall_jiji=n.asm.da).apply(null,arguments)},n.dynCall_viijii=function(){return(n.dynCall_viijii=n.asm.ea).apply(null,arguments)},n.dynCall_iiiiiijj=function(){return(n.dynCall_iiiiiijj=n.asm.fa).apply(null,arguments)},n.dynCall_iiiiij=function(){return(n.dynCall_iiiiij=n.asm.ga).apply(null,arguments)},n.dynCall_iiiiijj=function(){return(n.dynCall_iiiiijj=n.asm.ha).apply(null,arguments)},n.addRunDependency=oe,n.removeRunDependency=le,n.FS_createPath=Ae.createPath,n.FS_createDataFile=Ae.createDataFile,n.FS_createPreloadedFile=Ae.createPreloadedFile,n.FS_createLazyFile=Ae.createLazyFile,n.FS_createDevice=Ae.createDevice,n.FS_unlink=Ae.unlink,n.FS=Ae,ae=function e(){fi||Ei(),fi||(ae=e)},n.run=Ei,n.preInit)for("function"==typeof n.preInit&&(n.preInit=[n.preInit]);n.preInit.length>0;)n.preInit.pop()();var wi=!0;return n.noInitialRun&&(wi=!1),_=!0,Ei(),e.ready});"object"==typeof e&&"object"==typeof t?t.exports=r:"function"==typeof define&&define.amd?define([],(function(){return r})):"object"==typeof e&&(e.WebIFCWasm=r)}}),sbt=3821786052,abt=2296667514,obt=3630933823,lbt=4288193352,cbt=2874132201,ubt=618182010,hbt=1635779807,pbt=2603310189,dbt=3406155212,fbt=1634111441,mbt=177149247,gbt=1411407467,vbt=3352864051,ybt=2056796094,Tbt=1871374353,Ebt=3087945054,bbt=3001207471,xbt=325726236,Ibt=749761778,_bt=3199563722,Sbt=2483840362,wbt=3379348081,Rbt=3239324667,Mbt=4263986512,Dbt=53199957,Cbt=2029264950,Abt=3512275521,Obt=1674181508,Pbt=669184980,Nbt=639542469,Lbt=411424972,Fbt=130549933,Hbt=3869604511,Ubt=3798115385,Bbt=1310608509,kbt=2705031697,Gbt=3460190687,Vbt=3207858831,zbt=277319702,jbt=1532957894,Wbt=4261334040,qbt=3125803723,Ybt=2740243338,Xbt=1967976161,$bt=2461110595,Zbt=2887950389,Kbt=167062518,Jbt=753842376,Qbt=2906023776,ext=819618141,txt=4196446775,rxt=3649138523,ixt=616511568,nxt=1334484129,sxt=32344328,axt=231477066,oxt=3649129432,lxt=2736907675,cxt=4037036970,uxt=1136057603,hxt=1560379544,pxt=3367102660,dxt=1387855156,fxt=2069777674,mxt=1260505505,gxt=4182860854,vxt=2581212453,yxt=2713105998,Txt=644574406,Ext=963979645,bxt=4031249490,xxt=3299480353,Ixt=2979338954,_xt=39481116,Sxt=1095909175,wxt=1909888760,Rxt=1950629157,Mxt=3124254112,Dxt=1177604601,Cxt=2938176219,Axt=2188180465,Oxt=2898889636,Pxt=635142910,Nxt=395041908,Lxt=3758799889,Fxt=3293546465,Hxt=1051757585,Uxt=2674252688,Bxt=4217484030,kxt=1285652485,Gxt=3999819293,Vxt=3203706013,zxt=1123145078,jxt=574549367,Wxt=1675464909,qxt=2059837836,Yxt=59481748,Xxt=3749851601,$xt=3486308946,Zxt=3331915920,Kxt=1416205885,Jxt=3150382593,Qxt=3902619387,eIt=2951183804,tIt=3296154744,rIt=2197970202,iIt=2611217952,nIt=2937912522,sIt=1383045692,aIt=1062206242,oIt=1677625105,lIt=3893394355,cIt=747523909,uIt=647927063,hIt=2205249479,pIt=639361253,dIt=2301859152,fIt=776857604,mIt=3285139300,gIt=3264961684,vIt=843113511,yIt=905975707,TIt=300633059,EIt=3221913625,bIt=400855858,xIt=2542286263,IIt=3875453745,_It=3732776249,SIt=15328376,wIt=2485617015,RIt=1485152156,MIt=3571504051,DIt=3850581409,CIt=2272882330,AIt=2816379211,OIt=2510884976,PIt=370225590,NIt=1981873012,LIt=2859738748,FIt=45288368,HIt=2614616156,UIt=2732653382,BIt=775493141,kIt=1959218052,GIt=3898045240,VIt=2185764099,zIt=1060000209,jIt=4105962743,WIt=488727124,qIt=1525564444,YIt=2559216714,XIt=2574617495,$It=3419103109,ZIt=3050246964,KIt=3293443760,JIt=25142252,QIt=578613899,e_t=2889183280,t_t=2713554722,r_t=4136498852,i_t=335055490,n_t=3640358203,s_t=2954562838,a_t=1785450214,o_t=1466758467,l_t=3895139033,c_t=1419761937,u_t=602808272,h_t=1973544240,p_t=1916426348,d_t=3295246426,f_t=1815067380,m_t=2506170314,g_t=2147822146,v_t=539742890,y_t=3495092785,T_t=1457835157,E_t=2601014836,b_t=2827736869,x_t=2629017746,I_t=1186437898,__t=3800577675,S_t=1105321065,w_t=2367409068,R_t=3510044353,M_t=1213902940,D_t=4074379575,C_t=3961806047,A_t=3426335179,O_t=1306400036,P_t=3632507154,N_t=1765591967,L_t=1045800335,F_t=2949456006,H_t=32440307,U_t=1335981549,B_t=2635815018,k_t=1945343521,G_t=1052013943,V_t=1599208980,z_t=562808652,j_t=1062813311,W_t=2063403501,q_t=1945004755,Y_t=3256556792,X_t=3040386961,$_t=3849074793,Z_t=3041715199,K_t=3205830791,J_t=1154170062,Q_t=770865208,eSt=3732053477,tSt=395920057,rSt=2963535650,iSt=1714330368,nSt=3242481149,sSt=526551008,aSt=2323601079,oSt=445594917,lSt=4006246654,cSt=342316401,uSt=869906466,hSt=3518393246,pSt=3760055223,dSt=1360408905,fSt=2030761528,mSt=3900360178,gSt=476780140,vSt=1472233963,ySt=1904799276,TSt=663422040,ESt=862014818,bSt=2417008758,xSt=3310460725,ISt=3277789161,_St=264262732,SSt=1534661035,wSt=402227799,RSt=1217240411,MSt=1003880860,DSt=712377611,CSt=1758889154,ASt=4123344466,OSt=2397081782,PSt=1623761950,NSt=2590856083,LSt=1883228015,FSt=339256511,HSt=2777663545,USt=1704287377,BSt=2835456948,kSt=1658829314,GSt=2107101300,VSt=2814081492,zSt=132023988,jSt=3747195512,WSt=3174744832,qSt=484807127,YSt=3390157468,XSt=4148101412,$St=211053100,ZSt=4024345920,KSt=297599258,JSt=4294318154,QSt=3200245327,ewt=1437805879,twt=1209101575,rwt=2853485674,iwt=2242383968,nwt=1040185647,swt=3548104201,awt=477187591,owt=2804161546,lwt=2556980723,cwt=2047409740,uwt=1809719519,hwt=803316827,pwt=3008276851,dwt=807026263,fwt=3737207727,mwt=24185140,gwt=1310830890,vwt=4219587988,ywt=3415622556,Twt=346874300,Ewt=647756555,bwt=2489546625,xwt=2827207264,Iwt=2143335405,_wt=1287392070,Swt=738692330,wwt=374418227,Rwt=315944413,Mwt=819412036,Dwt=1810631287,Cwt=1426591983,Awt=4222183408,Owt=2652556860,Pwt=2058353004,Nwt=3907093117,Lwt=4278956645,Fwt=3198132628,Hwt=182646315,Uwt=4037862832,Bwt=2188021234,kwt=3815607619,Gwt=3132237377,Vwt=1482959167,zwt=987401354,jwt=1834744321,Wwt=707683696,qwt=1339347760,Ywt=2223149337,Xwt=2297155007,$wt=3508470533,Zwt=3009222698,Kwt=900683007,Jwt=1893162501,Qwt=263784265,eRt=4238390223,tRt=1509553395,rRt=1268542332,iRt=3493046030,nRt=4095422895,sRt=987898635,aRt=3448662350,oRt=2453401579,lRt=4142052618,cRt=3590301190,uRt=3009204131,hRt=852622518,pRt=178086475,dRt=2706460486,fRt=812098782,mRt=3319311131,gRt=1251058090,vRt=2068733104,yRt=1806887404,TRt=1484403080,ERt=3905492369,bRt=3570813810,xRt=2571569899,IRt=178912537,_Rt=2294589976,SRt=1437953363,wRt=2133299955,RRt=4175244083,MRt=3946677679,DRt=3113134337,CRt=2391368822,ARt=3741457305,ORt=3020489413,PRt=2176052936,NRt=4288270099,LRt=572779678,FRt=3827777499,HRt=428585644,URt=1585845231,BRt=76236018,kRt=1051575348,GRt=2655187982,VRt=3452421091,zRt=4162380809,jRt=629592764,WRt=1161773419,qRt=1566485204,YRt=1402838566,XRt=125510826,$Rt=2604431987,ZRt=4266656042,KRt=1520743889,JRt=3422422726,QRt=1281925730,eMt=3092502836,tMt=388784114,rMt=1154579445,iMt=2624227202,nMt=1008929658,sMt=1425443689,aMt=3057273783,oMt=2347385850,lMt=1838606355,cMt=1847130766,uMt=3708119e3,hMt=2852063980,pMt=760658860,dMt=2022407955,fMt=248100487,mMt=3303938423,gMt=1303795690,vMt=1847252529,yMt=2199411900,TMt=2235152071,EMt=164193824,bMt=3079605661,xMt=3404854881,IMt=552965576,_Mt=3265635763,SMt=853536259,wMt=1507914824,RMt=2597039031,MMt=377706215,DMt=2108223431,CMt=1437502449,AMt=1114901282,OMt=1073191201,PMt=1911478936,NMt=3181161470,LMt=3368373690,FMt=2998442950,HMt=2706619895,UMt=2474470126,BMt=977012517,kMt=1918398963,GMt=3888040117,VMt=219451334,zMt=3701648758,jMt=2251480897,WMt=4143007308,qMt=590820931,YMt=3388369263,XMt=3505215534,$Mt=2485787929,ZMt=2665983363,KMt=3588315303,JMt=3079942009,QMt=4251960020,eDt=1411181986,tDt=643959842,rDt=1029017970,iDt=144952367,nDt=3694346114,sDt=2837617999,aDt=1207048766,oDt=2529465313,lDt=2519244187,cDt=1682466193,uDt=2382730787,hDt=3566463478,pDt=3327091369,dDt=2077209135,fDt=101040310,mDt=3021840470,gDt=2483315170,vDt=2226359599,yDt=1687234759,TDt=1158309216,EDt=310824031,bDt=804291784,xDt=3612865200,IDt=4231323485,_Dt=597895409,SDt=2004835150,wDt=603570806,RDt=1663979128,MDt=220341763,DDt=3171933400,CDt=1156407060,ADt=4017108033,ODt=2067069095,PDt=4022376103,NDt=1423911732,LDt=2924175390,FDt=2775532180,HDt=2839578677,UDt=3724593414,BDt=3740093272,kDt=1946335990,GDt=3355820592,VDt=759155922,zDt=2559016684,jDt=3727388367,WDt=3778827333,qDt=3967405729,YDt=1775413392,XDt=677532197,$Dt=2022622350,ZDt=1304840413,KDt=3119450353,JDt=2417041796,QDt=2744685151,eCt=569719735,tCt=2945172077,rCt=4208778838,iCt=673634403,nCt=2095639259,sCt=3958567839,aCt=2802850158,mA=103090709,oCt=653396225,lCt=2904328755,cCt=3843373140,uCt=3651124850,hCt=2598011224,pCt=986844984,dCt=871118103,fCt=1680319473,mCt=148025276,gCt=4166981789,vCt=3710013099,yCt=2752243245,TCt=941946838,ECt=1451395588,bCt=3357820518,xCt=492091185,ICt=3650150729,_Ct=110355661,SCt=3521284610,wCt=1482703590,RCt=738039164,MCt=2295281155,DCt=655969474,CCt=1842657554,ACt=3219374653,OCt=90941305,PCt=2250791053,NCt=2044713172,LCt=2093928680,FCt=931644368,HCt=2090586900,UCt=3252649465,BCt=2405470396,kCt=825690147,GCt=2262370178,VCt=2893384427,zCt=3024970846,jCt=3283111854,WCt=2324767716,qCt=1469900589,YCt=1232101972,XCt=683857671,$Ct=2770003689,ZCt=3615266464,KCt=2798486643,JCt=3454111270,QCt=3915482550,eAt=2433181523,tAt=4021432810,rAt=3413951693,iAt=1580146022,nAt=3765753017,sAt=979691226,aAt=2572171363,oAt=3027567501,lAt=964333572,cAt=2320036040,uAt=2310774935,n8=160246688,hAt=3939117080,pAt=1683148259,dAt=2495723537,fAt=1307041759,mAt=1027710054,gAt=4278684876,vAt=2857406711,yAt=205026976,TAt=1865459582,EAt=4095574036,bAt=919958153,xAt=2728634034,IAt=982818633,_At=3840914261,s8=2655215786,SAt=826625072,wAt=1204542856,RAt=3945020480,MAt=4201705270,DAt=3190031847,CAt=2127690289,AAt=1638771189,OAt=504942748,PAt=3678494232,a8=3242617779,NAt=886880790,LAt=2802773753,FAt=2565941209,HAt=2551354335,UAt=693640335,BAt=1462361463,o8=4186316022,kAt=307848117,l8=781010003,GAt=3940055652,VAt=279856033,zAt=427948657,jAt=3268803585,WAt=1441486842,qAt=750771296,YAt=1245217292,XAt=4122056220,$At=366585022,ZAt=3451746338,KAt=3523091289,JAt=1521410863,QAt=1401173127,eOt=478536968,tOt=816062949,rOt=1076942058,iOt=3377609919,nOt=3008791417,sOt=1660063152,aOt=2914609552,oOt=2943643501,lOt=1608871552,cOt=2439245199,uOt=1042787934,hOt=1856042241,pOt=3243963512,dOt=4158566097,fOt=3626867408,mOt=2016517767,gOt=2781568857,vOt=2341007311,yOt=2778083089,TOt=448429030,EOt=3053780830,bOt=1768891740,xOt=1054537805,IOt=2157484638,_Ot=2042790032,SOt=4165799628,wOt=1862484736,ROt=1290935644,MOt=1509187699,DOt=4086658281,COt=1783015770,AOt=1329646415,OOt=4074543187,POt=867548509,NOt=3982875396,LOt=4240577450,FOt=4124623270,HOt=3692461612,UOt=3663146110,BOt=4097777520,kOt=1529196076,GOt=3127900445,VOt=3027962421,zOt=2533589738,jOt=2609359061,WOt=3420628829,qOt=1072016465,YOt=723233188,XOt=3856911033,$Ot=1999602285,ZOt=1305183839,KOt=3812236995,JOt=1412071761,QOt=710998568,e3t=2706606064,t3t=3893378262,r3t=463610769,i3t=2481509218,n3t=451544542,s3t=4015995234,a3t=1404847402,o3t=3112655638,l3t=331165859,c3t=4252922144,u3t=1039846685,h3t=338393293,p3t=682877961,d3t=3544373492,f3t=2515109513,m3t=1179482911,g3t=2273995522,v3t=1004757350,y3t=4243806635,T3t=214636428,E3t=2445595289,b3t=2757150158,x3t=3136571912,I3t=1807405624,_3t=2162789131,S3t=385403989,w3t=3478079324,R3t=1252848954,M3t=1595516126,D3t=609421318,C3t=2668620305,A3t=2473145415,O3t=1973038258,P3t=1597423693,N3t=1190533807,L3t=2525727697,F3t=3408363356,H3t=530289379,U3t=1621171031,B3t=2082059205,k3t=734778138,G3t=1235345126,V3t=3689010777,z3t=2986769608,j3t=3657597509,W3t=1975003073,q3t=3979015343,Y3t=2218152070,X3t=603775116,$3t=2830218821,Z3t=3958052878,K3t=3049322572,J3t=148013059,Q3t=4095615324,ePt=2233826070,tPt=2513912981,rPt=699246055,iPt=2028607225,nPt=3101698114,sPt=2809605785,aPt=4124788165,oPt=2934153892,lPt=1300840506,cPt=3303107099,uPt=1607154358,hPt=1878645084,pPt=846575682,dPt=1351298697,fPt=626085974,mPt=2247615214,gPt=1260650574,vPt=1096409881,yPt=230924584,TPt=1162798199,EPt=2315554128,bPt=2254336722,xPt=413509423,IPt=1580310250,_Pt=3071757647,SPt=985171141,wPt=2043862942,RPt=531007025,MPt=812556717,DPt=5716631,CPt=3473067441,APt=1549132990,OPt=2771591690,PPt=3206491090,NPt=912023232,LPt=3824725483,FPt=2347447852,HPt=3081323446,UPt=3663046924,BPt=2281632017,kPt=2415094496,GPt=2387106220,VPt=901063453,zPt=4282788508,jPt=3124975700,WPt=1447204868,qPt=1983826977,YPt=2636378356,XPt=1640371178,$Pt=280115917,ZPt=1742049831,KPt=2552916305,JPt=1210645708,QPt=3611470254,e2t=1199560280,t2t=3101149627,r2t=581633288,i2t=1377556343,n2t=1735638870,s2t=1935646853,a2t=3825984169,o2t=1692211062,l2t=2595432518,c2t=1620046519,u2t=2097647324,h2t=2715220739,p2t=2916149573,d2t=1229763772,f2t=3593883385,m2t=3026737570,g2t=1600972822,v2t=1628702193,y2t=3736923433,T2t=2347495698,E2t=3698973494,b2t=427810014,x2t=180925521,I2t=630975310,_2t=3179687236,S2t=4292641817,w2t=1911125066,R2t=4207607924,M2t=728799441,D2t=1417489154,C2t=2799835756,A2t=2759199220,O2t=1907098498,P2t=1530820697,N2t=3956297820,L2t=2391383451,F2t=3313531582,H2t=2769231204,U2t=891718957,B2t=926996030,k2t=2391406946,G2t=4156078855,V2t=3512223829,z2t=1898987631,j2t=4237592921,W2t=1133259667,q2t=3304561284,Y2t=336235671,X2t=512836454,$2t=486154966,Z2t=1299126871,K2t=4009809668,J2t=4088093105,Q2t=1028945134,eNt=4218914973,tNt=3342526732,rNt=1236880293,iNt=2543172580,nNt=1033361043,O={};O[sbt]=e=>Bfe.FromTape(e.ID,e.type,e.arguments),O[abt]=e=>kfe.FromTape(e.ID,e.type,e.arguments),O[obt]=e=>Gfe.FromTape(e.ID,e.type,e.arguments),O[lbt]=e=>Vfe.FromTape(e.ID,e.type,e.arguments),O[cbt]=e=>zfe.FromTape(e.ID,e.type,e.arguments),O[ubt]=e=>jfe.FromTape(e.ID,e.type,e.arguments),O[hbt]=e=>Wfe.FromTape(e.ID,e.type,e.arguments),O[pbt]=e=>qfe.FromTape(e.ID,e.type,e.arguments),O[dbt]=e=>Yfe.FromTape(e.ID,e.type,e.arguments),O[fbt]=e=>Xfe.FromTape(e.ID,e.type,e.arguments),O[mbt]=e=>$fe.FromTape(e.ID,e.type,e.arguments),O[gbt]=e=>Zfe.FromTape(e.ID,e.type,e.arguments),O[vbt]=e=>Kfe.FromTape(e.ID,e.type,e.arguments),O[ybt]=e=>Jfe.FromTape(e.ID,e.type,e.arguments),O[Tbt]=e=>Qfe.FromTape(e.ID,e.type,e.arguments),O[Ebt]=e=>eme.FromTape(e.ID,e.type,e.arguments),O[bbt]=e=>tme.FromTape(e.ID,e.type,e.arguments),O[xbt]=e=>rme.FromTape(e.ID,e.type,e.arguments),O[Ibt]=e=>ime.FromTape(e.ID,e.type,e.arguments),O[_bt]=e=>nme.FromTape(e.ID,e.type,e.arguments),O[Sbt]=e=>sme.FromTape(e.ID,e.type,e.arguments),O[wbt]=e=>ame.FromTape(e.ID,e.type,e.arguments),O[Rbt]=e=>ome.FromTape(e.ID,e.type,e.arguments),O[Mbt]=e=>lme.FromTape(e.ID,e.type,e.arguments),O[Dbt]=e=>cme.FromTape(e.ID,e.type,e.arguments),O[Cbt]=e=>ume.FromTape(e.ID,e.type,e.arguments),O[Abt]=e=>hme.FromTape(e.ID,e.type,e.arguments),O[Obt]=e=>pme.FromTape(e.ID,e.type,e.arguments),O[Pbt]=e=>dme.FromTape(e.ID,e.type,e.arguments),O[Nbt]=e=>fme.FromTape(e.ID,e.type,e.arguments),O[Lbt]=e=>mme.FromTape(e.ID,e.type,e.arguments),O[Fbt]=e=>gme.FromTape(e.ID,e.type,e.arguments),O[Hbt]=e=>vme.FromTape(e.ID,e.type,e.arguments),O[Ubt]=e=>yme.FromTape(e.ID,e.type,e.arguments),O[Bbt]=e=>Tme.FromTape(e.ID,e.type,e.arguments),O[kbt]=e=>Eme.FromTape(e.ID,e.type,e.arguments),O[Gbt]=e=>bme.FromTape(e.ID,e.type,e.arguments),O[Vbt]=e=>xme.FromTape(e.ID,e.type,e.arguments),O[zbt]=e=>Ime.FromTape(e.ID,e.type,e.arguments),O[jbt]=e=>_me.FromTape(e.ID,e.type,e.arguments),O[Wbt]=e=>Sme.FromTape(e.ID,e.type,e.arguments),O[qbt]=e=>wme.FromTape(e.ID,e.type,e.arguments),O[Ybt]=e=>Rme.FromTape(e.ID,e.type,e.arguments),O[Xbt]=e=>Mme.FromTape(e.ID,e.type,e.arguments),O[$bt]=e=>Dme.FromTape(e.ID,e.type,e.arguments),O[Zbt]=e=>Cme.FromTape(e.ID,e.type,e.arguments),O[Kbt]=e=>Ame.FromTape(e.ID,e.type,e.arguments),O[Jbt]=e=>Ome.FromTape(e.ID,e.type,e.arguments),O[Qbt]=e=>Pme.FromTape(e.ID,e.type,e.arguments),O[ext]=e=>Nme.FromTape(e.ID,e.type,e.arguments),O[txt]=e=>Lme.FromTape(e.ID,e.type,e.arguments),O[rxt]=e=>Fme.FromTape(e.ID,e.type,e.arguments),O[ixt]=e=>Hme.FromTape(e.ID,e.type,e.arguments),O[nxt]=e=>Ume.FromTape(e.ID,e.type,e.arguments),O[sxt]=e=>Bme.FromTape(e.ID,e.type,e.arguments),O[axt]=e=>kme.FromTape(e.ID,e.type,e.arguments),O[oxt]=e=>Gme.FromTape(e.ID,e.type,e.arguments),O[lxt]=e=>Vme.FromTape(e.ID,e.type,e.arguments),O[cxt]=e=>zme.FromTape(e.ID,e.type,e.arguments),O[uxt]=e=>jme.FromTape(e.ID,e.type,e.arguments),O[hxt]=e=>Wme.FromTape(e.ID,e.type,e.arguments),O[pxt]=e=>qme.FromTape(e.ID,e.type,e.arguments),O[dxt]=e=>Yme.FromTape(e.ID,e.type,e.arguments),O[fxt]=e=>Xme.FromTape(e.ID,e.type,e.arguments),O[mxt]=e=>$me.FromTape(e.ID,e.type,e.arguments),O[gxt]=e=>Zme.FromTape(e.ID,e.type,e.arguments),O[vxt]=e=>Kme.FromTape(e.ID,e.type,e.arguments),O[yxt]=e=>Jme.FromTape(e.ID,e.type,e.arguments),O[Txt]=e=>Qme.FromTape(e.ID,e.type,e.arguments),O[Ext]=e=>ege.FromTape(e.ID,e.type,e.arguments),O[bxt]=e=>tge.FromTape(e.ID,e.type,e.arguments),O[xxt]=e=>rge.FromTape(e.ID,e.type,e.arguments),O[Ixt]=e=>ige.FromTape(e.ID,e.type,e.arguments),O[_xt]=e=>nge.FromTape(e.ID,e.type,e.arguments),O[Sxt]=e=>sge.FromTape(e.ID,e.type,e.arguments),O[wxt]=e=>age.FromTape(e.ID,e.type,e.arguments),O[Rxt]=e=>oge.FromTape(e.ID,e.type,e.arguments),O[Mxt]=e=>lge.FromTape(e.ID,e.type,e.arguments),O[Dxt]=e=>cge.FromTape(e.ID,e.type,e.arguments),O[Cxt]=e=>uge.FromTape(e.ID,e.type,e.arguments),O[Axt]=e=>hge.FromTape(e.ID,e.type,e.arguments),O[Oxt]=e=>pge.FromTape(e.ID,e.type,e.arguments),O[Pxt]=e=>dge.FromTape(e.ID,e.type,e.arguments),O[Nxt]=e=>fge.FromTape(e.ID,e.type,e.arguments),O[Lxt]=e=>mge.FromTape(e.ID,e.type,e.arguments),O[Fxt]=e=>gge.FromTape(e.ID,e.type,e.arguments),O[Hxt]=e=>vge.FromTape(e.ID,e.type,e.arguments),O[Uxt]=e=>yge.FromTape(e.ID,e.type,e.arguments),O[Bxt]=e=>Tge.FromTape(e.ID,e.type,e.arguments),O[kxt]=e=>Ege.FromTape(e.ID,e.type,e.arguments),O[Gxt]=e=>bge.FromTape(e.ID,e.type,e.arguments),O[Vxt]=e=>xge.FromTape(e.ID,e.type,e.arguments),O[zxt]=e=>Ige.FromTape(e.ID,e.type,e.arguments),O[jxt]=e=>_ge.FromTape(e.ID,e.type,e.arguments),O[Wxt]=e=>Sge.FromTape(e.ID,e.type,e.arguments),O[qxt]=e=>wge.FromTape(e.ID,e.type,e.arguments),O[Yxt]=e=>Rge.FromTape(e.ID,e.type,e.arguments),O[Xxt]=e=>Mge.FromTape(e.ID,e.type,e.arguments),O[$xt]=e=>Dge.FromTape(e.ID,e.type,e.arguments),O[Zxt]=e=>Cge.FromTape(e.ID,e.type,e.arguments),O[Kxt]=e=>Age.FromTape(e.ID,e.type,e.arguments),O[Jxt]=e=>Oge.FromTape(e.ID,e.type,e.arguments),O[Qxt]=e=>Pge.FromTape(e.ID,e.type,e.arguments),O[eIt]=e=>Nge.FromTape(e.ID,e.type,e.arguments),O[tIt]=e=>Lge.FromTape(e.ID,e.type,e.arguments),O[rIt]=e=>Fge.FromTape(e.ID,e.type,e.arguments),O[iIt]=e=>Hge.FromTape(e.ID,e.type,e.arguments),O[nIt]=e=>Uge.FromTape(e.ID,e.type,e.arguments),O[sIt]=e=>Bge.FromTape(e.ID,e.type,e.arguments),O[aIt]=e=>kge.FromTape(e.ID,e.type,e.arguments),O[oIt]=e=>Gge.FromTape(e.ID,e.type,e.arguments),O[lIt]=e=>Vge.FromTape(e.ID,e.type,e.arguments),O[cIt]=e=>zge.FromTape(e.ID,e.type,e.arguments),O[uIt]=e=>jge.FromTape(e.ID,e.type,e.arguments),O[hIt]=e=>Wge.FromTape(e.ID,e.type,e.arguments),O[pIt]=e=>qge.FromTape(e.ID,e.type,e.arguments),O[dIt]=e=>Yge.FromTape(e.ID,e.type,e.arguments),O[fIt]=e=>Xge.FromTape(e.ID,e.type,e.arguments),O[mIt]=e=>$ge.FromTape(e.ID,e.type,e.arguments),O[gIt]=e=>Zge.FromTape(e.ID,e.type,e.arguments),O[vIt]=e=>Kge.FromTape(e.ID,e.type,e.arguments),O[yIt]=e=>Jge.FromTape(e.ID,e.type,e.arguments),O[TIt]=e=>Qge.FromTape(e.ID,e.type,e.arguments),O[EIt]=e=>e0e.FromTape(e.ID,e.type,e.arguments),O[bIt]=e=>t0e.FromTape(e.ID,e.type,e.arguments),O[xIt]=e=>r0e.FromTape(e.ID,e.type,e.arguments),O[IIt]=e=>i0e.FromTape(e.ID,e.type,e.arguments),O[_It]=e=>n0e.FromTape(e.ID,e.type,e.arguments),O[SIt]=e=>s0e.FromTape(e.ID,e.type,e.arguments),O[wIt]=e=>a0e.FromTape(e.ID,e.type,e.arguments),O[RIt]=e=>o0e.FromTape(e.ID,e.type,e.arguments),O[MIt]=e=>l0e.FromTape(e.ID,e.type,e.arguments),O[DIt]=e=>c0e.FromTape(e.ID,e.type,e.arguments),O[CIt]=e=>u0e.FromTape(e.ID,e.type,e.arguments),O[AIt]=e=>h0e.FromTape(e.ID,e.type,e.arguments),O[OIt]=e=>p0e.FromTape(e.ID,e.type,e.arguments),O[PIt]=e=>d0e.FromTape(e.ID,e.type,e.arguments),O[NIt]=e=>f0e.FromTape(e.ID,e.type,e.arguments),O[LIt]=e=>m0e.FromTape(e.ID,e.type,e.arguments),O[FIt]=e=>g0e.FromTape(e.ID,e.type,e.arguments),O[HIt]=e=>v0e.FromTape(e.ID,e.type,e.arguments),O[UIt]=e=>y0e.FromTape(e.ID,e.type,e.arguments),O[BIt]=e=>T0e.FromTape(e.ID,e.type,e.arguments),O[kIt]=e=>E0e.FromTape(e.ID,e.type,e.arguments),O[GIt]=e=>b0e.FromTape(e.ID,e.type,e.arguments),O[VIt]=e=>x0e.FromTape(e.ID,e.type,e.arguments),O[zIt]=e=>I0e.FromTape(e.ID,e.type,e.arguments),O[jIt]=e=>_0e.FromTape(e.ID,e.type,e.arguments),O[WIt]=e=>S0e.FromTape(e.ID,e.type,e.arguments),O[qIt]=e=>w0e.FromTape(e.ID,e.type,e.arguments),O[YIt]=e=>R0e.FromTape(e.ID,e.type,e.arguments),O[XIt]=e=>M0e.FromTape(e.ID,e.type,e.arguments),O[$It]=e=>D0e.FromTape(e.ID,e.type,e.arguments),O[ZIt]=e=>C0e.FromTape(e.ID,e.type,e.arguments),O[KIt]=e=>A0e.FromTape(e.ID,e.type,e.arguments),O[JIt]=e=>O0e.FromTape(e.ID,e.type,e.arguments),O[QIt]=e=>P0e.FromTape(e.ID,e.type,e.arguments),O[e_t]=e=>N0e.FromTape(e.ID,e.type,e.arguments),O[t_t]=e=>L0e.FromTape(e.ID,e.type,e.arguments),O[r_t]=e=>F0e.FromTape(e.ID,e.type,e.arguments),O[i_t]=e=>H0e.FromTape(e.ID,e.type,e.arguments),O[n_t]=e=>U0e.FromTape(e.ID,e.type,e.arguments),O[s_t]=e=>B0e.FromTape(e.ID,e.type,e.arguments),O[a_t]=e=>k0e.FromTape(e.ID,e.type,e.arguments),O[o_t]=e=>G0e.FromTape(e.ID,e.type,e.arguments),O[l_t]=e=>V0e.FromTape(e.ID,e.type,e.arguments),O[c_t]=e=>z0e.FromTape(e.ID,e.type,e.arguments),O[u_t]=e=>j0e.FromTape(e.ID,e.type,e.arguments),O[h_t]=e=>W0e.FromTape(e.ID,e.type,e.arguments),O[p_t]=e=>q0e.FromTape(e.ID,e.type,e.arguments),O[d_t]=e=>Y0e.FromTape(e.ID,e.type,e.arguments),O[f_t]=e=>X0e.FromTape(e.ID,e.type,e.arguments),O[m_t]=e=>$0e.FromTape(e.ID,e.type,e.arguments),O[g_t]=e=>Z0e.FromTape(e.ID,e.type,e.arguments),O[v_t]=e=>K0e.FromTape(e.ID,e.type,e.arguments),O[y_t]=e=>J0e.FromTape(e.ID,e.type,e.arguments),O[T_t]=e=>Q0e.FromTape(e.ID,e.type,e.arguments),O[E_t]=e=>eve.FromTape(e.ID,e.type,e.arguments),O[b_t]=e=>tve.FromTape(e.ID,e.type,e.arguments),O[x_t]=e=>rve.FromTape(e.ID,e.type,e.arguments),O[I_t]=e=>ive.FromTape(e.ID,e.type,e.arguments),O[__t]=e=>nve.FromTape(e.ID,e.type,e.arguments),O[S_t]=e=>sve.FromTape(e.ID,e.type,e.arguments),O[w_t]=e=>ave.FromTape(e.ID,e.type,e.arguments),O[R_t]=e=>ove.FromTape(e.ID,e.type,e.arguments),O[M_t]=e=>lve.FromTape(e.ID,e.type,e.arguments),O[D_t]=e=>cve.FromTape(e.ID,e.type,e.arguments),O[C_t]=e=>uve.FromTape(e.ID,e.type,e.arguments),O[A_t]=e=>hve.FromTape(e.ID,e.type,e.arguments),O[O_t]=e=>pve.FromTape(e.ID,e.type,e.arguments),O[P_t]=e=>dve.FromTape(e.ID,e.type,e.arguments),O[N_t]=e=>fve.FromTape(e.ID,e.type,e.arguments),O[L_t]=e=>mve.FromTape(e.ID,e.type,e.arguments),O[F_t]=e=>gve.FromTape(e.ID,e.type,e.arguments),O[H_t]=e=>vve.FromTape(e.ID,e.type,e.arguments),O[U_t]=e=>yve.FromTape(e.ID,e.type,e.arguments),O[B_t]=e=>Tve.FromTape(e.ID,e.type,e.arguments),O[k_t]=e=>Eve.FromTape(e.ID,e.type,e.arguments),O[G_t]=e=>bve.FromTape(e.ID,e.type,e.arguments),O[V_t]=e=>xve.FromTape(e.ID,e.type,e.arguments),O[z_t]=e=>Ive.FromTape(e.ID,e.type,e.arguments),O[j_t]=e=>_ve.FromTape(e.ID,e.type,e.arguments),O[W_t]=e=>Sve.FromTape(e.ID,e.type,e.arguments),O[q_t]=e=>wve.FromTape(e.ID,e.type,e.arguments),O[Y_t]=e=>Rve.FromTape(e.ID,e.type,e.arguments),O[X_t]=e=>Mve.FromTape(e.ID,e.type,e.arguments),O[$_t]=e=>Dve.FromTape(e.ID,e.type,e.arguments),O[Z_t]=e=>Cve.FromTape(e.ID,e.type,e.arguments),O[K_t]=e=>Ave.FromTape(e.ID,e.type,e.arguments),O[J_t]=e=>Ove.FromTape(e.ID,e.type,e.arguments),O[Q_t]=e=>Pve.FromTape(e.ID,e.type,e.arguments),O[eSt]=e=>Nve.FromTape(e.ID,e.type,e.arguments),O[tSt]=e=>Lve.FromTape(e.ID,e.type,e.arguments),O[rSt]=e=>Fve.FromTape(e.ID,e.type,e.arguments),O[iSt]=e=>Hve.FromTape(e.ID,e.type,e.arguments),O[nSt]=e=>Uve.FromTape(e.ID,e.type,e.arguments),O[sSt]=e=>Bve.FromTape(e.ID,e.type,e.arguments),O[aSt]=e=>kve.FromTape(e.ID,e.type,e.arguments),O[oSt]=e=>Gve.FromTape(e.ID,e.type,e.arguments),O[lSt]=e=>Vve.FromTape(e.ID,e.type,e.arguments),O[cSt]=e=>zve.FromTape(e.ID,e.type,e.arguments),O[uSt]=e=>jve.FromTape(e.ID,e.type,e.arguments),O[hSt]=e=>Wve.FromTape(e.ID,e.type,e.arguments),O[pSt]=e=>qve.FromTape(e.ID,e.type,e.arguments),O[dSt]=e=>Yve.FromTape(e.ID,e.type,e.arguments),O[fSt]=e=>Xve.FromTape(e.ID,e.type,e.arguments),O[mSt]=e=>$ve.FromTape(e.ID,e.type,e.arguments),O[gSt]=e=>Zve.FromTape(e.ID,e.type,e.arguments),O[vSt]=e=>Kve.FromTape(e.ID,e.type,e.arguments),O[ySt]=e=>Jve.FromTape(e.ID,e.type,e.arguments),O[TSt]=e=>Qve.FromTape(e.ID,e.type,e.arguments),O[ESt]=e=>eye.FromTape(e.ID,e.type,e.arguments),O[bSt]=e=>tye.FromTape(e.ID,e.type,e.arguments),O[xSt]=e=>rye.FromTape(e.ID,e.type,e.arguments),O[ISt]=e=>iye.FromTape(e.ID,e.type,e.arguments),O[_St]=e=>nye.FromTape(e.ID,e.type,e.arguments),O[SSt]=e=>sye.FromTape(e.ID,e.type,e.arguments),O[wSt]=e=>aye.FromTape(e.ID,e.type,e.arguments),O[RSt]=e=>oye.FromTape(e.ID,e.type,e.arguments),O[MSt]=e=>lye.FromTape(e.ID,e.type,e.arguments),O[DSt]=e=>cye.FromTape(e.ID,e.type,e.arguments),O[CSt]=e=>uye.FromTape(e.ID,e.type,e.arguments),O[ASt]=e=>hye.FromTape(e.ID,e.type,e.arguments),O[OSt]=e=>pye.FromTape(e.ID,e.type,e.arguments),O[PSt]=e=>dye.FromTape(e.ID,e.type,e.arguments),O[NSt]=e=>fye.FromTape(e.ID,e.type,e.arguments),O[LSt]=e=>mye.FromTape(e.ID,e.type,e.arguments),O[FSt]=e=>gye.FromTape(e.ID,e.type,e.arguments),O[HSt]=e=>vye.FromTape(e.ID,e.type,e.arguments),O[USt]=e=>yye.FromTape(e.ID,e.type,e.arguments),O[BSt]=e=>Tye.FromTape(e.ID,e.type,e.arguments),O[kSt]=e=>Eye.FromTape(e.ID,e.type,e.arguments),O[GSt]=e=>bye.FromTape(e.ID,e.type,e.arguments),O[VSt]=e=>xye.FromTape(e.ID,e.type,e.arguments),O[zSt]=e=>Iye.FromTape(e.ID,e.type,e.arguments),O[jSt]=e=>_ye.FromTape(e.ID,e.type,e.arguments),O[WSt]=e=>Sye.FromTape(e.ID,e.type,e.arguments),O[qSt]=e=>wye.FromTape(e.ID,e.type,e.arguments),O[YSt]=e=>Rye.FromTape(e.ID,e.type,e.arguments),O[XSt]=e=>Mye.FromTape(e.ID,e.type,e.arguments),O[$St]=e=>Dye.FromTape(e.ID,e.type,e.arguments),O[ZSt]=e=>Cye.FromTape(e.ID,e.type,e.arguments),O[KSt]=e=>Aye.FromTape(e.ID,e.type,e.arguments),O[JSt]=e=>Oye.FromTape(e.ID,e.type,e.arguments),O[QSt]=e=>Pye.FromTape(e.ID,e.type,e.arguments),O[ewt]=e=>Nye.FromTape(e.ID,e.type,e.arguments),O[twt]=e=>Lye.FromTape(e.ID,e.type,e.arguments),O[rwt]=e=>Fye.FromTape(e.ID,e.type,e.arguments),O[iwt]=e=>Hye.FromTape(e.ID,e.type,e.arguments),O[nwt]=e=>Uye.FromTape(e.ID,e.type,e.arguments),O[swt]=e=>Bye.FromTape(e.ID,e.type,e.arguments),O[awt]=e=>kye.FromTape(e.ID,e.type,e.arguments),O[owt]=e=>Gye.FromTape(e.ID,e.type,e.arguments),O[lwt]=e=>Vye.FromTape(e.ID,e.type,e.arguments),O[cwt]=e=>zye.FromTape(e.ID,e.type,e.arguments),O[uwt]=e=>jye.FromTape(e.ID,e.type,e.arguments),O[hwt]=e=>Wye.FromTape(e.ID,e.type,e.arguments),O[pwt]=e=>qye.FromTape(e.ID,e.type,e.arguments),O[dwt]=e=>Yye.FromTape(e.ID,e.type,e.arguments),O[fwt]=e=>Xye.FromTape(e.ID,e.type,e.arguments),O[mwt]=e=>$ye.FromTape(e.ID,e.type,e.arguments),O[gwt]=e=>Zye.FromTape(e.ID,e.type,e.arguments),O[vwt]=e=>Kye.FromTape(e.ID,e.type,e.arguments),O[ywt]=e=>Jye.FromTape(e.ID,e.type,e.arguments),O[Twt]=e=>Qye.FromTape(e.ID,e.type,e.arguments),O[Ewt]=e=>eTe.FromTape(e.ID,e.type,e.arguments),O[bwt]=e=>tTe.FromTape(e.ID,e.type,e.arguments),O[xwt]=e=>rTe.FromTape(e.ID,e.type,e.arguments),O[Iwt]=e=>iTe.FromTape(e.ID,e.type,e.arguments),O[_wt]=e=>nTe.FromTape(e.ID,e.type,e.arguments),O[Swt]=e=>sTe.FromTape(e.ID,e.type,e.arguments),O[wwt]=e=>aTe.FromTape(e.ID,e.type,e.arguments),O[Rwt]=e=>oTe.FromTape(e.ID,e.type,e.arguments),O[Mwt]=e=>lTe.FromTape(e.ID,e.type,e.arguments),O[Dwt]=e=>cTe.FromTape(e.ID,e.type,e.arguments),O[Cwt]=e=>uTe.FromTape(e.ID,e.type,e.arguments),O[Awt]=e=>hTe.FromTape(e.ID,e.type,e.arguments),O[Owt]=e=>pTe.FromTape(e.ID,e.type,e.arguments),O[Pwt]=e=>dTe.FromTape(e.ID,e.type,e.arguments),O[Nwt]=e=>fTe.FromTape(e.ID,e.type,e.arguments),O[Lwt]=e=>mTe.FromTape(e.ID,e.type,e.arguments),O[Fwt]=e=>gTe.FromTape(e.ID,e.type,e.arguments),O[Hwt]=e=>vTe.FromTape(e.ID,e.type,e.arguments),O[Uwt]=e=>yTe.FromTape(e.ID,e.type,e.arguments),O[Bwt]=e=>TTe.FromTape(e.ID,e.type,e.arguments),O[kwt]=e=>ETe.FromTape(e.ID,e.type,e.arguments),O[Gwt]=e=>bTe.FromTape(e.ID,e.type,e.arguments),O[Vwt]=e=>xTe.FromTape(e.ID,e.type,e.arguments),O[zwt]=e=>ITe.FromTape(e.ID,e.type,e.arguments),O[jwt]=e=>_Te.FromTape(e.ID,e.type,e.arguments),O[Wwt]=e=>STe.FromTape(e.ID,e.type,e.arguments),O[qwt]=e=>wTe.FromTape(e.ID,e.type,e.arguments),O[Ywt]=e=>RTe.FromTape(e.ID,e.type,e.arguments),O[Xwt]=e=>MTe.FromTape(e.ID,e.type,e.arguments),O[$wt]=e=>DTe.FromTape(e.ID,e.type,e.arguments),O[Zwt]=e=>CTe.FromTape(e.ID,e.type,e.arguments),O[Kwt]=e=>ATe.FromTape(e.ID,e.type,e.arguments),O[Jwt]=e=>OTe.FromTape(e.ID,e.type,e.arguments),O[Qwt]=e=>PTe.FromTape(e.ID,e.type,e.arguments),O[eRt]=e=>NTe.FromTape(e.ID,e.type,e.arguments),O[tRt]=e=>LTe.FromTape(e.ID,e.type,e.arguments),O[rRt]=e=>FTe.FromTape(e.ID,e.type,e.arguments),O[iRt]=e=>HTe.FromTape(e.ID,e.type,e.arguments),O[nRt]=e=>UTe.FromTape(e.ID,e.type,e.arguments),O[sRt]=e=>BTe.FromTape(e.ID,e.type,e.arguments),O[aRt]=e=>kTe.FromTape(e.ID,e.type,e.arguments),O[oRt]=e=>GTe.FromTape(e.ID,e.type,e.arguments),O[lRt]=e=>VTe.FromTape(e.ID,e.type,e.arguments),O[cRt]=e=>zTe.FromTape(e.ID,e.type,e.arguments),O[uRt]=e=>jTe.FromTape(e.ID,e.type,e.arguments),O[hRt]=e=>WTe.FromTape(e.ID,e.type,e.arguments),O[pRt]=e=>qTe.FromTape(e.ID,e.type,e.arguments),O[dRt]=e=>YTe.FromTape(e.ID,e.type,e.arguments),O[fRt]=e=>XTe.FromTape(e.ID,e.type,e.arguments),O[mRt]=e=>$Te.FromTape(e.ID,e.type,e.arguments),O[gRt]=e=>ZTe.FromTape(e.ID,e.type,e.arguments),O[vRt]=e=>KTe.FromTape(e.ID,e.type,e.arguments),O[yRt]=e=>JTe.FromTape(e.ID,e.type,e.arguments),O[TRt]=e=>QTe.FromTape(e.ID,e.type,e.arguments),O[ERt]=e=>eEe.FromTape(e.ID,e.type,e.arguments),O[bRt]=e=>tEe.FromTape(e.ID,e.type,e.arguments),O[xRt]=e=>rEe.FromTape(e.ID,e.type,e.arguments),O[IRt]=e=>iEe.FromTape(e.ID,e.type,e.arguments),O[_Rt]=e=>nEe.FromTape(e.ID,e.type,e.arguments),O[SRt]=e=>sEe.FromTape(e.ID,e.type,e.arguments),O[wRt]=e=>aEe.FromTape(e.ID,e.type,e.arguments),O[RRt]=e=>oEe.FromTape(e.ID,e.type,e.arguments),O[MRt]=e=>lEe.FromTape(e.ID,e.type,e.arguments),O[DRt]=e=>cEe.FromTape(e.ID,e.type,e.arguments),O[CRt]=e=>uEe.FromTape(e.ID,e.type,e.arguments),O[ARt]=e=>hEe.FromTape(e.ID,e.type,e.arguments),O[ORt]=e=>pEe.FromTape(e.ID,e.type,e.arguments),O[PRt]=e=>dEe.FromTape(e.ID,e.type,e.arguments),O[NRt]=e=>fEe.FromTape(e.ID,e.type,e.arguments),O[LRt]=e=>mEe.FromTape(e.ID,e.type,e.arguments),O[FRt]=e=>gEe.FromTape(e.ID,e.type,e.arguments),O[HRt]=e=>vEe.FromTape(e.ID,e.type,e.arguments),O[URt]=e=>yEe.FromTape(e.ID,e.type,e.arguments),O[BRt]=e=>TEe.FromTape(e.ID,e.type,e.arguments),O[kRt]=e=>EEe.FromTape(e.ID,e.type,e.arguments),O[GRt]=e=>bEe.FromTape(e.ID,e.type,e.arguments),O[VRt]=e=>xEe.FromTape(e.ID,e.type,e.arguments),O[zRt]=e=>IEe.FromTape(e.ID,e.type,e.arguments),O[jRt]=e=>_Ee.FromTape(e.ID,e.type,e.arguments),O[WRt]=e=>SEe.FromTape(e.ID,e.type,e.arguments),O[qRt]=e=>wEe.FromTape(e.ID,e.type,e.arguments),O[YRt]=e=>REe.FromTape(e.ID,e.type,e.arguments),O[XRt]=e=>MEe.FromTape(e.ID,e.type,e.arguments),O[$Rt]=e=>DEe.FromTape(e.ID,e.type,e.arguments),O[ZRt]=e=>CEe.FromTape(e.ID,e.type,e.arguments),O[KRt]=e=>AEe.FromTape(e.ID,e.type,e.arguments),O[JRt]=e=>OEe.FromTape(e.ID,e.type,e.arguments),O[QRt]=e=>PEe.FromTape(e.ID,e.type,e.arguments),O[eMt]=e=>NEe.FromTape(e.ID,e.type,e.arguments),O[tMt]=e=>LEe.FromTape(e.ID,e.type,e.arguments),O[rMt]=e=>FEe.FromTape(e.ID,e.type,e.arguments),O[iMt]=e=>HEe.FromTape(e.ID,e.type,e.arguments),O[nMt]=e=>UEe.FromTape(e.ID,e.type,e.arguments),O[sMt]=e=>BEe.FromTape(e.ID,e.type,e.arguments),O[aMt]=e=>kEe.FromTape(e.ID,e.type,e.arguments),O[oMt]=e=>GEe.FromTape(e.ID,e.type,e.arguments),O[lMt]=e=>VEe.FromTape(e.ID,e.type,e.arguments),O[cMt]=e=>zEe.FromTape(e.ID,e.type,e.arguments),O[uMt]=e=>jEe.FromTape(e.ID,e.type,e.arguments),O[hMt]=e=>WEe.FromTape(e.ID,e.type,e.arguments),O[pMt]=e=>qEe.FromTape(e.ID,e.type,e.arguments),O[dMt]=e=>YEe.FromTape(e.ID,e.type,e.arguments),O[fMt]=e=>XEe.FromTape(e.ID,e.type,e.arguments),O[mMt]=e=>$Ee.FromTape(e.ID,e.type,e.arguments),O[gMt]=e=>ZEe.FromTape(e.ID,e.type,e.arguments),O[vMt]=e=>KEe.FromTape(e.ID,e.type,e.arguments),O[yMt]=e=>JEe.FromTape(e.ID,e.type,e.arguments),O[TMt]=e=>QEe.FromTape(e.ID,e.type,e.arguments),O[EMt]=e=>e1e.FromTape(e.ID,e.type,e.arguments),O[bMt]=e=>t1e.FromTape(e.ID,e.type,e.arguments),O[xMt]=e=>r1e.FromTape(e.ID,e.type,e.arguments),O[IMt]=e=>i1e.FromTape(e.ID,e.type,e.arguments),O[_Mt]=e=>n1e.FromTape(e.ID,e.type,e.arguments),O[SMt]=e=>s1e.FromTape(e.ID,e.type,e.arguments),O[wMt]=e=>a1e.FromTape(e.ID,e.type,e.arguments),O[RMt]=e=>o1e.FromTape(e.ID,e.type,e.arguments),O[MMt]=e=>l1e.FromTape(e.ID,e.type,e.arguments),O[DMt]=e=>c1e.FromTape(e.ID,e.type,e.arguments),O[CMt]=e=>u1e.FromTape(e.ID,e.type,e.arguments),O[AMt]=e=>h1e.FromTape(e.ID,e.type,e.arguments),O[OMt]=e=>p1e.FromTape(e.ID,e.type,e.arguments),O[PMt]=e=>d1e.FromTape(e.ID,e.type,e.arguments),O[NMt]=e=>f1e.FromTape(e.ID,e.type,e.arguments),O[LMt]=e=>m1e.FromTape(e.ID,e.type,e.arguments),O[FMt]=e=>g1e.FromTape(e.ID,e.type,e.arguments),O[HMt]=e=>v1e.FromTape(e.ID,e.type,e.arguments),O[UMt]=e=>y1e.FromTape(e.ID,e.type,e.arguments),O[BMt]=e=>T1e.FromTape(e.ID,e.type,e.arguments),O[kMt]=e=>E1e.FromTape(e.ID,e.type,e.arguments),O[GMt]=e=>b1e.FromTape(e.ID,e.type,e.arguments),O[VMt]=e=>x1e.FromTape(e.ID,e.type,e.arguments),O[zMt]=e=>I1e.FromTape(e.ID,e.type,e.arguments),O[jMt]=e=>_1e.FromTape(e.ID,e.type,e.arguments),O[WMt]=e=>S1e.FromTape(e.ID,e.type,e.arguments),O[qMt]=e=>w1e.FromTape(e.ID,e.type,e.arguments),O[YMt]=e=>R1e.FromTape(e.ID,e.type,e.arguments),O[XMt]=e=>M1e.FromTape(e.ID,e.type,e.arguments),O[$Mt]=e=>D1e.FromTape(e.ID,e.type,e.arguments),O[ZMt]=e=>C1e.FromTape(e.ID,e.type,e.arguments),O[KMt]=e=>A1e.FromTape(e.ID,e.type,e.arguments),O[JMt]=e=>O1e.FromTape(e.ID,e.type,e.arguments),O[QMt]=e=>P1e.FromTape(e.ID,e.type,e.arguments),O[eDt]=e=>N1e.FromTape(e.ID,e.type,e.arguments),O[tDt]=e=>L1e.FromTape(e.ID,e.type,e.arguments),O[rDt]=e=>F1e.FromTape(e.ID,e.type,e.arguments),O[iDt]=e=>H1e.FromTape(e.ID,e.type,e.arguments),O[nDt]=e=>U1e.FromTape(e.ID,e.type,e.arguments),O[sDt]=e=>B1e.FromTape(e.ID,e.type,e.arguments),O[aDt]=e=>k1e.FromTape(e.ID,e.type,e.arguments),O[oDt]=e=>G1e.FromTape(e.ID,e.type,e.arguments),O[lDt]=e=>V1e.FromTape(e.ID,e.type,e.arguments),O[cDt]=e=>z1e.FromTape(e.ID,e.type,e.arguments),O[uDt]=e=>j1e.FromTape(e.ID,e.type,e.arguments),O[hDt]=e=>W1e.FromTape(e.ID,e.type,e.arguments),O[pDt]=e=>q1e.FromTape(e.ID,e.type,e.arguments),O[dDt]=e=>Y1e.FromTape(e.ID,e.type,e.arguments),O[fDt]=e=>X1e.FromTape(e.ID,e.type,e.arguments),O[mDt]=e=>$1e.FromTape(e.ID,e.type,e.arguments),O[gDt]=e=>Z1e.FromTape(e.ID,e.type,e.arguments),O[vDt]=e=>K1e.FromTape(e.ID,e.type,e.arguments),O[yDt]=e=>J1e.FromTape(e.ID,e.type,e.arguments),O[TDt]=e=>Q1e.FromTape(e.ID,e.type,e.arguments),O[EDt]=e=>ebe.FromTape(e.ID,e.type,e.arguments),O[bDt]=e=>tbe.FromTape(e.ID,e.type,e.arguments),O[xDt]=e=>rbe.FromTape(e.ID,e.type,e.arguments),O[IDt]=e=>ibe.FromTape(e.ID,e.type,e.arguments),O[_Dt]=e=>nbe.FromTape(e.ID,e.type,e.arguments),O[SDt]=e=>sbe.FromTape(e.ID,e.type,e.arguments),O[wDt]=e=>abe.FromTape(e.ID,e.type,e.arguments),O[RDt]=e=>obe.FromTape(e.ID,e.type,e.arguments),O[MDt]=e=>lbe.FromTape(e.ID,e.type,e.arguments),O[DDt]=e=>cbe.FromTape(e.ID,e.type,e.arguments),O[CDt]=e=>ube.FromTape(e.ID,e.type,e.arguments),O[ADt]=e=>hbe.FromTape(e.ID,e.type,e.arguments),O[ODt]=e=>pbe.FromTape(e.ID,e.type,e.arguments),O[PDt]=e=>dbe.FromTape(e.ID,e.type,e.arguments),O[NDt]=e=>fbe.FromTape(e.ID,e.type,e.arguments),O[LDt]=e=>mbe.FromTape(e.ID,e.type,e.arguments),O[FDt]=e=>gbe.FromTape(e.ID,e.type,e.arguments),O[HDt]=e=>vbe.FromTape(e.ID,e.type,e.arguments),O[UDt]=e=>ybe.FromTape(e.ID,e.type,e.arguments),O[BDt]=e=>Tbe.FromTape(e.ID,e.type,e.arguments),O[kDt]=e=>Ebe.FromTape(e.ID,e.type,e.arguments),O[GDt]=e=>bbe.FromTape(e.ID,e.type,e.arguments),O[VDt]=e=>xbe.FromTape(e.ID,e.type,e.arguments),O[zDt]=e=>Ibe.FromTape(e.ID,e.type,e.arguments),O[jDt]=e=>_be.FromTape(e.ID,e.type,e.arguments),O[WDt]=e=>Sbe.FromTape(e.ID,e.type,e.arguments),O[qDt]=e=>wbe.FromTape(e.ID,e.type,e.arguments),O[YDt]=e=>Rbe.FromTape(e.ID,e.type,e.arguments),O[XDt]=e=>Mbe.FromTape(e.ID,e.type,e.arguments),O[$Dt]=e=>Dbe.FromTape(e.ID,e.type,e.arguments),O[ZDt]=e=>Cbe.FromTape(e.ID,e.type,e.arguments),O[KDt]=e=>Abe.FromTape(e.ID,e.type,e.arguments),O[JDt]=e=>Obe.FromTape(e.ID,e.type,e.arguments),O[QDt]=e=>Pbe.FromTape(e.ID,e.type,e.arguments),O[eCt]=e=>Nbe.FromTape(e.ID,e.type,e.arguments),O[tCt]=e=>Lbe.FromTape(e.ID,e.type,e.arguments),O[rCt]=e=>Fbe.FromTape(e.ID,e.type,e.arguments),O[iCt]=e=>Hbe.FromTape(e.ID,e.type,e.arguments),O[nCt]=e=>Ube.FromTape(e.ID,e.type,e.arguments),O[sCt]=e=>Bbe.FromTape(e.ID,e.type,e.arguments),O[aCt]=e=>kbe.FromTape(e.ID,e.type,e.arguments),O[mA]=e=>Gbe.FromTape(e.ID,e.type,e.arguments),O[oCt]=e=>Vbe.FromTape(e.ID,e.type,e.arguments),O[lCt]=e=>zbe.FromTape(e.ID,e.type,e.arguments),O[cCt]=e=>jbe.FromTape(e.ID,e.type,e.arguments),O[uCt]=e=>Wbe.FromTape(e.ID,e.type,e.arguments),O[hCt]=e=>qbe.FromTape(e.ID,e.type,e.arguments),O[pCt]=e=>Ybe.FromTape(e.ID,e.type,e.arguments),O[dCt]=e=>Xbe.FromTape(e.ID,e.type,e.arguments),O[fCt]=e=>$be.FromTape(e.ID,e.type,e.arguments),O[mCt]=e=>Zbe.FromTape(e.ID,e.type,e.arguments),O[gCt]=e=>Kbe.FromTape(e.ID,e.type,e.arguments),O[vCt]=e=>Jbe.FromTape(e.ID,e.type,e.arguments),O[yCt]=e=>Qbe.FromTape(e.ID,e.type,e.arguments),O[TCt]=e=>exe.FromTape(e.ID,e.type,e.arguments),O[ECt]=e=>txe.FromTape(e.ID,e.type,e.arguments),O[bCt]=e=>rxe.FromTape(e.ID,e.type,e.arguments),O[xCt]=e=>ixe.FromTape(e.ID,e.type,e.arguments),O[ICt]=e=>nxe.FromTape(e.ID,e.type,e.arguments),O[_Ct]=e=>sxe.FromTape(e.ID,e.type,e.arguments),O[SCt]=e=>axe.FromTape(e.ID,e.type,e.arguments),O[wCt]=e=>oxe.FromTape(e.ID,e.type,e.arguments),O[RCt]=e=>lxe.FromTape(e.ID,e.type,e.arguments),O[MCt]=e=>cxe.FromTape(e.ID,e.type,e.arguments),O[DCt]=e=>uxe.FromTape(e.ID,e.type,e.arguments),O[CCt]=e=>hxe.FromTape(e.ID,e.type,e.arguments),O[ACt]=e=>pxe.FromTape(e.ID,e.type,e.arguments),O[OCt]=e=>dxe.FromTape(e.ID,e.type,e.arguments),O[PCt]=e=>fxe.FromTape(e.ID,e.type,e.arguments),O[NCt]=e=>mxe.FromTape(e.ID,e.type,e.arguments),O[LCt]=e=>gxe.FromTape(e.ID,e.type,e.arguments),O[FCt]=e=>vxe.FromTape(e.ID,e.type,e.arguments),O[HCt]=e=>yxe.FromTape(e.ID,e.type,e.arguments),O[UCt]=e=>Txe.FromTape(e.ID,e.type,e.arguments),O[BCt]=e=>Exe.FromTape(e.ID,e.type,e.arguments),O[kCt]=e=>bxe.FromTape(e.ID,e.type,e.arguments),O[GCt]=e=>xxe.FromTape(e.ID,e.type,e.arguments),O[VCt]=e=>Ixe.FromTape(e.ID,e.type,e.arguments),O[zCt]=e=>_xe.FromTape(e.ID,e.type,e.arguments),O[jCt]=e=>Sxe.FromTape(e.ID,e.type,e.arguments),O[WCt]=e=>wxe.FromTape(e.ID,e.type,e.arguments),O[qCt]=e=>Rxe.FromTape(e.ID,e.type,e.arguments),O[YCt]=e=>Mxe.FromTape(e.ID,e.type,e.arguments),O[XCt]=e=>Dxe.FromTape(e.ID,e.type,e.arguments),O[$Ct]=e=>Cxe.FromTape(e.ID,e.type,e.arguments),O[ZCt]=e=>Axe.FromTape(e.ID,e.type,e.arguments),O[KCt]=e=>Oxe.FromTape(e.ID,e.type,e.arguments),O[JCt]=e=>Pxe.FromTape(e.ID,e.type,e.arguments),O[QCt]=e=>Nxe.FromTape(e.ID,e.type,e.arguments),O[eAt]=e=>Lxe.FromTape(e.ID,e.type,e.arguments),O[tAt]=e=>Fxe.FromTape(e.ID,e.type,e.arguments),O[rAt]=e=>Hxe.FromTape(e.ID,e.type,e.arguments),O[iAt]=e=>Uxe.FromTape(e.ID,e.type,e.arguments),O[nAt]=e=>Bxe.FromTape(e.ID,e.type,e.arguments),O[sAt]=e=>kxe.FromTape(e.ID,e.type,e.arguments),O[aAt]=e=>Gxe.FromTape(e.ID,e.type,e.arguments),O[oAt]=e=>Vxe.FromTape(e.ID,e.type,e.arguments),O[lAt]=e=>zxe.FromTape(e.ID,e.type,e.arguments),O[cAt]=e=>jxe.FromTape(e.ID,e.type,e.arguments),O[uAt]=e=>Wxe.FromTape(e.ID,e.type,e.arguments),O[n8]=e=>qxe.FromTape(e.ID,e.type,e.arguments),O[hAt]=e=>Yxe.FromTape(e.ID,e.type,e.arguments),O[pAt]=e=>Xxe.FromTape(e.ID,e.type,e.arguments),O[dAt]=e=>$xe.FromTape(e.ID,e.type,e.arguments),O[fAt]=e=>Zxe.FromTape(e.ID,e.type,e.arguments),O[mAt]=e=>Kxe.FromTape(e.ID,e.type,e.arguments),O[gAt]=e=>Jxe.FromTape(e.ID,e.type,e.arguments),O[vAt]=e=>Qxe.FromTape(e.ID,e.type,e.arguments),O[yAt]=e=>eIe.FromTape(e.ID,e.type,e.arguments),O[TAt]=e=>tIe.FromTape(e.ID,e.type,e.arguments),O[EAt]=e=>rIe.FromTape(e.ID,e.type,e.arguments),O[bAt]=e=>iIe.FromTape(e.ID,e.type,e.arguments),O[xAt]=e=>nIe.FromTape(e.ID,e.type,e.arguments),O[IAt]=e=>sIe.FromTape(e.ID,e.type,e.arguments),O[_At]=e=>aIe.FromTape(e.ID,e.type,e.arguments),O[s8]=e=>oIe.FromTape(e.ID,e.type,e.arguments),O[SAt]=e=>lIe.FromTape(e.ID,e.type,e.arguments),O[wAt]=e=>cIe.FromTape(e.ID,e.type,e.arguments),O[RAt]=e=>uIe.FromTape(e.ID,e.type,e.arguments),O[MAt]=e=>hIe.FromTape(e.ID,e.type,e.arguments),O[DAt]=e=>pIe.FromTape(e.ID,e.type,e.arguments),O[CAt]=e=>dIe.FromTape(e.ID,e.type,e.arguments),O[AAt]=e=>fIe.FromTape(e.ID,e.type,e.arguments),O[OAt]=e=>mIe.FromTape(e.ID,e.type,e.arguments),O[PAt]=e=>gIe.FromTape(e.ID,e.type,e.arguments),O[a8]=e=>vIe.FromTape(e.ID,e.type,e.arguments),O[NAt]=e=>yIe.FromTape(e.ID,e.type,e.arguments),O[LAt]=e=>TIe.FromTape(e.ID,e.type,e.arguments),O[FAt]=e=>EIe.FromTape(e.ID,e.type,e.arguments),O[HAt]=e=>bIe.FromTape(e.ID,e.type,e.arguments),O[UAt]=e=>xIe.FromTape(e.ID,e.type,e.arguments),O[BAt]=e=>IIe.FromTape(e.ID,e.type,e.arguments),O[o8]=e=>_Ie.FromTape(e.ID,e.type,e.arguments),O[kAt]=e=>SIe.FromTape(e.ID,e.type,e.arguments),O[l8]=e=>wIe.FromTape(e.ID,e.type,e.arguments),O[GAt]=e=>RIe.FromTape(e.ID,e.type,e.arguments),O[VAt]=e=>MIe.FromTape(e.ID,e.type,e.arguments),O[zAt]=e=>DIe.FromTape(e.ID,e.type,e.arguments),O[jAt]=e=>CIe.FromTape(e.ID,e.type,e.arguments),O[WAt]=e=>AIe.FromTape(e.ID,e.type,e.arguments),O[qAt]=e=>OIe.FromTape(e.ID,e.type,e.arguments),O[YAt]=e=>PIe.FromTape(e.ID,e.type,e.arguments),O[XAt]=e=>NIe.FromTape(e.ID,e.type,e.arguments),O[$At]=e=>LIe.FromTape(e.ID,e.type,e.arguments),O[ZAt]=e=>FIe.FromTape(e.ID,e.type,e.arguments),O[KAt]=e=>HIe.FromTape(e.ID,e.type,e.arguments),O[JAt]=e=>UIe.FromTape(e.ID,e.type,e.arguments),O[QAt]=e=>BIe.FromTape(e.ID,e.type,e.arguments),O[eOt]=e=>kIe.FromTape(e.ID,e.type,e.arguments),O[tOt]=e=>GIe.FromTape(e.ID,e.type,e.arguments),O[rOt]=e=>VIe.FromTape(e.ID,e.type,e.arguments),O[iOt]=e=>zIe.FromTape(e.ID,e.type,e.arguments),O[nOt]=e=>jIe.FromTape(e.ID,e.type,e.arguments),O[sOt]=e=>WIe.FromTape(e.ID,e.type,e.arguments),O[aOt]=e=>qIe.FromTape(e.ID,e.type,e.arguments),O[oOt]=e=>YIe.FromTape(e.ID,e.type,e.arguments),O[lOt]=e=>XIe.FromTape(e.ID,e.type,e.arguments),O[cOt]=e=>$Ie.FromTape(e.ID,e.type,e.arguments),O[uOt]=e=>ZIe.FromTape(e.ID,e.type,e.arguments),O[hOt]=e=>KIe.FromTape(e.ID,e.type,e.arguments),O[pOt]=e=>JIe.FromTape(e.ID,e.type,e.arguments),O[dOt]=e=>QIe.FromTape(e.ID,e.type,e.arguments),O[fOt]=e=>e_e.FromTape(e.ID,e.type,e.arguments),O[mOt]=e=>t_e.FromTape(e.ID,e.type,e.arguments),O[gOt]=e=>r_e.FromTape(e.ID,e.type,e.arguments),O[vOt]=e=>i_e.FromTape(e.ID,e.type,e.arguments),O[yOt]=e=>n_e.FromTape(e.ID,e.type,e.arguments),O[TOt]=e=>s_e.FromTape(e.ID,e.type,e.arguments),O[EOt]=e=>a_e.FromTape(e.ID,e.type,e.arguments),O[bOt]=e=>o_e.FromTape(e.ID,e.type,e.arguments),O[xOt]=e=>l_e.FromTape(e.ID,e.type,e.arguments),O[IOt]=e=>c_e.FromTape(e.ID,e.type,e.arguments),O[_Ot]=e=>u_e.FromTape(e.ID,e.type,e.arguments),O[SOt]=e=>h_e.FromTape(e.ID,e.type,e.arguments),O[wOt]=e=>p_e.FromTape(e.ID,e.type,e.arguments),O[ROt]=e=>d_e.FromTape(e.ID,e.type,e.arguments),O[MOt]=e=>f_e.FromTape(e.ID,e.type,e.arguments),O[DOt]=e=>m_e.FromTape(e.ID,e.type,e.arguments),O[COt]=e=>g_e.FromTape(e.ID,e.type,e.arguments),O[AOt]=e=>v_e.FromTape(e.ID,e.type,e.arguments),O[OOt]=e=>y_e.FromTape(e.ID,e.type,e.arguments),O[POt]=e=>T_e.FromTape(e.ID,e.type,e.arguments),O[NOt]=e=>E_e.FromTape(e.ID,e.type,e.arguments),O[LOt]=e=>b_e.FromTape(e.ID,e.type,e.arguments),O[FOt]=e=>x_e.FromTape(e.ID,e.type,e.arguments),O[HOt]=e=>I_e.FromTape(e.ID,e.type,e.arguments),O[UOt]=e=>__e.FromTape(e.ID,e.type,e.arguments),O[BOt]=e=>S_e.FromTape(e.ID,e.type,e.arguments),O[kOt]=e=>w_e.FromTape(e.ID,e.type,e.arguments),O[GOt]=e=>R_e.FromTape(e.ID,e.type,e.arguments),O[VOt]=e=>M_e.FromTape(e.ID,e.type,e.arguments),O[zOt]=e=>D_e.FromTape(e.ID,e.type,e.arguments),O[jOt]=e=>C_e.FromTape(e.ID,e.type,e.arguments),O[WOt]=e=>A_e.FromTape(e.ID,e.type,e.arguments),O[qOt]=e=>O_e.FromTape(e.ID,e.type,e.arguments),O[YOt]=e=>P_e.FromTape(e.ID,e.type,e.arguments),O[XOt]=e=>N_e.FromTape(e.ID,e.type,e.arguments),O[$Ot]=e=>L_e.FromTape(e.ID,e.type,e.arguments),O[ZOt]=e=>F_e.FromTape(e.ID,e.type,e.arguments),O[KOt]=e=>H_e.FromTape(e.ID,e.type,e.arguments),O[JOt]=e=>U_e.FromTape(e.ID,e.type,e.arguments),O[QOt]=e=>B_e.FromTape(e.ID,e.type,e.arguments),O[e3t]=e=>k_e.FromTape(e.ID,e.type,e.arguments),O[t3t]=e=>G_e.FromTape(e.ID,e.type,e.arguments),O[r3t]=e=>V_e.FromTape(e.ID,e.type,e.arguments),O[i3t]=e=>z_e.FromTape(e.ID,e.type,e.arguments),O[n3t]=e=>j_e.FromTape(e.ID,e.type,e.arguments),O[s3t]=e=>W_e.FromTape(e.ID,e.type,e.arguments),O[a3t]=e=>q_e.FromTape(e.ID,e.type,e.arguments),O[o3t]=e=>Y_e.FromTape(e.ID,e.type,e.arguments),O[l3t]=e=>X_e.FromTape(e.ID,e.type,e.arguments),O[c3t]=e=>$_e.FromTape(e.ID,e.type,e.arguments),O[u3t]=e=>Z_e.FromTape(e.ID,e.type,e.arguments),O[h3t]=e=>K_e.FromTape(e.ID,e.type,e.arguments),O[p3t]=e=>J_e.FromTape(e.ID,e.type,e.arguments),O[d3t]=e=>Q_e.FromTape(e.ID,e.type,e.arguments),O[f3t]=e=>eSe.FromTape(e.ID,e.type,e.arguments),O[m3t]=e=>tSe.FromTape(e.ID,e.type,e.arguments),O[g3t]=e=>rSe.FromTape(e.ID,e.type,e.arguments),O[v3t]=e=>iSe.FromTape(e.ID,e.type,e.arguments),O[y3t]=e=>nSe.FromTape(e.ID,e.type,e.arguments),O[T3t]=e=>sSe.FromTape(e.ID,e.type,e.arguments),O[E3t]=e=>aSe.FromTape(e.ID,e.type,e.arguments),O[b3t]=e=>oSe.FromTape(e.ID,e.type,e.arguments),O[x3t]=e=>lSe.FromTape(e.ID,e.type,e.arguments),O[I3t]=e=>cSe.FromTape(e.ID,e.type,e.arguments),O[_3t]=e=>uSe.FromTape(e.ID,e.type,e.arguments),O[S3t]=e=>hSe.FromTape(e.ID,e.type,e.arguments),O[w3t]=e=>pSe.FromTape(e.ID,e.type,e.arguments),O[R3t]=e=>dSe.FromTape(e.ID,e.type,e.arguments),O[M3t]=e=>fSe.FromTape(e.ID,e.type,e.arguments),O[D3t]=e=>mSe.FromTape(e.ID,e.type,e.arguments),O[C3t]=e=>gSe.FromTape(e.ID,e.type,e.arguments),O[A3t]=e=>vSe.FromTape(e.ID,e.type,e.arguments),O[O3t]=e=>ySe.FromTape(e.ID,e.type,e.arguments),O[P3t]=e=>TSe.FromTape(e.ID,e.type,e.arguments),O[N3t]=e=>ESe.FromTape(e.ID,e.type,e.arguments),O[L3t]=e=>bSe.FromTape(e.ID,e.type,e.arguments),O[F3t]=e=>xSe.FromTape(e.ID,e.type,e.arguments),O[H3t]=e=>ISe.FromTape(e.ID,e.type,e.arguments),O[U3t]=e=>_Se.FromTape(e.ID,e.type,e.arguments),O[B3t]=e=>SSe.FromTape(e.ID,e.type,e.arguments),O[k3t]=e=>wSe.FromTape(e.ID,e.type,e.arguments),O[G3t]=e=>RSe.FromTape(e.ID,e.type,e.arguments),O[V3t]=e=>MSe.FromTape(e.ID,e.type,e.arguments),O[z3t]=e=>DSe.FromTape(e.ID,e.type,e.arguments),O[j3t]=e=>CSe.FromTape(e.ID,e.type,e.arguments),O[W3t]=e=>ASe.FromTape(e.ID,e.type,e.arguments),O[q3t]=e=>OSe.FromTape(e.ID,e.type,e.arguments),O[Y3t]=e=>PSe.FromTape(e.ID,e.type,e.arguments),O[X3t]=e=>NSe.FromTape(e.ID,e.type,e.arguments),O[$3t]=e=>LSe.FromTape(e.ID,e.type,e.arguments),O[Z3t]=e=>FSe.FromTape(e.ID,e.type,e.arguments),O[K3t]=e=>HSe.FromTape(e.ID,e.type,e.arguments),O[J3t]=e=>USe.FromTape(e.ID,e.type,e.arguments),O[Q3t]=e=>BSe.FromTape(e.ID,e.type,e.arguments),O[ePt]=e=>kSe.FromTape(e.ID,e.type,e.arguments),O[tPt]=e=>GSe.FromTape(e.ID,e.type,e.arguments),O[rPt]=e=>VSe.FromTape(e.ID,e.type,e.arguments),O[iPt]=e=>zSe.FromTape(e.ID,e.type,e.arguments),O[nPt]=e=>jSe.FromTape(e.ID,e.type,e.arguments),O[sPt]=e=>WSe.FromTape(e.ID,e.type,e.arguments),O[aPt]=e=>qSe.FromTape(e.ID,e.type,e.arguments),O[oPt]=e=>YSe.FromTape(e.ID,e.type,e.arguments),O[lPt]=e=>XSe.FromTape(e.ID,e.type,e.arguments),O[cPt]=e=>$Se.FromTape(e.ID,e.type,e.arguments),O[uPt]=e=>ZSe.FromTape(e.ID,e.type,e.arguments),O[hPt]=e=>KSe.FromTape(e.ID,e.type,e.arguments),O[pPt]=e=>JSe.FromTape(e.ID,e.type,e.arguments),O[dPt]=e=>QSe.FromTape(e.ID,e.type,e.arguments),O[fPt]=e=>ewe.FromTape(e.ID,e.type,e.arguments),O[mPt]=e=>twe.FromTape(e.ID,e.type,e.arguments),O[gPt]=e=>rwe.FromTape(e.ID,e.type,e.arguments),O[vPt]=e=>iwe.FromTape(e.ID,e.type,e.arguments),O[yPt]=e=>nwe.FromTape(e.ID,e.type,e.arguments),O[TPt]=e=>swe.FromTape(e.ID,e.type,e.arguments),O[EPt]=e=>awe.FromTape(e.ID,e.type,e.arguments),O[bPt]=e=>owe.FromTape(e.ID,e.type,e.arguments),O[xPt]=e=>lwe.FromTape(e.ID,e.type,e.arguments),O[IPt]=e=>cwe.FromTape(e.ID,e.type,e.arguments),O[_Pt]=e=>uwe.FromTape(e.ID,e.type,e.arguments),O[SPt]=e=>hwe.FromTape(e.ID,e.type,e.arguments),O[wPt]=e=>pwe.FromTape(e.ID,e.type,e.arguments),O[RPt]=e=>dwe.FromTape(e.ID,e.type,e.arguments),O[MPt]=e=>fwe.FromTape(e.ID,e.type,e.arguments),O[DPt]=e=>mwe.FromTape(e.ID,e.type,e.arguments),O[CPt]=e=>gwe.FromTape(e.ID,e.type,e.arguments),O[APt]=e=>vwe.FromTape(e.ID,e.type,e.arguments),O[OPt]=e=>ywe.FromTape(e.ID,e.type,e.arguments),O[PPt]=e=>Twe.FromTape(e.ID,e.type,e.arguments),O[NPt]=e=>Ewe.FromTape(e.ID,e.type,e.arguments),O[LPt]=e=>bwe.FromTape(e.ID,e.type,e.arguments),O[FPt]=e=>xwe.FromTape(e.ID,e.type,e.arguments),O[HPt]=e=>Iwe.FromTape(e.ID,e.type,e.arguments),O[UPt]=e=>_we.FromTape(e.ID,e.type,e.arguments),O[BPt]=e=>Swe.FromTape(e.ID,e.type,e.arguments),O[kPt]=e=>wwe.FromTape(e.ID,e.type,e.arguments),O[GPt]=e=>Rwe.FromTape(e.ID,e.type,e.arguments),O[VPt]=e=>Mwe.FromTape(e.ID,e.type,e.arguments),O[zPt]=e=>Dwe.FromTape(e.ID,e.type,e.arguments),O[jPt]=e=>Cwe.FromTape(e.ID,e.type,e.arguments),O[WPt]=e=>Awe.FromTape(e.ID,e.type,e.arguments),O[qPt]=e=>Owe.FromTape(e.ID,e.type,e.arguments),O[YPt]=e=>Pwe.FromTape(e.ID,e.type,e.arguments),O[XPt]=e=>Nwe.FromTape(e.ID,e.type,e.arguments),O[$Pt]=e=>Lwe.FromTape(e.ID,e.type,e.arguments),O[ZPt]=e=>Fwe.FromTape(e.ID,e.type,e.arguments),O[KPt]=e=>Hwe.FromTape(e.ID,e.type,e.arguments),O[JPt]=e=>Uwe.FromTape(e.ID,e.type,e.arguments),O[QPt]=e=>Bwe.FromTape(e.ID,e.type,e.arguments),O[e2t]=e=>kwe.FromTape(e.ID,e.type,e.arguments),O[t2t]=e=>Gwe.FromTape(e.ID,e.type,e.arguments),O[r2t]=e=>Vwe.FromTape(e.ID,e.type,e.arguments),O[i2t]=e=>zwe.FromTape(e.ID,e.type,e.arguments),O[n2t]=e=>jwe.FromTape(e.ID,e.type,e.arguments),O[s2t]=e=>Wwe.FromTape(e.ID,e.type,e.arguments),O[a2t]=e=>qwe.FromTape(e.ID,e.type,e.arguments),O[o2t]=e=>Ywe.FromTape(e.ID,e.type,e.arguments),O[l2t]=e=>Xwe.FromTape(e.ID,e.type,e.arguments),O[c2t]=e=>$we.FromTape(e.ID,e.type,e.arguments),O[u2t]=e=>Zwe.FromTape(e.ID,e.type,e.arguments),O[h2t]=e=>Kwe.FromTape(e.ID,e.type,e.arguments),O[p2t]=e=>Jwe.FromTape(e.ID,e.type,e.arguments),O[d2t]=e=>Qwe.FromTape(e.ID,e.type,e.arguments),O[f2t]=e=>eRe.FromTape(e.ID,e.type,e.arguments),O[m2t]=e=>tRe.FromTape(e.ID,e.type,e.arguments),O[g2t]=e=>rRe.FromTape(e.ID,e.type,e.arguments),O[v2t]=e=>iRe.FromTape(e.ID,e.type,e.arguments),O[y2t]=e=>nRe.FromTape(e.ID,e.type,e.arguments),O[T2t]=e=>sRe.FromTape(e.ID,e.type,e.arguments),O[E2t]=e=>aRe.FromTape(e.ID,e.type,e.arguments),O[b2t]=e=>oRe.FromTape(e.ID,e.type,e.arguments),O[x2t]=e=>lRe.FromTape(e.ID,e.type,e.arguments),O[I2t]=e=>cRe.FromTape(e.ID,e.type,e.arguments),O[_2t]=e=>uRe.FromTape(e.ID,e.type,e.arguments),O[S2t]=e=>hRe.FromTape(e.ID,e.type,e.arguments),O[w2t]=e=>pRe.FromTape(e.ID,e.type,e.arguments),O[R2t]=e=>dRe.FromTape(e.ID,e.type,e.arguments),O[M2t]=e=>fRe.FromTape(e.ID,e.type,e.arguments),O[D2t]=e=>mRe.FromTape(e.ID,e.type,e.arguments),O[C2t]=e=>gRe.FromTape(e.ID,e.type,e.arguments),O[A2t]=e=>vRe.FromTape(e.ID,e.type,e.arguments),O[O2t]=e=>yRe.FromTape(e.ID,e.type,e.arguments),O[P2t]=e=>TRe.FromTape(e.ID,e.type,e.arguments),O[N2t]=e=>ERe.FromTape(e.ID,e.type,e.arguments),O[L2t]=e=>bRe.FromTape(e.ID,e.type,e.arguments),O[F2t]=e=>xRe.FromTape(e.ID,e.type,e.arguments),O[H2t]=e=>IRe.FromTape(e.ID,e.type,e.arguments),O[U2t]=e=>_Re.FromTape(e.ID,e.type,e.arguments),O[B2t]=e=>SRe.FromTape(e.ID,e.type,e.arguments),O[k2t]=e=>wRe.FromTape(e.ID,e.type,e.arguments),O[G2t]=e=>RRe.FromTape(e.ID,e.type,e.arguments),O[V2t]=e=>MRe.FromTape(e.ID,e.type,e.arguments);O[z2t]=e=>DRe.FromTape(e.ID,e.type,e.arguments),O[j2t]=e=>CRe.FromTape(e.ID,e.type,e.arguments),O[W2t]=e=>ARe.FromTape(e.ID,e.type,e.arguments),O[q2t]=e=>ORe.FromTape(e.ID,e.type,e.arguments),O[Y2t]=e=>PRe.FromTape(e.ID,e.type,e.arguments),O[X2t]=e=>NRe.FromTape(e.ID,e.type,e.arguments),O[$2t]=e=>LRe.FromTape(e.ID,e.type,e.arguments),O[Z2t]=e=>FRe.FromTape(e.ID,e.type,e.arguments),O[K2t]=e=>HRe.FromTape(e.ID,e.type,e.arguments),O[J2t]=e=>URe.FromTape(e.ID,e.type,e.arguments),O[Q2t]=e=>BRe.FromTape(e.ID,e.type,e.arguments),O[eNt]=e=>kRe.FromTape(e.ID,e.type,e.arguments),O[tNt]=e=>GRe.FromTape(e.ID,e.type,e.arguments),O[rNt]=e=>VRe.FromTape(e.ID,e.type,e.arguments),O[iNt]=e=>zRe.FromTape(e.ID,e.type,e.arguments),O[nNt]=e=>jRe.FromTape(e.ID,e.type,e.arguments);var Zg=class{constructor(e){this.value=e}};Zg.EMAIL="EMAIL",Zg.FAX="FAX",Zg.PHONE="PHONE",Zg.POST="POST",Zg.VERBAL="VERBAL",Zg.USERDEFINED="USERDEFINED",Zg.NOTDEFINED="NOTDEFINED";var pn=class{constructor(e){this.value=e}};pn.DEAD_LOAD_G="DEAD_LOAD_G",pn.COMPLETION_G1="COMPLETION_G1",pn.LIVE_LOAD_Q="LIVE_LOAD_Q",pn.SNOW_S="SNOW_S",pn.WIND_W="WIND_W",pn.PRESTRESSING_P="PRESTRESSING_P",pn.SETTLEMENT_U="SETTLEMENT_U",pn.TEMPERATURE_T="TEMPERATURE_T",pn.EARTHQUAKE_E="EARTHQUAKE_E",pn.FIRE="FIRE",pn.IMPULSE="IMPULSE",pn.IMPACT="IMPACT",pn.TRANSPORT="TRANSPORT",pn.ERECTION="ERECTION",pn.PROPPING="PROPPING",pn.SYSTEM_IMPERFECTION="SYSTEM_IMPERFECTION",pn.SHRINKAGE="SHRINKAGE",pn.CREEP="CREEP",pn.LACK_OF_FIT="LACK_OF_FIT",pn.BUOYANCY="BUOYANCY",pn.ICE="ICE",pn.CURRENT="CURRENT",pn.WAVE="WAVE",pn.RAIN="RAIN",pn.BRAKES="BRAKES",pn.USERDEFINED="USERDEFINED",pn.NOTDEFINED="NOTDEFINED";var oI=class{constructor(e){this.value=e}};oI.PERMANENT_G="PERMANENT_G",oI.VARIABLE_Q="VARIABLE_Q",oI.EXTRAORDINARY_A="EXTRAORDINARY_A",oI.USERDEFINED="USERDEFINED",oI.NOTDEFINED="NOTDEFINED";var Kg=class{constructor(e){this.value=e}};Kg.ELECTRICACTUATOR="ELECTRICACTUATOR",Kg.HANDOPERATEDACTUATOR="HANDOPERATEDACTUATOR",Kg.HYDRAULICACTUATOR="HYDRAULICACTUATOR",Kg.PNEUMATICACTUATOR="PNEUMATICACTUATOR",Kg.THERMOSTATICACTUATOR="THERMOSTATICACTUATOR",Kg.USERDEFINED="USERDEFINED",Kg.NOTDEFINED="NOTDEFINED";var lI=class{constructor(e){this.value=e}};lI.OFFICE="OFFICE",lI.SITE="SITE",lI.HOME="HOME",lI.DISTRIBUTIONPOINT="DISTRIBUTIONPOINT",lI.USERDEFINED="USERDEFINED";var cI=class{constructor(e){this.value=e}};cI.CONSTANTFLOW="CONSTANTFLOW",cI.VARIABLEFLOWPRESSUREDEPENDANT="VARIABLEFLOWPRESSUREDEPENDANT",cI.VARIABLEFLOWPRESSUREINDEPENDANT="VARIABLEFLOWPRESSUREINDEPENDANT",cI.USERDEFINED="USERDEFINED",cI.NOTDEFINED="NOTDEFINED";var yT=class{constructor(e){this.value=e}};yT.DIFFUSER="DIFFUSER",yT.GRILLE="GRILLE",yT.LOUVRE="LOUVRE",yT.REGISTER="REGISTER",yT.USERDEFINED="USERDEFINED",yT.NOTDEFINED="NOTDEFINED";var Bc=class{constructor(e){this.value=e}};Bc.FIXEDPLATECOUNTERFLOWEXCHANGER="FIXEDPLATECOUNTERFLOWEXCHANGER",Bc.FIXEDPLATECROSSFLOWEXCHANGER="FIXEDPLATECROSSFLOWEXCHANGER",Bc.FIXEDPLATEPARALLELFLOWEXCHANGER="FIXEDPLATEPARALLELFLOWEXCHANGER",Bc.ROTARYWHEEL="ROTARYWHEEL",Bc.RUNAROUNDCOILLOOP="RUNAROUNDCOILLOOP",Bc.HEATPIPE="HEATPIPE",Bc.TWINTOWERENTHALPYRECOVERYLOOPS="TWINTOWERENTHALPYRECOVERYLOOPS",Bc.THERMOSIPHONSEALEDTUBEHEATEXCHANGERS="THERMOSIPHONSEALEDTUBEHEATEXCHANGERS",Bc.THERMOSIPHONCOILTYPEHEATEXCHANGERS="THERMOSIPHONCOILTYPEHEATEXCHANGERS",Bc.USERDEFINED="USERDEFINED",Bc.NOTDEFINED="NOTDEFINED";var Nf=class{constructor(e){this.value=e}};Nf.BELL="BELL",Nf.BREAKGLASSBUTTON="BREAKGLASSBUTTON",Nf.LIGHT="LIGHT",Nf.MANUALPULLBOX="MANUALPULLBOX",Nf.SIREN="SIREN",Nf.WHISTLE="WHISTLE",Nf.USERDEFINED="USERDEFINED",Nf.NOTDEFINED="NOTDEFINED";var Sfe=class{constructor(e){this.value=e}};Sfe.USERDEFINED="USERDEFINED",Sfe.NOTDEFINED="NOTDEFINED";var uI=class{constructor(e){this.value=e}};uI.IN_PLANE_LOADING_2D="IN_PLANE_LOADING_2D",uI.OUT_PLANE_LOADING_2D="OUT_PLANE_LOADING_2D",uI.LOADING_3D="LOADING_3D",uI.USERDEFINED="USERDEFINED",uI.NOTDEFINED="NOTDEFINED";var TT=class{constructor(e){this.value=e}};TT.FIRST_ORDER_THEORY="FIRST_ORDER_THEORY",TT.SECOND_ORDER_THEORY="SECOND_ORDER_THEORY",TT.THIRD_ORDER_THEORY="THIRD_ORDER_THEORY",TT.FULL_NONLINEAR_THEORY="FULL_NONLINEAR_THEORY",TT.USERDEFINED="USERDEFINED",TT.NOTDEFINED="NOTDEFINED";var gA=class{constructor(e){this.value=e}};gA.ADD="ADD",gA.DIVIDE="DIVIDE",gA.MULTIPLY="MULTIPLY",gA.SUBTRACT="SUBTRACT";var c8=class{constructor(e){this.value=e}};c8.SITE="SITE",c8.FACTORY="FACTORY",c8.NOTDEFINED="NOTDEFINED";var Ko=class{constructor(e){this.value=e}};Ko.AMPLIFIER="AMPLIFIER",Ko.CAMERA="CAMERA",Ko.DISPLAY="DISPLAY",Ko.MICROPHONE="MICROPHONE",Ko.PLAYER="PLAYER",Ko.PROJECTOR="PROJECTOR",Ko.RECEIVER="RECEIVER",Ko.SPEAKER="SPEAKER",Ko.SWITCHER="SWITCHER",Ko.TELEPHONE="TELEPHONE",Ko.TUNER="TUNER",Ko.USERDEFINED="USERDEFINED",Ko.NOTDEFINED="NOTDEFINED";var ET=class{constructor(e){this.value=e}};ET.POLYLINE_FORM="POLYLINE_FORM",ET.CIRCULAR_ARC="CIRCULAR_ARC",ET.ELLIPTIC_ARC="ELLIPTIC_ARC",ET.PARABOLIC_ARC="PARABOLIC_ARC",ET.HYPERBOLIC_ARC="HYPERBOLIC_ARC",ET.UNSPECIFIED="UNSPECIFIED";var kc=class{constructor(e){this.value=e}};kc.PLANE_SURF="PLANE_SURF",kc.CYLINDRICAL_SURF="CYLINDRICAL_SURF",kc.CONICAL_SURF="CONICAL_SURF",kc.SPHERICAL_SURF="SPHERICAL_SURF",kc.TOROIDAL_SURF="TOROIDAL_SURF",kc.SURF_OF_REVOLUTION="SURF_OF_REVOLUTION",kc.RULED_SURF="RULED_SURF",kc.GENERALISED_CONE="GENERALISED_CONE",kc.QUADRIC_SURF="QUADRIC_SURF",kc.SURF_OF_LINEAR_EXTRUSION="SURF_OF_LINEAR_EXTRUSION",kc.UNSPECIFIED="UNSPECIFIED";var go=class{constructor(e){this.value=e}};go.BEAM="BEAM",go.JOIST="JOIST",go.HOLLOWCORE="HOLLOWCORE",go.LINTEL="LINTEL",go.SPANDREL="SPANDREL",go.T_BEAM="T_BEAM",go.GIRDER_SEGMENT="GIRDER_SEGMENT",go.DIAPHRAGM="DIAPHRAGM",go.PIERCAP="PIERCAP",go.HATSTONE="HATSTONE",go.CORNICE="CORNICE",go.EDGEBEAM="EDGEBEAM",go.USERDEFINED="USERDEFINED",go.NOTDEFINED="NOTDEFINED";var hI=class{constructor(e){this.value=e}};hI.FIXED_MOVEMENT="FIXED_MOVEMENT",hI.GUIDED_LONGITUDINAL="GUIDED_LONGITUDINAL",hI.GUIDED_TRANSVERSAL="GUIDED_TRANSVERSAL",hI.FREE_MOVEMENT="FREE_MOVEMENT",hI.NOTDEFINED="NOTDEFINED";var Ku=class{constructor(e){this.value=e}};Ku.CYLINDRICAL="CYLINDRICAL",Ku.SPHERICAL="SPHERICAL",Ku.ELASTOMERIC="ELASTOMERIC",Ku.POT="POT",Ku.GUIDE="GUIDE",Ku.ROCKER="ROCKER",Ku.ROLLER="ROLLER",Ku.DISK="DISK",Ku.USERDEFINED="USERDEFINED",Ku.NOTDEFINED="NOTDEFINED";var Ju=class{constructor(e){this.value=e}};Ju.GREATERTHAN="GREATERTHAN",Ju.GREATERTHANOREQUALTO="GREATERTHANOREQUALTO",Ju.LESSTHAN="LESSTHAN",Ju.LESSTHANOREQUALTO="LESSTHANOREQUALTO",Ju.EQUALTO="EQUALTO",Ju.NOTEQUALTO="NOTEQUALTO",Ju.INCLUDES="INCLUDES",Ju.NOTINCLUDES="NOTINCLUDES",Ju.INCLUDEDIN="INCLUDEDIN",Ju.NOTINCLUDEDIN="NOTINCLUDEDIN";var vA=class{constructor(e){this.value=e}};vA.WATER="WATER",vA.STEAM="STEAM",vA.USERDEFINED="USERDEFINED",vA.NOTDEFINED="NOTDEFINED";var u8=class{constructor(e){this.value=e}};u8.UNION="UNION",u8.INTERSECTION="INTERSECTION",u8.DIFFERENCE="DIFFERENCE";var Vl=class{constructor(e){this.value=e}};Vl.ABUTMENT="ABUTMENT",Vl.DECK="DECK",Vl.DECK_SEGMENT="DECK_SEGMENT",Vl.FOUNDATION="FOUNDATION",Vl.PIER="PIER",Vl.PIER_SEGMENT="PIER_SEGMENT",Vl.PYLON="PYLON",Vl.SUBSTRUCTURE="SUBSTRUCTURE",Vl.SUPERSTRUCTURE="SUPERSTRUCTURE",Vl.SURFACESTRUCTURE="SURFACESTRUCTURE",Vl.USERDEFINED="USERDEFINED",Vl.NOTDEFINED="NOTDEFINED";var Qu=class{constructor(e){this.value=e}};Qu.ARCHED="ARCHED",Qu.CABLE_STAYED="CABLE_STAYED",Qu.CANTILEVER="CANTILEVER",Qu.CULVERT="CULVERT",Qu.FRAMEWORK="FRAMEWORK",Qu.GIRDER="GIRDER",Qu.SUSPENSION="SUSPENSION",Qu.TRUSS="TRUSS",Qu.USERDEFINED="USERDEFINED",Qu.NOTDEFINED="NOTDEFINED";var pI=class{constructor(e){this.value=e}};pI.INSULATION="INSULATION",pI.PRECASTPANEL="PRECASTPANEL",pI.APRON="APRON",pI.USERDEFINED="USERDEFINED",pI.NOTDEFINED="NOTDEFINED";var Jg=class{constructor(e){this.value=e}};Jg.COMPLEX="COMPLEX",Jg.ELEMENT="ELEMENT",Jg.PARTIAL="PARTIAL",Jg.PROVISIONFORVOID="PROVISIONFORVOID",Jg.PROVISIONFORSPACE="PROVISIONFORSPACE",Jg.USERDEFINED="USERDEFINED",Jg.NOTDEFINED="NOTDEFINED";var eh=class{constructor(e){this.value=e}};eh.FENESTRATION="FENESTRATION",eh.FOUNDATION="FOUNDATION",eh.LOADBEARING="LOADBEARING",eh.OUTERSHELL="OUTERSHELL",eh.SHADING="SHADING",eh.TRANSPORT="TRANSPORT",eh.REINFORCING="REINFORCING",eh.PRESTRESSING="PRESTRESSING",eh.USERDEFINED="USERDEFINED",eh.NOTDEFINED="NOTDEFINED";var wfe=class{constructor(e){this.value=e}};wfe.USERDEFINED="USERDEFINED",wfe.NOTDEFINED="NOTDEFINED";var bT=class{constructor(e){this.value=e}};bT.BEND="BEND",bT.CROSS="CROSS",bT.REDUCER="REDUCER",bT.TEE="TEE",bT.USERDEFINED="USERDEFINED",bT.NOTDEFINED="NOTDEFINED";var xT=class{constructor(e){this.value=e}};xT.CABLELADDERSEGMENT="CABLELADDERSEGMENT",xT.CABLETRAYSEGMENT="CABLETRAYSEGMENT",xT.CABLETRUNKINGSEGMENT="CABLETRUNKINGSEGMENT",xT.CONDUITSEGMENT="CONDUITSEGMENT",xT.USERDEFINED="USERDEFINED",xT.NOTDEFINED="NOTDEFINED";var Qg=class{constructor(e){this.value=e}};Qg.CONNECTOR="CONNECTOR",Qg.ENTRY="ENTRY",Qg.EXIT="EXIT",Qg.JUNCTION="JUNCTION",Qg.TRANSITION="TRANSITION",Qg.USERDEFINED="USERDEFINED",Qg.NOTDEFINED="NOTDEFINED";var IT=class{constructor(e){this.value=e}};IT.BUSBARSEGMENT="BUSBARSEGMENT",IT.CABLESEGMENT="CABLESEGMENT",IT.CONDUCTORSEGMENT="CONDUCTORSEGMENT",IT.CORESEGMENT="CORESEGMENT",IT.USERDEFINED="USERDEFINED",IT.NOTDEFINED="NOTDEFINED";var yA=class{constructor(e){this.value=e}};yA.WELL="WELL",yA.CAISSON="CAISSON",yA.USERDEFINED="USERDEFINED",yA.NOTDEFINED="NOTDEFINED";var dI=class{constructor(e){this.value=e}};dI.NOCHANGE="NOCHANGE",dI.MODIFIED="MODIFIED",dI.ADDED="ADDED",dI.DELETED="DELETED",dI.NOTDEFINED="NOTDEFINED";var fI=class{constructor(e){this.value=e}};fI.AIRCOOLED="AIRCOOLED",fI.WATERCOOLED="WATERCOOLED",fI.HEATRECOVERY="HEATRECOVERY",fI.USERDEFINED="USERDEFINED",fI.NOTDEFINED="NOTDEFINED";var Rfe=class{constructor(e){this.value=e}};Rfe.USERDEFINED="USERDEFINED",Rfe.NOTDEFINED="NOTDEFINED";var zp=class{constructor(e){this.value=e}};zp.DXCOOLINGCOIL="DXCOOLINGCOIL",zp.ELECTRICHEATINGCOIL="ELECTRICHEATINGCOIL",zp.GASHEATINGCOIL="GASHEATINGCOIL",zp.HYDRONICCOIL="HYDRONICCOIL",zp.STEAMHEATINGCOIL="STEAMHEATINGCOIL",zp.WATERCOOLINGCOIL="WATERCOOLINGCOIL",zp.WATERHEATINGCOIL="WATERHEATINGCOIL",zp.USERDEFINED="USERDEFINED",zp.NOTDEFINED="NOTDEFINED";var e0=class{constructor(e){this.value=e}};e0.COLUMN="COLUMN",e0.PILASTER="PILASTER",e0.PIERSTEM="PIERSTEM",e0.PIERSTEM_SEGMENT="PIERSTEM_SEGMENT",e0.STANDCOLUMN="STANDCOLUMN",e0.USERDEFINED="USERDEFINED",e0.NOTDEFINED="NOTDEFINED";var vo=class{constructor(e){this.value=e}};vo.ANTENNA="ANTENNA",vo.COMPUTER="COMPUTER",vo.FAX="FAX",vo.GATEWAY="GATEWAY",vo.MODEM="MODEM",vo.NETWORKAPPLIANCE="NETWORKAPPLIANCE",vo.NETWORKBRIDGE="NETWORKBRIDGE",vo.NETWORKHUB="NETWORKHUB",vo.PRINTER="PRINTER",vo.REPEATER="REPEATER",vo.ROUTER="ROUTER",vo.SCANNER="SCANNER",vo.USERDEFINED="USERDEFINED",vo.NOTDEFINED="NOTDEFINED";var Mfe=class{constructor(e){this.value=e}};Mfe.P_COMPLEX="P_COMPLEX",Mfe.Q_COMPLEX="Q_COMPLEX";var zs=class{constructor(e){this.value=e}};zs.DYNAMIC="DYNAMIC",zs.RECIPROCATING="RECIPROCATING",zs.ROTARY="ROTARY",zs.SCROLL="SCROLL",zs.TROCHOIDAL="TROCHOIDAL",zs.SINGLESTAGE="SINGLESTAGE",zs.BOOSTER="BOOSTER",zs.OPENTYPE="OPENTYPE",zs.HERMETIC="HERMETIC",zs.SEMIHERMETIC="SEMIHERMETIC",zs.WELDEDSHELLHERMETIC="WELDEDSHELLHERMETIC",zs.ROLLINGPISTON="ROLLINGPISTON",zs.ROTARYVANE="ROTARYVANE",zs.SINGLESCREW="SINGLESCREW",zs.TWINSCREW="TWINSCREW",zs.USERDEFINED="USERDEFINED",zs.NOTDEFINED="NOTDEFINED";var jp=class{constructor(e){this.value=e}};jp.AIRCOOLED="AIRCOOLED",jp.EVAPORATIVECOOLED="EVAPORATIVECOOLED",jp.WATERCOOLED="WATERCOOLED",jp.WATERCOOLEDBRAZEDPLATE="WATERCOOLEDBRAZEDPLATE",jp.WATERCOOLEDSHELLCOIL="WATERCOOLEDSHELLCOIL",jp.WATERCOOLEDSHELLTUBE="WATERCOOLEDSHELLTUBE",jp.WATERCOOLEDTUBEINTUBE="WATERCOOLEDTUBEINTUBE",jp.USERDEFINED="USERDEFINED",jp.NOTDEFINED="NOTDEFINED";var TA=class{constructor(e){this.value=e}};TA.ATPATH="ATPATH",TA.ATSTART="ATSTART",TA.ATEND="ATEND",TA.NOTDEFINED="NOTDEFINED";var mI=class{constructor(e){this.value=e}};mI.HARD="HARD",mI.SOFT="SOFT",mI.ADVISORY="ADVISORY",mI.USERDEFINED="USERDEFINED",mI.NOTDEFINED="NOTDEFINED";var th=class{constructor(e){this.value=e}};th.DEMOLISHING="DEMOLISHING",th.EARTHMOVING="EARTHMOVING",th.ERECTING="ERECTING",th.HEATING="HEATING",th.LIGHTING="LIGHTING",th.PAVING="PAVING",th.PUMPING="PUMPING",th.TRANSPORTING="TRANSPORTING",th.USERDEFINED="USERDEFINED",th.NOTDEFINED="NOTDEFINED";var Gc=class{constructor(e){this.value=e}};Gc.AGGREGATES="AGGREGATES",Gc.CONCRETE="CONCRETE",Gc.DRYWALL="DRYWALL",Gc.FUEL="FUEL",Gc.GYPSUM="GYPSUM",Gc.MASONRY="MASONRY",Gc.METAL="METAL",Gc.PLASTIC="PLASTIC",Gc.WOOD="WOOD",Gc.NOTDEFINED="NOTDEFINED",Gc.USERDEFINED="USERDEFINED";var EA=class{constructor(e){this.value=e}};EA.ASSEMBLY="ASSEMBLY",EA.FORMWORK="FORMWORK",EA.USERDEFINED="USERDEFINED",EA.NOTDEFINED="NOTDEFINED";var t0=class{constructor(e){this.value=e}};t0.FLOATING="FLOATING",t0.PROGRAMMABLE="PROGRAMMABLE",t0.PROPORTIONAL="PROPORTIONAL",t0.MULTIPOSITION="MULTIPOSITION",t0.TWOPOSITION="TWOPOSITION",t0.USERDEFINED="USERDEFINED",t0.NOTDEFINED="NOTDEFINED";var bA=class{constructor(e){this.value=e}};bA.ACTIVE="ACTIVE",bA.PASSIVE="PASSIVE",bA.USERDEFINED="USERDEFINED",bA.NOTDEFINED="NOTDEFINED";var gI=class{constructor(e){this.value=e}};gI.NATURALDRAFT="NATURALDRAFT",gI.MECHANICALINDUCEDDRAFT="MECHANICALINDUCEDDRAFT",gI.MECHANICALFORCEDDRAFT="MECHANICALFORCEDDRAFT",gI.USERDEFINED="USERDEFINED",gI.NOTDEFINED="NOTDEFINED";var Dfe=class{constructor(e){this.value=e}};Dfe.USERDEFINED="USERDEFINED",Dfe.NOTDEFINED="NOTDEFINED";var Wp=class{constructor(e){this.value=e}};Wp.BUDGET="BUDGET",Wp.COSTPLAN="COSTPLAN",Wp.ESTIMATE="ESTIMATE",Wp.TENDER="TENDER",Wp.PRICEDBILLOFQUANTITIES="PRICEDBILLOFQUANTITIES",Wp.UNPRICEDBILLOFQUANTITIES="UNPRICEDBILLOFQUANTITIES",Wp.SCHEDULEOFRATES="SCHEDULEOFRATES",Wp.USERDEFINED="USERDEFINED",Wp.NOTDEFINED="NOTDEFINED";var Jo=class{constructor(e){this.value=e}};Jo.CEILING="CEILING",Jo.FLOORING="FLOORING",Jo.CLADDING="CLADDING",Jo.ROOFING="ROOFING",Jo.MOLDING="MOLDING",Jo.SKIRTINGBOARD="SKIRTINGBOARD",Jo.INSULATION="INSULATION",Jo.MEMBRANE="MEMBRANE",Jo.SLEEVING="SLEEVING",Jo.WRAPPING="WRAPPING",Jo.COPING="COPING",Jo.USERDEFINED="USERDEFINED",Jo.NOTDEFINED="NOTDEFINED";var xA=class{constructor(e){this.value=e}};xA.OFFICE="OFFICE",xA.SITE="SITE",xA.USERDEFINED="USERDEFINED",xA.NOTDEFINED="NOTDEFINED";var Cfe=class{constructor(e){this.value=e}};Cfe.USERDEFINED="USERDEFINED",Cfe.NOTDEFINED="NOTDEFINED";var IA=class{constructor(e){this.value=e}};IA.LINEAR="LINEAR",IA.LOG_LINEAR="LOG_LINEAR",IA.LOG_LOG="LOG_LOG",IA.NOTDEFINED="NOTDEFINED";var Qo=class{constructor(e){this.value=e}};Qo.BACKDRAFTDAMPER="BACKDRAFTDAMPER",Qo.BALANCINGDAMPER="BALANCINGDAMPER",Qo.BLASTDAMPER="BLASTDAMPER",Qo.CONTROLDAMPER="CONTROLDAMPER",Qo.FIREDAMPER="FIREDAMPER",Qo.FIRESMOKEDAMPER="FIRESMOKEDAMPER",Qo.FUMEHOODEXHAUST="FUMEHOODEXHAUST",Qo.GRAVITYDAMPER="GRAVITYDAMPER",Qo.GRAVITYRELIEFDAMPER="GRAVITYRELIEFDAMPER",Qo.RELIEFDAMPER="RELIEFDAMPER",Qo.SMOKEDAMPER="SMOKEDAMPER",Qo.USERDEFINED="USERDEFINED",Qo.NOTDEFINED="NOTDEFINED";var vI=class{constructor(e){this.value=e}};vI.MEASURED="MEASURED",vI.PREDICTED="PREDICTED",vI.SIMULATED="SIMULATED",vI.USERDEFINED="USERDEFINED",vI.NOTDEFINED="NOTDEFINED";var dr=class{constructor(e){this.value=e}};dr.ANGULARVELOCITYUNIT="ANGULARVELOCITYUNIT",dr.AREADENSITYUNIT="AREADENSITYUNIT",dr.COMPOUNDPLANEANGLEUNIT="COMPOUNDPLANEANGLEUNIT",dr.DYNAMICVISCOSITYUNIT="DYNAMICVISCOSITYUNIT",dr.HEATFLUXDENSITYUNIT="HEATFLUXDENSITYUNIT",dr.INTEGERCOUNTRATEUNIT="INTEGERCOUNTRATEUNIT",dr.ISOTHERMALMOISTURECAPACITYUNIT="ISOTHERMALMOISTURECAPACITYUNIT",dr.KINEMATICVISCOSITYUNIT="KINEMATICVISCOSITYUNIT",dr.LINEARVELOCITYUNIT="LINEARVELOCITYUNIT",dr.MASSDENSITYUNIT="MASSDENSITYUNIT",dr.MASSFLOWRATEUNIT="MASSFLOWRATEUNIT",dr.MOISTUREDIFFUSIVITYUNIT="MOISTUREDIFFUSIVITYUNIT",dr.MOLECULARWEIGHTUNIT="MOLECULARWEIGHTUNIT",dr.SPECIFICHEATCAPACITYUNIT="SPECIFICHEATCAPACITYUNIT",dr.THERMALADMITTANCEUNIT="THERMALADMITTANCEUNIT",dr.THERMALCONDUCTANCEUNIT="THERMALCONDUCTANCEUNIT",dr.THERMALRESISTANCEUNIT="THERMALRESISTANCEUNIT",dr.THERMALTRANSMITTANCEUNIT="THERMALTRANSMITTANCEUNIT",dr.VAPORPERMEABILITYUNIT="VAPORPERMEABILITYUNIT",dr.VOLUMETRICFLOWRATEUNIT="VOLUMETRICFLOWRATEUNIT",dr.ROTATIONALFREQUENCYUNIT="ROTATIONALFREQUENCYUNIT",dr.TORQUEUNIT="TORQUEUNIT",dr.MOMENTOFINERTIAUNIT="MOMENTOFINERTIAUNIT",dr.LINEARMOMENTUNIT="LINEARMOMENTUNIT",dr.LINEARFORCEUNIT="LINEARFORCEUNIT",dr.PLANARFORCEUNIT="PLANARFORCEUNIT",dr.MODULUSOFELASTICITYUNIT="MODULUSOFELASTICITYUNIT",dr.SHEARMODULUSUNIT="SHEARMODULUSUNIT",dr.LINEARSTIFFNESSUNIT="LINEARSTIFFNESSUNIT",dr.ROTATIONALSTIFFNESSUNIT="ROTATIONALSTIFFNESSUNIT",dr.MODULUSOFSUBGRADEREACTIONUNIT="MODULUSOFSUBGRADEREACTIONUNIT",dr.ACCELERATIONUNIT="ACCELERATIONUNIT",dr.CURVATUREUNIT="CURVATUREUNIT",dr.HEATINGVALUEUNIT="HEATINGVALUEUNIT",dr.IONCONCENTRATIONUNIT="IONCONCENTRATIONUNIT",dr.LUMINOUSINTENSITYDISTRIBUTIONUNIT="LUMINOUSINTENSITYDISTRIBUTIONUNIT",dr.MASSPERLENGTHUNIT="MASSPERLENGTHUNIT",dr.MODULUSOFLINEARSUBGRADEREACTIONUNIT="MODULUSOFLINEARSUBGRADEREACTIONUNIT",dr.MODULUSOFROTATIONALSUBGRADEREACTIONUNIT="MODULUSOFROTATIONALSUBGRADEREACTIONUNIT",dr.PHUNIT="PHUNIT",dr.ROTATIONALMASSUNIT="ROTATIONALMASSUNIT",dr.SECTIONAREAINTEGRALUNIT="SECTIONAREAINTEGRALUNIT",dr.SECTIONMODULUSUNIT="SECTIONMODULUSUNIT",dr.SOUNDPOWERLEVELUNIT="SOUNDPOWERLEVELUNIT",dr.SOUNDPOWERUNIT="SOUNDPOWERUNIT",dr.SOUNDPRESSURELEVELUNIT="SOUNDPRESSURELEVELUNIT",dr.SOUNDPRESSUREUNIT="SOUNDPRESSUREUNIT",dr.TEMPERATUREGRADIENTUNIT="TEMPERATUREGRADIENTUNIT",dr.TEMPERATURERATEOFCHANGEUNIT="TEMPERATURERATEOFCHANGEUNIT",dr.THERMALEXPANSIONCOEFFICIENTUNIT="THERMALEXPANSIONCOEFFICIENTUNIT",dr.WARPINGCONSTANTUNIT="WARPINGCONSTANTUNIT",dr.WARPINGMOMENTUNIT="WARPINGMOMENTUNIT",dr.USERDEFINED="USERDEFINED";var Afe=class{constructor(e){this.value=e}};Afe.POSITIVE="POSITIVE",Afe.NEGATIVE="NEGATIVE";var _T=class{constructor(e){this.value=e}};_T.ANCHORPLATE="ANCHORPLATE",_T.BRACKET="BRACKET",_T.SHOE="SHOE",_T.EXPANSION_JOINT_DEVICE="EXPANSION_JOINT_DEVICE",_T.USERDEFINED="USERDEFINED",_T.NOTDEFINED="NOTDEFINED";var rh=class{constructor(e){this.value=e}};rh.FORMEDDUCT="FORMEDDUCT",rh.INSPECTIONCHAMBER="INSPECTIONCHAMBER",rh.INSPECTIONPIT="INSPECTIONPIT",rh.MANHOLE="MANHOLE",rh.METERCHAMBER="METERCHAMBER",rh.SUMP="SUMP",rh.TRENCH="TRENCH",rh.VALVECHAMBER="VALVECHAMBER",rh.USERDEFINED="USERDEFINED",rh.NOTDEFINED="NOTDEFINED";var ST=class{constructor(e){this.value=e}};ST.CABLE="CABLE",ST.CABLECARRIER="CABLECARRIER",ST.DUCT="DUCT",ST.PIPE="PIPE",ST.USERDEFINED="USERDEFINED",ST.NOTDEFINED="NOTDEFINED";var Pr=class{constructor(e){this.value=e}};Pr.AIRCONDITIONING="AIRCONDITIONING",Pr.AUDIOVISUAL="AUDIOVISUAL",Pr.CHEMICAL="CHEMICAL",Pr.CHILLEDWATER="CHILLEDWATER",Pr.COMMUNICATION="COMMUNICATION",Pr.COMPRESSEDAIR="COMPRESSEDAIR",Pr.CONDENSERWATER="CONDENSERWATER",Pr.CONTROL="CONTROL",Pr.CONVEYING="CONVEYING",Pr.DATA="DATA",Pr.DISPOSAL="DISPOSAL",Pr.DOMESTICCOLDWATER="DOMESTICCOLDWATER",Pr.DOMESTICHOTWATER="DOMESTICHOTWATER",Pr.DRAINAGE="DRAINAGE",Pr.EARTHING="EARTHING",Pr.ELECTRICAL="ELECTRICAL",Pr.ELECTROACOUSTIC="ELECTROACOUSTIC",Pr.EXHAUST="EXHAUST",Pr.FIREPROTECTION="FIREPROTECTION",Pr.FUEL="FUEL",Pr.GAS="GAS",Pr.HAZARDOUS="HAZARDOUS",Pr.HEATING="HEATING",Pr.LIGHTING="LIGHTING",Pr.LIGHTNINGPROTECTION="LIGHTNINGPROTECTION",Pr.MUNICIPALSOLIDWASTE="MUNICIPALSOLIDWASTE",Pr.OIL="OIL",Pr.OPERATIONAL="OPERATIONAL",Pr.POWERGENERATION="POWERGENERATION",Pr.RAINWATER="RAINWATER",Pr.REFRIGERATION="REFRIGERATION",Pr.SECURITY="SECURITY",Pr.SEWAGE="SEWAGE",Pr.SIGNAL="SIGNAL",Pr.STORMWATER="STORMWATER",Pr.TELEPHONE="TELEPHONE",Pr.TV="TV",Pr.VACUUM="VACUUM",Pr.VENT="VENT",Pr.VENTILATION="VENTILATION",Pr.WASTEWATER="WASTEWATER",Pr.WATERSUPPLY="WATERSUPPLY",Pr.USERDEFINED="USERDEFINED",Pr.NOTDEFINED="NOTDEFINED";var wT=class{constructor(e){this.value=e}};wT.PUBLIC="PUBLIC",wT.RESTRICTED="RESTRICTED",wT.CONFIDENTIAL="CONFIDENTIAL",wT.PERSONAL="PERSONAL",wT.USERDEFINED="USERDEFINED",wT.NOTDEFINED="NOTDEFINED";var yI=class{constructor(e){this.value=e}};yI.DRAFT="DRAFT",yI.FINALDRAFT="FINALDRAFT",yI.FINAL="FINAL",yI.REVISION="REVISION",yI.NOTDEFINED="NOTDEFINED";var qp=class{constructor(e){this.value=e}};qp.SWINGING="SWINGING",qp.DOUBLE_ACTING="DOUBLE_ACTING",qp.SLIDING="SLIDING",qp.FOLDING="FOLDING",qp.REVOLVING="REVOLVING",qp.ROLLINGUP="ROLLINGUP",qp.FIXEDPANEL="FIXEDPANEL",qp.USERDEFINED="USERDEFINED",qp.NOTDEFINED="NOTDEFINED";var _A=class{constructor(e){this.value=e}};_A.LEFT="LEFT",_A.MIDDLE="MIDDLE",_A.RIGHT="RIGHT",_A.NOTDEFINED="NOTDEFINED";var Yp=class{constructor(e){this.value=e}};Yp.ALUMINIUM="ALUMINIUM",Yp.HIGH_GRADE_STEEL="HIGH_GRADE_STEEL",Yp.STEEL="STEEL",Yp.WOOD="WOOD",Yp.ALUMINIUM_WOOD="ALUMINIUM_WOOD",Yp.ALUMINIUM_PLASTIC="ALUMINIUM_PLASTIC",Yp.PLASTIC="PLASTIC",Yp.USERDEFINED="USERDEFINED",Yp.NOTDEFINED="NOTDEFINED";var Ns=class{constructor(e){this.value=e}};Ns.SINGLE_SWING_LEFT="SINGLE_SWING_LEFT",Ns.SINGLE_SWING_RIGHT="SINGLE_SWING_RIGHT",Ns.DOUBLE_DOOR_SINGLE_SWING="DOUBLE_DOOR_SINGLE_SWING",Ns.DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_LEFT="DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_LEFT",Ns.DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_RIGHT="DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_RIGHT",Ns.DOUBLE_SWING_LEFT="DOUBLE_SWING_LEFT",Ns.DOUBLE_SWING_RIGHT="DOUBLE_SWING_RIGHT",Ns.DOUBLE_DOOR_DOUBLE_SWING="DOUBLE_DOOR_DOUBLE_SWING",Ns.SLIDING_TO_LEFT="SLIDING_TO_LEFT",Ns.SLIDING_TO_RIGHT="SLIDING_TO_RIGHT",Ns.DOUBLE_DOOR_SLIDING="DOUBLE_DOOR_SLIDING",Ns.FOLDING_TO_LEFT="FOLDING_TO_LEFT",Ns.FOLDING_TO_RIGHT="FOLDING_TO_RIGHT",Ns.DOUBLE_DOOR_FOLDING="DOUBLE_DOOR_FOLDING",Ns.REVOLVING="REVOLVING",Ns.ROLLINGUP="ROLLINGUP",Ns.USERDEFINED="USERDEFINED",Ns.NOTDEFINED="NOTDEFINED";var TI=class{constructor(e){this.value=e}};TI.DOOR="DOOR",TI.GATE="GATE",TI.TRAPDOOR="TRAPDOOR",TI.USERDEFINED="USERDEFINED",TI.NOTDEFINED="NOTDEFINED";var fs=class{constructor(e){this.value=e}};fs.SINGLE_SWING_LEFT="SINGLE_SWING_LEFT",fs.SINGLE_SWING_RIGHT="SINGLE_SWING_RIGHT",fs.DOUBLE_DOOR_SINGLE_SWING="DOUBLE_DOOR_SINGLE_SWING",fs.DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_LEFT="DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_LEFT",fs.DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_RIGHT="DOUBLE_DOOR_SINGLE_SWING_OPPOSITE_RIGHT",fs.DOUBLE_SWING_LEFT="DOUBLE_SWING_LEFT",fs.DOUBLE_SWING_RIGHT="DOUBLE_SWING_RIGHT",fs.DOUBLE_DOOR_DOUBLE_SWING="DOUBLE_DOOR_DOUBLE_SWING",fs.SLIDING_TO_LEFT="SLIDING_TO_LEFT",fs.SLIDING_TO_RIGHT="SLIDING_TO_RIGHT",fs.DOUBLE_DOOR_SLIDING="DOUBLE_DOOR_SLIDING",fs.FOLDING_TO_LEFT="FOLDING_TO_LEFT",fs.FOLDING_TO_RIGHT="FOLDING_TO_RIGHT",fs.DOUBLE_DOOR_FOLDING="DOUBLE_DOOR_FOLDING",fs.REVOLVING="REVOLVING",fs.ROLLINGUP="ROLLINGUP",fs.SWING_FIXED_LEFT="SWING_FIXED_LEFT",fs.SWING_FIXED_RIGHT="SWING_FIXED_RIGHT",fs.USERDEFINED="USERDEFINED",fs.NOTDEFINED="NOTDEFINED";var Xp=class{constructor(e){this.value=e}};Xp.BEND="BEND",Xp.CONNECTOR="CONNECTOR",Xp.ENTRY="ENTRY",Xp.EXIT="EXIT",Xp.JUNCTION="JUNCTION",Xp.OBSTRUCTION="OBSTRUCTION",Xp.TRANSITION="TRANSITION",Xp.USERDEFINED="USERDEFINED",Xp.NOTDEFINED="NOTDEFINED";var SA=class{constructor(e){this.value=e}};SA.RIGIDSEGMENT="RIGIDSEGMENT",SA.FLEXIBLESEGMENT="FLEXIBLESEGMENT",SA.USERDEFINED="USERDEFINED",SA.NOTDEFINED="NOTDEFINED";var EI=class{constructor(e){this.value=e}};EI.FLATOVAL="FLATOVAL",EI.RECTANGULAR="RECTANGULAR",EI.ROUND="ROUND",EI.USERDEFINED="USERDEFINED",EI.NOTDEFINED="NOTDEFINED";var Ls=class{constructor(e){this.value=e}};Ls.DISHWASHER="DISHWASHER",Ls.ELECTRICCOOKER="ELECTRICCOOKER",Ls.FREESTANDINGELECTRICHEATER="FREESTANDINGELECTRICHEATER",Ls.FREESTANDINGFAN="FREESTANDINGFAN",Ls.FREESTANDINGWATERHEATER="FREESTANDINGWATERHEATER",Ls.FREESTANDINGWATERCOOLER="FREESTANDINGWATERCOOLER",Ls.FREEZER="FREEZER",Ls.FRIDGE_FREEZER="FRIDGE_FREEZER",Ls.HANDDRYER="HANDDRYER",Ls.KITCHENMACHINE="KITCHENMACHINE",Ls.MICROWAVE="MICROWAVE",Ls.PHOTOCOPIER="PHOTOCOPIER",Ls.REFRIGERATOR="REFRIGERATOR",Ls.TUMBLEDRYER="TUMBLEDRYER",Ls.VENDINGMACHINE="VENDINGMACHINE",Ls.WASHINGMACHINE="WASHINGMACHINE",Ls.USERDEFINED="USERDEFINED",Ls.NOTDEFINED="NOTDEFINED";var RT=class{constructor(e){this.value=e}};RT.CONSUMERUNIT="CONSUMERUNIT",RT.DISTRIBUTIONBOARD="DISTRIBUTIONBOARD",RT.MOTORCONTROLCENTRE="MOTORCONTROLCENTRE",RT.SWITCHBOARD="SWITCHBOARD",RT.USERDEFINED="USERDEFINED",RT.NOTDEFINED="NOTDEFINED";var r0=class{constructor(e){this.value=e}};r0.BATTERY="BATTERY",r0.CAPACITORBANK="CAPACITORBANK",r0.HARMONICFILTER="HARMONICFILTER",r0.INDUCTORBANK="INDUCTORBANK",r0.UPS="UPS",r0.USERDEFINED="USERDEFINED",r0.NOTDEFINED="NOTDEFINED";var bI=class{constructor(e){this.value=e}};bI.CHP="CHP",bI.ENGINEGENERATOR="ENGINEGENERATOR",bI.STANDALONE="STANDALONE",bI.USERDEFINED="USERDEFINED",bI.NOTDEFINED="NOTDEFINED";var i0=class{constructor(e){this.value=e}};i0.DC="DC",i0.INDUCTION="INDUCTION",i0.POLYPHASE="POLYPHASE",i0.RELUCTANCESYNCHRONOUS="RELUCTANCESYNCHRONOUS",i0.SYNCHRONOUS="SYNCHRONOUS",i0.USERDEFINED="USERDEFINED",i0.NOTDEFINED="NOTDEFINED";var xI=class{constructor(e){this.value=e}};xI.TIMECLOCK="TIMECLOCK",xI.TIMEDELAY="TIMEDELAY",xI.RELAY="RELAY",xI.USERDEFINED="USERDEFINED",xI.NOTDEFINED="NOTDEFINED";var na=class{constructor(e){this.value=e}};na.ACCESSORY_ASSEMBLY="ACCESSORY_ASSEMBLY",na.ARCH="ARCH",na.BEAM_GRID="BEAM_GRID",na.BRACED_FRAME="BRACED_FRAME",na.GIRDER="GIRDER",na.REINFORCEMENT_UNIT="REINFORCEMENT_UNIT",na.RIGID_FRAME="RIGID_FRAME",na.SLAB_FIELD="SLAB_FIELD",na.TRUSS="TRUSS",na.ABUTMENT="ABUTMENT",na.PIER="PIER",na.PYLON="PYLON",na.CROSS_BRACING="CROSS_BRACING",na.DECK="DECK",na.USERDEFINED="USERDEFINED",na.NOTDEFINED="NOTDEFINED";var h8=class{constructor(e){this.value=e}};h8.COMPLEX="COMPLEX",h8.ELEMENT="ELEMENT",h8.PARTIAL="PARTIAL";var wA=class{constructor(e){this.value=e}};wA.EXTERNALCOMBUSTION="EXTERNALCOMBUSTION",wA.INTERNALCOMBUSTION="INTERNALCOMBUSTION",wA.USERDEFINED="USERDEFINED",wA.NOTDEFINED="NOTDEFINED";var Vc=class{constructor(e){this.value=e}};Vc.DIRECTEVAPORATIVERANDOMMEDIAAIRCOOLER="DIRECTEVAPORATIVERANDOMMEDIAAIRCOOLER",Vc.DIRECTEVAPORATIVERIGIDMEDIAAIRCOOLER="DIRECTEVAPORATIVERIGIDMEDIAAIRCOOLER",Vc.DIRECTEVAPORATIVESLINGERSPACKAGEDAIRCOOLER="DIRECTEVAPORATIVESLINGERSPACKAGEDAIRCOOLER",Vc.DIRECTEVAPORATIVEPACKAGEDROTARYAIRCOOLER="DIRECTEVAPORATIVEPACKAGEDROTARYAIRCOOLER",Vc.DIRECTEVAPORATIVEAIRWASHER="DIRECTEVAPORATIVEAIRWASHER",Vc.INDIRECTEVAPORATIVEPACKAGEAIRCOOLER="INDIRECTEVAPORATIVEPACKAGEAIRCOOLER",Vc.INDIRECTEVAPORATIVEWETCOIL="INDIRECTEVAPORATIVEWETCOIL",Vc.INDIRECTEVAPORATIVECOOLINGTOWERORCOILCOOLER="INDIRECTEVAPORATIVECOOLINGTOWERORCOILCOOLER",Vc.INDIRECTDIRECTCOMBINATION="INDIRECTDIRECTCOMBINATION",Vc.USERDEFINED="USERDEFINED",Vc.NOTDEFINED="NOTDEFINED";var Lf=class{constructor(e){this.value=e}};Lf.DIRECTEXPANSION="DIRECTEXPANSION",Lf.DIRECTEXPANSIONSHELLANDTUBE="DIRECTEXPANSIONSHELLANDTUBE",Lf.DIRECTEXPANSIONTUBEINTUBE="DIRECTEXPANSIONTUBEINTUBE",Lf.DIRECTEXPANSIONBRAZEDPLATE="DIRECTEXPANSIONBRAZEDPLATE",Lf.FLOODEDSHELLANDTUBE="FLOODEDSHELLANDTUBE",Lf.SHELLANDCOIL="SHELLANDCOIL",Lf.USERDEFINED="USERDEFINED",Lf.NOTDEFINED="NOTDEFINED";var MT=class{constructor(e){this.value=e}};MT.EVENTRULE="EVENTRULE",MT.EVENTMESSAGE="EVENTMESSAGE",MT.EVENTTIME="EVENTTIME",MT.EVENTCOMPLEX="EVENTCOMPLEX",MT.USERDEFINED="USERDEFINED",MT.NOTDEFINED="NOTDEFINED";var II=class{constructor(e){this.value=e}};II.STARTEVENT="STARTEVENT",II.ENDEVENT="ENDEVENT",II.INTERMEDIATEEVENT="INTERMEDIATEEVENT",II.USERDEFINED="USERDEFINED",II.NOTDEFINED="NOTDEFINED";var DT=class{constructor(e){this.value=e}};DT.EXTERNAL="EXTERNAL",DT.EXTERNAL_EARTH="EXTERNAL_EARTH",DT.EXTERNAL_WATER="EXTERNAL_WATER",DT.EXTERNAL_FIRE="EXTERNAL_FIRE",DT.USERDEFINED="USERDEFINED",DT.NOTDEFINED="NOTDEFINED";var $p=class{constructor(e){this.value=e}};$p.CENTRIFUGALFORWARDCURVED="CENTRIFUGALFORWARDCURVED",$p.CENTRIFUGALRADIAL="CENTRIFUGALRADIAL",$p.CENTRIFUGALBACKWARDINCLINEDCURVED="CENTRIFUGALBACKWARDINCLINEDCURVED",$p.CENTRIFUGALAIRFOIL="CENTRIFUGALAIRFOIL",$p.TUBEAXIAL="TUBEAXIAL",$p.VANEAXIAL="VANEAXIAL",$p.PROPELLORAXIAL="PROPELLORAXIAL",$p.USERDEFINED="USERDEFINED",$p.NOTDEFINED="NOTDEFINED";var _I=class{constructor(e){this.value=e}};_I.GLUE="GLUE",_I.MORTAR="MORTAR",_I.WELD="WELD",_I.USERDEFINED="USERDEFINED",_I.NOTDEFINED="NOTDEFINED";var Ff=class{constructor(e){this.value=e}};Ff.AIRPARTICLEFILTER="AIRPARTICLEFILTER",Ff.COMPRESSEDAIRFILTER="COMPRESSEDAIRFILTER",Ff.ODORFILTER="ODORFILTER",Ff.OILFILTER="OILFILTER",Ff.STRAINER="STRAINER",Ff.WATERFILTER="WATERFILTER",Ff.USERDEFINED="USERDEFINED",Ff.NOTDEFINED="NOTDEFINED";var n0=class{constructor(e){this.value=e}};n0.BREECHINGINLET="BREECHINGINLET",n0.FIREHYDRANT="FIREHYDRANT",n0.HOSEREEL="HOSEREEL",n0.SPRINKLER="SPRINKLER",n0.SPRINKLERDEFLECTOR="SPRINKLERDEFLECTOR",n0.USERDEFINED="USERDEFINED",n0.NOTDEFINED="NOTDEFINED";var RA=class{constructor(e){this.value=e}};RA.SOURCE="SOURCE",RA.SINK="SINK",RA.SOURCEANDSINK="SOURCEANDSINK",RA.NOTDEFINED="NOTDEFINED";var ih=class{constructor(e){this.value=e}};ih.PRESSUREGAUGE="PRESSUREGAUGE",ih.THERMOMETER="THERMOMETER",ih.AMMETER="AMMETER",ih.FREQUENCYMETER="FREQUENCYMETER",ih.POWERFACTORMETER="POWERFACTORMETER",ih.PHASEANGLEMETER="PHASEANGLEMETER",ih.VOLTMETER_PEAK="VOLTMETER_PEAK",ih.VOLTMETER_RMS="VOLTMETER_RMS",ih.USERDEFINED="USERDEFINED",ih.NOTDEFINED="NOTDEFINED";var CT=class{constructor(e){this.value=e}};CT.ENERGYMETER="ENERGYMETER",CT.GASMETER="GASMETER",CT.OILMETER="OILMETER",CT.WATERMETER="WATERMETER",CT.USERDEFINED="USERDEFINED",CT.NOTDEFINED="NOTDEFINED";var s0=class{constructor(e){this.value=e}};s0.CAISSON_FOUNDATION="CAISSON_FOUNDATION",s0.FOOTING_BEAM="FOOTING_BEAM",s0.PAD_FOOTING="PAD_FOOTING",s0.PILE_CAP="PILE_CAP",s0.STRIP_FOOTING="STRIP_FOOTING",s0.USERDEFINED="USERDEFINED",s0.NOTDEFINED="NOTDEFINED";var Zp=class{constructor(e){this.value=e}};Zp.CHAIR="CHAIR",Zp.TABLE="TABLE",Zp.DESK="DESK",Zp.BED="BED",Zp.FILECABINET="FILECABINET",Zp.SHELF="SHELF",Zp.SOFA="SOFA",Zp.USERDEFINED="USERDEFINED",Zp.NOTDEFINED="NOTDEFINED";var MA=class{constructor(e){this.value=e}};MA.TERRAIN="TERRAIN",MA.SOIL_BORING_POINT="SOIL_BORING_POINT",MA.USERDEFINED="USERDEFINED",MA.NOTDEFINED="NOTDEFINED";var Kp=class{constructor(e){this.value=e}};Kp.GRAPH_VIEW="GRAPH_VIEW",Kp.SKETCH_VIEW="SKETCH_VIEW",Kp.MODEL_VIEW="MODEL_VIEW",Kp.PLAN_VIEW="PLAN_VIEW",Kp.REFLECTED_PLAN_VIEW="REFLECTED_PLAN_VIEW",Kp.SECTION_VIEW="SECTION_VIEW",Kp.ELEVATION_VIEW="ELEVATION_VIEW",Kp.USERDEFINED="USERDEFINED",Kp.NOTDEFINED="NOTDEFINED";var Ofe=class{constructor(e){this.value=e}};Ofe.GLOBAL_COORDS="GLOBAL_COORDS",Ofe.LOCAL_COORDS="LOCAL_COORDS";var AT=class{constructor(e){this.value=e}};AT.RECTANGULAR="RECTANGULAR",AT.RADIAL="RADIAL",AT.TRIANGULAR="TRIANGULAR",AT.IRREGULAR="IRREGULAR",AT.USERDEFINED="USERDEFINED",AT.NOTDEFINED="NOTDEFINED";var DA=class{constructor(e){this.value=e}};DA.PLATE="PLATE",DA.SHELLANDTUBE="SHELLANDTUBE",DA.USERDEFINED="USERDEFINED",DA.NOTDEFINED="NOTDEFINED";var La=class{constructor(e){this.value=e}};La.STEAMINJECTION="STEAMINJECTION",La.ADIABATICAIRWASHER="ADIABATICAIRWASHER",La.ADIABATICPAN="ADIABATICPAN",La.ADIABATICWETTEDELEMENT="ADIABATICWETTEDELEMENT",La.ADIABATICATOMIZING="ADIABATICATOMIZING",La.ADIABATICULTRASONIC="ADIABATICULTRASONIC",La.ADIABATICRIGIDMEDIA="ADIABATICRIGIDMEDIA",La.ADIABATICCOMPRESSEDAIRNOZZLE="ADIABATICCOMPRESSEDAIRNOZZLE",La.ASSISTEDELECTRIC="ASSISTEDELECTRIC",La.ASSISTEDNATURALGAS="ASSISTEDNATURALGAS",La.ASSISTEDPROPANE="ASSISTEDPROPANE",La.ASSISTEDBUTANE="ASSISTEDBUTANE",La.ASSISTEDSTEAM="ASSISTEDSTEAM",La.USERDEFINED="USERDEFINED",La.NOTDEFINED="NOTDEFINED";var OT=class{constructor(e){this.value=e}};OT.CYCLONIC="CYCLONIC",OT.GREASE="GREASE",OT.OIL="OIL",OT.PETROL="PETROL",OT.USERDEFINED="USERDEFINED",OT.NOTDEFINED="NOTDEFINED";var PT=class{constructor(e){this.value=e}};PT.INTERNAL="INTERNAL",PT.EXTERNAL="EXTERNAL",PT.EXTERNAL_EARTH="EXTERNAL_EARTH",PT.EXTERNAL_WATER="EXTERNAL_WATER",PT.EXTERNAL_FIRE="EXTERNAL_FIRE",PT.NOTDEFINED="NOTDEFINED";var SI=class{constructor(e){this.value=e}};SI.ASSETINVENTORY="ASSETINVENTORY",SI.SPACEINVENTORY="SPACEINVENTORY",SI.FURNITUREINVENTORY="FURNITUREINVENTORY",SI.USERDEFINED="USERDEFINED",SI.NOTDEFINED="NOTDEFINED";var CA=class{constructor(e){this.value=e}};CA.DATA="DATA",CA.POWER="POWER",CA.USERDEFINED="USERDEFINED",CA.NOTDEFINED="NOTDEFINED";var AA=class{constructor(e){this.value=e}};AA.UNIFORM_KNOTS="UNIFORM_KNOTS",AA.QUASI_UNIFORM_KNOTS="QUASI_UNIFORM_KNOTS",AA.PIECEWISE_BEZIER_KNOTS="PIECEWISE_BEZIER_KNOTS",AA.UNSPECIFIED="UNSPECIFIED";var as=class{constructor(e){this.value=e}};as.ADMINISTRATION="ADMINISTRATION",as.CARPENTRY="CARPENTRY",as.CLEANING="CLEANING",as.CONCRETE="CONCRETE",as.DRYWALL="DRYWALL",as.ELECTRIC="ELECTRIC",as.FINISHING="FINISHING",as.FLOORING="FLOORING",as.GENERAL="GENERAL",as.HVAC="HVAC",as.LANDSCAPING="LANDSCAPING",as.MASONRY="MASONRY",as.PAINTING="PAINTING",as.PAVING="PAVING",as.PLUMBING="PLUMBING",as.ROOFING="ROOFING",as.SITEGRADING="SITEGRADING",as.STEELWORK="STEELWORK",as.SURVEYING="SURVEYING",as.USERDEFINED="USERDEFINED",as.NOTDEFINED="NOTDEFINED";var zc=class{constructor(e){this.value=e}};zc.COMPACTFLUORESCENT="COMPACTFLUORESCENT",zc.FLUORESCENT="FLUORESCENT",zc.HALOGEN="HALOGEN",zc.HIGHPRESSUREMERCURY="HIGHPRESSUREMERCURY",zc.HIGHPRESSURESODIUM="HIGHPRESSURESODIUM",zc.LED="LED",zc.METALHALIDE="METALHALIDE",zc.OLED="OLED",zc.TUNGSTENFILAMENT="TUNGSTENFILAMENT",zc.USERDEFINED="USERDEFINED",zc.NOTDEFINED="NOTDEFINED";var p8=class{constructor(e){this.value=e}};p8.AXIS1="AXIS1",p8.AXIS2="AXIS2",p8.AXIS3="AXIS3";var OA=class{constructor(e){this.value=e}};OA.TYPE_A="TYPE_A",OA.TYPE_B="TYPE_B",OA.TYPE_C="TYPE_C",OA.NOTDEFINED="NOTDEFINED";var jc=class{constructor(e){this.value=e}};jc.COMPACTFLUORESCENT="COMPACTFLUORESCENT",jc.FLUORESCENT="FLUORESCENT",jc.HIGHPRESSUREMERCURY="HIGHPRESSUREMERCURY",jc.HIGHPRESSURESODIUM="HIGHPRESSURESODIUM",jc.LIGHTEMITTINGDIODE="LIGHTEMITTINGDIODE",jc.LOWPRESSURESODIUM="LOWPRESSURESODIUM",jc.LOWVOLTAGEHALOGEN="LOWVOLTAGEHALOGEN",jc.MAINVOLTAGEHALOGEN="MAINVOLTAGEHALOGEN",jc.METALHALIDE="METALHALIDE",jc.TUNGSTENFILAMENT="TUNGSTENFILAMENT",jc.NOTDEFINED="NOTDEFINED";var wI=class{constructor(e){this.value=e}};wI.POINTSOURCE="POINTSOURCE",wI.DIRECTIONSOURCE="DIRECTIONSOURCE",wI.SECURITYLIGHTING="SECURITYLIGHTING",wI.USERDEFINED="USERDEFINED",wI.NOTDEFINED="NOTDEFINED";var RI=class{constructor(e){this.value=e}};RI.LOAD_GROUP="LOAD_GROUP",RI.LOAD_CASE="LOAD_CASE",RI.LOAD_COMBINATION="LOAD_COMBINATION",RI.USERDEFINED="USERDEFINED",RI.NOTDEFINED="NOTDEFINED";var MI=class{constructor(e){this.value=e}};MI.LOGICALAND="LOGICALAND",MI.LOGICALOR="LOGICALOR",MI.LOGICALXOR="LOGICALXOR",MI.LOGICALNOTAND="LOGICALNOTAND",MI.LOGICALNOTOR="LOGICALNOTOR";var el=class{constructor(e){this.value=e}};el.ANCHORBOLT="ANCHORBOLT",el.BOLT="BOLT",el.DOWEL="DOWEL",el.NAIL="NAIL",el.NAILPLATE="NAILPLATE",el.RIVET="RIVET",el.SCREW="SCREW",el.SHEARCONNECTOR="SHEARCONNECTOR",el.STAPLE="STAPLE",el.STUDSHEARCONNECTOR="STUDSHEARCONNECTOR",el.COUPLER="COUPLER",el.USERDEFINED="USERDEFINED",el.NOTDEFINED="NOTDEFINED";var a0=class{constructor(e){this.value=e}};a0.AIRSTATION="AIRSTATION",a0.FEEDAIRUNIT="FEEDAIRUNIT",a0.OXYGENGENERATOR="OXYGENGENERATOR",a0.OXYGENPLANT="OXYGENPLANT",a0.VACUUMSTATION="VACUUMSTATION",a0.USERDEFINED="USERDEFINED",a0.NOTDEFINED="NOTDEFINED";var _s=class{constructor(e){this.value=e}};_s.BRACE="BRACE",_s.CHORD="CHORD",_s.COLLAR="COLLAR",_s.MEMBER="MEMBER",_s.MULLION="MULLION",_s.PLATE="PLATE",_s.POST="POST",_s.PURLIN="PURLIN",_s.RAFTER="RAFTER",_s.STRINGER="STRINGER",_s.STRUT="STRUT",_s.STUD="STUD",_s.STIFFENING_RIB="STIFFENING_RIB",_s.ARCH_SEGMENT="ARCH_SEGMENT",_s.SUSPENSION_CABLE="SUSPENSION_CABLE",_s.SUSPENDER="SUSPENDER",_s.STAY_CABLE="STAY_CABLE",_s.USERDEFINED="USERDEFINED",_s.NOTDEFINED="NOTDEFINED";var DI=class{constructor(e){this.value=e}};DI.BELTDRIVE="BELTDRIVE",DI.COUPLING="COUPLING",DI.DIRECTDRIVE="DIRECTDRIVE",DI.USERDEFINED="USERDEFINED",DI.NOTDEFINED="NOTDEFINED";var sNt=class{constructor(e){this.value=e}};sNt.NULL="NULL";var Hf=class{constructor(e){this.value=e}};Hf.PRODUCT="PRODUCT",Hf.PROCESS="PROCESS",Hf.CONTROL="CONTROL",Hf.RESOURCE="RESOURCE",Hf.ACTOR="ACTOR",Hf.GROUP="GROUP",Hf.PROJECT="PROJECT",Hf.NOTDEFINED="NOTDEFINED";var tl=class{constructor(e){this.value=e}};tl.CODECOMPLIANCE="CODECOMPLIANCE",tl.CODEWAIVER="CODEWAIVER",tl.DESIGNINTENT="DESIGNINTENT",tl.EXTERNAL="EXTERNAL",tl.HEALTHANDSAFETY="HEALTHANDSAFETY",tl.MERGECONFLICT="MERGECONFLICT",tl.MODELVIEW="MODELVIEW",tl.PARAMETER="PARAMETER",tl.REQUIREMENT="REQUIREMENT",tl.SPECIFICATION="SPECIFICATION",tl.TRIGGERCONDITION="TRIGGERCONDITION",tl.USERDEFINED="USERDEFINED",tl.NOTDEFINED="NOTDEFINED";var Jp=class{constructor(e){this.value=e}};Jp.ASSIGNEE="ASSIGNEE",Jp.ASSIGNOR="ASSIGNOR",Jp.LESSEE="LESSEE",Jp.LESSOR="LESSOR",Jp.LETTINGAGENT="LETTINGAGENT",Jp.OWNER="OWNER",Jp.TENANT="TENANT",Jp.USERDEFINED="USERDEFINED",Jp.NOTDEFINED="NOTDEFINED";var PA=class{constructor(e){this.value=e}};PA.OPENING="OPENING",PA.RECESS="RECESS",PA.USERDEFINED="USERDEFINED",PA.NOTDEFINED="NOTDEFINED";var o0=class{constructor(e){this.value=e}};o0.AUDIOVISUALOUTLET="AUDIOVISUALOUTLET",o0.COMMUNICATIONSOUTLET="COMMUNICATIONSOUTLET",o0.POWEROUTLET="POWEROUTLET",o0.DATAOUTLET="DATAOUTLET",o0.TELEPHONEOUTLET="TELEPHONEOUTLET",o0.USERDEFINED="USERDEFINED",o0.NOTDEFINED="NOTDEFINED";var Pfe=class{constructor(e){this.value=e}};Pfe.USERDEFINED="USERDEFINED",Pfe.NOTDEFINED="NOTDEFINED";var CI=class{constructor(e){this.value=e}};CI.GRILL="GRILL",CI.LOUVER="LOUVER",CI.SCREEN="SCREEN",CI.USERDEFINED="USERDEFINED",CI.NOTDEFINED="NOTDEFINED";var AI=class{constructor(e){this.value=e}};AI.ACCESS="ACCESS",AI.BUILDING="BUILDING",AI.WORK="WORK",AI.USERDEFINED="USERDEFINED",AI.NOTDEFINED="NOTDEFINED";var d8=class{constructor(e){this.value=e}};d8.PHYSICAL="PHYSICAL",d8.VIRTUAL="VIRTUAL",d8.NOTDEFINED="NOTDEFINED";var NT=class{constructor(e){this.value=e}};NT.CAST_IN_PLACE="CAST_IN_PLACE",NT.COMPOSITE="COMPOSITE",NT.PRECAST_CONCRETE="PRECAST_CONCRETE",NT.PREFAB_STEEL="PREFAB_STEEL",NT.USERDEFINED="USERDEFINED",NT.NOTDEFINED="NOTDEFINED";var Uf=class{constructor(e){this.value=e}};Uf.BORED="BORED",Uf.DRIVEN="DRIVEN",Uf.JETGROUTING="JETGROUTING",Uf.COHESION="COHESION",Uf.FRICTION="FRICTION",Uf.SUPPORT="SUPPORT",Uf.USERDEFINED="USERDEFINED",Uf.NOTDEFINED="NOTDEFINED";var Qp=class{constructor(e){this.value=e}};Qp.BEND="BEND",Qp.CONNECTOR="CONNECTOR",Qp.ENTRY="ENTRY",Qp.EXIT="EXIT",Qp.JUNCTION="JUNCTION",Qp.OBSTRUCTION="OBSTRUCTION",Qp.TRANSITION="TRANSITION",Qp.USERDEFINED="USERDEFINED",Qp.NOTDEFINED="NOTDEFINED";var l0=class{constructor(e){this.value=e}};l0.CULVERT="CULVERT",l0.FLEXIBLESEGMENT="FLEXIBLESEGMENT",l0.RIGIDSEGMENT="RIGIDSEGMENT",l0.GUTTER="GUTTER",l0.SPOOL="SPOOL",l0.USERDEFINED="USERDEFINED",l0.NOTDEFINED="NOTDEFINED";var Wc=class{constructor(e){this.value=e}};Wc.CURTAIN_PANEL="CURTAIN_PANEL",Wc.SHEET="SHEET",Wc.FLANGE_PLATE="FLANGE_PLATE",Wc.WEB_PLATE="WEB_PLATE",Wc.STIFFENER_PLATE="STIFFENER_PLATE",Wc.GUSSET_PLATE="GUSSET_PLATE",Wc.COVER_PLATE="COVER_PLATE",Wc.SPLICE_PLATE="SPLICE_PLATE",Wc.BASE_PLATE="BASE_PLATE",Wc.USERDEFINED="USERDEFINED",Wc.NOTDEFINED="NOTDEFINED";var f8=class{constructor(e){this.value=e}};f8.CURVE3D="CURVE3D",f8.PCURVE_S1="PCURVE_S1",f8.PCURVE_S2="PCURVE_S2";var ed=class{constructor(e){this.value=e}};ed.ADVICE_CAUTION="ADVICE_CAUTION",ed.ADVICE_NOTE="ADVICE_NOTE",ed.ADVICE_WARNING="ADVICE_WARNING",ed.CALIBRATION="CALIBRATION",ed.DIAGNOSTIC="DIAGNOSTIC",ed.SHUTDOWN="SHUTDOWN",ed.STARTUP="STARTUP",ed.USERDEFINED="USERDEFINED",ed.NOTDEFINED="NOTDEFINED";var Nfe=class{constructor(e){this.value=e}};Nfe.CURVE="CURVE",Nfe.AREA="AREA";var c0=class{constructor(e){this.value=e}};c0.CHANGEORDER="CHANGEORDER",c0.MAINTENANCEWORKORDER="MAINTENANCEWORKORDER",c0.MOVEORDER="MOVEORDER",c0.PURCHASEORDER="PURCHASEORDER",c0.WORKORDER="WORKORDER",c0.USERDEFINED="USERDEFINED",c0.NOTDEFINED="NOTDEFINED";var Lfe=class{constructor(e){this.value=e}};Lfe.PROJECTED_LENGTH="PROJECTED_LENGTH",Lfe.TRUE_LENGTH="TRUE_LENGTH";var NA=class{constructor(e){this.value=e}};NA.BLISTER="BLISTER",NA.DEVIATOR="DEVIATOR",NA.USERDEFINED="USERDEFINED",NA.NOTDEFINED="NOTDEFINED";var Bf=class{constructor(e){this.value=e}};Bf.PSET_TYPEDRIVENONLY="PSET_TYPEDRIVENONLY",Bf.PSET_TYPEDRIVENOVERRIDE="PSET_TYPEDRIVENOVERRIDE",Bf.PSET_OCCURRENCEDRIVEN="PSET_OCCURRENCEDRIVEN",Bf.PSET_PERFORMANCEDRIVEN="PSET_PERFORMANCEDRIVEN",Bf.QTO_TYPEDRIVENONLY="QTO_TYPEDRIVENONLY",Bf.QTO_TYPEDRIVENOVERRIDE="QTO_TYPEDRIVENOVERRIDE",Bf.QTO_OCCURRENCEDRIVEN="QTO_OCCURRENCEDRIVEN",Bf.NOTDEFINED="NOTDEFINED";var LT=class{constructor(e){this.value=e}};LT.ELECTRONIC="ELECTRONIC",LT.ELECTROMAGNETIC="ELECTROMAGNETIC",LT.RESIDUALCURRENT="RESIDUALCURRENT",LT.THERMAL="THERMAL",LT.USERDEFINED="USERDEFINED",LT.NOTDEFINED="NOTDEFINED";var td=class{constructor(e){this.value=e}};td.CIRCUITBREAKER="CIRCUITBREAKER",td.EARTHLEAKAGECIRCUITBREAKER="EARTHLEAKAGECIRCUITBREAKER",td.EARTHINGSWITCH="EARTHINGSWITCH",td.FUSEDISCONNECTOR="FUSEDISCONNECTOR",td.RESIDUALCURRENTCIRCUITBREAKER="RESIDUALCURRENTCIRCUITBREAKER",td.RESIDUALCURRENTSWITCH="RESIDUALCURRENTSWITCH",td.VARISTOR="VARISTOR",td.USERDEFINED="USERDEFINED",td.NOTDEFINED="NOTDEFINED";var rd=class{constructor(e){this.value=e}};rd.CIRCULATOR="CIRCULATOR",rd.ENDSUCTION="ENDSUCTION",rd.SPLITCASE="SPLITCASE",rd.SUBMERSIBLEPUMP="SUBMERSIBLEPUMP",rd.SUMPPUMP="SUMPPUMP",rd.VERTICALINLINE="VERTICALINLINE",rd.VERTICALTURBINE="VERTICALTURBINE",rd.USERDEFINED="USERDEFINED",rd.NOTDEFINED="NOTDEFINED";var OI=class{constructor(e){this.value=e}};OI.HANDRAIL="HANDRAIL",OI.GUARDRAIL="GUARDRAIL",OI.BALUSTRADE="BALUSTRADE",OI.USERDEFINED="USERDEFINED",OI.NOTDEFINED="NOTDEFINED";var LA=class{constructor(e){this.value=e}};LA.STRAIGHT="STRAIGHT",LA.SPIRAL="SPIRAL",LA.USERDEFINED="USERDEFINED",LA.NOTDEFINED="NOTDEFINED";var kf=class{constructor(e){this.value=e}};kf.STRAIGHT_RUN_RAMP="STRAIGHT_RUN_RAMP",kf.TWO_STRAIGHT_RUN_RAMP="TWO_STRAIGHT_RUN_RAMP",kf.QUARTER_TURN_RAMP="QUARTER_TURN_RAMP",kf.TWO_QUARTER_TURN_RAMP="TWO_QUARTER_TURN_RAMP",kf.HALF_TURN_RAMP="HALF_TURN_RAMP",kf.SPIRAL_RAMP="SPIRAL_RAMP",kf.USERDEFINED="USERDEFINED",kf.NOTDEFINED="NOTDEFINED";var Gf=class{constructor(e){this.value=e}};Gf.DAILY="DAILY",Gf.WEEKLY="WEEKLY",Gf.MONTHLY_BY_DAY_OF_MONTH="MONTHLY_BY_DAY_OF_MONTH",Gf.MONTHLY_BY_POSITION="MONTHLY_BY_POSITION",Gf.BY_DAY_COUNT="BY_DAY_COUNT",Gf.BY_WEEKDAY_COUNT="BY_WEEKDAY_COUNT",Gf.YEARLY_BY_DAY_OF_MONTH="YEARLY_BY_DAY_OF_MONTH",Gf.YEARLY_BY_POSITION="YEARLY_BY_POSITION";var PI=class{constructor(e){this.value=e}};PI.KILOPOINT="KILOPOINT",PI.MILEPOINT="MILEPOINT",PI.STATION="STATION",PI.USERDEFINED="USERDEFINED",PI.NOTDEFINED="NOTDEFINED";var nh=class{constructor(e){this.value=e}};nh.BLINN="BLINN",nh.FLAT="FLAT",nh.GLASS="GLASS",nh.MATT="MATT",nh.METAL="METAL",nh.MIRROR="MIRROR",nh.PHONG="PHONG",nh.PLASTIC="PLASTIC",nh.STRAUSS="STRAUSS",nh.NOTDEFINED="NOTDEFINED";var sh=class{constructor(e){this.value=e}};sh.MAIN="MAIN",sh.SHEAR="SHEAR",sh.LIGATURE="LIGATURE",sh.STUD="STUD",sh.PUNCHING="PUNCHING",sh.EDGE="EDGE",sh.RING="RING",sh.ANCHORING="ANCHORING",sh.USERDEFINED="USERDEFINED",sh.NOTDEFINED="NOTDEFINED";var Ffe=class{constructor(e){this.value=e}};Ffe.PLAIN="PLAIN",Ffe.TEXTURED="TEXTURED";var qc=class{constructor(e){this.value=e}};qc.ANCHORING="ANCHORING",qc.EDGE="EDGE",qc.LIGATURE="LIGATURE",qc.MAIN="MAIN",qc.PUNCHING="PUNCHING",qc.RING="RING",qc.SHEAR="SHEAR",qc.STUD="STUD",qc.SPACEBAR="SPACEBAR",qc.USERDEFINED="USERDEFINED",qc.NOTDEFINED="NOTDEFINED";var Hfe=class{constructor(e){this.value=e}};Hfe.USERDEFINED="USERDEFINED",Hfe.NOTDEFINED="NOTDEFINED";var Fn=class{constructor(e){this.value=e}};Fn.SUPPLIER="SUPPLIER",Fn.MANUFACTURER="MANUFACTURER",Fn.CONTRACTOR="CONTRACTOR",Fn.SUBCONTRACTOR="SUBCONTRACTOR",Fn.ARCHITECT="ARCHITECT",Fn.STRUCTURALENGINEER="STRUCTURALENGINEER",Fn.COSTENGINEER="COSTENGINEER",Fn.CLIENT="CLIENT",Fn.BUILDINGOWNER="BUILDINGOWNER",Fn.BUILDINGOPERATOR="BUILDINGOPERATOR",Fn.MECHANICALENGINEER="MECHANICALENGINEER",Fn.ELECTRICALENGINEER="ELECTRICALENGINEER",Fn.PROJECTMANAGER="PROJECTMANAGER",Fn.FACILITIESMANAGER="FACILITIESMANAGER",Fn.CIVILENGINEER="CIVILENGINEER",Fn.COMMISSIONINGENGINEER="COMMISSIONINGENGINEER",Fn.ENGINEER="ENGINEER",Fn.OWNER="OWNER",Fn.CONSULTANT="CONSULTANT",Fn.CONSTRUCTIONMANAGER="CONSTRUCTIONMANAGER",Fn.FIELDCONSTRUCTIONMANAGER="FIELDCONSTRUCTIONMANAGER",Fn.RESELLER="RESELLER",Fn.USERDEFINED="USERDEFINED";var Fa=class{constructor(e){this.value=e}};Fa.FLAT_ROOF="FLAT_ROOF",Fa.SHED_ROOF="SHED_ROOF",Fa.GABLE_ROOF="GABLE_ROOF",Fa.HIP_ROOF="HIP_ROOF",Fa.HIPPED_GABLE_ROOF="HIPPED_GABLE_ROOF",Fa.GAMBREL_ROOF="GAMBREL_ROOF",Fa.MANSARD_ROOF="MANSARD_ROOF",Fa.BARREL_ROOF="BARREL_ROOF",Fa.RAINBOW_ROOF="RAINBOW_ROOF",Fa.BUTTERFLY_ROOF="BUTTERFLY_ROOF",Fa.PAVILION_ROOF="PAVILION_ROOF",Fa.DOME_ROOF="DOME_ROOF",Fa.FREEFORM="FREEFORM",Fa.USERDEFINED="USERDEFINED",Fa.NOTDEFINED="NOTDEFINED";var sa=class{constructor(e){this.value=e}};sa.EXA="EXA",sa.PETA="PETA",sa.TERA="TERA",sa.GIGA="GIGA",sa.MEGA="MEGA",sa.KILO="KILO",sa.HECTO="HECTO",sa.DECA="DECA",sa.DECI="DECI",sa.CENTI="CENTI",sa.MILLI="MILLI",sa.MICRO="MICRO",sa.NANO="NANO",sa.PICO="PICO",sa.FEMTO="FEMTO",sa.ATTO="ATTO";var Xi=class{constructor(e){this.value=e}};Xi.AMPERE="AMPERE",Xi.BECQUEREL="BECQUEREL",Xi.CANDELA="CANDELA",Xi.COULOMB="COULOMB",Xi.CUBIC_METRE="CUBIC_METRE",Xi.DEGREE_CELSIUS="DEGREE_CELSIUS",Xi.FARAD="FARAD",Xi.GRAM="GRAM",Xi.GRAY="GRAY",Xi.HENRY="HENRY",Xi.HERTZ="HERTZ",Xi.JOULE="JOULE",Xi.KELVIN="KELVIN",Xi.LUMEN="LUMEN",Xi.LUX="LUX",Xi.METRE="METRE",Xi.MOLE="MOLE",Xi.NEWTON="NEWTON",Xi.OHM="OHM",Xi.PASCAL="PASCAL",Xi.RADIAN="RADIAN",Xi.SECOND="SECOND",Xi.SIEMENS="SIEMENS",Xi.SIEVERT="SIEVERT",Xi.SQUARE_METRE="SQUARE_METRE",Xi.STERADIAN="STERADIAN",Xi.TESLA="TESLA",Xi.VOLT="VOLT",Xi.WATT="WATT",Xi.WEBER="WEBER";var zl=class{constructor(e){this.value=e}};zl.BATH="BATH",zl.BIDET="BIDET",zl.CISTERN="CISTERN",zl.SHOWER="SHOWER",zl.SINK="SINK",zl.SANITARYFOUNTAIN="SANITARYFOUNTAIN",zl.TOILETPAN="TOILETPAN",zl.URINAL="URINAL",zl.WASHHANDBASIN="WASHHANDBASIN",zl.WCSEAT="WCSEAT",zl.USERDEFINED="USERDEFINED",zl.NOTDEFINED="NOTDEFINED";var Ufe=class{constructor(e){this.value=e}};Ufe.UNIFORM="UNIFORM",Ufe.TAPERED="TAPERED";var Tn=class{constructor(e){this.value=e}};Tn.COSENSOR="COSENSOR",Tn.CO2SENSOR="CO2SENSOR",Tn.CONDUCTANCESENSOR="CONDUCTANCESENSOR",Tn.CONTACTSENSOR="CONTACTSENSOR",Tn.FIRESENSOR="FIRESENSOR",Tn.FLOWSENSOR="FLOWSENSOR",Tn.FROSTSENSOR="FROSTSENSOR",Tn.GASSENSOR="GASSENSOR",Tn.HEATSENSOR="HEATSENSOR",Tn.HUMIDITYSENSOR="HUMIDITYSENSOR",Tn.IDENTIFIERSENSOR="IDENTIFIERSENSOR",Tn.IONCONCENTRATIONSENSOR="IONCONCENTRATIONSENSOR",Tn.LEVELSENSOR="LEVELSENSOR",Tn.LIGHTSENSOR="LIGHTSENSOR",Tn.MOISTURESENSOR="MOISTURESENSOR",Tn.MOVEMENTSENSOR="MOVEMENTSENSOR",Tn.PHSENSOR="PHSENSOR",Tn.PRESSURESENSOR="PRESSURESENSOR",Tn.RADIATIONSENSOR="RADIATIONSENSOR",Tn.RADIOACTIVITYSENSOR="RADIOACTIVITYSENSOR",Tn.SMOKESENSOR="SMOKESENSOR",Tn.SOUNDSENSOR="SOUNDSENSOR",Tn.TEMPERATURESENSOR="TEMPERATURESENSOR",Tn.WINDSENSOR="WINDSENSOR",Tn.USERDEFINED="USERDEFINED",Tn.NOTDEFINED="NOTDEFINED";var FT=class{constructor(e){this.value=e}};FT.START_START="START_START",FT.START_FINISH="START_FINISH",FT.FINISH_START="FINISH_START",FT.FINISH_FINISH="FINISH_FINISH",FT.USERDEFINED="USERDEFINED",FT.NOTDEFINED="NOTDEFINED";var NI=class{constructor(e){this.value=e}};NI.JALOUSIE="JALOUSIE",NI.SHUTTER="SHUTTER",NI.AWNING="AWNING",NI.USERDEFINED="USERDEFINED",NI.NOTDEFINED="NOTDEFINED";var jl=class{constructor(e){this.value=e}};jl.P_SINGLEVALUE="P_SINGLEVALUE",jl.P_ENUMERATEDVALUE="P_ENUMERATEDVALUE",jl.P_BOUNDEDVALUE="P_BOUNDEDVALUE",jl.P_LISTVALUE="P_LISTVALUE",jl.P_TABLEVALUE="P_TABLEVALUE",jl.P_REFERENCEVALUE="P_REFERENCEVALUE",jl.Q_LENGTH="Q_LENGTH",jl.Q_AREA="Q_AREA",jl.Q_VOLUME="Q_VOLUME",jl.Q_COUNT="Q_COUNT",jl.Q_WEIGHT="Q_WEIGHT",jl.Q_TIME="Q_TIME";var ah=class{constructor(e){this.value=e}};ah.FLOOR="FLOOR",ah.ROOF="ROOF",ah.LANDING="LANDING",ah.BASESLAB="BASESLAB",ah.APPROACH_SLAB="APPROACH_SLAB",ah.PAVING="PAVING",ah.WEARING="WEARING",ah.SIDEWALK="SIDEWALK",ah.USERDEFINED="USERDEFINED",ah.NOTDEFINED="NOTDEFINED";var FA=class{constructor(e){this.value=e}};FA.SOLARCOLLECTOR="SOLARCOLLECTOR",FA.SOLARPANEL="SOLARPANEL",FA.USERDEFINED="USERDEFINED",FA.NOTDEFINED="NOTDEFINED";var HA=class{constructor(e){this.value=e}};HA.CONVECTOR="CONVECTOR",HA.RADIATOR="RADIATOR",HA.USERDEFINED="USERDEFINED",HA.NOTDEFINED="NOTDEFINED";var u0=class{constructor(e){this.value=e}};u0.SPACE="SPACE",u0.PARKING="PARKING",u0.GFA="GFA",u0.INTERNAL="INTERNAL",u0.EXTERNAL="EXTERNAL",u0.USERDEFINED="USERDEFINED",u0.NOTDEFINED="NOTDEFINED";var oh=class{constructor(e){this.value=e}};oh.CONSTRUCTION="CONSTRUCTION",oh.FIRESAFETY="FIRESAFETY",oh.LIGHTING="LIGHTING",oh.OCCUPANCY="OCCUPANCY",oh.SECURITY="SECURITY",oh.THERMAL="THERMAL",oh.TRANSPORT="TRANSPORT",oh.VENTILATION="VENTILATION",oh.USERDEFINED="USERDEFINED",oh.NOTDEFINED="NOTDEFINED";var LI=class{constructor(e){this.value=e}};LI.BIRDCAGE="BIRDCAGE",LI.COWL="COWL",LI.RAINWATERHOPPER="RAINWATERHOPPER",LI.USERDEFINED="USERDEFINED",LI.NOTDEFINED="NOTDEFINED";var h0=class{constructor(e){this.value=e}};h0.STRAIGHT="STRAIGHT",h0.WINDER="WINDER",h0.SPIRAL="SPIRAL",h0.CURVED="CURVED",h0.FREEFORM="FREEFORM",h0.USERDEFINED="USERDEFINED",h0.NOTDEFINED="NOTDEFINED";var aa=class{constructor(e){this.value=e}};aa.STRAIGHT_RUN_STAIR="STRAIGHT_RUN_STAIR",aa.TWO_STRAIGHT_RUN_STAIR="TWO_STRAIGHT_RUN_STAIR",aa.QUARTER_WINDING_STAIR="QUARTER_WINDING_STAIR",aa.QUARTER_TURN_STAIR="QUARTER_TURN_STAIR",aa.HALF_WINDING_STAIR="HALF_WINDING_STAIR",aa.HALF_TURN_STAIR="HALF_TURN_STAIR",aa.TWO_QUARTER_WINDING_STAIR="TWO_QUARTER_WINDING_STAIR",aa.TWO_QUARTER_TURN_STAIR="TWO_QUARTER_TURN_STAIR",aa.THREE_QUARTER_WINDING_STAIR="THREE_QUARTER_WINDING_STAIR",aa.THREE_QUARTER_TURN_STAIR="THREE_QUARTER_TURN_STAIR",aa.SPIRAL_STAIR="SPIRAL_STAIR",aa.DOUBLE_RETURN_STAIR="DOUBLE_RETURN_STAIR",aa.CURVED_RUN_STAIR="CURVED_RUN_STAIR",aa.TWO_CURVED_RUN_STAIR="TWO_CURVED_RUN_STAIR",aa.USERDEFINED="USERDEFINED",aa.NOTDEFINED="NOTDEFINED";var FI=class{constructor(e){this.value=e}};FI.READWRITE="READWRITE",FI.READONLY="READONLY",FI.LOCKED="LOCKED",FI.READWRITELOCKED="READWRITELOCKED",FI.READONLYLOCKED="READONLYLOCKED";var id=class{constructor(e){this.value=e}};id.CONST="CONST",id.LINEAR="LINEAR",id.POLYGONAL="POLYGONAL",id.EQUIDISTANT="EQUIDISTANT",id.SINUS="SINUS",id.PARABOLA="PARABOLA",id.DISCRETE="DISCRETE",id.USERDEFINED="USERDEFINED",id.NOTDEFINED="NOTDEFINED";var p0=class{constructor(e){this.value=e}};p0.RIGID_JOINED_MEMBER="RIGID_JOINED_MEMBER",p0.PIN_JOINED_MEMBER="PIN_JOINED_MEMBER",p0.CABLE="CABLE",p0.TENSION_MEMBER="TENSION_MEMBER",p0.COMPRESSION_MEMBER="COMPRESSION_MEMBER",p0.USERDEFINED="USERDEFINED",p0.NOTDEFINED="NOTDEFINED";var HT=class{constructor(e){this.value=e}};HT.CONST="CONST",HT.BILINEAR="BILINEAR",HT.DISCRETE="DISCRETE",HT.ISOCONTOUR="ISOCONTOUR",HT.USERDEFINED="USERDEFINED",HT.NOTDEFINED="NOTDEFINED";var HI=class{constructor(e){this.value=e}};HI.BENDING_ELEMENT="BENDING_ELEMENT",HI.MEMBRANE_ELEMENT="MEMBRANE_ELEMENT",HI.SHELL="SHELL",HI.USERDEFINED="USERDEFINED",HI.NOTDEFINED="NOTDEFINED";var UA=class{constructor(e){this.value=e}};UA.PURCHASE="PURCHASE",UA.WORK="WORK",UA.USERDEFINED="USERDEFINED",UA.NOTDEFINED="NOTDEFINED";var UT=class{constructor(e){this.value=e}};UT.MARK="MARK",UT.TAG="TAG",UT.TREATMENT="TREATMENT",UT.DEFECT="DEFECT",UT.USERDEFINED="USERDEFINED",UT.NOTDEFINED="NOTDEFINED";var m8=class{constructor(e){this.value=e}};m8.POSITIVE="POSITIVE",m8.NEGATIVE="NEGATIVE",m8.BOTH="BOTH";var Yc=class{constructor(e){this.value=e}};Yc.CONTACTOR="CONTACTOR",Yc.DIMMERSWITCH="DIMMERSWITCH",Yc.EMERGENCYSTOP="EMERGENCYSTOP",Yc.KEYPAD="KEYPAD",Yc.MOMENTARYSWITCH="MOMENTARYSWITCH",Yc.SELECTORSWITCH="SELECTORSWITCH",Yc.STARTER="STARTER",Yc.SWITCHDISCONNECTOR="SWITCHDISCONNECTOR",Yc.TOGGLESWITCH="TOGGLESWITCH",Yc.USERDEFINED="USERDEFINED",Yc.NOTDEFINED="NOTDEFINED";var BA=class{constructor(e){this.value=e}};BA.PANEL="PANEL",BA.WORKSURFACE="WORKSURFACE",BA.USERDEFINED="USERDEFINED",BA.NOTDEFINED="NOTDEFINED";var nd=class{constructor(e){this.value=e}};nd.BASIN="BASIN",nd.BREAKPRESSURE="BREAKPRESSURE",nd.EXPANSION="EXPANSION",nd.FEEDANDEXPANSION="FEEDANDEXPANSION",nd.PRESSUREVESSEL="PRESSUREVESSEL",nd.STORAGE="STORAGE",nd.VESSEL="VESSEL",nd.USERDEFINED="USERDEFINED",nd.NOTDEFINED="NOTDEFINED";var g8=class{constructor(e){this.value=e}};g8.ELAPSEDTIME="ELAPSEDTIME",g8.WORKTIME="WORKTIME",g8.NOTDEFINED="NOTDEFINED";var yo=class{constructor(e){this.value=e}};yo.ATTENDANCE="ATTENDANCE",yo.CONSTRUCTION="CONSTRUCTION",yo.DEMOLITION="DEMOLITION",yo.DISMANTLE="DISMANTLE",yo.DISPOSAL="DISPOSAL",yo.INSTALLATION="INSTALLATION",yo.LOGISTIC="LOGISTIC",yo.MAINTENANCE="MAINTENANCE",yo.MOVE="MOVE",yo.OPERATION="OPERATION",yo.REMOVAL="REMOVAL",yo.RENOVATION="RENOVATION",yo.USERDEFINED="USERDEFINED",yo.NOTDEFINED="NOTDEFINED";var UI=class{constructor(e){this.value=e}};UI.COUPLER="COUPLER",UI.FIXED_END="FIXED_END",UI.TENSIONING_END="TENSIONING_END",UI.USERDEFINED="USERDEFINED",UI.NOTDEFINED="NOTDEFINED";var d0=class{constructor(e){this.value=e}};d0.DUCT="DUCT",d0.COUPLER="COUPLER",d0.GROUTING_DUCT="GROUTING_DUCT",d0.TRUMPET="TRUMPET",d0.DIABOLO="DIABOLO",d0.USERDEFINED="USERDEFINED",d0.NOTDEFINED="NOTDEFINED";var BT=class{constructor(e){this.value=e}};BT.BAR="BAR",BT.COATED="COATED",BT.STRAND="STRAND",BT.WIRE="WIRE",BT.USERDEFINED="USERDEFINED",BT.NOTDEFINED="NOTDEFINED";var kA=class{constructor(e){this.value=e}};kA.LEFT="LEFT",kA.RIGHT="RIGHT",kA.UP="UP",kA.DOWN="DOWN";var f0=class{constructor(e){this.value=e}};f0.CONTINUOUS="CONTINUOUS",f0.DISCRETE="DISCRETE",f0.DISCRETEBINARY="DISCRETEBINARY",f0.PIECEWISEBINARY="PIECEWISEBINARY",f0.PIECEWISECONSTANT="PIECEWISECONSTANT",f0.PIECEWISECONTINUOUS="PIECEWISECONTINUOUS",f0.NOTDEFINED="NOTDEFINED";var m0=class{constructor(e){this.value=e}};m0.CURRENT="CURRENT",m0.FREQUENCY="FREQUENCY",m0.INVERTER="INVERTER",m0.RECTIFIER="RECTIFIER",m0.VOLTAGE="VOLTAGE",m0.USERDEFINED="USERDEFINED",m0.NOTDEFINED="NOTDEFINED";var GA=class{constructor(e){this.value=e}};GA.DISCONTINUOUS="DISCONTINUOUS",GA.CONTINUOUS="CONTINUOUS",GA.CONTSAMEGRADIENT="CONTSAMEGRADIENT",GA.CONTSAMEGRADIENTSAMECURVATURE="CONTSAMEGRADIENTSAMECURVATURE";var kT=class{constructor(e){this.value=e}};kT.BIQUADRATICPARABOLA="BIQUADRATICPARABOLA",kT.BLOSSCURVE="BLOSSCURVE",kT.CLOTHOIDCURVE="CLOTHOIDCURVE",kT.COSINECURVE="COSINECURVE",kT.CUBICPARABOLA="CUBICPARABOLA",kT.SINECURVE="SINECURVE";var g0=class{constructor(e){this.value=e}};g0.ELEVATOR="ELEVATOR",g0.ESCALATOR="ESCALATOR",g0.MOVINGWALKWAY="MOVINGWALKWAY",g0.CRANEWAY="CRANEWAY",g0.LIFTINGGEAR="LIFTINGGEAR",g0.USERDEFINED="USERDEFINED",g0.NOTDEFINED="NOTDEFINED";var v8=class{constructor(e){this.value=e}};v8.CARTESIAN="CARTESIAN",v8.PARAMETER="PARAMETER",v8.UNSPECIFIED="UNSPECIFIED";var y8=class{constructor(e){this.value=e}};y8.FINNED="FINNED",y8.USERDEFINED="USERDEFINED",y8.NOTDEFINED="NOTDEFINED";var $i=class{constructor(e){this.value=e}};$i.ABSORBEDDOSEUNIT="ABSORBEDDOSEUNIT",$i.AMOUNTOFSUBSTANCEUNIT="AMOUNTOFSUBSTANCEUNIT",$i.AREAUNIT="AREAUNIT",$i.DOSEEQUIVALENTUNIT="DOSEEQUIVALENTUNIT",$i.ELECTRICCAPACITANCEUNIT="ELECTRICCAPACITANCEUNIT",$i.ELECTRICCHARGEUNIT="ELECTRICCHARGEUNIT",$i.ELECTRICCONDUCTANCEUNIT="ELECTRICCONDUCTANCEUNIT",$i.ELECTRICCURRENTUNIT="ELECTRICCURRENTUNIT",$i.ELECTRICRESISTANCEUNIT="ELECTRICRESISTANCEUNIT",$i.ELECTRICVOLTAGEUNIT="ELECTRICVOLTAGEUNIT",$i.ENERGYUNIT="ENERGYUNIT",$i.FORCEUNIT="FORCEUNIT",$i.FREQUENCYUNIT="FREQUENCYUNIT",$i.ILLUMINANCEUNIT="ILLUMINANCEUNIT",$i.INDUCTANCEUNIT="INDUCTANCEUNIT",$i.LENGTHUNIT="LENGTHUNIT",$i.LUMINOUSFLUXUNIT="LUMINOUSFLUXUNIT",$i.LUMINOUSINTENSITYUNIT="LUMINOUSINTENSITYUNIT",$i.MAGNETICFLUXDENSITYUNIT="MAGNETICFLUXDENSITYUNIT",$i.MAGNETICFLUXUNIT="MAGNETICFLUXUNIT",$i.MASSUNIT="MASSUNIT",$i.PLANEANGLEUNIT="PLANEANGLEUNIT",$i.POWERUNIT="POWERUNIT",$i.PRESSUREUNIT="PRESSUREUNIT",$i.RADIOACTIVITYUNIT="RADIOACTIVITYUNIT",$i.SOLIDANGLEUNIT="SOLIDANGLEUNIT",$i.THERMODYNAMICTEMPERATUREUNIT="THERMODYNAMICTEMPERATUREUNIT",$i.TIMEUNIT="TIMEUNIT",$i.VOLUMEUNIT="VOLUMEUNIT",$i.USERDEFINED="USERDEFINED";var lh=class{constructor(e){this.value=e}};lh.ALARMPANEL="ALARMPANEL",lh.CONTROLPANEL="CONTROLPANEL",lh.GASDETECTIONPANEL="GASDETECTIONPANEL",lh.INDICATORPANEL="INDICATORPANEL",lh.MIMICPANEL="MIMICPANEL",lh.HUMIDISTAT="HUMIDISTAT",lh.THERMOSTAT="THERMOSTAT",lh.WEATHERSTATION="WEATHERSTATION",lh.USERDEFINED="USERDEFINED",lh.NOTDEFINED="NOTDEFINED";var v0=class{constructor(e){this.value=e}};v0.AIRHANDLER="AIRHANDLER",v0.AIRCONDITIONINGUNIT="AIRCONDITIONINGUNIT",v0.DEHUMIDIFIER="DEHUMIDIFIER",v0.SPLITSYSTEM="SPLITSYSTEM",v0.ROOFTOPUNIT="ROOFTOPUNIT",v0.USERDEFINED="USERDEFINED",v0.NOTDEFINED="NOTDEFINED";var Hn=class{constructor(e){this.value=e}};Hn.AIRRELEASE="AIRRELEASE",Hn.ANTIVACUUM="ANTIVACUUM",Hn.CHANGEOVER="CHANGEOVER",Hn.CHECK="CHECK",Hn.COMMISSIONING="COMMISSIONING",Hn.DIVERTING="DIVERTING",Hn.DRAWOFFCOCK="DRAWOFFCOCK",Hn.DOUBLECHECK="DOUBLECHECK",Hn.DOUBLEREGULATING="DOUBLEREGULATING",Hn.FAUCET="FAUCET",Hn.FLUSHING="FLUSHING",Hn.GASCOCK="GASCOCK",Hn.GASTAP="GASTAP",Hn.ISOLATING="ISOLATING",Hn.MIXING="MIXING",Hn.PRESSUREREDUCING="PRESSUREREDUCING",Hn.PRESSURERELIEF="PRESSURERELIEF",Hn.REGULATING="REGULATING",Hn.SAFETYCUTOFF="SAFETYCUTOFF",Hn.STEAMTRAP="STEAMTRAP",Hn.STOPCOCK="STOPCOCK",Hn.USERDEFINED="USERDEFINED",Hn.NOTDEFINED="NOTDEFINED";var Vf=class{constructor(e){this.value=e}};Vf.BENDING_YIELD="BENDING_YIELD",Vf.SHEAR_YIELD="SHEAR_YIELD",Vf.AXIAL_YIELD="AXIAL_YIELD",Vf.FRICTION="FRICTION",Vf.VISCOUS="VISCOUS",Vf.RUBBER="RUBBER",Vf.USERDEFINED="USERDEFINED",Vf.NOTDEFINED="NOTDEFINED";var BI=class{constructor(e){this.value=e}};BI.COMPRESSION="COMPRESSION",BI.SPRING="SPRING",BI.BASE="BASE",BI.USERDEFINED="USERDEFINED",BI.NOTDEFINED="NOTDEFINED";var zf=class{constructor(e){this.value=e}};zf.CUTOUT="CUTOUT",zf.NOTCH="NOTCH",zf.HOLE="HOLE",zf.MITER="MITER",zf.CHAMFER="CHAMFER",zf.EDGE="EDGE",zf.USERDEFINED="USERDEFINED",zf.NOTDEFINED="NOTDEFINED";var Wl=class{constructor(e){this.value=e}};Wl.MOVABLE="MOVABLE",Wl.PARAPET="PARAPET",Wl.PARTITIONING="PARTITIONING",Wl.PLUMBINGWALL="PLUMBINGWALL",Wl.SHEAR="SHEAR",Wl.SOLIDWALL="SOLIDWALL",Wl.STANDARD="STANDARD",Wl.POLYGONAL="POLYGONAL",Wl.ELEMENTEDWALL="ELEMENTEDWALL",Wl.RETAININGWALL="RETAININGWALL",Wl.USERDEFINED="USERDEFINED",Wl.NOTDEFINED="NOTDEFINED";var sd=class{constructor(e){this.value=e}};sd.FLOORTRAP="FLOORTRAP",sd.FLOORWASTE="FLOORWASTE",sd.GULLYSUMP="GULLYSUMP",sd.GULLYTRAP="GULLYTRAP",sd.ROOFDRAIN="ROOFDRAIN",sd.WASTEDISPOSALUNIT="WASTEDISPOSALUNIT",sd.WASTETRAP="WASTETRAP",sd.USERDEFINED="USERDEFINED",sd.NOTDEFINED="NOTDEFINED";var To=class{constructor(e){this.value=e}};To.SIDEHUNGRIGHTHAND="SIDEHUNGRIGHTHAND",To.SIDEHUNGLEFTHAND="SIDEHUNGLEFTHAND",To.TILTANDTURNRIGHTHAND="TILTANDTURNRIGHTHAND",To.TILTANDTURNLEFTHAND="TILTANDTURNLEFTHAND",To.TOPHUNG="TOPHUNG",To.BOTTOMHUNG="BOTTOMHUNG",To.PIVOTHORIZONTAL="PIVOTHORIZONTAL",To.PIVOTVERTICAL="PIVOTVERTICAL",To.SLIDINGHORIZONTAL="SLIDINGHORIZONTAL",To.SLIDINGVERTICAL="SLIDINGVERTICAL",To.REMOVABLECASEMENT="REMOVABLECASEMENT",To.FIXEDCASEMENT="FIXEDCASEMENT",To.OTHEROPERATION="OTHEROPERATION",To.NOTDEFINED="NOTDEFINED";var GT=class{constructor(e){this.value=e}};GT.LEFT="LEFT",GT.MIDDLE="MIDDLE",GT.RIGHT="RIGHT",GT.BOTTOM="BOTTOM",GT.TOP="TOP",GT.NOTDEFINED="NOTDEFINED";var jf=class{constructor(e){this.value=e}};jf.ALUMINIUM="ALUMINIUM",jf.HIGH_GRADE_STEEL="HIGH_GRADE_STEEL",jf.STEEL="STEEL",jf.WOOD="WOOD",jf.ALUMINIUM_WOOD="ALUMINIUM_WOOD",jf.PLASTIC="PLASTIC",jf.OTHER_CONSTRUCTION="OTHER_CONSTRUCTION",jf.NOTDEFINED="NOTDEFINED";var Xc=class{constructor(e){this.value=e}};Xc.SINGLE_PANEL="SINGLE_PANEL",Xc.DOUBLE_PANEL_VERTICAL="DOUBLE_PANEL_VERTICAL",Xc.DOUBLE_PANEL_HORIZONTAL="DOUBLE_PANEL_HORIZONTAL",Xc.TRIPLE_PANEL_VERTICAL="TRIPLE_PANEL_VERTICAL",Xc.TRIPLE_PANEL_BOTTOM="TRIPLE_PANEL_BOTTOM",Xc.TRIPLE_PANEL_TOP="TRIPLE_PANEL_TOP",Xc.TRIPLE_PANEL_LEFT="TRIPLE_PANEL_LEFT",Xc.TRIPLE_PANEL_RIGHT="TRIPLE_PANEL_RIGHT",Xc.TRIPLE_PANEL_HORIZONTAL="TRIPLE_PANEL_HORIZONTAL",Xc.USERDEFINED="USERDEFINED",Xc.NOTDEFINED="NOTDEFINED";var kI=class{constructor(e){this.value=e}};kI.WINDOW="WINDOW",kI.SKYLIGHT="SKYLIGHT",kI.LIGHTDOME="LIGHTDOME",kI.USERDEFINED="USERDEFINED",kI.NOTDEFINED="NOTDEFINED";var $c=class{constructor(e){this.value=e}};$c.SINGLE_PANEL="SINGLE_PANEL",$c.DOUBLE_PANEL_VERTICAL="DOUBLE_PANEL_VERTICAL",$c.DOUBLE_PANEL_HORIZONTAL="DOUBLE_PANEL_HORIZONTAL",$c.TRIPLE_PANEL_VERTICAL="TRIPLE_PANEL_VERTICAL",$c.TRIPLE_PANEL_BOTTOM="TRIPLE_PANEL_BOTTOM",$c.TRIPLE_PANEL_TOP="TRIPLE_PANEL_TOP",$c.TRIPLE_PANEL_LEFT="TRIPLE_PANEL_LEFT",$c.TRIPLE_PANEL_RIGHT="TRIPLE_PANEL_RIGHT",$c.TRIPLE_PANEL_HORIZONTAL="TRIPLE_PANEL_HORIZONTAL",$c.USERDEFINED="USERDEFINED",$c.NOTDEFINED="NOTDEFINED";var GI=class{constructor(e){this.value=e}};GI.FIRSTSHIFT="FIRSTSHIFT",GI.SECONDSHIFT="SECONDSHIFT",GI.THIRDSHIFT="THIRDSHIFT",GI.USERDEFINED="USERDEFINED",GI.NOTDEFINED="NOTDEFINED";var VI=class{constructor(e){this.value=e}};VI.ACTUAL="ACTUAL",VI.BASELINE="BASELINE",VI.PLANNED="PLANNED",VI.USERDEFINED="USERDEFINED",VI.NOTDEFINED="NOTDEFINED";var zI=class{constructor(e){this.value=e}};zI.ACTUAL="ACTUAL",zI.BASELINE="BASELINE",zI.PLANNED="PLANNED",zI.USERDEFINED="USERDEFINED",zI.NOTDEFINED="NOTDEFINED";var Bfe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.Identification=o,this.PredefinedType=l,this.Status=h,this.LongDescription=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Bfe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.Identification),e.push(this.PredefinedType),e.push(this.Status),e.push(this.LongDescription),e}},kfe=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.TheActor=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new kfe(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.TheActor),e}},Gfe=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.Role=i,this.UserDefinedRole=r,this.Description=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new Gfe(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.Role),e.push(this.UserDefinedRole),e.push(this.Description),e}},Vfe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Vfe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},zfe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new zfe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},jfe=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.Purpose=i,this.Description=r,this.UserDefinedPurpose=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new jfe(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.Purpose),e.push(this.Description),e.push(this.UserDefinedPurpose),e}},Wfe=class{constructor(e,t,i){this.expressID=e,this.type=t,this.Outer=i}static FromTape(e,t,i){let r=0,n=i[r++];return new Wfe(e,t,n)}ToTape(){let e=[];return e.push(this.Outer),e}},qfe=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.Outer=i,this.Voids=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new qfe(e,t,n,s)}ToTape(){let e=[];return e.push(this.Outer),e.push(this.Voids),e}},Yfe=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.Bounds=i,this.FaceSurface=r,this.SameSense=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new Yfe(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.Bounds),e.push(this.FaceSurface),e.push(this.SameSense),e}},Xfe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Xfe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},$fe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new $fe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},Zfe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new Zfe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},Kfe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new Kfe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},Jfe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Jfe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},Qfe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new Qfe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},eme=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new eme(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},tme=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new tme(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},rme=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Axis=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new rme(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Axis),e.push(this.PredefinedType),e}},ime=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.StartDistAlong=i,this.Segments=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new ime(e,t,n,s)}ToTape(){let e=[];return e.push(this.StartDistAlong),e.push(this.Segments),e}},nme=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.TangentialContinuity=i,this.StartTag=r,this.EndTag=n,this.CurveGeometry=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new nme(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.TangentialContinuity),e.push(this.StartTag),e.push(this.EndTag),e.push(this.CurveGeometry),e}},sme=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.TangentialContinuity=i,this.StartTag=r,this.EndTag=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new sme(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.TangentialContinuity),e.push(this.StartTag),e.push(this.EndTag),e}},ame=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.TangentialContinuity=i,this.StartTag=r,this.EndTag=n,this.StartDistAlong=s,this.HorizontalLength=a,this.StartHeight=o,this.StartGradient=l,this.Radius=h,this.IsConvex=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new ame(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.TangentialContinuity),e.push(this.StartTag),e.push(this.EndTag),e.push(this.StartDistAlong),e.push(this.HorizontalLength),e.push(this.StartHeight),e.push(this.StartGradient),e.push(this.Radius),e.push(this.IsConvex),e}},ome=class{constructor(e,t,i,r,n,s,a,o,l){this.expressID=e,this.type=t,this.TangentialContinuity=i,this.StartTag=r,this.EndTag=n,this.StartDistAlong=s,this.HorizontalLength=a,this.StartHeight=o,this.StartGradient=l}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++];return new ome(e,t,n,s,a,o,l,h,u)}ToTape(){let e=[];return e.push(this.TangentialContinuity),e.push(this.StartTag),e.push(this.EndTag),e.push(this.StartDistAlong),e.push(this.HorizontalLength),e.push(this.StartHeight),e.push(this.StartGradient),e}},lme=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.TangentialContinuity=i,this.StartTag=r,this.EndTag=n,this.StartDistAlong=s,this.HorizontalLength=a,this.StartHeight=o,this.StartGradient=l,this.ParabolaConstant=h,this.IsConvex=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new lme(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.TangentialContinuity),e.push(this.StartTag),e.push(this.EndTag),e.push(this.StartDistAlong),e.push(this.HorizontalLength),e.push(this.StartHeight),e.push(this.StartGradient),e.push(this.ParabolaConstant),e.push(this.IsConvex),e}},cme=class{constructor(e,t,i){this.expressID=e,this.type=t,this.Segments=i}static FromTape(e,t,i){let r=0,n=i[r++];return new cme(e,t,n)}ToTape(){let e=[];return e.push(this.Segments),e}},ume=class{constructor(e,t,i,r,n,s,a,o,l){this.expressID=e,this.type=t,this.TangentialContinuity=i,this.StartTag=r,this.EndTag=n,this.StartDistAlong=s,this.HorizontalLength=a,this.StartHeight=o,this.StartGradient=l}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++];return new ume(e,t,n,s,a,o,l,h,u)}ToTape(){let e=[];return e.push(this.TangentialContinuity),e.push(this.StartTag),e.push(this.EndTag),e.push(this.StartDistAlong),e.push(this.HorizontalLength),e.push(this.StartHeight),e.push(this.StartGradient),e}},hme=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.Horizontal=i,this.Vertical=r,this.Tag=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new hme(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.Horizontal),e.push(this.Vertical),e.push(this.Tag),e}},pme=class{constructor(e,t,i,r,n,s,a,o,l){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++];return new pme(e,t,n,s,a,o,l,h,u)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e}},dme=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.OuterBoundary=i,this.InnerBoundaries=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new dme(e,t,n,s)}ToTape(){let e=[];return e.push(this.OuterBoundary),e.push(this.InnerBoundaries),e}},fme=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.ApplicationDeveloper=i,this.Version=r,this.ApplicationFullName=n,this.ApplicationIdentifier=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new fme(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.ApplicationDeveloper),e.push(this.Version),e.push(this.ApplicationFullName),e.push(this.ApplicationIdentifier),e}},mme=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.AppliedValue=n,this.UnitBasis=s,this.ApplicableDate=a,this.FixedUntilDate=o,this.Category=l,this.Condition=h,this.ArithmeticOperator=u,this.Components=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new mme(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.AppliedValue),e.push(this.UnitBasis),e.push(this.ApplicableDate),e.push(this.FixedUntilDate),e.push(this.Category),e.push(this.Condition),e.push(this.ArithmeticOperator),e.push(this.Components),e}},gme=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.Identifier=i,this.Name=r,this.Description=n,this.TimeOfApproval=s,this.Status=a,this.Level=o,this.Qualifier=l,this.RequestingApproval=h,this.GivingApproval=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new gme(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.Identifier),e.push(this.Name),e.push(this.Description),e.push(this.TimeOfApproval),e.push(this.Status),e.push(this.Level),e.push(this.Qualifier),e.push(this.RequestingApproval),e.push(this.GivingApproval),e}},vme=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.RelatingApproval=n,this.RelatedApprovals=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new vme(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.RelatingApproval),e.push(this.RelatedApprovals),e}},yme=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.ProfileType=i,this.ProfileName=r,this.OuterCurve=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new yme(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.ProfileType),e.push(this.ProfileName),e.push(this.OuterCurve),e}},Tme=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.ProfileType=i,this.ProfileName=r,this.Curve=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new Tme(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.ProfileType),e.push(this.ProfileName),e.push(this.Curve),e}},Eme=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.ProfileType=i,this.ProfileName=r,this.OuterCurve=n,this.InnerCurves=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new Eme(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.ProfileType),e.push(this.ProfileName),e.push(this.OuterCurve),e.push(this.InnerCurves),e}},bme=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d,f,m){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.Identification=o,this.OriginalValue=l,this.CurrentValue=h,this.TotalReplacementCost=u,this.Owner=c,this.User=p,this.ResponsiblePerson=d,this.IncorporationDate=f,this.DepreciatedValue=m}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++],g=i[r++],y=i[r++];return new bme(e,t,n,s,a,o,l,h,u,c,p,d,f,m,g,y)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.Identification),e.push(this.OriginalValue),e.push(this.CurrentValue),e.push(this.TotalReplacementCost),e.push(this.Owner),e.push(this.User),e.push(this.ResponsiblePerson),e.push(this.IncorporationDate),e.push(this.DepreciatedValue),e}},xme=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d,f,m,g){this.expressID=e,this.type=t,this.ProfileType=i,this.ProfileName=r,this.Position=n,this.BottomFlangeWidth=s,this.OverallDepth=a,this.WebThickness=o,this.BottomFlangeThickness=l,this.BottomFlangeFilletRadius=h,this.TopFlangeWidth=u,this.TopFlangeThickness=c,this.TopFlangeFilletRadius=p,this.BottomFlangeEdgeRadius=d,this.BottomFlangeSlope=f,this.TopFlangeEdgeRadius=m,this.TopFlangeSlope=g}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++],g=i[r++],y=i[r++],v=i[r++];return new xme(e,t,n,s,a,o,l,h,u,c,p,d,f,m,g,y,v)}ToTape(){let e=[];return e.push(this.ProfileType),e.push(this.ProfileName),e.push(this.Position),e.push(this.BottomFlangeWidth),e.push(this.OverallDepth),e.push(this.WebThickness),e.push(this.BottomFlangeThickness),e.push(this.BottomFlangeFilletRadius),e.push(this.TopFlangeWidth),e.push(this.TopFlangeThickness),e.push(this.TopFlangeFilletRadius),e.push(this.BottomFlangeEdgeRadius),e.push(this.BottomFlangeSlope),e.push(this.TopFlangeEdgeRadius),e.push(this.TopFlangeSlope),e}},Ime=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Ime(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},_me=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new _me(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},Sme=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.Location=i,this.Axis=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new Sme(e,t,n,s)}ToTape(){let e=[];return e.push(this.Location),e.push(this.Axis),e}},wme=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.Location=i,this.RefDirection=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new wme(e,t,n,s)}ToTape(){let e=[];return e.push(this.Location),e.push(this.RefDirection),e}},Rme=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.Location=i,this.Axis=r,this.RefDirection=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new Rme(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.Location),e.push(this.Axis),e.push(this.RefDirection),e}},Mme=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.Degree=i,this.ControlPointsList=r,this.CurveForm=n,this.ClosedCurve=s,this.SelfIntersect=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new Mme(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.Degree),e.push(this.ControlPointsList),e.push(this.CurveForm),e.push(this.ClosedCurve),e.push(this.SelfIntersect),e}},Dme=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.Degree=i,this.ControlPointsList=r,this.CurveForm=n,this.ClosedCurve=s,this.SelfIntersect=a,this.KnotMultiplicities=o,this.Knots=l,this.KnotSpec=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new Dme(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.Degree),e.push(this.ControlPointsList),e.push(this.CurveForm),e.push(this.ClosedCurve),e.push(this.SelfIntersect),e.push(this.KnotMultiplicities),e.push(this.Knots),e.push(this.KnotSpec),e}},Cme=class{constructor(e,t,i,r,n,s,a,o,l){this.expressID=e,this.type=t,this.UDegree=i,this.VDegree=r,this.ControlPointsList=n,this.SurfaceForm=s,this.UClosed=a,this.VClosed=o,this.SelfIntersect=l}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++];return new Cme(e,t,n,s,a,o,l,h,u)}ToTape(){let e=[];return e.push(this.UDegree),e.push(this.VDegree),e.push(this.ControlPointsList),e.push(this.SurfaceForm),e.push(this.UClosed),e.push(this.VClosed),e.push(this.SelfIntersect),e}},Ame=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d){this.expressID=e,this.type=t,this.UDegree=i,this.VDegree=r,this.ControlPointsList=n,this.SurfaceForm=s,this.UClosed=a,this.VClosed=o,this.SelfIntersect=l,this.UMultiplicities=h,this.VMultiplicities=u,this.UKnots=c,this.VKnots=p,this.KnotSpec=d}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++];return new Ame(e,t,n,s,a,o,l,h,u,c,p,d,f,m)}ToTape(){let e=[];return e.push(this.UDegree),e.push(this.VDegree),e.push(this.ControlPointsList),e.push(this.SurfaceForm),e.push(this.UClosed),e.push(this.VClosed),e.push(this.SelfIntersect),e.push(this.UMultiplicities),e.push(this.VMultiplicities),e.push(this.UKnots),e.push(this.VKnots),e.push(this.KnotSpec),e}},Ome=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Ome(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},Pme=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Pme(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},Nme=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new Nme(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},Lme=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Lme(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},Fme=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new Fme(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},Hme=class{constructor(e,t,i,r,n,s,a,o,l){this.expressID=e,this.type=t,this.RepeatS=i,this.RepeatT=r,this.Mode=n,this.TextureTransform=s,this.Parameter=a,this.RasterFormat=o,this.RasterCode=l}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++];return new Hme(e,t,n,s,a,o,l,h,u)}ToTape(){let e=[];return e.push(this.RepeatS),e.push(this.RepeatT),e.push(this.Mode),e.push(this.TextureTransform),e.push(this.Parameter),e.push(this.RasterFormat),e.push(this.RasterCode),e}},Ume=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.Position=i,this.XLength=r,this.YLength=n,this.ZLength=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new Ume(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.Position),e.push(this.XLength),e.push(this.YLength),e.push(this.ZLength),e}},Bme=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Bme(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},kme=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new kme(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},Gme=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.Operator=i,this.FirstOperand=r,this.SecondOperand=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new Gme(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.Operator),e.push(this.FirstOperand),e.push(this.SecondOperand),e}},Vme=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.Operator=i,this.FirstOperand=r,this.SecondOperand=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new Vme(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.Operator),e.push(this.FirstOperand),e.push(this.SecondOperand),e}},zme=class{constructor(e,t,i){this.expressID=e,this.type=t,this.Name=i}static FromTape(e,t,i){let r=0,n=i[r++];return new zme(e,t,n)}ToTape(){let e=[];return e.push(this.Name),e}},jme=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.Segments=i,this.SelfIntersect=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new jme(e,t,n,s)}ToTape(){let e=[];return e.push(this.Segments),e.push(this.SelfIntersect),e}},Wme=class{constructor(e,t,i,r,n,s,a,o,l){this.expressID=e,this.type=t,this.Name=i,this.TranslationalStiffnessByLengthX=r,this.TranslationalStiffnessByLengthY=n,this.TranslationalStiffnessByLengthZ=s,this.RotationalStiffnessByLengthX=a,this.RotationalStiffnessByLengthY=o,this.RotationalStiffnessByLengthZ=l}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++];return new Wme(e,t,n,s,a,o,l,h,u)}ToTape(){let e=[];return e.push(this.Name),e.push(this.TranslationalStiffnessByLengthX),e.push(this.TranslationalStiffnessByLengthY),e.push(this.TranslationalStiffnessByLengthZ),e.push(this.RotationalStiffnessByLengthX),e.push(this.RotationalStiffnessByLengthY),e.push(this.RotationalStiffnessByLengthZ),e}},qme=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.Name=i,this.TranslationalStiffnessByAreaX=r,this.TranslationalStiffnessByAreaY=n,this.TranslationalStiffnessByAreaZ=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new qme(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.Name),e.push(this.TranslationalStiffnessByAreaX),e.push(this.TranslationalStiffnessByAreaY),e.push(this.TranslationalStiffnessByAreaZ),e}},Yme=class{constructor(e,t,i,r,n,s,a,o,l){this.expressID=e,this.type=t,this.Name=i,this.TranslationalStiffnessX=r,this.TranslationalStiffnessY=n,this.TranslationalStiffnessZ=s,this.RotationalStiffnessX=a,this.RotationalStiffnessY=o,this.RotationalStiffnessZ=l}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++];return new Yme(e,t,n,s,a,o,l,h,u)}ToTape(){let e=[];return e.push(this.Name),e.push(this.TranslationalStiffnessX),e.push(this.TranslationalStiffnessY),e.push(this.TranslationalStiffnessZ),e.push(this.RotationalStiffnessX),e.push(this.RotationalStiffnessY),e.push(this.RotationalStiffnessZ),e}},Xme=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.Name=i,this.TranslationalStiffnessX=r,this.TranslationalStiffnessY=n,this.TranslationalStiffnessZ=s,this.RotationalStiffnessX=a,this.RotationalStiffnessY=o,this.RotationalStiffnessZ=l,this.WarpingStiffness=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new Xme(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.Name),e.push(this.TranslationalStiffnessX),e.push(this.TranslationalStiffnessY),e.push(this.TranslationalStiffnessZ),e.push(this.RotationalStiffnessX),e.push(this.RotationalStiffnessY),e.push(this.RotationalStiffnessZ),e.push(this.WarpingStiffness),e}},$me=class{constructor(e,t){this.expressID=e,this.type=t}static FromTape(e,t,i){return new $me(e,t)}ToTape(){return[]}},Zme=class{constructor(e,t){this.expressID=e,this.type=t}static FromTape(e,t,i){return new Zme(e,t)}ToTape(){return[]}},Kme=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.Corner=i,this.XDim=r,this.YDim=n,this.ZDim=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new Kme(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.Corner),e.push(this.XDim),e.push(this.YDim),e.push(this.ZDim),e}},Jme=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.BaseSurface=i,this.AgreementFlag=r,this.Enclosure=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new Jme(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.BaseSurface),e.push(this.AgreementFlag),e.push(this.Enclosure),e}},Qme=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.LongName=h,this.CompositionType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new Qme(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.LongName),e.push(this.CompositionType),e.push(this.PredefinedType),e}},ege=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.LongName=h,this.CompositionType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new ege(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.LongName),e.push(this.CompositionType),e.push(this.PredefinedType),e}},tge=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.LongName=h,this.CompositionType=u,this.ElevationOfRefHeight=c,this.ElevationOfTerrain=p,this.BuildingAddress=d}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++];return new tge(e,t,n,s,a,o,l,h,u,c,p,d,f,m)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.LongName),e.push(this.CompositionType),e.push(this.ElevationOfRefHeight),e.push(this.ElevationOfTerrain),e.push(this.BuildingAddress),e}},rge=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new rge(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e}},ige=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new ige(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},nge=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new nge(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},sge=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new sge(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},age=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new age(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},oge=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new oge(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e}},lge=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.LongName=h,this.CompositionType=u,this.Elevation=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new lge(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.LongName),e.push(this.CompositionType),e.push(this.Elevation),e}},cge=class{constructor(e,t,i,r,n,s,a,o,l){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.PredefinedType=o,this.LongName=l}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++];return new cge(e,t,n,s,a,o,l,h,u)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.PredefinedType),e.push(this.LongName),e}},uge=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new uge(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},hge=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new hge(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},pge=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.ProfileType=i,this.ProfileName=r,this.Position=n,this.Depth=s,this.Width=a,this.WallThickness=o,this.Girth=l,this.InternalFilletRadius=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new pge(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.ProfileType),e.push(this.ProfileName),e.push(this.Position),e.push(this.Depth),e.push(this.Width),e.push(this.WallThickness),e.push(this.Girth),e.push(this.InternalFilletRadius),e}},dge=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new dge(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},fge=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new fge(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},mge=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new mge(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},gge=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new gge(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},vge=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new vge(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},yge=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new yge(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},Tge=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Tge(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},Ege=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new Ege(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},bge=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new bge(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},xge=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new xge(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},Ige=class{constructor(e,t,i){this.expressID=e,this.type=t,this.Coordinates=i}static FromTape(e,t,i){let r=0,n=i[r++];return new Ige(e,t,n)}ToTape(){let e=[];return e.push(this.Coordinates),e}},_ge=class{constructor(e,t){this.expressID=e,this.type=t}static FromTape(e,t,i){return new _ge(e,t)}ToTape(){return[]}},Sge=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.CoordList=i,this.TagList=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new Sge(e,t,n,s)}ToTape(){let e=[];return e.push(this.CoordList),e.push(this.TagList),e}},wge=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.CoordList=i,this.TagList=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new wge(e,t,n,s)}ToTape(){let e=[];return e.push(this.CoordList),e.push(this.TagList),e}},Rge=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.Axis1=i,this.Axis2=r,this.LocalOrigin=n,this.Scale=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new Rge(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.Axis1),e.push(this.Axis2),e.push(this.LocalOrigin),e.push(this.Scale),e}},Mge=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.Axis1=i,this.Axis2=r,this.LocalOrigin=n,this.Scale=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new Mge(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.Axis1),e.push(this.Axis2),e.push(this.LocalOrigin),e.push(this.Scale),e}},Dge=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.Axis1=i,this.Axis2=r,this.LocalOrigin=n,this.Scale=s,this.Scale2=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new Dge(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.Axis1),e.push(this.Axis2),e.push(this.LocalOrigin),e.push(this.Scale),e.push(this.Scale2),e}},Cge=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.Axis1=i,this.Axis2=r,this.LocalOrigin=n,this.Scale=s,this.Axis3=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new Cge(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.Axis1),e.push(this.Axis2),e.push(this.LocalOrigin),e.push(this.Scale),e.push(this.Axis3),e}},Age=class{constructor(e,t,i,r,n,s,a,o,l){this.expressID=e,this.type=t,this.Axis1=i,this.Axis2=r,this.LocalOrigin=n,this.Scale=s,this.Axis3=a,this.Scale2=o,this.Scale3=l}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++];return new Age(e,t,n,s,a,o,l,h,u)}ToTape(){let e=[];return e.push(this.Axis1),e.push(this.Axis2),e.push(this.LocalOrigin),e.push(this.Scale),e.push(this.Axis3),e.push(this.Scale2),e.push(this.Scale3),e}},Oge=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.ProfileType=i,this.ProfileName=r,this.Curve=n,this.Thickness=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new Oge(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.ProfileType),e.push(this.ProfileName),e.push(this.Curve),e.push(this.Thickness),e}},Pge=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Pge(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},Nge=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new Nge(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},Lge=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Lge(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},Fge=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new Fge(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},Hge=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.Position=i,this.Radius=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new Hge(e,t,n,s)}ToTape(){let e=[];return e.push(this.Position),e.push(this.Radius),e}},Uge=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.ProfileType=i,this.ProfileName=r,this.Position=n,this.Radius=s,this.WallThickness=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new Uge(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.ProfileType),e.push(this.ProfileName),e.push(this.Position),e.push(this.Radius),e.push(this.WallThickness),e}},Bge=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.ProfileType=i,this.ProfileName=r,this.Position=n,this.Radius=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new Bge(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.ProfileType),e.push(this.ProfileName),e.push(this.Position),e.push(this.Radius),e}},kge=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.StartPoint=i,this.StartDirection=r,this.SegmentLength=n,this.Radius=s,this.IsCCW=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new kge(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.StartPoint),e.push(this.StartDirection),e.push(this.SegmentLength),e.push(this.Radius),e.push(this.IsCCW),e}},Gge=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new Gge(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e}},Vge=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Vge(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e}},zge=class{constructor(e,t,i,r,n,s,a,o,l){this.expressID=e,this.type=t,this.Source=i,this.Edition=r,this.EditionDate=n,this.Name=s,this.Description=a,this.Location=o,this.ReferenceTokens=l}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++];return new zge(e,t,n,s,a,o,l,h,u)}ToTape(){let e=[];return e.push(this.Source),e.push(this.Edition),e.push(this.EditionDate),e.push(this.Name),e.push(this.Description),e.push(this.Location),e.push(this.ReferenceTokens),e}},jge=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.Location=i,this.Identification=r,this.Name=n,this.ReferencedSource=s,this.Description=a,this.Sort=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new jge(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.Location),e.push(this.Identification),e.push(this.Name),e.push(this.ReferencedSource),e.push(this.Description),e.push(this.Sort),e}},Wge=class{constructor(e,t,i){this.expressID=e,this.type=t,this.CfsFaces=i}static FromTape(e,t,i){let r=0,n=i[r++];return new Wge(e,t,n)}ToTape(){let e=[];return e.push(this.CfsFaces),e}},qge=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new qge(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},Yge=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new Yge(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},Xge=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.Name=i,this.Red=r,this.Green=n,this.Blue=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new Xge(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Red),e.push(this.Green),e.push(this.Blue),e}},$ge=class{constructor(e,t,i){this.expressID=e,this.type=t,this.ColourList=i}static FromTape(e,t,i){let r=0,n=i[r++];return new $ge(e,t,n)}ToTape(){let e=[];return e.push(this.ColourList),e}},Zge=class{constructor(e,t,i){this.expressID=e,this.type=t,this.Name=i}static FromTape(e,t,i){let r=0,n=i[r++];return new Zge(e,t,n)}ToTape(){let e=[];return e.push(this.Name),e}},Kge=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Kge(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},Jge=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Jge(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},Qge=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new Qge(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},e0e=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new e0e(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},t0e=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new t0e(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},r0e=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.UsageName=n,this.HasProperties=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new r0e(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.UsageName),e.push(this.HasProperties),e}},i0e=class{constructor(e,t,i,r,n,s,a,o,l){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.UsageName=a,this.TemplateType=o,this.HasPropertyTemplates=l}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++];return new i0e(e,t,n,s,a,o,l,h,u)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.UsageName),e.push(this.TemplateType),e.push(this.HasPropertyTemplates),e}},n0e=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.Segments=i,this.SelfIntersect=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new n0e(e,t,n,s)}ToTape(){let e=[];return e.push(this.Segments),e.push(this.SelfIntersect),e}},s0e=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.Segments=i,this.SelfIntersect=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new s0e(e,t,n,s)}ToTape(){let e=[];return e.push(this.Segments),e.push(this.SelfIntersect),e}},a0e=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.Transition=i,this.SameSense=r,this.ParentCurve=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new a0e(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.Transition),e.push(this.SameSense),e.push(this.ParentCurve),e}},o0e=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.ProfileType=i,this.ProfileName=r,this.Profiles=n,this.Label=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new o0e(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.ProfileType),e.push(this.ProfileName),e.push(this.Profiles),e.push(this.Label),e}},l0e=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new l0e(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},c0e=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new c0e(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},u0e=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new u0e(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},h0e=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new h0e(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},p0e=class{constructor(e,t,i){this.expressID=e,this.type=t,this.Position=i}static FromTape(e,t,i){let r=0,n=i[r++];return new p0e(e,t,n)}ToTape(){let e=[];return e.push(this.Position),e}},d0e=class{constructor(e,t,i){this.expressID=e,this.type=t,this.CfsFaces=i}static FromTape(e,t,i){let r=0,n=i[r++];return new d0e(e,t,n)}ToTape(){let e=[];return e.push(this.CfsFaces),e}},f0e=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.CurveOnRelatingElement=i,this.CurveOnRelatedElement=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new f0e(e,t,n,s)}ToTape(){let e=[];return e.push(this.CurveOnRelatingElement),e.push(this.CurveOnRelatedElement),e}},m0e=class{constructor(e,t){this.expressID=e,this.type=t}static FromTape(e,t,i){return new m0e(e,t)}ToTape(){return[]}},g0e=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.PointOnRelatingElement=i,this.PointOnRelatedElement=r,this.EccentricityInX=n,this.EccentricityInY=s,this.EccentricityInZ=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new g0e(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.PointOnRelatingElement),e.push(this.PointOnRelatedElement),e.push(this.EccentricityInX),e.push(this.EccentricityInY),e.push(this.EccentricityInZ),e}},v0e=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.PointOnRelatingElement=i,this.PointOnRelatedElement=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new v0e(e,t,n,s)}ToTape(){let e=[];return e.push(this.PointOnRelatingElement),e.push(this.PointOnRelatedElement),e}},y0e=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.SurfaceOnRelatingElement=i,this.SurfaceOnRelatedElement=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new y0e(e,t,n,s)}ToTape(){let e=[];return e.push(this.SurfaceOnRelatingElement),e.push(this.SurfaceOnRelatedElement),e}},T0e=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.VolumeOnRelatingElement=i,this.VolumeOnRelatedElement=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new T0e(e,t,n,s)}ToTape(){let e=[];return e.push(this.VolumeOnRelatingElement),e.push(this.VolumeOnRelatedElement),e}},E0e=class{constructor(e,t,i,r,n,s,a,o,l){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.ConstraintGrade=n,this.ConstraintSource=s,this.CreatingActor=a,this.CreationTime=o,this.UserDefinedGrade=l}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++];return new E0e(e,t,n,s,a,o,l,h,u)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.ConstraintGrade),e.push(this.ConstraintSource),e.push(this.CreatingActor),e.push(this.CreationTime),e.push(this.UserDefinedGrade),e}},b0e=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.Identification=o,this.LongDescription=l,this.Usage=h,this.BaseCosts=u,this.BaseQuantity=c,this.PredefinedType=p}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++];return new b0e(e,t,n,s,a,o,l,h,u,c,p,d,f)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.Identification),e.push(this.LongDescription),e.push(this.Usage),e.push(this.BaseCosts),e.push(this.BaseQuantity),e.push(this.PredefinedType),e}},x0e=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.Identification=l,this.LongDescription=h,this.ResourceType=u,this.BaseCosts=c,this.BaseQuantity=p,this.PredefinedType=d}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++];return new x0e(e,t,n,s,a,o,l,h,u,c,p,d,f,m)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.Identification),e.push(this.LongDescription),e.push(this.ResourceType),e.push(this.BaseCosts),e.push(this.BaseQuantity),e.push(this.PredefinedType),e}},I0e=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.Identification=o,this.LongDescription=l,this.Usage=h,this.BaseCosts=u,this.BaseQuantity=c,this.PredefinedType=p}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++];return new I0e(e,t,n,s,a,o,l,h,u,c,p,d,f)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.Identification),e.push(this.LongDescription),e.push(this.Usage),e.push(this.BaseCosts),e.push(this.BaseQuantity),e.push(this.PredefinedType),e}},_0e=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.Identification=l,this.LongDescription=h,this.ResourceType=u,this.BaseCosts=c,this.BaseQuantity=p,this.PredefinedType=d}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++];return new _0e(e,t,n,s,a,o,l,h,u,c,p,d,f,m)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.Identification),e.push(this.LongDescription),e.push(this.ResourceType),e.push(this.BaseCosts),e.push(this.BaseQuantity),e.push(this.PredefinedType),e}},S0e=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.Identification=o,this.LongDescription=l,this.Usage=h,this.BaseCosts=u,this.BaseQuantity=c,this.PredefinedType=p}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++];return new S0e(e,t,n,s,a,o,l,h,u,c,p,d,f)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.Identification),e.push(this.LongDescription),e.push(this.Usage),e.push(this.BaseCosts),e.push(this.BaseQuantity),e.push(this.PredefinedType),e}},w0e=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.Identification=l,this.LongDescription=h,this.ResourceType=u,this.BaseCosts=c,this.BaseQuantity=p,this.PredefinedType=d}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++];return new w0e(e,t,n,s,a,o,l,h,u,c,p,d,f,m)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.Identification),e.push(this.LongDescription),e.push(this.ResourceType),e.push(this.BaseCosts),e.push(this.BaseQuantity),e.push(this.PredefinedType),e}},R0e=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.Identification=o,this.LongDescription=l,this.Usage=h,this.BaseCosts=u,this.BaseQuantity=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new R0e(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.Identification),e.push(this.LongDescription),e.push(this.Usage),e.push(this.BaseCosts),e.push(this.BaseQuantity),e}},M0e=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.Identification=l,this.LongDescription=h,this.ResourceType=u,this.BaseCosts=c,this.BaseQuantity=p}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++];return new M0e(e,t,n,s,a,o,l,h,u,c,p,d,f)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.Identification),e.push(this.LongDescription),e.push(this.ResourceType),e.push(this.BaseCosts),e.push(this.BaseQuantity),e}},D0e=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.LongName=o,this.Phase=l,this.RepresentationContexts=h,this.UnitsInContext=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new D0e(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.LongName),e.push(this.Phase),e.push(this.RepresentationContexts),e.push(this.UnitsInContext),e}},C0e=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.Dimensions=i,this.UnitType=r,this.Name=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new C0e(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.Dimensions),e.push(this.UnitType),e.push(this.Name),e}},A0e=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.Identification=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new A0e(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.Identification),e}},O0e=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new O0e(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},P0e=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new P0e(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},N0e=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.Dimensions=i,this.UnitType=r,this.Name=n,this.ConversionFactor=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new N0e(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.Dimensions),e.push(this.UnitType),e.push(this.Name),e.push(this.ConversionFactor),e}},L0e=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.Dimensions=i,this.UnitType=r,this.Name=n,this.ConversionFactor=s,this.ConversionOffset=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new L0e(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.Dimensions),e.push(this.UnitType),e.push(this.Name),e.push(this.ConversionFactor),e.push(this.ConversionOffset),e}},F0e=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new F0e(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},H0e=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new H0e(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},U0e=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new U0e(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},B0e=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new B0e(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},k0e=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.SourceCRS=i,this.TargetCRS=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new k0e(e,t,n,s)}ToTape(){let e=[];return e.push(this.SourceCRS),e.push(this.TargetCRS),e}},G0e=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.GeodeticDatum=n,this.VerticalDatum=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new G0e(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.GeodeticDatum),e.push(this.VerticalDatum),e}},V0e=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.Identification=o,this.PredefinedType=l,this.CostValues=h,this.CostQuantities=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new V0e(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.Identification),e.push(this.PredefinedType),e.push(this.CostValues),e.push(this.CostQuantities),e}},z0e=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.Identification=o,this.PredefinedType=l,this.Status=h,this.SubmittedOn=u,this.UpdateDate=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new z0e(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.Identification),e.push(this.PredefinedType),e.push(this.Status),e.push(this.SubmittedOn),e.push(this.UpdateDate),e}},j0e=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.AppliedValue=n,this.UnitBasis=s,this.ApplicableDate=a,this.FixedUntilDate=o,this.Category=l,this.Condition=h,this.ArithmeticOperator=u,this.Components=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new j0e(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.AppliedValue),e.push(this.UnitBasis),e.push(this.ApplicableDate),e.push(this.FixedUntilDate),e.push(this.Category),e.push(this.Condition),e.push(this.ArithmeticOperator),e.push(this.Components),e}},W0e=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new W0e(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},q0e=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new q0e(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},Y0e=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.Identification=o,this.LongDescription=l,this.Usage=h,this.BaseCosts=u,this.BaseQuantity=c,this.PredefinedType=p}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++];return new Y0e(e,t,n,s,a,o,l,h,u,c,p,d,f)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.Identification),e.push(this.LongDescription),e.push(this.Usage),e.push(this.BaseCosts),e.push(this.BaseQuantity),e.push(this.PredefinedType),e}},X0e=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.Identification=l,this.LongDescription=h,this.ResourceType=u,this.BaseCosts=c,this.BaseQuantity=p,this.PredefinedType=d}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++];return new X0e(e,t,n,s,a,o,l,h,u,c,p,d,f,m)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.Identification),e.push(this.LongDescription),e.push(this.ResourceType),e.push(this.BaseCosts),e.push(this.BaseQuantity),e.push(this.PredefinedType),e}},$0e=class{constructor(e,t,i){this.expressID=e,this.type=t,this.Position=i}static FromTape(e,t,i){let r=0,n=i[r++];return new $0e(e,t,n)}ToTape(){let e=[];return e.push(this.Position),e}},Z0e=class{constructor(e,t,i){this.expressID=e,this.type=t,this.TreeRootExpression=i}static FromTape(e,t,i){let r=0,n=i[r++];return new Z0e(e,t,n)}ToTape(){let e=[];return e.push(this.TreeRootExpression),e}},K0e=class{constructor(e,t,i,r,n,s,a,o,l){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.RelatingMonetaryUnit=n,this.RelatedMonetaryUnit=s,this.ExchangeRate=a,this.RateDateTime=o,this.RateSource=l}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++];return new K0e(e,t,n,s,a,o,l,h,u)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.RelatingMonetaryUnit),e.push(this.RelatedMonetaryUnit),e.push(this.ExchangeRate),e.push(this.RateDateTime),e.push(this.RateSource),e}},J0e=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new J0e(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},Q0e=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new Q0e(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},eve=class{constructor(e,t){this.expressID=e,this.type=t}static FromTape(e,t,i){return new eve(e,t)}ToTape(){return[]}},tve=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.BasisSurface=i,this.OuterBoundary=r,this.InnerBoundaries=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new tve(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.BasisSurface),e.push(this.OuterBoundary),e.push(this.InnerBoundaries),e}},rve=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.BasisSurface=i,this.Boundaries=r,this.ImplicitOuter=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new rve(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.BasisSurface),e.push(this.Boundaries),e.push(this.ImplicitOuter),e}},ive=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.StartPoint=i,this.StartDirection=r,this.SegmentLength=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new ive(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.StartPoint),e.push(this.StartDirection),e.push(this.SegmentLength),e}},nve=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.Name=i,this.CurveFont=r,this.CurveWidth=n,this.CurveColour=s,this.ModelOrDraughting=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new nve(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.Name),e.push(this.CurveFont),e.push(this.CurveWidth),e.push(this.CurveColour),e.push(this.ModelOrDraughting),e}},sve=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.Name=i,this.PatternList=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new sve(e,t,n,s)}ToTape(){let e=[];return e.push(this.Name),e.push(this.PatternList),e}},ave=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.Name=i,this.CurveFont=r,this.CurveFontScaling=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new ave(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.Name),e.push(this.CurveFont),e.push(this.CurveFontScaling),e}},ove=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.VisibleSegmentLength=i,this.InvisibleSegmentLength=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new ove(e,t,n,s)}ToTape(){let e=[];return e.push(this.VisibleSegmentLength),e.push(this.InvisibleSegmentLength),e}},lve=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.Position=i,this.Radius=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new lve(e,t,n,s)}ToTape(){let e=[];return e.push(this.Position),e.push(this.Radius),e}},cve=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new cve(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},uve=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new uve(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},hve=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new hve(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e}},pve=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new pve(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e}},dve=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.ProfileType=i,this.ProfileName=r,this.ParentProfile=n,this.Operator=s,this.Label=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new dve(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.ProfileType),e.push(this.ProfileName),e.push(this.ParentProfile),e.push(this.Operator),e.push(this.Label),e}},fve=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.Elements=i,this.UnitType=r,this.UserDefinedType=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new fve(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.Elements),e.push(this.UnitType),e.push(this.UserDefinedType),e}},mve=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.Unit=i,this.Exponent=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new mve(e,t,n,s)}ToTape(){let e=[];return e.push(this.Unit),e.push(this.Exponent),e}},gve=class{constructor(e,t,i,r,n,s,a,o,l){this.expressID=e,this.type=t,this.LengthExponent=i,this.MassExponent=r,this.TimeExponent=n,this.ElectricCurrentExponent=s,this.ThermodynamicTemperatureExponent=a,this.AmountOfSubstanceExponent=o,this.LuminousIntensityExponent=l}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++];return new gve(e,t,n,s,a,o,l,h,u)}ToTape(){let e=[];return e.push(this.LengthExponent),e.push(this.MassExponent),e.push(this.TimeExponent),e.push(this.ElectricCurrentExponent),e.push(this.ThermodynamicTemperatureExponent),e.push(this.AmountOfSubstanceExponent),e.push(this.LuminousIntensityExponent),e}},vve=class{constructor(e,t,i){this.expressID=e,this.type=t,this.DirectionRatios=i}static FromTape(e,t,i){let r=0,n=i[r++];return new vve(e,t,n)}ToTape(){let e=[];return e.push(this.DirectionRatios),e}},yve=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new yve(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},Tve=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new Tve(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},Eve=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.DistanceAlong=i,this.OffsetLateral=r,this.OffsetVertical=n,this.OffsetLongitudinal=s,this.AlongHorizontal=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new Eve(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.DistanceAlong),e.push(this.OffsetLateral),e.push(this.OffsetVertical),e.push(this.OffsetLongitudinal),e.push(this.AlongHorizontal),e}},bve=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new bve(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},xve=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new xve(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},Ive=class{constructor(e,t,i,r,n,s,a,o,l){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.LongName=o,this.PredefinedType=l}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++];return new Ive(e,t,n,s,a,o,l,h,u)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.LongName),e.push(this.PredefinedType),e}},_ve=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new _ve(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e}},Sve=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Sve(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e}},wve=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new wve(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e}},Rve=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Rve(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e}},Mve=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new Mve(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e}},Dve=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Dve(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e}},Cve=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.FlowDirection=h,this.PredefinedType=u,this.SystemType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new Cve(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.FlowDirection),e.push(this.PredefinedType),e.push(this.SystemType),e}},Ave=class{constructor(e,t,i,r,n,s,a,o,l){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.LongName=o,this.PredefinedType=l}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++];return new Ave(e,t,n,s,a,o,l,h,u)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.LongName),e.push(this.PredefinedType),e}},Ove=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d,f,m,g,y,v){this.expressID=e,this.type=t,this.Identification=i,this.Name=r,this.Description=n,this.Location=s,this.Purpose=a,this.IntendedUse=o,this.Scope=l,this.Revision=h,this.DocumentOwner=u,this.Editors=c,this.CreationTime=p,this.LastRevisionTime=d,this.ElectronicFormat=f,this.ValidFrom=m,this.ValidUntil=g,this.Confidentiality=y,this.Status=v}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++],g=i[r++],y=i[r++],v=i[r++],T=i[r++],x=i[r++];return new Ove(e,t,n,s,a,o,l,h,u,c,p,d,f,m,g,y,v,T,x)}ToTape(){let e=[];return e.push(this.Identification),e.push(this.Name),e.push(this.Description),e.push(this.Location),e.push(this.Purpose),e.push(this.IntendedUse),e.push(this.Scope),e.push(this.Revision),e.push(this.DocumentOwner),e.push(this.Editors),e.push(this.CreationTime),e.push(this.LastRevisionTime),e.push(this.ElectronicFormat),e.push(this.ValidFrom),e.push(this.ValidUntil),e.push(this.Confidentiality),e.push(this.Status),e}},Pve=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.RelatingDocument=n,this.RelatedDocuments=s,this.RelationshipType=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new Pve(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.RelatingDocument),e.push(this.RelatedDocuments),e.push(this.RelationshipType),e}},Nve=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.Location=i,this.Identification=r,this.Name=n,this.Description=s,this.ReferencedDocument=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new Nve(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.Location),e.push(this.Identification),e.push(this.Name),e.push(this.Description),e.push(this.ReferencedDocument),e}},Lve=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d,f){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.OverallHeight=u,this.OverallWidth=c,this.PredefinedType=p,this.OperationType=d,this.UserDefinedOperationType=f}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++],g=i[r++];return new Lve(e,t,n,s,a,o,l,h,u,c,p,d,f,m,g)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.OverallHeight),e.push(this.OverallWidth),e.push(this.PredefinedType),e.push(this.OperationType),e.push(this.UserDefinedOperationType),e}},Fve=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d,f,m,g,y,v){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.LiningDepth=a,this.LiningThickness=o,this.ThresholdDepth=l,this.ThresholdThickness=h,this.TransomThickness=u,this.TransomOffset=c,this.LiningOffset=p,this.ThresholdOffset=d,this.CasingThickness=f,this.CasingDepth=m,this.ShapeAspectStyle=g,this.LiningToPanelOffsetX=y,this.LiningToPanelOffsetY=v}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++],g=i[r++],y=i[r++],v=i[r++],T=i[r++],x=i[r++];return new Fve(e,t,n,s,a,o,l,h,u,c,p,d,f,m,g,y,v,T,x)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.LiningDepth),e.push(this.LiningThickness),e.push(this.ThresholdDepth),e.push(this.ThresholdThickness),e.push(this.TransomThickness),e.push(this.TransomOffset),e.push(this.LiningOffset),e.push(this.ThresholdOffset),e.push(this.CasingThickness),e.push(this.CasingDepth),e.push(this.ShapeAspectStyle),e.push(this.LiningToPanelOffsetX),e.push(this.LiningToPanelOffsetY),e}},Hve=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.PanelDepth=a,this.PanelOperation=o,this.PanelWidth=l,this.PanelPosition=h,this.ShapeAspectStyle=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Hve(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.PanelDepth),e.push(this.PanelOperation),e.push(this.PanelWidth),e.push(this.PanelPosition),e.push(this.ShapeAspectStyle),e}},Uve=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d,f){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.OverallHeight=u,this.OverallWidth=c,this.PredefinedType=p,this.OperationType=d,this.UserDefinedOperationType=f}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++],g=i[r++];return new Uve(e,t,n,s,a,o,l,h,u,c,p,d,f,m,g)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.OverallHeight),e.push(this.OverallWidth),e.push(this.PredefinedType),e.push(this.OperationType),e.push(this.UserDefinedOperationType),e}},Bve=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.OperationType=u,this.ConstructionType=c,this.ParameterTakesPrecedence=p,this.Sizeable=d}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++];return new Bve(e,t,n,s,a,o,l,h,u,c,p,d,f,m)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.OperationType),e.push(this.ConstructionType),e.push(this.ParameterTakesPrecedence),e.push(this.Sizeable),e}},kve=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d,f){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c,this.OperationType=p,this.ParameterTakesPrecedence=d,this.UserDefinedOperationType=f}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++],g=i[r++];return new kve(e,t,n,s,a,o,l,h,u,c,p,d,f,m,g)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e.push(this.OperationType),e.push(this.ParameterTakesPrecedence),e.push(this.UserDefinedOperationType),e}},Gve=class{constructor(e,t,i){this.expressID=e,this.type=t,this.Name=i}static FromTape(e,t,i){let r=0,n=i[r++];return new Gve(e,t,n)}ToTape(){let e=[];return e.push(this.Name),e}},Vve=class{constructor(e,t,i){this.expressID=e,this.type=t,this.Name=i}static FromTape(e,t,i){let r=0,n=i[r++];return new Vve(e,t,n)}ToTape(){let e=[];return e.push(this.Name),e}},zve=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new zve(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},jve=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new jve(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},Wve=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Wve(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},qve=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new qve(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},Yve=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Yve(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},Xve=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new Xve(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},$ve=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.EdgeStart=i,this.EdgeEnd=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new $ve(e,t,n,s)}ToTape(){let e=[];return e.push(this.EdgeStart),e.push(this.EdgeEnd),e}},Zve=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.EdgeStart=i,this.EdgeEnd=r,this.EdgeGeometry=n,this.SameSense=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new Zve(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.EdgeStart),e.push(this.EdgeEnd),e.push(this.EdgeGeometry),e.push(this.SameSense),e}},Kve=class{constructor(e,t,i){this.expressID=e,this.type=t,this.EdgeList=i}static FromTape(e,t,i){let r=0,n=i[r++];return new Kve(e,t,n)}ToTape(){let e=[];return e.push(this.EdgeList),e}},Jve=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Jve(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},Qve=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new Qve(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},eye=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new eye(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},tye=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new tye(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},rye=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new rye(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},iye=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new iye(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},nye=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new nye(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},sye=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new sye(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},aye=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new aye(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},oye=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new oye(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},lye=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new lye(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},cye=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new cye(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},uye=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new uye(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e}},hye=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.AssemblyPlace=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new hye(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.AssemblyPlace),e.push(this.PredefinedType),e}},pye=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new pye(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},dye=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new dye(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e}},fye=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new fye(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e}},mye=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.MethodOfMeasurement=a,this.Quantities=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new mye(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.MethodOfMeasurement),e.push(this.Quantities),e}},gye=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new gye(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e}},vye=class{constructor(e,t,i){this.expressID=e,this.type=t,this.Position=i}static FromTape(e,t,i){let r=0,n=i[r++];return new vye(e,t,n)}ToTape(){let e=[];return e.push(this.Position),e}},yye=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.Position=i,this.SemiAxis1=r,this.SemiAxis2=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new yye(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.Position),e.push(this.SemiAxis1),e.push(this.SemiAxis2),e}},Tye=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.ProfileType=i,this.ProfileName=r,this.Position=n,this.SemiAxis1=s,this.SemiAxis2=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new Tye(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.ProfileType),e.push(this.ProfileName),e.push(this.Position),e.push(this.SemiAxis1),e.push(this.SemiAxis2),e}},Eye=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new Eye(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e}},bye=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new bye(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e}},xye=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new xye(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},Iye=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new Iye(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},_ye=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new _ye(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},Sye=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new Sye(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},wye=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new wye(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},Rye=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new Rye(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},Mye=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.Identification=o,this.LongDescription=l,this.PredefinedType=h,this.EventTriggerType=u,this.UserDefinedEventTriggerType=c,this.EventOccurenceTime=p}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++];return new Mye(e,t,n,s,a,o,l,h,u,c,p,d,f)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.Identification),e.push(this.LongDescription),e.push(this.PredefinedType),e.push(this.EventTriggerType),e.push(this.UserDefinedEventTriggerType),e.push(this.EventOccurenceTime),e}},Dye=class{constructor(e,t,i,r,n,s,a,o,l){this.expressID=e,this.type=t,this.Name=i,this.DataOrigin=r,this.UserDefinedDataOrigin=n,this.ActualDate=s,this.EarlyDate=a,this.LateDate=o,this.ScheduleDate=l}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++];return new Dye(e,t,n,s,a,o,l,h,u)}ToTape(){let e=[];return e.push(this.Name),e.push(this.DataOrigin),e.push(this.UserDefinedDataOrigin),e.push(this.ActualDate),e.push(this.EarlyDate),e.push(this.LateDate),e.push(this.ScheduleDate),e}},Cye=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.Identification=l,this.LongDescription=h,this.ProcessType=u,this.PredefinedType=c,this.EventTriggerType=p,this.UserDefinedEventTriggerType=d}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++];return new Cye(e,t,n,s,a,o,l,h,u,c,p,d,f,m)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.Identification),e.push(this.LongDescription),e.push(this.ProcessType),e.push(this.PredefinedType),e.push(this.EventTriggerType),e.push(this.UserDefinedEventTriggerType),e}},Aye=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.Properties=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new Aye(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.Properties),e}},Oye=class{constructor(e,t){this.expressID=e,this.type=t}static FromTape(e,t,i){return new Oye(e,t)}ToTape(){return[]}},Pye=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.Location=i,this.Identification=r,this.Name=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new Pye(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.Location),e.push(this.Identification),e.push(this.Name),e}},Nye=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.RelatingReference=n,this.RelatedResourceObjects=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new Nye(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.RelatingReference),e.push(this.RelatedResourceObjects),e}},Lye=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.LongName=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Lye(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.LongName),e.push(this.PredefinedType),e}},Fye=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.LongName=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new Fye(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.LongName),e}},Hye=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.Location=i,this.Identification=r,this.Name=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new Hye(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.Location),e.push(this.Identification),e.push(this.Name),e}},Uye=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.Location=i,this.Identification=r,this.Name=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new Uye(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.Location),e.push(this.Identification),e.push(this.Name),e}},Bye=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.Location=i,this.Identification=r,this.Name=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new Bye(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.Location),e.push(this.Identification),e.push(this.Name),e}},kye=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.SweptArea=i,this.Position=r,this.ExtrudedDirection=n,this.Depth=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new kye(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.SweptArea),e.push(this.Position),e.push(this.ExtrudedDirection),e.push(this.Depth),e}},Gye=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.SweptArea=i,this.Position=r,this.ExtrudedDirection=n,this.Depth=s,this.EndSweptArea=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new Gye(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.SweptArea),e.push(this.Position),e.push(this.ExtrudedDirection),e.push(this.Depth),e.push(this.EndSweptArea),e}},Vye=class{constructor(e,t,i){this.expressID=e,this.type=t,this.Bounds=i}static FromTape(e,t,i){let r=0,n=i[r++];return new Vye(e,t,n)}ToTape(){let e=[];return e.push(this.Bounds),e}},zye=class{constructor(e,t,i){this.expressID=e,this.type=t,this.FbsmFaces=i}static FromTape(e,t,i){let r=0,n=i[r++];return new zye(e,t,n)}ToTape(){let e=[];return e.push(this.FbsmFaces),e}},jye=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.Bound=i,this.Orientation=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new jye(e,t,n,s)}ToTape(){let e=[];return e.push(this.Bound),e.push(this.Orientation),e}},Wye=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.Bound=i,this.Orientation=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new Wye(e,t,n,s)}ToTape(){let e=[];return e.push(this.Bound),e.push(this.Orientation),e}},qye=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.Bounds=i,this.FaceSurface=r,this.SameSense=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new qye(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.Bounds),e.push(this.FaceSurface),e.push(this.SameSense),e}},Yye=class{constructor(e,t,i){this.expressID=e,this.type=t,this.Outer=i}static FromTape(e,t,i){let r=0,n=i[r++];return new Yye(e,t,n)}ToTape(){let e=[];return e.push(this.Outer),e}},Xye=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.Outer=i,this.Voids=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new Xye(e,t,n,s)}ToTape(){let e=[];return e.push(this.Outer),e.push(this.Voids),e}},$ye=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.LongName=h,this.CompositionType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new $ye(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.LongName),e.push(this.CompositionType),e}},Zye=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.LongName=h,this.CompositionType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Zye(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.LongName),e.push(this.CompositionType),e}},Kye=class{constructor(e,t,i,r,n,s,a,o,l){this.expressID=e,this.type=t,this.Name=i,this.TensionFailureX=r,this.TensionFailureY=n,this.TensionFailureZ=s,this.CompressionFailureX=a,this.CompressionFailureY=o,this.CompressionFailureZ=l}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++];return new Kye(e,t,n,s,a,o,l,h,u)}ToTape(){let e=[];return e.push(this.Name),e.push(this.TensionFailureX),e.push(this.TensionFailureY),e.push(this.TensionFailureZ),e.push(this.CompressionFailureX),e.push(this.CompressionFailureY),e.push(this.CompressionFailureZ),e}},Jye=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Jye(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},Qye=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new Qye(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},eTe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new eTe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},tTe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new tTe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},rTe=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new rTe(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e}},iTe=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new iTe(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e}},nTe=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new nTe(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e}},sTe=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.Name=i,this.FillStyles=r,this.ModelorDraughting=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new sTe(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.Name),e.push(this.FillStyles),e.push(this.ModelorDraughting),e}},aTe=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.HatchLineAppearance=i,this.StartOfNextHatchLine=r,this.PointOfReferenceHatchLine=n,this.PatternStart=s,this.HatchLineAngle=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new aTe(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.HatchLineAppearance),e.push(this.StartOfNextHatchLine),e.push(this.PointOfReferenceHatchLine),e.push(this.PatternStart),e.push(this.HatchLineAngle),e}},oTe=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.TilingPattern=i,this.Tiles=r,this.TilingScale=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new oTe(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.TilingPattern),e.push(this.Tiles),e.push(this.TilingScale),e}},lTe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new lTe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},cTe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new cTe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},uTe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new uTe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},hTe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new hTe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},pTe=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.SweptArea=i,this.Position=r,this.Directrix=n,this.StartParam=s,this.EndParam=a,this.FixedReference=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new pTe(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.SweptArea),e.push(this.Position),e.push(this.Directrix),e.push(this.StartParam),e.push(this.EndParam),e.push(this.FixedReference),e}},dTe=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new dTe(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e}},fTe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new fTe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e}},mTe=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new mTe(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e}},gTe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new gTe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e}},vTe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new vTe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},yTe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new yTe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},TTe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new TTe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},ETe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new ETe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},bTe=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new bTe(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e}},xTe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new xTe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e}},ITe=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new ITe(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e}},_Te=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new _Te(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e}},STe=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new STe(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e}},wTe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new wTe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e}},RTe=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new RTe(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e}},MTe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new MTe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e}},DTe=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new DTe(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e}},CTe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new CTe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e}},ATe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new ATe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},OTe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new OTe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},PTe=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new PTe(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e}},NTe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new NTe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e}},LTe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new LTe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},FTe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.AssemblyPlace=c,this.PredefinedType=p}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++];return new FTe(e,t,n,s,a,o,l,h,u,c,p,d,f)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.AssemblyPlace),e.push(this.PredefinedType),e}},HTe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new HTe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},UTe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new UTe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},BTe=class{constructor(e,t,i){this.expressID=e,this.type=t,this.Elements=i}static FromTape(e,t,i){let r=0,n=i[r++];return new BTe(e,t,n)}ToTape(){let e=[];return e.push(this.Elements),e}},kTe=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.ContextIdentifier=i,this.ContextType=r,this.CoordinateSpaceDimension=n,this.Precision=s,this.WorldCoordinateSystem=a,this.TrueNorth=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new kTe(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.ContextIdentifier),e.push(this.ContextType),e.push(this.CoordinateSpaceDimension),e.push(this.Precision),e.push(this.WorldCoordinateSystem),e.push(this.TrueNorth),e}},GTe=class{constructor(e,t){this.expressID=e,this.type=t}static FromTape(e,t,i){return new GTe(e,t)}ToTape(){return[]}},VTe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.ContextIdentifier=i,this.ContextType=r,this.CoordinateSpaceDimension=n,this.Precision=s,this.WorldCoordinateSystem=a,this.TrueNorth=o,this.ParentContext=l,this.TargetScale=h,this.TargetView=u,this.UserDefinedTargetView=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new VTe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.ContextIdentifier),e.push(this.ContextType),e.push(this.CoordinateSpaceDimension),e.push(this.Precision),e.push(this.WorldCoordinateSystem),e.push(this.TrueNorth),e.push(this.ParentContext),e.push(this.TargetScale),e.push(this.TargetView),e.push(this.UserDefinedTargetView),e}},zTe=class{constructor(e,t,i){this.expressID=e,this.type=t,this.Elements=i}static FromTape(e,t,i){let r=0,n=i[r++];return new zTe(e,t,n)}ToTape(){let e=[];return e.push(this.Elements),e}},jTe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.UAxes=h,this.VAxes=u,this.WAxes=c,this.PredefinedType=p}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++];return new jTe(e,t,n,s,a,o,l,h,u,c,p,d,f)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.UAxes),e.push(this.VAxes),e.push(this.WAxes),e.push(this.PredefinedType),e}},WTe=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.AxisTag=i,this.AxisCurve=r,this.SameSense=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new WTe(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.AxisTag),e.push(this.AxisCurve),e.push(this.SameSense),e}},qTe=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.PlacementRelTo=i,this.PlacementLocation=r,this.PlacementRefDirection=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new qTe(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.PlacementRelTo),e.push(this.PlacementLocation),e.push(this.PlacementRefDirection),e}},YTe=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new YTe(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e}},XTe=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.BaseSurface=i,this.AgreementFlag=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new XTe(e,t,n,s)}ToTape(){let e=[];return e.push(this.BaseSurface),e.push(this.AgreementFlag),e}},$Te=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new $Te(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},ZTe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new ZTe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},KTe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new KTe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},JTe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new JTe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},QTe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.ProfileType=i,this.ProfileName=r,this.Position=n,this.OverallWidth=s,this.OverallDepth=a,this.WebThickness=o,this.FlangeThickness=l,this.FilletRadius=h,this.FlangeEdgeRadius=u,this.FlangeSlope=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new QTe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.ProfileType),e.push(this.ProfileName),e.push(this.Position),e.push(this.OverallWidth),e.push(this.OverallDepth),e.push(this.WebThickness),e.push(this.FlangeThickness),e.push(this.FilletRadius),e.push(this.FlangeEdgeRadius),e.push(this.FlangeSlope),e}},eEe=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.RepeatS=i,this.RepeatT=r,this.Mode=n,this.TextureTransform=s,this.Parameter=a,this.URLReference=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new eEe(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.RepeatS),e.push(this.RepeatT),e.push(this.Mode),e.push(this.TextureTransform),e.push(this.Parameter),e.push(this.URLReference),e}},tEe=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.MappedTo=i,this.Opacity=r,this.Colours=n,this.ColourIndex=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new tEe(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.MappedTo),e.push(this.Opacity),e.push(this.Colours),e.push(this.ColourIndex),e}},rEe=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.Points=i,this.Segments=r,this.SelfIntersect=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new rEe(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.Points),e.push(this.Segments),e.push(this.SelfIntersect),e}},iEe=class{constructor(e,t,i){this.expressID=e,this.type=t,this.CoordIndex=i}static FromTape(e,t,i){let r=0,n=i[r++];return new iEe(e,t,n)}ToTape(){let e=[];return e.push(this.CoordIndex),e}},nEe=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.CoordIndex=i,this.InnerCoordIndices=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new nEe(e,t,n,s)}ToTape(){let e=[];return e.push(this.CoordIndex),e.push(this.InnerCoordIndices),e}},sEe=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.Maps=i,this.MappedTo=r,this.TexCoords=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new sEe(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.Maps),e.push(this.MappedTo),e.push(this.TexCoords),e}},aEe=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.Maps=i,this.MappedTo=r,this.TexCoords=n,this.TexCoordIndex=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new aEe(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.Maps),e.push(this.MappedTo),e.push(this.TexCoords),e.push(this.TexCoordIndex),e}},oEe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new oEe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},lEe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new lEe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},cEe=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.Curve3D=i,this.AssociatedGeometry=r,this.MasterRepresentation=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new cEe(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.Curve3D),e.push(this.AssociatedGeometry),e.push(this.MasterRepresentation),e}},uEe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.PredefinedType=o,this.Jurisdiction=l,this.ResponsiblePersons=h,this.LastUpdateDate=u,this.CurrentValue=c,this.OriginalValue=p}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++];return new uEe(e,t,n,s,a,o,l,h,u,c,p,d,f)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.PredefinedType),e.push(this.Jurisdiction),e.push(this.ResponsiblePersons),e.push(this.LastUpdateDate),e.push(this.CurrentValue),e.push(this.OriginalValue),e}},hEe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.StartTime=n,this.EndTime=s,this.TimeSeriesDataType=a,this.DataOrigin=o,this.UserDefinedDataOrigin=l,this.Unit=h,this.Values=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new hEe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.StartTime),e.push(this.EndTime),e.push(this.TimeSeriesDataType),e.push(this.DataOrigin),e.push(this.UserDefinedDataOrigin),e.push(this.Unit),e.push(this.Values),e}},pEe=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.TimeStamp=i,this.ListValues=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new pEe(e,t,n,s)}ToTape(){let e=[];return e.push(this.TimeStamp),e.push(this.ListValues),e}},dEe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new dEe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},fEe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new fEe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},mEe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.ProfileType=i,this.ProfileName=r,this.Position=n,this.Depth=s,this.Width=a,this.Thickness=o,this.FilletRadius=l,this.EdgeRadius=h,this.LegSlope=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new mEe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.ProfileType),e.push(this.ProfileName),e.push(this.Position),e.push(this.Depth),e.push(this.Width),e.push(this.Thickness),e.push(this.FilletRadius),e.push(this.EdgeRadius),e.push(this.LegSlope),e}},gEe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.Identification=o,this.LongDescription=l,this.Usage=h,this.BaseCosts=u,this.BaseQuantity=c,this.PredefinedType=p}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++];return new gEe(e,t,n,s,a,o,l,h,u,c,p,d,f)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.Identification),e.push(this.LongDescription),e.push(this.Usage),e.push(this.BaseCosts),e.push(this.BaseQuantity),e.push(this.PredefinedType),e}},vEe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.Identification=l,this.LongDescription=h,this.ResourceType=u,this.BaseCosts=c,this.BaseQuantity=p,this.PredefinedType=d}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++];return new vEe(e,t,n,s,a,o,l,h,u,c,p,d,f,m)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.Identification),e.push(this.LongDescription),e.push(this.ResourceType),e.push(this.BaseCosts),e.push(this.BaseQuantity),e.push(this.PredefinedType),e}},yEe=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.Name=i,this.DataOrigin=r,this.UserDefinedDataOrigin=n,this.LagValue=s,this.DurationType=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new yEe(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.Name),e.push(this.DataOrigin),e.push(this.UserDefinedDataOrigin),e.push(this.LagValue),e.push(this.DurationType),e}},TEe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new TEe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},EEe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new EEe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},bEe=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.Name=i,this.Version=r,this.Publisher=n,this.VersionDate=s,this.Location=a,this.Description=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new bEe(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Version),e.push(this.Publisher),e.push(this.VersionDate),e.push(this.Location),e.push(this.Description),e}},xEe=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.Location=i,this.Identification=r,this.Name=n,this.Description=s,this.Language=a,this.ReferencedLibrary=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new xEe(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.Location),e.push(this.Identification),e.push(this.Name),e.push(this.Description),e.push(this.Language),e.push(this.ReferencedLibrary),e}},IEe=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.MainPlaneAngle=i,this.SecondaryPlaneAngle=r,this.LuminousIntensity=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new IEe(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.MainPlaneAngle),e.push(this.SecondaryPlaneAngle),e.push(this.LuminousIntensity),e}},_Ee=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new _Ee(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},SEe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new SEe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},wEe=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.LightDistributionCurve=i,this.DistributionData=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new wEe(e,t,n,s)}ToTape(){let e=[];return e.push(this.LightDistributionCurve),e.push(this.DistributionData),e}},REe=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.Name=i,this.LightColour=r,this.AmbientIntensity=n,this.Intensity=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new REe(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.Name),e.push(this.LightColour),e.push(this.AmbientIntensity),e.push(this.Intensity),e}},MEe=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.Name=i,this.LightColour=r,this.AmbientIntensity=n,this.Intensity=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new MEe(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.Name),e.push(this.LightColour),e.push(this.AmbientIntensity),e.push(this.Intensity),e}},DEe=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.Name=i,this.LightColour=r,this.AmbientIntensity=n,this.Intensity=s,this.Orientation=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new DEe(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.Name),e.push(this.LightColour),e.push(this.AmbientIntensity),e.push(this.Intensity),e.push(this.Orientation),e}},CEe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.Name=i,this.LightColour=r,this.AmbientIntensity=n,this.Intensity=s,this.Position=a,this.ColourAppearance=o,this.ColourTemperature=l,this.LuminousFlux=h,this.LightEmissionSource=u,this.LightDistributionDataSource=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new CEe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.Name),e.push(this.LightColour),e.push(this.AmbientIntensity),e.push(this.Intensity),e.push(this.Position),e.push(this.ColourAppearance),e.push(this.ColourTemperature),e.push(this.LuminousFlux),e.push(this.LightEmissionSource),e.push(this.LightDistributionDataSource),e}},AEe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.Name=i,this.LightColour=r,this.AmbientIntensity=n,this.Intensity=s,this.Position=a,this.Radius=o,this.ConstantAttenuation=l,this.DistanceAttenuation=h,this.QuadricAttenuation=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new AEe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.Name),e.push(this.LightColour),e.push(this.AmbientIntensity),e.push(this.Intensity),e.push(this.Position),e.push(this.Radius),e.push(this.ConstantAttenuation),e.push(this.DistanceAttenuation),e.push(this.QuadricAttenuation),e}},OEe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d,f){this.expressID=e,this.type=t,this.Name=i,this.LightColour=r,this.AmbientIntensity=n,this.Intensity=s,this.Position=a,this.Radius=o,this.ConstantAttenuation=l,this.DistanceAttenuation=h,this.QuadricAttenuation=u,this.Orientation=c,this.ConcentrationExponent=p,this.SpreadAngle=d,this.BeamWidthAngle=f}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++],g=i[r++];return new OEe(e,t,n,s,a,o,l,h,u,c,p,d,f,m,g)}ToTape(){let e=[];return e.push(this.Name),e.push(this.LightColour),e.push(this.AmbientIntensity),e.push(this.Intensity),e.push(this.Position),e.push(this.Radius),e.push(this.ConstantAttenuation),e.push(this.DistanceAttenuation),e.push(this.QuadricAttenuation),e.push(this.Orientation),e.push(this.ConcentrationExponent),e.push(this.SpreadAngle),e.push(this.BeamWidthAngle),e}},PEe=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.Pnt=i,this.Dir=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new PEe(e,t,n,s)}ToTape(){let e=[];return e.push(this.Pnt),e.push(this.Dir),e}},NEe=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.StartPoint=i,this.StartDirection=r,this.SegmentLength=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new NEe(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.StartPoint),e.push(this.StartDirection),e.push(this.SegmentLength),e}},LEe=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.PlacementRelTo=i,this.PlacementMeasuredAlong=r,this.Distance=n,this.Orientation=s,this.CartesianPosition=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new LEe(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.PlacementRelTo),e.push(this.PlacementMeasuredAlong),e.push(this.Distance),e.push(this.Orientation),e.push(this.CartesianPosition),e}},FEe=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Axis=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new FEe(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Axis),e}},HEe=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.PlacementRelTo=i,this.RelativePlacement=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new HEe(e,t,n,s)}ToTape(){let e=[];return e.push(this.PlacementRelTo),e.push(this.RelativePlacement),e}},UEe=class{constructor(e,t){this.expressID=e,this.type=t}static FromTape(e,t,i){return new UEe(e,t)}ToTape(){return[]}},BEe=class{constructor(e,t,i){this.expressID=e,this.type=t,this.Outer=i}static FromTape(e,t,i){let r=0,n=i[r++];return new BEe(e,t,n)}ToTape(){let e=[];return e.push(this.Outer),e}},kEe=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.SourceCRS=i,this.TargetCRS=r,this.Eastings=n,this.Northings=s,this.OrthogonalHeight=a,this.XAxisAbscissa=o,this.XAxisOrdinate=l,this.Scale=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new kEe(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.SourceCRS),e.push(this.TargetCRS),e.push(this.Eastings),e.push(this.Northings),e.push(this.OrthogonalHeight),e.push(this.XAxisAbscissa),e.push(this.XAxisOrdinate),e.push(this.Scale),e}},GEe=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.MappingSource=i,this.MappingTarget=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new GEe(e,t,n,s)}ToTape(){let e=[];return e.push(this.MappingSource),e.push(this.MappingTarget),e}},VEe=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.Category=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new VEe(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.Category),e}},zEe=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.MaterialClassifications=i,this.ClassifiedMaterial=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new zEe(e,t,n,s)}ToTape(){let e=[];return e.push(this.MaterialClassifications),e.push(this.ClassifiedMaterial),e}},jEe=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.Material=n,this.Fraction=s,this.Category=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new jEe(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.Material),e.push(this.Fraction),e.push(this.Category),e}},WEe=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.MaterialConstituents=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new WEe(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.MaterialConstituents),e}},qEe=class{constructor(e,t){this.expressID=e,this.type=t}static FromTape(e,t,i){return new qEe(e,t)}ToTape(){return[]}},YEe=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.Representations=n,this.RepresentedMaterial=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new YEe(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.Representations),e.push(this.RepresentedMaterial),e}},XEe=class{constructor(e,t,i,r,n,s,a,o,l){this.expressID=e,this.type=t,this.Material=i,this.LayerThickness=r,this.IsVentilated=n,this.Name=s,this.Description=a,this.Category=o,this.Priority=l}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++];return new XEe(e,t,n,s,a,o,l,h,u)}ToTape(){let e=[];return e.push(this.Material),e.push(this.LayerThickness),e.push(this.IsVentilated),e.push(this.Name),e.push(this.Description),e.push(this.Category),e.push(this.Priority),e}},$Ee=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.MaterialLayers=i,this.LayerSetName=r,this.Description=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new $Ee(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.MaterialLayers),e.push(this.LayerSetName),e.push(this.Description),e}},ZEe=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.ForLayerSet=i,this.LayerSetDirection=r,this.DirectionSense=n,this.OffsetFromReferenceLine=s,this.ReferenceExtent=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new ZEe(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.ForLayerSet),e.push(this.LayerSetDirection),e.push(this.DirectionSense),e.push(this.OffsetFromReferenceLine),e.push(this.ReferenceExtent),e}},KEe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.Material=i,this.LayerThickness=r,this.IsVentilated=n,this.Name=s,this.Description=a,this.Category=o,this.Priority=l,this.OffsetDirection=h,this.OffsetValues=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new KEe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.Material),e.push(this.LayerThickness),e.push(this.IsVentilated),e.push(this.Name),e.push(this.Description),e.push(this.Category),e.push(this.Priority),e.push(this.OffsetDirection),e.push(this.OffsetValues),e}},JEe=class{constructor(e,t,i){this.expressID=e,this.type=t,this.Materials=i}static FromTape(e,t,i){let r=0,n=i[r++];return new JEe(e,t,n)}ToTape(){let e=[];return e.push(this.Materials),e}},QEe=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.Material=n,this.Profile=s,this.Priority=a,this.Category=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new QEe(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.Material),e.push(this.Profile),e.push(this.Priority),e.push(this.Category),e}},e1e=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.MaterialProfiles=n,this.CompositeProfile=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new e1e(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.MaterialProfiles),e.push(this.CompositeProfile),e}},t1e=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.ForProfileSet=i,this.CardinalPoint=r,this.ReferenceExtent=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new t1e(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.ForProfileSet),e.push(this.CardinalPoint),e.push(this.ReferenceExtent),e}},r1e=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.ForProfileSet=i,this.CardinalPoint=r,this.ReferenceExtent=n,this.ForProfileEndSet=s,this.CardinalEndPoint=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new r1e(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.ForProfileSet),e.push(this.CardinalPoint),e.push(this.ReferenceExtent),e.push(this.ForProfileEndSet),e.push(this.CardinalEndPoint),e}},i1e=class{constructor(e,t,i,r,n,s,a,o,l){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.Material=n,this.Profile=s,this.Priority=a,this.Category=o,this.OffsetValues=l}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++];return new i1e(e,t,n,s,a,o,l,h,u)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.Material),e.push(this.Profile),e.push(this.Priority),e.push(this.Category),e.push(this.OffsetValues),e}},n1e=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.Properties=n,this.Material=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new n1e(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.Properties),e.push(this.Material),e}},s1e=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.RelatingMaterial=n,this.RelatedMaterials=s,this.Expression=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new s1e(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.RelatingMaterial),e.push(this.RelatedMaterials),e.push(this.Expression),e}},a1e=class{constructor(e,t){this.expressID=e,this.type=t}static FromTape(e,t,i){return new a1e(e,t)}ToTape(){return[]}},o1e=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.ValueComponent=i,this.UnitComponent=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new o1e(e,t,n,s)}ToTape(){let e=[];return e.push(this.ValueComponent),e.push(this.UnitComponent),e}},l1e=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.NominalDiameter=u,this.NominalLength=c,this.PredefinedType=p}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++];return new l1e(e,t,n,s,a,o,l,h,u,c,p,d,f)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.NominalDiameter),e.push(this.NominalLength),e.push(this.PredefinedType),e}},c1e=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c,this.NominalDiameter=p,this.NominalLength=d}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++];return new c1e(e,t,n,s,a,o,l,h,u,c,p,d,f,m)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e.push(this.NominalDiameter),e.push(this.NominalLength),e}},u1e=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new u1e(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},h1e=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new h1e(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},p1e=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new p1e(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},d1e=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new d1e(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},f1e=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new f1e(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},m1e=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.ConstraintGrade=n,this.ConstraintSource=s,this.CreatingActor=a,this.CreationTime=o,this.UserDefinedGrade=l,this.Benchmark=h,this.ValueSource=u,this.DataValue=c,this.ReferencePath=p}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++];return new m1e(e,t,n,s,a,o,l,h,u,c,p,d,f)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.ConstraintGrade),e.push(this.ConstraintSource),e.push(this.CreatingActor),e.push(this.CreationTime),e.push(this.UserDefinedGrade),e.push(this.Benchmark),e.push(this.ValueSource),e.push(this.DataValue),e.push(this.ReferencePath),e}},g1e=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.ProfileType=i,this.ProfileName=r,this.ParentProfile=n,this.Operator=s,this.Label=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new g1e(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.ProfileType),e.push(this.ProfileName),e.push(this.ParentProfile),e.push(this.Operator),e.push(this.Label),e}},v1e=class{constructor(e,t,i){this.expressID=e,this.type=t,this.Currency=i}static FromTape(e,t,i){let r=0,n=i[r++];return new v1e(e,t,n)}ToTape(){let e=[];return e.push(this.Currency),e}},y1e=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new y1e(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},T1e=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new T1e(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},E1e=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.Dimensions=i,this.UnitType=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new E1e(e,t,n,s)}ToTape(){let e=[];return e.push(this.Dimensions),e.push(this.UnitType),e}},b1e=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new b1e(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e}},x1e=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new x1e(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e}},I1e=class{constructor(e,t,i){this.expressID=e,this.type=t,this.PlacementRelTo=i}static FromTape(e,t,i){let r=0,n=i[r++];return new I1e(e,t,n)}ToTape(){let e=[];return e.push(this.PlacementRelTo),e}},_1e=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.ConstraintGrade=n,this.ConstraintSource=s,this.CreatingActor=a,this.CreationTime=o,this.UserDefinedGrade=l,this.BenchmarkValues=h,this.LogicalAggregator=u,this.ObjectiveQualifier=c,this.UserDefinedQualifier=p}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++];return new _1e(e,t,n,s,a,o,l,h,u,c,p,d,f)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.ConstraintGrade),e.push(this.ConstraintSource),e.push(this.CreatingActor),e.push(this.CreationTime),e.push(this.UserDefinedGrade),e.push(this.BenchmarkValues),e.push(this.LogicalAggregator),e.push(this.ObjectiveQualifier),e.push(this.UserDefinedQualifier),e}},S1e=class{constructor(e,t,i,r,n,s,a,o,l){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.TheActor=o,this.PredefinedType=l}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++];return new S1e(e,t,n,s,a,o,l,h,u)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.TheActor),e.push(this.PredefinedType),e}},w1e=class{constructor(e,t,i){this.expressID=e,this.type=t,this.BasisCurve=i}static FromTape(e,t,i){let r=0,n=i[r++];return new w1e(e,t,n)}ToTape(){let e=[];return e.push(this.BasisCurve),e}},R1e=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.BasisCurve=i,this.Distance=r,this.SelfIntersect=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new R1e(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.BasisCurve),e.push(this.Distance),e.push(this.SelfIntersect),e}},M1e=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.BasisCurve=i,this.Distance=r,this.SelfIntersect=n,this.RefDirection=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new M1e(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.BasisCurve),e.push(this.Distance),e.push(this.SelfIntersect),e.push(this.RefDirection),e}},D1e=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.BasisCurve=i,this.OffsetValues=r,this.Tag=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new D1e(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.BasisCurve),e.push(this.OffsetValues),e.push(this.Tag),e}},C1e=class{constructor(e,t,i){this.expressID=e,this.type=t,this.CfsFaces=i}static FromTape(e,t,i){let r=0,n=i[r++];return new C1e(e,t,n)}ToTape(){let e=[];return e.push(this.CfsFaces),e}},A1e=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new A1e(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},O1e=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new O1e(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},P1e=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.Identification=i,this.Name=r,this.Description=n,this.Roles=s,this.Addresses=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new P1e(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.Identification),e.push(this.Name),e.push(this.Description),e.push(this.Roles),e.push(this.Addresses),e}},N1e=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.RelatingOrganization=n,this.RelatedOrganizations=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new N1e(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.RelatingOrganization),e.push(this.RelatedOrganizations),e}},L1e=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.LateralAxisDirection=i,this.VerticalAxisDirection=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new L1e(e,t,n,s)}ToTape(){let e=[];return e.push(this.LateralAxisDirection),e.push(this.VerticalAxisDirection),e}},F1e=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.EdgeStart=i,this.EdgeEnd=r,this.EdgeElement=n,this.Orientation=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new F1e(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.EdgeStart),e.push(this.EdgeEnd),e.push(this.EdgeElement),e.push(this.Orientation),e}},H1e=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.Segments=i,this.SelfIntersect=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new H1e(e,t,n,s)}ToTape(){let e=[];return e.push(this.Segments),e.push(this.SelfIntersect),e}},U1e=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new U1e(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},B1e=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new B1e(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},k1e=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.OwningUser=i,this.OwningApplication=r,this.State=n,this.ChangeAction=s,this.LastModifiedDate=a,this.LastModifyingUser=o,this.LastModifyingApplication=l,this.CreationDate=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new k1e(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.OwningUser),e.push(this.OwningApplication),e.push(this.State),e.push(this.ChangeAction),e.push(this.LastModifiedDate),e.push(this.LastModifyingUser),e.push(this.LastModifyingApplication),e.push(this.CreationDate),e}},G1e=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.ProfileType=i,this.ProfileName=r,this.Position=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new G1e(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.ProfileType),e.push(this.ProfileName),e.push(this.Position),e}},V1e=class{constructor(e,t,i){this.expressID=e,this.type=t,this.EdgeList=i}static FromTape(e,t,i){let r=0,n=i[r++];return new V1e(e,t,n)}ToTape(){let e=[];return e.push(this.EdgeList),e}},z1e=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.BasisSurface=i,this.ReferenceCurve=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new z1e(e,t,n,s)}ToTape(){let e=[];return e.push(this.BasisSurface),e.push(this.ReferenceCurve),e}},j1e=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.Identification=o,this.LifeCyclePhase=l,this.PredefinedType=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new j1e(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.Identification),e.push(this.LifeCyclePhase),e.push(this.PredefinedType),e}},W1e=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.OperationType=a,this.PanelPosition=o,this.FrameDepth=l,this.FrameThickness=h,this.ShapeAspectStyle=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new W1e(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.OperationType),e.push(this.PanelPosition),e.push(this.FrameDepth),e.push(this.FrameThickness),e.push(this.ShapeAspectStyle),e}},q1e=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.Identification=o,this.PredefinedType=l,this.Status=h,this.LongDescription=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new q1e(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.Identification),e.push(this.PredefinedType),e.push(this.Status),e.push(this.LongDescription),e}},Y1e=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.Identification=i,this.FamilyName=r,this.GivenName=n,this.MiddleNames=s,this.PrefixTitles=a,this.SuffixTitles=o,this.Roles=l,this.Addresses=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new Y1e(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.Identification),e.push(this.FamilyName),e.push(this.GivenName),e.push(this.MiddleNames),e.push(this.PrefixTitles),e.push(this.SuffixTitles),e.push(this.Roles),e.push(this.Addresses),e}},X1e=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.ThePerson=i,this.TheOrganization=r,this.Roles=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new X1e(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.ThePerson),e.push(this.TheOrganization),e.push(this.Roles),e}},$1e=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.HasQuantities=n,this.Discrimination=s,this.Quality=a,this.Usage=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new $1e(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.HasQuantities),e.push(this.Discrimination),e.push(this.Quality),e.push(this.Usage),e}},Z1e=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.Name=i,this.Description=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new Z1e(e,t,n,s)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e}},K1e=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.Unit=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new K1e(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.Unit),e}},J1e=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u,this.ConstructionType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new J1e(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e.push(this.ConstructionType),e}},Q1e=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new Q1e(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},ebe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new ebe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},tbe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new tbe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},rbe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new rbe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},ibe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new ibe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},nbe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.RepeatS=i,this.RepeatT=r,this.Mode=n,this.TextureTransform=s,this.Parameter=a,this.Width=o,this.Height=l,this.ColourComponents=h,this.Pixel=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new nbe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.RepeatS),e.push(this.RepeatT),e.push(this.Mode),e.push(this.TextureTransform),e.push(this.Parameter),e.push(this.Width),e.push(this.Height),e.push(this.ColourComponents),e.push(this.Pixel),e}},sbe=class{constructor(e,t,i){this.expressID=e,this.type=t,this.Location=i}static FromTape(e,t,i){let r=0,n=i[r++];return new sbe(e,t,n)}ToTape(){let e=[];return e.push(this.Location),e}},abe=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.SizeInX=i,this.SizeInY=r,this.Placement=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new abe(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.SizeInX),e.push(this.SizeInY),e.push(this.Placement),e}},obe=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.SizeInX=i,this.SizeInY=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new obe(e,t,n,s)}ToTape(){let e=[];return e.push(this.SizeInX),e.push(this.SizeInY),e}},lbe=class{constructor(e,t,i){this.expressID=e,this.type=t,this.Position=i}static FromTape(e,t,i){let r=0,n=i[r++];return new lbe(e,t,n)}ToTape(){let e=[];return e.push(this.Position),e}},cbe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new cbe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},ube=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new ube(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},hbe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new hbe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},pbe=class{constructor(e,t){this.expressID=e,this.type=t}static FromTape(e,t,i){return new pbe(e,t)}ToTape(){return[]}},dbe=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.BasisCurve=i,this.PointParameter=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new dbe(e,t,n,s)}ToTape(){let e=[];return e.push(this.BasisCurve),e.push(this.PointParameter),e}},fbe=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.BasisSurface=i,this.PointParameterU=r,this.PointParameterV=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new fbe(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.BasisSurface),e.push(this.PointParameterU),e.push(this.PointParameterV),e}},mbe=class{constructor(e,t,i){this.expressID=e,this.type=t,this.Polygon=i}static FromTape(e,t,i){let r=0,n=i[r++];return new mbe(e,t,n)}ToTape(){let e=[];return e.push(this.Polygon),e}},gbe=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.BaseSurface=i,this.AgreementFlag=r,this.Position=n,this.PolygonalBoundary=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new gbe(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.BaseSurface),e.push(this.AgreementFlag),e.push(this.Position),e.push(this.PolygonalBoundary),e}},vbe=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.Coordinates=i,this.Closed=r,this.Faces=n,this.PnIndex=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new vbe(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.Coordinates),e.push(this.Closed),e.push(this.Faces),e.push(this.PnIndex),e}},ybe=class{constructor(e,t,i){this.expressID=e,this.type=t,this.Points=i}static FromTape(e,t,i){let r=0,n=i[r++];return new ybe(e,t,n)}ToTape(){let e=[];return e.push(this.Points),e}},Tbe=class{constructor(e,t,i,r,n,s,a,o,l){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++];return new Tbe(e,t,n,s,a,o,l,h,u)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e}},Ebe=class{constructor(e,t,i,r,n,s,a,o,l){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++];return new Ebe(e,t,n,s,a,o,l,h,u)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e}},bbe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.Purpose=i,this.Description=r,this.UserDefinedPurpose=n,this.InternalLocation=s,this.AddressLines=a,this.PostalBox=o,this.Town=l,this.Region=h,this.PostalCode=u,this.Country=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new bbe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.Purpose),e.push(this.Description),e.push(this.UserDefinedPurpose),e.push(this.InternalLocation),e.push(this.AddressLines),e.push(this.PostalBox),e.push(this.Town),e.push(this.Region),e.push(this.PostalCode),e.push(this.Country),e}},xbe=class{constructor(e,t,i){this.expressID=e,this.type=t,this.Name=i}static FromTape(e,t,i){let r=0,n=i[r++];return new xbe(e,t,n)}ToTape(){let e=[];return e.push(this.Name),e}},Ibe=class{constructor(e,t,i){this.expressID=e,this.type=t,this.Name=i}static FromTape(e,t,i){let r=0,n=i[r++];return new Ibe(e,t,n)}ToTape(){let e=[];return e.push(this.Name),e}},_be=class{constructor(e,t,i){this.expressID=e,this.type=t,this.Name=i}static FromTape(e,t,i){let r=0,n=i[r++];return new _be(e,t,n)}ToTape(){let e=[];return e.push(this.Name),e}},Sbe=class{constructor(e,t){this.expressID=e,this.type=t}static FromTape(e,t,i){return new Sbe(e,t)}ToTape(){return[]}},wbe=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new wbe(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e}},Rbe=class{constructor(e,t,i){this.expressID=e,this.type=t,this.Name=i}static FromTape(e,t,i){let r=0,n=i[r++];return new Rbe(e,t,n)}ToTape(){let e=[];return e.push(this.Name),e}},Mbe=class{constructor(e,t){this.expressID=e,this.type=t}static FromTape(e,t,i){return new Mbe(e,t)}ToTape(){return[]}},Dbe=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.AssignedItems=n,this.Identifier=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new Dbe(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.AssignedItems),e.push(this.Identifier),e}},Cbe=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.AssignedItems=n,this.Identifier=s,this.LayerOn=a,this.LayerFrozen=o,this.LayerBlocked=l,this.LayerStyles=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new Cbe(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.AssignedItems),e.push(this.Identifier),e.push(this.LayerOn),e.push(this.LayerFrozen),e.push(this.LayerBlocked),e.push(this.LayerStyles),e}},Abe=class{constructor(e,t,i){this.expressID=e,this.type=t,this.Name=i}static FromTape(e,t,i){let r=0,n=i[r++];return new Abe(e,t,n)}ToTape(){let e=[];return e.push(this.Name),e}},Obe=class{constructor(e,t,i){this.expressID=e,this.type=t,this.Styles=i}static FromTape(e,t,i){let r=0,n=i[r++];return new Obe(e,t,n)}ToTape(){let e=[];return e.push(this.Styles),e}},Pbe=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.Identification=o,this.LongDescription=l,this.PredefinedType=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new Pbe(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.Identification),e.push(this.LongDescription),e.push(this.PredefinedType),e}},Nbe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.Identification=l,this.LongDescription=h,this.ProcessType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new Nbe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.Identification),e.push(this.LongDescription),e.push(this.ProcessType),e.push(this.PredefinedType),e}},Lbe=class{constructor(e,t,i,r,n,s,a,o,l){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.Identification=o,this.LongDescription=l}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++];return new Lbe(e,t,n,s,a,o,l,h,u)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.Identification),e.push(this.LongDescription),e}},Fbe=class{constructor(e,t,i,r,n,s,a,o,l){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++];return new Fbe(e,t,n,s,a,o,l,h,u)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e}},Hbe=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.Representations=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new Hbe(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.Representations),e}},Ube=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.Representations=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new Ube(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.Representations),e}},Bbe=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.ProfileType=i,this.ProfileName=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new Bbe(e,t,n,s)}ToTape(){let e=[];return e.push(this.ProfileType),e.push(this.ProfileName),e}},kbe=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.Properties=n,this.ProfileDefinition=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new kbe(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.Properties),e.push(this.ProfileDefinition),e}},Gbe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.LongName=o,this.Phase=l,this.RepresentationContexts=h,this.UnitsInContext=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Gbe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.LongName),e.push(this.Phase),e.push(this.RepresentationContexts),e.push(this.UnitsInContext),e}},Vbe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.LongName=o,this.Phase=l,this.RepresentationContexts=h,this.UnitsInContext=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Vbe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.LongName),e.push(this.Phase),e.push(this.RepresentationContexts),e.push(this.UnitsInContext),e}},zbe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.Identification=o,this.PredefinedType=l,this.Status=h,this.LongDescription=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new zbe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.Identification),e.push(this.PredefinedType),e.push(this.Status),e.push(this.LongDescription),e}},jbe=class{constructor(e,t,i,r,n,s,a,o,l){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.GeodeticDatum=n,this.VerticalDatum=s,this.MapProjection=a,this.MapZone=o,this.MapUnit=l}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++];return new jbe(e,t,n,s,a,o,l,h,u)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.GeodeticDatum),e.push(this.VerticalDatum),e.push(this.MapProjection),e.push(this.MapZone),e.push(this.MapUnit),e}},Wbe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Wbe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},qbe=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.Name=i,this.Description=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new qbe(e,t,n,s)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e}},Ybe=class{constructor(e,t){this.expressID=e,this.type=t}static FromTape(e,t,i){return new Ybe(e,t)}ToTape(){return[]}},Xbe=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.UpperBoundValue=n,this.LowerBoundValue=s,this.Unit=a,this.SetPointValue=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new Xbe(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.UpperBoundValue),e.push(this.LowerBoundValue),e.push(this.Unit),e.push(this.SetPointValue),e}},$be=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new $be(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e}},Zbe=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.DependingProperty=n,this.DependantProperty=s,this.Expression=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new Zbe(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.DependingProperty),e.push(this.DependantProperty),e.push(this.Expression),e}},Kbe=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.EnumerationValues=n,this.EnumerationReference=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new Kbe(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.EnumerationValues),e.push(this.EnumerationReference),e}},Jbe=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.Name=i,this.EnumerationValues=r,this.Unit=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new Jbe(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.Name),e.push(this.EnumerationValues),e.push(this.Unit),e}},Qbe=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.ListValues=n,this.Unit=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new Qbe(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.ListValues),e.push(this.Unit),e}},exe=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.UsageName=n,this.PropertyReference=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new exe(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.UsageName),e.push(this.PropertyReference),e}},txe=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.HasProperties=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new txe(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.HasProperties),e}},rxe=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new rxe(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e}},ixe=class{constructor(e,t,i,r,n,s,a,o,l){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.TemplateType=a,this.ApplicableEntity=o,this.HasPropertyTemplates=l}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++];return new ixe(e,t,n,s,a,o,l,h,u)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.TemplateType),e.push(this.ApplicableEntity),e.push(this.HasPropertyTemplates),e}},nxe=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.NominalValue=n,this.Unit=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new nxe(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.NominalValue),e.push(this.Unit),e}},sxe=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.DefiningValues=n,this.DefinedValues=s,this.Expression=a,this.DefiningUnit=o,this.DefinedUnit=l,this.CurveInterpolation=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new sxe(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.DefiningValues),e.push(this.DefinedValues),e.push(this.Expression),e.push(this.DefiningUnit),e.push(this.DefinedUnit),e.push(this.CurveInterpolation),e}},axe=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new axe(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e}},oxe=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new oxe(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e}},lxe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new lxe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},cxe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new cxe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},uxe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new uxe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},hxe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new hxe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},pxe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.ProxyType=h,this.Tag=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new pxe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.ProxyType),e.push(this.Tag),e}},dxe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new dxe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},fxe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new fxe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},mxe=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.Unit=n,this.AreaValue=s,this.Formula=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new mxe(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.Unit),e.push(this.AreaValue),e.push(this.Formula),e}},gxe=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.Unit=n,this.CountValue=s,this.Formula=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new gxe(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.Unit),e.push(this.CountValue),e.push(this.Formula),e}},vxe=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.Unit=n,this.LengthValue=s,this.Formula=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new vxe(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.Unit),e.push(this.LengthValue),e.push(this.Formula),e}},yxe=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new yxe(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e}},Txe=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.Unit=n,this.TimeValue=s,this.Formula=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new Txe(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.Unit),e.push(this.TimeValue),e.push(this.Formula),e}},Exe=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.Unit=n,this.VolumeValue=s,this.Formula=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new Exe(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.Unit),e.push(this.VolumeValue),e.push(this.Formula),e}},bxe=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.Unit=n,this.WeightValue=s,this.Formula=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new bxe(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.Unit),e.push(this.WeightValue),e.push(this.Formula),e}},xxe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new xxe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},Ixe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new Ixe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},_xe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new _xe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},Sxe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Sxe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},wxe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new wxe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},Rxe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new Rxe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},Mxe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.Degree=i,this.ControlPointsList=r,this.CurveForm=n,this.ClosedCurve=s,this.SelfIntersect=a,this.KnotMultiplicities=o,this.Knots=l,this.KnotSpec=h,this.WeightsData=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Mxe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.Degree),e.push(this.ControlPointsList),e.push(this.CurveForm),e.push(this.ClosedCurve),e.push(this.SelfIntersect),e.push(this.KnotMultiplicities),e.push(this.Knots),e.push(this.KnotSpec),e.push(this.WeightsData),e}},Dxe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d,f){this.expressID=e,this.type=t,this.UDegree=i,this.VDegree=r,this.ControlPointsList=n,this.SurfaceForm=s,this.UClosed=a,this.VClosed=o,this.SelfIntersect=l,this.UMultiplicities=h,this.VMultiplicities=u,this.UKnots=c,this.VKnots=p,this.KnotSpec=d,this.WeightsData=f}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++],g=i[r++];return new Dxe(e,t,n,s,a,o,l,h,u,c,p,d,f,m,g)}ToTape(){let e=[];return e.push(this.UDegree),e.push(this.VDegree),e.push(this.ControlPointsList),e.push(this.SurfaceForm),e.push(this.UClosed),e.push(this.VClosed),e.push(this.SelfIntersect),e.push(this.UMultiplicities),e.push(this.VMultiplicities),e.push(this.UKnots),e.push(this.VKnots),e.push(this.KnotSpec),e.push(this.WeightsData),e}},Cxe=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.ProfileType=i,this.ProfileName=r,this.Position=n,this.XDim=s,this.YDim=a,this.WallThickness=o,this.InnerFilletRadius=l,this.OuterFilletRadius=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new Cxe(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.ProfileType),e.push(this.ProfileName),e.push(this.Position),e.push(this.XDim),e.push(this.YDim),e.push(this.WallThickness),e.push(this.InnerFilletRadius),e.push(this.OuterFilletRadius),e}},Axe=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.ProfileType=i,this.ProfileName=r,this.Position=n,this.XDim=s,this.YDim=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new Axe(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.ProfileType),e.push(this.ProfileName),e.push(this.Position),e.push(this.XDim),e.push(this.YDim),e}},Oxe=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.Position=i,this.XLength=r,this.YLength=n,this.Height=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new Oxe(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.Position),e.push(this.XLength),e.push(this.YLength),e.push(this.Height),e}},Pxe=class{constructor(e,t,i,r,n,s,a,o,l){this.expressID=e,this.type=t,this.BasisSurface=i,this.U1=r,this.V1=n,this.U2=s,this.V2=a,this.Usense=o,this.Vsense=l}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++];return new Pxe(e,t,n,s,a,o,l,h,u)}ToTape(){let e=[];return e.push(this.BasisSurface),e.push(this.U1),e.push(this.V1),e.push(this.U2),e.push(this.V2),e.push(this.Usense),e.push(this.Vsense),e}},Nxe=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.RecurrenceType=i,this.DayComponent=r,this.WeekdayComponent=n,this.MonthComponent=s,this.Position=a,this.Interval=o,this.Occurrences=l,this.TimePeriods=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new Nxe(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.RecurrenceType),e.push(this.DayComponent),e.push(this.WeekdayComponent),e.push(this.MonthComponent),e.push(this.Position),e.push(this.Interval),e.push(this.Occurrences),e.push(this.TimePeriods),e}},Lxe=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.TypeIdentifier=i,this.AttributeIdentifier=r,this.InstanceName=n,this.ListPositions=s,this.InnerReference=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new Lxe(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.TypeIdentifier),e.push(this.AttributeIdentifier),e.push(this.InstanceName),e.push(this.ListPositions),e.push(this.InnerReference),e}},Fxe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.PredefinedType=h,this.RestartDistance=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Fxe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.PredefinedType),e.push(this.RestartDistance),e}},Hxe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.StartTime=n,this.EndTime=s,this.TimeSeriesDataType=a,this.DataOrigin=o,this.UserDefinedDataOrigin=l,this.Unit=h,this.TimeStep=u,this.Values=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new Hxe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.StartTime),e.push(this.EndTime),e.push(this.TimeSeriesDataType),e.push(this.DataOrigin),e.push(this.UserDefinedDataOrigin),e.push(this.Unit),e.push(this.TimeStep),e.push(this.Values),e}},Uxe=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.TotalCrossSectionArea=i,this.SteelGrade=r,this.BarSurface=n,this.EffectiveDepth=s,this.NominalBarDiameter=a,this.BarCount=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new Uxe(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.TotalCrossSectionArea),e.push(this.SteelGrade),e.push(this.BarSurface),e.push(this.EffectiveDepth),e.push(this.NominalBarDiameter),e.push(this.BarCount),e}},Bxe=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.DefinitionType=a,this.ReinforcementSectionDefinitions=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new Bxe(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.DefinitionType),e.push(this.ReinforcementSectionDefinitions),e}},kxe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d,f,m){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.SteelGrade=u,this.NominalDiameter=c,this.CrossSectionArea=p,this.BarLength=d,this.PredefinedType=f,this.BarSurface=m}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++],g=i[r++],y=i[r++];return new kxe(e,t,n,s,a,o,l,h,u,c,p,d,f,m,g,y)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.SteelGrade),e.push(this.NominalDiameter),e.push(this.CrossSectionArea),e.push(this.BarLength),e.push(this.PredefinedType),e.push(this.BarSurface),e}},Gxe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d,f,m,g,y){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c,this.NominalDiameter=p,this.CrossSectionArea=d,this.BarLength=f,this.BarSurface=m,this.BendingShapeCode=g,this.BendingParameters=y}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++],g=i[r++],y=i[r++],v=i[r++],T=i[r++];return new Gxe(e,t,n,s,a,o,l,h,u,c,p,d,f,m,g,y,v,T)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e.push(this.NominalDiameter),e.push(this.CrossSectionArea),e.push(this.BarLength),e.push(this.BarSurface),e.push(this.BendingShapeCode),e.push(this.BendingParameters),e}},Vxe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.SteelGrade=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Vxe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.SteelGrade),e}},zxe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new zxe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e}},jxe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d,f,m,g,y,v,T){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.SteelGrade=u,this.MeshLength=c,this.MeshWidth=p,this.LongitudinalBarNominalDiameter=d,this.TransverseBarNominalDiameter=f,this.LongitudinalBarCrossSectionArea=m,this.TransverseBarCrossSectionArea=g,this.LongitudinalBarSpacing=y,this.TransverseBarSpacing=v,this.PredefinedType=T}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++],g=i[r++],y=i[r++],v=i[r++],T=i[r++],x=i[r++],b=i[r++];return new jxe(e,t,n,s,a,o,l,h,u,c,p,d,f,m,g,y,v,T,x,b)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.SteelGrade),e.push(this.MeshLength),e.push(this.MeshWidth),e.push(this.LongitudinalBarNominalDiameter),e.push(this.TransverseBarNominalDiameter),e.push(this.LongitudinalBarCrossSectionArea),e.push(this.TransverseBarCrossSectionArea),e.push(this.LongitudinalBarSpacing),e.push(this.TransverseBarSpacing),e.push(this.PredefinedType),e}},Wxe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d,f,m,g,y,v,T,x,b){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c,this.MeshLength=p,this.MeshWidth=d,this.LongitudinalBarNominalDiameter=f,this.TransverseBarNominalDiameter=m,this.LongitudinalBarCrossSectionArea=g,this.TransverseBarCrossSectionArea=y,this.LongitudinalBarSpacing=v,this.TransverseBarSpacing=T,this.BendingShapeCode=x,this.BendingParameters=b}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++],g=i[r++],y=i[r++],v=i[r++],T=i[r++],x=i[r++],b=i[r++],_=i[r++],E=i[r++];return new Wxe(e,t,n,s,a,o,l,h,u,c,p,d,f,m,g,y,v,T,x,b,_,E)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e.push(this.MeshLength),e.push(this.MeshWidth),e.push(this.LongitudinalBarNominalDiameter),e.push(this.TransverseBarNominalDiameter),e.push(this.LongitudinalBarCrossSectionArea),e.push(this.TransverseBarCrossSectionArea),e.push(this.LongitudinalBarSpacing),e.push(this.TransverseBarSpacing),e.push(this.BendingShapeCode),e.push(this.BendingParameters),e}},qxe=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.RelatingObject=a,this.RelatedObjects=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new qxe(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.RelatingObject),e.push(this.RelatedObjects),e}},Yxe=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.RelatedObjects=a,this.RelatedObjectsType=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new Yxe(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.RelatedObjects),e.push(this.RelatedObjectsType),e}},Xxe=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.RelatedObjects=a,this.RelatedObjectsType=o,this.RelatingActor=l,this.ActingRole=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new Xxe(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.RelatedObjects),e.push(this.RelatedObjectsType),e.push(this.RelatingActor),e.push(this.ActingRole),e}},$xe=class{constructor(e,t,i,r,n,s,a,o,l){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.RelatedObjects=a,this.RelatedObjectsType=o,this.RelatingControl=l}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++];return new $xe(e,t,n,s,a,o,l,h,u)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.RelatedObjects),e.push(this.RelatedObjectsType),e.push(this.RelatingControl),e}},Zxe=class{constructor(e,t,i,r,n,s,a,o,l){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.RelatedObjects=a,this.RelatedObjectsType=o,this.RelatingGroup=l}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++];return new Zxe(e,t,n,s,a,o,l,h,u)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.RelatedObjects),e.push(this.RelatedObjectsType),e.push(this.RelatingGroup),e}},Kxe=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.RelatedObjects=a,this.RelatedObjectsType=o,this.RelatingGroup=l,this.Factor=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new Kxe(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.RelatedObjects),e.push(this.RelatedObjectsType),e.push(this.RelatingGroup),e.push(this.Factor),e}},Jxe=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.RelatedObjects=a,this.RelatedObjectsType=o,this.RelatingProcess=l,this.QuantityInProcess=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new Jxe(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.RelatedObjects),e.push(this.RelatedObjectsType),e.push(this.RelatingProcess),e.push(this.QuantityInProcess),e}},Qxe=class{constructor(e,t,i,r,n,s,a,o,l){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.RelatedObjects=a,this.RelatedObjectsType=o,this.RelatingProduct=l}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++];return new Qxe(e,t,n,s,a,o,l,h,u)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.RelatedObjects),e.push(this.RelatedObjectsType),e.push(this.RelatingProduct),e}},eIe=class{constructor(e,t,i,r,n,s,a,o,l){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.RelatedObjects=a,this.RelatedObjectsType=o,this.RelatingResource=l}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++];return new eIe(e,t,n,s,a,o,l,h,u)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.RelatedObjects),e.push(this.RelatedObjectsType),e.push(this.RelatingResource),e}},tIe=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.RelatedObjects=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new tIe(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.RelatedObjects),e}},rIe=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.RelatedObjects=a,this.RelatingApproval=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new rIe(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.RelatedObjects),e.push(this.RelatingApproval),e}},iIe=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.RelatedObjects=a,this.RelatingClassification=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new iIe(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.RelatedObjects),e.push(this.RelatingClassification),e}},nIe=class{constructor(e,t,i,r,n,s,a,o,l){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.RelatedObjects=a,this.Intent=o,this.RelatingConstraint=l}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++];return new nIe(e,t,n,s,a,o,l,h,u)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.RelatedObjects),e.push(this.Intent),e.push(this.RelatingConstraint),e}},sIe=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.RelatedObjects=a,this.RelatingDocument=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new sIe(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.RelatedObjects),e.push(this.RelatingDocument),e}},aIe=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.RelatedObjects=a,this.RelatingLibrary=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new aIe(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.RelatedObjects),e.push(this.RelatingLibrary),e}},oIe=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.RelatedObjects=a,this.RelatingMaterial=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new oIe(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.RelatedObjects),e.push(this.RelatingMaterial),e}},lIe=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new lIe(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e}},cIe=class{constructor(e,t,i,r,n,s,a,o,l){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ConnectionGeometry=a,this.RelatingElement=o,this.RelatedElement=l}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++];return new cIe(e,t,n,s,a,o,l,h,u)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ConnectionGeometry),e.push(this.RelatingElement),e.push(this.RelatedElement),e}},uIe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ConnectionGeometry=a,this.RelatingElement=o,this.RelatedElement=l,this.RelatingPriorities=h,this.RelatedPriorities=u,this.RelatedConnectionType=c,this.RelatingConnectionType=p}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++];return new uIe(e,t,n,s,a,o,l,h,u,c,p,d,f)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ConnectionGeometry),e.push(this.RelatingElement),e.push(this.RelatedElement),e.push(this.RelatingPriorities),e.push(this.RelatedPriorities),e.push(this.RelatedConnectionType),e.push(this.RelatingConnectionType),e}},hIe=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.RelatingPort=a,this.RelatedElement=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new hIe(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.RelatingPort),e.push(this.RelatedElement),e}},pIe=class{constructor(e,t,i,r,n,s,a,o,l){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.RelatingPort=a,this.RelatedPort=o,this.RealizingElement=l}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++];return new pIe(e,t,n,s,a,o,l,h,u)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.RelatingPort),e.push(this.RelatedPort),e.push(this.RealizingElement),e}},dIe=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.RelatingElement=a,this.RelatedStructuralActivity=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new dIe(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.RelatingElement),e.push(this.RelatedStructuralActivity),e}},fIe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.RelatingStructuralMember=a,this.RelatedStructuralConnection=o,this.AppliedCondition=l,this.AdditionalConditions=h,this.SupportedLength=u,this.ConditionCoordinateSystem=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new fIe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.RelatingStructuralMember),e.push(this.RelatedStructuralConnection),e.push(this.AppliedCondition),e.push(this.AdditionalConditions),e.push(this.SupportedLength),e.push(this.ConditionCoordinateSystem),e}},mIe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.RelatingStructuralMember=a,this.RelatedStructuralConnection=o,this.AppliedCondition=l,this.AdditionalConditions=h,this.SupportedLength=u,this.ConditionCoordinateSystem=c,this.ConnectionConstraint=p}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++];return new mIe(e,t,n,s,a,o,l,h,u,c,p,d,f)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.RelatingStructuralMember),e.push(this.RelatedStructuralConnection),e.push(this.AppliedCondition),e.push(this.AdditionalConditions),e.push(this.SupportedLength),e.push(this.ConditionCoordinateSystem),e.push(this.ConnectionConstraint),e}},gIe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ConnectionGeometry=a,this.RelatingElement=o,this.RelatedElement=l,this.RealizingElements=h,this.ConnectionType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new gIe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ConnectionGeometry),e.push(this.RelatingElement),e.push(this.RelatedElement),e.push(this.RealizingElements),e.push(this.ConnectionType),e}},vIe=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.RelatedElements=a,this.RelatingStructure=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new vIe(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.RelatedElements),e.push(this.RelatingStructure),e}},yIe=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.RelatingBuildingElement=a,this.RelatedCoverings=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new yIe(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.RelatingBuildingElement),e.push(this.RelatedCoverings),e}},TIe=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.RelatingSpace=a,this.RelatedCoverings=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new TIe(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.RelatingSpace),e.push(this.RelatedCoverings),e}},EIe=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.RelatingContext=a,this.RelatedDefinitions=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new EIe(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.RelatingContext),e.push(this.RelatedDefinitions),e}},bIe=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new bIe(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e}},xIe=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new xIe(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e}},IIe=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.RelatedObjects=a,this.RelatingObject=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new IIe(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.RelatedObjects),e.push(this.RelatingObject),e}},_Ie=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.RelatedObjects=a,this.RelatingPropertyDefinition=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new _Ie(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.RelatedObjects),e.push(this.RelatingPropertyDefinition),e}},SIe=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.RelatedPropertySets=a,this.RelatingTemplate=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new SIe(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.RelatedPropertySets),e.push(this.RelatingTemplate),e}},wIe=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.RelatedObjects=a,this.RelatingType=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new wIe(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.RelatedObjects),e.push(this.RelatingType),e}},RIe=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.RelatingOpeningElement=a,this.RelatedBuildingElement=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new RIe(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.RelatingOpeningElement),e.push(this.RelatedBuildingElement),e}},MIe=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.RelatedControlElements=a,this.RelatingFlowElement=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new MIe(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.RelatedControlElements),e.push(this.RelatingFlowElement),e}},DIe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.RelatingElement=a,this.RelatedElement=o,this.InterferenceGeometry=l,this.InterferenceType=h,this.ImpliedOrder=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new DIe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.RelatingElement),e.push(this.RelatedElement),e.push(this.InterferenceGeometry),e.push(this.InterferenceType),e.push(this.ImpliedOrder),e}},CIe=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.RelatingObject=a,this.RelatedObjects=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new CIe(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.RelatingObject),e.push(this.RelatedObjects),e}},AIe=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.RelatingPositioningElement=a,this.RelatedProducts=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new AIe(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.RelatingPositioningElement),e.push(this.RelatedProducts),e}},OIe=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.RelatingElement=a,this.RelatedFeatureElement=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new OIe(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.RelatingElement),e.push(this.RelatedFeatureElement),e}},PIe=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.RelatedElements=a,this.RelatingStructure=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new PIe(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.RelatedElements),e.push(this.RelatingStructure),e}},NIe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.RelatingProcess=a,this.RelatedProcess=o,this.TimeLag=l,this.SequenceType=h,this.UserDefinedSequenceType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new NIe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.RelatingProcess),e.push(this.RelatedProcess),e.push(this.TimeLag),e.push(this.SequenceType),e.push(this.UserDefinedSequenceType),e}},LIe=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.RelatingSystem=a,this.RelatedBuildings=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new LIe(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.RelatingSystem),e.push(this.RelatedBuildings),e}},FIe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.RelatingSpace=a,this.RelatedBuildingElement=o,this.ConnectionGeometry=l,this.PhysicalOrVirtualBoundary=h,this.InternalOrExternalBoundary=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new FIe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.RelatingSpace),e.push(this.RelatedBuildingElement),e.push(this.ConnectionGeometry),e.push(this.PhysicalOrVirtualBoundary),e.push(this.InternalOrExternalBoundary),e}},HIe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.RelatingSpace=a,this.RelatedBuildingElement=o,this.ConnectionGeometry=l,this.PhysicalOrVirtualBoundary=h,this.InternalOrExternalBoundary=u,this.ParentBoundary=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new HIe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.RelatingSpace),e.push(this.RelatedBuildingElement),e.push(this.ConnectionGeometry),e.push(this.PhysicalOrVirtualBoundary),e.push(this.InternalOrExternalBoundary),e.push(this.ParentBoundary),e}},UIe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.RelatingSpace=a,this.RelatedBuildingElement=o,this.ConnectionGeometry=l,this.PhysicalOrVirtualBoundary=h,this.InternalOrExternalBoundary=u,this.ParentBoundary=c,this.CorrespondingBoundary=p}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++];return new UIe(e,t,n,s,a,o,l,h,u,c,p,d,f)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.RelatingSpace),e.push(this.RelatedBuildingElement),e.push(this.ConnectionGeometry),e.push(this.PhysicalOrVirtualBoundary),e.push(this.InternalOrExternalBoundary),e.push(this.ParentBoundary),e.push(this.CorrespondingBoundary),e}},BIe=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.RelatingBuildingElement=a,this.RelatedOpeningElement=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new BIe(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.RelatingBuildingElement),e.push(this.RelatedOpeningElement),e}},kIe=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new kIe(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e}},GIe=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.Transition=i,this.SameSense=r,this.ParentCurve=n,this.ParamLength=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new GIe(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.Transition),e.push(this.SameSense),e.push(this.ParentCurve),e.push(this.ParamLength),e}},VIe=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.ContextOfItems=i,this.RepresentationIdentifier=r,this.RepresentationType=n,this.Items=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new VIe(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.ContextOfItems),e.push(this.RepresentationIdentifier),e.push(this.RepresentationType),e.push(this.Items),e}},zIe=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.ContextIdentifier=i,this.ContextType=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new zIe(e,t,n,s)}ToTape(){let e=[];return e.push(this.ContextIdentifier),e.push(this.ContextType),e}},jIe=class{constructor(e,t){this.expressID=e,this.type=t}static FromTape(e,t,i){return new jIe(e,t)}ToTape(){return[]}},WIe=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.MappingOrigin=i,this.MappedRepresentation=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new WIe(e,t,n,s)}ToTape(){let e=[];return e.push(this.MappingOrigin),e.push(this.MappedRepresentation),e}},qIe=class{constructor(e,t,i,r,n,s,a,o,l){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.Identification=o,this.LongDescription=l}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++];return new qIe(e,t,n,s,a,o,l,h,u)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.Identification),e.push(this.LongDescription),e}},YIe=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.RelatedResourceObjects=n,this.RelatingApproval=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new YIe(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.RelatedResourceObjects),e.push(this.RelatingApproval),e}},XIe=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.RelatingConstraint=n,this.RelatedResourceObjects=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new XIe(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.RelatingConstraint),e.push(this.RelatedResourceObjects),e}},$Ie=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.Name=i,this.Description=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new $Ie(e,t,n,s)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e}},ZIe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d,f,m,g,y,v,T){this.expressID=e,this.type=t,this.Name=i,this.DataOrigin=r,this.UserDefinedDataOrigin=n,this.ScheduleWork=s,this.ScheduleUsage=a,this.ScheduleStart=o,this.ScheduleFinish=l,this.ScheduleContour=h,this.LevelingDelay=u,this.IsOverAllocated=c,this.StatusTime=p,this.ActualWork=d,this.ActualUsage=f,this.ActualStart=m,this.ActualFinish=g,this.RemainingWork=y,this.RemainingUsage=v,this.Completion=T}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++],g=i[r++],y=i[r++],v=i[r++],T=i[r++],x=i[r++],b=i[r++];return new ZIe(e,t,n,s,a,o,l,h,u,c,p,d,f,m,g,y,v,T,x,b)}ToTape(){let e=[];return e.push(this.Name),e.push(this.DataOrigin),e.push(this.UserDefinedDataOrigin),e.push(this.ScheduleWork),e.push(this.ScheduleUsage),e.push(this.ScheduleStart),e.push(this.ScheduleFinish),e.push(this.ScheduleContour),e.push(this.LevelingDelay),e.push(this.IsOverAllocated),e.push(this.StatusTime),e.push(this.ActualWork),e.push(this.ActualUsage),e.push(this.ActualStart),e.push(this.ActualFinish),e.push(this.RemainingWork),e.push(this.RemainingUsage),e.push(this.Completion),e}},KIe=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.SweptArea=i,this.Position=r,this.Axis=n,this.Angle=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new KIe(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.SweptArea),e.push(this.Position),e.push(this.Axis),e.push(this.Angle),e}},JIe=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.SweptArea=i,this.Position=r,this.Axis=n,this.Angle=s,this.EndSweptArea=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new JIe(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.SweptArea),e.push(this.Position),e.push(this.Axis),e.push(this.Angle),e.push(this.EndSweptArea),e}},QIe=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.Position=i,this.Height=r,this.BottomRadius=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new QIe(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.Position),e.push(this.Height),e.push(this.BottomRadius),e}},e_e=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.Position=i,this.Height=r,this.Radius=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new e_e(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.Position),e.push(this.Height),e.push(this.Radius),e}},t_e=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new t_e(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},r_e=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new r_e(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},i_e=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new i_e(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e}},n_e=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.ProfileType=i,this.ProfileName=r,this.Position=n,this.XDim=s,this.YDim=a,this.RoundingRadius=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new n_e(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.ProfileType),e.push(this.ProfileName),e.push(this.Position),e.push(this.XDim),e.push(this.YDim),e.push(this.RoundingRadius),e}},s_e=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.Dimensions=i,this.UnitType=r,this.Prefix=n,this.Name=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new s_e(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.Dimensions),e.push(this.UnitType),e.push(this.Prefix),e.push(this.Name),e}},a_e=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new a_e(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},o_e=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new o_e(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},l_e=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.Name=i,this.DataOrigin=r,this.UserDefinedDataOrigin=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new l_e(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.Name),e.push(this.DataOrigin),e.push(this.UserDefinedDataOrigin),e}},c_e=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.Curve3D=i,this.AssociatedGeometry=r,this.MasterRepresentation=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new c_e(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.Curve3D),e.push(this.AssociatedGeometry),e.push(this.MasterRepresentation),e}},u_e=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.SectionType=i,this.StartProfile=r,this.EndProfile=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new u_e(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.SectionType),e.push(this.StartProfile),e.push(this.EndProfile),e}},h_e=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.LongitudinalStartPosition=i,this.LongitudinalEndPosition=r,this.TransversePosition=n,this.ReinforcementRole=s,this.SectionDefinition=a,this.CrossSectionReinforcementDefinitions=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new h_e(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.LongitudinalStartPosition),e.push(this.LongitudinalEndPosition),e.push(this.TransversePosition),e.push(this.ReinforcementRole),e.push(this.SectionDefinition),e.push(this.CrossSectionReinforcementDefinitions),e}},p_e=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.Directrix=i,this.CrossSections=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new p_e(e,t,n,s)}ToTape(){let e=[];return e.push(this.Directrix),e.push(this.CrossSections),e}},d_e=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.Directrix=i,this.CrossSections=r,this.CrossSectionPositions=n,this.FixedAxisVertical=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new d_e(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.Directrix),e.push(this.CrossSections),e.push(this.CrossSectionPositions),e.push(this.FixedAxisVertical),e}},f_e=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.SpineCurve=i,this.CrossSections=r,this.CrossSectionPositions=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new f_e(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.SpineCurve),e.push(this.CrossSections),e.push(this.CrossSectionPositions),e}},m_e=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new m_e(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},g_e=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new g_e(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},v_e=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new v_e(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},y_e=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new y_e(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},T_e=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.ShapeRepresentations=i,this.Name=r,this.Description=n,this.ProductDefinitional=s,this.PartOfProductDefinitionShape=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new T_e(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.ShapeRepresentations),e.push(this.Name),e.push(this.Description),e.push(this.ProductDefinitional),e.push(this.PartOfProductDefinitionShape),e}},E_e=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.ContextOfItems=i,this.RepresentationIdentifier=r,this.RepresentationType=n,this.Items=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new E_e(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.ContextOfItems),e.push(this.RepresentationIdentifier),e.push(this.RepresentationType),e.push(this.Items),e}},b_e=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.ContextOfItems=i,this.RepresentationIdentifier=r,this.RepresentationType=n,this.Items=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new b_e(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.ContextOfItems),e.push(this.RepresentationIdentifier),e.push(this.RepresentationType),e.push(this.Items),e}},x_e=class{constructor(e,t,i){this.expressID=e,this.type=t,this.SbsmBoundary=i}static FromTape(e,t,i){let r=0,n=i[r++];return new x_e(e,t,n)}ToTape(){let e=[];return e.push(this.SbsmBoundary),e}},I_e=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.Name=i,this.Description=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new I_e(e,t,n,s)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e}},__e=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.TemplateType=a,this.PrimaryMeasureType=o,this.SecondaryMeasureType=l,this.Enumerators=h,this.PrimaryUnit=u,this.SecondaryUnit=c,this.Expression=p,this.AccessState=d}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++];return new __e(e,t,n,s,a,o,l,h,u,c,p,d,f,m)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.TemplateType),e.push(this.PrimaryMeasureType),e.push(this.SecondaryMeasureType),e.push(this.Enumerators),e.push(this.PrimaryUnit),e.push(this.SecondaryUnit),e.push(this.Expression),e.push(this.AccessState),e}},S_e=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d,f,m){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.LongName=h,this.CompositionType=u,this.RefLatitude=c,this.RefLongitude=p,this.RefElevation=d,this.LandTitleNumber=f,this.SiteAddress=m}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++],g=i[r++],y=i[r++];return new S_e(e,t,n,s,a,o,l,h,u,c,p,d,f,m,g,y)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.LongName),e.push(this.CompositionType),e.push(this.RefLatitude),e.push(this.RefLongitude),e.push(this.RefElevation),e.push(this.LandTitleNumber),e.push(this.SiteAddress),e}},w_e=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new w_e(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},R_e=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new R_e(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},M_e=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new M_e(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},D_e=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new D_e(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},C_e=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.Name=i,this.SlippageX=r,this.SlippageY=n,this.SlippageZ=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new C_e(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.Name),e.push(this.SlippageX),e.push(this.SlippageY),e.push(this.SlippageZ),e}},A_e=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new A_e(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},O_e=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new O_e(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},P_e=class{constructor(e,t){this.expressID=e,this.type=t}static FromTape(e,t,i){return new P_e(e,t)}ToTape(){return[]}},N_e=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.LongName=h,this.CompositionType=u,this.PredefinedType=c,this.ElevationWithFlooring=p}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++];return new N_e(e,t,n,s,a,o,l,h,u,c,p,d,f)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.LongName),e.push(this.CompositionType),e.push(this.PredefinedType),e.push(this.ElevationWithFlooring),e}},L_e=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new L_e(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},F_e=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new F_e(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},H_e=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c,this.LongName=p}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++];return new H_e(e,t,n,s,a,o,l,h,u,c,p,d,f)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e.push(this.LongName),e}},U_e=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.LongName=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new U_e(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.LongName),e}},B_e=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new B_e(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e}},k_e=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.LongName=h,this.CompositionType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new k_e(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.LongName),e.push(this.CompositionType),e}},G_e=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new G_e(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e}},V_e=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.LongName=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new V_e(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.LongName),e.push(this.PredefinedType),e}},z_e=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c,this.LongName=p}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++];return new z_e(e,t,n,s,a,o,l,h,u,c,p,d,f)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e.push(this.LongName),e}},j_e=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.Position=i,this.Radius=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new j_e(e,t,n,s)}ToTape(){let e=[];return e.push(this.Position),e.push(this.Radius),e}},W_e=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.Position=i,this.Radius=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new W_e(e,t,n,s)}ToTape(){let e=[];return e.push(this.Position),e.push(this.Radius),e}},q_e=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new q_e(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},Y_e=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new Y_e(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},X_e=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new X_e(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},$_e=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d,f){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.NumberOfRisers=u,this.NumberOfTreads=c,this.RiserHeight=p,this.TreadLength=d,this.PredefinedType=f}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++],g=i[r++];return new $_e(e,t,n,s,a,o,l,h,u,c,p,d,f,m,g)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.NumberOfRisers),e.push(this.NumberOfTreads),e.push(this.RiserHeight),e.push(this.TreadLength),e.push(this.PredefinedType),e}},Z_e=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new Z_e(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},K_e=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new K_e(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},J_e=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.AppliedLoad=h,this.GlobalOrLocal=u,this.DestabilizingLoad=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new J_e(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.AppliedLoad),e.push(this.GlobalOrLocal),e.push(this.DestabilizingLoad),e}},Q_e=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.AppliedLoad=h,this.GlobalOrLocal=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Q_e(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.AppliedLoad),e.push(this.GlobalOrLocal),e}},eSe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.PredefinedType=o,this.OrientationOf2DPlane=l,this.LoadedBy=h,this.HasResults=u,this.SharedPlacement=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new eSe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.PredefinedType),e.push(this.OrientationOf2DPlane),e.push(this.LoadedBy),e.push(this.HasResults),e.push(this.SharedPlacement),e}},tSe=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.AppliedCondition=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new tSe(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.AppliedCondition),e}},rSe=class{constructor(e,t,i){this.expressID=e,this.type=t,this.Name=i}static FromTape(e,t,i){let r=0,n=i[r++];return new rSe(e,t,n)}ToTape(){let e=[];return e.push(this.Name),e}},iSe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.AppliedLoad=h,this.GlobalOrLocal=u,this.DestabilizingLoad=c,this.ProjectedOrTrue=p,this.PredefinedType=d}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++];return new iSe(e,t,n,s,a,o,l,h,u,c,p,d,f,m)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.AppliedLoad),e.push(this.GlobalOrLocal),e.push(this.DestabilizingLoad),e.push(this.ProjectedOrTrue),e.push(this.PredefinedType),e}},nSe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.AppliedCondition=h,this.Axis=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new nSe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.AppliedCondition),e.push(this.Axis),e}},sSe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.PredefinedType=h,this.Axis=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new sSe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.PredefinedType),e.push(this.Axis),e}},aSe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.PredefinedType=h,this.Axis=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new aSe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.PredefinedType),e.push(this.Axis),e}},oSe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.AppliedLoad=h,this.GlobalOrLocal=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new oSe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.AppliedLoad),e.push(this.GlobalOrLocal),e.push(this.PredefinedType),e}},lSe=class{constructor(e,t,i,r,n,s,a,o,l){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++];return new lSe(e,t,n,s,a,o,l,h,u)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e}},cSe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.AppliedLoad=h,this.GlobalOrLocal=u,this.DestabilizingLoad=c,this.ProjectedOrTrue=p,this.PredefinedType=d}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++];return new cSe(e,t,n,s,a,o,l,h,u,c,p,d,f,m)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.AppliedLoad),e.push(this.GlobalOrLocal),e.push(this.DestabilizingLoad),e.push(this.ProjectedOrTrue),e.push(this.PredefinedType),e}},uSe=class{constructor(e,t,i){this.expressID=e,this.type=t,this.Name=i}static FromTape(e,t,i){let r=0,n=i[r++];return new uSe(e,t,n)}ToTape(){let e=[];return e.push(this.Name),e}},hSe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.PredefinedType=o,this.ActionType=l,this.ActionSource=h,this.Coefficient=u,this.Purpose=c,this.SelfWeightCoefficients=p}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++];return new hSe(e,t,n,s,a,o,l,h,u,c,p,d,f)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.PredefinedType),e.push(this.ActionType),e.push(this.ActionSource),e.push(this.Coefficient),e.push(this.Purpose),e.push(this.SelfWeightCoefficients),e}},pSe=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.Name=i,this.Values=r,this.Locations=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new pSe(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Values),e.push(this.Locations),e}},dSe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.PredefinedType=o,this.ActionType=l,this.ActionSource=h,this.Coefficient=u,this.Purpose=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new dSe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.PredefinedType),e.push(this.ActionType),e.push(this.ActionSource),e.push(this.Coefficient),e.push(this.Purpose),e}},fSe=class{constructor(e,t,i,r,n,s,a,o,l){this.expressID=e,this.type=t,this.Name=i,this.LinearForceX=r,this.LinearForceY=n,this.LinearForceZ=s,this.LinearMomentX=a,this.LinearMomentY=o,this.LinearMomentZ=l}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++];return new fSe(e,t,n,s,a,o,l,h,u)}ToTape(){let e=[];return e.push(this.Name),e.push(this.LinearForceX),e.push(this.LinearForceY),e.push(this.LinearForceZ),e.push(this.LinearMomentX),e.push(this.LinearMomentY),e.push(this.LinearMomentZ),e}},mSe=class{constructor(e,t,i){this.expressID=e,this.type=t,this.Name=i}static FromTape(e,t,i){let r=0,n=i[r++];return new mSe(e,t,n)}ToTape(){let e=[];return e.push(this.Name),e}},gSe=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.Name=i,this.PlanarForceX=r,this.PlanarForceY=n,this.PlanarForceZ=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new gSe(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.Name),e.push(this.PlanarForceX),e.push(this.PlanarForceY),e.push(this.PlanarForceZ),e}},vSe=class{constructor(e,t,i,r,n,s,a,o,l){this.expressID=e,this.type=t,this.Name=i,this.DisplacementX=r,this.DisplacementY=n,this.DisplacementZ=s,this.RotationalDisplacementRX=a,this.RotationalDisplacementRY=o,this.RotationalDisplacementRZ=l}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++];return new vSe(e,t,n,s,a,o,l,h,u)}ToTape(){let e=[];return e.push(this.Name),e.push(this.DisplacementX),e.push(this.DisplacementY),e.push(this.DisplacementZ),e.push(this.RotationalDisplacementRX),e.push(this.RotationalDisplacementRY),e.push(this.RotationalDisplacementRZ),e}},ySe=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.Name=i,this.DisplacementX=r,this.DisplacementY=n,this.DisplacementZ=s,this.RotationalDisplacementRX=a,this.RotationalDisplacementRY=o,this.RotationalDisplacementRZ=l,this.Distortion=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new ySe(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.Name),e.push(this.DisplacementX),e.push(this.DisplacementY),e.push(this.DisplacementZ),e.push(this.RotationalDisplacementRX),e.push(this.RotationalDisplacementRY),e.push(this.RotationalDisplacementRZ),e.push(this.Distortion),e}},TSe=class{constructor(e,t,i,r,n,s,a,o,l){this.expressID=e,this.type=t,this.Name=i,this.ForceX=r,this.ForceY=n,this.ForceZ=s,this.MomentX=a,this.MomentY=o,this.MomentZ=l}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++];return new TSe(e,t,n,s,a,o,l,h,u)}ToTape(){let e=[];return e.push(this.Name),e.push(this.ForceX),e.push(this.ForceY),e.push(this.ForceZ),e.push(this.MomentX),e.push(this.MomentY),e.push(this.MomentZ),e}},ESe=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.Name=i,this.ForceX=r,this.ForceY=n,this.ForceZ=s,this.MomentX=a,this.MomentY=o,this.MomentZ=l,this.WarpingMoment=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new ESe(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.Name),e.push(this.ForceX),e.push(this.ForceY),e.push(this.ForceZ),e.push(this.MomentX),e.push(this.MomentY),e.push(this.MomentZ),e.push(this.WarpingMoment),e}},bSe=class{constructor(e,t,i){this.expressID=e,this.type=t,this.Name=i}static FromTape(e,t,i){let r=0,n=i[r++];return new bSe(e,t,n)}ToTape(){let e=[];return e.push(this.Name),e}},xSe=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.Name=i,this.DeltaTConstant=r,this.DeltaTY=n,this.DeltaTZ=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new xSe(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.Name),e.push(this.DeltaTConstant),e.push(this.DeltaTY),e.push(this.DeltaTZ),e}},ISe=class{constructor(e,t,i,r,n,s,a,o,l){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++];return new ISe(e,t,n,s,a,o,l,h,u)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e}},_Se=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.AppliedLoad=h,this.GlobalOrLocal=u,this.DestabilizingLoad=c,this.ProjectedOrTrue=p,this.PredefinedType=d}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++];return new _Se(e,t,n,s,a,o,l,h,u,c,p,d,f,m)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.AppliedLoad),e.push(this.GlobalOrLocal),e.push(this.DestabilizingLoad),e.push(this.ProjectedOrTrue),e.push(this.PredefinedType),e}},SSe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.AppliedLoad=h,this.GlobalOrLocal=u,this.DestabilizingLoad=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new SSe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.AppliedLoad),e.push(this.GlobalOrLocal),e.push(this.DestabilizingLoad),e}},wSe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.AppliedCondition=h,this.ConditionCoordinateSystem=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new wSe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.AppliedCondition),e.push(this.ConditionCoordinateSystem),e}},RSe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.AppliedLoad=h,this.GlobalOrLocal=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new RSe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.AppliedLoad),e.push(this.GlobalOrLocal),e}},MSe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.AppliedLoad=h,this.GlobalOrLocal=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new MSe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.AppliedLoad),e.push(this.GlobalOrLocal),e}},DSe=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.TheoryType=o,this.ResultForLoadGroup=l,this.IsLinear=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new DSe(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.TheoryType),e.push(this.ResultForLoadGroup),e.push(this.IsLinear),e}},CSe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.AppliedLoad=h,this.GlobalOrLocal=u,this.DestabilizingLoad=c,this.ProjectedOrTrue=p,this.PredefinedType=d}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++];return new CSe(e,t,n,s,a,o,l,h,u,c,p,d,f,m)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.AppliedLoad),e.push(this.GlobalOrLocal),e.push(this.DestabilizingLoad),e.push(this.ProjectedOrTrue),e.push(this.PredefinedType),e}},ASe=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.AppliedCondition=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new ASe(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.AppliedCondition),e}},OSe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.PredefinedType=h,this.Thickness=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new OSe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.PredefinedType),e.push(this.Thickness),e}},PSe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.PredefinedType=h,this.Thickness=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new PSe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.PredefinedType),e.push(this.Thickness),e}},NSe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.AppliedLoad=h,this.GlobalOrLocal=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new NSe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.AppliedLoad),e.push(this.GlobalOrLocal),e.push(this.PredefinedType),e}},LSe=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.ContextOfItems=i,this.RepresentationIdentifier=r,this.RepresentationType=n,this.Items=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new LSe(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.ContextOfItems),e.push(this.RepresentationIdentifier),e.push(this.RepresentationType),e.push(this.Items),e}},FSe=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.Item=i,this.Styles=r,this.Name=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new FSe(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.Item),e.push(this.Styles),e.push(this.Name),e}},HSe=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.ContextOfItems=i,this.RepresentationIdentifier=r,this.RepresentationType=n,this.Items=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new HSe(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.ContextOfItems),e.push(this.RepresentationIdentifier),e.push(this.RepresentationType),e.push(this.Items),e}},USe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.Identification=o,this.LongDescription=l,this.Usage=h,this.BaseCosts=u,this.BaseQuantity=c,this.PredefinedType=p}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++];return new USe(e,t,n,s,a,o,l,h,u,c,p,d,f)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.Identification),e.push(this.LongDescription),e.push(this.Usage),e.push(this.BaseCosts),e.push(this.BaseQuantity),e.push(this.PredefinedType),e}},BSe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.Identification=l,this.LongDescription=h,this.ResourceType=u,this.BaseCosts=c,this.BaseQuantity=p,this.PredefinedType=d}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++];return new BSe(e,t,n,s,a,o,l,h,u,c,p,d,f,m)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.Identification),e.push(this.LongDescription),e.push(this.ResourceType),e.push(this.BaseCosts),e.push(this.BaseQuantity),e.push(this.PredefinedType),e}},kSe=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.EdgeStart=i,this.EdgeEnd=r,this.ParentEdge=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new kSe(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.EdgeStart),e.push(this.EdgeEnd),e.push(this.ParentEdge),e}},GSe=class{constructor(e,t){this.expressID=e,this.type=t}static FromTape(e,t,i){return new GSe(e,t)}ToTape(){return[]}},VSe=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.Curve3D=i,this.AssociatedGeometry=r,this.MasterRepresentation=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new VSe(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.Curve3D),e.push(this.AssociatedGeometry),e.push(this.MasterRepresentation),e}},zSe=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.SweptArea=i,this.Position=r,this.Directrix=n,this.StartParam=s,this.EndParam=a,this.ReferenceSurface=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new zSe(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.SweptArea),e.push(this.Position),e.push(this.Directrix),e.push(this.StartParam),e.push(this.EndParam),e.push(this.ReferenceSurface),e}},jSe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new jSe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},WSe=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.SweptCurve=i,this.Position=r,this.ExtrudedDirection=n,this.Depth=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new WSe(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.SweptCurve),e.push(this.Position),e.push(this.ExtrudedDirection),e.push(this.Depth),e}},qSe=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.SweptCurve=i,this.Position=r,this.AxisPosition=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new qSe(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.SweptCurve),e.push(this.Position),e.push(this.AxisPosition),e}},YSe=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.Name=i,this.SurfaceReinforcement1=r,this.SurfaceReinforcement2=n,this.ShearReinforcement=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new YSe(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.Name),e.push(this.SurfaceReinforcement1),e.push(this.SurfaceReinforcement2),e.push(this.ShearReinforcement),e}},XSe=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.Name=i,this.Side=r,this.Styles=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new XSe(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Side),e.push(this.Styles),e}},$Se=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.DiffuseTransmissionColour=i,this.DiffuseReflectionColour=r,this.TransmissionColour=n,this.ReflectanceColour=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new $Se(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.DiffuseTransmissionColour),e.push(this.DiffuseReflectionColour),e.push(this.TransmissionColour),e.push(this.ReflectanceColour),e}},ZSe=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.RefractionIndex=i,this.DispersionFactor=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new ZSe(e,t,n,s)}ToTape(){let e=[];return e.push(this.RefractionIndex),e.push(this.DispersionFactor),e}},KSe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.SurfaceColour=i,this.Transparency=r,this.DiffuseColour=n,this.TransmissionColour=s,this.DiffuseTransmissionColour=a,this.ReflectionColour=o,this.SpecularColour=l,this.SpecularHighlight=h,this.ReflectanceMethod=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new KSe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.SurfaceColour),e.push(this.Transparency),e.push(this.DiffuseColour),e.push(this.TransmissionColour),e.push(this.DiffuseTransmissionColour),e.push(this.ReflectionColour),e.push(this.SpecularColour),e.push(this.SpecularHighlight),e.push(this.ReflectanceMethod),e}},JSe=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.SurfaceColour=i,this.Transparency=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new JSe(e,t,n,s)}ToTape(){let e=[];return e.push(this.SurfaceColour),e.push(this.Transparency),e}},QSe=class{constructor(e,t,i){this.expressID=e,this.type=t,this.Textures=i}static FromTape(e,t,i){let r=0,n=i[r++];return new QSe(e,t,n)}ToTape(){let e=[];return e.push(this.Textures),e}},ewe=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.RepeatS=i,this.RepeatT=r,this.Mode=n,this.TextureTransform=s,this.Parameter=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new ewe(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.RepeatS),e.push(this.RepeatT),e.push(this.Mode),e.push(this.TextureTransform),e.push(this.Parameter),e}},twe=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.SweptArea=i,this.Position=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new twe(e,t,n,s)}ToTape(){let e=[];return e.push(this.SweptArea),e.push(this.Position),e}},rwe=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.Directrix=i,this.Radius=r,this.InnerRadius=n,this.StartParam=s,this.EndParam=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new rwe(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.Directrix),e.push(this.Radius),e.push(this.InnerRadius),e.push(this.StartParam),e.push(this.EndParam),e}},iwe=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.Directrix=i,this.Radius=r,this.InnerRadius=n,this.StartParam=s,this.EndParam=a,this.FilletRadius=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new iwe(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.Directrix),e.push(this.Radius),e.push(this.InnerRadius),e.push(this.StartParam),e.push(this.EndParam),e.push(this.FilletRadius),e}},nwe=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.SweptCurve=i,this.Position=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new nwe(e,t,n,s)}ToTape(){let e=[];return e.push(this.SweptCurve),e.push(this.Position),e}},swe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new swe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},awe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new awe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},owe=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new owe(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e}},lwe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new lwe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},cwe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new cwe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},uwe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d){this.expressID=e,this.type=t,this.ProfileType=i,this.ProfileName=r,this.Position=n,this.Depth=s,this.FlangeWidth=a,this.WebThickness=o,this.FlangeThickness=l,this.FilletRadius=h,this.FlangeEdgeRadius=u,this.WebEdgeRadius=c,this.WebSlope=p,this.FlangeSlope=d}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++];return new uwe(e,t,n,s,a,o,l,h,u,c,p,d,f,m)}ToTape(){let e=[];return e.push(this.ProfileType),e.push(this.ProfileName),e.push(this.Position),e.push(this.Depth),e.push(this.FlangeWidth),e.push(this.WebThickness),e.push(this.FlangeThickness),e.push(this.FilletRadius),e.push(this.FlangeEdgeRadius),e.push(this.WebEdgeRadius),e.push(this.WebSlope),e.push(this.FlangeSlope),e}},hwe=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.Name=i,this.Rows=r,this.Columns=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new hwe(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Rows),e.push(this.Columns),e}},pwe=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.Identifier=i,this.Name=r,this.Description=n,this.Unit=s,this.ReferencePath=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new pwe(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.Identifier),e.push(this.Name),e.push(this.Description),e.push(this.Unit),e.push(this.ReferencePath),e}},dwe=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.RowCells=i,this.IsHeading=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new dwe(e,t,n,s)}ToTape(){let e=[];return e.push(this.RowCells),e.push(this.IsHeading),e}},fwe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new fwe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},mwe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new mwe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},gwe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d,f){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.Identification=o,this.LongDescription=l,this.Status=h,this.WorkMethod=u,this.IsMilestone=c,this.Priority=p,this.TaskTime=d,this.PredefinedType=f}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++],g=i[r++];return new gwe(e,t,n,s,a,o,l,h,u,c,p,d,f,m,g)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.Identification),e.push(this.LongDescription),e.push(this.Status),e.push(this.WorkMethod),e.push(this.IsMilestone),e.push(this.Priority),e.push(this.TaskTime),e.push(this.PredefinedType),e}},vwe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d,f,m,g,y,v,T,x,b){this.expressID=e,this.type=t,this.Name=i,this.DataOrigin=r,this.UserDefinedDataOrigin=n,this.DurationType=s,this.ScheduleDuration=a,this.ScheduleStart=o,this.ScheduleFinish=l,this.EarlyStart=h,this.EarlyFinish=u,this.LateStart=c,this.LateFinish=p,this.FreeFloat=d,this.TotalFloat=f,this.IsCritical=m,this.StatusTime=g,this.ActualDuration=y,this.ActualStart=v,this.ActualFinish=T,this.RemainingTime=x,this.Completion=b}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++],g=i[r++],y=i[r++],v=i[r++],T=i[r++],x=i[r++],b=i[r++],_=i[r++],E=i[r++];return new vwe(e,t,n,s,a,o,l,h,u,c,p,d,f,m,g,y,v,T,x,b,_,E)}ToTape(){let e=[];return e.push(this.Name),e.push(this.DataOrigin),e.push(this.UserDefinedDataOrigin),e.push(this.DurationType),e.push(this.ScheduleDuration),e.push(this.ScheduleStart),e.push(this.ScheduleFinish),e.push(this.EarlyStart),e.push(this.EarlyFinish),e.push(this.LateStart),e.push(this.LateFinish),e.push(this.FreeFloat),e.push(this.TotalFloat),e.push(this.IsCritical),e.push(this.StatusTime),e.push(this.ActualDuration),e.push(this.ActualStart),e.push(this.ActualFinish),e.push(this.RemainingTime),e.push(this.Completion),e}},ywe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d,f,m,g,y,v,T,x,b,_){this.expressID=e,this.type=t,this.Name=i,this.DataOrigin=r,this.UserDefinedDataOrigin=n,this.DurationType=s,this.ScheduleDuration=a,this.ScheduleStart=o,this.ScheduleFinish=l,this.EarlyStart=h,this.EarlyFinish=u,this.LateStart=c,this.LateFinish=p,this.FreeFloat=d,this.TotalFloat=f,this.IsCritical=m,this.StatusTime=g,this.ActualDuration=y,this.ActualStart=v,this.ActualFinish=T,this.RemainingTime=x,this.Completion=b,this.Recurrence=_}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++],g=i[r++],y=i[r++],v=i[r++],T=i[r++],x=i[r++],b=i[r++],_=i[r++],E=i[r++],w=i[r++];return new ywe(e,t,n,s,a,o,l,h,u,c,p,d,f,m,g,y,v,T,x,b,_,E,w)}ToTape(){let e=[];return e.push(this.Name),e.push(this.DataOrigin),e.push(this.UserDefinedDataOrigin),e.push(this.DurationType),e.push(this.ScheduleDuration),e.push(this.ScheduleStart),e.push(this.ScheduleFinish),e.push(this.EarlyStart),e.push(this.EarlyFinish),e.push(this.LateStart),e.push(this.LateFinish),e.push(this.FreeFloat),e.push(this.TotalFloat),e.push(this.IsCritical),e.push(this.StatusTime),e.push(this.ActualDuration),e.push(this.ActualStart),e.push(this.ActualFinish),e.push(this.RemainingTime),e.push(this.Completion),e.push(this.Recurrence),e}},Twe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.Identification=l,this.LongDescription=h,this.ProcessType=u,this.PredefinedType=c,this.WorkMethod=p}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++];return new Twe(e,t,n,s,a,o,l,h,u,c,p,d,f)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.Identification),e.push(this.LongDescription),e.push(this.ProcessType),e.push(this.PredefinedType),e.push(this.WorkMethod),e}},Ewe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.Purpose=i,this.Description=r,this.UserDefinedPurpose=n,this.TelephoneNumbers=s,this.FacsimileNumbers=a,this.PagerNumber=o,this.ElectronicMailAddresses=l,this.WWWHomePageURL=h,this.MessagingIDs=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new Ewe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.Purpose),e.push(this.Description),e.push(this.UserDefinedPurpose),e.push(this.TelephoneNumbers),e.push(this.FacsimileNumbers),e.push(this.PagerNumber),e.push(this.ElectronicMailAddresses),e.push(this.WWWHomePageURL),e.push(this.MessagingIDs),e}},bwe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d,f,m,g,y,v){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.SteelGrade=u,this.PredefinedType=c,this.NominalDiameter=p,this.CrossSectionArea=d,this.TensionForce=f,this.PreStress=m,this.FrictionCoefficient=g,this.AnchorageSlip=y,this.MinCurvatureRadius=v}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++],g=i[r++],y=i[r++],v=i[r++],T=i[r++],x=i[r++];return new bwe(e,t,n,s,a,o,l,h,u,c,p,d,f,m,g,y,v,T,x)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.SteelGrade),e.push(this.PredefinedType),e.push(this.NominalDiameter),e.push(this.CrossSectionArea),e.push(this.TensionForce),e.push(this.PreStress),e.push(this.FrictionCoefficient),e.push(this.AnchorageSlip),e.push(this.MinCurvatureRadius),e}},xwe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.SteelGrade=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new xwe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.SteelGrade),e.push(this.PredefinedType),e}},Iwe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new Iwe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},_we=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.SteelGrade=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new _we(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.SteelGrade),e.push(this.PredefinedType),e}},Swe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new Swe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},wwe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d,f){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c,this.NominalDiameter=p,this.CrossSectionArea=d,this.SheathDiameter=f}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++],g=i[r++];return new wwe(e,t,n,s,a,o,l,h,u,c,p,d,f,m,g)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e.push(this.NominalDiameter),e.push(this.CrossSectionArea),e.push(this.SheathDiameter),e}},Rwe=class{constructor(e,t,i){this.expressID=e,this.type=t,this.Coordinates=i}static FromTape(e,t,i){let r=0,n=i[r++];return new Rwe(e,t,n)}ToTape(){let e=[];return e.push(this.Coordinates),e}},Mwe=class{constructor(e,t){this.expressID=e,this.type=t}static FromTape(e,t,i){return new Mwe(e,t)}ToTape(){return[]}},Dwe=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.Literal=i,this.Placement=r,this.Path=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new Dwe(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.Literal),e.push(this.Placement),e.push(this.Path),e}},Cwe=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.Literal=i,this.Placement=r,this.Path=n,this.Extent=s,this.BoxAlignment=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new Cwe(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.Literal),e.push(this.Placement),e.push(this.Path),e.push(this.Extent),e.push(this.BoxAlignment),e}},Awe=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.Name=i,this.TextCharacterAppearance=r,this.TextStyle=n,this.TextFontStyle=s,this.ModelOrDraughting=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new Awe(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.Name),e.push(this.TextCharacterAppearance),e.push(this.TextStyle),e.push(this.TextFontStyle),e.push(this.ModelOrDraughting),e}},Owe=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.Name=i,this.FontFamily=r,this.FontStyle=n,this.FontVariant=s,this.FontWeight=a,this.FontSize=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new Owe(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.Name),e.push(this.FontFamily),e.push(this.FontStyle),e.push(this.FontVariant),e.push(this.FontWeight),e.push(this.FontSize),e}},Pwe=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.Colour=i,this.BackgroundColour=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new Pwe(e,t,n,s)}ToTape(){let e=[];return e.push(this.Colour),e.push(this.BackgroundColour),e}},Nwe=class{constructor(e,t,i,r,n,s,a,o,l){this.expressID=e,this.type=t,this.TextIndent=i,this.TextAlign=r,this.TextDecoration=n,this.LetterSpacing=s,this.WordSpacing=a,this.TextTransform=o,this.LineHeight=l}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++];return new Nwe(e,t,n,s,a,o,l,h,u)}ToTape(){let e=[];return e.push(this.TextIndent),e.push(this.TextAlign),e.push(this.TextDecoration),e.push(this.LetterSpacing),e.push(this.WordSpacing),e.push(this.TextTransform),e.push(this.LineHeight),e}},Lwe=class{constructor(e,t,i){this.expressID=e,this.type=t,this.Maps=i}static FromTape(e,t,i){let r=0,n=i[r++];return new Lwe(e,t,n)}ToTape(){let e=[];return e.push(this.Maps),e}},Fwe=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.Maps=i,this.Mode=r,this.Parameter=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new Fwe(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.Maps),e.push(this.Mode),e.push(this.Parameter),e}},Hwe=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.Maps=i,this.Vertices=r,this.MappedTo=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new Hwe(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.Maps),e.push(this.Vertices),e.push(this.MappedTo),e}},Uwe=class{constructor(e,t,i){this.expressID=e,this.type=t,this.Coordinates=i}static FromTape(e,t,i){let r=0,n=i[r++];return new Uwe(e,t,n)}ToTape(){let e=[];return e.push(this.Coordinates),e}},Bwe=class{constructor(e,t,i){this.expressID=e,this.type=t,this.TexCoordsList=i}static FromTape(e,t,i){let r=0,n=i[r++];return new Bwe(e,t,n)}ToTape(){let e=[];return e.push(this.TexCoordsList),e}},kwe=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.StartTime=i,this.EndTime=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new kwe(e,t,n,s)}ToTape(){let e=[];return e.push(this.StartTime),e.push(this.EndTime),e}},Gwe=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.Name=i,this.Description=r,this.StartTime=n,this.EndTime=s,this.TimeSeriesDataType=a,this.DataOrigin=o,this.UserDefinedDataOrigin=l,this.Unit=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new Gwe(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.Name),e.push(this.Description),e.push(this.StartTime),e.push(this.EndTime),e.push(this.TimeSeriesDataType),e.push(this.DataOrigin),e.push(this.UserDefinedDataOrigin),e.push(this.Unit),e}},Vwe=class{constructor(e,t,i){this.expressID=e,this.type=t,this.ListValues=i}static FromTape(e,t,i){let r=0,n=i[r++];return new Vwe(e,t,n)}ToTape(){let e=[];return e.push(this.ListValues),e}},zwe=class{constructor(e,t){this.expressID=e,this.type=t}static FromTape(e,t,i){return new zwe(e,t)}ToTape(){return[]}},jwe=class{constructor(e,t,i,r,n,s){this.expressID=e,this.type=t,this.ContextOfItems=i,this.RepresentationIdentifier=r,this.RepresentationType=n,this.Items=s}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++];return new jwe(e,t,n,s,a,o)}ToTape(){let e=[];return e.push(this.ContextOfItems),e.push(this.RepresentationIdentifier),e.push(this.RepresentationType),e.push(this.Items),e}},Wwe=class{constructor(e,t,i,r,n){this.expressID=e,this.type=t,this.Position=i,this.MajorRadius=r,this.MinorRadius=n}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++];return new Wwe(e,t,n,s,a)}ToTape(){let e=[];return e.push(this.Position),e.push(this.MajorRadius),e.push(this.MinorRadius),e}},qwe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new qwe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},Ywe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new Ywe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},Xwe=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.StartPoint=i,this.StartDirection=r,this.SegmentLength=n,this.StartRadius=s,this.EndRadius=a,this.IsStartRadiusCCW=o,this.IsEndRadiusCCW=l,this.TransitionCurveType=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new Xwe(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.StartPoint),e.push(this.StartDirection),e.push(this.SegmentLength),e.push(this.StartRadius),e.push(this.EndRadius),e.push(this.IsStartRadiusCCW),e.push(this.IsEndRadiusCCW),e.push(this.TransitionCurveType),e}},$we=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new $we(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},Zwe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new Zwe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},Kwe=class{constructor(e,t,i,r,n,s,a,o,l){this.expressID=e,this.type=t,this.ProfileType=i,this.ProfileName=r,this.Position=n,this.BottomXDim=s,this.TopXDim=a,this.YDim=o,this.TopXOffset=l}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++];return new Kwe(e,t,n,s,a,o,l,h,u)}ToTape(){let e=[];return e.push(this.ProfileType),e.push(this.ProfileName),e.push(this.Position),e.push(this.BottomXDim),e.push(this.TopXDim),e.push(this.YDim),e.push(this.TopXOffset),e}},Jwe=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.Coordinates=i,this.Normals=r,this.Closed=n,this.CoordIndex=s,this.PnIndex=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new Jwe(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.Coordinates),e.push(this.Normals),e.push(this.Closed),e.push(this.CoordIndex),e.push(this.PnIndex),e}},Qwe=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.Coordinates=i,this.Normals=r,this.Closed=n,this.CoordIndex=s,this.PnIndex=a,this.Flags=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new Qwe(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.Coordinates),e.push(this.Normals),e.push(this.Closed),e.push(this.CoordIndex),e.push(this.PnIndex),e.push(this.Flags),e}},eRe=class{constructor(e,t,i,r,n,s,a){this.expressID=e,this.type=t,this.BasisCurve=i,this.Trim1=r,this.Trim2=n,this.SenseAgreement=s,this.MasterRepresentation=a}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++];return new eRe(e,t,n,s,a,o,l)}ToTape(){let e=[];return e.push(this.BasisCurve),e.push(this.Trim1),e.push(this.Trim2),e.push(this.SenseAgreement),e.push(this.MasterRepresentation),e}},tRe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new tRe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},rRe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new rRe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},iRe=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new iRe(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e}},nRe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.Identification=l,this.LongDescription=h,this.ProcessType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new nRe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.Identification),e.push(this.LongDescription),e.push(this.ProcessType),e}},sRe=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new sRe(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e}},aRe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.Identification=l,this.LongDescription=h,this.ResourceType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new aRe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.Identification),e.push(this.LongDescription),e.push(this.ResourceType),e}},oRe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.ProfileType=i,this.ProfileName=r,this.Position=n,this.Depth=s,this.FlangeWidth=a,this.WebThickness=o,this.FlangeThickness=l,this.FilletRadius=h,this.EdgeRadius=u,this.FlangeSlope=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new oRe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.ProfileType),e.push(this.ProfileName),e.push(this.Position),e.push(this.Depth),e.push(this.FlangeWidth),e.push(this.WebThickness),e.push(this.FlangeThickness),e.push(this.FilletRadius),e.push(this.EdgeRadius),e.push(this.FlangeSlope),e}},lRe=class{constructor(e,t,i){this.expressID=e,this.type=t,this.Units=i}static FromTape(e,t,i){let r=0,n=i[r++];return new lRe(e,t,n)}ToTape(){let e=[];return e.push(this.Units),e}},cRe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new cRe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},uRe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new uRe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},hRe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new hRe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},pRe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new pRe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},dRe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new dRe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},fRe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new fRe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},mRe=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.Orientation=i,this.Magnitude=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new mRe(e,t,n,s)}ToTape(){let e=[];return e.push(this.Orientation),e.push(this.Magnitude),e}},gRe=class{constructor(e,t){this.expressID=e,this.type=t}static FromTape(e,t,i){return new gRe(e,t)}ToTape(){return[]}},vRe=class{constructor(e,t,i){this.expressID=e,this.type=t,this.LoopVertex=i}static FromTape(e,t,i){let r=0,n=i[r++];return new vRe(e,t,n)}ToTape(){let e=[];return e.push(this.LoopVertex),e}},yRe=class{constructor(e,t,i){this.expressID=e,this.type=t,this.VertexGeometry=i}static FromTape(e,t,i){let r=0,n=i[r++];return new yRe(e,t,n)}ToTape(){let e=[];return e.push(this.VertexGeometry),e}},TRe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new TRe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},ERe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new ERe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},bRe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new bRe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},xRe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new xRe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},IRe=class{constructor(e,t,i,r,n,s,a,o,l,h){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++];return new IRe(e,t,n,s,a,o,l,h,u,c)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e}},_Re=class{constructor(e,t,i,r){this.expressID=e,this.type=t,this.IntersectingAxes=i,this.OffsetDistances=r}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++];return new _Re(e,t,n,s)}ToTape(){let e=[];return e.push(this.IntersectingAxes),e.push(this.OffsetDistances),e}},SRe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new SRe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},wRe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new wRe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},RRe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new RRe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},MRe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new MRe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},DRe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new DRe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},CRe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new CRe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.PredefinedType),e}},ARe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++];return new ARe(e,t,n,s,a,o,l,h,u,c,p,d)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e}},ORe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d,f){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.OverallHeight=u,this.OverallWidth=c,this.PredefinedType=p,this.PartitioningType=d,this.UserDefinedPartitioningType=f}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++],g=i[r++];return new ORe(e,t,n,s,a,o,l,h,u,c,p,d,f,m,g)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.OverallHeight),e.push(this.OverallWidth),e.push(this.PredefinedType),e.push(this.PartitioningType),e.push(this.UserDefinedPartitioningType),e}},PRe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d,f,m,g,y){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.LiningDepth=a,this.LiningThickness=o,this.TransomThickness=l,this.MullionThickness=h,this.FirstTransomOffset=u,this.SecondTransomOffset=c,this.FirstMullionOffset=p,this.SecondMullionOffset=d,this.ShapeAspectStyle=f,this.LiningOffset=m,this.LiningToPanelOffsetX=g,this.LiningToPanelOffsetY=y}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++],g=i[r++],y=i[r++],v=i[r++],T=i[r++];return new PRe(e,t,n,s,a,o,l,h,u,c,p,d,f,m,g,y,v,T)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.LiningDepth),e.push(this.LiningThickness),e.push(this.TransomThickness),e.push(this.MullionThickness),e.push(this.FirstTransomOffset),e.push(this.SecondTransomOffset),e.push(this.FirstMullionOffset),e.push(this.SecondMullionOffset),e.push(this.ShapeAspectStyle),e.push(this.LiningOffset),e.push(this.LiningToPanelOffsetX),e.push(this.LiningToPanelOffsetY),e}},NRe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.OperationType=a,this.PanelPosition=o,this.FrameDepth=l,this.FrameThickness=h,this.ShapeAspectStyle=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new NRe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.OperationType),e.push(this.PanelPosition),e.push(this.FrameDepth),e.push(this.FrameThickness),e.push(this.ShapeAspectStyle),e}},LRe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d,f){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.ObjectPlacement=o,this.Representation=l,this.Tag=h,this.OverallHeight=u,this.OverallWidth=c,this.PredefinedType=p,this.PartitioningType=d,this.UserDefinedPartitioningType=f}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++],g=i[r++];return new LRe(e,t,n,s,a,o,l,h,u,c,p,d,f,m,g)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.ObjectPlacement),e.push(this.Representation),e.push(this.Tag),e.push(this.OverallHeight),e.push(this.OverallWidth),e.push(this.PredefinedType),e.push(this.PartitioningType),e.push(this.UserDefinedPartitioningType),e}},FRe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ConstructionType=u,this.OperationType=c,this.ParameterTakesPrecedence=p,this.Sizeable=d}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++];return new FRe(e,t,n,s,a,o,l,h,u,c,p,d,f,m)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ConstructionType),e.push(this.OperationType),e.push(this.ParameterTakesPrecedence),e.push(this.Sizeable),e}},HRe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d,f){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ApplicableOccurrence=a,this.HasPropertySets=o,this.RepresentationMaps=l,this.Tag=h,this.ElementType=u,this.PredefinedType=c,this.PartitioningType=p,this.ParameterTakesPrecedence=d,this.UserDefinedPartitioningType=f}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++],g=i[r++];return new HRe(e,t,n,s,a,o,l,h,u,c,p,d,f,m,g)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ApplicableOccurrence),e.push(this.HasPropertySets),e.push(this.RepresentationMaps),e.push(this.Tag),e.push(this.ElementType),e.push(this.PredefinedType),e.push(this.PartitioningType),e.push(this.ParameterTakesPrecedence),e.push(this.UserDefinedPartitioningType),e}},URe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.Identification=o,this.WorkingTimes=l,this.ExceptionTimes=h,this.PredefinedType=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new URe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.Identification),e.push(this.WorkingTimes),e.push(this.ExceptionTimes),e.push(this.PredefinedType),e}},BRe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d,f){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.Identification=o,this.CreationDate=l,this.Creators=h,this.Purpose=u,this.Duration=c,this.TotalFloat=p,this.StartTime=d,this.FinishTime=f}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++],g=i[r++];return new BRe(e,t,n,s,a,o,l,h,u,c,p,d,f,m,g)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.Identification),e.push(this.CreationDate),e.push(this.Creators),e.push(this.Purpose),e.push(this.Duration),e.push(this.TotalFloat),e.push(this.StartTime),e.push(this.FinishTime),e}},kRe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d,f,m){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.Identification=o,this.CreationDate=l,this.Creators=h,this.Purpose=u,this.Duration=c,this.TotalFloat=p,this.StartTime=d,this.FinishTime=f,this.PredefinedType=m}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++],g=i[r++],y=i[r++];return new kRe(e,t,n,s,a,o,l,h,u,c,p,d,f,m,g,y)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.Identification),e.push(this.CreationDate),e.push(this.Creators),e.push(this.Purpose),e.push(this.Duration),e.push(this.TotalFloat),e.push(this.StartTime),e.push(this.FinishTime),e.push(this.PredefinedType),e}},GRe=class{constructor(e,t,i,r,n,s,a,o,l,h,u,c,p,d,f,m){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.Identification=o,this.CreationDate=l,this.Creators=h,this.Purpose=u,this.Duration=c,this.TotalFloat=p,this.StartTime=d,this.FinishTime=f,this.PredefinedType=m}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++],d=i[r++],f=i[r++],m=i[r++],g=i[r++],y=i[r++];return new GRe(e,t,n,s,a,o,l,h,u,c,p,d,f,m,g,y)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.Identification),e.push(this.CreationDate),e.push(this.Creators),e.push(this.Purpose),e.push(this.Duration),e.push(this.TotalFloat),e.push(this.StartTime),e.push(this.FinishTime),e.push(this.PredefinedType),e}},VRe=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.Name=i,this.DataOrigin=r,this.UserDefinedDataOrigin=n,this.RecurrencePattern=s,this.Start=a,this.Finish=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new VRe(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.Name),e.push(this.DataOrigin),e.push(this.UserDefinedDataOrigin),e.push(this.RecurrencePattern),e.push(this.Start),e.push(this.Finish),e}},zRe=class{constructor(e,t,i,r,n,s,a,o,l,h,u){this.expressID=e,this.type=t,this.ProfileType=i,this.ProfileName=r,this.Position=n,this.Depth=s,this.FlangeWidth=a,this.WebThickness=o,this.FlangeThickness=l,this.FilletRadius=h,this.EdgeRadius=u}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++],u=i[r++],c=i[r++],p=i[r++];return new zRe(e,t,n,s,a,o,l,h,u,c,p)}ToTape(){let e=[];return e.push(this.ProfileType),e.push(this.ProfileName),e.push(this.Position),e.push(this.Depth),e.push(this.FlangeWidth),e.push(this.WebThickness),e.push(this.FlangeThickness),e.push(this.FilletRadius),e.push(this.EdgeRadius),e}},jRe=class{constructor(e,t,i,r,n,s,a,o){this.expressID=e,this.type=t,this.GlobalId=i,this.OwnerHistory=r,this.Name=n,this.Description=s,this.ObjectType=a,this.LongName=o}static FromTape(e,t,i){let r=0,n=i[r++],s=i[r++],a=i[r++],o=i[r++],l=i[r++],h=i[r++];return new jRe(e,t,n,s,a,o,l,h)}ToTape(){let e=[];return e.push(this.GlobalId),e.push(this.OwnerHistory),e.push(this.Name),e.push(this.Description),e.push(this.ObjectType),e.push(this.LongName),e}},Ife=nbt(),T8=class{constructor(){this.wasmModule=void 0,this.fs=void 0}Init(){return rbt(this,null,(function*(){Ife?(this.wasmModule=yield Ife({noInitialRun:!0}),this.fs=this.wasmModule.FS):console.error("Could not find wasm module at './web-ifc' from web-ifc-api.ts")}))}OpenModel(e,t){this.wasmModule.FS_createDataFile("/","filename",e,!0,!0,!0);let i=xfe({COORDINATE_TO_ORIGIN:!1,USE_FAST_BOOLS:!1,CIRCLE_SEGMENTS_LOW:5,CIRCLE_SEGMENTS_MEDIUM:8,CIRCLE_SEGMENTS_HIGH:12},t),r=this.wasmModule.OpenModel(i);return this.wasmModule.FS_unlink("/filename"),r}CreateModel(e){let t=xfe({COORDINATE_TO_ORIGIN:!1,USE_FAST_BOOLS:!1,CIRCLE_SEGMENTS_LOW:5,CIRCLE_SEGMENTS_MEDIUM:8,CIRCLE_SEGMENTS_HIGH:12},e);return this.wasmModule.CreateModel(t)}ExportFileAsIFC(e){this.wasmModule.ExportFileAsIFC(e);let t=this.fs.readFile("/export.ifc");return this.wasmModule.FS_unlink("/export.ifc"),t}GetGeometry(e,t){return this.wasmModule.GetGeometry(e,t)}GetLine(e,t,i=!1){let r=this.GetRawLineData(e,t),n=O[r.type](r);return i&&this.FlattenLine(e,n),n}WriteLine(e,t){Object.keys(t).forEach((i=>{let r=t[i];if(r&&void 0!==r.expressID)this.WriteLine(e,r),t[i]={type:5,value:r.expressID};else if(Array.isArray(r)&&r.length>0)for(let n=0;n{let r=t[i];if(r&&5===r.type)t[i]=this.GetLine(e,r.value,!0);else if(Array.isArray(r)&&r.length>0&&5===r[0].type)for(let n=0;nqo(e,t),qRe=(e,t)=>new Wt(new Float32Array(e),t),aNt=(e,t)=>new Wt(new Uint32Array(e),t),E8="default",ql={aggregates:{name:n8,relating:"RelatingObject",related:"RelatedObjects",key:"children"},spatial:{name:a8,relating:"RelatingStructure",related:"RelatedElements",key:"children"},psets:{name:o8,relating:"RelatingPropertyDefinition",related:"RelatedObjects",key:"hasPsets"},materials:{name:s8,relating:"RelatingMaterial",related:"RelatedObjects",key:"hasMaterial"},type:{name:l8,relating:"RelatingType",related:"RelatedObjects",key:"hasType"}},b8=class{constructor(e,t){this.state=e,this.BVH=t,this.loadedModels=0,this.currentWebIfcID=-1,this.currentModelID=-1}parse(e){return ht(this,null,(function*(){return void 0===this.state.api.wasmModule&&(yield this.state.api.Init()),this.newIfcModel(e),this.loadedModels++,this.loadAllGeometry()}))}newIfcModel(e){let t=new Uint8Array(e);this.currentWebIfcID=this.state.api.OpenModel(t,this.state.webIfcSettings),this.currentModelID=this.state.useJSON?this.loadedModels:this.currentWebIfcID,this.state.models[this.currentModelID]={modelID:this.currentModelID,mesh:{},items:{},types:{},jsonData:{}}}loadAllGeometry(){return this.saveAllPlacedGeometriesByMaterial(),this.generateAllGeometriesByMaterial()}generateAllGeometriesByMaterial(){let{geometry:e,materials:t}=this.getGeometryAndMaterials();this.BVH.applyThreeMeshBVH(e);let i=new rt(e,t);return i.modelID=this.currentModelID,this.state.models[this.currentModelID].mesh=i,i}getGeometryAndMaterials(){let e=this.state.models[this.currentModelID].items,t=[],i=[];for(let r in e){i.push(e[r].material);let n=Object.values(e[r].geometries);t.push(VT(n))}return{geometry:VT(t,!0),materials:i}}saveAllPlacedGeometriesByMaterial(){let e=this.state.api.LoadAllGeometry(this.currentWebIfcID);for(let t=0;t0?VT(e,t):new lt}isConfigValid(e){return this.isValid(e.scene)&&this.isValid(e.modelID)&&this.isValid(e.ids)&&this.isValid(e.removePrevious)}isValid(e){return null!=e}getGeomAndMat(e){let t=[],i=[];for(let r in e){let n=Object.values(e[r].geometries);n.length&&(i.push(e[r].material),n.length>1?t.push(VT(n)):t.push(...n))}return{geomsByMaterial:t,materials:i}}updatePreviousSelection(e,t){let i=this.selected[this.matID(t)];if(!i)return this.newSelectionGroup(t);e.remove(i.mesh),t.removePrevious?i.ids=new Set(t.ids):t.ids.forEach((e=>i.ids.add(e)))}newSelectionGroup(e){this.selected[this.matID(e)]={ids:new Set(e.ids),mesh:{}}}isPreviousSelection(e){if(!this.selected[this.matID(e)])return!1;if(this.containsIds(e))return!0;let t=this.selected[this.matID(e)].ids;return JSON.stringify(e.ids)===JSON.stringify(t)}containsIds(e){let t=e.ids,i=Array.from(this.selected[this.matID(e)].ids);return t.every((r=0,e=>r=i.indexOf(e,r)+1));var r}addToPreviousSelection(e){let t=this.selected[this.matID(e)],i=this.filter(e),r=Object.values(i).map((e=>Object.values(e.geometries))).flat(),n=t.mesh.geometry;t.mesh.geometry=VT([n,...r]),e.ids.forEach((e=>t.ids.add(e)))}filter(e){let t=this.selected[this.matID(e)].ids,i=this.state.models[e.modelID].items,r={};for(let e in i)r[e]={material:i[e].material,geometries:this.filterGeometries(t,i[e].geometries)};return r}filterGeometries(e,t){let i=Array.from(e);return Object.keys(t).filter((e=>i.includes(parseInt(e,10)))).reduce(((e,i)=>Cn(Br({},e),{[i]:t[i]})),{})}isEasySelection(e){let t=this.matID(e);if(!e.removePrevious&&!this.isDefaultMat(e)&&this.selected[t])return!0}isDefaultMat(e){return this.matIDNoConfig(e.modelID)===this.matID(e)}matID(e){let t;return t=e.material&&e.material.uuid||E8,t.concat(" - ").concat(e.modelID.toString())}matIDNoConfig(e,t){let i=E8;return t&&(i=t.uuid),i.concat(" - ").concat(e.toString())}},D8={103090709:"IFCPROJECT",4097777520:"IFCSITE",4031249490:"IFCBUILDING",3124254112:"IFCBUILDINGSTOREY",3856911033:"IFCSPACE",1674181508:"IFCANNOTATION",25142252:"IFCCONTROLLER",32344328:"IFCBOILER",76236018:"IFCLAMP",90941305:"IFCPUMP",177149247:"IFCAIRTERMINALBOX",182646315:"IFCFLOWINSTRUMENT",263784265:"IFCFURNISHINGELEMENT",264262732:"IFCELECTRICGENERATOR",277319702:"IFCAUDIOVISUALAPPLIANCE",310824031:"IFCPIPEFITTING",331165859:"IFCSTAIR",342316401:"IFCDUCTFITTING",377706215:"IFCMECHANICALFASTENER",395920057:"IFCDOOR",402227799:"IFCELECTRICMOTOR",413509423:"IFCSYSTEMFURNITUREELEMENT",484807127:"IFCEVAPORATOR",486154966:"IFCWINDOWSTANDARDCASE",629592764:"IFCLIGHTFIXTURE",630975310:"IFCUNITARYCONTROLELEMENT",635142910:"IFCCABLECARRIERFITTING",639361253:"IFCCOIL",647756555:"IFCFASTENER",707683696:"IFCFLOWSTORAGEDEVICE",738039164:"IFCPROTECTIVEDEVICE",753842376:"IFCBEAM",812556717:"IFCTANK",819412036:"IFCFILTER",843113511:"IFCCOLUMN",862014818:"IFCELECTRICDISTRIBUTIONBOARD",900683007:"IFCFOOTING",905975707:"IFCCOLUMNSTANDARDCASE",926996030:"IFCVOIDINGFEATURE",979691226:"IFCREINFORCINGBAR",987401354:"IFCFLOWSEGMENT",1003880860:"IFCELECTRICTIMECONTROL",1051757585:"IFCCABLEFITTING",1052013943:"IFCDISTRIBUTIONCHAMBERELEMENT",1062813311:"IFCDISTRIBUTIONCONTROLELEMENT",1073191201:"IFCMEMBER",1095909175:"IFCBUILDINGELEMENTPROXY",1156407060:"IFCPLATESTANDARDCASE",1162798199:"IFCSWITCHINGDEVICE",1329646415:"IFCSHADINGDEVICE",1335981549:"IFCDISCRETEACCESSORY",1360408905:"IFCDUCTSILENCER",1404847402:"IFCSTACKTERMINAL",1426591983:"IFCFIRESUPPRESSIONTERMINAL",1437502449:"IFCMEDICALDEVICE",1509553395:"IFCFURNITURE",1529196076:"IFCSLAB",1620046519:"IFCTRANSPORTELEMENT",1634111441:"IFCAIRTERMINAL",1658829314:"IFCENERGYCONVERSIONDEVICE",1677625105:"IFCCIVILELEMENT",1687234759:"IFCPILE",1904799276:"IFCELECTRICAPPLIANCE",1911478936:"IFCMEMBERSTANDARDCASE",1945004755:"IFCDISTRIBUTIONELEMENT",1973544240:"IFCCOVERING",1999602285:"IFCSPACEHEATER",2016517767:"IFCROOF",2056796094:"IFCAIRTOAIRHEATRECOVERY",2058353004:"IFCFLOWCONTROLLER",2068733104:"IFCHUMIDIFIER",2176052936:"IFCJUNCTIONBOX",2188021234:"IFCFLOWMETER",2223149337:"IFCFLOWTERMINAL",2262370178:"IFCRAILING",2272882330:"IFCCONDENSER",2295281155:"IFCPROTECTIVEDEVICETRIPPINGUNIT",2320036040:"IFCREINFORCINGMESH",2347447852:"IFCTENDONANCHOR",2391383451:"IFCVIBRATIONISOLATOR",2391406946:"IFCWALL",2474470126:"IFCMOTORCONNECTION",2769231204:"IFCVIRTUALELEMENT",2814081492:"IFCENGINE",2906023776:"IFCBEAMSTANDARDCASE",2938176219:"IFCBURNER",2979338954:"IFCBUILDINGELEMENTPART",3024970846:"IFCRAMP",3026737570:"IFCTUBEBUNDLE",3027962421:"IFCSLABSTANDARDCASE",3040386961:"IFCDISTRIBUTIONFLOWELEMENT",3053780830:"IFCSANITARYTERMINAL",3079942009:"IFCOPENINGSTANDARDCASE",3087945054:"IFCALARM",3101698114:"IFCSURFACEFEATURE",3127900445:"IFCSLABELEMENTEDCASE",3132237377:"IFCFLOWMOVINGDEVICE",3171933400:"IFCPLATE",3221913625:"IFCCOMMUNICATIONSAPPLIANCE",3242481149:"IFCDOORSTANDARDCASE",3283111854:"IFCRAMPFLIGHT",3296154744:"IFCCHIMNEY",3304561284:"IFCWINDOW",3310460725:"IFCELECTRICFLOWSTORAGEDEVICE",3319311131:"IFCHEATEXCHANGER",3415622556:"IFCFAN",3420628829:"IFCSOLARDEVICE",3493046030:"IFCGEOGRAPHICELEMENT",3495092785:"IFCCURTAINWALL",3508470533:"IFCFLOWTREATMENTDEVICE",3512223829:"IFCWALLSTANDARDCASE",3518393246:"IFCDUCTSEGMENT",3571504051:"IFCCOMPRESSOR",3588315303:"IFCOPENINGELEMENT",3612865200:"IFCPIPESEGMENT",3640358203:"IFCCOOLINGTOWER",3651124850:"IFCPROJECTIONELEMENT",3694346114:"IFCOUTLET",3747195512:"IFCEVAPORATIVECOOLER",3758799889:"IFCCABLECARRIERSEGMENT",3824725483:"IFCTENDON",3825984169:"IFCTRANSFORMER",3902619387:"IFCCHILLER",4074379575:"IFCDAMPER",4086658281:"IFCSENSOR",4123344466:"IFCELEMENTASSEMBLY",4136498852:"IFCCOOLEDBEAM",4156078855:"IFCWALLELEMENTEDCASE",4175244083:"IFCINTERCEPTOR",4207607924:"IFCVALVE",4217484030:"IFCCABLESEGMENT",4237592921:"IFCWASTETERMINAL",4252922144:"IFCSTAIRFLIGHT",4278956645:"IFCFLOWFITTING",4288193352:"IFCACTUATOR",4292641817:"IFCUNITARYEQUIPMENT",3009204131:"IFCGRID"},oNt={3821786052:"IFCACTIONREQUEST",2296667514:"IFCACTOR",3630933823:"IFCACTORROLE",4288193352:"IFCACTUATOR",2874132201:"IFCACTUATORTYPE",618182010:"IFCADDRESS",1635779807:"IFCADVANCEDBREP",2603310189:"IFCADVANCEDBREPWITHVOIDS",3406155212:"IFCADVANCEDFACE",1634111441:"IFCAIRTERMINAL",177149247:"IFCAIRTERMINALBOX",1411407467:"IFCAIRTERMINALBOXTYPE",3352864051:"IFCAIRTERMINALTYPE",2056796094:"IFCAIRTOAIRHEATRECOVERY",1871374353:"IFCAIRTOAIRHEATRECOVERYTYPE",3087945054:"IFCALARM",3001207471:"IFCALARMTYPE",325726236:"IFCALIGNMENT",749761778:"IFCALIGNMENT2DHORIZONTAL",3199563722:"IFCALIGNMENT2DHORIZONTALSEGMENT",2483840362:"IFCALIGNMENT2DSEGMENT",3379348081:"IFCALIGNMENT2DVERSEGCIRCULARARC",3239324667:"IFCALIGNMENT2DVERSEGLINE",4263986512:"IFCALIGNMENT2DVERSEGPARABOLICARC",53199957:"IFCALIGNMENT2DVERTICAL",2029264950:"IFCALIGNMENT2DVERTICALSEGMENT",3512275521:"IFCALIGNMENTCURVE",1674181508:"IFCANNOTATION",669184980:"IFCANNOTATIONFILLAREA",639542469:"IFCAPPLICATION",411424972:"IFCAPPLIEDVALUE",130549933:"IFCAPPROVAL",3869604511:"IFCAPPROVALRELATIONSHIP",3798115385:"IFCARBITRARYCLOSEDPROFILEDEF",1310608509:"IFCARBITRARYOPENPROFILEDEF",2705031697:"IFCARBITRARYPROFILEDEFWITHVOIDS",3460190687:"IFCASSET",3207858831:"IFCASYMMETRICISHAPEPROFILEDEF",277319702:"IFCAUDIOVISUALAPPLIANCE",1532957894:"IFCAUDIOVISUALAPPLIANCETYPE",4261334040:"IFCAXIS1PLACEMENT",3125803723:"IFCAXIS2PLACEMENT2D",2740243338:"IFCAXIS2PLACEMENT3D",1967976161:"IFCBSPLINECURVE",2461110595:"IFCBSPLINECURVEWITHKNOTS",2887950389:"IFCBSPLINESURFACE",167062518:"IFCBSPLINESURFACEWITHKNOTS",753842376:"IFCBEAM",2906023776:"IFCBEAMSTANDARDCASE",819618141:"IFCBEAMTYPE",4196446775:"IFCBEARING",3649138523:"IFCBEARINGTYPE",616511568:"IFCBLOBTEXTURE",1334484129:"IFCBLOCK",32344328:"IFCBOILER",231477066:"IFCBOILERTYPE",3649129432:"IFCBOOLEANCLIPPINGRESULT",2736907675:"IFCBOOLEANRESULT",4037036970:"IFCBOUNDARYCONDITION",1136057603:"IFCBOUNDARYCURVE",1560379544:"IFCBOUNDARYEDGECONDITION",3367102660:"IFCBOUNDARYFACECONDITION",1387855156:"IFCBOUNDARYNODECONDITION",2069777674:"IFCBOUNDARYNODECONDITIONWARPING",1260505505:"IFCBOUNDEDCURVE",4182860854:"IFCBOUNDEDSURFACE",2581212453:"IFCBOUNDINGBOX",2713105998:"IFCBOXEDHALFSPACE",644574406:"IFCBRIDGE",963979645:"IFCBRIDGEPART",4031249490:"IFCBUILDING",3299480353:"IFCBUILDINGELEMENT",2979338954:"IFCBUILDINGELEMENTPART",39481116:"IFCBUILDINGELEMENTPARTTYPE",1095909175:"IFCBUILDINGELEMENTPROXY",1909888760:"IFCBUILDINGELEMENTPROXYTYPE",1950629157:"IFCBUILDINGELEMENTTYPE",3124254112:"IFCBUILDINGSTOREY",1177604601:"IFCBUILDINGSYSTEM",2938176219:"IFCBURNER",2188180465:"IFCBURNERTYPE",2898889636:"IFCCSHAPEPROFILEDEF",635142910:"IFCCABLECARRIERFITTING",395041908:"IFCCABLECARRIERFITTINGTYPE",3758799889:"IFCCABLECARRIERSEGMENT",3293546465:"IFCCABLECARRIERSEGMENTTYPE",1051757585:"IFCCABLEFITTING",2674252688:"IFCCABLEFITTINGTYPE",4217484030:"IFCCABLESEGMENT",1285652485:"IFCCABLESEGMENTTYPE",3999819293:"IFCCAISSONFOUNDATION",3203706013:"IFCCAISSONFOUNDATIONTYPE",1123145078:"IFCCARTESIANPOINT",574549367:"IFCCARTESIANPOINTLIST",1675464909:"IFCCARTESIANPOINTLIST2D",2059837836:"IFCCARTESIANPOINTLIST3D",59481748:"IFCCARTESIANTRANSFORMATIONOPERATOR",3749851601:"IFCCARTESIANTRANSFORMATIONOPERATOR2D",3486308946:"IFCCARTESIANTRANSFORMATIONOPERATOR2DNONUNIFORM",3331915920:"IFCCARTESIANTRANSFORMATIONOPERATOR3D",1416205885:"IFCCARTESIANTRANSFORMATIONOPERATOR3DNONUNIFORM",3150382593:"IFCCENTERLINEPROFILEDEF",3902619387:"IFCCHILLER",2951183804:"IFCCHILLERTYPE",3296154744:"IFCCHIMNEY",2197970202:"IFCCHIMNEYTYPE",2611217952:"IFCCIRCLE",2937912522:"IFCCIRCLEHOLLOWPROFILEDEF",1383045692:"IFCCIRCLEPROFILEDEF",1062206242:"IFCCIRCULARARCSEGMENT2D",1677625105:"IFCCIVILELEMENT",3893394355:"IFCCIVILELEMENTTYPE",747523909:"IFCCLASSIFICATION",647927063:"IFCCLASSIFICATIONREFERENCE",2205249479:"IFCCLOSEDSHELL",639361253:"IFCCOIL",2301859152:"IFCCOILTYPE",776857604:"IFCCOLOURRGB",3285139300:"IFCCOLOURRGBLIST",3264961684:"IFCCOLOURSPECIFICATION",843113511:"IFCCOLUMN",905975707:"IFCCOLUMNSTANDARDCASE",300633059:"IFCCOLUMNTYPE",3221913625:"IFCCOMMUNICATIONSAPPLIANCE",400855858:"IFCCOMMUNICATIONSAPPLIANCETYPE",2542286263:"IFCCOMPLEXPROPERTY",3875453745:"IFCCOMPLEXPROPERTYTEMPLATE",3732776249:"IFCCOMPOSITECURVE",15328376:"IFCCOMPOSITECURVEONSURFACE",2485617015:"IFCCOMPOSITECURVESEGMENT",1485152156:"IFCCOMPOSITEPROFILEDEF",3571504051:"IFCCOMPRESSOR",3850581409:"IFCCOMPRESSORTYPE",2272882330:"IFCCONDENSER",2816379211:"IFCCONDENSERTYPE",2510884976:"IFCCONIC",370225590:"IFCCONNECTEDFACESET",1981873012:"IFCCONNECTIONCURVEGEOMETRY",2859738748:"IFCCONNECTIONGEOMETRY",45288368:"IFCCONNECTIONPOINTECCENTRICITY",2614616156:"IFCCONNECTIONPOINTGEOMETRY",2732653382:"IFCCONNECTIONSURFACEGEOMETRY",775493141:"IFCCONNECTIONVOLUMEGEOMETRY",1959218052:"IFCCONSTRAINT",3898045240:"IFCCONSTRUCTIONEQUIPMENTRESOURCE",2185764099:"IFCCONSTRUCTIONEQUIPMENTRESOURCETYPE",1060000209:"IFCCONSTRUCTIONMATERIALRESOURCE",4105962743:"IFCCONSTRUCTIONMATERIALRESOURCETYPE",488727124:"IFCCONSTRUCTIONPRODUCTRESOURCE",1525564444:"IFCCONSTRUCTIONPRODUCTRESOURCETYPE",2559216714:"IFCCONSTRUCTIONRESOURCE",2574617495:"IFCCONSTRUCTIONRESOURCETYPE",3419103109:"IFCCONTEXT",3050246964:"IFCCONTEXTDEPENDENTUNIT",3293443760:"IFCCONTROL",25142252:"IFCCONTROLLER",578613899:"IFCCONTROLLERTYPE",2889183280:"IFCCONVERSIONBASEDUNIT",2713554722:"IFCCONVERSIONBASEDUNITWITHOFFSET",4136498852:"IFCCOOLEDBEAM",335055490:"IFCCOOLEDBEAMTYPE",3640358203:"IFCCOOLINGTOWER",2954562838:"IFCCOOLINGTOWERTYPE",1785450214:"IFCCOORDINATEOPERATION",1466758467:"IFCCOORDINATEREFERENCESYSTEM",3895139033:"IFCCOSTITEM",1419761937:"IFCCOSTSCHEDULE",602808272:"IFCCOSTVALUE",1973544240:"IFCCOVERING",1916426348:"IFCCOVERINGTYPE",3295246426:"IFCCREWRESOURCE",1815067380:"IFCCREWRESOURCETYPE",2506170314:"IFCCSGPRIMITIVE3D",2147822146:"IFCCSGSOLID",539742890:"IFCCURRENCYRELATIONSHIP",3495092785:"IFCCURTAINWALL",1457835157:"IFCCURTAINWALLTYPE",2601014836:"IFCCURVE",2827736869:"IFCCURVEBOUNDEDPLANE",2629017746:"IFCCURVEBOUNDEDSURFACE",1186437898:"IFCCURVESEGMENT2D",3800577675:"IFCCURVESTYLE",1105321065:"IFCCURVESTYLEFONT",2367409068:"IFCCURVESTYLEFONTANDSCALING",3510044353:"IFCCURVESTYLEFONTPATTERN",1213902940:"IFCCYLINDRICALSURFACE",4074379575:"IFCDAMPER",3961806047:"IFCDAMPERTYPE",3426335179:"IFCDEEPFOUNDATION",1306400036:"IFCDEEPFOUNDATIONTYPE",3632507154:"IFCDERIVEDPROFILEDEF",1765591967:"IFCDERIVEDUNIT",1045800335:"IFCDERIVEDUNITELEMENT",2949456006:"IFCDIMENSIONALEXPONENTS",32440307:"IFCDIRECTION",1335981549:"IFCDISCRETEACCESSORY",2635815018:"IFCDISCRETEACCESSORYTYPE",1945343521:"IFCDISTANCEEXPRESSION",1052013943:"IFCDISTRIBUTIONCHAMBERELEMENT",1599208980:"IFCDISTRIBUTIONCHAMBERELEMENTTYPE",562808652:"IFCDISTRIBUTIONCIRCUIT",1062813311:"IFCDISTRIBUTIONCONTROLELEMENT",2063403501:"IFCDISTRIBUTIONCONTROLELEMENTTYPE",1945004755:"IFCDISTRIBUTIONELEMENT",3256556792:"IFCDISTRIBUTIONELEMENTTYPE",3040386961:"IFCDISTRIBUTIONFLOWELEMENT",3849074793:"IFCDISTRIBUTIONFLOWELEMENTTYPE",3041715199:"IFCDISTRIBUTIONPORT",3205830791:"IFCDISTRIBUTIONSYSTEM",1154170062:"IFCDOCUMENTINFORMATION",770865208:"IFCDOCUMENTINFORMATIONRELATIONSHIP",3732053477:"IFCDOCUMENTREFERENCE",395920057:"IFCDOOR",2963535650:"IFCDOORLININGPROPERTIES",1714330368:"IFCDOORPANELPROPERTIES",3242481149:"IFCDOORSTANDARDCASE",526551008:"IFCDOORSTYLE",2323601079:"IFCDOORTYPE",445594917:"IFCDRAUGHTINGPREDEFINEDCOLOUR",4006246654:"IFCDRAUGHTINGPREDEFINEDCURVEFONT",342316401:"IFCDUCTFITTING",869906466:"IFCDUCTFITTINGTYPE",3518393246:"IFCDUCTSEGMENT",3760055223:"IFCDUCTSEGMENTTYPE",1360408905:"IFCDUCTSILENCER",2030761528:"IFCDUCTSILENCERTYPE",3900360178:"IFCEDGE",476780140:"IFCEDGECURVE",1472233963:"IFCEDGELOOP",1904799276:"IFCELECTRICAPPLIANCE",663422040:"IFCELECTRICAPPLIANCETYPE",862014818:"IFCELECTRICDISTRIBUTIONBOARD",2417008758:"IFCELECTRICDISTRIBUTIONBOARDTYPE",3310460725:"IFCELECTRICFLOWSTORAGEDEVICE",3277789161:"IFCELECTRICFLOWSTORAGEDEVICETYPE",264262732:"IFCELECTRICGENERATOR",1534661035:"IFCELECTRICGENERATORTYPE",402227799:"IFCELECTRICMOTOR",1217240411:"IFCELECTRICMOTORTYPE",1003880860:"IFCELECTRICTIMECONTROL",712377611:"IFCELECTRICTIMECONTROLTYPE",1758889154:"IFCELEMENT",4123344466:"IFCELEMENTASSEMBLY",2397081782:"IFCELEMENTASSEMBLYTYPE",1623761950:"IFCELEMENTCOMPONENT",2590856083:"IFCELEMENTCOMPONENTTYPE",1883228015:"IFCELEMENTQUANTITY",339256511:"IFCELEMENTTYPE",2777663545:"IFCELEMENTARYSURFACE",1704287377:"IFCELLIPSE",2835456948:"IFCELLIPSEPROFILEDEF",1658829314:"IFCENERGYCONVERSIONDEVICE",2107101300:"IFCENERGYCONVERSIONDEVICETYPE",2814081492:"IFCENGINE",132023988:"IFCENGINETYPE",3747195512:"IFCEVAPORATIVECOOLER",3174744832:"IFCEVAPORATIVECOOLERTYPE",484807127:"IFCEVAPORATOR",3390157468:"IFCEVAPORATORTYPE",4148101412:"IFCEVENT",211053100:"IFCEVENTTIME",4024345920:"IFCEVENTTYPE",297599258:"IFCEXTENDEDPROPERTIES",4294318154:"IFCEXTERNALINFORMATION",3200245327:"IFCEXTERNALREFERENCE",1437805879:"IFCEXTERNALREFERENCERELATIONSHIP",1209101575:"IFCEXTERNALSPATIALELEMENT",2853485674:"IFCEXTERNALSPATIALSTRUCTUREELEMENT",2242383968:"IFCEXTERNALLYDEFINEDHATCHSTYLE",1040185647:"IFCEXTERNALLYDEFINEDSURFACESTYLE",3548104201:"IFCEXTERNALLYDEFINEDTEXTFONT",477187591:"IFCEXTRUDEDAREASOLID",2804161546:"IFCEXTRUDEDAREASOLIDTAPERED",2556980723:"IFCFACE",2047409740:"IFCFACEBASEDSURFACEMODEL",1809719519:"IFCFACEBOUND",803316827:"IFCFACEOUTERBOUND",3008276851:"IFCFACESURFACE",807026263:"IFCFACETEDBREP",3737207727:"IFCFACETEDBREPWITHVOIDS",24185140:"IFCFACILITY",1310830890:"IFCFACILITYPART",4219587988:"IFCFAILURECONNECTIONCONDITION",3415622556:"IFCFAN",346874300:"IFCFANTYPE",647756555:"IFCFASTENER",2489546625:"IFCFASTENERTYPE",2827207264:"IFCFEATUREELEMENT",2143335405:"IFCFEATUREELEMENTADDITION",1287392070:"IFCFEATUREELEMENTSUBTRACTION",738692330:"IFCFILLAREASTYLE",374418227:"IFCFILLAREASTYLEHATCHING",315944413:"IFCFILLAREASTYLETILES",819412036:"IFCFILTER",1810631287:"IFCFILTERTYPE",1426591983:"IFCFIRESUPPRESSIONTERMINAL",4222183408:"IFCFIRESUPPRESSIONTERMINALTYPE",2652556860:"IFCFIXEDREFERENCESWEPTAREASOLID",2058353004:"IFCFLOWCONTROLLER",3907093117:"IFCFLOWCONTROLLERTYPE",4278956645:"IFCFLOWFITTING",3198132628:"IFCFLOWFITTINGTYPE",182646315:"IFCFLOWINSTRUMENT",4037862832:"IFCFLOWINSTRUMENTTYPE",2188021234:"IFCFLOWMETER",3815607619:"IFCFLOWMETERTYPE",3132237377:"IFCFLOWMOVINGDEVICE",1482959167:"IFCFLOWMOVINGDEVICETYPE",987401354:"IFCFLOWSEGMENT",1834744321:"IFCFLOWSEGMENTTYPE",707683696:"IFCFLOWSTORAGEDEVICE",1339347760:"IFCFLOWSTORAGEDEVICETYPE",2223149337:"IFCFLOWTERMINAL",2297155007:"IFCFLOWTERMINALTYPE",3508470533:"IFCFLOWTREATMENTDEVICE",3009222698:"IFCFLOWTREATMENTDEVICETYPE",900683007:"IFCFOOTING",1893162501:"IFCFOOTINGTYPE",263784265:"IFCFURNISHINGELEMENT",4238390223:"IFCFURNISHINGELEMENTTYPE",1509553395:"IFCFURNITURE",1268542332:"IFCFURNITURETYPE",3493046030:"IFCGEOGRAPHICELEMENT",4095422895:"IFCGEOGRAPHICELEMENTTYPE",987898635:"IFCGEOMETRICCURVESET",3448662350:"IFCGEOMETRICREPRESENTATIONCONTEXT",2453401579:"IFCGEOMETRICREPRESENTATIONITEM",4142052618:"IFCGEOMETRICREPRESENTATIONSUBCONTEXT",3590301190:"IFCGEOMETRICSET",3009204131:"IFCGRID",852622518:"IFCGRIDAXIS",178086475:"IFCGRIDPLACEMENT",2706460486:"IFCGROUP",812098782:"IFCHALFSPACESOLID",3319311131:"IFCHEATEXCHANGER",1251058090:"IFCHEATEXCHANGERTYPE",2068733104:"IFCHUMIDIFIER",1806887404:"IFCHUMIDIFIERTYPE",1484403080:"IFCISHAPEPROFILEDEF",3905492369:"IFCIMAGETEXTURE",3570813810:"IFCINDEXEDCOLOURMAP",2571569899:"IFCINDEXEDPOLYCURVE",178912537:"IFCINDEXEDPOLYGONALFACE",2294589976:"IFCINDEXEDPOLYGONALFACEWITHVOIDS",1437953363:"IFCINDEXEDTEXTUREMAP",2133299955:"IFCINDEXEDTRIANGLETEXTUREMAP",4175244083:"IFCINTERCEPTOR",3946677679:"IFCINTERCEPTORTYPE",3113134337:"IFCINTERSECTIONCURVE",2391368822:"IFCINVENTORY",3741457305:"IFCIRREGULARTIMESERIES",3020489413:"IFCIRREGULARTIMESERIESVALUE",2176052936:"IFCJUNCTIONBOX",4288270099:"IFCJUNCTIONBOXTYPE",572779678:"IFCLSHAPEPROFILEDEF",3827777499:"IFCLABORRESOURCE",428585644:"IFCLABORRESOURCETYPE",1585845231:"IFCLAGTIME",76236018:"IFCLAMP",1051575348:"IFCLAMPTYPE",2655187982:"IFCLIBRARYINFORMATION",3452421091:"IFCLIBRARYREFERENCE",4162380809:"IFCLIGHTDISTRIBUTIONDATA",629592764:"IFCLIGHTFIXTURE",1161773419:"IFCLIGHTFIXTURETYPE",1566485204:"IFCLIGHTINTENSITYDISTRIBUTION",1402838566:"IFCLIGHTSOURCE",125510826:"IFCLIGHTSOURCEAMBIENT",2604431987:"IFCLIGHTSOURCEDIRECTIONAL",4266656042:"IFCLIGHTSOURCEGONIOMETRIC",1520743889:"IFCLIGHTSOURCEPOSITIONAL",3422422726:"IFCLIGHTSOURCESPOT",1281925730:"IFCLINE",3092502836:"IFCLINESEGMENT2D",388784114:"IFCLINEARPLACEMENT",1154579445:"IFCLINEARPOSITIONINGELEMENT",2624227202:"IFCLOCALPLACEMENT",1008929658:"IFCLOOP",1425443689:"IFCMANIFOLDSOLIDBREP",3057273783:"IFCMAPCONVERSION",2347385850:"IFCMAPPEDITEM",1838606355:"IFCMATERIAL",1847130766:"IFCMATERIALCLASSIFICATIONRELATIONSHIP",3708119e3:"IFCMATERIALCONSTITUENT",2852063980:"IFCMATERIALCONSTITUENTSET",760658860:"IFCMATERIALDEFINITION",2022407955:"IFCMATERIALDEFINITIONREPRESENTATION",248100487:"IFCMATERIALLAYER",3303938423:"IFCMATERIALLAYERSET",1303795690:"IFCMATERIALLAYERSETUSAGE",1847252529:"IFCMATERIALLAYERWITHOFFSETS",2199411900:"IFCMATERIALLIST",2235152071:"IFCMATERIALPROFILE",164193824:"IFCMATERIALPROFILESET",3079605661:"IFCMATERIALPROFILESETUSAGE",3404854881:"IFCMATERIALPROFILESETUSAGETAPERING",552965576:"IFCMATERIALPROFILEWITHOFFSETS",3265635763:"IFCMATERIALPROPERTIES",853536259:"IFCMATERIALRELATIONSHIP",1507914824:"IFCMATERIALUSAGEDEFINITION",2597039031:"IFCMEASUREWITHUNIT",377706215:"IFCMECHANICALFASTENER",2108223431:"IFCMECHANICALFASTENERTYPE",1437502449:"IFCMEDICALDEVICE",1114901282:"IFCMEDICALDEVICETYPE",1073191201:"IFCMEMBER",1911478936:"IFCMEMBERSTANDARDCASE",3181161470:"IFCMEMBERTYPE",3368373690:"IFCMETRIC",2998442950:"IFCMIRROREDPROFILEDEF",2706619895:"IFCMONETARYUNIT",2474470126:"IFCMOTORCONNECTION",977012517:"IFCMOTORCONNECTIONTYPE",1918398963:"IFCNAMEDUNIT",3888040117:"IFCOBJECT",219451334:"IFCOBJECTDEFINITION",3701648758:"IFCOBJECTPLACEMENT",2251480897:"IFCOBJECTIVE",4143007308:"IFCOCCUPANT",590820931:"IFCOFFSETCURVE",3388369263:"IFCOFFSETCURVE2D",3505215534:"IFCOFFSETCURVE3D",2485787929:"IFCOFFSETCURVEBYDISTANCES",2665983363:"IFCOPENSHELL",3588315303:"IFCOPENINGELEMENT",3079942009:"IFCOPENINGSTANDARDCASE",4251960020:"IFCORGANIZATION",1411181986:"IFCORGANIZATIONRELATIONSHIP",643959842:"IFCORIENTATIONEXPRESSION",1029017970:"IFCORIENTEDEDGE",144952367:"IFCOUTERBOUNDARYCURVE",3694346114:"IFCOUTLET",2837617999:"IFCOUTLETTYPE",1207048766:"IFCOWNERHISTORY",2529465313:"IFCPARAMETERIZEDPROFILEDEF",2519244187:"IFCPATH",1682466193:"IFCPCURVE",2382730787:"IFCPERFORMANCEHISTORY",3566463478:"IFCPERMEABLECOVERINGPROPERTIES",3327091369:"IFCPERMIT",2077209135:"IFCPERSON",101040310:"IFCPERSONANDORGANIZATION",3021840470:"IFCPHYSICALCOMPLEXQUANTITY",2483315170:"IFCPHYSICALQUANTITY",2226359599:"IFCPHYSICALSIMPLEQUANTITY",1687234759:"IFCPILE",1158309216:"IFCPILETYPE",310824031:"IFCPIPEFITTING",804291784:"IFCPIPEFITTINGTYPE",3612865200:"IFCPIPESEGMENT",4231323485:"IFCPIPESEGMENTTYPE",597895409:"IFCPIXELTEXTURE",2004835150:"IFCPLACEMENT",603570806:"IFCPLANARBOX",1663979128:"IFCPLANAREXTENT",220341763:"IFCPLANE",3171933400:"IFCPLATE",1156407060:"IFCPLATESTANDARDCASE",4017108033:"IFCPLATETYPE",2067069095:"IFCPOINT",4022376103:"IFCPOINTONCURVE",1423911732:"IFCPOINTONSURFACE",2924175390:"IFCPOLYLOOP",2775532180:"IFCPOLYGONALBOUNDEDHALFSPACE",2839578677:"IFCPOLYGONALFACESET",3724593414:"IFCPOLYLINE",3740093272:"IFCPORT",1946335990:"IFCPOSITIONINGELEMENT",3355820592:"IFCPOSTALADDRESS",759155922:"IFCPREDEFINEDCOLOUR",2559016684:"IFCPREDEFINEDCURVEFONT",3727388367:"IFCPREDEFINEDITEM",3778827333:"IFCPREDEFINEDPROPERTIES",3967405729:"IFCPREDEFINEDPROPERTYSET",1775413392:"IFCPREDEFINEDTEXTFONT",677532197:"IFCPRESENTATIONITEM",2022622350:"IFCPRESENTATIONLAYERASSIGNMENT",1304840413:"IFCPRESENTATIONLAYERWITHSTYLE",3119450353:"IFCPRESENTATIONSTYLE",2417041796:"IFCPRESENTATIONSTYLEASSIGNMENT",2744685151:"IFCPROCEDURE",569719735:"IFCPROCEDURETYPE",2945172077:"IFCPROCESS",4208778838:"IFCPRODUCT",673634403:"IFCPRODUCTDEFINITIONSHAPE",2095639259:"IFCPRODUCTREPRESENTATION",3958567839:"IFCPROFILEDEF",2802850158:"IFCPROFILEPROPERTIES",103090709:"IFCPROJECT",653396225:"IFCPROJECTLIBRARY",2904328755:"IFCPROJECTORDER",3843373140:"IFCPROJECTEDCRS",3651124850:"IFCPROJECTIONELEMENT",2598011224:"IFCPROPERTY",986844984:"IFCPROPERTYABSTRACTION",871118103:"IFCPROPERTYBOUNDEDVALUE",1680319473:"IFCPROPERTYDEFINITION",148025276:"IFCPROPERTYDEPENDENCYRELATIONSHIP",4166981789:"IFCPROPERTYENUMERATEDVALUE",3710013099:"IFCPROPERTYENUMERATION",2752243245:"IFCPROPERTYLISTVALUE",941946838:"IFCPROPERTYREFERENCEVALUE",1451395588:"IFCPROPERTYSET",3357820518:"IFCPROPERTYSETDEFINITION",492091185:"IFCPROPERTYSETTEMPLATE",3650150729:"IFCPROPERTYSINGLEVALUE",110355661:"IFCPROPERTYTABLEVALUE",3521284610:"IFCPROPERTYTEMPLATE",1482703590:"IFCPROPERTYTEMPLATEDEFINITION",738039164:"IFCPROTECTIVEDEVICE",2295281155:"IFCPROTECTIVEDEVICETRIPPINGUNIT",655969474:"IFCPROTECTIVEDEVICETRIPPINGUNITTYPE",1842657554:"IFCPROTECTIVEDEVICETYPE",3219374653:"IFCPROXY",90941305:"IFCPUMP",2250791053:"IFCPUMPTYPE",2044713172:"IFCQUANTITYAREA",2093928680:"IFCQUANTITYCOUNT",931644368:"IFCQUANTITYLENGTH",2090586900:"IFCQUANTITYSET",3252649465:"IFCQUANTITYTIME",2405470396:"IFCQUANTITYVOLUME",825690147:"IFCQUANTITYWEIGHT",2262370178:"IFCRAILING",2893384427:"IFCRAILINGTYPE",3024970846:"IFCRAMP",3283111854:"IFCRAMPFLIGHT",2324767716:"IFCRAMPFLIGHTTYPE",1469900589:"IFCRAMPTYPE",1232101972:"IFCRATIONALBSPLINECURVEWITHKNOTS",683857671:"IFCRATIONALBSPLINESURFACEWITHKNOTS",2770003689:"IFCRECTANGLEHOLLOWPROFILEDEF",3615266464:"IFCRECTANGLEPROFILEDEF",2798486643:"IFCRECTANGULARPYRAMID",3454111270:"IFCRECTANGULARTRIMMEDSURFACE",3915482550:"IFCRECURRENCEPATTERN",2433181523:"IFCREFERENCE",4021432810:"IFCREFERENT",3413951693:"IFCREGULARTIMESERIES",1580146022:"IFCREINFORCEMENTBARPROPERTIES",3765753017:"IFCREINFORCEMENTDEFINITIONPROPERTIES",979691226:"IFCREINFORCINGBAR",2572171363:"IFCREINFORCINGBARTYPE",3027567501:"IFCREINFORCINGELEMENT",964333572:"IFCREINFORCINGELEMENTTYPE",2320036040:"IFCREINFORCINGMESH",2310774935:"IFCREINFORCINGMESHTYPE",160246688:"IFCRELAGGREGATES",3939117080:"IFCRELASSIGNS",1683148259:"IFCRELASSIGNSTOACTOR",2495723537:"IFCRELASSIGNSTOCONTROL",1307041759:"IFCRELASSIGNSTOGROUP",1027710054:"IFCRELASSIGNSTOGROUPBYFACTOR",4278684876:"IFCRELASSIGNSTOPROCESS",2857406711:"IFCRELASSIGNSTOPRODUCT",205026976:"IFCRELASSIGNSTORESOURCE",1865459582:"IFCRELASSOCIATES",4095574036:"IFCRELASSOCIATESAPPROVAL",919958153:"IFCRELASSOCIATESCLASSIFICATION",2728634034:"IFCRELASSOCIATESCONSTRAINT",982818633:"IFCRELASSOCIATESDOCUMENT",3840914261:"IFCRELASSOCIATESLIBRARY",2655215786:"IFCRELASSOCIATESMATERIAL",826625072:"IFCRELCONNECTS",1204542856:"IFCRELCONNECTSELEMENTS",3945020480:"IFCRELCONNECTSPATHELEMENTS",4201705270:"IFCRELCONNECTSPORTTOELEMENT",3190031847:"IFCRELCONNECTSPORTS",2127690289:"IFCRELCONNECTSSTRUCTURALACTIVITY",1638771189:"IFCRELCONNECTSSTRUCTURALMEMBER",504942748:"IFCRELCONNECTSWITHECCENTRICITY",3678494232:"IFCRELCONNECTSWITHREALIZINGELEMENTS",3242617779:"IFCRELCONTAINEDINSPATIALSTRUCTURE",886880790:"IFCRELCOVERSBLDGELEMENTS",2802773753:"IFCRELCOVERSSPACES",2565941209:"IFCRELDECLARES",2551354335:"IFCRELDECOMPOSES",693640335:"IFCRELDEFINES",1462361463:"IFCRELDEFINESBYOBJECT",4186316022:"IFCRELDEFINESBYPROPERTIES",307848117:"IFCRELDEFINESBYTEMPLATE",781010003:"IFCRELDEFINESBYTYPE",3940055652:"IFCRELFILLSELEMENT",279856033:"IFCRELFLOWCONTROLELEMENTS",427948657:"IFCRELINTERFERESELEMENTS",3268803585:"IFCRELNESTS",1441486842:"IFCRELPOSITIONS",750771296:"IFCRELPROJECTSELEMENT",1245217292:"IFCRELREFERENCEDINSPATIALSTRUCTURE",4122056220:"IFCRELSEQUENCE",366585022:"IFCRELSERVICESBUILDINGS",3451746338:"IFCRELSPACEBOUNDARY",3523091289:"IFCRELSPACEBOUNDARY1STLEVEL",1521410863:"IFCRELSPACEBOUNDARY2NDLEVEL",1401173127:"IFCRELVOIDSELEMENT",478536968:"IFCRELATIONSHIP",816062949:"IFCREPARAMETRISEDCOMPOSITECURVESEGMENT",1076942058:"IFCREPRESENTATION",3377609919:"IFCREPRESENTATIONCONTEXT",3008791417:"IFCREPRESENTATIONITEM",1660063152:"IFCREPRESENTATIONMAP",2914609552:"IFCRESOURCE",2943643501:"IFCRESOURCEAPPROVALRELATIONSHIP",1608871552:"IFCRESOURCECONSTRAINTRELATIONSHIP",2439245199:"IFCRESOURCELEVELRELATIONSHIP",1042787934:"IFCRESOURCETIME",1856042241:"IFCREVOLVEDAREASOLID",3243963512:"IFCREVOLVEDAREASOLIDTAPERED",4158566097:"IFCRIGHTCIRCULARCONE",3626867408:"IFCRIGHTCIRCULARCYLINDER",2016517767:"IFCROOF",2781568857:"IFCROOFTYPE",2341007311:"IFCROOT",2778083089:"IFCROUNDEDRECTANGLEPROFILEDEF",448429030:"IFCSIUNIT",3053780830:"IFCSANITARYTERMINAL",1768891740:"IFCSANITARYTERMINALTYPE",1054537805:"IFCSCHEDULINGTIME",2157484638:"IFCSEAMCURVE",2042790032:"IFCSECTIONPROPERTIES",4165799628:"IFCSECTIONREINFORCEMENTPROPERTIES",1862484736:"IFCSECTIONEDSOLID",1290935644:"IFCSECTIONEDSOLIDHORIZONTAL",1509187699:"IFCSECTIONEDSPINE",4086658281:"IFCSENSOR",1783015770:"IFCSENSORTYPE",1329646415:"IFCSHADINGDEVICE",4074543187:"IFCSHADINGDEVICETYPE",867548509:"IFCSHAPEASPECT",3982875396:"IFCSHAPEMODEL",4240577450:"IFCSHAPEREPRESENTATION",4124623270:"IFCSHELLBASEDSURFACEMODEL",3692461612:"IFCSIMPLEPROPERTY",3663146110:"IFCSIMPLEPROPERTYTEMPLATE",4097777520:"IFCSITE",1529196076:"IFCSLAB",3127900445:"IFCSLABELEMENTEDCASE",3027962421:"IFCSLABSTANDARDCASE",2533589738:"IFCSLABTYPE",2609359061:"IFCSLIPPAGECONNECTIONCONDITION",3420628829:"IFCSOLARDEVICE",1072016465:"IFCSOLARDEVICETYPE",723233188:"IFCSOLIDMODEL",3856911033:"IFCSPACE",1999602285:"IFCSPACEHEATER",1305183839:"IFCSPACEHEATERTYPE",3812236995:"IFCSPACETYPE",1412071761:"IFCSPATIALELEMENT",710998568:"IFCSPATIALELEMENTTYPE",2706606064:"IFCSPATIALSTRUCTUREELEMENT",3893378262:"IFCSPATIALSTRUCTUREELEMENTTYPE",463610769:"IFCSPATIALZONE",2481509218:"IFCSPATIALZONETYPE",451544542:"IFCSPHERE",4015995234:"IFCSPHERICALSURFACE",1404847402:"IFCSTACKTERMINAL",3112655638:"IFCSTACKTERMINALTYPE",331165859:"IFCSTAIR",4252922144:"IFCSTAIRFLIGHT",1039846685:"IFCSTAIRFLIGHTTYPE",338393293:"IFCSTAIRTYPE",682877961:"IFCSTRUCTURALACTION",3544373492:"IFCSTRUCTURALACTIVITY",2515109513:"IFCSTRUCTURALANALYSISMODEL",1179482911:"IFCSTRUCTURALCONNECTION",2273995522:"IFCSTRUCTURALCONNECTIONCONDITION",1004757350:"IFCSTRUCTURALCURVEACTION",4243806635:"IFCSTRUCTURALCURVECONNECTION",214636428:"IFCSTRUCTURALCURVEMEMBER",2445595289:"IFCSTRUCTURALCURVEMEMBERVARYING",2757150158:"IFCSTRUCTURALCURVEREACTION",3136571912:"IFCSTRUCTURALITEM",1807405624:"IFCSTRUCTURALLINEARACTION",2162789131:"IFCSTRUCTURALLOAD",385403989:"IFCSTRUCTURALLOADCASE",3478079324:"IFCSTRUCTURALLOADCONFIGURATION",1252848954:"IFCSTRUCTURALLOADGROUP",1595516126:"IFCSTRUCTURALLOADLINEARFORCE",609421318:"IFCSTRUCTURALLOADORRESULT",2668620305:"IFCSTRUCTURALLOADPLANARFORCE",2473145415:"IFCSTRUCTURALLOADSINGLEDISPLACEMENT",1973038258:"IFCSTRUCTURALLOADSINGLEDISPLACEMENTDISTORTION",1597423693:"IFCSTRUCTURALLOADSINGLEFORCE",1190533807:"IFCSTRUCTURALLOADSINGLEFORCEWARPING",2525727697:"IFCSTRUCTURALLOADSTATIC",3408363356:"IFCSTRUCTURALLOADTEMPERATURE",530289379:"IFCSTRUCTURALMEMBER",1621171031:"IFCSTRUCTURALPLANARACTION",2082059205:"IFCSTRUCTURALPOINTACTION",734778138:"IFCSTRUCTURALPOINTCONNECTION",1235345126:"IFCSTRUCTURALPOINTREACTION",3689010777:"IFCSTRUCTURALREACTION",2986769608:"IFCSTRUCTURALRESULTGROUP",3657597509:"IFCSTRUCTURALSURFACEACTION",1975003073:"IFCSTRUCTURALSURFACECONNECTION",3979015343:"IFCSTRUCTURALSURFACEMEMBER",2218152070:"IFCSTRUCTURALSURFACEMEMBERVARYING",603775116:"IFCSTRUCTURALSURFACEREACTION",2830218821:"IFCSTYLEMODEL",3958052878:"IFCSTYLEDITEM",3049322572:"IFCSTYLEDREPRESENTATION",148013059:"IFCSUBCONTRACTRESOURCE",4095615324:"IFCSUBCONTRACTRESOURCETYPE",2233826070:"IFCSUBEDGE",2513912981:"IFCSURFACE",699246055:"IFCSURFACECURVE",2028607225:"IFCSURFACECURVESWEPTAREASOLID",3101698114:"IFCSURFACEFEATURE",2809605785:"IFCSURFACEOFLINEAREXTRUSION",4124788165:"IFCSURFACEOFREVOLUTION",2934153892:"IFCSURFACEREINFORCEMENTAREA",1300840506:"IFCSURFACESTYLE",3303107099:"IFCSURFACESTYLELIGHTING",1607154358:"IFCSURFACESTYLEREFRACTION",1878645084:"IFCSURFACESTYLERENDERING",846575682:"IFCSURFACESTYLESHADING",1351298697:"IFCSURFACESTYLEWITHTEXTURES",626085974:"IFCSURFACETEXTURE",2247615214:"IFCSWEPTAREASOLID",1260650574:"IFCSWEPTDISKSOLID",1096409881:"IFCSWEPTDISKSOLIDPOLYGONAL",230924584:"IFCSWEPTSURFACE",1162798199:"IFCSWITCHINGDEVICE",2315554128:"IFCSWITCHINGDEVICETYPE",2254336722:"IFCSYSTEM",413509423:"IFCSYSTEMFURNITUREELEMENT",1580310250:"IFCSYSTEMFURNITUREELEMENTTYPE",3071757647:"IFCTSHAPEPROFILEDEF",985171141:"IFCTABLE",2043862942:"IFCTABLECOLUMN",531007025:"IFCTABLEROW",812556717:"IFCTANK",5716631:"IFCTANKTYPE",3473067441:"IFCTASK",1549132990:"IFCTASKTIME",2771591690:"IFCTASKTIMERECURRING",3206491090:"IFCTASKTYPE",912023232:"IFCTELECOMADDRESS",3824725483:"IFCTENDON",2347447852:"IFCTENDONANCHOR",3081323446:"IFCTENDONANCHORTYPE",3663046924:"IFCTENDONCONDUIT",2281632017:"IFCTENDONCONDUITTYPE",2415094496:"IFCTENDONTYPE",2387106220:"IFCTESSELLATEDFACESET",901063453:"IFCTESSELLATEDITEM",4282788508:"IFCTEXTLITERAL",3124975700:"IFCTEXTLITERALWITHEXTENT",1447204868:"IFCTEXTSTYLE",1983826977:"IFCTEXTSTYLEFONTMODEL",2636378356:"IFCTEXTSTYLEFORDEFINEDFONT",1640371178:"IFCTEXTSTYLETEXTMODEL",280115917:"IFCTEXTURECOORDINATE",1742049831:"IFCTEXTURECOORDINATEGENERATOR",2552916305:"IFCTEXTUREMAP",1210645708:"IFCTEXTUREVERTEX",3611470254:"IFCTEXTUREVERTEXLIST",1199560280:"IFCTIMEPERIOD",3101149627:"IFCTIMESERIES",581633288:"IFCTIMESERIESVALUE",1377556343:"IFCTOPOLOGICALREPRESENTATIONITEM",1735638870:"IFCTOPOLOGYREPRESENTATION",1935646853:"IFCTOROIDALSURFACE",3825984169:"IFCTRANSFORMER",1692211062:"IFCTRANSFORMERTYPE",2595432518:"IFCTRANSITIONCURVESEGMENT2D",1620046519:"IFCTRANSPORTELEMENT",2097647324:"IFCTRANSPORTELEMENTTYPE",2715220739:"IFCTRAPEZIUMPROFILEDEF",2916149573:"IFCTRIANGULATEDFACESET",1229763772:"IFCTRIANGULATEDIRREGULARNETWORK",3593883385:"IFCTRIMMEDCURVE",3026737570:"IFCTUBEBUNDLE",1600972822:"IFCTUBEBUNDLETYPE",1628702193:"IFCTYPEOBJECT",3736923433:"IFCTYPEPROCESS",2347495698:"IFCTYPEPRODUCT",3698973494:"IFCTYPERESOURCE",427810014:"IFCUSHAPEPROFILEDEF",180925521:"IFCUNITASSIGNMENT",630975310:"IFCUNITARYCONTROLELEMENT",3179687236:"IFCUNITARYCONTROLELEMENTTYPE",4292641817:"IFCUNITARYEQUIPMENT",1911125066:"IFCUNITARYEQUIPMENTTYPE",4207607924:"IFCVALVE",728799441:"IFCVALVETYPE",1417489154:"IFCVECTOR",2799835756:"IFCVERTEX",2759199220:"IFCVERTEXLOOP",1907098498:"IFCVERTEXPOINT",1530820697:"IFCVIBRATIONDAMPER",3956297820:"IFCVIBRATIONDAMPERTYPE",2391383451:"IFCVIBRATIONISOLATOR",3313531582:"IFCVIBRATIONISOLATORTYPE",2769231204:"IFCVIRTUALELEMENT",891718957:"IFCVIRTUALGRIDINTERSECTION",926996030:"IFCVOIDINGFEATURE",2391406946:"IFCWALL",4156078855:"IFCWALLELEMENTEDCASE",3512223829:"IFCWALLSTANDARDCASE",1898987631:"IFCWALLTYPE",4237592921:"IFCWASTETERMINAL",1133259667:"IFCWASTETERMINALTYPE",3304561284:"IFCWINDOW",336235671:"IFCWINDOWLININGPROPERTIES",512836454:"IFCWINDOWPANELPROPERTIES",486154966:"IFCWINDOWSTANDARDCASE",1299126871:"IFCWINDOWSTYLE",4009809668:"IFCWINDOWTYPE",4088093105:"IFCWORKCALENDAR",1028945134:"IFCWORKCONTROL",4218914973:"IFCWORKPLAN",3342526732:"IFCWORKSCHEDULE",1236880293:"IFCWORKTIME",2543172580:"IFCZSHAPEPROFILEDEF",1033361043:"IFCZONE"},I8=class{constructor(e){this.state=e}getExpressId(e,t){if(!e.index)return;let i=e.index.array;return e.attributes[YRe].getX(i[3*t])}getItemProperties(e,t,i=!1){return this.state.useJSON?Br({},this.state.models[e].jsonData[t]):this.state.api.GetLine(e,t,i)}getAllItemsOfType(e,t,i){return this.state.useJSON?this.getAllItemsOfTypeJSON(e,t,i):this.getAllItemsOfTypeWebIfcAPI(e,t,i)}getPropertySets(e,t,i=!1){return this.state.useJSON?this.getPropertyJSON(e,t,i,ql.psets):this.getPropertyWebIfcAPI(e,t,i,ql.psets)}getTypeProperties(e,t,i=!1){return this.state.useJSON?this.getPropertyJSON(e,t,i,ql.type):this.getPropertyWebIfcAPI(e,t,i,ql.type)}getMaterialsProperties(e,t,i=!1){return this.state.useJSON?this.getPropertyJSON(e,t,i,ql.materials):this.getPropertyWebIfcAPI(e,t,i,ql.materials)}getSpatialStructure(e){return this.state.useJSON?this.getSpatialStructureJSON(e):this.getSpatialStructureWebIfcAPI(e)}getSpatialStructureJSON(e){let t=this.getSpatialTreeChunks(e),i=this.getAllItemsOfTypeJSON(e,mA,!1)[0],r=this.newIfcProject(i);return this.getSpatialNode(e,r,t),Br({},r)}getSpatialStructureWebIfcAPI(e){let t=this.getSpatialTreeChunks(e),i=this.state.api.GetLineIDsWithType(e,mA).get(0),r=this.newIfcProject(i);return this.getSpatialNode(e,r,t),r}getAllItemsOfTypeJSON(e,t,i){let r=this.state.models[e].jsonData,n=oNt[t];if(!n)throw new Error(`Type not found: ${t}`);return this.filterJSONItemsByType(r,n,i)}filterJSONItemsByType(e,t,i){let r=[];return Object.keys(e).forEach((n=>{let s=parseInt(n);e[s].type.toUpperCase()===t&&r.push(i?Br({},e[s]):s)})),r}getItemsByIDJSON(e,t){let i=this.state.models[e].jsonData,r=[];return t.forEach((e=>r.push(Br({},i[e])))),r}getPropertyJSON(e,t,i=!1,r){let n=this.getAllRelatedItemsOfTypeJSON(e,t,r),s=this.getItemsByIDJSON(e,n);return i&&s.forEach((t=>this.getJSONReferencesRecursively(e,t))),s}getJSONReferencesRecursively(e,t){if(null==t)return;let i=Object.keys(t);for(let r=0;r(5===t.type&&(t=this.getItemsByIDJSON(e,[t.value])[0],this.getJSONReferencesRecursively(e,t)),t)))}getPropertyWebIfcAPI(e,t,i=!1,r){return this.getAllRelatedItemsOfTypeWebIfcAPI(e,t,r).map((t=>this.state.api.GetLine(e,t,i)))}getAllItemsOfTypeWebIfcAPI(e,t,i){let r=[],n=this.state.api.GetLineIDsWithType(e,t);for(let e=0;ethis.state.api.GetLine(e,t))):r}newIfcProject(e){return{expressID:e,type:"IFCPROJECT",children:[]}}getSpatialTreeChunks(e){let t={};return this.state.useJSON?(this.getChunksJSON(e,t,ql.aggregates),this.getChunksJSON(e,t,ql.spatial)):(this.getChunksWebIfcAPI(e,t,ql.aggregates),this.getChunksWebIfcAPI(e,t,ql.spatial)),t}getChunksJSON(e,t,i){this.getAllItemsOfTypeJSON(e,i.name,!0).forEach((e=>{this.saveChunk(t,i,e)}))}getChunksWebIfcAPI(e,t,i){let r=this.state.api.GetLineIDsWithType(e,i.name);for(let n=0;ne.value));null==e[r]?e[r]=n:e[r]=e[r].concat(n)}getSpatialNode(e,t,i){this.getChildren(e,t,i,ql.aggregates),this.getChildren(e,t,i,ql.spatial)}getChildren(e,t,i,r){let n=i[t.expressID];null!=n&&(t[r.key]=n.map((t=>{let r=this.newNode(e,t);return this.getSpatialNode(e,r,i),r})))}newNode(e,t){return{expressID:t,type:this.getNodeType(e,t),children:[]}}getNodeType(e,t){if(this.state.useJSON)return this.state.models[e].jsonData[t].type;let i=this.state.models[e].types[t];return D8[i]}getAllRelatedItemsOfTypeJSON(e,t,i){let r=this.getAllItemsOfTypeJSON(e,i.name,!0),n=[];return r.forEach((e=>{this.isRelated(t,e,i)&&this.getRelated(e,i,n)})),n}getAllRelatedItemsOfTypeWebIfcAPI(e,t,i){let r=this.state.api.GetLineIDsWithType(e,i.name),n=[];for(let s=0;si.push(e.value))):i.push(r.value)}isRelated(e,t,i){let r=t[i.related];return Array.isArray(r)?r.map((e=>e.value)).includes(e):r.value===e}},_8=class{constructor(e){this.state=e}getAllTypes(){for(let e in this.state.models){let t=this.state.models[e].types;0==Object.keys(t).length&&this.getAllTypesOfModel(parseInt(e))}}getAllTypesOfModel(e){let t=Object.keys(D8).map((e=>parseInt(e))),i=this.state.models[e].types;t.forEach((t=>{let r=this.state.api.GetLineIDsWithType(e,t);for(let e=0;e{r[e]&&n.push(...r[e])}));let s=this.getCoordinates(e),a=this.modelCoordinates[e];i?n.forEach((e=>s.set([0,0,0],e))):n.forEach((e=>s.set([a[e],a[e+1],a[e+2]],e))),this.getAttributes(e).position.needsUpdate=!0}showAllItems(e){this.modelCoordinates[e]&&(this.resetCoordinates(e),this.getAttributes(e).position.needsUpdate=!0)}hideAllItems(e){this.getCoordinates(e).fill(0),this.getAttributes(e).position.needsUpdate=!0}initializeCoordinates(e){let t=this.getCoordinates(e);this.modelCoordinates[e]||(this.modelCoordinates[e]=new Float32Array(t))}resetCoordinates(e){let t=this.modelCoordinates[e];this.getCoordinates(e).set(t)}getCoordinates(e){return this.getAttributes(e).position.array}getAttributes(e){return this.state.models[e].mesh.geometry.attributes}},M8=class{constructor(){this.state={models:[],api:new T8,useJSON:!1},this.BVH=new w8,this.parser=new b8(this.state,this.BVH),this.subsets=new x8(this.state,this.BVH),this.properties=new I8(this.state),this.types=new _8(this.state),this.hider=new R8(this.state)}parse(e){return ht(this,null,(function*(){let t=yield this.parser.parse(e);this.state.useJSON?this.disposeMemory():this.types.getAllTypes(),this.hider.processCoordinates(t.modelID);let i=new S8(t.geometry,t.material);return i.setIFCManager(this),i}))}setWasmPath(e){this.state.api.SetWasmPath(e)}applyWebIfcConfig(e){this.state.webIfcSettings=e}useJSONData(e=!0){this.state.useJSON=e,this.disposeMemory()}addModelJSONData(e,t){let i=this.state.models[e];i&&(i.jsonData=t)}disposeMemory(){this.state.api=null,this.state.api=new T8}setupThreeMeshBVH(e,t,i){this.BVH.initializeMeshBVH(e,t,i)}close(e,t){this.state.api.CloseModel(e),t&&t.remove(this.state.models[e].mesh),delete this.state.models[e]}getExpressId(e,t){return this.properties.getExpressId(e,t)}getAllItemsOfType(e,t,i){return this.properties.getAllItemsOfType(e,t,i)}getItemProperties(e,t,i=!1){return this.properties.getItemProperties(e,t,i)}getPropertySets(e,t,i=!1){return this.properties.getPropertySets(e,t,i)}getTypeProperties(e,t,i=!1){return this.properties.getTypeProperties(e,t,i)}getMaterialsProperties(e,t,i=!1){return this.properties.getMaterialsProperties(e,t,i)}getIfcType(e,t){let i=this.state.models[e].types[t];return D8[i]}getSpatialStructure(e){return this.properties.getSpatialStructure(e)}getSubset(e,t){return this.subsets.getSubset(e,t)}removeSubset(e,t,i){this.subsets.removeSubset(e,t,i)}createSubset(e){return this.subsets.createSubset(e)}hideItems(e,t){this.hider.hideItems(e,t)}hideAllItems(e){this.hider.hideAllItems(e)}showItems(e,t){this.hider.showItems(e,t)}showAllItems(e){this.hider.showAllItems(e)}},VA=class extends ui{constructor(e){super(e),this.ifcManager=new M8}load(e,t,i,r){let n=this,s=new hi(n.manager);s.setPath(n.path),s.setResponseType("arraybuffer"),s.setRequestHeader(n.requestHeader),s.setWithCredentials(n.withCredentials),s.load(e,(function(i){return ht(this,null,(function*(){try{if("string"==typeof i)throw new Error("IFC files must be given as a buffer!");t(yield n.parse(i))}catch(t){r?r(t):console.error(t),n.manager.itemError(e)}}))}),i,r)}parse(e){return this.ifcManager.parse(e)}},zA=class extends ui{constructor(e){super(e)}load(e,t,i,r){let n=this,s=""===this.path?Vs.extractUrlBase(e):this.path,a=new hi(this.manager);a.setPath(this.path),a.setRequestHeader(this.requestHeader),a.setWithCredentials(this.withCredentials),a.load(e,(function(i){try{t(n.parse(i,s))}catch(t){r?r(t):console.error(t),n.manager.itemError(e)}}),i,r)}setMaterialOptions(e){return this.materialOptions=e,this}parse(e,t){let i=e.split("\n"),r={},n=/\s+/,s={};for(let e=0;e=0?t.substring(0,a):t;o=o.toLowerCase();let l=a>=0?t.substring(a+1):"";if(l=l.trim(),"newmtl"===o)r={name:l},s[l]=r;else if("ka"===o||"kd"===o||"ks"===o||"ke"===o){let e=l.split(n,3);r[o]=[parseFloat(e[0]),parseFloat(e[1]),parseFloat(e[2])]}else r[o]=l}let a=new C8(this.resourcePath||t,this.materialOptions);return a.setCrossOrigin(this.crossOrigin),a.setManager(this.manager),a.setMaterials(s),a}},C8=class{constructor(e="",t={}){this.baseUrl=e,this.options=t,this.materialsInfo={},this.materials={},this.materialsArray=[],this.nameLookup={},this.crossOrigin="anonymous",this.side=void 0!==this.options.side?this.options.side:tn,this.wrap=void 0!==this.options.wrap?this.options.wrap:gn}setCrossOrigin(e){return this.crossOrigin=e,this}setManager(e){this.manager=e}setMaterials(e){this.materialsInfo=this.convert(e),this.materials={},this.materialsArray=[],this.nameLookup={}}convert(e){if(!this.options)return e;let t={};for(let i in e){let r=e[i],n={};t[i]=n;for(let e in r){let t=!0,i=r[e],s=e.toLowerCase();switch(s){case"kd":case"ka":case"ks":this.options&&this.options.normalizeRGB&&(i=[i[0]/255,i[1]/255,i[2]/255]),this.options&&this.options.ignoreZeroRGBs&&0===i[0]&&0===i[1]&&0===i[2]&&(t=!1)}t&&(n[s]=i)}}return t}preload(){for(let e in this.materialsInfo)this.create(e)}getIndex(e){return this.nameLookup[e]}getAsArray(){let e=0;for(let t in this.materialsInfo)this.materialsArray[e]=this.create(t),this.nameLookup[t]=e,e++;return this.materialsArray}create(e){return void 0===this.materials[e]&&this.createMaterial_(e),this.materials[e]}createMaterial_(e){let t=this,i=this.materialsInfo[e],r={name:e,side:this.side};function n(e,i){if(r[e])return;let n=t.getTextureParams(i,r),s=t.loadTexture(function(e,t){return"string"!=typeof t||""===t?"":/^https?:\/\//i.test(t)?t:e+t}(t.baseUrl,n.url));s.repeat.copy(n.scale),s.offset.copy(n.offset),s.wrapS=t.wrap,s.wrapT=t.wrap,("map"===e||"emissiveMap"===e)&&(s.encoding=gr),r[e]=s}for(let e in i){let t,s=i[e];if(""!==s)switch(e.toLowerCase()){case"kd":r.color=(new je).fromArray(s).convertSRGBToLinear();break;case"ks":r.specular=(new je).fromArray(s).convertSRGBToLinear();break;case"ke":r.emissive=(new je).fromArray(s).convertSRGBToLinear();break;case"map_kd":n("map",s);break;case"map_ks":n("specularMap",s);break;case"map_ke":n("emissiveMap",s);break;case"norm":n("normalMap",s);break;case"map_bump":case"bump":n("bumpMap",s);break;case"map_d":n("alphaMap",s),r.transparent=!0;break;case"ns":r.shininess=parseFloat(s);break;case"d":t=parseFloat(s),t<1&&(r.opacity=t,r.transparent=!0);break;case"tr":t=parseFloat(s),this.options&&this.options.invertTrProperty&&(t=1-t),t>0&&(r.opacity=1-t,r.transparent=!0)}}return this.materials[e]=new bs(r),this.materials[e]}getTextureParams(e,t){let i,r={scale:new le(1,1),offset:new le(0,0)},n=e.split(/\s+/);return i=n.indexOf("-bm"),i>=0&&(t.bumpScale=parseFloat(n[i+1]),n.splice(i,2)),i=n.indexOf("-s"),i>=0&&(r.scale.set(parseFloat(n[i+1]),parseFloat(n[i+2])),n.splice(i,4)),i=n.indexOf("-o"),i>=0&&(r.offset.set(parseFloat(n[i+1]),parseFloat(n[i+2])),n.splice(i,4)),r.url=n.join(" ").trim(),r}loadTexture(e,t,i,r,n){let s=void 0!==this.manager?this.manager:co,a=s.getHandler(e);null===a&&(a=new xs(s)),a.setCrossOrigin&&a.setCrossOrigin(this.crossOrigin);let o=a.load(e,i,r,n);return void 0!==t&&(o.mapping=t),o}},cNt=/^[og]\s*(.+)?/,uNt=/^mtllib /,hNt=/^usemtl /,pNt=/^usemap /,XRe=/\s+/,$Re=new A,A8=new A,ZRe=new A,KRe=new A,Yl=new A,jA=new je;function dNt(){let e={objects:[],object:{},vertices:[],normals:[],colors:[],uvs:[],materials:{},materialLibraries:[],startObject:function(e,t){if(this.object&&!1===this.object.fromDeclaration)return this.object.name=e,void(this.object.fromDeclaration=!1!==t);let i=this.object&&"function"==typeof this.object.currentMaterial?this.object.currentMaterial():void 0;if(this.object&&"function"==typeof this.object._finalize&&this.object._finalize(!0),this.object={name:e||"",fromDeclaration:!1!==t,geometry:{vertices:[],normals:[],colors:[],uvs:[],hasUVIndices:!1},materials:[],smooth:!0,startMaterial:function(e,t){let i=this._finalize(!1);i&&(i.inherited||i.groupCount<=0)&&this.materials.splice(i.index,1);let r={index:this.materials.length,name:e||"",mtllib:Array.isArray(t)&&t.length>0?t[t.length-1]:"",smooth:void 0!==i?i.smooth:this.smooth,groupStart:void 0!==i?i.groupEnd:0,groupEnd:-1,groupCount:-1,inherited:!1,clone:function(e){let t={index:"number"==typeof e?e:this.index,name:this.name,mtllib:this.mtllib,smooth:this.smooth,groupStart:0,groupEnd:-1,groupCount:-1,inherited:!1};return t.clone=this.clone.bind(t),t}};return this.materials.push(r),r},currentMaterial:function(){if(this.materials.length>0)return this.materials[this.materials.length-1]},_finalize:function(e){let t=this.currentMaterial();if(t&&-1===t.groupEnd&&(t.groupEnd=this.geometry.vertices.length/3,t.groupCount=t.groupEnd-t.groupStart,t.inherited=!1),e&&this.materials.length>1)for(let e=this.materials.length-1;e>=0;e--)this.materials[e].groupCount<=0&&this.materials.splice(e,1);return e&&0===this.materials.length&&this.materials.push({name:"",smooth:this.smooth}),t}},i&&i.name&&"function"==typeof i.clone){let e=i.clone(0);e.inherited=!0,this.object.materials.push(e)}this.objects.push(this.object)},finalize:function(){this.object&&"function"==typeof this.object._finalize&&this.object._finalize(!0)},parseVertexIndex:function(e,t){let i=parseInt(e,10);return 3*(i>=0?i-1:i+t/3)},parseNormalIndex:function(e,t){let i=parseInt(e,10);return 3*(i>=0?i-1:i+t/3)},parseUVIndex:function(e,t){let i=parseInt(e,10);return 2*(i>=0?i-1:i+t/2)},addVertex:function(e,t,i){let r=this.vertices,n=this.object.geometry.vertices;n.push(r[e+0],r[e+1],r[e+2]),n.push(r[t+0],r[t+1],r[t+2]),n.push(r[i+0],r[i+1],r[i+2])},addVertexPoint:function(e){let t=this.vertices;this.object.geometry.vertices.push(t[e+0],t[e+1],t[e+2])},addVertexLine:function(e){let t=this.vertices;this.object.geometry.vertices.push(t[e+0],t[e+1],t[e+2])},addNormal:function(e,t,i){let r=this.normals,n=this.object.geometry.normals;n.push(r[e+0],r[e+1],r[e+2]),n.push(r[t+0],r[t+1],r[t+2]),n.push(r[i+0],r[i+1],r[i+2])},addFaceNormal:function(e,t,i){let r=this.vertices,n=this.object.geometry.normals;$Re.fromArray(r,e),A8.fromArray(r,t),ZRe.fromArray(r,i),Yl.subVectors(ZRe,A8),KRe.subVectors($Re,A8),Yl.cross(KRe),Yl.normalize(),n.push(Yl.x,Yl.y,Yl.z),n.push(Yl.x,Yl.y,Yl.z),n.push(Yl.x,Yl.y,Yl.z)},addColor:function(e,t,i){let r=this.colors,n=this.object.geometry.colors;void 0!==r[e]&&n.push(r[e+0],r[e+1],r[e+2]),void 0!==r[t]&&n.push(r[t+0],r[t+1],r[t+2]),void 0!==r[i]&&n.push(r[i+0],r[i+1],r[i+2])},addUV:function(e,t,i){let r=this.uvs,n=this.object.geometry.uvs;n.push(r[e+0],r[e+1]),n.push(r[t+0],r[t+1]),n.push(r[i+0],r[i+1])},addDefaultUV:function(){let e=this.object.geometry.uvs;e.push(0,0),e.push(0,0),e.push(0,0)},addUVLine:function(e){let t=this.uvs;this.object.geometry.uvs.push(t[e+0],t[e+1])},addFace:function(e,t,i,r,n,s,a,o,l){let h=this.vertices.length,u=this.parseVertexIndex(e,h),c=this.parseVertexIndex(t,h),p=this.parseVertexIndex(i,h);if(this.addVertex(u,c,p),this.addColor(u,c,p),void 0!==a&&""!==a){let e=this.normals.length;u=this.parseNormalIndex(a,e),c=this.parseNormalIndex(o,e),p=this.parseNormalIndex(l,e),this.addNormal(u,c,p)}else this.addFaceNormal(u,c,p);if(void 0!==r&&""!==r){let e=this.uvs.length;u=this.parseUVIndex(r,e),c=this.parseUVIndex(n,e),p=this.parseUVIndex(s,e),this.addUV(u,c,p),this.object.geometry.hasUVIndices=!0}else this.addDefaultUV()},addPointGeometry:function(e){this.object.geometry.type="Points";let t=this.vertices.length;for(let i=0,r=e.length;i=7?(jA.setRGB(parseFloat(e[4]),parseFloat(e[5]),parseFloat(e[6])).convertSRGBToLinear(),t.colors.push(jA.r,jA.g,jA.b)):t.colors.push(void 0,void 0,void 0);break;case"vn":t.normals.push(parseFloat(e[1]),parseFloat(e[2]),parseFloat(e[3]));break;case"vt":t.uvs.push(parseFloat(e[1]),parseFloat(e[2]))}}else if("f"===s){let e=n.slice(1).trim().split(XRe),i=[];for(let t=0,r=e.length;t0){let e=r.split("/");i.push(e)}}let r=i[0];for(let e=1,n=i.length-1;e1){let e=r[1].trim().toLowerCase();t.object.smooth="0"!==e&&"off"!==e}else t.object.smooth=!0;let e=t.object.currentMaterial();e&&(e.smooth=t.object.smooth)}else{if("\0"===n)continue;console.warn('THREE.OBJLoader: Unexpected line: "'+n+'"')}}t.finalize();let n=new ur;if(n.materialLibraries=[].concat(t.materialLibraries),!0==!(1===t.objects.length&&0===t.objects[0].geometry.vertices.length))for(let e=0,i=t.objects.length;e0&&h.setAttribute("normal",new dt(r.normals,3)),r.colors.length>0&&(l=!0,h.setAttribute("color",new dt(r.colors,3))),!0===r.hasUVIndices&&h.setAttribute("uv",new dt(r.uvs,2));let u,c=[];for(let e=0,i=s.length;e1){for(let e=0,t=s.length;e0){let e=new qn({size:1,sizeAttenuation:!1}),i=new lt;i.setAttribute("position",new dt(t.vertices,3)),t.colors.length>0&&void 0!==t.colors[0]&&(i.setAttribute("color",new dt(t.colors,3)),e.vertexColors=!0);let r=new nn(i,e);n.add(r)}return n}},qA=new je,YA=class extends ui{constructor(e){super(e),this.propertyNameMapping={},this.customPropertyMapping={}}load(e,t,i,r){let n=this,s=new hi(this.manager);s.setPath(this.path),s.setResponseType("arraybuffer"),s.setRequestHeader(this.requestHeader),s.setWithCredentials(this.withCredentials),s.load(e,(function(i){try{t(n.parse(i))}catch(t){r?r(t):console.error(t),n.manager.itemError(e)}}),i,r)}setPropertyNameMapping(e){this.propertyNameMapping=e}setCustomPropertyNameMapping(e){this.customPropertyMapping=e}parse(e){function t(e){let t="",i=0,r=/^ply([\s\S]*)end_header(\r\n|\r|\n)/.exec(e);null!==r&&(t=r[1],i=new Blob([r[0]]).size);let n,s={comments:[],elements:[],headerLength:i,objInfo:""},a=t.split(/\r\n|\r|\n/);function o(e,t){let i={type:e[0]};return"list"===i.type?(i.name=e[3],i.countType=e[1],i.itemType=e[2]):i.name=e[1],i.name in t&&(i.name=t[i.name]),i}for(let e=0;ee.name));function i(e){for(let i=0,r=e.length;i=d.count&&(c++,p=0,d=t.elements[c],f=s(d.properties));let n=r(d.properties,i);l(a,d.name,n,f),p++}return o(a)}function o(e){let t=new lt;e.indices.length>0&&t.setIndex(e.indices),t.setAttribute("position",new dt(e.vertices,3)),e.normals.length>0&&t.setAttribute("normal",new dt(e.normals,3)),e.uvs.length>0&&t.setAttribute("uv",new dt(e.uvs,2)),e.colors.length>0&&t.setAttribute("color",new dt(e.colors,3)),e.faceVertexUvs.length>0&&(t=t.toNonIndexed(),t.setAttribute("uv",new dt(e.faceVertexUvs,2)));for(let i of Object.keys(p.customPropertyMapping))e[i].length>0&&t.setAttribute(i,new dt(e[i],p.customPropertyMapping[i].length));return t.computeBoundingSphere(),t}function l(e,t,i,r){if("vertex"===t){e.vertices.push(i[r.attrX],i[r.attrY],i[r.attrZ]),null!==r.attrNX&&null!==r.attrNY&&null!==r.attrNZ&&e.normals.push(i[r.attrNX],i[r.attrNY],i[r.attrNZ]),null!==r.attrS&&null!==r.attrT&&e.uvs.push(i[r.attrS],i[r.attrT]),null!==r.attrR&&null!==r.attrG&&null!==r.attrB&&(qA.setRGB(i[r.attrR]/255,i[r.attrG]/255,i[r.attrB]/255).convertSRGBToLinear(),e.colors.push(qA.r,qA.g,qA.b));for(let t of Object.keys(p.customPropertyMapping))for(let r of p.customPropertyMapping[t])e[t].push(i[r])}else if("face"===t){let t=i.vertex_indices||i.vertex_index,r=i.texcoord;3===t.length?(e.indices.push(t[0],t[1],t[2]),r&&6===r.length&&(e.faceVertexUvs.push(r[0],r[1]),e.faceVertexUvs.push(r[2],r[3]),e.faceVertexUvs.push(r[4],r[5]))):4===t.length&&(e.indices.push(t[0],t[1],t[3]),e.indices.push(t[1],t[2],t[3]))}}function h(e,t){let i={},r=0;for(let n=0;ne.getInt8(t),size:1};case"uint8":case"uchar":return{read:t=>e.getUint8(t),size:1};case"int16":case"short":return{read:t=>e.getInt16(t,i),size:2};case"uint16":case"ushort":return{read:t=>e.getUint16(t,i),size:2};case"int32":case"int":return{read:t=>e.getInt32(t,i),size:4};case"uint32":case"uint":return{read:t=>e.getUint32(t,i),size:4};case"float32":case"float":return{read:t=>e.getFloat32(t,i),size:4};case"float64":case"double":return{read:t=>e.getFloat64(t,i),size:8}}}for(let n=0,s=e.length;n>5&31)/31,r=(e>>10&31)/31)}for(let s=1;s<=3;s++){let a=l+12*s,o=3*e*3+3*(s-1);d[o]=h.getFloat32(a,!0),d[o+1]=h.getFloat32(a+4,!0),d[o+2]=h.getFloat32(a+8,!0),f[o]=u,f[o+1]=p,f[o+2]=m,c&&(n[o]=t,n[o+1]=i,n[o+2]=r)}}return p.setAttribute("position",new Wt(d,3)),p.setAttribute("normal",new Wt(f,3)),c&&(p.setAttribute("color",new Wt(n,3)),p.hasColors=!0,p.alpha=l),p}(i):function(e){let t,i=new lt,r=/solid([\s\S]*?)endsolid/g,n=/facet([\s\S]*?)endfacet/g,s=0,a=/[\s]+([+-]?(?:\d*)(?:\.\d*)?(?:[eE][+-]?\d+)?)/.source,o=new RegExp("vertex"+a+a+a,"g"),l=new RegExp("normal"+a+a+a,"g"),h=[],u=[],c=new A,p=0,d=0,f=0;for(;null!==(t=r.exec(e));){d=f;let e=t[0];for(;null!==(t=n.exec(e));){let e=0,i=0,r=t[0];for(;null!==(t=l.exec(r));)c.x=parseFloat(t[1]),c.y=parseFloat(t[2]),c.z=parseFloat(t[3]),i++;for(;null!==(t=o.exec(r));)h.push(parseFloat(t[1]),parseFloat(t[2]),parseFloat(t[3])),u.push(c.x,c.y,c.z),e++,f++;1!==i&&console.error("THREE.STLLoader: Something isn't right with the normal of face number "+s),3!==e&&console.error("THREE.STLLoader: Something isn't right with the vertices of face number "+s),s++}let r=d,a=f-d;i.addGroup(r,a,p),p++}return i.setAttribute("position",new dt(h,3)),i.setAttribute("normal",new dt(u,3)),i}("string"!=typeof(r=e)?(new TextDecoder).decode(r):r);var r}},IDe=kn(fMe(),1),EMe="3.7.5",INt=EMe,_Nt="function"==typeof atob,SNt="function"==typeof btoa,WT="function"==typeof Buffer,mMe="function"==typeof TextDecoder?new TextDecoder:void 0,gMe="function"==typeof TextEncoder?new TextEncoder:void 0,wNt="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",jI=Array.prototype.slice.call(wNt),QA=(e=>{let t={};return jI.forEach(((e,i)=>t[e]=i)),t})(),RNt=/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/,js=String.fromCharCode.bind(String),vMe="function"==typeof Uint8Array.from?Uint8Array.from.bind(Uint8Array):e=>new Uint8Array(Array.prototype.slice.call(e,0)),bMe=e=>e.replace(/=/g,"").replace(/[+\/]/g,(e=>"+"==e?"-":"_")),xMe=e=>e.replace(/[^A-Za-z0-9\+\/]/g,""),IMe=e=>{let t,i,r,n,s="",a=e.length%3;for(let a=0;a255||(r=e.charCodeAt(a++))>255||(n=e.charCodeAt(a++))>255)throw new TypeError("invalid character found");t=i<<16|r<<8|n,s+=jI[t>>18&63]+jI[t>>12&63]+jI[t>>6&63]+jI[63&t]}return a?s.slice(0,a-3)+"===".substring(a):s},V8=SNt?e=>btoa(e):WT?e=>Buffer.from(e,"binary").toString("base64"):IMe,k8=WT?e=>Buffer.from(e).toString("base64"):e=>{let t=[];for(let i=0,r=e.length;it?bMe(k8(e)):k8(e),MNt=e=>{if(e.length<2)return(t=e.charCodeAt(0))<128?e:t<2048?js(192|t>>>6)+js(128|63&t):js(224|t>>>12&15)+js(128|t>>>6&63)+js(128|63&t);var t=65536+1024*(e.charCodeAt(0)-55296)+(e.charCodeAt(1)-56320);return js(240|t>>>18&7)+js(128|t>>>12&63)+js(128|t>>>6&63)+js(128|63&t)},DNt=/[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g,_Me=e=>e.replace(DNt,MNt),yMe=WT?e=>Buffer.from(e,"utf8").toString("base64"):gMe?e=>k8(gMe.encode(e)):e=>V8(_Me(e)),jT=(e,t=!1)=>t?bMe(yMe(e)):yMe(e),TMe=e=>jT(e,!0),CNt=/[\xC0-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF7][\x80-\xBF]{3}/g,ANt=e=>{switch(e.length){case 4:var t=((7&e.charCodeAt(0))<<18|(63&e.charCodeAt(1))<<12|(63&e.charCodeAt(2))<<6|63&e.charCodeAt(3))-65536;return js(55296+(t>>>10))+js(56320+(1023&t));case 3:return js((15&e.charCodeAt(0))<<12|(63&e.charCodeAt(1))<<6|63&e.charCodeAt(2));default:return js((31&e.charCodeAt(0))<<6|63&e.charCodeAt(1))}},SMe=e=>e.replace(CNt,ANt),wMe=e=>{if(e=e.replace(/\s+/g,""),!RNt.test(e))throw new TypeError("malformed base64.");e+="==".slice(2-(3&e.length));let t,i,r,n="";for(let s=0;s>16&255):64===r?js(t>>16&255,t>>8&255):js(t>>16&255,t>>8&255,255&t);return n},z8=_Nt?e=>atob(xMe(e)):WT?e=>Buffer.from(e,"base64").toString("binary"):wMe,RMe=WT?e=>vMe(Buffer.from(e,"base64")):e=>vMe(z8(e).split("").map((e=>e.charCodeAt(0)))),MMe=e=>RMe(DMe(e)),ONt=WT?e=>Buffer.from(e,"base64").toString("utf8"):mMe?e=>mMe.decode(RMe(e)):e=>SMe(z8(e)),DMe=e=>xMe(e.replace(/[-_]/g,(e=>"-"==e?"+":"/"))),G8=e=>ONt(DMe(e)),PNt=e=>{if("string"!=typeof e)return!1;let t=e.replace(/\s+/g,"").replace(/={0,2}$/,"");return!/[^\s0-9a-zA-Z\+/]/.test(t)||!/[^\s0-9a-zA-Z\-_]/.test(t)},CMe=e=>({value:e,enumerable:!1,writable:!0,configurable:!0}),AMe=function(){let e=(e,t)=>Object.defineProperty(String.prototype,e,CMe(t));e("fromBase64",(function(){return G8(this)})),e("toBase64",(function(e){return jT(this,e)})),e("toBase64URI",(function(){return jT(this,!0)})),e("toBase64URL",(function(){return jT(this,!0)})),e("toUint8Array",(function(){return MMe(this)}))},OMe=function(){let e=(e,t)=>Object.defineProperty(Uint8Array.prototype,e,CMe(t));e("toBase64",(function(e){return eO(this,e)})),e("toBase64URI",(function(){return eO(this,!0)})),e("toBase64URL",(function(){return eO(this,!0)}))},NNt=()=>{AMe(),OMe()},PMe={version:EMe,VERSION:INt,atob:z8,atobPolyfill:wMe,btoa:V8,btoaPolyfill:IMe,fromBase64:G8,toBase64:jT,encode:jT,encodeURI:TMe,encodeURL:TMe,utob:_Me,btou:SMe,decode:G8,isValid:PNt,fromUint8Array:eO,toUint8Array:MMe,extendString:AMe,extendUint8Array:OMe,extendBuiltins:NNt},Kl=kn(KMe(),1),tO=class extends Dp{constructor(e,t={}){let i=t.font;if(void 0===i)super();else{let r=i.generateShapes(e,t.size);t.depth=void 0!==t.height?t.height:50,void 0===t.bevelThickness&&(t.bevelThickness=10),void 0===t.bevelSize&&(t.bevelSize=8),void 0===t.bevelEnabled&&(t.bevelEnabled=!1),super(r,t)}this.type="TextGeometry"}},rO="BYLAYER",j8="BYBLOCK",JMe=(e=>(e[e.Mesh=-1]="Mesh",e[e.MeshWithPattern=0]="MeshWithPattern",e[e.LineWithWidth=1]="LineWithWidth",e[e.Line=2]="Line",e[e.LineWithPattern=3]="LineWithPattern",e[e.Point=4]="Point",e[e.Text=5]="Text",e))(JMe||{}),y0=["INSERT","DIMENSION"],Abr=kn(iDe(),1),iO=[0,16711680,16776960,65280,65535,255,16711935,16777215,8421504,12632256,16711680,16744319,13369344,13395558,10027008,10046540,8323072,8339263,4980736,4990502,16727808,16752511,13382400,13401958,10036736,10051404,8331008,8343359,4985600,4992806,16744192,16760703,13395456,13408614,10046464,10056268,8339200,8347455,4990464,4995366,16760576,16768895,13408512,13415014,10056192,10061132,8347392,8351551,4995328,4997670,16776960,16777087,13421568,13421670,10000384,10000460,8355584,8355647,5000192,5000230,12582656,14679935,10079232,11717734,7510016,8755276,6258432,7307071,3755008,4344870,8388352,12582783,6736896,10079334,5019648,7510092,4161280,6258495,2509824,3755046,4194048,10485631,3394560,8375398,2529280,6264908,2064128,5209919,1264640,3099686,65280,8388479,52224,6736998,38912,5019724,32512,4161343,19456,2509862,65343,8388511,52275,6737023,38950,5019743,32543,4161359,19475,2509871,65407,8388543,52326,6737049,38988,5019762,32575,4161375,19494,2509881,65471,8388575,52377,6737074,39026,5019781,32607,4161391,19513,2509890,65535,8388607,52428,6737100,39064,5019800,32639,4161407,19532,2509900,49151,8380415,39372,6730444,29336,5014936,24447,4157311,14668,2507340,32767,8372223,26316,6724044,19608,5010072,16255,4153215,9804,2505036,16383,8364031,13260,6717388,9880,5005208,8063,4149119,4940,2502476,255,8355839,204,6710988,152,5000344,127,4145023,76,2500172,4129023,10452991,3342540,8349388,2490520,6245528,2031743,5193599,1245260,3089996,8323327,12550143,6684876,10053324,4980888,7490712,4128895,6242175,2490444,3745356,12517631,14647295,10027212,11691724,7471256,8735896,6226047,7290751,3735628,4335180,16711935,16744447,13369548,13395660,9961624,9981080,8323199,8339327,4980812,4990540,16711871,16744415,13369497,13395634,9961586,9981061,8323167,8339311,4980793,4990530,16711807,16744383,13369446,13395609,9961548,9981042,8323135,8339295,4980774,4990521,16711743,16744351,13369395,13395583,9961510,9981023,8323103,8339279,4980755,4990511,3355443,5987163,8684676,11382189,14079702,16777215],qT=class{constructor(){this.pointer=0,this.eof=!1}},nDe=1e3,KI=class extends qT{constructor(e){super(),this.int8Array=new Int8Array(nDe),this.caches=new Map,this.reader=new Cf(e);let t=this.reader.readBytes(22),i="";for(let e=0;e<18;e++)i+=String.fromCharCode(t[e]);if("AutoCAD Binary DXF"!=i)throw new Error("Invalid DXF file")}next(){if(!this.hasNext())throw this.eof?new Error("Cannot call 'next' after EOF group has been read"):new Error("Unexpected end of input: EOF group not read before end of file.");let e={code:this.reader.readInt16()};return e.value=this.parseGroupValue(e.code),0===e.code&&"EOF"===e.value&&(this.eof=!0),this.lastReadGroup=e,e}hasNext(){return!this.eof&&!this.reader.IsEnd()}isEOF(){return this.eof}parseGroupValue(e){if(e>=0&&e<=9)return this.readNullTerminatedString();if(e>=10&&e<=59)return this.reader.readFloat64();if(e>=60&&e<=79)return this.reader.readInt16();if(e>=90&&e<=99)return this.reader.readInt32();if(e>=100&&e<=109)return this.readNullTerminatedString();if(e>=110&&e<=149)return this.reader.readFloat64();if(e>=160&&e<=169)return this.reader.readInt64();if(e>=170&&e<=179)return this.reader.readInt16();if(e>=210&&e<=239)return this.reader.readFloat64();if(e>=270&&e<=289)return this.reader.readInt16();if(e>=290&&e<=299)return this.reader.readInt8()>0;if(e>=300&&e<=309)return this.readNullTerminatedString();if(e>=310&&e<=319){return sDe(this.ReadBinaryData())}if(e>=320&&e<=369)return this.readNullTerminatedString();if(e>=370&&e<=389)return this.reader.readInt16();if(e>=390&&e<=399)return this.readNullTerminatedString();if(e>=400&&e<=409)return this.reader.readInt16();if(e>=410&&e<=419)return this.readNullTerminatedString();if(e>=420&&e<=429)return this.reader.readInt32();if(e>=430&&e<=439)return this.readNullTerminatedString();if(e>=440&&e<=459)return this.reader.readInt32();if(e>=460&&e<=469)return this.reader.readFloat64();if(e>=470&&e<=481)return this.readNullTerminatedString();if(999===e)throw new Error("The comment group 999, is not used in binary DXF files at byte address!");if(1004===e){return sDe(this.ReadBinaryData())}return e>=1e3&&e<=1009?this.readNullTerminatedString():e>=1010&&e<=1059?this.reader.readFloat64():e>=1060&&e<=1070?this.reader.readInt16():1071===e?this.reader.readInt32():void ie.warn(`[DxfBinReader] Invalid code '${e}' at byte address ${this.reader.getPosition()}`)}readNullTerminatedString(){var e;this.decoder||(this.decoder=new TextDecoder("utf-8"));let t=0,i=this.reader.readInt8();for(;0!==i;)this.int8Array[t++]=i,i=this.reader.readInt8();if(0===t)return"";if(t>nDe)return ie.warn(`[DxfBinReader] Failed to read string! The number of bytes is ${t} !`),"";let r=this.int8Array.subarray(0,t),n=r.toString();if(this.caches.get(n))return this.caches.get(n);let s=null==(e=this.decoder)?void 0:e.decode(r);return this.caches.set(n,s),s}ReadBinaryData(){let e=this.reader.readUint8();return this.reader.readBytes(e)}};function sDe(e){return Array.prototype.map.call(e,(e=>("00"+e.toString(16)).slice(-2))).join("")}var YT=class extends qT{constructor(e){super(),this.data=e}next(){if(!this.hasNext())throw this.eof?new Error("Cannot call 'next' after EOF group has been read"):new Error("Unexpected end of input: EOF group not read before end of file. Ended on code "+this.data[this.pointer]);let e={code:parseInt(this.data[this.pointer])};return this.pointer++,e.value=qNt(e.code,this.data[this.pointer].trim()),this.pointer++,0===e.code&&"EOF"===e.value&&(this.eof=!0),this.lastReadGroup=e,e}hasNext(){return!(this.eof||this.pointer>this.data.length-2)}isEOF(){return this.eof}};function qNt(e,t){return e>=0&&e<=9?t:e>=10&&e<=59?parseFloat(t):e>=60&&e<=99?parseInt(t):e>=100&&e<=109?t:e>=110&&e<=149?parseFloat(t):e>=160&&e<=179?parseInt(t):e>=210&&e<=239?parseFloat(t):e>=270&&e<=289?parseInt(t):e>=290&&e<=299?YNt(t):e>=300&&e<=369?t:e>=370&&e<=389?parseInt(t):e>=390&&e<=399?t:e>=400&&e<=409?parseInt(t):e>=410&&e<=419?t:e>=420&&e<=429?parseInt(t):e>=430&&e<=439?t:e>=440&&e<=459?parseInt(t):e>=460&&e<=469?parseFloat(t):e>=470&&e<=481||999===e||e>=1e3&&e<=1009?t:e>=1010&&e<=1059?parseFloat(t):e>=1060&&e<=1071?parseInt(t):(ie.info("WARNING: Group code does not have a defined type: %j",{code:e,value:t}),t)}function YNt(e){if("0"===e)return!1;if("1"===e)return!0;throw TypeError("String '"+e+"' cannot be cast to Boolean type")}var lDe=kn($l(),1),XNt="OriginalHandle",$Nt="OriginalType",ZNt="Outlines",aDe=["PROXY","REGION","INSERT","HATCH"];function T0(e){return iO[e]}function vt(e){let t={},i=e.lastReadGroup,r=i.code;if(t.x=i.value,r+=10,i=e.next(),i.code!=r)throw new Error(`Expected code for point value to be ${r} but got ${i.code}`);return t.y=i.value,r+=10,i=e.next(),i.code!=r||(t.z=i.value,e.next()),t}function oDe(e,t){let i=e.lastReadGroup,r=[];for(let n=0;n<16;n++){if(i.code!==t)throw new Error(`Expected code for matrix value to be ${t} but got ${i.code}`);r.push(i.value),i=e.next()}return r}function fr(e,t){switch(t.code){case 0:e.type=t.value;break;case 5:e.handle=t.value;break;case 6:e.lineType=t.value.toUpperCase();break;case 8:e.layer=t.value;break;case 48:e.lineTypeScale=t.value,e.lineTypeScale<=0&&(e.lineTypeScale=1);break;case 60:e.visible=0===t.value;break;case 62:e.isTrueColor||(e.colorIndex=t.value,e.colorIndex<0&&ie.warn("[DxfParser] a negative value of colorIndex indicates that the layer is turned off"),e.color=T0(Math.abs(t.value)));break;case 67:e.inPaperSpace=0!==t.value;break;case 100:case 1001:break;case 330:e.ownerHandle=t.value;break;case 347:e.materialObjectHandle=t.value;break;case 370:e.lineweight=t.value;break;case 410:e.layoutName=t.value;break;case 420:e.isTrueColor=!0,e.color=t.value;break;case 1e3:if(t.value&&t.value.includes(XNt)){let i=t.value.split(":").map((e=>e.trim()));e.extendedData||(e.extendedData={}),e.extendedData.originalHandle=i[1]}if(e.extendedData&&e.extendedData.outlines)try{e.extendedData.outlines=JSON.parse(t.value||"[]")}catch(t){e.extendedData.outlines=void 0}if(t.value&&t.value.includes(ZNt)&&(e.extendedData||(e.extendedData={}),e.extendedData.outlines=[]),t.value&&t.value.includes($Nt)){let i=t.value.split(":").map((e=>e.trim()));e.extendedData||(e.extendedData={}),e.extendedData.originalType=i[1]}break;default:return!1}return!0}function ch(e,t){switch(t.code){case 0:e.type=t.value;break;case 5:e.handle=t.value;break;case 330:e.ownerHandle=t.value;break;case 1e3:case 1001:break;default:return!1}return!0}var QI=class{constructor(){this.ForEntityName="3DFACE"}parseEntity(e,t){let i={type:t.value,vertices:[]};for(t=e.next();!e.isEOF()&&0!==t.code;)switch(t.code){case 70:if(0!==t.value){let e=Math.log2(t.value)-1;i.vertices.splice(e,1)}t=e.next();break;case 10:i.vertices=KNt(e,t),t=e.lastReadGroup;break;case 101:for(;0!=t.code;)t=e.next();break;default:fr(i,t),t=e.next()}return i}};function KNt(e,t){let i=[],r=!1,n=!1;for(let s=0;s<=4;s++){let s={};for(;!e.isEOF()&&0!==t.code&&!n;){switch(t.code){case 10:case 11:case 12:case 13:if(r){n=!0;continue}s.x=t.value,r=!0;break;case 20:case 21:case 22:case 23:s.y=t.value;break;case 30:case 31:case 32:case 33:s.z=t.value;break;default:return i}t=e.next()}(0,lDe.isEmpty)(s)||i.push(s),r=!1,n=!1}return i}var e_=class{constructor(){this.ForEntityName="ARC"}parseEntity(e,t){let i={type:t.value};for(t=e.next();!e.isEOF()&&0!==t.code;)switch(t.code){case 10:i.center=vt(e),t=e.lastReadGroup;break;case 40:i.radius=t.value,t=e.next();break;case 50:i.startAngle=Math.PI/180*t.value,t=e.next();break;case 51:i.endAngle=Math.PI/180*t.value,i.angleLength=i.endAngle-i.startAngle,t=e.next();break;case 210:i.extrusionDirectionX=t.value,t=e.next();break;case 220:i.extrusionDirectionY=t.value,t=e.next();break;case 230:i.extrusionDirectionZ=t.value,t=e.next();break;case 101:for(;0!=t.code;)t=e.next();break;default:fr(i,t),t=e.next()}return i}},t_=class{constructor(){this.ForEntityName="ATTDEF"}parseEntity(e,t){let i={type:t.value,xScale:1,textStyle:"STANDARD"};for(t=e.next();!e.isEOF()&&0!==t.code;)switch(t.code){case 1:i.text=t.value,t=e.next();break;case 2:i.tag=t.value,t=e.next();break;case 3:i.prompt=t.value,t=e.next();break;case 7:i.textStyle=t.value,t=e.next();break;case 10:i.startPoint=vt(e),t=e.lastReadGroup;break;case 11:i.endPoint=vt(e),t=e.lastReadGroup;break;case 39:i.thickness=t.value,t=e.next();break;case 40:i.textHeight=t.value,t=e.next();break;case 41:i.xScale=t.value,t=e.next();break;case 50:i.rotation=t.value,t=e.next();break;case 51:i.obliqueAngle=t.value,t=e.next();break;case 70:i.invisible=!!(1&t.value),i.constant=!!(2&t.value),i.verificationRequired=!!(4&t.value),i.preset=!!(8&t.value),t=e.next();break;case 71:i.backwards=!!(2&t.value),i.mirrored=!!(4&t.value),t=e.next();break;case 72:i.horizontalJustification=t.value,t=e.next();break;case 73:i.fieldLength=t.value,t=e.next();break;case 74:i.verticalJustification=t.value,t=e.next();break;case 100:t=e.next();break;case 210:i.extrusionDirectionX=t.value,t=e.next();break;case 220:i.extrusionDirectionY=t.value,t=e.next();break;case 230:i.extrusionDirectionZ=t.value,t=e.next();break;case 101:for(;0!=t.code;)t=e.next();break;default:fr(i,t),t=e.next()}return i}},r_=class{constructor(){this.ForEntityName="ATTRIB"}parseEntity(e,t){let i={type:t.value,xScale:1,textStyle:"STANDARD"};for(t=e.next();!e.isEOF()&&0!==t.code;)switch(t.code){case 1:i.text=t.value,t=e.next();break;case 2:i.tag=t.value,t=e.next();break;case 3:i.prompt=t.value,t=e.next();break;case 7:i.textStyle=t.value,t=e.next();break;case 10:i.startPoint=vt(e),t=e.lastReadGroup;break;case 11:i.endPoint=vt(e),t=e.lastReadGroup;break;case 39:i.thickness=t.value,t=e.next();break;case 40:i.textHeight=t.value,t=e.next();break;case 41:i.xScale=t.value,t=e.next();break;case 50:i.rotation=t.value,t=e.next();break;case 51:i.obliqueAngle=t.value,t=e.next();break;case 70:i.invisible=!!(1&t.value),i.constant=!!(2&t.value),i.verificationRequired=!!(4&t.value),i.preset=!!(8&t.value),t=e.next();break;case 71:i.backwards=!!(2&t.value),i.mirrored=!!(4&t.value),t=e.next();break;case 72:i.horizontalJustification=t.value,t=e.next();break;case 73:i.fieldLength=t.value,t=e.next();break;case 74:i.verticalJustification=t.value,t=e.next();break;case 100:t=e.next();break;case 210:i.extrusionDirectionX=t.value,t=e.next();break;case 220:i.extrusionDirectionY=t.value,t=e.next();break;case 230:i.extrusionDirectionZ=t.value,t=e.next();break;case 101:for(;0!=t.code;)t=e.next();break;default:fr(i,t),t=e.next()}return i}},i_=class{constructor(){this.ForEntityName="CIRCLE"}parseEntity(e,t){let i={type:t.value};for(t=e.next();!e.isEOF()&&0!==t.code;)switch(t.code){case 10:i.center=vt(e),t=e.lastReadGroup;break;case 40:i.radius=t.value,t=e.next();break;case 50:i.startAngle=Math.PI/180*t.value,t=e.next();break;case 51:let r=Math.PI/180*t.value;r=0&&i.push({angle:e,origin:n,delta:s,dashPattern:o})}return i}function rLt(e,t){let i=[],r=t.next();for(;i.length0&&(i.colorIndex=t.value,i.color=T0(Math.abs(t.value)))))}t=e.next();break;default:fr(i,t),t=e.next()}return i}};function iLt(e){switch(e){case 40:return"DIMSCALE";case 41:return"DIMASZ";case 42:return"DIMEXO";case 44:return"DIMEXE";case 75:return"DIMSE1";case 76:return"DIMSE2";case 77:return"DIMTAD";case 140:return"DIMTXT";case 144:return"DIMLFAC";case 147:return"DIMGAP";case 176:return"DIMCLRD";case 178:return"DIMCLRT";case 271:return"DIMDEC";case 341:return"DIMLDRBLK";default:return null}}var c_=class{constructor(){this.ForEntityName="LINE"}parseEntity(e,t){let i={type:t.value,vertices:[]};for(t=e.next();!e.isEOF()&&0!==t.code;)switch(t.code){case 10:i.vertices.unshift(vt(e)),t=e.lastReadGroup;break;case 11:i.vertices.push(vt(e)),t=e.lastReadGroup;break;case 210:i.extrusionDirection=vt(e),t=e.lastReadGroup;break;case 100:t=e.next();break;case 101:for(;0!=t.code;)t=e.next();break;default:fr(i,t),t=e.next()}return i}},u_=class{constructor(){this.ForEntityName="LWPOLYLINE"}parseEntity(e,t){let i={type:t.value,vertices:[]},r=0;for(t=e.next();!e.isEOF()&&0!==t.code;)switch(t.code){case 38:i.elevation=t.value,t=e.next();break;case 39:i.thickness=t.value,t=e.next();break;case 70:i.shape=1==(1&t.value),i.hasContinuousLinetypePattern=128==(128&t.value),t=e.next();break;case 90:r=t.value,t=e.next();break;case 10:i.vertices.push(...nLt(r,e)),t=e.lastReadGroup;break;case 43:0!==t.value&&(i.constantWidth=t.value),t=e.next();break;case 210:i.extrusionDirectionX=t.value,t=e.next();break;case 220:i.extrusionDirectionY=t.value,t=e.next();break;case 230:i.extrusionDirectionZ=t.value,t=e.next();break;case 101:for(;0!=t.code;)t=e.next();break;default:fr(i,t),t=e.next()}return i}};function nLt(e,t){if(!e||e<=0)throw Error("n must be greater than 0 verticies");let i=[],r=!1,n=!1,s=t.lastReadGroup,a={};for(;!t.isEOF()&&0!==s.code&&!n;)switch(s.code){case 10:if(r){n=!0;continue}a.x=s.value,r=!0,s=t.next();break;case 20:a.y=s.value,s=t.next();break;case 30:a.z=s.value,s=t.next();break;case 40:a.startWidth=s.value,s=t.next();break;case 41:a.endWidth=s.value,s=t.next();break;case 42:0!=s.value&&(a.bulge=s.value),s=t.next();break;default:return r&&i.push(a),i}return i.push(a),r=!1,n=!1,i}var h_=class{constructor(){this.ForEntityName="MULTILEADER"}parseEntity(e,t){let i={type:t.value};function r(){for(;!e.isEOF();)switch(t.code){case 40:i.contextData.contentScale=t.value,t=e.next();break;case 10:i.contextData.contentBasePosition=vt(e),t=e.lastReadGroup;break;case 145:i.contextData.landingGap=t.value,t=e.next();break;case 290:i.contextData.hasMText=t.value,t=e.next();break;case 304:i.contextData.defaultTextContents=t.value,t=e.next();break;case 11:i.contextData.textNormalDirection=vt(e),t=e.lastReadGroup;break;case 12:i.contextData.textLocation=vt(e),t=e.lastReadGroup;break;case 13:i.contextData.textDirection=vt(e),t=e.lastReadGroup;break;case 140:i.contextData.arrowHeadSize=t.value,t=e.next();break;case 41:i.contextData.textHeight=t.value,t=e.next();break;case 42:i.contextData.textRotation=t.value,t=e.next();break;case 43:i.contextData.textWidth=t.value,t=e.next();break;case 44:default:t=e.next();break;case 45:i.contextData.textLineSpacingFactor=t.value,t=e.next();break;case 90:i.contextData.textColor=t.value,t=e.next();break;case 170:i.contextData.textLineSpacingStyle=t.value,t=e.next();break;case 171:i.contextData.textAttachment=t.value,t=e.next();break;case 172:i.contextData.textFlowDirection=t.value,t=e.next();break;case 141:i.contextData.textBackgroundScaleFactor=t.value,t=e.next();break;case 92:i.contextData.textBackgroundTransparency=t.value,t=e.next();break;case 291:i.contextData.textBackgroundColorOn=t.value,t=e.next();break;case 292:i.contextData.textBackgroundFillOn=t.value,t=e.next();break;case 293:i.contextData.textUseAutoHeight=t.value,t=e.next();break;case 173:i.contextData.textColumnType=t.value,t=e.next();break;case 142:i.contextData.textColumnWidth=t.value,t=e.next();break;case 143:i.contextData.textColumnGutterWidth=t.value,t=e.next();break;case 144:i.contextData.textColumnHeight=t.value,t=e.next();break;case 295:i.contextData.textUseWordBreak=t.value,t=e.next();break;case 296:i.contextData.hasBlock=t.value,t=e.next();break;case 341:i.contextData.blockContentId=t.value,t=e.next();break;case 14:i.contextData.blockContentNormalDirection=vt(e),t=e.lastReadGroup;break;case 15:i.contextData.blockContentPosition=vt(e),t=e.lastReadGroup;break;case 16:i.contextData.blockContentScale=t.value,t=e.next();break;case 46:i.contextData.blockContentRotation=t.value,t=e.next();break;case 93:i.contextData.blockContentColor=t.value,t=e.next();break;case 47:i.contextData.blockTransformationMatrix=oDe(e,47),t=e.lastReadGroup;break;case 110:i.contextData.planeOriginPoint=vt(e),t=e.lastReadGroup;break;case 111:i.contextData.planeXAxisDirection=vt(e),t=e.lastReadGroup;break;case 112:i.contextData.planeYAxisDirection=vt(e),t=e.lastReadGroup;break;case 297:i.contextData.planeNormalReversed=t.value,t=e.next();break;case 301:return;case 302:n(),t=e.lastReadGroup}}function n(){let r={leaderLines:[]};for(i.contextData.leaders.push(r);!e.isEOF();)switch(t.code){case 290:r.hasSetLastLeaderLinePoint=t.value,t=e.next();break;case 291:r.hasSetDoglegVector=t.value,t=e.next();break;case 10:r.lastLeaderLinePoint=vt(e),t=e.lastReadGroup;break;case 11:r.doglegVector=vt(e),t=e.lastReadGroup;break;case 90:r.leaderBranchIndex=t.value,t=e.next();break;case 40:r.doglegLength=t.value,t=e.next();break;case 303:return;case 304:s(),t=e.lastReadGroup;break;default:t=e.next()}}function s(){let r={vertices:[[]]};for(i.contextData.leaders[i.contextData.leaders.length-1].leaderLines.push(r);!e.isEOF();)switch(t.code){case 10:r.vertices[0].push(vt(e)),t=e.lastReadGroup;break;case 305:return;default:t=e.next()}}return i.contextData={leaders:[]},t=e.next(),function(){for(;!e.isEOF();)switch(t.code){case 0:return;case 340:i.leaderStyleId=t.value,t=e.next();break;case 170:i.leaderLineType=t.value,t=e.next();break;case 91:i.leaderLineColor=t.value,t=e.next();break;case 341:i.leaderLineTypeId=t.value,t=e.next();break;case 171:i.leaderLineWeight=t.value,t=e.next();break;case 41:i.doglegLength=t.value,t=e.next();break;case 290:i.enableLanding=t.value,t=e.next();break;case 291:i.enableDogLeg=t.value,t=e.next();break;case 342:i.arrowHeadId=t.value,t=e.next();break;case 42:i.arrowHeadSize=t.value,t=e.next();break;case 172:i.contentType=t.value,t=e.next();break;case 173:case 95:i.textLeftAttachmentType=t.value,t=e.next();break;case 174:i.textAngleType=t.value,t=e.next();break;case 175:i.textAlignmentType=t.value,t=e.next();break;case 343:i.textStyleId=t.value,t=e.next();break;case 92:i.textColor=t.value,t=e.next();break;case 292:i.enableFrameText=t.value,t=e.next();break;case 344:i.blockContentId=t.value,t=e.next();break;case 93:i.blockContentColor=t.value,t=e.next();break;case 10:i.blockContentScale=vt(e),t=e.lastReadGroup;break;case 43:i.blockContentRotation=t.value,t=e.next();break;case 176:i.blockContentConnectionType=t.value,t=e.next();break;case 293:i.enableAnotationScale=t.value,t=e.next();break;case 94:i.arrowHeadIndex=t.value,t=e.next();break;case 177:i.blockAttributeIndex=t.value,t=e.next();break;case 44:i.blockAttributeWidth=t.value,t=e.next();break;case 302:i.blockAttributeTextString=t.value,t=e.next();break;case 294:i.textDirectionNegative=t.value,t=e.next();break;case 178:i.textAlignInIPE=t.value,t=e.next();break;case 179:i.textAttachmentPoint=t.value,t=e.next();break;case 271:i.textAttachmentDirectionMText=t.value,t=e.next();break;case 272:i.textAttachmentDirectionBottom=t.value,t=e.next();break;case 273:i.textAttachmentDirectionTop=t.value,t=e.next();break;case 300:r(),t=e.lastReadGroup;break;case 101:for(;0!=t.code;)t=e.next();break;default:fr(i,t),t=e.next()}}(),i}},p_=class{constructor(){this.ForEntityName="MTEXT"}parseEntity(e,t){let i={type:t.value};for(t=e.next();!e.isEOF()&&0!==t.code;)switch(t.code){case 3:case 1:i.text?i.text+=t.value:i.text=t.value,t=e.next();break;case 10:i.position=vt(e),t=e.lastReadGroup;break;case 7:i.textStyle=t.value,t=e.next();break;case 44:i.lineSpaceFactor=t.value,t=e.next();break;case 11:i.directionVector=vt(e),t=e.lastReadGroup;break;case 40:i.height=t.value,t=e.next();break;case 41:i.width=t.value,t=e.next();break;case 50:i.rotation=t.value,t=e.next();break;case 71:i.attachmentPoint=t.value,t=e.next();break;case 72:i.drawingDirection=t.value,t=e.next();break;case 101:for(;0!=t.code;)t=e.next();break;default:fr(i,t),t=e.next()}return i}},d_=class{constructor(){this.ForEntityName="OLE2FRAME"}parseEntity(e,t){let i={type:t.value,binaryData:""};for(t=e.next();"OLE"!==t.value&&0!==t.code;)switch(t.code){case 3:i.documentType=t.value,t=e.next();break;case 70:i.version=t.value,t=e.next();break;case 10:i.leftUpX=t.value,t=e.next();break;case 20:i.leftUpY=t.value,t=e.next();break;case 30:i.leftUpZ=t.value,t=e.next();break;case 11:i.rightDownX=t.value,t=e.next();break;case 21:i.rightDownY=t.value,t=e.next();break;case 31:i.rightDownZ=t.value,t=e.next();break;case 90:i.lengthOfBinaryData=t.value,t=e.next();break;case 310:i.binaryData+=t.value,t=e.next();break;case 101:for(;0!=t.code;)t=e.next();break;default:fr(i,t),t=e.next()}return i}},f_=class{constructor(){this.ForEntityName="POINT"}parseEntity(e,t){let i={type:t.value};for(t=e.next();!e.isEOF()&&0!==t.code;)switch(t.code){case 10:i.position=vt(e),t=e.lastReadGroup;break;case 39:i.thickness=t.value,t=e.next();break;case 210:i.extrusionDirection=vt(e),t=e.lastReadGroup;break;case 100:t=e.next();break;case 101:for(;0!=t.code;)t=e.next();break;default:fr(i,t),t=e.next()}return i}},m_=class{constructor(){this.ForEntityName="VERTEX"}parseEntity(e,t){var i={type:t.value};for(t=e.next();!e.isEOF()&&0!==t.code;)switch(t.code){case 10:i.x=t.value,t=e.next();break;case 20:i.y=t.value,t=e.next();break;case 30:i.z=t.value,t=e.next();break;case 40:case 41:case 50:t=e.next();break;case 42:0!=t.value&&(i.bulge=t.value),t=e.next();break;case 70:i.curveFittingVertex=0!=(1&t.value),i.curveFitTangent=0!=(2&t.value),i.splineVertex=0!=(8&t.value),i.splineControlPoint=0!=(16&t.value),i.threeDPolylineVertex=0!=(32&t.value),i.threeDPolylineMesh=0!=(64&t.value),i.polyfaceMeshVertex=0!=(128&t.value),t=e.next();break;case 71:i.faceA=t.value,t=e.next();break;case 72:i.faceB=t.value,t=e.next();break;case 73:i.faceC=t.value,t=e.next();break;case 74:i.faceD=t.value,t=e.next();break;case 101:for(;0!=t.code;)t=e.next();break;default:fr(i,t),t=e.next()}return i}},g_=class{constructor(){this.ForEntityName="POLYLINE"}parseEntity(e,t){var i={type:t.value,vertices:[]};for(t=e.next();!e.isEOF()&&0!==t.code;)switch(t.code){case 10:case 20:case 30:case 40:case 41:case 71:case 72:case 73:case 74:case 75:t=e.next();break;case 39:t=e.next(),i.thickness=t.value;break;case 70:i.shape=0!=(1&t.value),i.includesCurveFitVertices=0!=(2&t.value),i.includesSplineFitVertices=0!=(4&t.value),i.is3dPolyline=0!=(8&t.value),i.is3dPolygonMesh=0!=(16&t.value),i.is3dPolygonMeshClosed=0!=(32&t.value),i.isPolyfaceMesh=0!=(64&t.value),i.hasContinuousLinetypePattern=0!=(128&t.value),t=e.next();break;case 210:i.extrusionDirection=vt(e),t=e.lastReadGroup;break;case 101:for(;0!=t.code;)t=e.next();break;default:fr(i,t),t=e.next()}return i.vertices=sLt(e,t),i}};function sLt(e,t){let i=new m_,r=[];for(;!e.isEOF();)if(0===t.code)if("VERTEX"===t.value)r.push(i.parseEntity(e,t)),t=e.lastReadGroup;else if("SEQEND"===t.value){aLt(e,t);break}return r}function aLt(e,t){let i={type:t.value};for(t=e.next();!e.isEOF()&&0!==t.code;)if(101===t.code)for(;0!=t.code;)t=e.next();else fr(i,t),t=e.next();return i}var v_=class{constructor(){this.ForEntityName="RAY"}parseEntity(e,t){let i={type:t.value,vertices:[]};for(t=e.next();!e.isEOF()&&0!==t.code;)switch(t.code){case 10:i.vertices.unshift(vt(e)),t=e.lastReadGroup;break;case 11:i.directionVector=vt(e),t=e.lastReadGroup;break;case 100:t=e.next();break;case 101:for(;0!=t.code;)t=e.next();break;default:fr(i,t),t=e.next()}return i}},y_=class{constructor(){this.ForEntityName="REGION"}parseEntity(e,t){let i={type:t.value};for(t=e.next();!e.isEOF()&&0!==t.code;)switch(t.code){case 70:i.modelerVersion=t.value,t=e.next();break;case 1:i.proprietaryData=t.value,t=e.next();break;case 3:i.proprietaryData+=t.value,t=e.next();break;case 101:for(;0!=t.code;)t=e.next();break;default:fr(i,t),t=e.next()}return i}},T_=class{constructor(){this.ForEntityName="SEQEND"}parseEntity(e,t){let i={type:t.value};for(t=e.next();!e.isEOF()&&0!==t.code;)if(-2===t.code);else fr(i,t),t=e.next();return i}},E_=class{constructor(){this.ForEntityName="SOLID"}parseEntity(e,t){let i={type:t.value,points:[]};for(t=e.next();!e.isEOF()&&0!==t.code;)switch(t.code){case 10:i.points[0]=vt(e),t=e.lastReadGroup;break;case 11:i.points[1]=vt(e),t=e.lastReadGroup;break;case 12:i.points[2]=vt(e),t=e.lastReadGroup;break;case 13:i.points[3]=vt(e),t=e.lastReadGroup;break;case 210:i.extrusionDirection=vt(e),t=e.lastReadGroup;break;case 101:for(;0!=t.code;)t=e.next();break;default:fr(i,t),t=e.next()}return i}},b_=class{constructor(){this.ForEntityName="SPLINE"}parseEntity(e,t){let i={type:t.value};for(t=e.next();!e.isEOF()&&0!==t.code;)switch(t.code){case 10:i.controlPoints||(i.controlPoints=[]),i.controlPoints.push(vt(e)),t=e.lastReadGroup;break;case 11:i.fitPoints||(i.fitPoints=[]),i.fitPoints.push(vt(e)),t=e.lastReadGroup;break;case 12:i.startTangent=vt(e),t=e.lastReadGroup;break;case 13:i.endTangent=vt(e),t=e.lastReadGroup;break;case 40:i.knotValues||(i.knotValues=[]),i.knotValues.push(t.value),t=e.next();break;case 70:1&t.value&&(i.closed=!0),2&t.value&&(i.periodic=!0),4&t.value&&(i.rational=!0),8&t.value&&(i.planar=!0),16&t.value&&(i.planar=!0,i.linear=!0),t=e.next();break;case 71:i.degreeOfSplineCurve=t.value,t=e.next();break;case 72:i.numberOfKnots=t.value,t=e.next();break;case 73:i.numberOfControlPoints=t.value,t=e.next();break;case 74:i.numberOfFitPoints=t.value,t=e.next();break;case 210:i.normalVector=vt(e),t=e.lastReadGroup;break;case 101:for(;0!=t.code;)t=e.next();break;default:fr(i,t),t=e.next()}return i}},x_=class{constructor(){this.ForEntityName="TEXT"}parseEntity(e,t){let i={type:t.value};for(t=e.next();!e.isEOF()&&0!==t.code;)switch(t.code){case 10:i.startPoint=vt(e),t=e.lastReadGroup;break;case 11:i.endPoint=vt(e),t=e.lastReadGroup;break;case 40:i.textHeight=t.value,t=e.next();break;case 41:i.xScale=t.value,t=e.next();break;case 50:i.rotation=t.value,t=e.next();break;case 1:i.text=t.value,t=e.next();break;case 72:i.halign=t.value,t=e.next();break;case 73:i.valign=t.value,t=e.next();break;case 7:i.textStyle=t.value,t=e.next();break;case 71:i.mirrored=t.value,t=e.next();break;case 101:for(;0!=t.code;)t=e.next();break;default:fr(i,t),t=e.next()}return i}},I_=class{constructor(){this.ForEntityName="VIEWPORT"}parseEntity(e,t){let i={type:t.value};for(t=e.next();!e.isEOF()&&0!==t.code;)switch(t.code){case 68:i.viewportStatus=t.value,t=e.next();break;case 40:i.width_paperSpace=t.value,t=e.next();break;case 41:i.height_paperSpace=t.value,t=e.next();break;case 69:i.viewportId=t.value,t=e.next();break;case 10:i.centerPoint=vt(e),t=e.lastReadGroup;break;case 12:i.centerPoint_dcs=vt(e),t=e.lastReadGroup;break;case 13:i.snapBasePoint_dcs=vt(e),t=e.lastReadGroup;break;case 14:i.snapSpacing_dcs=vt(e),t=e.lastReadGroup;break;case 15:i.gridSpacing_dcs=vt(e),t=e.lastReadGroup;break;case 16:i.viewDirection=vt(e),t=e.lastReadGroup;break;case 17:i.viewTarget=vt(e),t=e.lastReadGroup;break;case 42:i.perspectiveLens=t.value,t=e.next();break;case 43:i.frontClippingPlaneZ=t.value,t=e.next();break;case 44:i.backClippingPlaneZ=t.value,t=e.next();break;case 45:i.viewHeight=t.value,t=e.next();break;case 50:i.snapAngle=t.value,t=e.next();break;case 51:i.viewTwistAngle=t.value,t=e.next();break;case 72:i.circleZoomPercent=t.value,t=e.next();break;case 331:i.frozenLayerHandles=i.frozenLayerHandles||[],i.frozenLayerHandles.push(t.value),t=e.next();break;case 90:i.viewportStatusFlags=t.value,t=e.next();break;case 340:i.viewportClippingBoundaryhandleId=t.value,t=e.next();break;case 1:i.plotStyleSheetName=t.value,t=e.next();break;case 281:i.renderMode=t.value,t=e.next();break;case 71:i.viewportFlag_ucs=t.value,t=e.next();break;case 74:i.ucsIcon=t.value,t=e.next();break;case 110:i.ucsOrigin=vt(e),t=e.lastReadGroup;break;case 111:i.ucsXAxis=vt(e),t=e.lastReadGroup;break;case 112:i.ucsYAxis=vt(e),t=e.lastReadGroup;break;case 345:i.ucsTableRecordHandle=t.value,t=e.next();break;case 346:i.baseUcsTableRecordHandle=t.value,t=e.next();break;case 79:i.orthographicType=t.value,t=e.next();break;case 146:i.elevation=t.value,t=e.next();break;case 170:i.shadePlotMode=t.value,t=e.next();break;case 61:i.frequency=t.value,t=e.next();break;case 292:i.lightingFlag=t.value,t=e.next();break;case 282:i.lightingType=t.value,t=e.next();break;case 141:i.viewBrightness=t.value,t=e.next();break;case 142:i.viewContrast=t.value,t=e.next();break;case 101:for(;0!=t.code;)t=e.next();break;default:fr(i,t),t=e.next()}return i}},__=class{constructor(){this.ForEntityName="XLINE"}parseEntity(e,t){let i={type:t.value,vertices:[]};for(t=e.next();!e.isEOF()&&0!==t.code;)switch(t.code){case 10:i.vertices.unshift(vt(e)),t=e.lastReadGroup;break;case 11:i.directionVector=vt(e),t=e.lastReadGroup;break;case 100:t=e.next();break;case 101:for(;0!=t.code;)t=e.next();break;default:fr(i,t),t=e.next()}return i}},nO=class{constructor(){this.ForObjectName="DICTIONARY"}parseObject(e,t){let i={type:t.value},r=[],n=[];for(t=e.next();!e.isEOF()&&0!==t.code;)switch(t.code){case 280:i.isHardOwner=1===t.value,t=e.next();break;case 281:i.cloningFlag=t.value,t=e.next();break;case 3:r.push(t.value),t=e.next();break;case 350:case 360:n.push(t.value),t=e.next();break;case 100:case 102:t=e.next();break;default:ch(i,t),t=e.next()}if(r.length!==n.length)throw new Error("The number of Dictionary entries does not match !");return i.entries={},r.forEach(((e,t)=>{i.entries[n[t]]=e})),i}},sO=class{constructor(){this.ForObjectName="LAYOUT"}parseObject(e,t){let i={type:t.value};for(t=e.next();!e.isEOF()&&0!==t.code;)switch(t.code){case 100:t=e.next();break;case 1:i.layoutName=t.value,t=e.next();break;case 70:i.flag=t.value,t=e.next();break;case 71:i.tabOrder=t.value,t=e.next();break;case 76:i.orthographicType=t.value,t=e.next();break;case 10:i.minLimit=vt(e),t=e.lastReadGroup;break;case 11:i.maxLimit=vt(e),t=e.lastReadGroup;break;case 12:i.basePoint=vt(e),t=e.lastReadGroup;break;case 13:i.origin=vt(e),t=e.lastReadGroup;break;case 14:i.minExtent=vt(e),t=e.lastReadGroup;break;case 15:i.maxExtent=vt(e),t=e.lastReadGroup;break;case 16:i.XAxis=vt(e),t=e.lastReadGroup;break;case 17:i.YAxis=vt(e),t=e.lastReadGroup;break;case 146:i.elevation=t.value,t=e.next();break;case 331:i.viewportHandle=t.value,t=e.next();break;default:ch(i,t),t=e.next()}return i.blockTableHandle=i.ownerHandle,i}},aO=class{constructor(){this.ForObjectName="SORTENTSTABLE"}parseObject(e,t){let i={type:t.value},r=!1;i.sortEntsObject={},i.sortEntsObject.entityHandles=[];let n=[];for(t=e.next();!e.isEOF()&&0!==t.code;)switch(t.code){case 5:r?(n.push(t.value),i.sortEntsObject.entityHandles.push(n),n=[]):i.handle=t.value,t=e.next();break;case 100:t=e.next(),r=!0;break;case 102:t=e.next();break;case 330:r?i.sortEntsObject.ownerHandle=t.value:i.ownerHandle=t.value,t=e.next();break;case 331:n.push(t.value),t=e.next();break;default:ch(i,t),t=e.next()}return i}},oO=class{constructor(){this.ForObjectName="SPATIAL_FILTER"}parseObject(e,t){let i,r,n={type:t.value};for(n.vertices=[],t=e.next();!e.isEOF()&&0!==t.code;)switch(t.code){case 11:n.origin=vt(e),t=e.lastReadGroup;break;case 70:n.numberOfPointsOnClipBoundary=t.value,2===n.numberOfPointsOnClipBoundary?(t=e.next(),i=vt(e),t=e.lastReadGroup,r=vt(e),t=e.lastReadGroup,n.vertices.push(i,{x:r.x,y:i.y},r,{x:i.x,y:r.y},i)):n.numberOfPointsOnClipBoundary>2?(n.vertices=oLt(n.numberOfPointsOnClipBoundary,e),t=e.lastReadGroup):t=e.next();break;case 71:n.clipBoundaryVisible=1===t.value,t=e.next();break;case 72:n.frontClippingPlaneFlag=1===t.value,t=e.next(),n.frontClippingPlaneFlag&&40===t.code&&(n.frontClippingPlaneDistance=t.value,t=e.next());break;case 73:n.backClippingPlaneFlag=1===t.value,t=e.next(),n.backClippingPlaneFlag&&41===t.code&&(n.backClippingPlaneDistance=t.value,t=e.next());break;case 100:case 102:t=e.next();break;case 210:n.extrusionDirectionX=t.value,t=e.next();break;case 220:n.extrusionDirectionY=t.value,t=e.next();break;case 230:n.extrusionDirectionZ=t.value,t=e.next();break;case 40:n.invertBlockMatrix=cDe(e,40),n.matrix=cDe(e,40),t=e.lastReadGroup;break;default:ch(n,t),t=e.next()}return n}};function oLt(e,t){t.next();let i=[];for(;i.length{e.on("data",(e=>{t+=e})),e.on("end",(()=>{try{r(i.parse(t))}catch(e){n(e)}})),e.on("error",(e=>{n(e)}))}))}_parse(e){let t={},i=0;if(!e.hasNext())throw Error("Empty file");let r,n=this;function s(){let t=null,i=null,n={};for(r=e.next();;){if(il(r,0,"ENDSEC")){t&&(n[t]=i);break}9===r.code?(t&&(n[t]=i),t=r.value):10===r.code?i={x:r.value}:20===r.code?i.y=r.value:30===r.code?i.z=r.value:i=r.value,r=e.next()}return r=e.next(),n}function a(){let t={};for(r=e.next();"EOF"!==r.value&&!il(r,0,"ENDSEC");)if(il(r,0,"BLOCK")){ie.trace("block {");let e=o();ie.trace("}"),m(e),e.name?t[e.name]=e:ie.error(`[DxfParser] Block with handle '${e.handle}' is missing a name, ignored!`)}else ad(r),r=e.next();return t}function o(){let t={};for(r=e.next();"EOF"!==r.value;){switch(r.code){case 1:t.xrefPath=r.value,r=e.next();break;case 2:t.name=r.value,r=e.next();break;case 3:t.name2=r.value,r=e.next();break;case 4:t.description=r.value,r=e.next();break;case 5:t.handle=r.value,r=e.next();break;case 8:t.layer=r.value,r=e.next();break;case 10:t.position=f(r),r=e.lastReadGroup;break;case 67:t.paperSpace=!(!r.value||1!==r.value),r=e.next();break;case 70:t.blockType=r.value,r=e.next();break;case 100:r=e.next();break;case 330:t.ownerHandle=r.value,r=e.next();break;case 0:if("ENDBLK"==r.value)break;t.entities=p(!0);break;default:ad(r),r=e.next()}if(il(r,0,"ENDBLK")){r=e.next();break}}return t}function l(){let t={};for(r=e.next();"EOF"!==r.value&&!il(r,0,"ENDSEC");)il(r,0,"TABLE")?(r=e.next(),c[r.value]?(ie.trace(r.value+" Table {"),t[c[r.value].tableName]=u(r),ie.trace("}")):ie.trace("Unhandled Table "+r.value)):r=e.next();return r=e.next(),t}let h="ENDTAB";function u(t){let i=c[t.value],n={},s=0;for(r=e.next();!il(r,0,h);)switch(r.code){case 5:n.handle=r.value,r=e.next();break;case 330:n.ownerHandle=r.value,r=e.next();break;case 100:"AcDbSymbolTable"===r.value||ad(r),r=e.next();break;case 70:s=r.value,r=e.next();break;case 0:r.value===i.dxfSymbolName?n[i.tableRecordsProperty]=i.parseTableRecords():(ad(r),r=e.next());break;default:ad(r),r=e.next()}let a=n[i.tableRecordsProperty];if(a){let e=a.constructor===Array?a.length:"object"==typeof a?Object.keys(a).length:void 0;s!==e&&ie.warn(`[DxfParser] Parsed ${e} ${i.dxfSymbolName}s but expected ${s}`)}return r=e.next(),n}let c={VPORT:{tableRecordsProperty:"viewPorts",tableName:"viewPort",dxfSymbolName:"VPORT",parseTableRecords:function(){let t=[],i={};for(ie.trace("ViewPort {"),r=e.next();!il(r,0,h);)switch(r.code){case 2:i.name=r.value,r=e.next();break;case 10:i.lowerLeftCorner=f(r),r=e.lastReadGroup;break;case 11:i.upperRightCorner=f(r),r=e.lastReadGroup;break;case 12:i.center=f(r),r=e.lastReadGroup;break;case 13:i.snapBasePoint=f(r),r=e.lastReadGroup;break;case 14:i.snapSpacing=f(r),r=e.lastReadGroup;break;case 15:i.gridSpacing=f(r),r=e.lastReadGroup;break;case 16:i.viewDirectionFromTarget=f(r),r=e.lastReadGroup;break;case 17:i.viewTarget=f(r),r=e.lastReadGroup;break;case 40:case 45:i.viewHeight=r.value,r=e.next();break;case 41:i.aspectRatio=r.value,r=e.next();break;case 42:i.lensLength=r.value,r=e.next();break;case 43:i.frontClippingPlane=r.value,r=e.next();break;case 44:i.backClippingPlane=r.value,r=e.next();break;case 50:i.snapRotationAngle=r.value,r=e.next();break;case 51:i.viewTwistAngle=r.value,r=e.next();break;case 79:i.orthographicType=r.value,r=e.next();break;case 110:i.ucsOrigin=f(r),r=e.lastReadGroup;break;case 111:i.ucsXAxis=f(r),r=e.lastReadGroup;break;case 112:i.ucsYAxis=f(r),r=e.lastReadGroup;break;case 281:i.renderMode=r.value,r=e.next();break;case 282:i.defaultLightingType=r.value,r=e.next();break;case 292:i.defaultLightingOn=r.value,r=e.next();break;case 330:i.ownerHandle=r.value,r=e.next();break;case 63:case 421:case 431:i.ambientColor=r.value,r=e.next();break;case 0:"VPORT"===r.value&&(ie.trace("}"),t.push(i),ie.trace("ViewPort {"),i={},r=e.next());break;default:ad(r),r=e.next()}return ie.trace("}"),t.push(i),t}},LTYPE:{tableRecordsProperty:"lineTypes",tableName:"lineType",dxfSymbolName:"LTYPE",parseTableRecords:function(){let t={},i={},s=0,a="",o=!1;for(ie.trace("LType {"),r=e.next();!il(r,0,"ENDTAB");)switch(r.code){case 2:i.name=r.value.toUpperCase(),a=i.name,r=e.next();break;case 3:i.description=r.value,r=e.next();break;case 9:case 44:case 45:case 46:case 70:case 75:default:r=e.next();break;case 40:i.patternLength=r.value,r=e.next();break;case 49:let l=r.value;o&&(l=Math.abs(l),o=!1),i.pattern.push(l),r=e.next();break;case 73:s=r.value,s>0&&(i.pattern=[]),r=e.next();break;case 74:0!==r.value&&(o=!0,n.unsupportedLineTypes[i.name]?n.unsupportedLineTypes[i.name]++:n.unsupportedLineTypes[i.name]=1),r=e.next();break;case 0:ie.trace("}"),s>0&&s!==i.pattern.length&&ie.warn("[DxfParser] lengths do not match on LTYPE pattern"),t[a]=i,i={},ie.trace("LType {"),r=e.next()}return ie.trace("}"),t[a]=i,t}},LAYER:{tableRecordsProperty:"layers",tableName:"layer",dxfSymbolName:"LAYER",parseTableRecords:function(){let t,i={},n={};for(ie.trace("Layer {"),r=e.next();!il(r,0,"ENDTAB");)switch(r.code){case 2:n.name=r.value,t=r.value,r=e.next();break;case 5:n.handle=r.value,r=e.next();break;case 62:n.visible=r.value>=0,n.colorIndex=Math.abs(r.value),n.color=hLt(n.colorIndex),r=e.next();break;case 70:n.flag=r.value,n.frozen=(1&n.flag)>0,r=e.next();break;case 420:n.color=Math.abs(r.value),r=e.next();break;case 6:n.lineType=r.value.toUpperCase(),r=e.next();break;case 370:n.lineweight=r.value,r=e.next();break;case 0:"LAYER"===r.value&&(ie.trace("}"),t&&(i[t]=n),ie.trace("Layer {"),n={},t=void 0,r=e.next());break;default:ad(r),r=e.next()}return ie.trace("}"),t&&(i[t]=n),i}},BLOCK_RECORD:{tableRecordsProperty:"blockRecords",tableName:"blockRecord",dxfSymbolName:"BLOCK_RECORD",parseTableRecords:function(){let t,i={},s={};for(ie.trace("BlockRecord {"),r=e.next();!il(r,0,"ENDTAB");)switch(r.code){case 5:s.handle=r.value,r=e.next();break;case 330:s.ownerHandle=r.value,r=e.next();break;case 2:s.blockName=r.value,t=s.blockName,r=e.next();break;case 340:s.layoutHandle=r.value,r=e.next();break;case 70:s.blockInsertUnits=r.value,r=e.next();break;case 280:s.blockExplodability=r.value,r=e.next();break;case 281:s.blockScalability=r.value,r=e.next();break;case 310:s.bitmap=r.value,r=e.next();break;case 0:if("BLOCK_RECORD"===r.value){ie.trace("}"),t&&(i[t]=s);let a=s.layoutHandle;t&&a&&a.length>0&&"0"!==a&&(n._layoutBlocks[a]=s),ie.trace("BlockRecord {"),s={},t=void 0,r=e.next()}else ad(r),r=e.next();break;default:ad(r),r=e.next()}ie.trace("}"),t&&(i[t]=s);let a=s.layoutHandle;return t&&a&&a.length>0&&"0"!==a&&(n._layoutBlocks[a]=s),i}},STYLE:{tableRecordsProperty:"styles",tableName:"style",dxfSymbolName:"STYLE",parseTableRecords:function(){let t,i={},n={};for(ie.trace("Style {"),r=e.next();!il(r,0,"ENDTAB");)switch(r.code){case 2:n.styleName=r.value,t=r.value,r=e.next();break;case 3:n.fontFile=r.value,r=e.next();break;case 4:n.bigFontFile=r.value,r=e.next();break;case 5:n.handle=r.value,r=e.next();break;case 7:n.textStyle=r.value,r=e.next();break;case 40:n.textHeight=r.value,r=e.next();break;case 41:n.xScale=r.value,r=e.next();break;case 42:n.priorTextHeight=r.value,r=e.next();break;case 50:n.rotation=r.value,r=e.next();break;case 70:default:r=e.next();break;case 71:n.mirroreType=r.value,r=e.next();break;case 330:n.ownerHandle=r.value,r=e.next();break;case 0:"STYLE"===r.value&&(ie.trace("}"),t&&(i[t]=n),ie.trace("Style {"),n={},t=void 0,r=e.next())}return ie.trace("}"),t&&(i[t]=n),i}},DIMSTYLE:{tableRecordsProperty:"dimStyles",tableName:"dimStyle",dxfSymbolName:"DIMSTYLE",parseTableRecords:function(){let t,i={},n={};for(ie.trace("DimStyle {"),r=e.next();!il(r,0,"ENDTAB");)switch(r.code){case 2:n.styleName=r.value,t=r.value,r=e.next();break;case 40:n.DIMSCALE=r.value,r=e.next();break;case 41:n.DIMASZ=r.value,r=e.next();break;case 42:n.DIMEXO=r.value,r=e.next();break;case 44:n.DIMEXE=r.value,r=e.next();break;case 75:n.DIMSE1=r.value,r=e.next();break;case 76:n.DIMSE2=r.value,r=e.next();break;case 77:n.DIMTAD=r.value,r=e.next();break;case 140:n.DIMTXT=r.value,r=e.next();break;case 144:n.DIMLFAC=r.value,r=e.next();break;case 147:n.DIMGAP=r.value,r=e.next();break;case 176:n.DIMCLRD=r.value,r=e.next();break;case 178:n.DIMCLRT=r.value,r=e.next();break;case 271:n.DIMDEC=r.value,r=e.next();break;case 341:n.DIMLDRBLK=r.value,r=e.next();break;case 70:default:r=e.next();break;case 0:"DIMSTYLE"===r.value&&(ie.trace("}"),t&&(i[t]=n),ie.trace("DimStyle {"),n={},t=void 0,r=e.next())}return ie.trace("}"),t&&(i[t]=n),i}}};function p(t){let i=[],s=t?"ENDBLK":"ENDSEC";for(t||(r=e.next());;)if(0===r.code){if(r.value===s)break;let t=n._entityHandlers[r.value];if(null==t){let t=r.value;n.unhandledEntities[t]||(n.unhandledEntities[t]=0),n.unhandledEntities[t]++,r=e.next();continue}{ie.trace(r.value+" {");let n=t.parseEntity(e,r);n&&(n.layer||(n.layer="0"),void 0===n.colorIndex&&(n.colorIndex=256),n.lineType||(n.lineType=rO)),r=e.lastReadGroup,ie.trace("}"),m(n),i.push(n)}}else r=e.next();return"ENDSEC"==s&&(r=e.next()),i}function d(){let t={};for(r=e.next();"EOF"!==r.value;)if(0===r.code){if("ENDSEC"===r.value)break;let i=n._objectHandlers[r.value];if(null==i){let t=r.value;n.unhandledObjects[t]||(n.unhandledObjects[t]=0),n.unhandledObjects[t]++,r=e.next();continue}{ie.trace(r.value+" {");let n=i.parseObject(e,r),s=r.value;r=e.lastReadGroup,ie.trace("}"),m(n),t[s]||(t[s]=[]),t[s].push(n)}}else r=e.next();return r=e.next(),t.LAYOUT&&(Object.keys(n._layoutBlocks).length!==t.LAYOUT.length&&ie.warn("[DxfParser] The number of layout and block associations does not match!"),t.LAYOUT.forEach((e=>{n._layoutBlocks[e.handle]&&(e.associatedBlockName=n._layoutBlocks[e.handle].blockName)})),t.LAYOUT.sort(((e,t)=>e.tabOrder-t.tabOrder))),t}function f(t){let i={},r=t.code;if(i.x=t.value,r+=10,(t=e.next()).code!=r)throw new Error(`Expected code for point value to be ${r} but got ${t.code}.`);return i.y=t.value,r+=10,(t=e.next()).code!=r||(i.z=t.value,t=e.next()),i}function m(e){if(!e)throw new TypeError("entity cannot be undefined or null");e.handle||(e.handle=(i++).toString())}return function(){for(r=e.next();999===r.code;)r=e.next();for(;!e.isEOF();)if(0===r.code&&"SECTION"===r.value){if(r=e.next(),2!==r.code){ie.error("Unexpected code %s after 0:SECTION",uDe(r)),r=e.next();continue}if("HEADER"===r.value)ie.trace("> HEADER"),t.header=s(),ie.trace("<");else if("TABLES"===r.value)ie.trace("> TABLES"),t.tables=l(),ie.trace("<");else if("BLOCKS"===r.value)ie.trace("> BLOCKS"),t.blocks=a(),ie.trace("<");else if("ENTITIES"===r.value)ie.trace("> ENTITIES"),t.entities=p(!1),ie.trace("<");else if("OBJECTS"===r.value)ie.trace("> OBJECTS"),t.objects=d(),ie.trace("<");else if("EOF"===r.value)ie.trace("EOF");else{let e=r.value;n.unhandledSections[e]?n.unhandledSections[e]++:n.unhandledSections[e]=1}}else r=e.next();n.unhandledSections={},n.unhandledEntities={},n.unhandledObjects={},n.unsupportedLineTypes={}}(),t}splitByLineSeparator(e){let t=[],i=0;for(let r=0,n=e.length;r(e.Added="Added",e.Removed="Removed",e.Modified="Modified",e.NoChange="NoChange",e))(Z8||{}),Ws=1,cO=class{constructor(e,t){if(this.changes={},this.comparedBlocks=new Map,this.isComparingBlock=!1,this.isComparingDimension=!1,this.dxf1=e,this.dxf2=t,!e||!t)throw new Error("Invalid dxf data to compare!")}getLayerFrozen(e,t){var i,r,n;let s=null==(r=null==(i=e.tables)?void 0:i.layer)?void 0:r.layers;return s&&(null==(n=s[t.layer])?void 0:n.frozen)}compare(e){return ht(this,null,(function*(){this.changes={};let t=[],i=new Map;return this.dxf1.entities.forEach((e=>{if(!0!==e.inPaperSpace){let i=!0===this.getLayerFrozen(this.dxf1,e);!cO.ignoreEntityTypes.includes(e.type)&&!i&&t.push(e)}})),this.dxf2.entities.forEach((e=>{if(!0!==e.inPaperSpace){let t=!0===this.getLayerFrozen(this.dxf2,e);!cO.ignoreEntityTypes.includes(e.type)&&!t&&i.set(e.handle,e)}})),yield this.compareEntities(t,i,void 0,e),Promise.resolve(this.changes)}))}isDimensionBlock(e){return e.includes("*D")}compareInsertOrDemensionEntities(e,t,i,r){if(!e.block||!t.block)return;let n,s=e.block;if(this.isComparingBlock=!0,this.isDimensionBlock(s)){let i=this.dxf1.blocks[e.block],r=this.dxf2.blocks[t.block],a=Date.now();this.isComparingDimension=!0,n=this.compareBlock(i,r),this.isComparingDimension=!1,ie.debug(`[DxfCompare] compare block: ${s} cost ${(Date.now()-a)/1e3}s`)}else{if(!this.comparedBlocks.has(s)){let e=this.dxf1.blocks[s],t=this.dxf2.blocks[s],i=Date.now(),r=this.compareBlock(e,t);this.comparedBlocks.set(s,r),ie.debug(`[DxfCompare] compare block: ${s} cost ${(Date.now()-i)/1e3}s`)}n=this.comparedBlocks.get(s)}return null==n||n.forEach((t=>{if(t.parentHandles||(t.parentHandles=[]),i&&r)"Added"===t.type?t.parentHandles.push(r):"Removed"===t.type&&t.parentHandles.push(i);else{let i=[...t.parentHandles,e.handle];("Added"===t.type||"Removed"===t.type)&&(this.changes[Ws]=Cn(Br({id:Ws},t),{parentHandles:i})),Ws++}})),!i&&!r&&(this.isComparingBlock=!1),n}compareBlock(e,t){var i,r;let n=[],s=[];null==(i=null==e?void 0:e.entities)||i.forEach((e=>{"ATTDEF"!==e.type&&!this.bIgnoreChildEntitiesOriginalType(e)&&n.push(e)})),null==(r=null==t?void 0:t.entities)||r.forEach((e=>{"ATTDEF"!==e.type&&!this.bIgnoreChildEntitiesOriginalType(e)&&s.push(e)}));let a=[],o=[];for(let e=0;e0&&a.push(...n),i=!1,s.splice(e--,1);break}i=!1,s.splice(e--,1);break}i=!0}i&&(a.push({type:"Removed",handle:t.handle}),o.push(t.handle))}return s.forEach((e=>{o.includes(e.handle)||a.push({type:"Added",handle:e.handle})})),a}compareEntities(e,t,i,r){return ht(this,null,(function*(){var n,s;let a=e.length,o=Math.round(Math.pow(a,.5)),l=Date.now(),h=e=>ht(this,null,(function*(){if(r&&(e%o==0||e===a-1)){r(new ProgressEvent("compareProgress",{loaded:e+1,total:a}));let t=500,i=Date.now();(i-l>t||e===a-1)&&(yield Is.sleep(0),l=i)}}));for(let r=0;r\n\n // Clamp [0..1] range\n #define saturate(a) clamp(a, 0.0, 1.0)\n\n const float EPS = 0.000001;\n\n vec2 getWorldScale() {\n return vec2(length(modelMatrix[0].xyz), length(modelMatrix[1].xyz));\n }\n\n vec2 rotate(vec2 st, float rotation) {\n const float PI = 3.1415926;\n float angle = rotation * PI/180.0;\n float sine = sin(angle), cosine = cos(angle);\n return vec2(cosine * st.x - sine * st.y, cosine * st.y + sine * st.x);\n }\n\n vec2 translate(vec2 samplePosition, vec2 offset) {\n //move samplepoint in the opposite direction that we want to move shapes in\n return samplePosition - offset;\n }\n\n vec2 scale(vec2 samplePosition, float scale) {\n return samplePosition / scale;\n }\n\n float sdfLine(vec2 st, vec2 a, vec2 b) {\n vec2 ap = st - a;\n vec2 ab = b - a;\n return abs(((ap.x * ab.y) - (ab.x * ap.y))) / length(ab);\n }\n\n float drawSpaceLine(vec2 st, float distanceBetweenLines, float thick) {\n float dist = sdfLine(st , vec2(0.0, 0.0) , vec2(1.0, 0.0));\n \n //vec2 tt = dFdy(st);\n //float scale = (abs(tt.x)+abs(tt.y))/2.0;\n //float scale = length(fwidth(st)) * 0.5;\n // close to a pixel\n //float thick = 2.0;\n //thick = (thick * 0.5 - 0.5) * scale;\n\n float lineDistance = abs(fract(dist / distanceBetweenLines + 0.5) - 0.5) * distanceBetweenLines;\n //float distanceChange = fwidth(dist) * 0.5;\n //float thresold = smoothstep(thick - distanceChange, thick + distanceChange, lineDistance);\n //float thresold = step(thick,lineDistance);\n // remove gradient\n float thresold = step(thick,lineDistance);\n\n return saturate(thresold);\n }\n\n float drawSolidLine(PatternLine patternLine, float thick) {\n vec2 origin = patternLine.origin;\n vec2 delta = patternLine.delta;\n float distanceBetweenLines = length(delta);\n\n origin = rotate(origin,u_patternAngle);\n vec2 st = rotate(v_pos.xy - origin, -(patternLine.angle + u_patternAngle));\n\n return drawSpaceLine(st, distanceBetweenLines , thick);\n }\n\n int getPatternIndex(PatternLine patternLine, float u ) {\n u = mod(u, patternLine.patternLength);\n float distance = 0.0;\n\n #pragma unroll_loop_start\n for(int i = 1; i < patternLine.patternSum.length(); i++){\n if(u < patternLine.patternSum[i]) {\n distance = u - patternLine.patternSum[i-1];\n return i - 1;\n }\n }\n #pragma unroll_loop_end\n\n return -1;\n }\n\n float drawDashedLine(PatternLine patternLine, float thick){\n float thresold = 1.0;\n vec2 origin = patternLine.origin;\n vec2 delta = patternLine.delta; \n float distanceBetweenLines = length(delta.y);\n\n origin = rotate(origin, u_patternAngle);\n vec2 st = rotate(v_pos.xy - origin, -(patternLine.angle + u_patternAngle));\n\n float offsetX = st.y * delta.x/delta.y;\n float u = st.x - offsetX;\n int index = getPatternIndex(patternLine, u);\n if(index < 0){\n return thresold;\n }\n\n float size = patternLine.pattern[index];\n if(size >= 0.0) {\n thresold = drawSpaceLine(st, distanceBetweenLines , thick);\n }\n \n return thresold;\n }\n\n float drawLine(PatternLine patternLine, float thick) {\n float t = 0.0;\n if(patternLine.patternLength > 0.0) {\n t = drawDashedLine(patternLine, thick);\n } else {\n t = drawSolidLine(patternLine, thick);\n }\n return t;\n }\n\n void main() {\n #include \n \n if(u_cameraZoom < EPS){\n gl_FragColor = vec4(u_color, 1.0);\n return;\n }\n\n vec2 worldScale = getWorldScale();\n float averageScale = (abs(worldScale.x) + abs(worldScale.y))/2.0;\n float thick = (0.7 / averageScale) / u_cameraZoom;\n\n float total = 0.0;\n\n#if ${e.length} > 1\n #pragma unroll_loop_start\n for (int i = 0; i < u_patternLines.length(); i++) {\n PatternLine pl = u_patternLines[i];\n float t = drawLine(pl, thick);\n total += (1.0 - t);\n }\n #pragma unroll_loop_end\n#else\n float t = drawLine(u_patternLines[0], thick);\n total += (1.0 - t);\n#endif\n\n total = saturate(total);\n if (total < 0.01) {\n discard;\n }\n\n gl_FragColor = vec4(u_color * total, 1.0);\n }\n `;return new Yt({uniforms:n,vertexShader:"\n varying vec3 v_pos;\n\n #include \n void main() {\n //vec4 worldPosition = modelMatrix * vec4(position, 1.0);\n v_pos = position;\n\n #include \n #include \n #include \n }",fragmentShader:s,clipping:!0})}Xn.ENTITY_COLOR_ADDED=65280,Xn.ENTITY_COLOR_REMOVED=16711680,Xn.ENTITY_COLOR_NO_CHANGE=10066329,Xn.ENTITY_COLOR_MARKUP=16744231,Xn.ignoreEntityTypes=["ATTRIB","SEQEND"];var uO=class{static createLineShaderMaterial(e,t,i,r,n){let s=0,a=[];for(let t=0;t\n\n vec2 getWorldScale() {\n return vec2(length(modelMatrix[0].xyz), length(modelMatrix[1].xyz));\n }\n\n void main() {\n\n #include \n\n // vec2 worldScale = getWorldScale();\n // float averageScale = (abs(worldScale.x) + abs(worldScale.y))/2.0;\n // When zoomed out to a certain extent, it is displayed as a solid line.\n if(patternLength * u_viewportScale * u_cameraZoom/1.5 < 1.0){\n gl_FragColor = vec4(u_color, opacity);\n return;\n }\n\n float pos = mod(vLineDistance, patternLength * u_viewportScale);\n\n for ( int i = 0; i < ${e.length}; i++ ) {\n pos = pos - abs(pattern[i] * u_viewportScale);\n if ( pos < 0.0 ) {\n if ( pattern[i] > 0.0 ) {\n gl_FragColor = vec4(u_color, opacity);\n break;\n }\n discard;\n }\n }\n }`;return new Yt({uniforms:o,vertexShader:"\n attribute float lineDistance;\n varying float vLineDistance;\n\n #include \n\n void main() {\n vLineDistance = lineDistance;\n\n #include \n #include \n #include \n }",fragmentShader:l,clipping:!0})}},eG={};tw(eG,{default:()=>Q8});var J8={};tw(J8,{default:()=>K8});var K8=(e,t)=>void 0===t||0==+t?Math.round(e):(e=+e,t=+t,isNaN(e)||"number"!=typeof t||t%1!=0?NaN:(e=e.toString().split("e"),+((e=(e=Math.round(+(e[0]+"e"+(e[1]?+e[1]-t:-t)))).toString().split("e"))[0]+"e"+(e[1]?+e[1]+t:t)))),Q8=(e,t,i,r,n)=>{let s=i.length,a=i[0].length;if(e<0||e>1)throw new Error("t out of bounds [0,1]: "+e);if(t<1)throw new Error("degree must be at least 1 (linear)");if(t>s-1)throw new Error("degree must be less than or equal to point count - 1");if(r){if(r.length!==s+t+1)throw new Error("bad knot vector length")}else{r=[];for(let e=0;e=r[o]&&e<=r[o+1]);o++);let c,p=[];for(let e=0;eo-t-1+i;n--){c=(e-r[n])/(r[n+t+1-i]-r[n]);for(let e=0;e{if(!e)return[];e=e.replace(/%%(.)/g,((e,t)=>pLt[t]||t));let i,r=null==t?void 0:t.encoding,n=r instanceof TextDecoder?r:void 0,s="",a=[],o=e=>{s&&(a.push(s),s=""),a.push(e)};for(let t=0;t(e=mLt(e),t?gLt(e,t):e),mLt=e=>e.replace(/\\[uU]\+([0-9a-fA-F]{4})/g,((e,t)=>String.fromCodePoint(parseInt(t,16)))),gLt=(e,t)=>{let i=t instanceof TextDecoder?t:new TextDecoder(t);return e.replace(/\\[mM]\+[0|1]([0-9a-fA-F]{2})([0-9a-fA-F]{2})/g,((e,r,n)=>(i=i||new TextDecoder(t)).decode(new Uint8Array([parseInt(r,16),parseInt(n,16)]))))},pO=(e,t)=>{let i=0,r={text:""},n=[r],s=(e=fLt(e,null==t?void 0:t.encoding)).matchAll(/%%(\d\d\d|.)/g);for(let t of s){r.text+=e.slice(i,t.index);let s=t[1].toLowerCase(),a=dLt[s];a?r.text+=a:3===s.length?r.text+=String.fromCodePoint(+s):"k"===s||"o"===s||"u"===s?(r=Cn(Br({},r),{text:""}),r[s]?delete r[s]:r[s]=1,n.push(r)):r.text+=s,i=t.index+t[0].length}return r.text+=e.slice(i),n.filter((e=>e.text))},tG=(e=>(e.Unitless="Unitless",e.Inches="Inches",e.Feet="Feet",e.Millimeters="Millimeters",e.Centimeters="Centimeters",e.Meters="Meters",e))(tG||{}),pDe=e=>"Unitless"===e?1:"Inches"===e?.0254:"Feet"===e?.3048:"Millimeters"===e?.001:"Centimeters"===e?.01:("Meters"===e||console.warn(`[Units] Unsupported unit '${e}', will return 1 for unit scale.`),1),rG=(e,t)=>pDe(e)/pDe(t),$T="0.2.30",dDe="VERSION",yLt=()=>window.localStorage.getItem(dDe),TLt=()=>{window.localStorage.setItem(dDe,$T)},fDe=()=>yLt()!==$T&&(TLt(),!0),ZT=class{constructor(){this.DATABASE_NAME="gemini_viewer_db",this.TABLES=[{name:"viewpoint",options:{keyPath:"id",autoIncrement:!0},indexArray:[]},{name:"annotation",options:{keyPath:"id",autoIncrement:!0},indexArray:[]},{name:"dxfdata",options:{keyPath:"dxfDataId",autoIncrement:!1},indexArray:[]},{name:"fontdata",options:{keyPath:"url",autoIncrement:!0},indexArray:[]}],this.db=void 0}static instance(){return ZT._instance||(ZT._instance=new ZT),ZT._instance}getDatabase(){return ht(this,null,(function*(){let e=yield this.getDB(this.DATABASE_NAME);return this.db||(e.close(),fDe()&&(yield this.deleteDataBase(this.DATABASE_NAME)),e=yield this.getUpgradedDB(e)),e.onclose=()=>{this.db=void 0,ie.debug(`[DB] Db ${e.name} is closed.`)},e.onerror=t=>{this.db=void 0,ie.debug(`[DB] Db ${e.name} encountered error.`,t)},e.onabort=t=>{this.db=void 0,ie.debug(`[DB] Db ${e.name} aborted.`,t)},e.onversionchange=e=>{ie.debug("onversionchange",e)},this.db=e,Promise.resolve(this.db)}))}closeDatabase(){this.db&&this.db.close()}deleteDataBase(e){return new Promise(((t,i)=>{let r=window.indexedDB.deleteDatabase(e);r.onerror=e=>{ie.debug(e),i(e)},r.onsuccess=i=>{let r=i.target;ie.debug(`[DB] Db ${e} delete old version ${i.oldVersion}.`),t(r)}}))}getDB(e){return ht(this,null,(function*(){return new Promise(((t,i)=>{let r=window.indexedDB.open(e);r.onerror=i,r.onsuccess=e=>{let i=e.target.result;ie.debug(`[DB] Db ${i.name} opened (version ${i.version}).`),t(i)}}))}))}getUpgradedDB(e){return ht(this,null,(function*(){return new Promise(((t,i)=>{ie.debug(`[DB] Upgrading db ${e.name} (version ${e.version})`);let r=window.indexedDB.open(e.name,e.version+1);r.onerror=i,r.onblocked=e=>{ie.debug("onblocked",e)},r.onupgradeneeded=e=>{e.target.transaction.oncomplete=()=>{ie.debug(`[DB] Upgrade is done (new version: ${t.version}).`)};let t=e.target.result,i=[];for(let e=0;e0&&Promise.all(i).then((()=>{ie.debug(`[DB] All(${i.length}) tables created.`)}))},r.onsuccess=e=>{let i=e.target.result;ie.debug(`[DB] Db ${i.name} opened (version ${i.version}).`),t(i)}}))}))}createTable(e,t,i,r){return ht(this,null,(function*(){return new Promise((n=>{let s=e.createObjectStore(t,i);r&&r.forEach((e=>{s.createIndex(e.name,e.fields,{unique:e.unique})})),ie.debug(`[DB] Table ${t} created.`),n(e)}))}))}},os=ZT;os._instance=void 0;var uh=class{constructor(){if(this.db=void 0,this.isCreatingTable=!1,-1===os.instance().TABLES.findIndex((e=>e.name===this.tableName())))throw new Error(`Make sure to add table '${this.tableName()}' to IndexedDbManager.TABLES!`)}tableName(){throw new Error("Derived class have to override 'tableName', and set a proper table name!")}add(e,t,i){let r=this.tableName();os.instance().getDatabase().then((n=>{let s=n.transaction([r],"readwrite").objectStore(r).add(e);s.onsuccess=t,s.onerror=i})).finally((()=>{os.instance().closeDatabase()})).catch((e=>{i&&i(e)}))}save(e,t,i){let r=this.tableName();os.instance().getDatabase().then((n=>{let s=n.transaction([r],"readwrite").objectStore(r).put(e);s.onsuccess=t,s.onerror=i})).finally((()=>{os.instance().closeDatabase()}))}delete(e,t,i){let r=this.tableName();os.instance().getDatabase().then((n=>{let s=n.transaction([r],"readwrite").objectStore(r).delete(e);s.onsuccess=t,s.onerror=i})).finally((()=>{os.instance().closeDatabase()}))}update(){os.instance().getDatabase().then((()=>{}))}query(e,t){let i=this.tableName();os.instance().getDatabase().then((r=>{let n=r.transaction([i],"readonly").objectStore(i).openCursor();n.onsuccess=t=>{let i=t.target.result;i&&i.continue(),e&&e(i)},n.onerror=t})).finally((()=>{os.instance().closeDatabase()}))}queryAll(e,t){let i=this.tableName();os.instance().getDatabase().then((r=>{let n=r.transaction([i],"readonly").objectStore(i).getAll();n.onsuccess=t=>{e&&e(n.result)},n.onerror=t})).finally((()=>{os.instance().closeDatabase()}))}clearAll(e,t){let i=this.tableName();os.instance().getDatabase().then((r=>{let n=r.transaction([i],"readwrite").objectStore(i).clear();n.onsuccess=t=>{e&&e(t)},n.onerror=e=>{t&&t(e)}})).finally((()=>{os.instance().closeDatabase()}))}},KT=class extends uh{tableName(){return"annotation"}static instance(){return KT._instance||(KT._instance=new KT),KT._instance}query(e,t,i){let r=[];super.query((i=>{i?!i.value||i.value.projectId!==e||r.push(i.value):t&&t(r)}),(e=>{console.log(e)}))}},iG=KT;iG._instance=void 0;var JT=class extends uh{tableName(){return"viewpoint"}static instance(){return JT._instance||(JT._instance=new JT),JT._instance}query(e,t,i){let r=[];super.query((i=>{i?!i.value||i.value.projectId!==e||r.push(i.value):t&&t(r)}),(e=>{i&&i(),console.log(e)}))}},nG=JT;nG._instance=void 0;var QT=class extends uh{tableName(){return"dxfdata"}static instance(){return QT._instance||(QT._instance=new QT),QT._instance}query(e,t,i){let r=[],n=this.tableName();os.instance().getDatabase().then((s=>{let a=s.transaction([n],"readonly").objectStore(n).get(e);a.onerror=e=>{i&&i(e),ie.info("[DxfDataTable] Failed to query !",e)},a.onsuccess=()=>{a.result&&r.push(a.result),t&&t(r)}})).finally((()=>{os.instance().closeDatabase()}))}},eE=QT;eE._instance=void 0;var x0=class extends uh{tableName(){return"fontdata"}static instance(){return x0._instance||(x0._instance=new x0),x0._instance}query(e,t,i){let r;super.query((i=>{i?!i.value||i.value.url!==e||(r=i.value):t&&t(r)}),(e=>{i&&i(),console.log(e)}))}queryAll(){return ht(this,null,(function*(){return new Promise(((e,t)=>{e9(x0.prototype,this,"queryAll").call(this,(t=>{e(t)}),(e=>{t(e)}))}))}))}},hh=x0;hh._instance=void 0;var fO,mDe=(e=>(e[e.Horizontal=0]="Horizontal",e[e.Vertical=1]="Vertical",e[e.All=2]="All",e))(mDe||{}),I0=(e=>(e[e.Shapes=0]="Shapes",e[e.Bigfont=1]="Bigfont",e[e.Unifont=2]="Unifont",e))(I0||{}),dO=12,od=class extends ro{constructor(e,t){super(),this.width=0,this.lastPoint=e,this.polyLines=t,this.width=this.calcWidth(t)}offset(e){let t=[];for(let i=0;i>8}}return t.subarray(0,i)}var bLt="啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥懊澳芭捌扒叭吧笆八疤巴拔跋靶把耙坝霸罢爸白柏百摆佰败拜稗斑班搬扳般颁板版扮拌伴瓣半办绊邦帮梆榜膀绑棒磅蚌镑傍谤苞胞包褒剥薄雹保堡饱宝抱报暴豹鲍爆杯碑悲卑北辈背贝钡倍狈备惫焙被奔苯本笨崩绷甭泵蹦迸逼鼻比鄙笔彼碧蓖蔽毕毙毖币庇痹闭敝弊必辟壁臂避陛鞭边编贬扁便变卞辨辩辫遍标彪膘表鳖憋别瘪彬斌濒滨宾摈兵冰柄丙秉饼炳病并玻菠播拨钵波博勃搏铂箔伯帛舶脖膊渤泊驳捕卜哺补埠不布步簿部怖擦猜裁材才财睬踩采彩菜蔡餐参蚕残惭惨灿苍舱仓沧藏操糙槽曹草厕策侧册测层蹭插叉茬茶查碴搽察岔差诧拆柴豺搀掺蝉馋谗缠铲产阐颤昌猖场尝常长偿肠厂敞畅唱倡超抄钞朝嘲潮巢吵炒车扯撤掣彻澈郴臣辰尘晨忱沉陈趁衬撑称城橙成呈乘程惩澄诚承逞骋秤吃痴持匙池迟弛驰耻齿侈尺赤翅斥炽充冲虫崇宠抽酬畴踌稠愁筹仇绸瞅丑臭初出橱厨躇锄雏滁除楚础储矗搐触处揣川穿椽传船喘串疮窗幢床闯创吹炊捶锤垂春椿醇唇淳纯蠢戳绰疵茨磁雌辞慈瓷词此刺赐次聪葱囱匆从丛凑粗醋簇促蹿篡窜摧崔催脆瘁粹淬翠村存寸磋撮搓措挫错搭达答瘩打大呆歹傣戴带殆代贷袋待逮怠耽担丹单郸掸胆旦氮但惮淡诞弹蛋当挡党荡档刀捣蹈倒岛祷导到稻悼道盗德得的蹬灯登等瞪凳邓堤低滴迪敌笛狄涤翟嫡抵底地蒂第帝弟递缔颠掂滇碘点典靛垫电佃甸店惦奠淀殿碉叼雕凋刁掉吊钓调跌爹碟蝶迭谍叠丁盯叮钉顶鼎锭定订丢东冬董懂动栋侗恫冻洞兜抖斗陡豆逗痘都督毒犊独读堵睹赌杜镀肚度渡妒端短锻段断缎堆兑队对墩吨蹲敦顿囤钝盾遁掇哆多夺垛躲朵跺舵剁惰堕蛾峨鹅俄额讹娥恶厄扼遏鄂饿恩而儿耳尔饵洱二贰发罚筏伐乏阀法珐藩帆番翻樊矾钒繁凡烦反返范贩犯饭泛坊芳方肪房防妨仿访纺放菲非啡飞肥匪诽吠肺废沸费芬酚吩氛分纷坟焚汾粉奋份忿愤粪丰封枫蜂峰锋风疯烽逢冯缝讽奉凤佛否夫敷肤孵扶拂辐幅氟符伏俘服浮涪福袱弗甫抚辅俯釜斧脯腑府腐赴副覆赋复傅付阜父腹负富讣附妇缚咐噶嘎该改概钙盖溉干甘杆柑竿肝赶感秆敢赣冈刚钢缸肛纲岗港杠篙皋高膏羔糕搞镐稿告哥歌搁戈鸽胳疙割革葛格蛤阁隔铬个各给根跟耕更庚羹埂耿梗工攻功恭龚供躬公宫弓巩汞拱贡共钩勾沟苟狗垢构购够辜菇咕箍估沽孤姑鼓古蛊骨谷股故顾固雇刮瓜剐寡挂褂乖拐怪棺关官冠观管馆罐惯灌贯光广逛瑰规圭硅归龟闺轨鬼诡癸桂柜跪贵刽辊滚棍锅郭国果裹过哈骸孩海氦亥害骇酣憨邯韩含涵寒函喊罕翰撼捍旱憾悍焊汗汉夯杭航壕嚎豪毫郝好耗号浩呵喝荷菏核禾和何合盒貉阂河涸赫褐鹤贺嘿黑痕很狠恨哼亨横衡恒轰哄烘虹鸿洪宏弘红喉侯猴吼厚候后呼乎忽瑚壶葫胡蝴狐糊湖弧虎唬护互沪户花哗华猾滑画划化话槐徊怀淮坏欢环桓还缓换患唤痪豢焕涣宦幻荒慌黄磺蝗簧皇凰惶煌晃幌恍谎灰挥辉徽恢蛔回毁悔慧卉惠晦贿秽会烩汇讳诲绘荤昏婚魂浑混豁活伙火获或惑霍货祸击圾基机畸稽积箕肌饥迹激讥鸡姬绩缉吉极棘辑籍集及急疾汲即嫉级挤几脊己蓟技冀季伎祭剂悸济寄寂计记既忌际继纪嘉枷夹佳家加荚颊贾甲钾假稼价架驾嫁歼监坚尖笺间煎兼肩艰奸缄茧检柬碱硷拣捡简俭剪减荐槛鉴践贱见键箭件健舰剑饯渐溅涧建僵姜将浆江疆蒋桨奖讲匠酱降蕉椒礁焦胶交郊浇骄娇嚼搅铰矫侥脚狡角饺缴绞剿教酵轿较叫窖揭接皆秸街阶截劫节茎睛晶鲸京惊精粳经井警景颈静境敬镜径痉靖竟竞净炯窘揪究纠玖韭久灸九酒厩救旧臼舅咎就疚鞠拘狙疽居驹菊局咀矩举沮聚拒据巨具距踞锯俱句惧炬剧捐鹃娟倦眷卷绢撅攫抉掘倔爵桔杰捷睫竭洁结解姐戒藉芥界借介疥诫届巾筋斤金今津襟紧锦仅谨进靳晋禁近烬浸尽劲荆兢觉决诀绝均菌钧军君峻俊竣浚郡骏喀咖卡咯开揩楷凯慨刊堪勘坎砍看康慷糠扛抗亢炕考拷烤靠坷苛柯棵磕颗科壳咳可渴克刻客课肯啃垦恳坑吭空恐孔控抠口扣寇枯哭窟苦酷库裤夸垮挎跨胯块筷侩快宽款匡筐狂框矿眶旷况亏盔岿窥葵奎魁傀馈愧溃坤昆捆困括扩廓阔垃拉喇蜡腊辣啦莱来赖蓝婪栏拦篮阑兰澜谰揽览懒缆烂滥琅榔狼廊郎朗浪捞劳牢老佬姥酪烙涝勒乐雷镭蕾磊累儡垒擂肋类泪棱楞冷厘梨犁黎篱狸离漓理李里鲤礼莉荔吏栗丽厉励砾历利傈例俐痢立粒沥隶力璃哩俩联莲连镰廉怜涟帘敛脸链恋炼练粮凉梁粱良两辆量晾亮谅撩聊僚疗燎寥辽潦了撂镣廖料列裂烈劣猎琳林磷霖临邻鳞淋凛赁吝拎玲菱零龄铃伶羚凌灵陵岭领另令溜琉榴硫馏留刘瘤流柳六龙聋咙笼窿隆垄拢陇楼娄搂篓漏陋芦卢颅庐炉掳卤虏鲁麓碌露路赂鹿潞禄录陆戮驴吕铝侣旅履屡缕虑氯律率滤绿峦挛孪滦卵乱掠略抡轮伦仑沦纶论萝螺罗逻锣箩骡裸落洛骆络妈麻玛码蚂马骂嘛吗埋买麦卖迈脉瞒馒蛮满蔓曼慢漫谩芒茫盲氓忙莽猫茅锚毛矛铆卯茂冒帽貌贸么玫枚梅酶霉煤没眉媒镁每美昧寐妹媚门闷们萌蒙檬盟锰猛梦孟眯醚靡糜迷谜弥米秘觅泌蜜密幂棉眠绵冕免勉娩缅面苗描瞄藐秒渺庙妙蔑灭民抿皿敏悯闽明螟鸣铭名命谬摸摹蘑模膜磨摩魔抹末莫墨默沫漠寞陌谋牟某拇牡亩姆母墓暮幕募慕木目睦牧穆拿哪呐钠那娜纳氖乃奶耐奈南男难囊挠脑恼闹淖呢馁内嫩能妮霓倪泥尼拟你匿腻逆溺蔫拈年碾撵捻念娘酿鸟尿捏聂孽啮镊镍涅您柠狞凝宁拧泞牛扭钮纽脓浓农弄奴努怒女暖虐疟挪懦糯诺哦欧鸥殴藕呕偶沤啪趴爬帕怕琶拍排牌徘湃派攀潘盘磐盼畔判叛乓庞旁耪胖抛咆刨炮袍跑泡呸胚培裴赔陪配佩沛喷盆砰抨烹澎彭蓬棚硼篷膨朋鹏捧碰坯砒霹批披劈琵毗啤脾疲皮匹痞僻屁譬篇偏片骗飘漂瓢票撇瞥拼频贫品聘乒坪苹萍平凭瓶评屏坡泼颇婆破魄迫粕剖扑铺仆莆葡菩蒲埔朴圃普浦谱曝瀑期欺栖戚妻七凄漆柒沏其棋奇歧畦崎脐齐旗祈祁骑起岂乞企启契砌器气迄弃汽泣讫掐洽牵扦钎铅千迁签仟谦乾黔钱钳前潜遣浅谴堑嵌欠歉枪呛腔羌墙蔷强抢橇锹敲悄桥瞧乔侨巧鞘撬翘峭俏窍切茄且怯窃钦侵亲秦琴勤芹擒禽寝沁青轻氢倾卿清擎晴氰情顷请庆琼穷秋丘邱球求囚酋泅趋区蛆曲躯屈驱渠取娶龋趣去圈颧权醛泉全痊拳犬券劝缺炔瘸却鹊榷确雀裙群然燃冉染瓤壤攘嚷让饶扰绕惹热壬仁人忍韧任认刃妊纫扔仍日戎茸蓉荣融熔溶容绒冗揉柔肉茹蠕儒孺如辱乳汝入褥软阮蕊瑞锐闰润若弱撒洒萨腮鳃塞赛三叁伞散桑嗓丧搔骚扫嫂瑟色涩森僧莎砂杀刹沙纱傻啥煞筛晒珊苫杉山删煽衫闪陕擅赡膳善汕扇缮墒伤商赏晌上尚裳梢捎稍烧芍勺韶少哨邵绍奢赊蛇舌舍赦摄射慑涉社设砷申呻伸身深娠绅神沈审婶甚肾慎渗声生甥牲升绳省盛剩胜圣师失狮施湿诗尸虱十石拾时什食蚀实识史矢使屎驶始式示士世柿事拭誓逝势是嗜噬适仕侍释饰氏市恃室视试收手首守寿授售受瘦兽蔬枢梳殊抒输叔舒淑疏书赎孰熟薯暑曙署蜀黍鼠属术述树束戍竖墅庶数漱恕刷耍摔衰甩帅栓拴霜双爽谁水睡税吮瞬顺舜说硕朔烁斯撕嘶思私司丝死肆寺嗣四伺似饲巳松耸怂颂送宋讼诵搜艘擞嗽苏酥俗素速粟僳塑溯宿诉肃酸蒜算虽隋随绥髓碎岁穗遂隧祟孙损笋蓑梭唆缩琐索锁所塌他它她塔獭挞蹋踏胎苔抬台泰酞太态汰坍摊贪瘫滩坛檀痰潭谭谈坦毯袒碳探叹炭汤塘搪堂棠膛唐糖倘躺淌趟烫掏涛滔绦萄桃逃淘陶讨套特藤腾疼誊梯剔踢锑提题蹄啼体替嚏惕涕剃屉天添填田甜恬舔腆挑条迢眺跳贴铁帖厅听烃汀廷停亭庭挺艇通桐酮瞳同铜彤童桶捅筒统痛偷投头透凸秃突图徒途涂屠土吐兔湍团推颓腿蜕褪退吞屯臀拖托脱鸵陀驮驼椭妥拓唾挖哇蛙洼娃瓦袜歪外豌弯湾玩顽丸烷完碗挽晚皖惋宛婉万腕汪王亡枉网往旺望忘妄威巍微危韦违桅围唯惟为潍维苇萎委伟伪尾纬未蔚味畏胃喂魏位渭谓尉慰卫瘟温蚊文闻纹吻稳紊问嗡翁瓮挝蜗涡窝我斡卧握沃巫呜钨乌污诬屋无芜梧吾吴毋武五捂午舞伍侮坞戊雾晤物勿务悟误昔熙析西硒矽晰嘻吸锡牺稀息希悉膝夕惜熄烯溪汐犀檄袭席习媳喜铣洗系隙戏细瞎虾匣霞辖暇峡侠狭下厦夏吓掀锨先仙鲜纤咸贤衔舷闲涎弦嫌显险现献县腺馅羡宪陷限线相厢镶香箱襄湘乡翔祥详想响享项巷橡像向象萧硝霄削哮嚣销消宵淆晓小孝校肖啸笑效楔些歇蝎鞋协挟携邪斜胁谐写械卸蟹懈泄泻谢屑薪芯锌欣辛新忻心信衅星腥猩惺兴刑型形邢行醒幸杏性姓兄凶胸匈汹雄熊休修羞朽嗅锈秀袖绣墟戌需虚嘘须徐许蓄酗叙旭序畜恤絮婿绪续轩喧宣悬旋玄选癣眩绚靴薛学穴雪血勋熏循旬询寻驯巡殉汛训讯逊迅压押鸦鸭呀丫芽牙蚜崖衙涯雅哑亚讶焉咽阉烟淹盐严研蜒岩延言颜阎炎沿奄掩眼衍演艳堰燕厌砚雁唁彦焰宴谚验殃央鸯秧杨扬佯疡羊洋阳氧仰痒养样漾邀腰妖瑶摇尧遥窑谣姚咬舀药要耀椰噎耶爷野冶也页掖业叶曳腋夜液一壹医揖铱依伊衣颐夷遗移仪胰疑沂宜姨彝椅蚁倚已乙矣以艺抑易邑屹亿役臆逸肄疫亦裔意毅忆义益溢诣议谊译异翼翌绎茵荫因殷音阴姻吟银淫寅饮尹引隐印英樱婴鹰应缨莹萤营荧蝇迎赢盈影颖硬映哟拥佣臃痈庸雍踊蛹咏泳涌永恿勇用幽优悠忧尤由邮铀犹油游酉有友右佑釉诱又幼迂淤于盂榆虞愚舆余俞逾鱼愉渝渔隅予娱雨与屿禹宇语羽玉域芋郁吁遇喻峪御愈欲狱育誉浴寓裕预豫驭鸳渊冤元垣袁原援辕园员圆猿源缘远苑愿怨院曰约越跃钥岳粤月悦阅耘云郧匀陨允运蕴酝晕韵孕匝砸杂栽哉灾宰载再在咱攒暂赞赃脏葬遭糟凿藻枣早澡蚤躁噪造皂灶燥责择则泽贼怎增憎曾赠扎喳渣札轧铡闸眨栅榨咋乍炸诈摘斋宅窄债寨瞻毡詹粘沾盏斩辗崭展蘸栈占战站湛绽樟章彰漳张掌涨杖丈帐账仗胀瘴障招昭找沼赵照罩兆肇召遮折哲蛰辙者锗蔗这浙珍斟真甄砧臻贞针侦枕疹诊震振镇阵蒸挣睁征狰争怔整拯正政帧症郑证芝枝支吱蜘知肢脂汁之织职直植殖执值侄址指止趾只旨纸志挚掷至致置帜峙制智秩稚质炙痔滞治窒中盅忠钟衷终种肿重仲众舟周州洲诌粥轴肘帚咒皱宙昼骤珠株蛛朱猪诸诛逐竹烛煮拄瞩嘱主著柱助蛀贮铸筑住注祝驻抓爪拽专砖转撰赚篆桩庄装妆撞壮状椎锥追赘坠缀谆准捉拙卓桌琢茁酌啄着灼浊兹咨资姿滋淄孜紫仔籽滓子自渍字鬃棕踪宗综总纵邹走奏揍租足卒族祖诅阻组钻纂嘴醉最罪尊遵昨左佐柞做作坐座锕嗳嫒瑷暧霭谙铵鹌媪骜鳌钯呗钣鸨龅鹎贲锛荜哔滗铋筚跸苄缏笾骠飑飙镖镳鳔傧缤槟殡膑镔髌鬓禀饽钹鹁钸骖黪恻锸侪钗冁谄谶蒇忏婵骣觇禅镡伥苌怅阊鲳砗伧谌榇碜龀枨柽铖铛饬鸱铳俦帱雠刍绌蹰钏怆缍鹑辍龊鹚苁骢枞辏撺锉鹾哒鞑骀绐殚赕瘅箪谠砀裆焘镫籴诋谛绨觌镝巅钿癫铫鲷鲽铤铥岽鸫窦渎椟牍笃黩簖怼镦炖趸铎谔垩阏轭锇锷鹗颚颛鳄诶迩铒鸸鲕钫鲂绯镄鲱偾沣凫驸绂绋赙麸鲋鳆钆赅尴擀绀戆睾诰缟锆纥镉颍亘赓绠鲠诟缑觏诂毂钴锢鸪鹄鹘鸹掴诖掼鹳鳏犷匦刿妫桧鲑鳜衮绲鲧埚呙帼椁蝈铪阚绗颉灏颢诃阖蛎黉讧荭闳鲎浒鹕骅桦铧奂缳锾鲩鳇诙荟哕浍缋珲晖诨馄阍钬镬讦诘荠叽哜骥玑觊齑矶羁虿跻霁鲚鲫郏浃铗镓蛲谏缣戋戬睑鹣笕鲣鞯绛缰挢峤鹪鲛疖颌鲒卺荩馑缙赆觐刭泾迳弪胫靓阄鸠鹫讵屦榉飓钜锔窭龃锩镌隽谲珏皲剀垲忾恺铠锴龛闶钪铐骒缂轲钶锞颔龈铿喾郐哙脍狯髋诓诳邝圹纩贶匮蒉愦聩篑阃锟鲲蛴崃徕涞濑赉睐铼癞籁岚榄斓镧褴阆锒唠崂铑铹痨鳓诔缧俪郦坜苈莅蓠呖逦骊缡枥栎轹砺锂鹂疠粝跞雳鲡鳢蔹奁潋琏殓裢裣鲢魉缭钌鹩蔺廪檩辚躏绫棂蛏鲮浏骝绺镏鹨茏泷珑栊胧砻偻蒌喽嵝镂瘘耧蝼髅垆撸噜闾泸渌栌橹轳辂辘氇胪鸬鹭舻鲈脔娈栾鸾銮囵荦猡泺椤脶镙榈褛锊呒唛嬷杩劢缦镘颡鳗麽扪焖懑钔芈谧猕祢渑腼黾缈缪闵缗谟蓦馍殁镆钼铙讷铌鲵辇鲶茑袅陧蘖嗫颟蹑苎咛聍侬哝驽钕傩讴怄瓯蹒疱辔纰罴铍谝骈缥嫔钋镤镨蕲骐绮桤碛颀颃鳍佥荨悭骞缱椠钤嫱樯戗炝锖锵镪羟跄诮谯荞缲硗跷惬锲箧锓揿鲭茕蛱巯赇虮鳅诎岖阒觑鸲诠绻辁铨阕阙悫荛娆桡饪轫嵘蝾缛铷颦蚬飒毵糁缫啬铯穑铩鲨酾讪姗骟钐鳝垧殇觞厍滠畲诜谂渖谥埘莳弑轼贳铈鲥绶摅纾闩铄厮驷缌锶鸶薮馊飕锼谡稣谇荪狲唢睃闼铊鳎钛鲐昙钽锬顸傥饧铴镗韬铽缇鹈阗粜龆鲦恸钭钍抟饨箨鼍娲腽纨绾辋诿帏闱沩涠玮韪炜鲔阌莴龌邬庑怃妩骛鹉鹜饩阋玺觋硖苋莶藓岘猃娴鹇痫蚝籼跹芗饷骧缃飨哓潇骁绡枭箫亵撷绁缬陉荥馐鸺诩顼谖铉镟谑泶鳕埙浔鲟垭娅桠氩厣赝俨兖谳恹闫酽魇餍鼹炀轺鹞鳐靥谒邺晔烨诒呓峄饴怿驿缢轶贻钇镒镱瘗舣铟瘾茔莺萦蓥撄嘤滢潆璎鹦瘿颏罂镛莸铕鱿伛俣谀谕蓣嵛饫阈妪纡觎欤钰鹆鹬龉橼鸢鼋钺郓芸恽愠纭韫殒氲瓒趱錾驵赜啧帻箦谮缯谵诏钊谪辄鹧浈缜桢轸赈祯鸩诤峥钲铮筝骘栉栀轵轾贽鸷蛳絷踬踯觯锺纣绉伫槠铢啭馔颞骓缒诼镯谘缁辎赀眦锱龇鲻偬诹驺鲰镞缵躜鳟讠谫郄勐凼坂垅垴埯埝苘荬荮莜莼菰藁揸吒吣咔咝咴噘噼嚯幞岙嵴彷徼犸狍馀馇馓馕愣憷懔丬溆滟溷漤潴澹甯纟绔绱珉枧桊桉槔橥轱轷赍肷胨飚煳煅熘愍淼砜磙眍钚钷铘铞锃锍锎锏锘锝锪锫锿镅镎镢镥镩镲稆鹋鹛鹱疬疴痖癯裥襁耢颥螨麴鲅鲆鲇鲞鲴鲺鲼鳊鳋鳘鳙鞒鞴齄",vDe="啊阿埃挨哎唉哀皚癌藹矮艾礙愛隘鞍氨安俺按暗岸胺案骯昂盎凹敖熬翺襖傲奧懊澳芭捌扒叭吧笆八疤巴拔跋靶把耙壩霸罷爸白柏百擺佰敗拜稗斑班搬扳般頒板版扮拌伴瓣半辦絆邦幫梆榜膀綁棒磅蚌鎊傍謗苞胞包褒剝薄雹保堡飽寶抱報暴豹鮑爆杯碑悲卑北輩背貝鋇倍狽備憊焙被奔苯本笨崩繃甭泵蹦迸逼鼻比鄙筆彼碧蓖蔽畢斃毖幣庇痹閉敝弊必辟壁臂避陛鞭邊編貶扁便變卞辨辯辮遍標彪膘表鱉憋別癟彬斌瀕濱賓擯兵冰柄丙秉餅炳病並玻菠播撥缽波博勃搏鉑箔伯帛舶脖膊渤泊駁捕蔔哺補埠不布步簿部怖擦猜裁材才財睬踩采彩菜蔡餐參蠶殘慚慘燦蒼艙倉滄藏操糙槽曹草廁策側冊測層蹭插叉茬茶查碴搽察岔差詫拆柴豺攙摻蟬饞讒纏鏟產闡顫昌猖場嘗常長償腸廠敞暢唱倡超抄鈔朝嘲潮巢吵炒車扯撤掣徹澈郴臣辰塵晨忱沈陳趁襯撐稱城橙成呈乘程懲澄誠承逞騁秤吃癡持匙池遲弛馳恥齒侈尺赤翅斥熾充沖蟲崇寵抽酬疇躊稠愁籌仇綢瞅醜臭初出櫥廚躇鋤雛滁除楚礎儲矗搐觸處揣川穿椽傳船喘串瘡窗幢床闖創吹炊捶錘垂春椿醇唇淳純蠢戳綽疵茨磁雌辭慈瓷詞此刺賜次聰蔥囪匆從叢湊粗醋簇促躥篡竄摧崔催脆瘁粹淬翠村存寸磋撮搓措挫錯搭達答瘩打大呆歹傣戴帶殆代貸袋待逮怠耽擔丹單鄲撣膽旦氮但憚淡誕彈蛋當擋黨蕩檔刀搗蹈倒島禱導到稻悼道盜德得的蹬燈登等瞪凳鄧堤低滴迪敵笛狄滌翟嫡抵底地蒂第帝弟遞締顛掂滇碘點典靛墊電佃甸店惦奠澱殿碉叼雕雕刁掉吊釣調跌爹碟蝶叠諜疊丁盯叮釘頂鼎錠定訂丟東冬董懂動棟侗恫凍洞兜抖鬥陡豆逗痘都督毒犢獨讀堵睹賭杜鍍肚度渡妒端短鍛段斷緞堆兌隊對墩噸蹲敦頓囤鈍盾遁掇哆多奪垛躲朵跺舵剁惰墮蛾峨鵝俄額訛娥惡厄扼遏鄂餓恩而兒耳爾餌洱二貳發罰筏伐乏閥法琺藩帆番翻樊礬釩繁凡煩反返範販犯飯泛坊芳方肪房防妨仿訪紡放菲非啡飛肥匪誹吠肺廢沸費芬酚吩氛分紛墳焚汾粉奮份忿憤糞豐封楓蜂峰鋒風瘋烽逢馮縫諷奉鳳佛否夫敷膚孵扶拂輻幅氟符伏俘服浮涪福袱弗甫撫輔俯釜斧脯腑府腐赴副覆賦復傅付阜父腹負富訃附婦縛咐噶嘎該改概鈣蓋溉幹甘桿柑竿肝趕感稈敢贛岡剛鋼缸肛綱崗港杠篙臯高膏羔糕搞鎬稿告哥歌擱戈鴿胳疙割革葛格蛤閣隔鉻個各給根跟耕更庚羹埂耿梗工攻功恭龔供躬公宮弓鞏汞拱貢共鉤勾溝茍狗垢構購夠辜菇咕箍估沽孤姑鼓古蠱骨谷股故顧固雇刮瓜剮寡掛褂乖拐怪棺關官冠觀管館罐慣灌貫光廣逛瑰規圭矽歸龜閨軌鬼詭癸桂櫃跪貴劊輥滾棍鍋郭國果裹過哈骸孩海氦亥害駭酣憨邯韓含涵寒函喊罕翰撼捍旱憾悍焊汗漢夯杭航壕嚎豪毫郝好耗號浩呵喝荷菏核禾和何合盒貉閡河涸赫褐鶴賀嘿黑痕很狠恨哼亨橫衡恒轟哄烘虹鴻洪宏弘紅喉侯猴吼厚候後呼乎忽瑚壺葫胡蝴狐糊湖弧虎唬護互滬戶花嘩華猾滑畫劃化話槐徊懷淮壞歡環桓還緩換患喚瘓豢煥渙宦幻荒慌黃磺蝗簧皇凰惶煌晃幌恍謊灰揮輝徽恢蛔回毀悔慧卉惠晦賄穢會燴匯諱誨繪葷昏婚魂渾混豁活夥火獲或惑霍貨禍擊圾基機畸稽積箕肌饑跡激譏雞姬績緝吉極棘輯籍集及急疾汲即嫉級擠幾脊己薊技冀季伎祭劑悸濟寄寂計記既忌際繼紀嘉枷夾佳家加莢頰賈甲鉀假稼價架駕嫁殲監堅尖箋間煎兼肩艱奸緘繭檢柬堿鹼揀撿簡儉剪減薦檻鑒踐賤見鍵箭件健艦劍餞漸濺澗建僵姜將漿江疆蔣槳獎講匠醬降蕉椒礁焦膠交郊澆驕嬌嚼攪鉸矯僥腳狡角餃繳絞剿教酵轎較叫窖揭接皆稭街階截劫節莖睛晶鯨京驚精粳經井警景頸靜境敬鏡徑痙靖竟競凈炯窘揪究糾玖韭久灸九酒廄救舊臼舅咎就疚鞠拘狙疽居駒菊局咀矩舉沮聚拒據巨具距踞鋸俱句懼炬劇捐鵑娟倦眷卷絹撅攫抉掘倔爵桔傑捷睫竭潔結解姐戒藉芥界借介疥誡屆巾筋斤金今津襟緊錦僅謹進靳晉禁近燼浸盡勁荊兢覺決訣絕均菌鈞軍君峻俊竣浚郡駿喀咖卡咯開揩楷凱慨刊堪勘坎砍看康慷糠扛抗亢炕考拷烤靠坷苛柯棵磕顆科殼咳可渴克刻客課肯啃墾懇坑吭空恐孔控摳口扣寇枯哭窟苦酷庫褲誇垮挎跨胯塊筷儈快寬款匡筐狂框礦眶曠況虧盔巋窺葵奎魁傀饋愧潰坤昆捆困括擴廓闊垃拉喇蠟臘辣啦萊來賴藍婪欄攔籃闌蘭瀾讕攬覽懶纜爛濫瑯榔狼廊郎朗浪撈勞牢老佬姥酪烙澇勒樂雷鐳蕾磊累儡壘擂肋類淚棱楞冷厘梨犁黎籬貍離漓理李裏鯉禮莉荔吏栗麗厲勵礫歷利傈例俐痢立粒瀝隸力璃哩倆聯蓮連鐮廉憐漣簾斂臉鏈戀煉練糧涼梁粱良兩輛量晾亮諒撩聊僚療燎寥遼潦了撂鐐廖料列裂烈劣獵琳林磷霖臨鄰鱗淋凜賃吝拎玲菱零齡鈴伶羚淩靈陵嶺領另令溜琉榴硫餾留劉瘤流柳六龍聾嚨籠窿隆壟攏隴樓婁摟簍漏陋蘆盧顱廬爐擄鹵虜魯麓碌露路賂鹿潞祿錄陸戮驢呂鋁侶旅履屢縷慮氯律率濾綠巒攣孿灤卵亂掠略掄輪倫侖淪綸論蘿螺羅邏鑼籮騾裸落洛駱絡媽麻瑪碼螞馬罵嘛嗎埋買麥賣邁脈瞞饅蠻滿蔓曼慢漫謾芒茫盲氓忙莽貓茅錨毛矛鉚卯茂冒帽貌貿麽玫枚梅酶黴煤沒眉媒鎂每美昧寐妹媚門悶們萌蒙檬盟錳猛夢孟瞇醚靡糜迷謎彌米秘覓泌蜜密冪棉眠綿冕免勉娩緬面苗描瞄藐秒渺廟妙蔑滅民抿皿敏憫閩明螟鳴銘名命謬摸摹蘑模膜磨摩魔抹末莫墨默沫漠寞陌謀牟某拇牡畝姆母墓暮幕募慕木目睦牧穆拿哪吶鈉那娜納氖乃奶耐奈南男難囊撓腦惱鬧淖呢餒內嫩能妮霓倪泥尼擬妳匿膩逆溺蔫拈年碾攆撚念娘釀鳥尿捏聶孽嚙鑷鎳涅您檸獰凝寧擰濘牛扭鈕紐膿濃農弄奴努怒女暖虐瘧挪懦糯諾哦歐鷗毆藕嘔偶漚啪趴爬帕怕琶拍排牌徘湃派攀潘盤磐盼畔判叛乓龐旁耪胖拋咆刨炮袍跑泡呸胚培裴賠陪配佩沛噴盆砰抨烹澎彭蓬棚硼篷膨朋鵬捧碰坯砒霹批披劈琵毗啤脾疲皮匹痞僻屁譬篇偏片騙飄漂瓢票撇瞥拼頻貧品聘乒坪蘋萍平憑瓶評屏坡潑頗婆破魄迫粕剖撲鋪仆莆葡菩蒲埔樸圃普浦譜曝瀑期欺棲戚妻七淒漆柒沏其棋奇歧畦崎臍齊旗祈祁騎起豈乞企啟契砌器氣迄棄汽泣訖掐洽牽扡釬鉛千遷簽仟謙乾黔錢鉗前潛遣淺譴塹嵌欠歉槍嗆腔羌墻薔強搶橇鍬敲悄橋瞧喬僑巧鞘撬翹峭俏竅切茄且怯竊欽侵親秦琴勤芹擒禽寢沁青輕氫傾卿清擎晴氰情頃請慶瓊窮秋丘邱球求囚酋泅趨區蛆曲軀屈驅渠取娶齲趣去圈顴權醛泉全痊拳犬券勸缺炔瘸卻鵲榷確雀裙群然燃冉染瓤壤攘嚷讓饒擾繞惹熱壬仁人忍韌任認刃妊紉扔仍日戎茸蓉榮融熔溶容絨冗揉柔肉茹蠕儒孺如辱乳汝入褥軟阮蕊瑞銳閏潤若弱撒灑薩腮鰓塞賽三三傘散桑嗓喪搔騷掃嫂瑟色澀森僧莎砂殺剎沙紗傻啥煞篩曬珊苫杉山刪煽衫閃陜擅贍膳善汕扇繕墑傷商賞晌上尚裳梢捎稍燒芍勺韶少哨邵紹奢賒蛇舌舍赦攝射懾涉社設砷申呻伸身深娠紳神沈審嬸甚腎慎滲聲生甥牲升繩省盛剩勝聖師失獅施濕詩屍虱十石拾時什食蝕實識史矢使屎駛始式示士世柿事拭誓逝勢是嗜噬適仕侍釋飾氏市恃室視試收手首守壽授售受瘦獸蔬樞梳殊抒輸叔舒淑疏書贖孰熟薯暑曙署蜀黍鼠屬術述樹束戍豎墅庶數漱恕刷耍摔衰甩帥栓拴霜雙爽誰水睡稅吮瞬順舜說碩朔爍斯撕嘶思私司絲死肆寺嗣四伺似飼巳松聳慫頌送宋訟誦搜艘擻嗽蘇酥俗素速粟僳塑溯宿訴肅酸蒜算雖隋隨綏髓碎歲穗遂隧祟孫損筍蓑梭唆縮瑣索鎖所塌他它她塔獺撻蹋踏胎苔擡臺泰酞太態汰坍攤貪癱灘壇檀痰潭譚談坦毯袒碳探嘆炭湯塘搪堂棠膛唐糖倘躺淌趟燙掏濤滔絳萄桃逃淘陶討套特藤騰疼謄梯剔踢銻提題蹄啼體替嚏惕涕剃屜天添填田甜恬舔腆挑條迢眺跳貼鐵帖廳聽烴汀廷停亭庭挺艇通桐酮瞳同銅彤童桶捅筒統痛偷投頭透凸禿突圖徒途塗屠土吐兔湍團推頹腿蛻褪退吞屯臀拖托脫鴕陀馱駝橢妥拓唾挖哇蛙窪娃瓦襪歪外豌彎灣玩頑丸烷完碗挽晚皖惋宛婉萬腕汪王亡枉網往旺望忘妄威巍微危韋違桅圍唯惟為濰維葦萎委偉偽尾緯未蔚味畏胃餵魏位渭謂尉慰衛瘟溫蚊文聞紋吻穩紊問嗡翁甕撾蝸渦窩我斡臥握沃巫嗚鎢烏汙誣屋無蕪梧吾吳毋武五捂午舞伍侮塢戊霧晤物勿務悟誤昔熙析西硒矽晰嘻吸錫犧稀息希悉膝夕惜熄烯溪汐犀檄襲席習媳喜銑洗系隙戲細瞎蝦匣霞轄暇峽俠狹下廈夏嚇掀鍁先仙鮮纖鹹賢銜舷閑涎弦嫌顯險現獻縣腺餡羨憲陷限線相廂鑲香箱襄湘鄉翔祥詳想響享項巷橡像向象蕭硝霄削哮囂銷消宵淆曉小孝校肖嘯笑效楔些歇蠍鞋協挾攜邪斜脅諧寫械卸蟹懈泄瀉謝屑薪芯鋅欣辛新忻心信釁星腥猩惺興刑型形邢行醒幸杏性姓兄兇胸匈洶雄熊休修羞朽嗅銹秀袖繡墟戌需虛噓須徐許蓄酗敘旭序畜恤絮婿緒續軒喧宣懸旋玄選癬眩絢靴薛學穴雪血勛熏循旬詢尋馴巡殉汛訓訊遜迅壓押鴉鴨呀丫芽牙蚜崖衙涯雅啞亞訝焉咽閹煙淹鹽嚴研蜒巖延言顏閻炎沿奄掩眼衍演艷堰燕厭硯雁唁彥焰宴諺驗殃央鴦秧楊揚佯瘍羊洋陽氧仰癢養樣漾邀腰妖瑤搖堯遙窯謠姚咬舀藥要耀椰噎耶爺野冶也頁掖業葉曳腋夜液壹壹醫揖銥依伊衣頤夷遺移儀胰疑沂宜姨彜椅蟻倚已乙矣以藝抑易邑屹億役臆逸肄疫亦裔意毅憶義益溢詣議誼譯異翼翌繹茵蔭因殷音陰姻吟銀淫寅飲尹引隱印英櫻嬰鷹應纓瑩螢營熒蠅迎贏盈影穎硬映喲擁傭臃癰庸雍踴蛹詠泳湧永恿勇用幽優悠憂尤由郵鈾猶油遊酉有友右佑釉誘又幼迂淤於盂榆虞愚輿余俞逾魚愉渝漁隅予娛雨與嶼禹宇語羽玉域芋郁籲遇喻峪禦愈欲獄育譽浴寓裕預豫馭鴛淵冤元垣袁原援轅園員圓猿源緣遠苑願怨院曰約越躍鑰嶽粵月悅閱耘雲鄖勻隕允運蘊醞暈韻孕匝砸雜栽哉災宰載再在咱攢暫贊贓臟葬遭糟鑿藻棗早澡蚤躁噪造皂竈燥責擇則澤賊怎增憎曾贈紮喳渣劄軋鍘閘眨柵榨咋乍炸詐摘齋宅窄債寨瞻氈詹粘沾盞斬輾嶄展蘸棧占戰站湛綻樟章彰漳張掌漲杖丈帳賬仗脹瘴障招昭找沼趙照罩兆肇召遮折哲蟄轍者鍺蔗這浙珍斟真甄砧臻貞針偵枕疹診震振鎮陣蒸掙睜征猙爭怔整拯正政幀癥鄭證芝枝支吱蜘知肢脂汁之織職直植殖執值侄址指止趾只旨紙誌摯擲至致置幟峙制智秩稚質炙痔滯治窒中盅忠鐘衷終種腫重仲眾舟周州洲謅粥軸肘帚咒皺宙晝驟珠株蛛朱豬諸誅逐竹燭煮拄矚囑主著柱助蛀貯鑄築住註祝駐抓爪拽專磚轉撰賺篆樁莊裝妝撞壯狀椎錐追贅墜綴諄準捉拙卓桌琢茁酌啄著灼濁茲咨資姿滋淄孜紫仔籽滓子自漬字鬃棕蹤宗綜總縱鄒走奏揍租足卒族祖詛阻組鉆纂嘴醉最罪尊遵昨左佐柞做作坐座錒噯嬡璦曖靄諳銨鵪媼驁鰲鈀唄鈑鴇齙鵯賁錛蓽嗶潷鉍篳蹕芐緶籩驃颮飆鏢鑣鰾儐繽檳殯臏鑌髕鬢稟餑鈸鵓鈽驂黲惻鍤儕釵囅諂讖蕆懺嬋驏覘禪鐔倀萇悵閶鯧硨傖諶櫬磣齔棖檉鋮鐺飭鴟銃儔幬讎芻絀躕釧愴綞鶉輟齪鶿蓯驄樅輳攛銼鹺噠韃駘紿殫賧癉簞讜碭襠燾鐙糴詆諦綈覿鏑巔鈿癲銚鯛鰈鋌銩崠鶇竇瀆櫝牘篤黷籪懟鐓燉躉鐸諤堊閼軛鋨鍔鶚顎顓鱷誒邇鉺鴯鮞鈁魴緋鐨鯡僨灃鳧駙紱紼賻麩鮒鰒釓賅尷搟紺戇睪誥縞鋯紇鎘潁亙賡綆鯁詬緱覯詁轂鈷錮鴣鵠鶻鴰摑詿摜鸛鰥獷匭劌媯檜鮭鱖袞緄鯀堝咼幗槨蟈鉿闞絎頡灝顥訶闔蠣黌訌葒閎鱟滸鶘驊樺鏵奐繯鍰鯇鰉詼薈噦澮繢琿暉諢餛閽鈥鑊訐詰薺嘰嚌驥璣覬齏磯羈蠆躋霽鱭鯽郟浹鋏鎵蟯諫縑戔戩瞼鶼筧鰹韉絳韁撟嶠鷦鮫癤頜鮚巹藎饉縉贐覲剄涇逕弳脛靚鬮鳩鷲詎屨櫸颶鉅鋦窶齟錈鐫雋譎玨皸剴塏愾愷鎧鍇龕閌鈧銬騍緙軻鈳錁頷齦鏗嚳鄶噲膾獪髖誆誑鄺壙纊貺匱蕢憒聵簣閫錕鯤蠐崍徠淶瀨賚睞錸癩籟嵐欖斕鑭襤閬鋃嘮嶗銠鐒癆鰳誄縲儷酈壢藶蒞蘺嚦邐驪縭櫪櫟轢礪鋰鸝癘糲躒靂鱺鱧蘞奩瀲璉殮褳襝鰱魎繚釕鷯藺廩檁轔躪綾欞蟶鯪瀏騮綹鎦鷚蘢瀧瓏櫳朧礱僂蔞嘍嶁鏤瘺耬螻髏壚擼嚕閭瀘淥櫨櫓轤輅轆氌臚鸕鷺艫鱸臠孌欒鸞鑾圇犖玀濼欏腡鏍櫚褸鋝嘸嘜嬤榪勱縵鏝顙鰻麼捫燜懣鍆羋謐獼禰澠靦黽緲繆閔緡謨驀饃歿鏌鉬鐃訥鈮鯢輦鯰蔦裊隉蘗囁顢躡苧嚀聹儂噥駑釹儺謳慪甌蹣皰轡紕羆鈹諞駢縹嬪釙鏷鐠蘄騏綺榿磧頎頏鰭僉蕁慳騫繾槧鈐嬙檣戧熗錆鏘鏹羥蹌誚譙蕎繰磽蹺愜鍥篋鋟撳鯖煢蛺巰賕蟣鰍詘嶇闃覷鴝詮綣輇銓闋闕愨蕘嬈橈飪軔嶸蠑縟銣顰蜆颯毿糝繅嗇銫穡鎩鯊釃訕姍騸釤鱔坰殤觴厙灄畬詵諗瀋謚塒蒔弒軾貰鈰鰣綬攄紓閂鑠廝駟緦鍶鷥藪餿颼鎪謖穌誶蓀猻嗩脧闥鉈鰨鈦鮐曇鉭錟頇儻餳鐋鏜韜鋱緹鵜闐糶齠鰷慟鈄釷摶飩籜鼉媧膃紈綰輞諉幃闈溈潿瑋韙煒鮪閿萵齷鄔廡憮嫵騖鵡鶩餼鬩璽覡硤莧薟蘚峴獫嫻鷴癇蠔秈躚薌餉驤緗饗嘵瀟驍綃梟簫褻擷紲纈陘滎饈鵂詡頊諼鉉鏇謔澩鱈塤潯鱘埡婭椏氬厴贗儼兗讞懨閆釅魘饜鼴煬軺鷂鰩靨謁鄴曄燁詒囈嶧飴懌驛縊軼貽釔鎰鐿瘞艤銦癮塋鶯縈鎣攖嚶瀅瀠瓔鸚癭頦罌鏞蕕銪魷傴俁諛諭蕷崳飫閾嫗紆覦歟鈺鵒鷸齬櫞鳶黿鉞鄆蕓惲慍紜韞殞氳瓚趲鏨駔賾嘖幘簀譖繒譫詔釗謫輒鷓湞縝楨軫賑禎鴆諍崢鉦錚箏騭櫛梔軹輊贄鷙螄縶躓躑觶鍾紂縐佇櫧銖囀饌顳騅縋諑鐲諮緇輜貲眥錙齜鯔傯諏騶鯫鏃纘躦鱒訁譾郤猛氹阪壟堖垵墊檾蕒葤蓧蒓菇槁摣咤唚哢噝噅撅劈謔襆嶴脊仿僥獁麅餘餷饊饢楞怵懍爿漵灩混濫瀦淡寧糸絝緔瑉梘棬案橰櫫軲軤賫膁腖飈糊煆溜湣渺碸滾瞘鈈鉕鋣銱鋥鋶鐦鐧鍩鍀鍃錇鎄鎇鎿鐝鑥鑹鑔穭鶓鶥鸌癧屙瘂臒襇繈耮顬蟎麯鮁鮃鮎鯗鯝鯴鱝鯿鰠鰵鱅鞽韝齇";function yDe(e){return bLt.charAt(vDe.indexOf(e.charAt(0)))}var LIr=new RegExp("[一-龥]+");function TDe(e){return vDe.includes(e)}var di=class{static GetBytes(e){switch(typeof e){case"string":{let t=new Uint16Array(e.length);for(let i=0;i4294967295?((t=new Float64Array(1))[0]=e,new Uint8Array(t.buffer)):function(t){return t[0]=e,new Uint8Array(t.buffer)}(new Int32Array(1)):function(t){return t[0]=e,new Uint8Array(t.buffer)}(new Float64Array(1));case"boolean":return function(t){return t[0]=Number(e),t}(new Uint8Array(1));default:if(e instanceof Array){let t=[];for(let i=0;ie.length&&(i-=t);let r="";for(let n=0;ne.length&&(i-=t);let r=new Uint8Array(i);for(let n=0;n1&&(n.push(s.slice()),s=[]);break;case 3:l++,i/=t[l];break;case 4:l++,i*=t[l];break;case 5:if(4===a.length)throw"The position stack is only four locations deep";a.push(r);break;case 6:r=a.pop(),s.length>1&&(n.push(s.slice()),s=[]),o&&s.push(r.clone());break;case 7:{let a,o=0,h=i*e.baseUp,u=r.clone();switch(s.length>1&&(n.push(s.slice()),s=[]),e.type){case 0:l++,o=t[l];break;case 1:l++,o=t[l],0==o&&(l++,o=di.ToUInt16(new Uint8Array([t[l++],t[l++]]),0),u.x=t[l++]*i,u.y=t[l++]*i,h=t[l]*i);break;case 2:l+=2,o=di.ToUInt16(new Uint8Array([t[l-1],t[l]]),0)}0!==o&&(a=e.getGraphicTextShape(o,h,u),a&&(n.push(...a.polyLines.slice()),r=a.lastPoint.clone()))}break;case 8:{let e=new le;e.x=di.byteTosbyte(t[++l]),e.y=di.byteTosbyte(t[++l]),r.add(e.multiplyScalar(i)),o&&s.push(r.clone())}break;case 9:for(;;){let e=new le;if(e.x=di.byteTosbyte(t[++l]),e.y=di.byteTosbyte(t[++l]),0==e.x&&0==e.y)break;r.add(e.multiplyScalar(i)),o&&s.push(r.clone())}break;case 10:{let e=t[++l]*i,n=di.byteTosbyte(t[++l]),a=(112&n)>>4,h=7&n;0==h&&(h=8);let u=Math.PI/4,c=u*h,p=Wf.CICLESPAN;n<0&&(p=-p,c=-c);let d=u*a,f=d+c,m=r.clone().sub(new le(Math.cos(d)*e,Math.sin(d)*e));if(r=m.clone().add(new le(Math.cos(f)*e,Math.sin(f)*e)),o){let t=d,i=!0;for(;i&&(t+=p,n>=0&&tf);)s.push(m.clone().add(new le(e*Math.cos(t),e*Math.sin(t))));s.push(r.clone())}}break;case 11:{let e=t[++l],n=t[++l],a=(255*t[++l]+t[++l])*i,h=di.byteTosbyte(t[++l]),u=(112&h)>>4,c=7&h;0==c&&(c=8),0!=n&&c--;let p=Math.PI/4,d=p*c,f=Wf.CICLESPAN,m=1;h<0&&(f=-f,d=-d,m=-1);let g=p*u,y=g+d;g+=p*e/256*m,y+=p*n/256*m;let v=r.clone().sub(new le(a*Math.cos(g),a*Math.sin(g)));if(r=v.clone().add(new le(a*Math.cos(y),a*Math.sin(y))),o){let e=g,t=!0;for(;t&&(e+=f,h>0&&ey);)s.push(v.clone().add(new le(a*Math.cos(e),a*Math.sin(e))));s.push(r.clone())}}break;case 12:{let e=new le;e.x=di.byteTosbyte(t[++l])*i,e.y=di.byteTosbyte(t[++l])*i;let n=di.byteTosbyte(t[++l]);n<-127&&(n=-127),o&&(0==n?s.push(r.clone().add(e)):s.push(Wf._generateArcPoints(r,e,n/127))),r.add(e)}break;case 13:for(;;){let e=new le;if(e.x=di.byteTosbyte(t[++l])*i,e.y=di.byteTosbyte(t[++l])*i,0==e.x&&0==e.y)break;let n=di.byteTosbyte(t[++l]);n<-127&&(n=-127),o&&(0==n?s.push(r.clone().add(e)):s.push(Wf._generateArcPoints(r.clone(),e,n/127))),r.add(e)}break;case 14:l=Wf.skipCode(e,t,++l);break;default:if(h>15){let e=(240&h)>>4,t=15&h,n=new le;switch(t){case 0:n.x=1;break;case 1:n.x=1,n.y=.5;break;case 2:n.x=1,n.y=1;break;case 3:n.x=.5,n.y=1;break;case 4:n.y=1;break;case 5:n.x=-.5,n.y=1;break;case 6:n.x=-1,n.y=1;break;case 7:n.x=-1,n.y=.5;break;case 8:n.x=-1;break;case 9:n.x=-1,n.y=-.5;break;case 10:n.x=-1,n.y=-1;break;case 11:n.x=-.5,n.y=-1;break;case 12:n.y=-1;break;case 13:n.x=.5,n.y=-1;break;case 14:n.x=1,n.y=-1;break;case 15:n.x=1,n.y=-.5}r.add(n.multiplyScalar(e*i)),o&&s.push(r.clone())}}}return new od(r,n)}static skipCode(e,t,i){switch(t[i]){case 0:case 1:case 2:case 5:case 6:case 14:default:break;case 3:case 4:i++;break;case 7:switch(e.type){case 0:i++;break;case 1:0==t[++i]&&(i+=6);break;case 2:i+=2}break;case 8:case 10:i+=2;break;case 9:for(;;){let e=t[++i],r=t[++i];if(0==e&&0==r)break}break;case 11:i+=5;break;case 12:i+=3;break;case 13:for(;;){let e=t[++i],r=t[++i];if(0==e&&0==r)break;t[++i]}}return i}static _generateArcPoints(e,t,i){let r=e.clone().add(t),n=i<0;i=Math.abs(i);let s=t.length()/2,a=s*i,o=2*Math.atan(1/i),l=new le(t.y,-t.x);l.normalize(),l.multiplyScalar(a);let h=Math.abs(s/Math.sin(o/2)),u=e.add(t.divideScalar(2));!1!==n?u.add(l):u.sub(l);let c=e.sub(u),p=r.sub(u),d=Math.atan2(c.y,c.x),f=Math.atan2(p.y,p.x),m=Wf.CICLESPAN;n?(m=-m,df&&(d-=2*Math.PI);let g=d;for(;;){if(g+=m,!n&&gf)return u.add(new le(h*Math.cos(g),h*Math.sin(g)));break}return r}},Zl=Wf;Zl.stopFlag="0x00",Zl.FILE_STOP_FLAG=["\r","\n",""],Zl.CICLESPAN=Math.PI/18;var mO={130:[[[5,0],[5,9.5]],[[4,7.1],[2.6,6.6],[2.1,6.2],[1.7,5.4],[1.6,4],[2.1,3],[2.6,2.6],[3.9,2.2],[6.1,2.2],[7.5,2.6],[8,3.1],[8.4,3.9],[8.4,5.2],[7.9,6.1],[7.5,6.6],[6.1,7.1],[4,7.1]]],131:[[[3,0],[7,0]],[[5,0],[5,9.5]],[[4,7.1],[2.6,6.6],[2.1,6.2],[1.7,5.4],[1.6,4],[2.1,3],[2.6,2.6],[3.9,2.2],[6.1,2.2],[7.5,2.6],[8,3.1],[8.4,3.9],[8.4,5.2],[7.9,6.1],[7.5,6.6],[6.1,7.1],[4,7.1]]],132:[[[3,0],[7,0]],[[4,0],[4,9.5]],[[6,0],[6,9.5]],[[4,7.1],[2.6,6.6],[2.1,6.2],[1.7,5.4],[1.6,4],[2.1,3],[2.6,2.6],[3.9,2.2],[6.1,2.2],[7.5,2.6],[8,3.1],[8.4,3.9],[8.4,5.2],[7.9,6.1],[7.5,6.6],[6.1,7.1],[4,7.1]]],133:[[[3,0],[7,0]],[[4,0],[4,9.5]],[[6,0],[6,9.5]],[[4,7.1],[2.6,6.6],[2.1,6.2],[1.7,5.4],[1.6,4],[2.1,3],[2.6,2.6],[3.9,2.2],[6.1,2.2],[7.5,2.6],[8,3.1],[8.4,3.9],[8.4,5.2],[7.9,6.1],[7.5,6.6],[6.1,7.1],[4,7.1]],[[3,9.5],[7,9.5]]],134:[[[3,0],[7,0]],[[5,0],[5,9.5]],[[4,7.1],[2.6,6.6],[2.1,6.2],[1.7,5.4],[1.6,4],[2.1,3],[2.6,2.6],[3.9,2.2],[6.1,2.2],[7.5,2.6],[8,3.1],[8.4,3.9],[8.4,5.2],[7.9,6.1],[7.5,6.6],[6.1,7.1],[4,7.1]],[[12,10],[9,10],[9,6]],[[9,8],[11,8]]],135:[[[3,0],[7,0]],[[4,0],[4,9.5]],[[6,0],[6,9.5]],[[4,7.1],[2.6,6.6],[2.1,6.2],[1.7,5.4],[1.6,4],[2.1,3],[2.6,2.6],[3.9,2.2],[6.1,2.2],[7.5,2.6],[8,3.1],[8.4,3.9],[8.4,5.2],[7.9,6.1],[7.5,6.6],[6.1,7.1],[4,7.1]],[[12,10],[9,10],[9,6]],[[9,8],[11,8]]],136:[[[3,0],[7,0]],[[4,0],[4,9.5]],[[6,0],[6,9.5]],[[4,7.1],[2.6,6.6],[2.1,6.2],[1.7,5.4],[1.6,4],[2.1,3],[2.6,2.6],[3.9,2.2],[6.1,2.2],[7.5,2.6],[8,3.1],[8.4,3.9],[8.4,5.2],[7.9,6.1],[7.5,6.6],[6.1,7.1],[4,7.1]],[[3,9.5],[7,9.5]],[[12,10],[9,10],[9,6]],[[9,8],[11,8]]],178:[[[1.142,9.285],[1.142,9.428],[1.285,9.714],[1.428,9.857],[1.714,10],[2.285,10],[2.571,9.857],[2.714,9.714],[2.857,9.428],[2.857,9.142],[2.714,8.857],[2.428,8.428],[1,7],[3,7]]],8960:[[[2.9,8],[1.7,7.4],[.6,6.3],[0,4.6],[0,3.4],[.6,1.7],[1.7,.6],[2.9,0],[4.6,0],[5.7,.6],[6.9,1.7],[7.4,3.4],[7.4,4.6],[6.9,6.3],[5.7,7.4],[4.6,8],[2.9,8]],[[0,0],[8,8]]],20393:[[[0,0],[0,6.666]],[[0,4.761],[1.428,6.19],[2.38,6.666],[3.809,6.666],[4.761,6.19],[5.238,4.761],[5.238,0]],[[5.238,4.761],[6.666,6.19],[7.619,6.666],[9.047,6.666],[10,6.19],[10.476,4.761],[10.476,0]],[[11.142,9.285],[11.142,9.428],[11.285,9.714],[11.428,9.857],[11.714,10],[12.285,10],[12.571,9.857],[12.714,9.714],[12.857,9.428],[12.857,9.142],[12.714,8.857],[12.428,8.428],[11,7],[13,7]]],41123:[],55714:[[[2,5.9],[2.6,6.1],[3.4,7],[3.4,1]],[[2.9,8],[1.7,7.4],[.6,6.3],[0,4.6],[0,3.4],[.6,1.7],[1.7,.6],[2.9,0],[4.6,0],[5.7,.6],[6.9,1.7],[7.4,3.4],[7.4,4.6],[6.9,6.3],[5.7,7.4],[4.6,8],[2.9,8]]],55970:[[[2.3,5.6],[2.3,5.9],[2.6,6.4],[2.9,6.7],[3.4,7],[4.6,7],[5.1,6.7],[5.4,6.4],[5.7,5.9],[5.7,5.3],[5.4,4.7],[4.9,3.9],[2,1],[6,1]],[[2.9,8],[1.7,7.4],[.6,6.3],[0,4.6],[0,3.4],[.6,1.7],[1.7,.6],[2.9,0],[4.6,0],[5.7,.6],[6.9,1.7],[7.4,3.4],[7.4,4.6],[6.9,6.3],[5.7,7.4],[4.6,8],[2.9,8]]],56226:[[[2.6,7],[5.7,7],[4,4.7],[4.9,4.7],[5.4,4.4],[5.7,4.1],[6,3.3],[6,2.7],[5.7,1.9],[5.1,1.3],[4.3,1],[3.4,1],[2.6,1.3],[2.3,1.6],[2,2.1]],[[2.9,8],[1.7,7.4],[.6,6.3],[0,4.6],[0,3.4],[.6,1.7],[1.7,.6],[2.9,0],[4.6,0],[5.7,.6],[6.9,1.7],[7.4,3.4],[7.4,4.6],[6.9,6.3],[5.7,7.4],[4.6,8],[2.9,8]]],56482:[[[4.9,7],[2,3],[6.3,3]],[[4.9,7],[4.9,1]],[[2.9,8],[1.7,7.4],[.6,6.3],[0,4.6],[0,3.4],[.6,1.7],[1.7,.6],[2.9,0],[4.6,0],[5.7,.6],[6.9,1.7],[7.4,3.4],[7.4,4.6],[6.9,6.3],[5.7,7.4],[4.6,8],[2.9,8]]],56738:[[[5.4,7],[2.6,7],[2.3,4.4],[2.6,4.7],[3.4,5],[4.3,5],[5.1,4.7],[5.7,4.1],[6,3.3],[6,2.7],[5.7,1.9],[5.1,1.3],[4.3,1],[3.4,1],[2.6,1.3],[2.3,1.6],[2,2.1]],[[2.9,8],[1.7,7.4],[.6,6.3],[0,4.6],[0,3.4],[.6,1.7],[1.7,.6],[2.9,0],[4.6,0],[5.7,.6],[6.9,1.7],[7.4,3.4],[7.4,4.6],[6.9,6.3],[5.7,7.4],[4.6,8],[2.9,8]]],56994:[[[5.4,6.1],[5.1,6.7],[4.3,7],[3.7,7],[2.9,6.7],[2.3,5.9],[2,4.4],[2,3],[2.3,1.9],[2.9,1.3],[3.7,1],[4,1],[4.9,1.3],[5.4,1.9],[5.7,2.7],[5.7,3],[5.4,3.9],[4.9,4.4],[4,4.7],[3.7,4.7],[2.9,4.4],[2.3,3.9],[2,3]],[[2.9,8],[1.7,7.4],[.6,6.3],[0,4.6],[0,3.4],[.6,1.7],[1.7,.6],[2.9,0],[4.6,0],[5.7,.6],[6.9,1.7],[7.4,3.4],[7.4,4.6],[6.9,6.3],[5.7,7.4],[4.6,8],[2.9,8]]],57250:[[[2,7],[6,7],[3.1,1]],[[2.9,8],[1.7,7.4],[.6,6.3],[0,4.6],[0,3.4],[.6,1.7],[1.7,.6],[2.9,0],[4.6,0],[5.7,.6],[6.9,1.7],[7.4,3.4],[7.4,4.6],[6.9,6.3],[5.7,7.4],[4.6,8],[2.9,8]]],57506:[[[3.4,7],[2.6,6.7],[2.3,6.1],[2.3,5.6],[2.6,5],[3.1,4.7],[4.3,4.4],[5.1,4.1],[5.7,3.6],[6,3],[6,2.1],[5.7,1.6],[5.4,1.3],[4.6,1],[3.4,1],[2.6,1.3],[2.3,1.6],[2,2.1],[2,3],[2.3,3.6],[2.9,4.1],[3.7,4.4],[4.9,4.7],[5.4,5],[5.7,5.6],[5.7,6.1],[5.4,6.7],[4.6,7],[3.4,7]],[[2.9,8],[1.7,7.4],[.6,6.3],[0,4.6],[0,3.4],[.6,1.7],[1.7,.6],[2.9,0],[4.6,0],[5.7,.6],[6.9,1.7],[7.4,3.4],[7.4,4.6],[6.9,6.3],[5.7,7.4],[4.6,8],[2.9,8]]],57762:[[[5.7,5],[5.4,4.1],[4.9,3.6],[4,3.3],[3.7,3.3],[2.9,3.6],[2.3,4.1],[2,5],[2,5.3],[2.3,6.1],[2.9,6.7],[3.7,7],[4,7],[4.9,6.7],[5.4,6.1],[5.7,5],[5.7,3.6],[5.4,2.1],[4.9,1.3],[4,1],[3.4,1],[2.6,1.3],[2.3,1.9]],[[2.9,8],[1.7,7.4],[.6,6.3],[0,4.6],[0,3.4],[.6,1.7],[1.7,.6],[2.9,0],[4.6,0],[5.7,.6],[6.9,1.7],[7.4,3.4],[7.4,4.6],[6.9,6.3],[5.7,7.4],[4.6,8],[2.9,8]]],60070:[[[0,6],[10,6],[10,4]]],60326:[[[0,7],[0,5],[10,5]]]},gO=new Ni,qf=class{constructor(e){this.type=1,this.info="",this.orientation=0,this.baseUp=0,this.baseDown=0,this.fileHeader="",this.fileVersion="",this.datas={},this.graphicData=new Map,this.url=e}getGraphicDataByCode(e,t){if(0===e)return;let i=this.datas;if(!this.graphicData.has(e)){if(!i[e]){if(mO[e]){let i=[];for(let t=0;tnew le(e[0],e[1]))));let r=new od(new le,i),n=t/dO;return gO.identity().scale(n,n),r.transform(gO)}return}{let t=i[e],r=dO/this.baseUp,n=Zl.parserCode(this,t,r);this.graphicData.set(e,n)}}if(this.graphicData.has(e)){let i=t/dO;return gO.identity().scale(i,i),this.graphicData.get(e).transform(gO)}}getGraphicTextShape(e,t,i){var r;return null==(r=this.getGraphicDataByCode(e,t))?void 0:r.offset(i)}getFontFile(){return{url:this.url,type:this.type,datas:this.datas,info:this.info,orientation:this.orientation,baseUp:this.baseUp,baseDown:this.baseDown,fileHeader:this.fileHeader,fileVersion:this.fileVersion}}setFontFile(e){this.url=e.url,this.type=e.type,this.datas=e.datas,this.info=e.info,this.orientation=e.orientation,this.baseUp=e.baseUp,this.baseDown=e.baseDown,this.fileHeader=e.fileHeader,this.fileVersion=e.fileVersion}releaseFontData(){this.datas={},this.graphicData.clear()}setFontDataToIndexedDb(){return ht(this,null,(function*(){let e=this.getFontFile();return new Promise(((t,i)=>{hh.instance().save(e,(()=>{console.log(`[FontFile] Saved '${this.url}' (${this.fileHeader}) to indexedDb`),t()}),(e=>i(`[FontFile] Failed to save '${this.url}' (${this.fileHeader}) to indexedDb! ${e}`)))}))}))}getFontDataByIndexedDb(){return ht(this,null,(function*(){return new Promise(((e,t)=>{hh.instance().query(this.url,(t=>{e(t)}),(()=>t("[FontFile] Failed to get FontData from IndexedDB")))}))}))}},S_=class extends qf{constructor(e){super(e),this.isExtend=!1,this.type=1}init(e){di.ToInt16(e.readBytes(2),0);let t=di.ToInt16(e.readBytes(2),0),i=di.ToInt16(e.readBytes(2),0);for(let t=0;t>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:t+=String.fromCharCode(r);break;case 12:case 13:n=e[i++],t+=String.fromCharCode((31&r)<<6|63&n);break;case 14:n=e[i++],s=e[i++],t+=String.fromCharCode((15&r)<<12|(63&n)<<6|(63&s)<<0)}return t}var w_=class extends qf{constructor(e){super(e),this.type=0}init(e){e.readBytes(2),e.readBytes(2);let t=di.ToInt16(e.readBytes(2),0),i=[];for(let r=0;rs){c?(u+=p.width+n,c=!1):(c=!0,u=0,h-=r+i),vO.set(u,h);let e=p.offset(vO);o.push(e),!c&&(u+=p.width+n)}else{vO.set(u,h);let e=p.offset(vO);o.push(e),u+=p.width+n}else this.addUnsupportedChar(l)}c=!1,u=0,h-=r+i}return o}getNotFoundTextShape(e){let t=Zl.getCode("?");return this.getGraphicDataByCode(t,e)}generateShapes(e,t=yO.DEFAULT_SIZE,i=0,r=0,n=0){return this.getGraphicData(e,t,i,r,n)}addUnsupportedChar(e){this.unsupportedChars[e]||(this.unsupportedChars[e]=0),this.unsupportedChars[e]++}static checkFontIsLoaded(e){return ht(this,null,(function*(){if(!Ii.isBrowser)return!1;let t=!1,i=yield hh.instance().queryAll();if(i.length!==e.length)return!1;for(let r=0;re.setFontDataToIndexedDb()));return yield Promise.all(e).then((()=>{ie.debug("[ShxFont] Saves font data to IndexDB")}))}))}getFontData(){return ht(this,null,(function*(){if(Ii.isBrowser){let e=yield hh.instance().queryAll(),t=[],i=new Map;for(let r=0;r{let i=this.parse(e);t&&t(i)})).catch((e=>{r&&r(e)}))}loadFile(e,t){return ht(this,null,(function*(){return new Promise(((i,r)=>{let n=new hi(this.manager);n.setResponseType("arraybuffer"),n.load(e,(t=>{i({url:e,arrayBuffer:t})}),t,(e=>{r(e)}))}))}))}loadAsync(e,t){return ht(this,null,(function*(){return Array.isArray(e)||(e=[e]),(yield Zc.checkFontIsLoaded(e))?Promise.resolve(new Zc):new Promise(((i,r)=>{this.load(e,i,t,r)}))}))}parse(e){return new Zc(e)}static isShxFile(e){var t;return"shx"===(null==(t=e.split(".").pop())?void 0:t.toLowerCase())}},Yf=new A(1,0,0),lG=new A(0,1,0),TO=new A(0,0,1),EDe=new A(0,0,0),Xf=0,ILt="CONTINUOUS",cG=new qn({color:Xf}),Ha=new vr({color:Xf}),M_=new lr({color:Xf}),bDe=new Be,uG=new Be,Kc=new Be,ms=new A,D_=new A,C_=new le,xDe=new Hr,_Lt=e=>void 0!==e.viewDirectionFromTarget,SLt=e=>{if(e){let t=e.match(/data:([a-zA-Z0-9]+\/[a-zA-Z0-9-.+]+).*,.*/);if(t&&t.length>0){let i=t[1],r=e.replace("data:"+i+";","").split(",");if(r&&2===r.length&&"base64"===r[0]){let e=r[1];return PMe.decode(e)}}}return null},tE={Math:{}};tE.Math.angle2=function(e,t){let i=new le(e.x,e.y),r=new le(t.x,t.y);return r.sub(i),r.normalize(),r.y<0?-Math.acos(r.x):Math.acos(r.x)},tE.Math.polar=function(e,t,i){return{x:e.x+t*Math.cos(i),y:e.y+t*Math.sin(i)}};var wLt=(e,t,i,r)=>{let n=e?new le(e.x,e.y):new le(0,0),s=t?new le(t.x,t.y):new le(1,0);i=i||1;let a=4*Math.atan(i),o=n.distanceTo(s)/2/Math.sin(a/2),l=tE.Math.polar(e,o,tE.Math.angle2(n,s)+(Math.PI/2-a/2));r=r||Math.max(Math.abs(Math.ceil(a/(Math.PI/18))),6);let h=tE.Math.angle2(l,n),u=a/r,c=[];c.push(new A(n.x,n.y,0));for(let e=1;e<=r-1;e++){let t=tE.Math.polar(l,Math.abs(o),h+u*e);c.push(new A(t.x,t.y,0))}return c},RLt=(e,t,i,r=2*e.length,n)=>{let s=[],a=e.map((e=>[e.x,e.y]));for(let e=0;e<1;e+=1/r){let r=Q8(e,t,a,i,n);s.push(new A(r[0],r[1],0))}return s},hG=(e,t=!1)=>{let i=[],r=e.length;for(let n=0;n{let t=[];return e.faceA&&t.push(e.faceA),e.faceB&&t.push(e.faceB),e.faceC&&t.push(e.faceC),e.faceD&&t.push(e.faceD),t},DLt=e=>{let t=[],i=[];e.forEach((e=>{e.polyfaceMeshVertex&&(e.threeDPolylineMesh?t.push(new A(e.x,e.y,e.z)):i.push(MLt(e)))}));let r=[];for(let e=0;e=t.length||i<0){a=!1;break}s.push(t[i])}!a||0===s.length||(s.push(s[0]),r.push(s))}return r},Ri=class extends ui{constructor(e=!1,t=!0){super(),this.timer=Date.now(),this.ignorePaperSpace=!1,this.angBase=0,this.angDir=0,this.header=void 0,this.pointsMaterials={},this.lineBasicMaterials={},this.lineShaderMaterials={},this.meshBasicMaterials={},this.meshTextureMaterials={},this.hatchShaderMaterials=[],this.entityCount=0,this.curveCount=0,this.averageCurveSize=0,this.enableRenderOrder=!1,this.enableLocalCache=!0,this.enableReleaseData=!0,this.enableMerge=!0,this.enableSimplify=!0,this.enableRTC=!0,this.enableWidthLine=!1,this.dxfDataId=void 0,this.compareContext=void 0,this.statsInfo={unsupportedEntity:{},unsupportedEntityTypes:{},unsupportedTextStyles:{},unsupportedHatchPatterns:{},invisibleEntities:{},ignoredFrozenLayersAndEntityCount:{},ignoredInserts:{},entityTypesAndMeshCount:{},ignoredPaperSpaceEntityTypesAndCount:{},rebasedEntityCount:0},this.blockReferencesCache={},this.blockRecordsCache=void 0,this.entitiesCache=void 0,this.blocksCache=void 0,this.dictionaryOwnerHandleAndSpatialFilterHandlesCache=void 0,this.spatialFiltersCache=void 0,this.entityThreejsCache=void 0,this.entityTypesAndTimes=void 0,this.nonSnapableTypes=new Set(["ATTDEF","ATTRIB","LEADER","MTEXT","MULTILEADER","OLE2FRAME","TEXT"]),this.entityHandlesWithRenderOrder={},this.addViewport=(e,t)=>{if("VIEWPORT"===e.type){t[e.ownerHandle]||(t[e.ownerHandle]=[]);let i=e;t[e.ownerHandle].push(i)}},Ri.abortJobs=!1,this.ignorePaperSpace=e,this.enableLocalCache=t,this.pointsMaterials[Xf]=cG,this.lineBasicMaterials[Xf]=Ha,this.meshBasicMaterials[Xf]=M_}setFont(e){return this.font=e,this}download(e,t){return ht(this,null,(function*(){let i=SLt(e);if(!i){let r=Date.now(),n=new hi(this.manager);n.setResponseType("arraybuffer"),n.setPath(this.path),i=yield n.loadAsync(e,t),ie.info(`[DxfLoader] ${e} dxf file downloaded in ${(Date.now()-r)/1e3}s`)}return i}))}load(e,t,i){return ht(this,null,(function*(){return this.enableLocalCache&&t&&(t=t.trim()).length>0&&(this.dxfDataId=t),this.loadAsync(e,i)}))}loadAsync(e,t){return ht(this,null,(function*(){let i=(e,i,r)=>{let n=100*e.loaded/e.total;n=n*(r-i)/100+i,t&&t(new ProgressEvent(e.type,{loaded:n,total:100}))},r=e=>i(e,10,100);if(Ii.isBrowser&&this.enableLocalCache&&this.dxfDataId){let e;try{if(this.timer=Date.now(),e=yield this.getDxfDataFromIndexedDb(this.dxfDataId),e){ie.info(`[DxfLoader] Loaded DxfData from indexedDb in ${(Date.now()-this.timer)/1e3}s`);let t=yield this.loadEntities(e,r);return Promise.resolve(t)}}catch(e){ie.warn("[DxfLoader] Failed to parse data from indexedDb",e)}}let n=yield this.parse(e,(e=>i(e,0,50)));return yield this.loadEntities(n,(e=>i(e,50,100)))}))}parse(e,t){return ht(this,null,(function*(){let i=e=>{t&&t(new ProgressEvent("",{loaded:e,total:100}))},r=yield this.download(e,(e=>((e,i,r)=>{let n=100*e.loaded/e.total;n=n*(r-i)/100+i,n>r&&(ie.warn("[DxfLoader] Invalid ProgressEvent:",e),n=r),t&&t(new ProgressEvent(e.type,{loaded:n,total:100}))})(e,0,40)));if(!r)return Promise.reject(`[DxfLoader] Failed to download ${e}`);if(Ri.abortJobs)return Promise.reject("[DxfLoader] Job aborted");this.timer=Date.now(),ie.info("[DxfLoader] Start parsing...");let n=(new b0).parseSync(r);if(i(80),ie.info(`[DxfLoader] Parsed in ${(Date.now()-this.timer)/1e3}s, creating entities...`),Ri.abortJobs)return Promise.reject("[DxfLoader] Job aborted");if(n&&(n.objects.LAYOUT||(ie.warn("[DxfLoader] No layout defined! Will add a default 'Model' layout!"),n.objects.LAYOUT=[{layoutName:Ri.MODEL_LAYOUT_NAME}]),Ii.isBrowser&&this.enableLocalCache&&this.dxfDataId)){let e=Date.now();try{yield this.setDxfDataToIndexedDb(this.dxfDataId,n),ie.info(`[DxfLoader] Saved to indexedDb in ${(Date.now()-e)/1e3}s`)}catch(e){ie.warn(`[DxfLoader] Failed to save '${this.dxfDataId}' to indexedDb!`,e)}}return i(100),n}))}parseHeader(e){if(!e)return void ie.error("[DxfLoader]: Invalid header!");this.header=e;let t=e.$ACADVER.toString();"AC1032"!==t&&ie.warn(`[DxfLoader] Unexpected version: ${t}. But we'll try to continue.`),this.angBase=e.$ANGBASE||0,this.angDir=e.$ANGDIR||0}loadEntities(e,t){return ht(this,null,(function*(){let i=Date.now();this.parseHeader(e.header),this.enableRenderOrder&&(this.initRenderOrderInfo(e),this.enableMerge=!1);let r=0,n=e.entities.length;this.entityCount=n,Object.keys(e.blocks).forEach((t=>{var i;this.entityCount+=(null==(i=e.blocks[t].entities)?void 0:i.length)||0}));let s=Math.round(Math.pow(n,.5)),a=Date.now(),o=e=>ht(this,null,(function*(){if(t&&(e%s==0||e===n-1)){t(new ProgressEvent("parseProgress",{loaded:e+1,total:n}));let i=500,r=Date.now();(r-a>i||e===n-1)&&(yield Is.sleep(0),a=r)}})),l={};e.objects.LAYOUT.forEach((e=>{let t=e;l[t.layoutName]=t}));let h={},u=e=>{let t=e.userData.layerName,i=h[t];i||(i=[],h[t]=i),i.push(e)},c={},p={},d=new ur;ti.setSharedVariablesOfObject(d);for(let t=0;te.name===s));a||(a=new ur,ti.setSharedVariablesOfObject(a),a.name=s,a.userData.isLayoutLevelObject=!0,d.add(a)),r++,p[s]||(p[s]={object:a,layerObjects:{}});let h,f=p[s];if(s!==Ri.MODEL_LAYOUT_NAME){let e=l[s];e.directAssociatedLeafObjectSet||(e.directAssociatedLeafObjectSet=new Set),h=e.directAssociatedLeafObjectSet}if(this.enableMerge&&n.geometry){ti.setSharedVariablesOfObject(n);let t=n.userData.layerName;!1===this.getLayerVisible(e,t)&&(n.visible=!1),f.layerObjects[t]||(f.layerObjects[t]=[]),f.layerObjects[t].push(n)}else a.add(n),n.traverse((t=>{if(ti.setSharedVariablesOfObject(t),t.geometry){let i=t.userData.layerName;!1===this.getLayerVisible(e,i)&&(t.visible=!1),u(t),h&&h.add(t)}}));yield o(t)}e.objects.LAYOUT.forEach((t=>{let i=t,r=i.layoutName;if(this.ignorePaperSpace&&r!==Ri.MODEL_LAYOUT_NAME)return;let n=i.associatedBlockName,s=e.blocks[n];s&&this.drawLayout(s,e,i,d,h,c)})),ie.debug(`[DxfLoader] Drew entities in ${(Date.now()-i)/1e3}s`);for(let e in p){let t,i=p[e],r=i.object;if(e!==Ri.MODEL_LAYOUT_NAME){let i=l[e];i.directAssociatedLeafObjectSet||(i.directAssociatedLeafObjectSet=new Set),t=i.directAssociatedLeafObjectSet}for(let e in i.layerObjects){let n=i.layerObjects[e],s=Yi.deepMerge(n,void 0,!1,!1,!0),a=s.added,o=s.removed;if(o.length!==n.length){let e=o;o.length>=100&&(e=new Set(o));let i=t=>Array.isArray(e)?e.indexOf(t)>=0:e.has(t);for(let e=0,s=n.length;e{f+=e})),this.enableRTC&&ie.debug(`[DxfLoader] Totally rebased ${this.statsInfo.rebasedEntityCount}(out of ${f}) entities`),this.enableMerge){let e=Yi.mergeInfo;ie.debug(`[DxfLoader] Inner merged ${e.removedObjects} objects to ${e.mergedMeshes} meshes, ${e.mergedLines} lines, ${e.mergedPoints} points, ${e.mergedUnknownTypeObjects?e.mergedUnknownTypeObjects+" unknown type,":""} in ${e.elapsedTime/1e3}s`)}let m=(e,t,...i)=>{Object.keys(t).length};m(0,this.statsInfo.unsupportedEntityTypes),m(0,this.statsInfo.unsupportedTextStyles),m(0,this.statsInfo.unsupportedHatchPatterns),m(0,this.statsInfo.invisibleEntities),m(0,this.statsInfo.ignoredFrozenLayersAndEntityCount),m(0,this.statsInfo.ignoredInserts),this.ignorePaperSpace&&m(0,this.statsInfo.ignoredPaperSpaceEntityTypesAndCount),this.font&&this.font.unsupportedChars&&m(0,this.font.unsupportedChars),this.enableReleaseData&&(this.releaseCachedData(),this.releaseDxfData(e)),ie.info(`[DxfLoader] loadEntities() done in ${(Date.now()-i)/1e3}s`);let g=Cn(Br({},e),{threejsObject:d,layersAndThreejsObjects:h,loadedEntityCount:r,layoutViewportsMap:c});return Promise.resolve(g)}))}loadEntitiesForCompare(e,t,i,r){return ht(this,null,(function*(){let n=e.entities.length,s=t.entities.length,a=()=>ht(this,null,(function*(){var a;let o=this.compareContext,l=o.isTheFirstFile,h=l?e:t,u=new ur,c=l?n:s,p=h.entities.length;this.entityCount=p,Object.keys(h.blocks).forEach((e=>{var t;this.entityCount+=(null==(t=h.blocks[e].entities)?void 0:t.length)||0}));let d=Math.round(Math.pow(c,.5)),f=Date.now(),m=e=>ht(this,null,(function*(){if(r&&(e%d==0||e===c-1)){let t=e+1;l||(t+=n),r(new ProgressEvent("parseProgress",{loaded:t,total:n+s}));let i=500,a=Date.now();(a-f>i||e===c-1)&&(yield Is.sleep(0),f=a)}}));this.parseHeader(h.header);let g={};for(let e=0;e{if(e.geometry){let t=e.userData.layerName;!1===this.getLayerVisible(h,t)&&(e.visible=!1);let i=g[t];i||(i=[],g[t]=i),i.push(e)}})),yield m(e)}let y=h;y.threejsObject=u,u.updateMatrixWorld(!0),y.layersAndThreejsObjects=g,y.layoutViewportsMap={},l&&(o.preservedHandles||(o.preservedHandles=new Set));for(let e in i){let t=i[e];l&&("Added"===t.type||"Modified"===t.type)&&(null==(a=o.preservedHandles)||a.add(t.handle),t.parentHandles&&t.parentHandles.forEach((e=>{var t;return null==(t=o.preservedHandles)?void 0:t.add(e)})));let r=this.entityThreejsCache&&this.entityThreejsCache[t.handle];t.parentHandles&&(r=this.entityThreejsCache&&this.entityThreejsCache[t.parentHandles[t.parentHandles.length-1]]),r&&(r=this.setObjectColorByChange(r,t)),"NoChange"!==t.type&&r&&("Added"===t.type?!l&&(t.box=(new Dt).setFromObject(r)):"Removed"===t.type?l&&(t.box=(new Dt).setFromObject(r)):"Modified"===t.type&&(t.box?t.box.union((new Dt).setFromObject(r)):t.box=(new Dt).setFromObject(r)))}Ri.merge(y)})),o=Date.now();this.compareContext={changes:i,isTheFirstFile:!0},_t.printMemory("Before loading entities for first dxf"),yield a(),ie.info(`[DxfLoader] loadEntities for first dxf in ${(Date.now()-o)/1e3}s`),_t.printMemory("After loading entities for first dxf"),this.releaseCachedData(!1),this.releaseDxfData(e),_t.printMemory("Before loading entities for second dxf"),o=Date.now(),this.compareContext.isTheFirstFile=!1,yield a(),ie.info(`[DxfLoader] loadEntities for second dxf in ${(Date.now()-o)/1e3}s`);for(let e of Object.values(i))e.box||delete i[e.handle];this.compareContext.preservedHandles=void 0,this.enableReleaseData&&(this.releaseCachedData(),this.releaseDxfData(t)),_t.printMemory("After loading entities for second dxf")}))}setObjectColorByChange(e,t){let i=(e,t)=>{e.traverse((e=>{if(e.material)if(e.material instanceof vr)e.material=this.getLineBasicMaterial(t);else if(e.material instanceof lr)e.material=this.getMeshBasicMaterial(t);else if(e.material instanceof qn)e.material=this.getPointsMaterial(t);else if(e.material instanceof Yt){let i=e.material.clone();this.updateMaterialUniforms(i),i.uniforms.u_color.value.set(t),e.material=i}}))},r=(e=>{var t;let i=Xn.ENTITY_COLOR_NO_CHANGE;return"Added"===e.type?i=Xn.ENTITY_COLOR_ADDED:"Removed"===e.type?i=Xn.ENTITY_COLOR_REMOVED:"Modified"===e.type&&(i=null!=(t=this.compareContext)&&t.isTheFirstFile?Xn.ENTITY_COLOR_REMOVED:Xn.ENTITY_COLOR_ADDED),i})(t);return e.traverse((n=>{t.parentHandles?n.userData&&n.userData.handle&&n.userData.handle===t.handle&&(i(n,r),e=n):i(n,r)})),e}releaseCachedData(e=!0){e&&(this.pointsMaterials={},this.lineBasicMaterials={},this.lineShaderMaterials={},this.meshBasicMaterials={},this.meshTextureMaterials={},this.hatchShaderMaterials=[]),this.header=void 0,this.blockReferencesCache={},this.blockRecordsCache=void 0,this.blocksCache=void 0,this.entitiesCache=void 0,this.dictionaryOwnerHandleAndSpatialFilterHandlesCache=void 0,this.spatialFiltersCache=void 0,this.entityThreejsCache=void 0,this.entityTypesAndTimes=void 0,this.entityHandlesWithRenderOrder={},this.statsInfo={unsupportedEntity:{},unsupportedEntityTypes:{},unsupportedTextStyles:{},unsupportedHatchPatterns:{},invisibleEntities:{},ignoredFrozenLayersAndEntityCount:{},ignoredInserts:{},entityTypesAndMeshCount:{},ignoredPaperSpaceEntityTypesAndCount:{},rebasedEntityCount:0}}releaseEntity(e){e.vertices&&(e.vertices=void 0),e.knotValues&&(e.knotValues=void 0),e.controlPoints&&(e.controlPoints=void 0),e.binaryData&&(e.binaryData=void 0),e.text&&(e.text=void 0),e.extendedData&&(e.extendedData=void 0),e.contextData&&(e.contextData=void 0);let t=e;t.boundaryPaths&&(t.boundaryPaths=[]),t.patternLines&&(t.patternLines=void 0)}releaseDxfData(e){delete e.objects.DICTIONARY,delete e.objects.SORTENTSTABLE,delete e.objects.XRECORD,delete e.tables.dimStyle,delete e.tables.lineType,delete e.tables.style,delete e.tables.blockRecord,e.entities=[],e.blocks={}}drawEntity(e,t,i,r=!1){if(this.compareContext&&this.compareContext.preservedHandles&&this.compareContext.preservedHandles.has(e.handle)&&y0.includes(e.type)&&(r=!0),!r&&this.compareContext&&this.compareContext.preservedHandles&&!y0.includes(e.type)&&!this.compareContext.preservedHandles.has(e.handle)&&(!i||i&&!this.compareContext.preservedHandles.has(i.handle)))return;if(!0===this.getLayerFrozen(t,e)){let t=e.layer;return this.statsInfo.ignoredFrozenLayersAndEntityCount[t]||(this.statsInfo.ignoredFrozenLayersAndEntityCount[t]=0),void this.statsInfo.ignoredFrozenLayersAndEntityCount[t]++}if(!1===e.visible||e.invisible)return this.statsInfo.invisibleEntities[e.type]||(this.statsInfo.invisibleEntities[e.type]=0),void this.statsInfo.invisibleEntities[e.type]++;if(this.ignorePaperSpace&&e.inPaperSpace)return this.statsInfo.ignoredPaperSpaceEntityTypesAndCount[e.type]||(this.statsInfo.ignoredPaperSpaceEntityTypesAndCount[e.type]=0),void this.statsInfo.ignoredPaperSpaceEntityTypesAndCount[e.type]++;this.entityThreejsCache||(this.entityThreejsCache={});let n,s=Date.now(),a=!1;if(!this.compareContext&&this.entityThreejsCache[e.handle])n=this.entityThreejsCache[e.handle].clone(),a=!0;else if(!this.statsInfo.unsupportedEntity[e.handle]){if("CIRCLE"===e.type||"ARC"===e.type)n=this.drawArc(e,t,i);else if("LINE"===e.type||"POLYLINE"===e.type)n=this.drawLine(e);else if("XLINE"===e.type)n=this.drawXLine(e);else if("SEQEND"!==e.type)if("RAY"===e.type)n=this.drawRay(e);else if("LWPOLYLINE"===e.type)n=this.drawLWPolyline(e,t,i);else if("3DFACE"===e.type)n=this.draw3DFace(e);else if("TEXT"===e.type)n=this.drawText(e,t,i);else if("SOLID"===e.type)n=this.drawSolid(e,t,i);else if("POINT"===e.type)n=this.drawPoint(e,t,i);else if("INSERT"===e.type)n=this.drawInsert(e,t,r);else if("SPLINE"===e.type)n=this.drawSpline(e,i);else if("MTEXT"===e.type)n=this.drawMText(e,t,i);else if("ELLIPSE"===e.type)n=this.drawEllipse(e,t,i);else if("DIMENSION"===e.type)n=this.drawDimension(e,t);else if("REGION"!==e.type)if("ATTDEF"===e.type)n=this.drawAttDef(e,t,i);else if("ATTRIB"===e.type){if(!i)for(let r=0;r{ti.setSharedVariablesOfObject(n),n.matrixAutoUpdate=!1,n.updateMatrix(),n.geometry&&(!1===s&&(n.userData.layerVisible=!1),n.userData.layerName=r,this.setMaterial(n,e,t,i))})),a||(this.nonSnapableTypes.has(e.type)&&n.traverse((e=>{e.layers.set(10)})),this.enableRenderOrder&&(this.entityHandlesWithRenderOrder[e.handle]?n.renderOrder=parseInt(this.entityHandlesWithRenderOrder[e.handle],16)+.1:n.renderOrder=parseInt(e.handle,16)))}return y0.includes(e.type)||(this.entityTypesAndTimes||(this.entityTypesAndTimes={}),this.entityTypesAndTimes[e.type]||(this.entityTypesAndTimes[e.type]={createCount:0,totalTime:0,averageTime:0}),this.entityTypesAndTimes[e.type].createCount++,this.entityTypesAndTimes[e.type].totalTime+=Date.now()-s),n?this.statsInfo.entityTypesAndMeshCount[e.type]?this.statsInfo.entityTypesAndMeshCount[e.type]++:this.statsInfo.entityTypesAndMeshCount[e.type]=1:(this.statsInfo.unsupportedEntityTypes[e.type]?this.statsInfo.unsupportedEntityTypes[e.type]++:this.statsInfo.unsupportedEntityTypes[e.type]=1,y0.includes(e.type)||(this.statsInfo.unsupportedEntity[e.handle]?this.statsInfo.unsupportedEntity[e.handle]++:this.statsInfo.unsupportedEntity[e.handle]=1)),n}drawEllipse(e,t,i){if(!e.majorAxisEndPoint||!e.center||void 0===e.axisRatio||void 0===e.startAngle||void 0===e.endAngle)return;let r=e.startAngle,n=e.endAngle;if(e.extrusionDirection&&e.extrusionDirection.z<0&&(r=2*Math.PI-e.endAngle,n=2*Math.PI-e.startAngle),ar.areNumbersEqual(r,n,1e-5))return void ie.warn("[DxfLoader] Ellipse entity (handle '%s') contains the same start and end angle, ignored!",e.handle);let s=n-r;for(;s>2*Math.PI;)s-=2*Math.PI;Math.abs(s)<=1e-5&&(n=ar.floorNumber(r+2*Math.PI,5));let a=Math.sqrt(Math.pow(e.majorAxisEndPoint.x,2)+Math.pow(e.majorAxisEndPoint.y,2)),o=a*e.axisRatio,l=Math.atan2(e.majorAxisEndPoint.y,e.majorAxisEndPoint.x),h=new Rp(e.center.x,e.center.y,a,o,r,n,!1,l),u=1,c=i;null!=c&&c.xScale&&null!=c&&c.yScale&&(u=Math.max(Math.abs(c.xScale),Math.abs(c.yScale)));let p=this.getDivision(r,n,Math.max(a,o)*u),d=h.getPoints(p),f=[],m=d.length;for(let e=0;e{e.geometry&&e.geometry.translate(u,c,0)})),e.rotation&&(a.rotation.z=e.rotation*Math.PI/180),e.directionVector){let t=e.directionVector,i=new A(t.x,t.y,t.z),r=i.clone().cross(Yf),n=new A(1,0,0).angleTo(i);a.rotateZ(r.z>0?-n:n)}return s.lineLength>1?a.position.y-=o.y+s.style.textHeight:a.position.y-=o.y,a}getMTextGroup(e,t,i,r,n){var s;if(0===e.length)return;let a=(n?n.style.textHeight:t.textHeight)||0;if(t.textStyle){let e=i.tables.style.styles[t.textStyle];a=a||e.textHeight}let o=a/1.5,l=a/2,h=new ur;for(let a=0;a{n&&n[n.length-1]&&n[n.length-1].colorIndex===e.colorIndex?n[n.length-1].text+=e.text:n.push(e)})),r=e.lineLength}else if("object"==typeof a)if(a.S&&3===a.S.length){let e=a.S[0]+"/"+a.S[2],t=this.getTextLineNum(e);n&&n[n.length-1]&&void 0===n[n.length-1].colorIndex?n[n.length-1].text+=e:n.push({text:a.S[0]+"/"+a.S[2],lineNum:r}),r+=t}else if(void 0!==a.C&&(s++,"string"==typeof e[s])){let t=this.getTextLineNum(e[s]);n&&n[n.length-1]&&n[n.length-1].colorIndex===a.C?n[n.length-1].text+=e[s]:n.push({colorIndex:a.C,text:e[s],lineNum:r}),r+=t}}return{text:n,lineLength:r,style:i}}getTextLineNum(e){let t=e.match(new RegExp("\\n","g"));return t?t.length:0}draw3DFace(e){if(!e.vertices||0===e.vertices.length)return void ie.warn("[DxfLoader] Entity is missing vertices:",e.handle);let t=e.vertices.map((e=>new A(e.x,e.y,e.z)));if(0===t.length)return;ar.areVector3sEqual(t[0],t[t.length-1])||t.push(t[0]);let i=new A,r=!1;this.enableRTC&&(r=kt.checkAndRebasePositionsOnRTC(t,i));let n=(new lt).setFromPoints(t),s=new Ir(n,Ha);return r&&(this.setRTCUserData(s),s.position.x+=i.x,s.position.y+=i.y),s.renderOrder=2,s}drawSpline(e,t){if(!e.controlPoints||!e.degreeOfSplineCurve||!e.knotValues)return;let i=1/0,r=1/0,n=-1/0,s=-1/0;for(let t of e.controlPoints)t.xn&&(n=t.x),t.y>s&&(s=t.y);let a=1,o=t;null!=o&&o.xScale&&null!=o&&o.yScale&&(a=Math.max(Math.abs(o.xScale),Math.abs(o.yScale)));let l=Math.max(n-i,s-r),h=this.getBSplineInterpolationsPerSplineSegment(e.controlPoints.length,l*a),u=RLt(e.controlPoints,e.degreeOfSplineCurve,e.knotValues,h),c=new A,p=!1;this.enableRTC&&(p=kt.checkAndRebasePositionsOnRTC(u,c));let d=kt.getAdjacentNonRepeatPoints(u);if(d.length<2)return void ie.warn("[DxfLoader] Spline entity (handle '%s') contains less than 2 points, ignored!",e.handle);let f=(new lt).setFromPoints(d),m=new Ir(f,Ha);return p&&(this.setRTCUserData(m),m.position.x+=c.x,m.position.y+=c.y),m}drawXLine(e){if(!e.vertices||0===e.vertices.length)return void ie.warn("[DxfLoader] Entity is missing vertices:",e.handle);let t=_t.arrayOrObjectToVector3(e.directionVector),i=new A(e.vertices[0].x,e.vertices[0].y,0),r=[];if(r.push(t.clone().multiplyScalar(-1e6).add(i)),r.push(t.clone().multiplyScalar(1e6).add(i)),0===r.length)return;let n=new A,s=!1;this.enableRTC&&(s=kt.checkAndRebasePositionsOnRTC(r,n));let a=(new lt).setFromPoints(r),o=new Ir(a,Ha);return s&&(this.setRTCUserData(o),o.position.x+=n.x,o.position.y+=n.y),o.renderOrder=2,o}drawRay(e){if(!e.vertices||0===e.vertices.length)return void ie.warn("[DxfLoader] Entity is missing vertices:",e.handle);let t=_t.arrayOrObjectToVector3(e.directionVector),i=e.vertices.map((e=>new A(e.x,e.y,0)));if(i.push(t.multiplyScalar(1e6).add(i[0])),0===i.length)return;let r=new A,n=!1;this.enableRTC&&(n=kt.checkAndRebasePositionsOnRTC(i,r));let s=(new lt).setFromPoints(i),a=new Ir(s,Ha);return n&&(this.setRTCUserData(a),a.position.x+=r.x,a.position.y+=r.y),a.renderOrder=2,a}drawLine(e){if(!e.vertices||0===e.vertices.length)return void ie.warn("[DxfLoader] Entity is missing vertices:",e.handle);let t=[];if(e.isPolyfaceMesh)t=DLt(e.vertices);else{let i=hG(e.vertices,e.shape);e.shape&&i.length>0&&i.push(i[0]),i.length>0&&(t=[i])}if(0===t.length)return;let i=[];for(let e=0;e0){if(this.enableRTC){let e=0;t.forEach((t=>{t.forEach((t=>{n.add(t),e++}))})),n.divideScalar(e),s=kt.shouldRebasePositionOnRTC(n)}let e=[],i=[],a=0,o=0,l=0,h=0;t.forEach((t=>{for(let r=0;r0&&i.push(a+r-1,a+r);a=t.length}));let u=(new lt).setFromPoints(e);u.setIndex(i),r=new ci(u,Ha)}if(i.length>0){this.enableRTC&&(s=kt.checkAndRebasePositionsOnRTC(i,n));let e=(new lt).setFromPoints(i);r=new nn(e,cG)}return r?(s&&(this.setRTCUserData(r),r.position.x+=n.x,r.position.y+=n.y),r):void 0}drawLWPolyline(e,t,i){var r;if(!e.vertices||e.vertices.length<2)return void ie.warn("[DxfLoader] Invalid LWPolyline entity (handle '%s'), ignored!",e.handle);let n=e;if(void 0!==n.extrusionDirectionX&&void 0!==n.extrusionDirectionY&&void 0!==n.extrusionDirectionZ){ms.set(n.extrusionDirectionX,n.extrusionDirectionY,n.extrusionDirectionZ);let e=Ri.getOcsMatrix(ms).invert(),t=0;void 0!==n.elevation&&n.elevation>0&&(t=n.elevation),n.vertices.forEach((i=>{let r=ms.set(i.x,i.y,t).applyMatrix4(e);i.x=r.x,i.y=r.y}))}let s=hG(e.vertices,e.shape);if(e.shape&&s.length>0&&!ar.areVector3sEqual(s[0],s[s.length-1])&&s.push(s[0]),s.length<2)return void ie.warn("[DxfLoader] Invalid LWPolyline entity (handle '%s'), ignored!",e.handle);null!=(r=e.extendedData)&&r.outlines&&e.extendedData.outlines.forEach((e=>{let t=e.map((e=>new A(e[0],e[1],0)));ar.areVectorsClose(t[0],t[t.length-1])||t.push(t[0]),s.push(...t)}));let a=new A,o=!1;this.enableRTC&&(o=kt.checkAndRebasePositionsOnRTC(s,a));let l,h=kt.getAdjacentNonRepeatPoints(s);if(!(h.length<2)){if(this.enableWidthLine&&void 0!==n.constantWidth&&n.constantWidth>1){let r=t.tables.lineType.lineTypes[this.getLineType(e,t,i)];if(!r||!r.pattern||0===r.pattern.length){let t=kt.convertWidthLineToMeshGeometry(h,n.constantWidth);if(t){let e=new rt(t,M_);l=new ur,l.add(e);let i=ti.createOutlineSync(t,e.matrix,Ha);i.layers.set(10),l.add(i)}else ie.warn("[DxfLoader] Failed to convert width line to mesh geometry: %s ",e.handle)}}return l||(l=new Ir((new lt).setFromPoints(h),Ha)),o&&(this.setRTCUserData(l),l.position.x+=a.x,l.position.y+=a.y,l.position.z+=a.z),l}ie.warn("[DxfLoader] Invalid LWPolyline entity (handle '%s'), ignored!",e.handle)}drawMLeader(e,t,i){var r,n,s,a,o,l,h,u;let c=t.tables.dimStyle.dimStyles[e.dimensionStyle]||this.getDefaultDimensionStyle(t),p=null==(r=e.contextData)?void 0:r.defaultTextContents;if(!p)return;let d=new ur,f=hO(p),m=this.mtextContentAndFormattingToTextAndStyle(f,e),g=this.getMTextGroup(m.text,e,t,i,m);if(g){null!=(n=e.contextData)&&n.textLocation&&(g.position.x+=e.contextData.textLocation.x,g.position.y+=e.contextData.textLocation.y);let t=(null==(s=e.contextData)?void 0:s.textWidth)||1;switch(m.style.horizontalAlignment){case"left":default:break;case"center":t&&(g.position.x+=t/2);break;case"right":t&&(g.position.x+=t)}let i=(new Dt).setFromObject(g).getSize(ms),r=i.x,h=i.y,u=0,c=0;switch(null==(a=e.contextData)?void 0:a.textAttachment){case 1:u=0,c=0;break;case 2:u-=r/2,c=0;break;case 3:u-=r,c=0;break;case 4:u=0,c+=h/2;break;case 5:u-=r/2,c+=h/2;break;case 6:u-=r,c+=h/2;break;case 7:u=0,c+=h;break;case 8:u-=r/2,c+=h;break;case 9:u-=r,c+=h;break;default:return}if(g.traverse((e=>{e.geometry&&e.geometry.translate(u,c,0)})),null!=(o=e.contextData)&&o.textRotation&&(g.rotation.z=e.contextData.textRotation*Math.PI/180),null!=(l=e.contextData)&&l.textDirection){let t=e.contextData.textDirection,i=new A(t.x,t.y,t.z),r=i.clone().cross(new A(1,0,0)),n=new A(1,0,0).angleTo(i);g.rotateZ(r.z>0?-n:n)}g.renderOrder=5,d.add(g)}if(0===e.leaderLineType)return g;{let i=[],r=null==(h=e.contextData)?void 0:h.leaders[0];if(!r)return d;let n=r.lastLeaderLinePoint;if(e.enableDogLeg){let e=new A(n.x,n.y,n.z),t=r.doglegLength,s=new A(r.doglegVector.x,r.doglegVector.y,r.doglegVector.z).multiplyScalar(t),a=e.clone().add(s);i.push(a,e)}let s=(null==(u=e.contextData)?void 0:u.leaders[0].leaderLines)||[];for(let r=0;rnew A(e.x,e.y,e.z))),o=new A(n.x,n.y,n.z);for(let e=0;e0?(l.add(p),Yi.merge(l,!1),l):p}drawDefaultLeadArrow(e,t,i,r){let n=i*(e.x-t.x),s=i*(e.y-t.y),a=s,o=-n,l=new A(t.x+n+a/6,t.y+s+o/6,0),h=new A(t.x+n-a/6,t.y+s-o/6,0);r.push(t,l),r.push(t,h),r.push(l,h)}getBlockByHandle(e,t){if(!this.blocksCache){this.blocksCache={};for(let t in e){let i=e[t];this.blocksCache[i.ownerHandle]||(this.blocksCache[i.ownerHandle]=i)}}return this.blocksCache[t]}static transformAngleByOcsMatrix(e,t){let i=ms.set(1*Math.cos(t),1*Math.sin(t),0).applyMatrix4(e);return Math.atan2(i.y,i.x)}static getArcAnglesByOcsMatrix(e,t,i){let r,n=ar.getArcAngleSpanInRadian(t,i),s=Ri.transformAngleByOcsMatrix(e,t),a=Ri.transformAngleByOcsMatrix(e,i);if(ar.areNumbersClose(n,Math.PI)){n=1;let i=Ri.transformAngleByOcsMatrix(e,t+n);r=ar.getArcAngleSpanInRadian(s,i)}else{if(ar.areNumbersClose(n,2*Math.PI))return[s,s+2*Math.PI];r=ar.getArcAngleSpanInRadian(s,a)}return ar.areNumbersClose(n,r,1e-5)?[s,a]:[a,s]}drawArc(e,t,i){var r,n,s;if(!e.radius||e.radius<.001)return void ie.warn(`[DxfLoader] The radius of arc (handle '${e.handle}') is undefined, ignored!`);if(!e.radius||e.radius<.001)return void ie.warn(`[DxfLoader] The radius of arc (handle '${e.handle}') is too small, ignored!`);let a=new A(0,0,1);void 0!==e.extrusionDirectionX&&void 0!==e.extrusionDirectionY&&void 0!==e.extrusionDirectionZ&&a.set(e.extrusionDirectionX,e.extrusionDirectionY,e.extrusionDirectionZ);let o,l,h=Ri.getOcsMatrix(a);if("CIRCLE"===e.type)o=e.startAngle||0,l=o+2*Math.PI;else{if(null==e.startAngle||null==e.endAngle||(o=e.startAngle,l=e.endAngle,ar.areNumbersEqual(o,l,1e-6)))return;if(!ar.areNumbersClose(ar.getArcAngleSpanInRadian(o,l),2*Math.PI)){let e=Ri.getArcAnglesByOcsMatrix(h,o,l);o=e[0],l=e[1]}}let u=new bg(0,0,e.radius,o,l,0!==this.angBase),c=1,p=i;null!=p&&p.xScale&&null!=p&&p.yScale&&(c=Math.max(Math.abs(p.xScale),Math.abs(p.yScale)));let d=this.getDivision(o,l,e.radius*c),f=u.getPoints(d),m=new A,g=!1;this.enableRTC&&(g=kt.checkAndRebasePositionsOnRTC(f,m));let y=(new lt).setFromPoints(f),v=new Ir(y,Ha),T=new A;e.center&&(T.x=e.center.x,T.y=e.center.y);let x=new A(null==(r=e.center)?void 0:r.x,null==(n=e.center)?void 0:n.y,null==(s=e.center)?void 0:s.z).applyMatrix4(h.invert());return T.x=x.x,T.y=x.y,v.position.copy(T),g?(this.setRTCUserData(v),v.position.x+=m.x,v.position.y+=m.y):kt.shouldRebasePositionOnRTC(v.position)&&this.setRTCUserData(v),v}addTriangleFacingCamera(e,t,i,r){let n=new A,s=new A;n.subVectors(i,t),s.subVectors(r,t),n.cross(s);let a=new A(t.x,t.y,t.z),o=new A(i.x,i.y,i.z),l=new A(r.x,r.y,r.z);n.z<0?e.push(l,o,a):e.push(a,o,l)}drawSolid(e,t,i){let r=e.points;if(!r||r.length<4)return;if(e.extrusionDirection&&e.extrusionDirection.z){ms.set(0,0,e.extrusionDirection.z);let t=Ri.getOcsMatrix(ms).invert();r.forEach((e=>{let i=ms.set(e.x,e.y,0).applyMatrix4(t);e.x=i.x,e.y=i.y}))}let n=[],s=[];this.addTriangleFacingCamera(n,r[0],r[1],r[2]),s.push(0,1,2),this.addTriangleFacingCamera(n,r[1],r[2],r[3]),s.push(3,4,5);let a=new A,o=!1;this.enableRTC&&(o=kt.checkAndRebasePositionsOnRTC(n,a));let l=(new lt).setFromPoints(n);l.setIndex(s);let h=new rt(l,M_);return o&&(this.setRTCUserData(h),h.position.x+=a.x,h.position.y+=a.y),h}getDefaultTextStyle(e){return e.tables.style.styles.STANDARD||e.tables.style.styles.Standard||{}}getDefaultDimensionStyle(e){return e.tables.dimStyle.dimStyles.STANDARD||e.tables.dimStyle.dimStyles.Standard||{}}getTextEncoding(e){return e.bigFontFile&&e.bigFontFile.toUpperCase().startsWith("GB")?"gbk":"utf8"}getTextMesh(e,t,i,r,n){if(!e)return;t.textStyle&&(this.statsInfo.unsupportedTextStyles[t.textStyle]||(this.statsInfo.unsupportedTextStyles[t.textStyle]=0),this.statsInfo.unsupportedTextStyles[t.textStyle]++);let s,a=(n?n.style.textHeight:t.textHeight)||0,o=.67,l={_TCH_DIM:1.45,ROMANS:1};if(t.textStyle&&l[t.textStyle]&&(o=l[t.textStyle]),t.xScale&&(o*=t.xScale),t.textStyle){let e=i.tables.style.styles[t.textStyle];o*=(null==e?void 0:e.xScale)||1,a=a||e.textHeight}let h=0;if(t.width&&(h=t.width/o+2),t.contextData&&t.contextData.textWidth&&t.contextData.textHeighte.toThreeGeometry())));r.scale(o,1,1),s=new ci(r,Ha)}else if(this.font instanceof $g){let t={font:this.font,height:0,size:a||12,curveSegments:3,bevelSegments:3},i=new tO(e,t);s=new rt(i,M_)}return s}transformTextMesh(e,t){let i=(new Dt).setFromObject(t).getSize(ms),{halign:r,valign:n}=e,s=e.width||i.x,a=i.y;if(void 0===r&&void 0===n&&e.startPoint||[3,5].includes(r)&&e.startPoint?(t.position.x+=e.startPoint.x,t.position.y+=e.startPoint.y,t.position.z+=e.startPoint.z):e.endPoint&&(t.position.x+=e.endPoint.x,t.position.y+=e.endPoint.y,t.position.z+=e.endPoint.z),3!==r&&5!==r){if(e.rotation){let i=e.rotation*Math.PI/180;t.rotateZ(i)}2===e.mirrored?t.rotateY(Math.PI):4===e.mirrored&&t.rotateX(Math.PI)}switch(r){case 0:default:break;case 1:t.translateX(-s/2);break;case 2:t.translateX(-s);break;case 3:if(e.startPoint&&e.endPoint){let i=new A(e.startPoint.x,e.startPoint.y,e.startPoint.z),r=new A(e.endPoint.x,e.endPoint.y,e.endPoint.z),n=(new A).subVectors(i,r),a=n.length()/s;t.scale.multiplyScalar(a);let o=n.clone().cross(Yf),l=n.angleTo(Yf);t.rotateZ(o.z>0?Math.PI-l:l-Math.PI),(2===e.mirrored||4===e.mirrored)&&t.rotateX(Math.PI)}break;case 4:t.translateX(-s/2),t.translateY(-a/2);break;case 5:if(e.startPoint&&e.endPoint){let i=new A(e.startPoint.x,e.startPoint.y,e.startPoint.z),r=new A(e.endPoint.x,e.endPoint.y,e.endPoint.z),n=(new A).subVectors(i,r),a=n.length()/s;t.scale.setX(a);let o=n.clone().cross(Yf),l=n.angleTo(Yf);t.rotateZ(o.z>0?Math.PI-l:l-Math.PI),(2===e.mirrored||4===e.mirrored)&&t.rotateX(Math.PI)}}switch(n){case 0:case 1:default:break;case 2:t.translateY(-a/2);break;case 3:t.translateY(-a)}return t.position.z=0,t}drawText(e,t,i){let r=e.text;if(!r||!this.font)return;let n=t.tables.style.styles[e.textStyle]||this.getDefaultTextStyle(t);r=pO(r,{encoding:this.getTextEncoding(n)}).map((e=>e.text)).join("");let s=this.getTextMesh(r,e,t,i);if(!s)return;let a=s.geometry;if(s instanceof rt&&!a.getIndex()){let e=a.getAttribute("position"),t=[];for(let i=0;ie.text)).join();let n=this.getTextMesh(r,e,t,i);if(!n)return;let s=n.geometry;if(s.hasAttribute("uv")&&s.deleteAttribute("uv"),s.hasAttribute("normal")&&s.deleteAttribute("normal"),this.transformTextMesh(e,n),kt.shouldRebasePositionOnRTC(n.position))this.setRTCUserData(n);else{let e=kt.caculateGeometryCenter(s);e&&kt.shouldRebasePositionOnRTC(e)&&this.setRTCUserData(n)}return n}drawAttrib(e,t,i){let r=e.text;if(!r||!this.font)return;r=pO(r).map((e=>e.text)).join();let n=this.getTextMesh(r,e,t,i);if(!n)return;let s=n.geometry;if(s.hasAttribute("uv")&&s.deleteAttribute("uv"),s.hasAttribute("normal")&&s.deleteAttribute("normal"),this.transformTextMesh(e,n),kt.shouldRebasePositionOnRTC(n.position))this.setRTCUserData(n);else{let e=kt.caculateGeometryCenter(s);e&&kt.shouldRebasePositionOnRTC(e)&&this.setRTCUserData(n)}return n}drawPoint(e,t,i){if(!e.position)return;let r=new lt,n=[new A(e.position.x,e.position.y,e.position.z)];ms.set(0,0,0);let s=ms,a=!1;this.enableRTC&&(a=kt.checkAndRebasePositionsOnRTC(n,s)),r.setFromPoints(n);let o=new nn(r,cG);return a&&(this.setRTCUserData(o),o.position.x+=s.x,o.position.y+=s.y),o}drawDimension(e,t){if(!e.block)return;let i=t.blocks[e.block];if(!i||!i.entities)return;let r=t.tables.dimStyle.dimStyles[e.dimStyleName]||this.getDefaultDimensionStyle(t);r&&r.DIMCLRD>0&&(e.colorIndex=r.DIMCLRD,e.color=T0(e.colorIndex));let n=new ur;for(let r=0;r`,n.userData.entityType=e.type;let s=null==e?void 0:e.insertionPoint;return s&&(n.position.x+=s.x,n.position.y+=s.y),kt.shouldRebasePositionOnRTC(n.position)&&this.setRTCUserData(n),n}drawInsert(e,t,i=!1){if(!e.block)return;let r=t.blocks[e.block];if(!r.entities)return;e.blockPosition=r.position;let n=new ur;for(let s=0;s`,n.userData.entityType=e.type,null!=e&&e.blockPosition&&(n.position.x-=e.blockPosition.x,n.position.y-=e.blockPosition.y,n.updateMatrix());let s=ms.set(1,1,1);e.xScale&&(s.x=e.xScale),e.yScale&&(s.y=e.yScale);let a=new xr;e.rotation&&(a.z=e.rotation*Math.PI/180),xDe.setFromEuler(a,!1);let o=D_.set(0,0,0);e.position&&(o.x=e.position.x,o.y=e.position.y),Kc.compose(o,xDe,s),e.extrusionDirection&&e.extrusionDirection.z<0&&Kc.premultiply(bDe.identity().makeScale(-1,1,1)),uG.copy(n.matrix),n.applyMatrix4(Kc),kt.shouldRebasePositionOnRTC(n.position)&&this.setRTCUserData(n);let l=this.findSpatialFilterByHandle(e.handle,t);if(l){let t=this.drawSpatialFilter(l),i=l;i&&i.clipPolylines&&i.clipPolylines.length>0&&(n.userData.spatialFilterHandle=l.handle,this.cloneMaterialsForSpatialFilter(n),t&&t.applyMatrix4(uG.invert()),ie.debug("[DxfLoader] Spatial filter:",e.associatedSpatialFilter))}return n}drawSpatialFilter(e){let t=e;if(t.threejsObject)return t.threejsObject.clone();let i=e.invertBlockMatrix;Kc.set(i[0],i[1],i[2],i[3],i[4],i[5],i[6],i[7],i[8],i[9],i[10],i[11],0,0,0,1);let r=[];e.vertices.forEach((e=>{r.push(new A(e.x,e.y,0))}));let n={polyline:[],bConcave:!1,bReversed:!1};if(2===e.numberOfPointsOnClipBoundary)n.polyline=r;else{let t=e.numberOfPointsOnClipBoundary,i=3;if(te;n--){let o=r[n];if(ar.areVector3sEqual(i,o)&&e+10)break;s.push(i)}if(a>0)for(let e=a+1;e{o.push(new le(e.x,e.y)),l.push([e.x,e.y])})),!kt.isConvex(o)){ie.warn(`[DxfLoader] Concave polygon is not supported for spatial filter (handle '${e.handle}'), converting to convex polygon!`);let t=(0,IDe.default)(l,1/0);s=[],t.forEach((e=>{s.push(new A(e[0],e[1],0))}))}ar.areVector3sEqual(s[0],s[s.length-1])||s.push(s[0]),n.polyline=s,n.bReversed=a>0}return this.enableReleaseData&&(e.vertices=[],e.matrix=[],e.invertBlockMatrix=[]),t.localMatrix=Kc.clone(),t.clipPolylines=[],void t.clipPolylines.push(n)}drawLayout(e,t,i,r,n,s){if(!e.entities)return;let a;if(i.layoutName!==Ri.MODEL_LAYOUT_NAME){let e=i;e.directAssociatedLeafObjectSet||(e.directAssociatedLeafObjectSet=new Set),a=e.directAssociatedLeafObjectSet}let o=new ur;ti.setSharedVariablesOfObject(o);for(let i=0;i{if(e.geometry){let i=e.userData.layerName;!1===this.getLayerVisible(t,i)&&(e.visible=!1);let r=n[i];r||(r=[],n[i]=r),r.push(e),a&&a.add(e)}})))}if(0===o.children.length)return;o.userData.layerName=e.layer;let l=i.layoutName,h=r.children.find((e=>e.name===l));h||(h=new ur,ti.setSharedVariablesOfObject(h),h.name=l,h.userData.isLayoutLevelObject=!0,r.add(h)),h.add(o),e.position&&o.position.set(e.position.x,e.position.y,e.position.z||0),o.matrixAutoUpdate=!1,o.updateMatrix()}convertEdgeToPoints(e){let t=[];switch(e.type){case 1:{let i=e;t.push(new le(i.startPoint.x,i.startPoint.y)),t.push(new le(i.endPoint.x,i.endPoint.y));break}case 2:{let i=e,r=i.startAngle*_r.DEG2RAD,n=i.endAngle*_r.DEG2RAD;i.bCounterclockwise||(r=2*Math.PI-r,n=2*Math.PI-n);let s=new bg(i.center.x,i.center.y,i.radius,r,n,!i.bCounterclockwise),a=this.getDivision(r,n,i.radius);t.push(...s.getPoints(a));break}case 3:{let i=e,r=Math.sqrt(Math.pow(i.majorAxisEndPoint.x,2)+Math.pow(i.majorAxisEndPoint.y,2)),n=r*i.minorRatio,s=Math.atan2(i.majorAxisEndPoint.y,i.majorAxisEndPoint.x),a=i.startAngle*_r.DEG2RAD,o=i.endAngle*_r.DEG2RAD;i.bCounterclockwise||(a=2*Math.PI-a,o=2*Math.PI-o);let l=new Rp(i.center.x,i.center.y,r,n,a,o,!i.bCounterclockwise,s),h=this.getDivision(a,o,Math.max(r,n));t.push(...l.getPoints(h));break}case 4:{let i=e;t.push(...i.controlPoints);break}case 0:{let i=e;t.push(...hG(i.points,i.isClosed));break}}return t}drawHatch(e,t,i){var r;let n=e;if(0==n.boundaryPaths.length)return;let s=[],a=[],o=[];if(n.boundaryPaths.forEach(((e,t)=>{if(this.IsfilteredByPathTypeFlag(e.pathTypeFlag)){let i="[DxfLoader] The %d path type flag is filtered at the %dth boundrayPath (hatch handle '%s')";return void ie.info(i,e.pathTypeFlag,t,n.handle)}let i=e.edges;if(0===i.length)return;let r=[];for(let e=0;e31&&!(e=>{for(let t=1;tnew le(_t.roundNumber(e.x,7),_t.roundNumber(e.y,7))));if((null==l?void 0:l.length)>0){s.push(l);let e=(new ns).setFromPoints(l);a.push(e);let t=e.getSize(C_),i=t.x*t.y;o.push({area:i,index:s.length-1})}})),0===s.length)return;let l=new le,h=this.checkAndRebasePolygonsOnRTC(s,l);o.sort(((e,t)=>e.area-t.area));let u=[];o.forEach((e=>{u.push(e.index)}));let c,p=this.buildContainHierarchyTree(s,a,u),d=[];if(this.buildHatchGeometry(s,p,d),d.length>0&&(c=qo(d)),!c||!c.getIndex()||0===(null==(r=c.getIndex())?void 0:r.count))return void ie.warn("[DxfLoader] Failed to convert hatch boundaries!");let f=new rt(c,M_);f.layers.set(10),this.setHatchMaterial(f,n,t,l,i);let m=f;return h?(this.setRTCUserData(f),m.position.x+=l.x,m.position.y+=l.y):kt.shouldRebasePositionOnRTC(m.position)&&this.setRTCUserData(m),m}drawOle2frame(e,t){let{leftUpX:i,leftUpY:r,rightDownX:n,rightDownY:s}=e;if(!(i&&r&&n&&s))return;let a=[new le(i,r),new le(i,s),new le(n,s),new le(n,r),new le(i,r)],o=new A,l=!1;this.enableRTC&&(l=kt.checkAndRebasePositionsOnRTC(a,o));let h=(new lt).setFromPoints(a),u=this.getLineBasicMaterial(16777215),c=new Ir(h,u);l&&(this.setRTCUserData(c),c.position.x+=o.x,c.position.y+=o.y);let p=new ur;p.add(c);let d,f,m=t.objects.DICTIONARY;for(let t of m){let i=t;for(let t in i.entries)if(i.entries[t]===e.handle){d=t;break}}if(d)if(this.meshTextureMaterials[d])f=this.meshTextureMaterials[d];else for(let e=0;e1?p:c}static getOcsMatrix(e){let t=Yf,i=lG,r=TO,n=new A(0,1,0),s=new A(0,0,1);return ar.areVectorsClose(e,s)?Kc.identity():(r=e.clone().normalize(),ar.areVectorsClose(r,s)||(t=Math.abs(r.x)<1/64&&Math.abs(r.y)<1/64?n.cross(r).normalize():s.cross(r).normalize(),i=r.clone().cross(t).normalize()),Kc.set(t.x,t.y,t.z,0,i.x,i.y,i.z,0,r.x,r.y,r.z,0,0,0,0,1))}static getDcs2WcsMatrix(e,t){let i;i=_Lt(e)?e.viewDirectionFromTarget:e.viewDirection;let r,n,s,a=new A(ar.roundNumber(i.x,7),ar.roundNumber(i.y,7),i.z),o=new A(e.viewTarget.x,e.viewTarget.y,e.viewTarget.z),l=e.viewTwistAngle;s=a.clone().normalize(),r=TO.clone().cross(a),r.length()>0?(r.normalize(),n=s.clone().cross(r)):s.z<0?(r=Yf.clone().negate(),n=lG,s=TO.clone().negate()):(r=Yf,n=lG,s=TO);let h=new Be,u=Kc.identity();return u.makeBasis(r,n,s),h.premultiply(u),h.premultiply(Kc.identity().compose(o.clone(),(new Hr).setFromAxisAngle(new A(0,0,1),_r.degToRad(t?l:-l)),new A(1,1,1))),h}getViewportMsToPsMatrix(e){let t=new A(e.centerPoint_dcs.x,e.centerPoint_dcs.y,0),i=new A(e.centerPoint.x,e.centerPoint.y,e.centerPoint.z),r=e.viewHeight/e.height_paperSpace,n=Ri.getDcs2WcsMatrix(e,this.angDir),s=new Be;s.setPosition(EDe.clone().sub(i));let a=bDe.identity();a.scale(ms.set(r,r,r));let o=uG.identity().setPosition(EDe.clone().sub(i));a.premultiply(o.clone().invert()).multiply(o),s.multiply(a);let l=Kc.identity();l.setPosition(t),n.multiply(l);let h=Kc.identity();return s.invert().multiply(h).multiply(n.invert())}drawViewport(e,t,i){let r=e;if("1"==r.viewportId)return e.psBBox=new Dt,void(e.msToPsMatrix=new Be);let n=[],s=r.centerPoint,a=r.width_paperSpace/2,o=r.height_paperSpace/2;n.push(new A(s.x-a,s.y-o,0)),n.push(new A(s.x-a,s.y+o,0)),n.push(new A(s.x+a,s.y+o,0)),n.push(new A(s.x+a,s.y-o,0)),n.push(n[0]),e.psBBox=new Dt(n[0],n[2]),e.msToPsMatrix=this.getViewportMsToPsMatrix(r);let l=new A,h=!1;this.enableRTC&&(h=kt.checkAndRebasePositionsOnRTC(n,l));let u=(new lt).setFromPoints(n),c=new Ir(u,Ha);h&&(this.setRTCUserData(c),c.position.x+=l.x,c.position.y+=l.y),c.userData.entityType=e.type;let p=new ur;p.add(c);let d=e.psBBox.clone();d.applyMatrix4(e.msToPsMatrix.clone().invert()),d.min.z=0,d.max.z=0;let f=[];f.push(d.min),f.push(new A(d.min.x,d.max.y,0)),f.push(d.max),f.push(new A(d.max.x,d.min.y,0)),f.push(f[0]);let m=new A,g=!1;this.enableRTC&&(g=kt.checkAndRebasePositionsOnRTC(f,m));let y=(new lt).setFromPoints(f),v=new Ir(y,Ha);return g&&(this.setRTCUserData(v),v.position.x+=m.x,v.position.y+=m.y),v.userData.entityType=e.type,v.userData.inPaperSpace=!0,p.add(v),c}getColor(e,t,i){var r,n,s,a,o,l;if(this.compareContext){let t=e.compareChangeType;return"Added"===t?Xn.ENTITY_COLOR_ADDED:"Removed"===t?Xn.ENTITY_COLOR_REMOVED:"Modified"===t?this.compareContext.isTheFirstFile?Xn.ENTITY_COLOR_REMOVED:Xn.ENTITY_COLOR_ADDED:Xn.ENTITY_COLOR_NO_CHANGE}let h=e;if(h&&h.isGradientColor){let t=h.gradientColors;if(t&&t.length>=2){if(t[0]!==t[1]){let t=`[DxfLoader] Gradient colors are not supported for hatch '${e.handle}', will use the first color!`;ie.warn(t)}return t[0]}}if(e.isTrueColor||e.colorIndex>0&&e.colorIndex<256)return e.color;if(0===e.colorIndex)return i?this.getColor(i,t):null==(n=null==(r=t.tables)?void 0:r.layer)?void 0:n.layers[0].color;if(256===e.colorIndex){let r=null==(a=null==(s=t.tables)?void 0:s.layer)?void 0:a.layers,n=r&&r[e.layer],h=r&&i&&r[i.layer],u=Xf;return u=n&&"0"!==n.name?n.color:h?h.color:n?n.color:null==(l=null==(o=t.tables)?void 0:o.layer)?void 0:l.layers[0].color,u}return ie.warn("[DxfLoader] Unknown colorIndex"),Xf}getLineType(e,t,i){var r,n;if(i&&"DIMENSION"===i.type)return this.getLineType(i,t);if(e.lineType!==rO&&e.lineType!==j8)return e.lineType;if(e.lineType===j8)return i?this.getLineType(i,t):e.lineType;let s=null==(n=null==(r=t.tables)?void 0:r.layer)?void 0:n.layers,a=ILt;if("0"!==e.layer){let t=s&&s[e.layer];if(t)return t.lineType}else if(i){let e=s&&s[i.layer];if(e)return e.lineType}return a}getLayerName(e,t,i){var r,n;let s=null==(n=null==(r=t.tables)?void 0:r.layer)?void 0:n.layers,a=s&&s[e.layer],o=s&&i&&s[i.layer],l=a.name;return a&&"0"===a.name&&o&&(l=o.name),l||"0"}setMaterial(e,t,i,r){let n=e;if(!n.geometry||(this.setRenderOrderByObjectType(e),"OLE2FRAME"===t.type))return;if("MTEXT"===t.type)return void(e.renderOrder=5);if("HATCH"===t.type)return C_.set(0,0),void this.setHatchMaterial(e,t,i,C_,r);let s,a=this.getColor(t,i,r);if("LWPOLYLINE"===t.type&&(n.isMesh?(s=this.getMeshBasicMaterial(a),e.renderOrder=1):e.userData.isOutline&&(s=this.getLineBasicMaterial(a),e.renderOrder=3),s))n.material=s;else{if("SOLID"===t.type)s=this.getMeshBasicMaterial(a);else if("TEXT"===t.type||"ATTDEF"===t.type||"ATTRIB"===t.type)s=this.getLineBasicMaterial(a),e.renderOrder=5;else if("LEADER"===t.type||"MULTILEADER"===t.type||"VIEWPORT"===t.type)s=this.getLineBasicMaterial(a);else if("POINT"===t.type)s=this.getPointsMaterial(a);else{if(e.material instanceof qn)return s=this.getPointsMaterial(a),void(n.material=s);let o=i.tables.lineType.lineTypes[this.getLineType(t,i,r)],l=t.lineTypeScale||1;o&&o.pattern&&0!==o.pattern.length?(s=this.getLineShaderMaterial(o,a,l),e.renderOrder=3):s=this.getLineBasicMaterial(a)}n.material=s}}setHatchMaterial(e,t,i,r,n){let s=e;if(!s.geometry)return;let a=this.getColor(t,i,n);if(s.isLine)return void(s.material=this.getLineBasicMaterial(a));let o,l=-1;if(t.solidFill)o=this.getMeshBasicMaterial(a);else{if(s.material instanceof Yt){o=s.material;let e=new je(a);s.material.uniforms.u_color.value.equals(e)||(o=s.material.clone(),this.updateMaterialUniforms(o),o.uniforms.u_color.value.set(a))}else o=this.getHatchShaderMaterial(t,a,r);l=0}o||(o=this.getMeshBasicMaterial(a),l=-1),s.material=o,s.renderOrder=l}setRenderOrderByObjectType(e){let t=e,i=0;t.isMesh?i=-1:t.isLine?i=2:t.isPoints&&(i=4),e.renderOrder=i}getPointsMaterial(e){return this.pointsMaterials[e]||(this.pointsMaterials[e]=new qn({size:.2,color:e})),this.pointsMaterials[e]}getLineBasicMaterial(e){return this.lineBasicMaterials[e]||(this.lineBasicMaterials[e]=new vr({color:e})),this.lineBasicMaterials[e]}getLineShaderMaterial(e,t,i){let r=`${e.name}_${t}_${i}`;if(!this.lineShaderMaterials[r]){let n=this.getLineTypeScales(),s=n.ltScale*n.celtScale*i;this.lineShaderMaterials[r]=uO.createLineShaderMaterial(e.pattern,t,s,Ri.viewportScaleUniform,Ri.cameraZoomUniform)}return this.lineShaderMaterials[r]}getMeshBasicMaterial(e){return this.meshBasicMaterials[e]||(this.meshBasicMaterials[e]=new lr({color:e})),this.meshBasicMaterials[e]}getHatchShaderMaterial(e,t,i){if(!e.patternLines||e.patternLines.length<1)return;let r=this.findMatchedHatchShaderMaterial(e,t);if(r)return r;let n=2;e.patternLines.forEach((e=>{n=Math.max(e.dashPattern.length,n)}));let s=0,a=[],o=new le;for(let t of e.patternLines){let r=new le(t.origin.x,t.origin.y).sub(i).rotateAround(o,-_r.degToRad(e.patternAngle)),l=new le(t.delta.x,t.delta.y).rotateAround(o,-_r.degToRad(t.angle));if(0===l.y)return void ie.warn("[DxfLoader] delta.y is equal to zero !");let h=t.dashPattern.length,u=!0,c=0;for(let e=0;e0&&(u=!1),c+=Math.abs(i)}let p=u?.05:.005,d=[],f=[],m=0;f[0]=m;for(let e=0;eRi.maxFragmentUniforms){ie.warn("[DxfLoader] There will be warning in fragment shader when number of uniforms exceeds 1024, so extra hatch line patterns are ignored here!");break}a.push(g)}let l=hDe(a,e.patternAngle,Ri.cameraZoomUniform,new je(t));return l.defines={MAX_PATTERN_SEGMENT_COUNT:n},this.hatchShaderMaterials.push({patternLines:e.patternLines,patternAngle:e.patternAngle,color:t,material:l}),l}getDivision(e,t,i){let r=Math.round(5e4/this.entityCount);r=Math.max(r,2),r=Math.min(r,10);let n=5*r,s=2*r;if(this.averageCurveSize){s*=Math.pow(i/this.averageCurveSize,.5),s=Math.max(s,r),s=Math.min(s,n)}let a=t-e;a<0&&(a+=2*Math.PI),s=Math.ceil(s*(a/Math.PI));let o=8;return a<.087?o=2:a<.174?o=3:a<.52?o=4:a<1.57?o=5:a<3.14?o=6:a<4.71&&(o=7),s=Math.max(s,o),this.averageCurveSize=(this.averageCurveSize*this.curveCount+i)/(this.curveCount+1),this.curveCount++,Math.max(s,12)}getBSplineInterpolationsPerSplineSegment(e,t){let i=1;this.averageCurveSize&&(i=Math.pow(t/this.averageCurveSize,.5),i=Math.max(i,.5),i=Math.min(i,2)),this.averageCurveSize=(this.averageCurveSize*this.curveCount+t)/(this.curveCount+1),this.curveCount++;let r=2*e*i;if(e>20){r/=Math.log10(e)}return r}getSimplifyTolerance(){return.03}setDxfDataToIndexedDb(e,t){return ht(this,null,(function*(){let i={dxfDataId:e,dxf:t};return new Promise(((t,r)=>{eE.instance().add(i,(()=>{ie.info(`[DxfLoader] Saved '${e}' to indexedDb`),t()}),(e=>{r(e)}))}))}))}getDxfDataFromIndexedDb(e){return ht(this,null,(function*(){return new Promise(((t,i)=>{eE.instance().query(e,(e=>{e&&e.length>0&&t(e[0].dxf),t(void 0)}),(()=>i()))}))}))}buildContainHierarchyTree(e,t,i){var r;let n=new Map,s=i.length;for(let e=0;e{0===e.children.length?r.push(e.index):n.set(e.index,e.children.map((e=>e.index)))}));let s=e=>{try{let t=new Cp(e);t.hasAttribute("uv")&&t.deleteAttribute("uv"),t.hasAttribute("normal")&&t.deleteAttribute("normal"),i.push(t)}catch(t){ie.warn(`[DxfLoader] triangulate shape error: ${e.getPoints().map((e=>e.toArray())).toString()}`)}};r.forEach((t=>{let i=e[t];if(0===i.length)return;let r=new ro(i);s(r)}));let a=e=>e.map((e=>e.toArray()));for(let t of n){let i=new ro(e[t[0]]),r={regions:[],inverted:!1},n=this.findIntersectHole(e,t[1]);n.forEach((t=>{let n={regions:[],inverted:!1};try{t.forEach(((t,s)=>{if(Kl.epsilon(ar.getVector2RelativeEps(e[t][0]),1e-6),0===s)n=Kl.segments({regions:[a(e[t])],inverted:!1});else{let s=Kl.segments({regions:[a(e[t])],inverted:!1}),o=Kl.combine(n,s);r=Kl.polygon(Kl.selectUnion(o)),r.regions.length>0?r.regions.forEach((e=>{if(0===e.length)return;let t=e.map((e=>new le(e[0],e[1])));i.holes.push(new Gu(t))})):ie.warn("[DxfLoader] mergedHoles.regions is empty")}}))}catch(e){ie.warn(`[DxfLoader] polybooljs has error: ${e}, epsilon is ${Kl.epsilon()}`)}}));let o=n.flat(2);for(let r=0;r{t.children.forEach((t=>{this.buildHatchGeometry(e,t,i)}))}))}findIntersectHole(e,t){let i=t.length,r=[];for(let n=0;n{e.forEach((e=>{t.add(e),i++}))})),t.divideScalar(i);let r=!1;if(this.enableRTC&&kt.shouldRebasePositionOnRTC(t)){r=!0;for(let i=0;i{i.entries[e]&&"ACAD_SORTENTS"===i.entries[e]&&t.add(e)}))}if(0===t.size)return;let r=e.objects.SORTENTSTABLE;if(r)for(let e=0;eMath.abs(e-t)<1e-5,n=(e,t)=>r(e.angle,t.angle)&&r(e.delta.x,t.delta.x)&&r(e.delta.y,t.delta.y)&&r(e.origin.x,t.origin.x)&&r(e.origin.y,t.origin.y)&&((e,t)=>{if(e.length!==t.length)return!1;for(let i=0;ir.color===t&&r.patternAngle===e.patternAngle&&((e,t)=>{if(e.length!==t.length)return!1;for(let i=0;i{t[e.handle]=e.layoutHandle}))}let i=this.blockRecordsCache[t.ownerHandle];if(i){let t=e.objects.LAYOUT.find((e=>e.handle===i));if(t)return t}if(!this.entitiesCache){this.entitiesCache={};let t=this.entitiesCache;Object.values(e.entities).forEach((e=>{t[e.handle]=e}))}let r=this.entitiesCache[t.ownerHandle];return r?this.getLayout(e,r):(ie.warn("[DxfLoader] Failed to find layout name for entity:",t),e.objects.LAYOUT.find((e=>e.layoutName===Ri.MODEL_LAYOUT_NAME)))}getLayerVisible(e,t){var i,r,n;let s=null==(r=null==(i=e.tables)?void 0:i.layer)?void 0:r.layers;return s&&(null==(n=s[t])?void 0:n.visible)}getLayerFrozen(e,t){var i,r,n;let s=null==(r=null==(i=e.tables)?void 0:i.layer)?void 0:r.layers;return s&&(null==(n=s[t.layer])?void 0:n.frozen)}updateMaterialUniforms(e){e instanceof Yt&&(e.uniforms.u_cameraZoom&&(e.uniforms.u_cameraZoom=Ri.cameraZoomUniform),e.uniforms.u_viewportScale&&(e.uniforms.u_viewportScale=Ri.viewportScaleUniform))}cloneMaterialsForSpatialFilter(e){let t=new Map,i=e=>{let i;return Array.isArray(e)?(i=[],e.forEach((e=>{if(t.has(e.id))i.push(t.get(e.id));else{let r=e.clone();this.updateMaterialUniforms(r),t.set(e.id,r),i.push(r)}}))):e&&(t.has(e.id)?i=t.get(e.id):(i=e.clone(),this.updateMaterialUniforms(i),t.set(e.id,i))),i};e.traverse((e=>{e.material&&(e.material=i(e.material))}))}getLineTypeScales(){let e={ltScale:1,celtScale:1};return this.header&&(e.ltScale=this.header.$LTSCALE||1,e.celtScale=this.header.$CELTSCALE||1),e}static getDxfUnits(e){switch(e||0){case 0:return"Unitless";case 1:return"Inches";case 2:return"Feet";case 4:return"Millimeters";case 5:return"Centimeters";case 6:return"Meters";default:ie.warn(`[DxfLoader] Unsupported $INSUNITS '${e}'`)}return"Unitless"}static computeLineDistance(e){let t=!0===e.isLineSegments,i=e.geometry,r=e.matrixWorld;if(i.index&&(ie.debug(`[DxfLoader] Line with id '${e.id}' contains index buffer, going to convert it to non-indexed.`),i=kt.convertGeometryWithIndexedToNonIndexed(i)),null===i.index){let n=i.attributes.position;if(!n||0===n.count)return;let s=[];if(t)for(let e=0,t=n.count;e{let t=e;t.isLine&&t.material instanceof Yt&&Ri.computeLineDistance(t)})),ie.debug(`[DxfLoader] Computed line distances in ${(Date.now()-t)/1e3}s`)}static merge(e){let t={};e.objects.LAYOUT.forEach((e=>{var i;let r=e;t[r.layoutName]=r,null==(i=r.directAssociatedLeafObjectSet)||i.clear()}));let i=Date.now(),r={},n={},s=0,a=0,o=()=>{let e=Date.now();for(let e in r){let t=r[e];Ri.removeEmptyObjectsFromRemovingMarkedObjects(t.children,t.object),t.children=[]}s=0,a+=Date.now()-e};for(let i in e.layersAndThreejsObjects){let l=e.layersAndThreejsObjects[i];if(l.length<=1)continue;let h=Date.now(),u={};for(let e of l){let t,i=e;for(;i;){if(i.userData.isLayoutLevelObject){t=i;break}i=i.parent}if(!t)continue;let r=t.name;u[r]||(u[r]={object:t,children:[]}),u[r].children.push(e)}let c=[];for(let e in u){let i;if(e!==Ri.MODEL_LAYOUT_NAME){let r=t[e];r.directAssociatedLeafObjectSet||(r.directAssociatedLeafObjectSet=new Set),i=r.directAssociatedLeafObjectSet}let l=u[e],h=Yi.deepMerge(l.children,l.object,!1,!1,!0),p=h.added,d=h.removed;r[e]||(r[e]={object:l.object,children:[]}),n[e]||(n[e]={object:l.object,children:[]});let f=d.length>15e3;if(f){let e=Date.now();Ri.removeEmptyObjectsFromRemovingMarkedObjects(d,l.object),a+=Date.now()-e}else s+=d.length;if(d.length===l.children.length)f||d.forEach((t=>{r[e].children.push(t)}));else{let t=d;d.length>=100&&(t=new Set(d));let n=e=>Array.isArray(t)?t.indexOf(e)>=0:t.has(e);for(let t=0;t15e3&&o()}e.layersAndThreejsObjects[i]=c,ie.debug(`[DxfLoader] Merged layer '${i}' in ${(Date.now()-h)/1e3}s`)}s>0&&o();for(let t in n){let i=n[t];e.threejsObject.children.find((e=>e.name===t))||e.threejsObject.add(i.object),i.children.forEach((e=>{i.object.add(e),e.updateWorldMatrix(!1,!1)})),i.children=[]}ie.debug(`[DxfLoader] MergeUtils.deepMerge costed ${Yi.mergeInfo.elapsedTime/1e3}s`),ie.debug(`[DxfLoader] The remove operation of deep merge costed ${a/1e3}s`),ie.debug(`[DxfLoader] Deep merge totally costed ${(Date.now()-i)/1e3}s`);let l=Yi.mergeInfo;ie.debug(`[DxfLoader] Totally merged ${l.removedObjects} objects to ${l.mergedMeshes} meshes, ${l.mergedLines} lines, ${l.mergedPoints} points, ${l.mergedUnknownTypeObjects?l.mergedUnknownTypeObjects+" unknown type,":""} `)}static statLayoutAndLayerObjects(e){let t=new WeakSet,i=0;for(let r in e.layersAndThreejsObjects)e.layersAndThreejsObjects[r].forEach((e=>{e.geometry&&(i++,t.has(e)?console.warn(e):t.add(e))}));let r=new WeakSet,n=0;if(e.threejsObject.traverse((e=>{e.geometry&&(n++,r.has(e)?console.warn(e):r.add(e))})),i!=n)for(let t in e.layersAndThreejsObjects)e.layersAndThreejsObjects[t].forEach((e=>{e.geometry&&(r.has(e)||console.warn(e))}));ie.info(`[DxfLoader] The count of layer objects is ${i},The count of layout objects is ${n} `)}static removeEmptyObjectsFromRemovingMarkedObjects(e,t){if(0===e.length)return;let i=e=>{let r=[];for(let i of e){i.userData.validCount=0;let e=i.parent;e&&e!==t&&(void 0===e.userData.validCount&&(e.userData.validCount=e.children.length),0==--e.userData.validCount&&r.push(e))}r.length>0&&i(r)};i(e),this.removeEmptyObjectsFromMark(t)}static removeEmptyObjectsFromMark(e){if(0===e.userData.validCount||ti.isEmptyObject(e))return e.removeFromParent(),!0;for(let t=0;t>3]&128>>t)>>7-t}setBit(e,t){var i=e>>3,r=this.u8[i],n=7&e;this.u8[i]=t?r|128>>n:r&~(128>>n)}getInt12(e){var t=e/8|0,i=this.u8[t],r=this.u8[t+1],n=this.u8[t+2],s=e%8,a=8-s,o=Math.min(12-a,8);return(((i&=~(255<>12-s)-2048}setInt12(e,t){var i=e/8|0,r=e%8,n=(t+=2048)<<12-r,s=(16711680&n)>>16,a=(65280&n)>>8,o=255&n,l=8-r,h=Math.min(12-l,8),u=Math.max(12-l-h,0),c=255<>8-(2-n))))<<8)+(r&=255<<8-Math.max(6-s,0))>>10-n)-32}setInt6(e,t){var i=e/8|0,r=e%8,n=(t+=32)<<10-r,s=(65280&n)>>8,a=255&n,o=8-r,l=Math.max(6-o,0),h=(255<>8-(2-r));this.u8[i]=(this.u8[i]&h)+s;var u=~(255<<8-l);this.u8[i+1]=(this.u8[i+1]&u)+a}test(){var e,t,i=new ArrayBuffer(3),r=new S0(i);for(t=0;t<12;t++)for(e=-2048;e<2048;e++)if(r.setInt12(t,e),r.getInt12(t)!=e){console.log("12-bit prob at",t,e),console.log("expected",e,"got",r.getInt12(t));break}for(t=0;t<18;t++)for(e=-32;e<32;e++)if(r.setInt6(t,e),r.getInt6(t)!=e){console.log("6-bit prob at",t,e),console.log("expected",e,"got",r.getInt6(t));break}return r}},_De=(e=>(e[e.NULL=0]="NULL",e[e.POINT=1]="POINT",e[e.POLYLINE=3]="POLYLINE",e[e.POLYGON=5]="POLYGON",e))(_De||{}),EO=class{parse(e){var t={},i=new DataView(e),r=0;if(t.fileCode=i.getInt32(r,!1),9994!=t.fileCode)throw new Error("Unknown file code: "+t.fileCode);for(r+=24,t.wordLength=i.getInt32(r,!1),t.byteLength=2*t.wordLength,r+=4,t.version=i.getInt32(r,!0),r+=4,t.shapeType=i.getInt32(r,!0),r+=4,t.minX=i.getFloat64(r,!0),t.minY=i.getFloat64(r+8,!0),t.maxX=i.getFloat64(r+16,!0),t.maxY=i.getFloat64(r+24,!0),t.minZ=i.getFloat64(r+32,!0),t.maxZ=i.getFloat64(r+40,!0),t.minM=i.getFloat64(r+48,!0),t.maxM=i.getFloat64(r+56,!0),r+=64,t.records=[];rn.push(...e)));let s=new lt;s.setFromPoints(e),s.setIndex(n),t.push(s);let a=new lt;e.length>2&&!e[0].equals(e[e.length-1])&&e.push(e[0]),a.setFromPoints(e),i.push(a)}else{let t=new lt;t.setFromPoints(e),i.push(t)}}}var p=new sr;for(r=0;r1023||Math.abs(s-e[o+1])>1023?(i.push(r),a+=1,r=[],n=e[o],s=e[o+1],r.push(n,s),a+=4,o++):(r.push((e[o]-n)/8,(e[o+1]-s)/8),n+=8*((e[o]-n)/8|0),s+=8*((e[o+1]-s)/8|0),a+=2,o++):(i.push(r),t.push(i),i=[],r=[],a+=3);return this.storeDeltas(a,t)}deltaEncode6(e){var t=[],i=[],r=[],n=0,s=0,a=0,o=0;for(a=0;a31||Math.abs(s-e[a+1])>31?(i.push(r),o+=1,r=[],n=e[a],s=e[a+1],r.push(n,s),o+=4,a++):(r.push(e[a]-n,e[a+1]-s),n+=e[a]-n,s+=e[a+1]-s,o+=2,a++):(i.push(r),t.push(i),i=[],r=[],o+=3);return this.storeDeltas6(o,t)}storeDeltas(e,t){for(var i=new ArrayBuffer(e),r=new DataView(i),n=0,s=0;s{this.updateProgress(i,50);let e=(new EO).parse(n.response),r=(new bO).createModel(e);this.updateProgress(i,99),t(r)},n.onerror=r,n.open("GET",e),n.send(null)}))}updateProgress(e,t){if(e){e(new ProgressEvent("progress",{lengthComputable:!0,loaded:t,total:100}))}}},CLt="three/js/libs/draco/gltf/",Jc=class{constructor(e){this.manager=e}loadLocalModel(e,t,i){return ht(this,null,(function*(){let r=t.toLowerCase();return r.endsWith("fbx")?this.loadFbx(e,i):r.endsWith("obj")?this.loadObj(e,i):r.endsWith("stl")?this.loadStl(e,i):r.endsWith("ifc")?this.loadIfc(e,i):r.endsWith("shp")?this.loadShp(e,i):r.endsWith("dae")?this.loadDae(e,i):r.endsWith("dxf")?this.loadDxf(e,i):r.endsWith("jpg")||r.endsWith("jpeg")||r.endsWith("png")?this.loadImage(e,i):this.loadGltf(e,i)}))}loadModel(e,t,i){return ht(this,null,(function*(){let r=e;if(!r)return Promise.resolve();let n=(null==t?void 0:t.toLowerCase())||"";if(!n){let e=r.split("?")[0].toLowerCase();if(e){let t=e.lastIndexOf(".");-1!==t&&(n=e.slice(t+1))}}return n.endsWith("fbx")?this.loadFbx(r,i):n.endsWith("obj")?this.loadObj(r,i):n.endsWith("stl")?this.loadStl(r,i):n.endsWith("ifc")?this.loadIfc(r,i):n.endsWith("shp")?this.loadShp(r,i):n.endsWith("dae")?this.loadDae(r,i):n.endsWith("dxf")?this.loadDxf(r,i):n.endsWith("jpg")||n.endsWith("jpeg")||n.endsWith("png")?this.loadImage(r,i):this.loadGltf(r,i)}))}loadGltf(e,t){return ht(this,null,(function*(){let i=this.getGltfLoader();-1!==e.indexOf("#")&&console.warn(`[LoadingHelper] '#' is not allowed in filename ${e}`),e=e.replace(/#/g,encodeURIComponent("#"));let r=yield i.loadAsync(e,t);return Promise.resolve(r.scene)}))}parseGltf(e,t,i,r){return this.getGltfLoader().parse(e,t,(e=>i(e.scene)),r)}loadFbx(e,t){return ht(this,null,(function*(){let i=yield new hA(this.manager).loadAsync(e,t);return Promise.resolve(i)}))}loadObj(e,t){return ht(this,null,(function*(){let i=new WA(this.manager),r=new zA(this.manager),n=e.replace(".obj",".mtl"),s=yield r.loadAsync(n,t);s.preload(),i.setMaterials(s);let a=yield i.loadAsync(e,t);return Promise.resolve(a)}))}loadStl(e,t){return ht(this,null,(function*(){let i=yield new XA(this.manager).loadAsync(e,t);return Promise.resolve(new rt(i))}))}loadIfc(e,t){return ht(this,null,(function*(){let i=new VA(this.manager),r=i.ifcManager;r&&"function"==typeof r.setWasmPath&&r.setWasmPath("../three/js/libs/ifc/");let n=yield i.loadAsync(e,t);return Promise.resolve(n.mesh)}))}loadShp(e,t){return ht(this,null,(function*(){let i=new xO;return new Promise(((r,n)=>{i.load(e,(e=>{r(e)}),t,(e=>{n(e)}))}))}))}loadDae(e,t){return ht(this,null,(function*(){let i=yield new oA(this.manager).loadAsync(e,t);return Promise.resolve(i.scene)}))}loadDxf(e,t){return ht(this,null,(function*(){this.font||console.warn("[LoadingHelper] Should set font first!");let i=new Er;try{let r=yield i.loadAsync(e,t);return Promise.resolve(r.threejsObject)}catch(e){let t=new ErrorEvent("");return Promise.reject(t)}}))}loadPly(e,t){return ht(this,null,(function*(){let i=yield new YA(this.manager).loadAsync(e,t);return Promise.resolve(new rt(i))}))}loadImage(e,t){return ht(this,null,(function*(){let i=yield new xs(this.manager).loadAsync(e,t);if(!i)return Promise.reject("Failed to load image!");let r=i.image,n=r&&r.height||10,s=r&&r.width||10;n*=10/s,s=10;let a=new lr({map:i,side:yi,transparent:!0}),o=new is(s,n),l=new rt(o,a);return Promise.resolve(l)}))}loadDxfDataAsync(e,t,i,r,n,s){return ht(this,null,(function*(){var a;this.font||console.warn("[LoadingHelper] Should set font first!");let o=new Er(n,s);return o.setFont(this.font),o.manager.onLoad=()=>{r&&r()},this.font&&this.font.getFontData&&(yield null==(a=this.font)?void 0:a.getFontData()),o.load(e,t,i)}))}setFont(e){this.font=e}getGltfLoader(){if(!this.gltfLoader){this.gltfLoader=new Zu(this.manager);let e=new lA(this.manager);e.setDecoderPath(CLt),this.gltfLoader.setDRACOLoader(e)}return this.gltfLoader}},rE=class{constructor(e){this.running=!1,this.workers=[];let t=1;e?t=e:window.navigator&&(t=Math.max(t,window.navigator.hardwareConcurrency-1));for(let e=0;e{let r=this.workers.length,n=e.length,s=[],a=Math.floor(n/r),o=n%r,l=0,h=0;for(let i=0;i=h)break;ie.debug("startIndex: "+l+" endIndex: "+h),s.push(r.generate(e.slice(l,h),t))}Promise.allSettled(s).then((()=>{this.running=!1,i()}))}));ie.warn("[BVHHelper] Worker has been disposed.")}}))}dispose(){for(let e=0;e{e.traverse((e=>{let r=e;if(r.isMesh&&r.geometry&&Yi.isMergedMesh(r)&&!(r instanceof rn)){if(i.has(r.geometry.id))return;r.geometry.index&&t.saveOriginalIndex&&(r.geometry.userData.originalIndex=r.geometry.index.array.slice()),r.geometry.boundsTree=new Fc(r.geometry,t),i.add(r.geometry.id)}}))}))}static createMeshBvhAsync(e,t={}){let i=new Set,r=[];e.forEach((e=>{e.traverse((e=>{let t=e;if(t.isMesh&&t.geometry&&Yi.isMergedMesh(t)&&!(t instanceof rn)){if(i.has(t.geometry.id))return;r.push(t.geometry),i.add(t.geometry.id)}}))}));let n=new rE;n.generate(r,t).then((()=>{n.dispose()}))}},ALt=(e=>(e[e.NONE=-1]="NONE",e[e.ROTATE=0]="ROTATE",e[e.DOLLY=1]="DOLLY",e[e.PAN=2]="PAN",e[e.TOUCH_ROTATE=3]="TOUCH_ROTATE",e[e.TOUCH_DOLLY=4]="TOUCH_DOLLY",e))(ALt||{}),OLt=(e=>(e.LEFT="ArrowLeft",e.UP="ArrowUp",e.RIGHT="ArrowRight",e.BOTTOM="ArrowDown",e))(OLt||{});function iE(e){return{type:e}}var ph={movable:!1,startDistBetweenFingers:0,scale:1},nE=2*Math.PI,SDe=1e-6,IO=class extends Vo{constructor(e,t,i=!1){super(),this.enabled=!0,this.target=new A,this.enableZoom=!1,this.enablePan=!1,this.enableRotate=!0,this.state=-1,this.rotateSpeed=1,this.zoomSpeed=1,this.panSpeed=1,this.scale=1,this.minZoom=0,this.maxZoom=1/0,this.screenSpacePanning=!0,this.autoRotate=!0,this.autoRotateSpeed=2,this.enableDamping=!1,this.dampingFactor=.05,this.minAzimuthAngle=-1/0,this.maxAzimuthAngle=1/0,this.minPolarAngle=0,this.maxPolarAngle=Math.PI,this.minDistance=0,this.maxDistance=1/0,this.keyPanSpeed=7,this.minFov=50,this.maxFov=95,this.zoomChanged=!1,this.panOffset=new A,this.pointerPositions={},this.rotateStart=new le,this.rotateEnd=new le,this.rotateDelta=new le,this.dollyStart=new le,this.dollyEnd=new le,this.dollyDelta=new le,this.panStart=new le,this.panEnd=new le,this.panDelta=new le,this.pointers=[],this.spherical=new pf,this.sphericalDelta=new pf,this.update=function(e){let t=new A,i=new A,r=new Hr;return function(){let n=e.quat,s=n.clone().invert(),a=e.object.position;t.copy(a).sub(e.target),t.applyQuaternion(n),e.spherical.setFromVector3(t),e.autoRotate&&-1===e.state&&(e.isVRMode?e.sphericalDelta.theta+=nE/60/60*e.autoRotateSpeed:e.sphericalDelta.theta-=nE/60/60*e.autoRotateSpeed),e.enableDamping?(e.spherical.theta+=e.sphericalDelta.theta*e.dampingFactor,e.spherical.phi+=e.sphericalDelta.phi*e.dampingFactor):(e.spherical.theta+=e.sphericalDelta.theta,e.spherical.phi+=e.sphericalDelta.phi);let o=e.minAzimuthAngle,l=e.maxAzimuthAngle;return isFinite(o)&&isFinite(l)&&(o<-Math.PI?o+=nE:o>Math.PI&&(o-=nE),l<-Math.PI?l+=nE:l>Math.PI&&(l-=nE),e.spherical.theta=o<=l?Math.max(o,Math.min(l,e.spherical.theta)):e.spherical.theta>(o+l)/2?Math.max(o,e.spherical.theta):Math.min(l,e.spherical.theta)),e.spherical.phi=Math.max(e.minPolarAngle,Math.min(e.maxPolarAngle,e.spherical.phi)),e.spherical.makeSafe(),e.spherical.radius*=e.scale,e.spherical.radius=Math.max(e.minDistance,Math.min(e.maxDistance,e.spherical.radius)),!0===e.enableDamping?e.target.addScaledVector(e.panOffset,e.dampingFactor):e.target.add(e.panOffset),t.setFromSpherical(e.spherical),t.applyQuaternion(s),a.copy(e.target).add(t),e.object.lookAt(e.target),!0===e.enableDamping?(e.sphericalDelta.theta*=1-e.dampingFactor,e.sphericalDelta.phi*=1-e.dampingFactor,e.panOffset.multiplyScalar(1-e.dampingFactor)):(e.sphericalDelta.set(0,0,0),e.panOffset.set(0,0,0)),e.scale=1,!!(e.zoomChanged||i.distanceToSquared(e.object.position)>SDe||8*(1-r.dot(e.object.quaternion))>SDe)&&(e.dispatchEvent(iE("change")),i.copy(e.object.position),r.copy(e.object.quaternion),e.zoomChanged=!1,!0)}}(this),this.onContextMenu=function(e){return t=>{!1!==e.enabled&&t.preventDefault()}}(this),this.onPointerDown=function(e){return t=>{!1!==e.enabled&&(0===e.pointers.length&&(e.domElement.setPointerCapture(t.pointerId),e.domElement.addEventListener("pointermove",e.onPointerMove),e.domElement.addEventListener("pointerup",e.onPointerUp)),e.addPointer(t),"touch"===t.pointerType?e.onTouchStart(t):e.onMouseDown(t))}}(this),this.onPointerMove=function(e){return t=>{!1!==e.enabled&&("touch"===t.pointerType?e.onTouchMove(t):e.onMouseMove(t))}}(this),this.onPointerUp=function(e){return t=>{e.removePointer(t),0===e.pointers.length&&(e.domElement.releasePointerCapture(t.pointerId),e.domElement.removeEventListener("pointermove",e.onPointerMove),e.domElement.removeEventListener("pointerup",e.onPointerUp)),"touch"===t.pointerType&&e.handlerTouchEnd(t),e.dispatchEvent(iE("end")),e.state=-1}}(this),this.onPointerCancel=function(e){return t=>{e.removePointer(t),e.handlerTouchEnd(t)}}(this),this.onMouseWheel=function(e){return t=>{!1===e.enabled||!1===e.enableZoom||-1!==e.state||(t.preventDefault(),t.stopPropagation(),e.dispatchEvent(iE("start")),e.handleMouseWheel(t),e.dispatchEvent(iE("end")))}}(this),this.pan=function(e){let t=new A;return function(i,r){let n=e.domElement;if(e.object instanceof kr){let s=e.object.position;t.copy(s).sub(e.target);let a=t.length();a*=Math.tan(e.object.fov/2*Math.PI/180),e.panLeft(2*i*a/n.clientHeight,e.object.matrix),e.panUp(2*r*a/n.clientHeight,e.object.matrix)}else console.warn("WARNING: VRControls.js encountered an unknown camera type - pan disabled."),e.enablePan=!1}}(this),this.panLeft=function(e){let t=new A;return function(i,r){t.setFromMatrixColumn(r,0),t.multiplyScalar(-i),e.panOffset.add(t)}}(this),this.panUp=function(e){let t=new A;return function(i,r){!0===e.screenSpacePanning?t.setFromMatrixColumn(r,1):(t.setFromMatrixColumn(r,0),t.crossVectors(e.object.up,t)),t.multiplyScalar(i),e.panOffset.add(t)}}(this),this.onKeyDown=e=>{!1===this.enabled||!1===this.enablePan||this.handleKeyDown(e)},this.object=e,this.domElement=t,this.isVRMode=i,this.quat=(new Hr).setFromUnitVectors(this.object.up,new A(0,1,0)),this.domElement&&this.domElement.style&&(this.domElement.style.touchAction="none"),this.domElement.addEventListener("contextmenu",this.onContextMenu),this.domElement.addEventListener("pointerdown",this.onPointerDown),this.domElement.addEventListener("pointercancel",this.onPointerCancel),this.domElement.addEventListener("wheel",this.onMouseWheel,{passive:!1}),this.update()}dispose(){this.domElement.removeEventListener("contextmenu",this.onContextMenu),this.domElement.removeEventListener("pointerdown",this.onPointerDown),this.domElement.removeEventListener("pointercancel",this.onPointerCancel),this.domElement.removeEventListener("wheel",this.onMouseWheel),this.domElement.removeEventListener("pointermove",this.onPointerMove),this.domElement.removeEventListener("pointerup",this.onPointerUp),this.domElementKeyEvents&&this.domElementKeyEvents.removeEventListener("keydown",this.onKeyDown)}addPointer(e){this.pointers.push(e)}removePointer(e){delete this.pointerPositions[e.pointerId];for(let t=0;t0&&this.dollyOut(t),this.update()}handleMouseDownRotate(e){this.rotateStart.set(e.clientX,e.clientY)}handleMouseDownDolly(e){this.dollyStart.set(e.clientX,e.clientY)}handleMouseDownPan(e){this.panStart.set(e.clientX,e.clientY)}handleTouchStartRotate(){if(1===this.pointers.length)this.rotateStart.set(this.pointers[0].pageX,this.pointers[0].pageY);else{let e=.5*(this.pointers[0].pageX+this.pointers[1].pageX),t=.5*(this.pointers[0].pageY+this.pointers[1].pageY);this.rotateStart.set(e,t)}}handleTouchStartDolly(e){if(e.length<2)return;let t=e[0],i=e[1];ph.startDistBetweenFingers=this.getDist([t.pageX,t.pageY],[i.pageX,i.pageY]),ph.movable=!0,ph.scale=1}updateRotate(){let e=this.isVRMode,t=this.sphericalDelta;this.rotateDelta.subVectors(this.rotateEnd,this.rotateStart).multiplyScalar(this.rotateSpeed);let i=this.domElement;e?(t.theta+=2*Math.PI*this.rotateDelta.x/i.clientHeight,t.phi+=2*Math.PI*this.rotateDelta.y/i.clientHeight):(t.theta-=2*Math.PI*this.rotateDelta.x/i.clientHeight,t.phi-=2*Math.PI*this.rotateDelta.y/i.clientHeight),this.rotateStart.copy(this.rotateEnd)}handleMouseMoveRotate(e){this.rotateEnd.set(e.clientX,e.clientY),this.updateRotate()}dollyOut(e){this.object instanceof kr?this.scale/=e:(console.warn("WARNING: VRControls.js encountered an unknown camera type - dolly/zoom disabled."),this.enableZoom=!1)}dollyIn(e){this.object instanceof kr?this.scale*=e:(console.warn("WARNING: VRControls.js encountered an unknown camera type - dolly/zoom disabled."),this.enableZoom=!1)}handleMouseMoveDolly(e){this.dollyEnd.set(e.clientX,e.clientY),this.dollyDelta.subVectors(this.dollyEnd,this.dollyStart);let t=Math.pow(.95,this.zoomSpeed);this.dollyDelta.y>0?this.dollyOut(t):this.dollyIn(t),this.dollyStart.copy(this.dollyEnd)}handleMouseMovePan(e){this.panEnd.set(e.clientX,e.clientY),this.panDelta.subVectors(this.panEnd,this.panStart).multiplyScalar(this.panSpeed),this.pan(this.panDelta.x,this.panDelta.y),this.panStart.copy(this.panEnd)}getSecondPointerPosition(e){let t=e.pointerId===this.pointers[0].pointerId?this.pointers[1]:this.pointers[0];return this.pointerPositions[t.pointerId]}handleTouchMoveRotate(e){if(1==this.pointers.length)this.rotateEnd.set(e.pageX,e.pageY);else{let t=this.getSecondPointerPosition(e),i=.5*(e.pageX+t.x),r=.5*(e.pageY+t.y);this.rotateEnd.set(i,r)}this.updateRotate()}updateFov(e){var t;let i=this.object;if(!(i&&i instanceof kr))return void console.warn("WARNING: VRControls.js encountered an unknown camera type - updateFov disabled.");let r=this.minFov,n=this.maxFov,s=e=>{let t=i.fov+e;t=Math.min(t,n),t=Math.max(t,r),i.fov!==t&&(i.fov=t,i.updateProjectionMatrix(),this.dispatchEvent({type:"change"}))},a=e/20;for(let e=0;e<20;++e)setTimeout((()=>s(a)),5*e);this.autoRotate&&(null==(t=this.controlsHelper)||t.delayAutoRotate())}handleTouchMoveDolly(e){if(!ph.movable||this.pointers.length<2)return;let t=this.getSecondPointerPosition(e),i=[e.pageX,e.pageY],r=[t.x,t.y],n=ph.startDistBetweenFingers,s=this.getDist(i,r);if(!n||!s||Math.abs(n-s)<10)return;let a=s/n;console.log(a);a=Math.min(a,3),a=Math.max(a,1/3);let o=a-ph.scale;if(Math.abs(o)<.05)return;let l=0;l=o>0?10*-o:10*(ph.scale/a-1),this.updateFov(l),ph.scale=a}handleKeyDown(e){let t=!1;switch(e.code){case"ArrowUp":this.pan(0,this.keyPanSpeed),t=!0;break;case"ArrowDown":this.pan(0,-this.keyPanSpeed),t=!0;break;case"ArrowLeft":this.pan(this.keyPanSpeed,0),t=!0;break;case"ArrowRight":this.pan(-this.keyPanSpeed,0),t=!0}t&&(e.preventDefault(),this.update())}listenToKeyEvents(e){e.addEventListener("keydown",this.onKeyDown),this.domElementKeyEvents=e}},w0=class extends Os{constructor(e){super(),this.enable=!0,this.mouseDownPositionX=0,this.mouseDownPositionY=0,this.downClickTime=0,this.upClickTime=0,this.handleClick=e=>{if(!this.enable)return;this.stop(e);let t=this.getBaseEvent(e);this.dispatchEvent("click",t)},this.handlePointerDown=e=>{if(!this.enable)return;this.stop(e);let t,i=this.getBaseEvent(e);this.mouseDownPositionX=i.x,this.mouseDownPositionY=i.y,this.downClickTime=i.timestamp,0===i.button&&this.downClickTime-this.upClickTime<300&&(t&&clearTimeout(t),t=setTimeout((()=>{this.dispatchEvent("dblclick",i)}),300)),this.dispatchEvent("pointerdown",i),"touch"===e.pointerType?this.dispatchEvent("touchstart",i):this.dispatchEvent("mousedown",i)},this.handlePointerMove=e=>{if(!this.enable)return;this.stop(e);let t=this.getBaseEvent(e);(Math.abs(t.x-this.mouseDownPositionX)>5||Math.abs(t.y-this.mouseDownPositionY)>5)&&(this.dispatchEvent("pointermove",t),"touch"===e.pointerType?this.dispatchEvent("touchmove",t):this.dispatchEvent("mousemove",t))},this.handlePointerUp=e=>{if(!this.enable)return;this.stop(e);let t=this.getBaseEvent(e);0===t.button&&(this.upClickTime=t.timestamp),this.dispatchEvent("pointerup",t),"touch"===e.pointerType?this.dispatchEvent("touchend",t):this.dispatchEvent("mouseup",t),this.mouseDownPositionX=-1,this.mouseDownPositionY=-1},this.handlePointerCancel=e=>{this.enable&&(this.stop(e),this.dispatchEvent("pointercancel",this.getBaseEvent(e)))},this.handleMouseWheel=e=>{this.enable&&(this.stop(e),this.dispatchEvent("wheel",this.getBaseEvent(e)))},this.handleContextMenu=e=>{if(this.enable)return this.stop(e),this.dispatchEvent("contextmenu",this.getBaseEvent(e)),!1},this.handlePointerEnter=e=>{this.enable&&(this.stop(e),this.dispatchEvent("pointerenter",this.getBaseEvent(e)))},this.handlePointerLeave=e=>{this.enable&&(this.stop(e),this.dispatchEvent("pointerleave",this.getBaseEvent(e)))},this.handleResize=e=>{this.enable&&(this.stop(e),this.dispatchEvent("resize",this.getBaseEvent(e)))},this.handleKeydown=e=>{this.enable&&this.dispatchEvent("keydown",this.getBaseEvent(e))},this.handleKeyup=e=>{this.enable&&this.dispatchEvent("keyup",this.getBaseEvent(e))},this.style={},this.element=e,this.bindEvents()}setEnable(e){this.enable=e}setCursor(e){this.element.style&&(this.element.style.cursor=e||"default")}bindEvents(){this.element.style.touchAction="none",this.element.style.userSelect="none",this.element.style.webkitUserSelect="none",this.element.addEventListener("click",this.handleClick),this.element.addEventListener("pointerdown",this.handlePointerDown),this.element.addEventListener("pointermove",this.handlePointerMove),this.element.addEventListener("pointerup",this.handlePointerUp),this.element.addEventListener("pointercancel",this.handlePointerCancel),this.element.addEventListener("pointerenter",this.handlePointerEnter),this.element.addEventListener("pointerleave",this.handlePointerLeave),this.element.addEventListener("contextmenu",this.handleContextMenu),this.element.addEventListener("wheel",this.handleMouseWheel),window.addEventListener("resize",this.handleResize),window.addEventListener("keydown",this.handleKeydown),window.addEventListener("keyup",this.handleKeyup)}unBindEvents(){this.element.removeEventListener("pointerdown",this.handlePointerDown),this.element.removeEventListener("pointermove",this.handlePointerMove),this.element.removeEventListener("pointerup",this.handlePointerUp),this.element.removeEventListener("pointerenter",this.handlePointerEnter),this.element.removeEventListener("pointerleave",this.handlePointerLeave),this.element.removeEventListener("contextmenu",this.handleContextMenu),this.element.removeEventListener("wheel",this.handleMouseWheel),window.removeEventListener("resize",this.handleResize),window.removeEventListener("keydown",this.handleKeydown),window.removeEventListener("keyup",this.handleKeyup),this.element.style.touchAction="",this.element.style.userSelect="",this.element.style.webkitUserSelect=""}getBaseEvent(e){let t={x:0,y:0,pageX:0,pageY:0,clientX:0,clientY:0,deltaX:0,deltaY:0,movementX:0,movementY:0,deltaMode:0,pointerId:0,timestamp:0,buttons:0,pointerType:"mouse",altKey:!1,ctrlKey:!1,shiftKey:!1,metaKey:!1};if(t.timestamp=e.timeStamp,_O(e,"clientX"))if(t.altKey=e.altKey,t.ctrlKey=e.ctrlKey,t.shiftKey=e.shiftKey,t.clientX=e.clientX,t.clientY=e.clientY,t.button=e.button,_O(e,"pointerId")){t.pointerType=e.pointerType,t.buttons=e.buttons,t.pageX=e.pageX,t.pageY=e.pageY,t.pointerId=e.pointerId;let i=Ai.getScreenPointByEvent(e,this.element);t.x=i.x,t.y=i.y,t.movementX=e.movementX,t.movementY=e.movementY}else _O(e,"deltaX")&&(t.deltaMode=e.deltaMode,t.deltaX=e.deltaX,t.deltaY=e.deltaY);else _O(e,"code")&&(t.altKey=e.altKey,t.ctrlKey=e.ctrlKey,t.shiftKey=e.shiftKey,t.metaKey=e.metaKey,t.code=e.code);return t}stop(e){e.preventDefault()}getBoundingClientRect(){return this.element.getBoundingClientRect()}};function _O(e,t){return void 0!==e[t]}var Cr={LEFT:1,RIGHT:2,MIDDLE:4},et=Object.freeze({NONE:0,ROTATE:1,TRUCK:2,OFFSET:4,DOLLY:8,ZOOM:16,TOUCH_ROTATE:32,TOUCH_TRUCK:64,TOUCH_OFFSET:128,TOUCH_DOLLY:256,TOUCH_ZOOM:512,TOUCH_DOLLY_TRUCK:1024,TOUCH_DOLLY_OFFSET:2048,TOUCH_DOLLY_ROTATE:4096,TOUCH_ZOOM_TRUCK:8192,TOUCH_ZOOM_OFFSET:16384,TOUCH_ZOOM_ROTATE:32768});function $f(e){return e.isPerspectiveCamera}function dh(e){return e.isOrthographicCamera}var R0=2*Math.PI,pG=Math.PI/2,sE=Math.PI/180;function M0(e,t,i){return Math.max(t,Math.min(i,e))}function In(e,t=1e-5){return Math.abs(e)0==d>u&&(d=u,i.value=(d-u)/s),d}function fG(e,t,i,r,n=1/0,s,a){let o=2/(r=Math.max(1e-4,r)),l=o*s,h=1/(1+l+.48*l*l+.235*l*l*l),u=t.x,c=t.y,p=t.z,d=e.x-u,f=e.y-c,m=e.z-p,g=u,y=c,v=p,T=n*r,x=d*d+f*f+m*m;if(x>T*T){let e=Math.sqrt(x);d=d/e*T,f=f/e*T,m=m/e*T}u=e.x-d,c=e.y-f,p=e.z-m;let b=(i.x+o*d)*s,_=(i.y+o*f)*s,E=(i.z+o*m)*s;i.x=(i.x-o*b)*h,i.y=(i.y-o*_)*h,i.z=(i.z-o*E)*h,a.x=u+(d+b)*h,a.y=c+(f+_)*h,a.z=p+(m+E)*h;let w=g-e.x,S=y-e.y,I=v-e.z;return w*(a.x-g)+S*(a.y-y)+I*(a.z-v)>0&&(a.x=g,a.y=y,a.z=v,i.x=(a.x-g)/s,i.y=(a.y-y)/s,i.z=(a.z-v)/s),a}function SO(e,t){t.set(0,0),e.forEach((e=>{t.x+=e.clientX,t.y+=e.clientY})),t.x/=e.length,t.y/=e.length}function wO(e,t){return!!dh(e)&&(console.warn(`${t} is not supported in OrthographicCamera`),!0)}var Ar,wDe,DO,mG,bo,Nr,an,lE,fh,mh,D0,RDe,MDe,Qc,O_,cE,DDe,gG,CDe,vG,yG,CO,RO=class{constructor(){this._listeners={}}addEventListener(e,t){let i=this._listeners;void 0===i[e]&&(i[e]=[]),-1===i[e].indexOf(t)&&i[e].push(t)}hasEventListener(e,t){let i=this._listeners;return void 0!==i[e]&&-1!==i[e].indexOf(t)}removeEventListener(e,t){let i=this._listeners[e];if(void 0!==i){let e=i.indexOf(t);-1!==e&&i.splice(e,1)}}removeAllEventListeners(e){e?Array.isArray(this._listeners[e])&&(this._listeners[e].length=0):this._listeners={}}dispatchEvent(e){let t=this._listeners[e.type];if(void 0!==t){e.target=this;let i=t.slice(0);for(let t=0,r=i.length;t{},this._enabled=!0,this._state=et.NONE,this._viewport=null,this._dollyControlAmount=0,this._hasRested=!0,this._boundaryEnclosesCamera=!1,this._needsUpdate=!0,this._updatedLastTime=!1,this._elementRect=Ii.isBrowser?new DOMRect:{x:0,y:0,width:0,height:0,left:0,right:0,top:0,bottom:0},this._activePointers=[],this._isUserControllingRotate=!1,this._isUserControllingDolly=!1,this._isUserControllingTruck=!1,this._isUserControllingOffset=!1,this._isUserControllingZoom=!1,this._thetaVelocity={value:0},this._phiVelocity={value:0},this._radiusVelocity={value:0},this._targetVelocity=new Ar.Vector3,this._focalOffsetVelocity=new Ar.Vector3,this._zoomVelocity={value:0},this._truckInternal=(e,t,i)=>{if($f(this._camera)){let r=Nr.copy(this._camera.position).sub(this._target),n=this._camera.getEffectiveFOV()*sE,s=r.length()*Math.tan(.5*n),a=this.truckSpeed*e*s/this._elementRect.height,o=this.truckSpeed*t*s/this._elementRect.height;this.verticalDragToForward?(i?this.setFocalOffset(this._focalOffsetEnd.x+a,this._focalOffsetEnd.y,this._focalOffsetEnd.z,!0):this.truck(a,0,!0),this.forward(-o,!0)):i?this.setFocalOffset(this._focalOffsetEnd.x+a,this._focalOffsetEnd.y+o,this._focalOffsetEnd.z,!0):this.truck(a,o,!0)}else if(dh(this._camera)){let r=this._camera,n=e*(r.right-r.left)/r.zoom/this._elementRect.width,s=t*(r.top-r.bottom)/r.zoom/this._elementRect.height;i?this.setFocalOffset(this._focalOffsetEnd.x+n,this._focalOffsetEnd.y+s,this._focalOffsetEnd.z,!0):this.truck(n,s,!0)}},this._rotateInternal=(e,t)=>{let i=R0*this.azimuthRotateSpeed*e/this._elementRect.height,r=R0*this.polarRotateSpeed*t/this._elementRect.height;this.rotate(i,r,!0)},this._dollyInternal=(e,t,i)=>{let r=Math.pow(.95,-e*this.dollySpeed),n=this._sphericalEnd.radius*r,s=this._sphericalEnd.radius,a=s*(e>=0?-1:1);this.dollyTo(n),this.infinityDolly&&(n{let r=Math.pow(.95,e*this.dollySpeed),n=this._zoomEnd;this.zoomTo(this._zoom*r),this.dollyToCursor&&(this._dollyControlAmount+=this._zoomEnd-n,this._dollyControlCoord.set(t,i))},void 0===Ar&&console.error("camera-controls: `THREE` is undefined. You must first run `CameraControls.install( { THREE: THREE } )`. Check the docs for further information."),this._camera=e,this._yAxisUpSpace=(new Ar.Quaternion).setFromUnitVectors(this._camera.up,DO),this._yAxisUpSpaceInverse=this._yAxisUpSpace.clone().invert(),this._state=et.NONE,this._target=new Ar.Vector3,this._targetEnd=this._target.clone(),this._focalOffset=new Ar.Vector3,this._focalOffsetEnd=this._focalOffset.clone(),this._spherical=(new Ar.Spherical).setFromVector3(Nr.copy(this._camera.position).applyQuaternion(this._yAxisUpSpace)),this._sphericalEnd=this._spherical.clone(),this._zoom=this._camera.zoom,this._zoomEnd=this._zoom,this._nearPlaneCorners=[new Ar.Vector3,new Ar.Vector3,new Ar.Vector3,new Ar.Vector3],this._updateNearPlaneCorners(),this._boundary=new Ar.Box3(new Ar.Vector3(-1/0,-1/0,-1/0),new Ar.Vector3(1/0,1/0,1/0)),this._target0=this._target.clone(),this._position0=this._camera.position.clone(),this._zoom0=this._zoom,this._focalOffset0=this._focalOffset.clone(),this._dollyControlAmount=0,this._dollyControlCoord=new Ar.Vector2,this.mouseButtons={left:et.ROTATE,middle:et.DOLLY,right:et.TRUCK,wheel:$f(this._camera)?et.DOLLY:dh(this._camera)?et.ZOOM:et.NONE},this.touches={one:et.TOUCH_ROTATE,two:$f(this._camera)?et.TOUCH_DOLLY_TRUCK:dh(this._camera)?et.TOUCH_ZOOM_TRUCK:et.NONE,three:et.TOUCH_TRUCK};let i=new Ar.Vector2,r=new Ar.Vector2,n=new Ar.Vector2,s=e=>{if(!this._enabled||!this._domElement)return;let t="mouse"!==e.pointerType?null:(e.buttons&Cr.LEFT)===Cr.LEFT?Cr.LEFT:(e.buttons&Cr.MIDDLE)===Cr.MIDDLE?Cr.MIDDLE:(e.buttons&Cr.RIGHT)===Cr.RIGHT?Cr.RIGHT:null;if(null!==t){let e=this._findPointerByMouseButton(t);e&&this._activePointers.splice(this._activePointers.indexOf(e),1)}let i={pointerId:e.pointerId,clientX:e.clientX,clientY:e.clientY,deltaX:0,deltaY:0,mouseButton:t};this._activePointers.push(i),this._domElement.removeEventListener("pointermove",o),this._domElement.removeEventListener("pointerup",h),this._domElement.addEventListener("pointermove",o),this._domElement.addEventListener("pointerup",h),f(e)},a=e=>{if(!this._enabled||!this._domElement)return;let t=(e.buttons&Cr.LEFT)===Cr.LEFT?Cr.LEFT:(e.buttons&Cr.MIDDLE)===Cr.MIDDLE?Cr.MIDDLE:(e.buttons&Cr.RIGHT)===Cr.RIGHT?Cr.RIGHT:null;if(null!==t){let e=this._findPointerByMouseButton(t);e&&this._activePointers.splice(this._activePointers.indexOf(e),1)}let i={pointerId:0,clientX:e.clientX,clientY:e.clientY,deltaX:0,deltaY:0,mouseButton:(e.buttons&Cr.LEFT)===Cr.LEFT?Cr.LEFT:(e.buttons&Cr.MIDDLE)===Cr.LEFT?Cr.MIDDLE:(e.buttons&Cr.RIGHT)===Cr.LEFT?Cr.RIGHT:null};this._activePointers.push(i),this._domElement.removeEventListener("mousemove",l),this._domElement.removeEventListener("mouseup",u),this._domElement.addEventListener("mousemove",l),this._domElement.addEventListener("mouseup",u),f(e)},o=e=>{let t=e.pointerId,i=this._findPointerById(t);if(i){if(i.clientX=e.clientX,i.clientY=e.clientY,i.deltaX=e.movementX,i.deltaY=e.movementY,"touch"===e.pointerType)switch(this._activePointers.length){case 1:this._state=this.touches.one;break;case 2:this._state=this.touches.two;break;case 3:this._state=this.touches.three}else this._state=0,(e.buttons&Cr.LEFT)===Cr.LEFT&&(this._state=this._state|this.mouseButtons.left),(e.buttons&Cr.MIDDLE)===Cr.MIDDLE&&(this._state=this._state|this.mouseButtons.middle),(e.buttons&Cr.RIGHT)===Cr.RIGHT&&(this._state=this._state|this.mouseButtons.right);m()}},l=e=>{let t=this._findPointerById(0);t&&(t.clientX=e.clientX,t.clientY=e.clientY,t.deltaX=e.movementX,t.deltaY=e.movementY,this._state=0,(e.buttons&Cr.LEFT)===Cr.LEFT&&(this._state=this._state|this.mouseButtons.left),(e.buttons&Cr.MIDDLE)===Cr.MIDDLE&&(this._state=this._state|this.mouseButtons.middle),(e.buttons&Cr.RIGHT)===Cr.RIGHT&&(this._state=this._state|this.mouseButtons.right),m())},h=e=>{let t=e.pointerId,i=this._findPointerById(t);if(i&&this._activePointers.splice(this._activePointers.indexOf(i),1),"touch"===e.pointerType)switch(this._activePointers.length){case 0:this._state=et.NONE;break;case 1:this._state=this.touches.one;break;case 2:this._state=this.touches.two;break;case 3:this._state=this.touches.three}else this._state=et.NONE;g()},u=()=>{let e=this._findPointerById(0);e&&this._activePointers.splice(this._activePointers.indexOf(e),1),this._state=et.NONE,g()},c=-1,p=e=>{if(!this._enabled||this.mouseButtons.wheel===et.NONE)return;if(this.dollyToCursor||this.mouseButtons.wheel===et.ROTATE||this.mouseButtons.wheel===et.TRUCK){let e=performance.now();c-e<1e3&&this._getClientRect(this._elementRect),c=e}let t=PLt?-1:-3,i=1===e.deltaMode?e.deltaY/t:e.deltaY/(10*t),r=this.dollyToCursor?(e.clientX-this._elementRect.x)/this._elementRect.width*2-1:0,n=this.dollyToCursor?(e.clientY-this._elementRect.y)/this._elementRect.height*-2+1:0;switch(this.mouseButtons.wheel){case et.ROTATE:this._rotateInternal(e.deltaX,e.deltaY),this._isUserControllingRotate=!0;break;case et.TRUCK:this._truckInternal(e.deltaX,e.deltaY,!1),this._isUserControllingTruck=!0;break;case et.OFFSET:this._truckInternal(e.deltaX,e.deltaY,!0),this._isUserControllingOffset=!0;break;case et.DOLLY:this._dollyInternal(-i,r,n),this._isUserControllingDolly=!0;break;case et.ZOOM:this._zoomInternal(-i,r,n),this._isUserControllingZoom=!0}this.dispatchEvent({type:"control"})},d=e=>{if(this._domElement&&this._enabled&&this.mouseButtons.right===Zf.ACTION.NONE){let t=e instanceof PointerEvent?e.pointerId:(MouseEvent,0),i=this._findPointerById(t);return i&&this._activePointers.splice(this._activePointers.indexOf(i),1),this._domElement.removeEventListener("pointermove",o),this._domElement.removeEventListener("pointerup",h),this._domElement.removeEventListener("mousemove",l),void this._domElement.removeEventListener("mouseup",u)}},f=e=>{if(this._enabled){if(SO(this._activePointers,bo),this._getClientRect(this._elementRect),i.copy(bo),r.copy(bo),this._activePointers.length>=2){let e=bo.x-this._activePointers[1].clientX,t=bo.y-this._activePointers[1].clientY,i=Math.sqrt(e*e+t*t);n.set(0,i);let s=.5*(this._activePointers[0].clientX+this._activePointers[1].clientX),a=.5*(this._activePointers[0].clientY+this._activePointers[1].clientY);r.set(s,a)}if("pointerType"in e&&"touch"===e.pointerType)switch(this._activePointers.length){case 1:this._state=this.touches.one;break;case 2:this._state=this.touches.two;break;case 3:this._state=this.touches.three}else this._state=0,(e.buttons&Cr.LEFT)===Cr.LEFT&&(this._state=this._state|this.mouseButtons.left),(e.buttons&Cr.MIDDLE)===Cr.MIDDLE&&(this._state=this._state|this.mouseButtons.middle),(e.buttons&Cr.RIGHT)===Cr.RIGHT&&(this._state=this._state|this.mouseButtons.right);((this._state&et.ROTATE)===et.ROTATE||(this._state&et.TOUCH_ROTATE)===et.TOUCH_ROTATE||(this._state&et.TOUCH_DOLLY_ROTATE)===et.TOUCH_DOLLY_ROTATE||(this._state&et.TOUCH_ZOOM_ROTATE)===et.TOUCH_ZOOM_ROTATE)&&(this._sphericalEnd.theta=this._spherical.theta,this._sphericalEnd.phi=this._spherical.phi,this._thetaVelocity.value=0,this._phiVelocity.value=0),((this._state&et.TRUCK)===et.TRUCK||(this._state&et.TOUCH_TRUCK)===et.TOUCH_TRUCK||(this._state&et.TOUCH_DOLLY_TRUCK)===et.TOUCH_DOLLY_TRUCK||(this._state&et.TOUCH_ZOOM_TRUCK)===et.TOUCH_ZOOM_TRUCK)&&(this._targetEnd.copy(this._target),this._targetVelocity.set(0,0,0)),((this._state&et.DOLLY)===et.DOLLY||(this._state&et.TOUCH_DOLLY)===et.TOUCH_DOLLY||(this._state&et.TOUCH_DOLLY_TRUCK)===et.TOUCH_DOLLY_TRUCK||(this._state&et.TOUCH_DOLLY_OFFSET)===et.TOUCH_DOLLY_OFFSET||(this._state&et.TOUCH_DOLLY_ROTATE)===et.TOUCH_DOLLY_ROTATE)&&(this._sphericalEnd.radius=this._spherical.radius,this._radiusVelocity.value=0),((this._state&et.ZOOM)===et.ZOOM||(this._state&et.TOUCH_ZOOM)===et.TOUCH_ZOOM||(this._state&et.TOUCH_ZOOM_TRUCK)===et.TOUCH_ZOOM_TRUCK||(this._state&et.TOUCH_ZOOM_OFFSET)===et.TOUCH_ZOOM_OFFSET||(this._state&et.TOUCH_ZOOM_ROTATE)===et.TOUCH_ZOOM_ROTATE)&&(this._zoomEnd=this._zoom,this._zoomVelocity.value=0),((this._state&et.OFFSET)===et.OFFSET||(this._state&et.TOUCH_OFFSET)===et.TOUCH_OFFSET||(this._state&et.TOUCH_DOLLY_OFFSET)===et.TOUCH_DOLLY_OFFSET||(this._state&et.TOUCH_ZOOM_OFFSET)===et.TOUCH_ZOOM_OFFSET)&&(this._focalOffsetEnd.copy(this._focalOffset),this._focalOffsetVelocity.set(0,0,0)),this.dispatchEvent({type:"controlstart"})}},m=()=>{if(!this._enabled)return;SO(this._activePointers,bo);let e=!!Ii.isBrowser&&(this._domElement&&document.pointerLockElement===this._domElement),t=e?-this._activePointers[0].deltaX:r.x-bo.x,s=e?-this._activePointers[0].deltaY:r.y-bo.y;if(r.copy(bo),((this._state&et.ROTATE)===et.ROTATE||(this._state&et.TOUCH_ROTATE)===et.TOUCH_ROTATE||(this._state&et.TOUCH_DOLLY_ROTATE)===et.TOUCH_DOLLY_ROTATE||(this._state&et.TOUCH_ZOOM_ROTATE)===et.TOUCH_ZOOM_ROTATE)&&(this._rotateInternal(t,s),this._isUserControllingRotate=!0),(this._state&et.DOLLY)===et.DOLLY||(this._state&et.ZOOM)===et.ZOOM){let e=this.dollyToCursor?(i.x-this._elementRect.x)/this._elementRect.width*2-1:0,t=this.dollyToCursor?(i.y-this._elementRect.y)/this._elementRect.height*-2+1:0;(this._state&et.DOLLY)===et.DOLLY?(this._dollyInternal(s*MO,e,t),this._isUserControllingDolly=!0):(this._zoomInternal(s*MO,e,t),this._isUserControllingZoom=!0)}if((this._state&et.TOUCH_DOLLY)===et.TOUCH_DOLLY||(this._state&et.TOUCH_ZOOM)===et.TOUCH_ZOOM||(this._state&et.TOUCH_DOLLY_TRUCK)===et.TOUCH_DOLLY_TRUCK||(this._state&et.TOUCH_ZOOM_TRUCK)===et.TOUCH_ZOOM_TRUCK||(this._state&et.TOUCH_DOLLY_OFFSET)===et.TOUCH_DOLLY_OFFSET||(this._state&et.TOUCH_ZOOM_OFFSET)===et.TOUCH_ZOOM_OFFSET||(this._state&et.TOUCH_DOLLY_ROTATE)===et.TOUCH_DOLLY_ROTATE||(this._state&et.TOUCH_ZOOM_ROTATE)===et.TOUCH_ZOOM_ROTATE){let e=bo.x-this._activePointers[1].clientX,t=bo.y-this._activePointers[1].clientY,i=Math.sqrt(e*e+t*t),s=n.y-i;n.set(0,i);let a=this.dollyToCursor?(r.x-this._elementRect.x)/this._elementRect.width*2-1:0,o=this.dollyToCursor?(r.y-this._elementRect.y)/this._elementRect.height*-2+1:0;(this._state&et.TOUCH_DOLLY)===et.TOUCH_DOLLY||(this._state&et.TOUCH_DOLLY_ROTATE)===et.TOUCH_DOLLY_ROTATE||(this._state&et.TOUCH_DOLLY_TRUCK)===et.TOUCH_DOLLY_TRUCK||(this._state&et.TOUCH_DOLLY_OFFSET)===et.TOUCH_DOLLY_OFFSET?(this._dollyInternal(s*MO,a,o),this._isUserControllingDolly=!0):(this._zoomInternal(s*MO,a,o),this._isUserControllingZoom=!0)}((this._state&et.TRUCK)===et.TRUCK||(this._state&et.TOUCH_TRUCK)===et.TOUCH_TRUCK||(this._state&et.TOUCH_DOLLY_TRUCK)===et.TOUCH_DOLLY_TRUCK||(this._state&et.TOUCH_ZOOM_TRUCK)===et.TOUCH_ZOOM_TRUCK)&&(this._truckInternal(t,s,!1),this._isUserControllingTruck=!0),((this._state&et.OFFSET)===et.OFFSET||(this._state&et.TOUCH_OFFSET)===et.TOUCH_OFFSET||(this._state&et.TOUCH_DOLLY_OFFSET)===et.TOUCH_DOLLY_OFFSET||(this._state&et.TOUCH_ZOOM_OFFSET)===et.TOUCH_ZOOM_OFFSET)&&(this._truckInternal(t,s,!0),this._isUserControllingOffset=!0),this.dispatchEvent({type:"control"})},g=()=>{SO(this._activePointers,bo),r.copy(bo),0===this._activePointers.length&&this._domElement&&(this._domElement.removeEventListener("pointermove",o),this._domElement.removeEventListener("mousemove",l),this._domElement.removeEventListener("pointerup",h),this._domElement.removeEventListener("mouseup",u),this.dispatchEvent({type:"controlend"}))};this._addAllEventListeners=e=>{this._domElement=e,this._domElement.style.touchAction="none",this._domElement.style.userSelect="none",this._domElement.style.webkitUserSelect="none",this._domElement.addEventListener("pointerdown",s),NLt&&this._domElement.addEventListener("mousedown",a),this._domElement.addEventListener("pointercancel",h),this._domElement.addEventListener("wheel",p),this._domElement.addEventListener("contextmenu",d)},this._removeAllEventListeners=()=>{this._domElement&&(this._domElement.style.touchAction="",this._domElement.style.userSelect="",this._domElement.style.webkitUserSelect="",this._domElement.removeEventListener("pointerdown",s),this._domElement.removeEventListener("mousedown",a),this._domElement.removeEventListener("pointercancel",h),this._domElement.removeEventListener("wheel",p),this._domElement.removeEventListener("contextmenu",d),this._domElement.removeEventListener("pointermove",o),this._domElement.removeEventListener("mousemove",l),this._domElement.removeEventListener("pointerup",h),this._domElement.removeEventListener("mouseup",u))},this.cancel=()=>{this._state!==et.NONE&&(this._state=et.NONE,this._activePointers.length=0,g())},t&&this.connect(t),this.update(0)}static install(e){Ar=e.THREE,wDe=Object.freeze(new Ar.Vector3(0,0,0)),DO=Object.freeze(new Ar.Vector3(0,1,0)),mG=Object.freeze(new Ar.Vector3(0,0,1)),bo=new Ar.Vector2,Nr=new Ar.Vector3,an=new Ar.Vector3,lE=new Ar.Vector3,fh=new Ar.Vector3,mh=new Ar.Vector3,D0=new Ar.Vector3,RDe=new Ar.Vector3,MDe=new Ar.Vector3,Qc=new Ar.Spherical,O_=new Ar.Spherical,cE=new Ar.Box3,DDe=new Ar.Box3,gG=new Ar.Sphere,CDe=new Ar.Quaternion,vG=new Ar.Quaternion,yG=new Ar.Matrix4,CO=new Ar.Raycaster}static get ACTION(){return et}get camera(){return this._camera}set camera(e){this._camera=e,this.updateCameraUp(),this._camera.updateProjectionMatrix(),this._updateNearPlaneCorners(),this._needsUpdate=!0}get enabled(){return this._enabled}set enabled(e){this._enabled=e,this._domElement&&(e?(this._domElement.style.touchAction="none",this._domElement.style.userSelect="none",this._domElement.style.webkitUserSelect="none"):(this.cancel(),this._domElement.style.touchAction="",this._domElement.style.userSelect="",this._domElement.style.webkitUserSelect=""))}get active(){return!this._hasRested}get currentAction(){return this._state}get distance(){return this._spherical.radius}set distance(e){this._spherical.radius===e&&this._sphericalEnd.radius===e||(this._spherical.radius=e,this._sphericalEnd.radius=e,this._needsUpdate=!0)}get azimuthAngle(){return this._spherical.theta}set azimuthAngle(e){this._spherical.theta===e&&this._sphericalEnd.theta===e||(this._spherical.theta=e,this._sphericalEnd.theta=e,this._needsUpdate=!0)}get polarAngle(){return this._spherical.phi}set polarAngle(e){this._spherical.phi===e&&this._sphericalEnd.phi===e||(this._spherical.phi=e,this._sphericalEnd.phi=e,this._needsUpdate=!0)}get boundaryEnclosesCamera(){return this._boundaryEnclosesCamera}set boundaryEnclosesCamera(e){this._boundaryEnclosesCamera=e,this._needsUpdate=!0}addEventListener(e,t){super.addEventListener(e,t)}removeEventListener(e,t){super.removeEventListener(e,t)}rotate(e,t,i=!1){return this.rotateTo(this._sphericalEnd.theta+e,this._sphericalEnd.phi+t,i)}rotateAzimuthTo(e,t=!1){return this.rotateTo(e,this._sphericalEnd.phi,t)}rotatePolarTo(e,t=!1){return this.rotateTo(this._sphericalEnd.theta,e,t)}rotateTo(e,t,i=!1){this._isUserControllingRotate=!1;let r=M0(e,this.minAzimuthAngle,this.maxAzimuthAngle),n=M0(t,this.minPolarAngle,this.maxPolarAngle);this._sphericalEnd.theta=r,this._sphericalEnd.phi=n,this._sphericalEnd.makeSafe(),this._needsUpdate=!0,i||(this._spherical.theta=this._sphericalEnd.theta,this._spherical.phi=this._sphericalEnd.phi);let s=!i||_n(this._spherical.theta,this._sphericalEnd.theta,this.restThreshold)&&_n(this._spherical.phi,this._sphericalEnd.phi,this.restThreshold);return this._createOnRestPromise(s)}dolly(e,t=!1){return this.dollyTo(this._sphericalEnd.radius-e,t)}dollyTo(e,t=!1){this._isUserControllingDolly=!1;let i=this._sphericalEnd.radius,r=M0(e,this.minDistance,this.maxDistance);if(this.colliderMeshes.length>=1){let e=this._collisionTest(),t=_n(e,this._spherical.radius);if(!(i>r)&&t)return Promise.resolve();this._sphericalEnd.radius=Math.min(r,e)}else this._sphericalEnd.radius=r;this._needsUpdate=!0,t||(this._spherical.radius=this._sphericalEnd.radius);let n=!t||_n(this._spherical.radius,this._sphericalEnd.radius,this.restThreshold);return this._createOnRestPromise(n)}zoom(e,t=!1){return this.zoomTo(this._zoomEnd+e,t)}zoomTo(e,t=!1){this._isUserControllingZoom=!1,this._zoomEnd=M0(e,this.minZoom,this.maxZoom),this._needsUpdate=!0,t||(this._zoom=this._zoomEnd);let i=!t||_n(this._zoom,this._zoomEnd,this.restThreshold);return this._createOnRestPromise(i)}pan(e,t,i=!1){return console.warn("`pan` has been renamed to `truck`"),this.truck(e,t,i)}truck(e,t,i=!1){this._camera.updateMatrix(),fh.setFromMatrixColumn(this._camera.matrix,0),mh.setFromMatrixColumn(this._camera.matrix,1),fh.multiplyScalar(e),mh.multiplyScalar(-t);let r=Nr.copy(fh).add(mh),n=an.copy(this._targetEnd).add(r);return this.moveTo(n.x,n.y,n.z,i)}forward(e,t=!1){Nr.setFromMatrixColumn(this._camera.matrix,0),Nr.crossVectors(this._camera.up,Nr),Nr.multiplyScalar(e);let i=an.copy(this._targetEnd).add(Nr);return this.moveTo(i.x,i.y,i.z,t)}elevate(e,t=!1){return Nr.copy(this._camera.up).multiplyScalar(e),this.moveTo(this._targetEnd.x+Nr.x,this._targetEnd.y+Nr.y,this._targetEnd.z+Nr.z,t)}moveTo(e,t,i,r=!1){this._isUserControllingTruck=!1;let n=Nr.set(e,t,i).sub(this._targetEnd);this._encloseToBoundary(this._targetEnd,n,this.boundaryFriction),this._needsUpdate=!0,r||this._target.copy(this._targetEnd);let s=!r||_n(this._target.x,this._targetEnd.x,this.restThreshold)&&_n(this._target.y,this._targetEnd.y,this.restThreshold)&&_n(this._target.z,this._targetEnd.z,this.restThreshold);return this._createOnRestPromise(s)}lookInDirectionOf(e,t,i,r=!1){let n=Nr.set(e,t,i).sub(this._targetEnd).normalize().multiplyScalar(-this._sphericalEnd.radius);return this.setPosition(n.x,n.y,n.z,r)}fitToBox(e,t,{cover:i=!1,paddingLeft:r=0,paddingRight:n=0,paddingBottom:s=0,paddingTop:a=0}={}){let o=[],l=e.isBox3?cE.copy(e):cE.setFromObject(e);l.isEmpty()&&(console.warn("camera-controls: fitTo() cannot be used with an empty box. Aborting"),Promise.resolve());let h=dG(this._sphericalEnd.theta,pG),u=dG(this._sphericalEnd.phi,pG);o.push(this.rotateTo(h,u,t));let c=Nr.setFromSpherical(this._sphericalEnd).normalize(),p=CDe.setFromUnitVectors(c,mG),d=_n(Math.abs(c.y),1);d&&p.multiply(vG.setFromAxisAngle(DO,h)),p.multiply(this._yAxisUpSpaceInverse);let f=DDe.makeEmpty();an.copy(l.min).applyQuaternion(p),f.expandByPoint(an),an.copy(l.min).setX(l.max.x).applyQuaternion(p),f.expandByPoint(an),an.copy(l.min).setY(l.max.y).applyQuaternion(p),f.expandByPoint(an),an.copy(l.max).setZ(l.min.z).applyQuaternion(p),f.expandByPoint(an),an.copy(l.min).setZ(l.max.z).applyQuaternion(p),f.expandByPoint(an),an.copy(l.max).setY(l.min.y).applyQuaternion(p),f.expandByPoint(an),an.copy(l.max).setX(l.min.x).applyQuaternion(p),f.expandByPoint(an),an.copy(l.max).applyQuaternion(p),f.expandByPoint(an),f.min.x-=r,f.min.y-=s,f.max.x+=n,f.max.y+=a,p.setFromUnitVectors(mG,c),d&&p.premultiply(vG.invert()),p.premultiply(this._yAxisUpSpace);let m=f.getSize(Nr),g=f.getCenter(an).applyQuaternion(p);if($f(this._camera)){let e=this.getDistanceToFitBox(m.x,m.y,m.z,i);o.push(this.moveTo(g.x,g.y,g.z,t)),o.push(this.dollyTo(e,t)),o.push(this.setFocalOffset(0,0,0,t))}else if(dh(this._camera)){let e=this._camera,r=e.right-e.left,n=e.top-e.bottom,s=i?Math.max(r/m.x,n/m.y):Math.min(r/m.x,n/m.y);o.push(this.moveTo(g.x,g.y,g.z,t)),o.push(this.zoomTo(s,t)),o.push(this.setFocalOffset(0,0,0,t))}return Promise.all(o)}fitToSphere(e,t){let i=[],r=e instanceof Ar.Sphere?gG.copy(e):Zf.createBoundingSphere(e,gG);if(i.push(this.moveTo(r.center.x,r.center.y,r.center.z,t)),$f(this._camera)){let e=this.getDistanceToFitSphere(r.radius);i.push(this.dollyTo(e,t))}else if(dh(this._camera)){let e=this._camera.right-this._camera.left,n=this._camera.top-this._camera.bottom,s=2*r.radius,a=Math.min(e/s,n/s);i.push(this.zoomTo(a,t))}return i.push(this.setFocalOffset(0,0,0,t)),Promise.all(i)}setLookAt(e,t,i,r,n,s,a=!1){this._isUserControllingRotate=!1,this._isUserControllingDolly=!1,this._isUserControllingTruck=!1;let o=an.set(r,n,s),l=Nr.set(e,t,i);this._targetEnd.copy(o),this._sphericalEnd.setFromVector3(l.sub(o).applyQuaternion(this._yAxisUpSpace)),this.normalizeRotations(),this._needsUpdate=!0,a||(this._target.copy(this._targetEnd),this._spherical.copy(this._sphericalEnd));let h=!a||_n(this._target.x,this._targetEnd.x,this.restThreshold)&&_n(this._target.y,this._targetEnd.y,this.restThreshold)&&_n(this._target.z,this._targetEnd.z,this.restThreshold)&&_n(this._spherical.theta,this._sphericalEnd.theta,this.restThreshold)&&_n(this._spherical.phi,this._sphericalEnd.phi,this.restThreshold)&&_n(this._spherical.radius,this._sphericalEnd.radius,this.restThreshold);return this._createOnRestPromise(h)}lerpLookAt(e,t,i,r,n,s,a,o,l,h,u,c,p,d=!1){this._isUserControllingRotate=!1,this._isUserControllingDolly=!1,this._isUserControllingTruck=!1;let f=Nr.set(r,n,s),m=an.set(e,t,i);Qc.setFromVector3(m.sub(f).applyQuaternion(this._yAxisUpSpace));let g=lE.set(h,u,c),y=an.set(a,o,l);O_.setFromVector3(y.sub(g).applyQuaternion(this._yAxisUpSpace)),this._targetEnd.copy(f.lerp(g,p));let v=O_.theta-Qc.theta,T=O_.phi-Qc.phi,x=O_.radius-Qc.radius;this._sphericalEnd.set(Qc.radius+x*p,Qc.phi+T*p,Qc.theta+v*p),this.normalizeRotations(),this._needsUpdate=!0,d||(this._target.copy(this._targetEnd),this._spherical.copy(this._sphericalEnd));let b=!d||_n(this._target.x,this._targetEnd.x,this.restThreshold)&&_n(this._target.y,this._targetEnd.y,this.restThreshold)&&_n(this._target.z,this._targetEnd.z,this.restThreshold)&&_n(this._spherical.theta,this._sphericalEnd.theta,this.restThreshold)&&_n(this._spherical.phi,this._sphericalEnd.phi,this.restThreshold)&&_n(this._spherical.radius,this._sphericalEnd.radius,this.restThreshold);return this._createOnRestPromise(b)}setPosition(e,t,i,r=!1){return this.setLookAt(e,t,i,this._targetEnd.x,this._targetEnd.y,this._targetEnd.z,r)}setTarget(e,t,i,r=!1){let n=this.getPosition(Nr),s=this.setLookAt(n.x,n.y,n.z,e,t,i,r);return this._sphericalEnd.phi=M0(this.polarAngle,this.minPolarAngle,this.maxPolarAngle),s}setFocalOffset(e,t,i,r=!1){this._isUserControllingOffset=!1,this._focalOffsetEnd.set(e,t,i),this._needsUpdate=!0,r||this._focalOffset.copy(this._focalOffsetEnd);let n=!r||_n(this._focalOffset.x,this._focalOffsetEnd.x,this.restThreshold)&&_n(this._focalOffset.y,this._focalOffsetEnd.y,this.restThreshold)&&_n(this._focalOffset.z,this._focalOffsetEnd.z,this.restThreshold);return this._createOnRestPromise(n)}setOrbitPoint(e,t,i){this._camera.updateMatrixWorld(),fh.setFromMatrixColumn(this._camera.matrixWorldInverse,0),mh.setFromMatrixColumn(this._camera.matrixWorldInverse,1),D0.setFromMatrixColumn(this._camera.matrixWorldInverse,2);let r=Nr.set(e,t,i),n=r.distanceTo(this._camera.position),s=r.sub(this._camera.position);fh.multiplyScalar(s.x),mh.multiplyScalar(s.y),D0.multiplyScalar(s.z),Nr.copy(fh).add(mh).add(D0),Nr.z=Nr.z+n,this.dollyTo(n,!1),this.setFocalOffset(-Nr.x,Nr.y,-Nr.z,!1),this.moveTo(e,t,i,!1)}setBoundary(e){if(!e)return this._boundary.min.set(-1/0,-1/0,-1/0),this._boundary.max.set(1/0,1/0,1/0),void(this._needsUpdate=!0);this._boundary.copy(e),this._boundary.clampPoint(this._targetEnd,this._targetEnd),this._needsUpdate=!0}setViewport(e,t,i,r){null!==e?(this._viewport=this._viewport||new Ar.Vector4,"number"==typeof e?this._viewport.set(e,t,i,r):this._viewport.copy(e)):this._viewport=null}getDistanceToFitBox(e,t,i,r=!1){if(wO(this._camera,"getDistanceToFitBox"))return this._spherical.radius;let n=e/t,s=this._camera.getEffectiveFOV()*sE,a=this._camera.aspect;return.5*((r?n>a:nt.pointerId===e))}_findPointerByMouseButton(e){return this._activePointers.find((t=>t.mouseButton===e))}_encloseToBoundary(e,t,i){let r=t.lengthSq();if(0===r)return e;let n=an.copy(t).add(e),s=this._boundary.clampPoint(n,lE).sub(n),a=s.lengthSq();if(0===a)return e.add(t);if(a===r)return e;if(0===i)return e.add(t).add(s);{let r=1+i*a/t.dot(s);return e.add(an.copy(t).multiplyScalar(r)).add(s.multiplyScalar(1-i))}}_updateNearPlaneCorners(){if($f(this._camera)){let e=this._camera,t=e.near,i=e.getEffectiveFOV()*sE,r=Math.tan(.5*i)*t,n=r*e.aspect;this._nearPlaneCorners[0].set(-n,-r,0),this._nearPlaneCorners[1].set(n,-r,0),this._nearPlaneCorners[2].set(n,r,0),this._nearPlaneCorners[3].set(-n,r,0)}else if(dh(this._camera)){let e=this._camera,t=1/e.zoom,i=e.left*t,r=e.right*t,n=e.top*t,s=e.bottom*t;this._nearPlaneCorners[0].set(i,n,0),this._nearPlaneCorners[1].set(r,n,0),this._nearPlaneCorners[2].set(r,s,0),this._nearPlaneCorners[3].set(i,s,0)}}_collisionTest(){let e=1/0;if(!(this.colliderMeshes.length>=1)||wO(this._camera,"_collisionTest"))return e;let t=Nr.setFromSpherical(this._spherical).divideScalar(this._spherical.radius);yG.lookAt(wDe,t,this._camera.up);for(let i=0;i<4;i++){let r=an.copy(this._nearPlaneCorners[i]);r.applyMatrix4(yG);let n=lE.addVectors(this._target,r);CO.set(n,t),CO.far=this._spherical.radius+1;let s=CO.intersectObjects(this.colliderMeshes);0!==s.length&&s[0].distance{let t=()=>{this.removeEventListener("rest",t),e()};this.addEventListener("rest",t)})))}_addAllEventListeners(e){}_removeAllEventListeners(){}get dampingFactor(){return console.warn(".dampingFactor has been deprecated. use smoothTime (in seconds) instead."),0}set dampingFactor(e){console.warn(".dampingFactor has been deprecated. use smoothTime (in seconds) instead.")}get draggingDampingFactor(){return console.warn(".draggingDampingFactor has been deprecated. use draggingSmoothTime (in seconds) instead."),0}set draggingDampingFactor(e){console.warn(".draggingDampingFactor has been deprecated. use draggingSmoothTime (in seconds) instead.")}static createBoundingSphere(e,t=new Ar.Sphere){let i=t,r=i.center;cE.makeEmpty(),e.traverseVisible((e=>{e.isMesh&&cE.expandByObject(e)})),cE.getCenter(r);let n=0;return e.traverseVisible((e=>{if(!e.isMesh)return;let t=e,i=t.geometry.clone();if(i.applyMatrix4(t.matrixWorld),i.isBufferGeometry){let e=i.attributes.position;for(let t=0,i=e.count;t{if(this.enabled){switch(e.code){case this.keys.up:e.ctrlKey||e.metaKey||e.shiftKey?(this._rotateInternal(0,1),this._isUserControllingRotate=!0):(this._truckInternal(0,this.keyTruckSpeed,!1),this._isUserControllingTruck=!0);break;case this.keys.bottom:e.ctrlKey||e.metaKey||e.shiftKey?(this._rotateInternal(0,-1),this._isUserControllingRotate=!0):(this._truckInternal(0,-this.keyTruckSpeed,!1),this._isUserControllingTruck=!0);break;case this.keys.left:e.ctrlKey||e.metaKey||e.shiftKey?(this._rotateInternal(1,0),this._isUserControllingRotate=!0):(this._truckInternal(this.keyTruckSpeed,0,!1),this._isUserControllingTruck=!0);break;case this.keys.right:e.ctrlKey||e.metaKey||e.shiftKey?(this._rotateInternal(-1,0),this._isUserControllingRotate=!0):(this._truckInternal(-this.keyTruckSpeed,0,!1),this._isUserControllingTruck=!0)}this.dispatchEvent({type:"control"})}},this.onKeyUp=e=>{this.dispatchEvent({type:"controlend"})},this.dollySpeedBackup=this.dollySpeed,this.azimuthRotateSpeedBackup=this.azimuthRotateSpeed,this.polarRotateSpeedBackup=this.polarRotateSpeed,this.truckSpeedBackup=this.truckSpeed}get enableZoom(){return!!this.dollySpeed}set enableZoom(e){e?this.dollySpeed=this.dollySpeedBackup:(this.dollySpeedBackup=this.dollySpeed,this.dollySpeed=0)}get enableRotate(){return!!this.azimuthRotateSpeed||!!this.polarRotateSpeed}set enableRotate(e){e?(this.azimuthRotateSpeed=this.azimuthRotateSpeedBackup,this.polarRotateSpeed=this.polarRotateSpeedBackup):(this.azimuthRotateSpeedBackup=this.azimuthRotateSpeed,this.polarRotateSpeedBackup=this.polarRotateSpeed,this.azimuthRotateSpeed=0,this.polarRotateSpeed=0)}get enableTruck(){return!!this.truckSpeed}set enableTruck(e){e?this.truckSpeed=this.truckSpeedBackup:(this.truckSpeedBackup=this.truckSpeed,this.truckSpeed=0)}listenToKeyEvents(){var e,t;null==(e=this._domElement)||e.addEventListener("keydown",this.onKeyDown),null==(t=this._domElement)||t.addEventListener("keyup",this.onKeyUp)}stopListenToKeyEvents(){var e,t;null==(e=this._domElement)||e.removeEventListener("keydown",this.onKeyDown),null==(t=this._domElement)||t.removeEventListener("keyup",this.onKeyUp)}dispose(){super.dispose(),this.stopListenToKeyEvents()}},ADe=class{constructor(e,t,i,r,n){this.targetPixelHeight=100,this.canvasHeight=800,this.camera=e,this.object=i,this.targetPixelHeight=r,this.canvasHeight=n,this.adjustSize(),t.addEventListener("update",(()=>{this.adjustSize()}))}adjustSize(){let e=new Dt;if(this.object.updateMatrix(),e.expandByObject(this.object),!e)return;let t=e.max.x-e.min.x,i=this.camera.position.distanceTo(this.object.position),r=LLt(t,i,this.canvasHeight);if(Math.abs(r-this.targetPixelHeight)<5)return;let n=this.object.scale.x;n*=this.targetPixelHeight/r,this.object.scale.set(n,n,n),this.object.updateMatrix()}},LLt=(e,t,i=800,r=45)=>{let n=r*(Math.PI/180);return i*(e/(2*Math.tan(n/2)*t))},nl=class extends Na{constructor(e){super(_t.guid()),this.needsFrustumCulled=!1,this.snapType="Dot",this.snapLineVisible=!1,this.snapType=e,this.drawSnapFunctions={Dot:this.drawDot.bind(this),Square:this.drawSquare.bind(this),Cross:this.drawCross.bind(this),Triangle:this.drawTriangle.bind(this),Perpendicular:this.drawPerpendicular.bind(this)}}setSnapLineVisible(e){this.snapLineVisible=e}draw(e,t){this.osnapInfo&&(this.snapLineVisible&&this.drawSnapLine(e,t),e.save(),e.fillStyle=nl.FILL_COLOR,e.strokeStyle=nl.LINE_COLOR,e.lineWidth=nl.LINE_WIDTH,e.beginPath(),this.drawSnapFunctions[this.snapType](e,t),AO&&this.drawDebug(e,t),e.closePath(),e.fill(),e.stroke(),e.restore())}drawDebug(e,t){null==AO||AO.forEach((i=>{let r=this.transToScreenCoord(i.start,t),n=this.transToScreenCoord(i.end,t);e.moveTo(r.x,r.y),e.lineTo(n.x,n.y)}))}drawSelect(e,t){}isPointInPath(e){return!1}drawSnapLine(e,t){e.save(),e.strokeStyle=nl.SNAP_LINE_COLOR,e.lineWidth=nl.LINE_WIDTH;let i=this.transToScreenCoord(this.osnapInfo.line.start,t),r=this.transToScreenCoord(this.osnapInfo.line.end,t);e.moveTo(i.x,i.y),e.lineTo(r.x,r.y),e.stroke(),e.restore()}drawDot(e,t){let i=this.transToScreenCoord(this.osnapInfo.point,t);e.arc(i.x,i.y,nl.SNAP_ICON_SIZE/3,0,2*Math.PI)}drawSquare(e,t){let i=this.transToScreenCoord(this.osnapInfo.point,t),r=nl.SNAP_ICON_SIZE/1.2,n=nl.SNAP_ICON_SIZE/1.2;e.rect(i.x-r/2,i.y-n/2,r,n)}drawTriangle(e,t){let i=this.transToScreenCoord(this.osnapInfo.point,t),r=nl.SNAP_ICON_SIZE/1.2/2,n=new le(0,-r).add(i),s=new le(-.87*r,r/2).add(i),a=new le(.87*r,r/2).add(i);e.moveTo(n.x,n.y),e.lineTo(s.x,s.y),e.lineTo(a.x,a.y),e.closePath()}drawCross(e,t){let i=this.transToScreenCoord(this.osnapInfo.point,t),r=nl.SNAP_ICON_SIZE/1.2/2,n=new le(-r,-r).add(i),s=new le(r,r).add(i),a=new le(r,-r).add(i),o=new le(-r,r).add(i);e.moveTo(n.x,n.y),e.lineTo(s.x,s.y),e.moveTo(a.x,a.y),e.lineTo(o.x,o.y)}drawPerpendicular(e,t){let i=this.transToScreenCoord(this.osnapInfo.point,t),r=nl.SNAP_ICON_SIZE/1.2/2;[new le(0,0).add(i),new le(-r,0).add(i),new le(0,0).add(i),new le(0,r).add(i),new le(r,r).add(i),new le(-r,r).add(i),new le(-r,r).add(i),new le(-r,-r).add(i)].forEach(((t,i)=>{0===i?e.moveTo(t.x,t.y):e.lineTo(t.x,t.y)}))}update(e){this.osnapInfo=e}getClassType(){return"SnapDrawable"}},sl=nl;sl.LINE_COLOR="rgba(255, 240, 0, 0.8)",sl.FILL_COLOR="rgba(135, 206, 250, 0.5)",sl.SNAP_LINE_COLOR="rgba(255, 240, 0, 0.3)",sl.LINE_WIDTH=2.5,sl.SNAP_ICON_SIZE=10,wr._registerDrawableClass(sl);var FLt=(e=>(e[e.None=0]="None",e[e.PointOnLine=1]="PointOnLine",e[e.StartPoint=2]="StartPoint",e[e.EndPoint=4]="EndPoint",e[e.MiddlePoint=8]="MiddlePoint",e[e.FootOfPerpendicular=16]="FootOfPerpendicular",e[e.Intersection=32]="Intersection",e))(FLt||{}),HLt=1e-5,OO=class{constructor(e){var t;this.drawableList=new $u("snap"),this.markers={},this.activeOSnapType=0,this.snapTolerance=1,this.overlayRender=e,null==(t=this.overlayRender)||t.addDrawableList(this.drawableList),this.initOSnapMarkers()}initOSnapMarkers(){let e=new sl("Square"),t=new sl("Triangle"),i=new sl("Dot"),r=new sl("Cross"),n=new sl("Perpendicular");this.markers[2]=e,this.markers[4]=e,this.markers[8]=t,this.markers[1]=i,this.markers[32]=r,this.markers[16]=n,Object.values(this.markers).forEach((e=>{e.visible=!1,this.drawableList.addDrawable(e)}))}updateSnapTolerance(e){this.snapTolerance=e}getSnapTolerance(){return this.snapTolerance}getMarker(e){return this.markers[e]}deactivate(){this.activeOSnapType&&(this.markers[this.activeOSnapType].visible=!1),this.activeOSnapType=0}destroy(){}handleSnap(e,t,i,r){if(null==t||!t.length)return void this.activateMarker(0);let n=this.getInteractionLines(e,t);if(n){let t=this.getSnapInfo(e,n,r);return t&&0!==t.type?(this.activateMarker(t.type,i,t),t.point):void this.activateMarker(0)}this.activateMarker(0)}activateMarker(e,t=!1,i){var r;this.activeOSnapType&&(this.markers[this.activeOSnapType].visible=!1),this.activeOSnapType=e;let n=this.markers[e];n&&i&&(n.setSnapLineVisible(t),n.update(i),n.visible=!0),null==(r=this.overlayRender)||r.render()}getFootOfPerpendicular(e,t,i=HLt){let{start:r,end:n}=t,s=r.x-n.x,a=r.y-n.y,o=r.z-n.z;if(r.distanceTo(n)t.type-e.type)),n[0]}},TG=kn($l(),1),gh=class{constructor(e,t,i){this.follow=e=>{let{x:t,y:i}=Ai.getScreenPointByEvent(e,this.parentNode);this.node.style.left=t+15+"px",this.node.style.top=i-30+"px"},this.show=()=>this.node.hasAttribute("hidden")&&this.node.removeAttribute("hidden"),this.hide=()=>!this.node.hasAttribute("hidden")&&this.node.setAttribute("hidden",""),this.destroy=()=>{this.target?this.target.removeEventListener(wf,this.follow):document.removeEventListener(wf,this.follow),this.parentNode.removeChild(this.node)},this.node=document.createElement("div"),this.node.id=e,t&&this.node.append(t),this.childNode=document.createElement("div"),this.target=null==i?void 0:i.target,this.parentNode=(null==i?void 0:i.parentNode)||document.body,null!=i&&i.followPointer&&(this.node.classList.add("follow-tooltip"),this.target?this.target.addEventListener(wf,this.follow):document.addEventListener(wf,this.follow)),this.parentNode.appendChild(this.node),(null==i||!i.showOnCreate)&&this.node.setAttribute("hidden","")}setContent(e){this.node.textContent&&(this.node.textContent=null),(0,TG.forEach)(this.node.children,(e=>{this.node.removeChild(e)})),this.node.append(e),this.node.appendChild(this.childNode)}updateChildContent(e){this.childNode.textContent&&(this.childNode.textContent=null),(0,TG.forEach)(this.childNode.children,(e=>{this.childNode.removeChild(e)})),this.childNode.append(e)}},PO=class{constructor(e){this.mouseDown=!1,this.mouseMove=!1,this.mouseDownPositionX=-1,this.mouseDownPositionY=-1,this.tempEnableRotate=!1,this.actived=!1,this.isResolvedOrRejected=!1,this.mousedown=e=>{var t,i;if(0===e.button){this.mouseDown=!0;let r=new le(e.x,e.y);this.mouseDownPositionX=r.x,this.mouseDownPositionY=r.y,null==(t=this.tooltip)||t.hide(),null==(i=this.tooltip)||i.destroy(),this.tooltip=void 0}},this.mousemove=e=>{if(!this.mouseDown)return;let t=new le(e.x,e.y);if(this.mouseDownPositionX>=0&&this.mouseDownPositionY>=0&&(Math.abs(t.x-this.mouseDownPositionX)>=5||Math.abs(t.y-this.mouseDownPositionY)>=5)){this.mouseMove=!0;let e=new le(Math.min(this.mouseDownPositionX,t.x),Math.min(this.mouseDownPositionY,t.y)),i=new le(Math.max(this.mouseDownPositionX,t.x),Math.max(this.mouseDownPositionY,t.y));this.drawRect(e,i)}},this.mouseup=e=>{if(this.mouseDown&&this.mouseMove){let t=new le(e.x,e.y),i=new le(Math.min(this.mouseDownPositionX,t.x),Math.min(this.mouseDownPositionY,t.y)),r=new le(Math.max(this.mouseDownPositionX,t.x),Math.max(this.mouseDownPositionY,t.y)),n=new ns(i,r);this.deactivate(),this.setRectDomVisible(!1),this.resolve&&(this.resolve(n),this.isResolvedOrRejected=!0)}this.mouseDown=!1,this.mouseMove=!1,this.mouseDownPositionX=-1,this.mouseDownPositionY=-1},this.viewer=e,this.input=e.getInputManager()}get viewerContainer(){return this.viewer.viewerContainer}isActived(){return this.actived}activate(){var e;if(this.isActived())return void(this.reject&&(this.reject("BoxSelectHelper is already actived!"),this.isResolvedOrRejected=!0));this.actived=!0,this.input.addEventListener("pointerdown",this.mousedown),this.input.addEventListener("pointermove",this.mousemove),this.input.addEventListener("pointerup",this.mouseup);let t=this.viewer.controls;this.tempKey=t.mouseButtons.left,this.tempEnableRotate=t.enableRotate,t.mouseButtons.left=et.NONE,t.enableRotate=!1;let i=this.viewer.translate;if(i){this.tooltip=new gh("box-select-tooltip",i("Tooltip.boxSelect"),{followPointer:!0,showOnCreate:!0,parentNode:this.viewer.widgetContainer,target:this.viewerContainer});let t=document.getElementById("box-select-tooltip");t&&(t.style.pointerEvents="none");let r=i("Tooltip.boxSelect");r&&this.tooltip&&(null==(e=this.tooltip)||e.setContent(r))}}deactivate(){var e,t;this.actived=!1,this.input.removeEventListener("pointerdown",this.mousedown),this.input.removeEventListener("pointermove",this.mousemove),this.input.removeEventListener("pointerup",this.mouseup),null==(e=this.tooltip)||e.hide(),null==(t=this.tooltip)||t.destroy(),this.tooltip=void 0,this.viewer.controls.mouseButtons.left=this.tempKey,this.viewer.controls.enableRotate=this.tempEnableRotate}drawRect(e,t){this.rectDom||(this.rectDom=document.createElement("div"),this.rectDom.style.cssText=`position: absolute;border: ${PO.BORDER_WIDTH} solid ${PO.BORDER_COLOR};`,this.viewerContainer.appendChild(this.rectDom)),this.setRectDomVisible(!0),this.rectDom.style.left=`${e.x}px`,this.rectDom.style.top=`${e.y}px`;let i=Math.abs(t.x-e.x),r=Math.abs(t.y-e.y);this.rectDom.style.width=`${i}px`,this.rectDom.style.height=`${r}px`}setRectDomVisible(e){this.rectDom&&(this.rectDom.style.display=e?"inline-block":"none")}select(){return ht(this,null,(function*(){return new Promise(((e,t)=>{this.resolve=e,this.reject=t,this.activate()}))}))}destroy(){var e;this.deactivate(),null==(e=this.rectDom)||e.remove(),this.rectDom=void 0,this.isResolvedOrRejected||this.reject&&this.reject("BoxSelectHelper is not done for some reason!")}},Kf=PO;Kf.BORDER_COLOR="#fff000",Kf.BORDER_WIDTH="2px";var ODe=kn($l(),1),uE=class{constructor(e){this.history=[],this.step=0,this.maxCount=50,this.maxCount=e||this.maxCount}addRecord(e,t){this.history.length===this.maxCount&&this.history.shift(),this.step!==this.history.length&&this.history.splice(this.step),this.history.push({type:e,payload:(0,ODe.cloneDeep)(t)}),this.step++}undo(){if(0!==this.step)return this.step--,this.history[this.step]}redo(){if(this.step!==this.history.length)return this.step++,this.history[this.step-1]}clear(){this.history=[],this.step=0}destroy(){this.clear(),this.maxCount=0}};function la(e){return(la="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})(e)}function Ql(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function EG(e,t){if("object"!==la(e)||null===e)return e;var i=e[Symbol.toPrimitive];if(void 0!==i){var r=i.call(e,t||"default");if("object"!==la(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}function P_(e){var t=EG(e,"string");return"symbol"===la(t)?t:String(t)}function PDe(e,t){for(var i=0;ie.length)&&(t=e.length);for(var i=0,r=new Array(t);i1&&void 0!==arguments[1]?arguments[1]:{};Ql(this,e),this.init(t,i)}return ec(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||ULt,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),r=1;r-1?e.replace(/###/g,"."):e}function n(){return!e||"string"==typeof e}for(var s="string"!=typeof t?[].concat(t):t.split(".");s.length>1;){if(n())return{};var a=r(s.shift());!e[a]&&i&&(e[a]=new i),e=Object.prototype.hasOwnProperty.call(e,a)?e[a]:{}}return n()?{}:{obj:e,k:r(s.shift())}}function HDe(e,t,i){var r=RG(e,t,Object);r.obj[r.k]=i}function GLt(e,t,i,r){var n=RG(e,t,Object),s=n.obj,a=n.k;s[a]=s[a]||[],r&&(s[a]=s[a].concat(i)),r||s[a].push(i)}function HO(e,t){var i=RG(e,t),r=i.obj,n=i.k;if(r)return r[n]}function UDe(e,t,i){var r=HO(e,i);return void 0!==r?r:HO(t,i)}function ZDe(e,t,i){for(var r in t)"__proto__"!==r&&"constructor"!==r&&(r in e?"string"==typeof e[r]||e[r]instanceof String||"string"==typeof t[r]||t[r]instanceof String?i&&(e[r]=t[r]):ZDe(e[r],t[r],i):e[r]=t[r]);return e}function pE(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}var VLt={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"};function zLt(e){return"string"==typeof e?e.replace(/[&<>"'\/]/g,(function(e){return VLt[e]})):e}var BO="undefined"!=typeof window&&window.navigator&&void 0===window.navigator.userAgentData&&window.navigator.userAgent&&window.navigator.userAgent.indexOf("MSIE")>-1,jLt=[" ",",","?","!",";"];function WLt(e,t,i){t=t||"",i=i||"";var r=jLt.filter((function(e){return t.indexOf(e)<0&&i.indexOf(e)<0}));if(0===r.length)return!0;var n=new RegExp("(".concat(r.map((function(e){return"?"===e?"\\?":e})).join("|"),")")),s=!n.test(e);if(!s){var a=e.indexOf(i);a>0&&!n.test(e.substring(0,a))&&(s=!0)}return s}function BDe(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,r)}return i}function LO(e){for(var t=1;t2&&void 0!==arguments[2]?arguments[2]:".";if(e){if(e[t])return e[t];for(var r=t.split(i),n=e,s=0;ss+a;)a++,l=n[o=r.slice(s,s+a).join(i)];if(void 0===l)return;if(null===l)return null;if(t.endsWith(o)){if("string"==typeof l)return l;if(o&&"string"==typeof l[o])return l[o]}var h=r.slice(s+a).join(i);return h?KDe(l,h,i):void 0}n=n[r[s]]}return n}}var XLt=function(e){hE(i,Qf);var t=qLt(i);function i(e){var r,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{ns:["translation"],defaultNS:"translation"};return Ql(this,i),r=t.call(this),BO&&Qf.call(eu(r)),r.data=e||{},r.options=n,void 0===r.options.keySeparator&&(r.options.keySeparator="."),void 0===r.options.ignoreJSONStructure&&(r.options.ignoreJSONStructure=!0),r}return ec(i,[{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 r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},n=void 0!==r.keySeparator?r.keySeparator:this.options.keySeparator,s=void 0!==r.ignoreJSONStructure?r.ignoreJSONStructure:this.options.ignoreJSONStructure,a=[e,t];i&&"string"!=typeof i&&(a=a.concat(i)),i&&"string"==typeof i&&(a=a.concat(n?i.split(n):i)),e.indexOf(".")>-1&&(a=e.split("."));var o=HO(this.data,a);return o||!s||"string"!=typeof i?o:KDe(this.data&&this.data[e]&&this.data[e][t],i,n)}},{key:"addResource",value:function(e,t,i,r){var n=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{silent:!1},s=this.options.keySeparator;void 0===s&&(s=".");var a=[e,t];i&&(a=a.concat(s?i.split(s):i)),e.indexOf(".")>-1&&(r=t,t=(a=e.split("."))[1]),this.addNamespaces(t),HDe(this.data,a,r),n.silent||this.emit("added",e,t,i,r)}},{key:"addResources",value:function(e,t,i){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{silent:!1};for(var n in i)("string"==typeof i[n]||"[object Array]"===Object.prototype.toString.apply(i[n]))&&this.addResource(e,t,n,i[n],{silent:!0});r.silent||this.emit("added",e,t,i)}},{key:"addResourceBundle",value:function(e,t,i,r,n){var s=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{silent:!1},a=[e,t];e.indexOf(".")>-1&&(r=i,i=t,t=(a=e.split("."))[1]),this.addNamespaces(t);var o=HO(this.data,a)||{};r?ZDe(o,i,n):o=LO(LO({},o),i),HDe(this.data,a,o),s.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?LO(LO({},{}),this.getResource(e,t)):this.getResource(e,t)}},{key:"getDataByLanguage",value:function(e){return this.data[e]}},{key:"hasLanguageSomeTranslations",value:function(e){var t=this.getDataByLanguage(e);return!!(t&&Object.keys(t)||[]).find((function(e){return t[e]&&Object.keys(t[e]).length>0}))}},{key:"toJSON",value:function(){return this.data}}]),i}(),JDe={processors:{},addPostProcessor:function(e){this.processors[e.name]=e},handle:function(e,t,i,r,n){var s=this;return e.forEach((function(e){s.processors[e]&&(t=s.processors[e].process(t,i,r,n))})),t}};function kDe(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,r)}return i}function Ua(e){for(var t=1;t1&&void 0!==arguments[1]?arguments[1]:{};return Ql(this,i),r=t.call(this),BO&&Qf.call(eu(r)),kLt(["resourceStore","languageUtils","pluralResolver","interpolator","backendConnector","i18nFormat","utils"],e,eu(r)),r.options=n,void 0===r.options.keySeparator&&(r.options.keySeparator="."),r.logger=Th.create("translator"),r}return ec(i,[{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 r=void 0!==t.keySeparator?t.keySeparator:this.options.keySeparator,n=t.ns||this.options.defaultNS||[],s=i&&e.indexOf(i)>-1,a=!(this.options.userDefinedKeySeparator||t.keySeparator||this.options.userDefinedNsSeparator||t.nsSeparator||WLt(e,i,r));if(s&&!a){var o=e.match(this.interpolator.nestingRegexp);if(o&&o.length>0)return{key:e,namespaces:n};var l=e.split(i);(i!==r||i===r&&this.options.ns.indexOf(l[0])>-1)&&(n=l.shift()),e=l.join(r)}return"string"==typeof n&&(n=[n]),{key:e,namespaces:n}}},{key:"translate",value:function(e,t,r){var n=this;if("object"!==la(t)&&this.options.overloadTranslationOptionHandler&&(t=this.options.overloadTranslationOptionHandler(arguments)),t||(t={}),null==e)return"";Array.isArray(e)||(e=[String(e)]);var s=void 0!==t.returnDetails?t.returnDetails:this.options.returnDetails,a=void 0!==t.keySeparator?t.keySeparator:this.options.keySeparator,o=this.extractFromKey(e[e.length-1],t),l=o.key,h=o.namespaces,u=h[h.length-1],c=t.lng||this.language,p=t.appendNamespaceToCIMode||this.options.appendNamespaceToCIMode;if(c&&"cimode"===c.toLowerCase()){if(p){var d=t.nsSeparator||this.options.nsSeparator;return s?(f.res="".concat(u).concat(d).concat(l),f):"".concat(u).concat(d).concat(l)}return s?(f.res=l,f):l}var f=this.resolve(e,t),m=f&&f.res,g=f&&f.usedKey||l,y=f&&f.exactUsedKey||l,v=Object.prototype.toString.apply(m),T=void 0!==t.joinArrays?t.joinArrays:this.options.joinArrays,x=!this.i18nFormat||this.i18nFormat.handleAsObject;if(x&&m&&("string"!=typeof m&&"boolean"!=typeof m&&"number"!=typeof m)&&["[object Number]","[object Function]","[object RegExp]"].indexOf(v)<0&&("string"!=typeof T||"[object Array]"!==v)){if(!t.returnObjects&&!this.options.returnObjects){this.options.returnedObjectHandler||this.logger.warn("accessing an object - but returnObjects options is not enabled!");var b=this.options.returnedObjectHandler?this.options.returnedObjectHandler(g,m,Ua(Ua({},t),{},{ns:h})):"key '".concat(l," (").concat(this.language,")' returned an object instead of string.");return s?(f.res=b,f):b}if(a){var _="[object Array]"===v,E=_?[]:{},w=_?y:g;for(var S in m)if(Object.prototype.hasOwnProperty.call(m,S)){var I="".concat(w).concat(a).concat(S);E[S]=this.translate(I,Ua(Ua({},t),{joinArrays:!1,ns:h})),E[S]===I&&(E[S]=m[S])}m=E}}else if(x&&"string"==typeof T&&"[object Array]"===v)(m=m.join(T))&&(m=this.extendTranslation(m,e,t,r));else{var M=!1,A=!1,D=void 0!==t.count&&"string"!=typeof t.count,O=i.hasDefaultValue(t),R=D?this.pluralResolver.getSuffix(c,t.count,t):"",C=t["defaultValue".concat(R)]||t.defaultValue;!this.isValidLookup(m)&&O&&(M=!0,m=C),this.isValidLookup(m)||(A=!0,m=l);var N=(t.missingKeyNoValueFallbackToKey||this.options.missingKeyNoValueFallbackToKey)&&A?void 0:m,P=O&&C!==m&&this.options.updateMissing;if(A||M||P){if(this.logger.log(P?"updateKey":"missingKey",c,u,l,P?C:m),a){var L=this.resolve(l,Ua(Ua({},t),{},{keySeparator:!1}));L&&L.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,t.lng||this.language);if("fallback"===this.options.saveMissingTo&&U&&U[0])for(var k=0;k1&&void 0!==arguments[1]?arguments[1]:{};return"string"==typeof e&&(e=[e]),e.forEach((function(e){if(!a.isValidLookup(t)){var l=a.extractFromKey(e,o),h=l.key;i=h;var u=l.namespaces;a.options.fallbackNS&&(u=u.concat(a.options.fallbackNS));var c=void 0!==o.count&&"string"!=typeof o.count,p=c&&!o.ordinal&&0===o.count&&a.pluralResolver.shouldUseIntlApi(),d=void 0!==o.context&&("string"==typeof o.context||"number"==typeof o.context)&&""!==o.context,f=o.lngs?o.lngs:a.languageUtils.toResolveHierarchy(o.lng||a.language,o.fallbackLng);u.forEach((function(e){a.isValidLookup(t)||(s=e,!GDe["".concat(f[0],"-").concat(e)]&&a.utils&&a.utils.hasLoadedNamespace&&!a.utils.hasLoadedNamespace(s)&&(GDe["".concat(f[0],"-").concat(e)]=!0,a.logger.warn('key "'.concat(i,'" for languages "').concat(f.join(", "),'" won\'t get resolved as namespace "').concat(s,'" 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(!a.isValidLookup(t)){n=i;var s,l=[h];if(a.i18nFormat&&a.i18nFormat.addLookupKeys)a.i18nFormat.addLookupKeys(l,h,i,e,o);else{var u;c&&(u=a.pluralResolver.getSuffix(i,o.count,o));var f="".concat(a.options.pluralSeparator,"zero");if(c&&(l.push(h+u),p&&l.push(h+f)),d){var m="".concat(h).concat(a.options.contextSeparator).concat(o.context);l.push(m),c&&(l.push(m+u),p&&l.push(m+f))}}for(;s=l.pop();)a.isValidLookup(t)||(r=s,t=a.getResource(i,e,s,o))}})))}))}})),{res:t,usedKey:i,exactUsedKey:r,usedLng:n,usedNS:s}}},{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 r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return this.i18nFormat&&this.i18nFormat.getResource?this.i18nFormat.getResource(e,t,i,r):this.resourceStore.getResource(e,t,i,r)}}],[{key:"hasDefaultValue",value:function(e){var t="defaultValue";for(var i in e)if(Object.prototype.hasOwnProperty.call(e,i)&&t===i.substring(0,t.length)&&void 0!==e[i])return!0;return!1}}]),i}();function wG(e){return e.charAt(0).toUpperCase()+e.slice(1)}var KLt=function(){function e(t){Ql(this,e),this.options=t,this.supportedLngs=this.options.supportedLngs||!1,this.logger=Th.create("languageUtils")}return ec(e,[{key:"getScriptPartFromCode",value:function(e){if(!e||e.indexOf("-")<0)return null;var t=e.split("-");return 2===t.length||(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]=wG(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]=wG(i[1].toLowerCase())),t.indexOf(i[2].toLowerCase())>-1&&(i[2]=wG(i[2].toLowerCase()))),i.join("-")}return this.options.cleanCode||this.options.lowerCaseLng?e.toLowerCase():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 r=i.formatLanguageCode(e);(!i.options.supportedLngs||i.isSupportedCode(r))&&(t=r)}})),!t&&this.options.supportedLngs&&e.forEach((function(e){if(!t){var r=i.getLanguagePartFromCode(e);if(i.isSupportedCode(r))return t=r;t=i.options.supportedLngs.find((function(e){if(0===e.indexOf(r))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,r=this.getFallbackCodes(t||this.options.fallbackLng||[],e),n=[],s=function(e){e&&(i.isSupportedCode(e)?n.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&&s(this.formatLanguageCode(e)),"languageOnly"!==this.options.load&&"currentOnly"!==this.options.load&&s(this.getScriptPartFromCode(e)),"currentOnly"!==this.options.load&&s(this.getLanguagePartFromCode(e))):"string"==typeof e&&s(this.formatLanguageCode(e)),r.forEach((function(e){n.indexOf(e)<0&&s(i.formatLanguageCode(e))})),n}}]),e}(),JLt=[{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}],QLt={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)}},eFt=["v1","v2","v3"],zDe={zero:0,one:1,two:2,few:3,many:4,other:5};function tFt(){var e={};return JLt.forEach((function(t){t.lngs.forEach((function(i){e[i]={numbers:t.nr,plurals:QLt[t.fc]}}))})),e}var rFt=function(){function e(t){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};Ql(this,e),this.languageUtils=t,this.options=i,this.logger=Th.create("pluralResolver"),(!this.options.compatibilityJSON||"v4"===this.options.compatibilityJSON)&&("undefined"==typeof Intl||!Intl.PluralRules)&&(this.options.compatibilityJSON="v3",this.logger.error("Your environment seems not to be Intl API compatible, use an Intl.PluralRules polyfill. Will fallback to the compatibilityJSON v3 format handling.")),this.rules=tFt()}return ec(e,[{key:"addRule",value:function(e,t){this.rules[e]=t}},{key:"getRule",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(this.shouldUseIntlApi())try{return new Intl.PluralRules(e,{type:t.ordinal?"ordinal":"cardinal"})}catch(e){return}return this.rules[e]||this.rules[this.languageUtils.getLanguagePartFromCode(e)]}},{key:"needsPlural",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=this.getRule(e,t);return this.shouldUseIntlApi()?i&&i.resolvedOptions().pluralCategories.length>1:i&&i.numbers.length>1}},{key:"getPluralFormsOfKey",value:function(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return this.getSuffixes(e,i).map((function(e){return"".concat(t).concat(e)}))}},{key:"getSuffixes",value:function(e){var t=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=this.getRule(e,i);return r?this.shouldUseIntlApi()?r.resolvedOptions().pluralCategories.sort((function(e,t){return zDe[e]-zDe[t]})).map((function(e){return"".concat(t.options.prepend).concat(e)})):r.numbers.map((function(r){return t.getSuffix(e,r,i)})):[]}},{key:"getSuffix",value:function(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=this.getRule(e,i);return r?this.shouldUseIntlApi()?"".concat(this.options.prepend).concat(r.select(t)):this.getSuffixRetroCompatible(r,t):(this.logger.warn("no plural rule found for: ".concat(e)),"")}},{key:"getSuffixRetroCompatible",value:function(e,t){var i=this,r=e.noAbs?e.plurals(t):e.plurals(Math.abs(t)),n=e.numbers[r];this.options.simplifyPluralSuffix&&2===e.numbers.length&&1===e.numbers[0]&&(2===n?n="plural":1===n&&(n=""));var s=function(){return i.options.prepend&&n.toString()?i.options.prepend+n.toString():n.toString()};return"v1"===this.options.compatibilityJSON?1===n?"":"number"==typeof n?"_plural_".concat(n.toString()):s():"v2"===this.options.compatibilityJSON||this.options.simplifyPluralSuffix&&2===e.numbers.length&&1===e.numbers[0]?s():this.options.prepend&&r.toString()?this.options.prepend+r.toString():r.toString()}},{key:"shouldUseIntlApi",value:function(){return!eFt.includes(this.options.compatibilityJSON)}}]),e}();function jDe(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,r)}return i}function tu(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:{};Ql(this,e),this.logger=Th.create("interpolator"),this.options=t,this.format=t.interpolation&&t.interpolation.format||function(e){return e},this.init(t)}return ec(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:zLt,this.escapeValue=void 0===t.escapeValue||t.escapeValue,this.useRawValueToEscape=void 0!==t.useRawValueToEscape&&t.useRawValueToEscape,this.prefix=t.prefix?pE(t.prefix):t.prefixEscaped||"{{",this.suffix=t.suffix?pE(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?pE(t.nestingPrefix):t.nestingPrefixEscaped||pE("$t("),this.nestingSuffix=t.nestingSuffix?pE(t.nestingSuffix):t.nestingSuffixEscaped||pE(")"),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,r){var n,s,a,o=this,l=this.options&&this.options.interpolation&&this.options.interpolation.defaultVariables||{};function h(e){return e.replace(/\$/g,"$$$$")}var u=function(e){if(e.indexOf(o.formatSeparator)<0){var n=UDe(t,l,e);return o.alwaysFormat?o.format(n,void 0,i,tu(tu(tu({},r),t),{},{interpolationkey:e})):n}var s=e.split(o.formatSeparator),a=s.shift().trim(),h=s.join(o.formatSeparator).trim();return o.format(UDe(t,l,a),h,i,tu(tu(tu({},r),t),{},{interpolationkey:a}))};this.resetRegExp();var c=r&&r.missingInterpolationHandler||this.options.missingInterpolationHandler,p=r&&r.interpolation&&void 0!==r.interpolation.skipOnVariables?r.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables;return[{regex:this.regexpUnescape,safeValue:function(e){return h(e)}},{regex:this.regexp,safeValue:function(e){return o.escapeValue?h(o.escape(e)):h(e)}}].forEach((function(t){for(a=0;n=t.regex.exec(e);){var i=n[1].trim();if(void 0===(s=u(i)))if("function"==typeof c){var l=c(e,n,r);s="string"==typeof l?l:""}else if(r&&r.hasOwnProperty(i))s="";else{if(p){s=n[0];continue}o.logger.warn("missed to pass in variable ".concat(i," for interpolating ").concat(e)),s=""}else"string"!=typeof s&&!o.useRawValueToEscape&&(s=FDe(s));var h=t.safeValue(s);if(e=e.replace(n[0],h),p?(t.regex.lastIndex+=s.length,t.regex.lastIndex-=n[0].length):t.regex.lastIndex=0,++a>=o.maxReplaces)break}})),e}},{key:"nest",value:function(e,t){var i,r,n=this,s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},a=tu({},s);function o(e,t){var i=this.nestingOptionsSeparator;if(e.indexOf(i)<0)return e;var r=e.split(new RegExp("".concat(i,"[ ]*{"))),n="{".concat(r[1]);e=r[0];var s=(n=this.interpolate(n,a)).match(/'/g),o=n.match(/"/g);(s&&s.length%2==0&&!o||o.length%2!=0)&&(n=n.replace(/'/g,'"'));try{a=JSON.parse(n),t&&(a=tu(tu({},t),a))}catch(t){return this.logger.warn("failed parsing options string in nesting for key ".concat(e),t),"".concat(e).concat(i).concat(n)}return delete a.defaultValue,e}for(a.applyPostProcessor=!1,delete a.defaultValue;i=this.nestingRegexp.exec(e);){var l=[],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(),l=u,h=!0}if((r=t(o.call(this,i[1].trim(),a),a))&&i[0]===e&&"string"!=typeof r)return r;"string"!=typeof r&&(r=FDe(r)),r||(this.logger.warn("missed to resolve ".concat(i[1]," for nesting ").concat(e)),r=""),h&&(r=l.reduce((function(e,t){return n.format(e,t,s.lng,tu(tu({},s),{},{interpolationkey:i[1].trim()}))}),r.trim())),e=e.replace(i[0],r),this.regexp.lastIndex=0}return e}}]),e}();function WDe(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,r)}return i}function Jf(e){for(var t=1;t-1){var r=e.split("(");t=r[0].toLowerCase().trim();var n=r[1].substring(0,r[1].length-1);if("currency"===t&&n.indexOf(":")<0)i.currency||(i.currency=n.trim());else if("relativetime"===t&&n.indexOf(":")<0)i.range||(i.range=n.trim());else{n.split(";").forEach((function(e){if(e){var t=SG(e.split(":")),r=t[0],n=t.slice(1).join(":").trim().replace(/^'+|'+$/g,"");i[r.trim()]||(i[r.trim()]=n),"false"===n&&(i[r.trim()]=!1),"true"===n&&(i[r.trim()]=!0),isNaN(n)||(i[r.trim()]=parseInt(n,10))}}))}}return{formatName:t,formatOptions:i}}function dE(e){var t={};return function(i,r,n){var s=r+JSON.stringify(n),a=t[s];return a||(a=e(r,n),t[s]=a),a(i)}}var sFt=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};Ql(this,e),this.logger=Th.create("formatter"),this.options=t,this.formats={number:dE((function(e,t){var i=new Intl.NumberFormat(e,t);return function(e){return i.format(e)}})),currency:dE((function(e,t){var i=new Intl.NumberFormat(e,Jf(Jf({},t),{},{style:"currency"}));return function(e){return i.format(e)}})),datetime:dE((function(e,t){var i=new Intl.DateTimeFormat(e,Jf({},t));return function(e){return i.format(e)}})),relativetime:dE((function(e,t){var i=new Intl.RelativeTimeFormat(e,Jf({},t));return function(e){return i.format(e,t.range||"day")}})),list:dE((function(e,t){var i=new Intl.ListFormat(e,Jf({},t));return function(e){return i.format(e)}}))},this.init(t)}return ec(e,[{key:"init",value:function(e){var t=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{interpolation:{}}).interpolation;this.formatSeparator=t.formatSeparator?t.formatSeparator:t.formatSeparator||","}},{key:"add",value:function(e,t){this.formats[e.toLowerCase().trim()]=t}},{key:"addCached",value:function(e,t){this.formats[e.toLowerCase().trim()]=dE(t)}},{key:"format",value:function(e,t,i,r){var n=this;return t.split(this.formatSeparator).reduce((function(e,t){var s=nFt(t),a=s.formatName,o=s.formatOptions;if(n.formats[a]){var l=e;try{var h=r&&r.formatParams&&r.formatParams[r.interpolationkey]||{},u=h.locale||h.lng||r.locale||r.lng||i;l=n.formats[a](e,u,Jf(Jf(Jf({},o),r),h))}catch(e){n.logger.warn(e)}return l}return n.logger.warn("there was no format function for ".concat(a)),e}),e)}}]),e}();function qDe(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,r)}return i}function YDe(e){for(var t=1;t3&&void 0!==arguments[3]?arguments[3]:{};return Ql(this,i),s=t.call(this),BO&&Qf.call(eu(s)),s.backend=e,s.store=r,s.services=n,s.languageUtils=n.languageUtils,s.options=a,s.logger=Th.create("backendConnector"),s.waitingReads=[],s.maxParallelReads=a.maxParallelReads||10,s.readingCalls=0,s.maxRetries=a.maxRetries>=0?a.maxRetries:5,s.retryTimeout=a.retryTimeout>=1?a.retryTimeout:350,s.state={},s.queue=[],s.backend&&s.backend.init&&s.backend.init(n,a.backend,a),s}return ec(i,[{key:"queueLoad",value:function(e,t,i,r){var n=this,s={},a={},o={},l={};return e.forEach((function(e){var r=!0;t.forEach((function(t){var o="".concat(e,"|").concat(t);!i.reload&&n.store.hasResourceBundle(e,t)?n.state[o]=2:n.state[o]<0||(1===n.state[o]?void 0===a[o]&&(a[o]=!0):(n.state[o]=1,r=!1,void 0===a[o]&&(a[o]=!0),void 0===s[o]&&(s[o]=!0),void 0===l[t]&&(l[t]=!0)))})),r||(o[e]=!0)})),(Object.keys(s).length||Object.keys(a).length)&&this.queue.push({pending:a,pendingCount:Object.keys(a).length,loaded:{},errors:[],callback:r}),{toLoad:Object.keys(s),pending:Object.keys(a),toLoadLanguages:Object.keys(o),toLoadNamespaces:Object.keys(l)}}},{key:"loaded",value:function(e,t,i){var r=e.split("|"),n=r[0],s=r[1];t&&this.emit("failedLoading",n,s,t),i&&this.store.addResourceBundle(n,s,i),this.state[e]=t?-1:2;var a={};this.queue.forEach((function(i){GLt(i.loaded,[n],s),lFt(i,e),t&&i.errors.push(t),0===i.pendingCount&&!i.done&&(Object.keys(i.loaded).forEach((function(e){a[e]||(a[e]={});var t=i.loaded[e];t.length&&t.forEach((function(t){void 0===a[e][t]&&(a[e][t]=!0)}))})),i.done=!0,i.errors.length?i.callback(i.errors):i.callback())})),this.emit("loaded",a),this.queue=this.queue.filter((function(e){return!e.done}))}},{key:"read",value:function(e,t,i){var r=this,n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:this.retryTimeout,a=arguments.length>5?arguments[5]:void 0;return e.length?this.readingCalls>=this.maxParallelReads?void this.waitingReads.push({lng:e,ns:t,fcName:i,tried:n,wait:s,callback:a}):(this.readingCalls++,this.backend[i](e,t,(function(o,l){if(r.readingCalls--,r.waitingReads.length>0){var h=r.waitingReads.shift();r.read(h.lng,h.ns,h.fcName,h.tried,h.wait,h.callback)}o&&l&&n2&&void 0!==arguments[2]?arguments[2]:{},n=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."),n&&n();"string"==typeof e&&(e=this.languageUtils.toResolveHierarchy(e)),"string"==typeof t&&(t=[t]);var s=this.queueLoad(e,t,r,n);if(!s.toLoad.length)return s.pending.length||n(),null;s.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]:"",r=e.split("|"),n=r[0],s=r[1];this.read(n,s,"read",void 0,void 0,(function(r,a){r&&t.logger.warn("".concat(i,"loading namespace ").concat(s," for language ").concat(n," failed"),r),!r&&a&&t.logger.log("".concat(i,"loaded namespace ").concat(s," for language ").concat(n),a),t.loaded(e,r,a)}))}},{key:"saveMissing",value:function(e,t,i,r,n){var s=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,r,null,YDe(YDe({},s),{},{isUpdate:n})),e&&e[0]&&this.store.addResource(e[0],t,i,r))}}]),i}();function uFt(){return{debug:!1,initImmediate:!0,ns:["translation"],defaultNS:["translation"],fallbackLng:["dev"],fallbackNS:!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"===la(e[1])&&(t=e[1]),"string"==typeof e[1]&&(t.defaultValue=e[1]),"string"==typeof e[2]&&(t.tDescription=e[2]),"object"===la(e[2])||"object"===la(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,r){return e},prefix:"{{",suffix:"}}",formatSeparator:",",unescapePrefix:"-",nestingPrefix:"$t(",nestingSuffix:")",nestingOptionsSeparator:",",maxReplaces:1e3,skipOnVariables:!0}}}function XDe(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.supportedLngs&&e.supportedLngs.indexOf("cimode")<0&&(e.supportedLngs=e.supportedLngs.concat(["cimode"])),e}function $De(e,t){var i=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),i.push.apply(i,r)}return i}function yh(e){for(var t=1;t0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1?arguments[1]:void 0;if(Ql(this,i),e=t.call(this),BO&&Qf.call(eu(e)),e.options=XDe(r),e.services={},e.logger=Th,e.modules={external:[]},dFt(eu(e)),n&&!e.isInitialized&&!r.isClone){if(!e.options.initImmediate)return e.init(r,n),C0(e,eu(e));setTimeout((function(){e.init(r,n)}),0)}return e}return ec(i,[{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"==typeof t&&(i=t,t={}),!t.defaultNS&&!1!==t.defaultNS&&t.ns&&("string"==typeof t.ns?t.defaultNS=t.ns:t.ns.indexOf("translation")<0&&(t.defaultNS=t.ns[0]));var r=uFt();function n(e){return e?"function"==typeof e?new e:e:null}if(this.options=yh(yh(yh({},r),this.options),XDe(t)),"v1"!==this.options.compatibilityAPI&&(this.options.interpolation=yh(yh({},r.interpolation),this.options.interpolation)),void 0!==t.keySeparator&&(this.options.userDefinedKeySeparator=t.keySeparator),void 0!==t.nsSeparator&&(this.options.userDefinedNsSeparator=t.nsSeparator),!this.options.isClone){var s;this.modules.logger?Th.init(n(this.modules.logger),this.options):Th.init(null,this.options),this.modules.formatter?s=this.modules.formatter:"undefined"!=typeof Intl&&(s=sFt);var a=new KLt(this.options);this.store=new XLt(this.options.resources,this.options);var o=this.services;o.logger=Th,o.resourceStore=this.store,o.languageUtils=a,o.pluralResolver=new rFt(a,{prepend:this.options.pluralSeparator,compatibilityJSON:this.options.compatibilityJSON,simplifyPluralSuffix:this.options.simplifyPluralSuffix}),s&&(!this.options.interpolation.format||this.options.interpolation.format===r.interpolation.format)&&(o.formatter=n(s),o.formatter.init(o,this.options),this.options.interpolation.format=o.formatter.format.bind(o.formatter)),o.interpolator=new iFt(this.options),o.utils={hasLoadedNamespace:this.hasLoadedNamespace.bind(this)},o.backendConnector=new cFt(n(this.modules.backend),o.resourceStore,o,this.options),o.backendConnector.on("*",(function(t){for(var i=arguments.length,r=new Array(i>1?i-1:0),n=1;n1?i-1:0),n=1;n0&&"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 h=L_(),u=function(){var t=function(t,r){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),h.resolve(r),i(t,r)};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?u():setTimeout(u,0),h}},{key:"loadResources",value:function(e){var t=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:FO,r="string"==typeof e?e:this.language;if("function"==typeof e&&(i=e),!this.options.resources||this.options.partialBundledLanguages){if(r&&"cimode"===r.toLowerCase())return i();var n=[],s=function(e){e&&t.services.languageUtils.toResolveHierarchy(e).forEach((function(e){n.indexOf(e)<0&&n.push(e)}))};if(r)s(r);else this.services.languageUtils.getFallbackCodes(this.options.fallbackLng).forEach((function(e){return s(e)}));this.options.preload&&this.options.preload.forEach((function(e){return s(e)})),this.services.backendConnector.load(n,this.options.ns,(function(e){!e&&!t.resolvedLanguage&&t.language&&t.setResolvedLanguage(t.language),i(e)}))}else i(null)}},{key:"reloadResources",value:function(e,t,i){var r=L_();return e||(e=this.languages),t||(t=this.options.ns),i||(i=FO),this.services.backendConnector.reload(e,t,(function(e){r.resolve(),i(e)})),r}},{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&&JDe.addPostProcessor(e),"formatter"===e.type&&(this.modules.formatter=e),"3rdParty"===e.type&&this.modules.external.push(e),this}},{key:"setResolvedLanguage",value:function(e){if(e&&this.languages&&!(["cimode","dev"].indexOf(e)>-1))for(var t=0;t-1)&&this.store.hasLanguageSomeTranslations(i)){this.resolvedLanguage=i;break}}}},{key:"changeLanguage",value:function(e,t){var i=this;this.isLanguageChangingTo=e;var r=L_();this.emit("languageChanging",e);var n=function(e){i.language=e,i.languages=i.services.languageUtils.toResolveHierarchy(e),i.resolvedLanguage=void 0,i.setResolvedLanguage(e)},s=function(s){!e&&!s&&i.services.languageDetector&&(s=[]);var a="string"==typeof s?s:i.services.languageUtils.getBestMatchFromCodes(s);a&&(i.language||n(a),i.translator.language||i.translator.changeLanguage(a),i.services.languageDetector&&i.services.languageDetector.cacheUserLanguage(a)),i.loadResources(a,(function(e){!function(e,s){s?(n(s),i.translator.changeLanguage(s),i.isLanguageChangingTo=void 0,i.emit("languageChanged",s),i.logger.log("languageChanged",s)):i.isLanguageChangingTo=void 0,r.resolve((function(){return i.t.apply(i,arguments)})),t&&t(e,(function(){return i.t.apply(i,arguments)}))}(e,a)}))};return e||!this.services.languageDetector||this.services.languageDetector.async?!e&&this.services.languageDetector&&this.services.languageDetector.async?this.services.languageDetector.detect(s):s(e):s(this.services.languageDetector.detect()),r}},{key:"getFixedT",value:function(e,t,i){var r=this,n=function e(t,n){var s;if("object"!==la(n)){for(var a=arguments.length,o=new Array(a>2?a-2:0),l=2;l1&&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 r=this.resolvedLanguage||this.languages[0],n=!!this.options&&this.options.fallbackLng,s=this.languages[this.languages.length-1];if("cimode"===r.toLowerCase())return!0;var a=function(e,i){var r=t.services.backendConnector.state["".concat(e,"|").concat(i)];return-1===r||2===r};if(i.precheck){var o=i.precheck(this,a);if(void 0!==o)return o}return!!(this.hasResourceBundle(r,e)||!this.services.backendConnector.backend||this.options.resources&&!this.options.partialBundledLanguages||a(r,e)&&(!n||a(s,e)))}},{key:"loadNamespaces",value:function(e,t){var i=this,r=L_();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){r.resolve(),t&&t(e)})),r):(t&&t(),Promise.resolve())}},{key:"loadLanguages",value:function(e,t){var i=L_();"string"==typeof e&&(e=[e]);var r=this.options.preload||[],n=e.filter((function(e){return r.indexOf(e)<0}));return n.length?(this.options.preload=r.concat(n),this.loadResources((function(e){i.resolve(),t&&t(e)})),i):(t&&t(),Promise.resolve())}},{key:"dir",value:function(e){if(e||(e=this.resolvedLanguage||(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","ckb"].indexOf(this.services.languageUtils.getLanguagePartFromCode(e))>-1||e.toLowerCase().indexOf("-arab")>1?"rtl":"ltr"}},{key:"cloneInstance",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:FO,n=yh(yh(yh({},this.options),t),{isClone:!0}),s=new i(n);(void 0!==t.debug||void 0!==t.prefix)&&(s.logger=s.logger.clone(t));return["store","services","language"].forEach((function(t){s[t]=e[t]})),s.services=yh({},this.services),s.services.utils={hasLoadedNamespace:s.hasLoadedNamespace.bind(s)},s.translator=new VDe(s.services,s.options),s.translator.on("*",(function(e){for(var t=arguments.length,i=new Array(t>1?t-1:0),r=1;r0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1?arguments[1]:void 0)}));var Ba=UO.createInstance();Ba.createInstance=UO.createInstance;var vMr=Ba.createInstance,yMr=Ba.init,TMr=Ba.loadResources,EMr=Ba.reloadResources,bMr=Ba.use,xMr=Ba.changeLanguage,IMr=Ba.getFixedT,Eh=Ba.t,_Mr=Ba.exists,SMr=Ba.setDefaultNamespace,wMr=Ba.hasLoadedNamespace,RMr=Ba.loadNamespaces,MMr=Ba.loadLanguages,MG=Ba,fE=(e=>(e.BaseViewer="BaseViewer",e.BimViewer="BimViewer",e.DxfViewer="DxfViewer",e.VRViewer="BaseViewer",e))(fE||{}),em=class extends Os{constructor(e){super(),this.name="BaseViewer",this.translate=this.initLocalization(),this.height=0,this.width=0,this.enableOverlayRenderer=!0,this.viewerCfg=e,this.initLogLevel(),this.initLocalization(),Ii.isBrowser&&!e.context&&(this.initViewerContainer(),this.initWidgetContainer())}initLogLevel(){let e=this.viewerCfg.logLevel;e&&Wpe(e)}initLocalization(){var e;let t=(null==(e=this.viewerCfg)?void 0:e.language)||"cn";return MG.init({lng:t,debug:!1,resources:{en:{translation:pde},cn:{translation:dde}}}),MG.t}initViewerContainer(){let e=document.getElementById(this.viewerCfg.containerId);e||(ie.error("[BaseViewer] containerId:",this.viewerCfg.containerId,"is not found in dom tree! will append to document body"),e=document.body);let t=document.createElement("div");t.classList.add("viewer-container"),t.style.cssText="width: 100%; height: 100%; position: absolute; overflow: hidden;",e.appendChild(t),this.width=t.clientWidth,this.height=t.clientHeight,this.viewerContainer=t}initWidgetContainer(){var e;let t=document.createElement("div");t.classList.add("widget-container"),null==(e=this.viewerContainer)||e.appendChild(t),this.widgetContainer=t}destroy(){var e,t,i;null==(e=this.widgetContainer)||e.remove(),this.widgetContainer=void 0,null==(t=this.viewerContainer)||t.remove(),this.viewerContainer=void 0,null==(i=this.scene)||i.clear(),this.scene=void 0,this.requestAnimationFrameHandle&&(cancelAnimationFrame(this.requestAnimationFrameHandle),this.requestAnimationFrameHandle=void 0),this.renderer&&(this.renderer.domElement.remove(),this.renderer.clear(),this.renderer.dispose(),this.renderer.forceContextLoss(),this.renderer=void 0),this.overlayRender&&(this.overlayRender.destroy(),this.overlayRender=void 0),this.camera=void 0,this.controls&&(this.controls.dispose(),this.controls=void 0),this.groundPlane&&(this.groundPlane.geometry.dispose(),this.groundPlane.clear(),this.groundPlane=void 0)}getInputManager(){return this.inputManager}getViewConfig(){return this.viewerCfg}enableRender(){}getRaycaster(){}getRaycastableObjectsByMouse(e){return[]}getBBox(){}getActiveSection(){}flyTo(e,t){}is3d(){return!0}getMeasurementManager(){}getMarkupManager(){}deactivateMeasurement(){}setMeasurementVisibility(e,t){return!1}screenshot(e){return ht(this,null,(function*(){}))}showStats(){}hideStats(){}},mE=class{constructor(e){this.viewer=e,this.boxSelectHelper=new Kf(e)}get viewerContainer(){return this.viewer.viewerContainer}get camera(){return this.viewer.camera}get raycaster(){return this.viewer.getRaycaster()}activate(){var e;null==(e=this.boxSelectHelper)||e.select().then((e=>{this.handleZoomToRect(e.min,e.max)}))}deactivate(){var e;null==(e=this.boxSelectHelper)||e.deactivate()}pickPositionByScreenPoint(e){let t=Ai.screenPoint2NdcPoint(e,this.camera,this.viewerContainer);this.raycaster.setFromCamera(t,this.camera);let i=[];"BimViewer"===this.viewer.name?i=this.viewer.getRaycastableObjectsByMouse({x:e.x,y:e.y}):"DxfViewer"===this.viewer.name&&(i=[this.viewer.groundPlane]);let r=this.raycaster.intersectObjects(i)||[];if(r.length>0)return r[0].point}handleZoomToRect(e,t){let i=this.pickPositionByScreenPoint(e),r=this.pickPositionByScreenPoint(t);if(i&&r){let e=new A(Math.min(i.x,r.x),Math.min(i.y,r.y),Math.min(i.z,r.z)),t=new A(Math.max(i.x,r.x),Math.max(i.y,r.y),Math.max(i.z,r.z)),n=new Dt(e,t);this.viewer.zoomToBBox(n)}}destroy(){var e;null==(e=this.boxSelectHelper)||e.destroy(),this.boxSelectHelper=void 0}},kO=class extends uE{constructor(e,t){super(t),this.manager=e}undo(){let e=super.undo();switch(null==e?void 0:e.type){case"Add":{let t=this.manager.getMarkupById(e.payload.id);t&&this.manager.removeMarkup(t,!1)}break;case"Remove":{let t=this.manager.createMarkup(e.payload);t&&this.manager.addMarkup(t,!1)}break;case"Update":{let{from:t,to:i}=e.payload,r=this.manager.getMarkupById(t.id);r&&this.manager.updateMarkup(r,t,!1)}}return e}redo(){let e=super.redo();switch(null==e?void 0:e.type){case"Add":{let t=this.manager.createMarkup(e.payload);t&&this.manager.addMarkup(t,!1)}break;case"Remove":{let t=this.manager.getMarkupById(e.payload.id);t&&this.manager.removeMarkup(t,!1)}break;case"Update":{let{from:t,to:i}=e.payload,r=this.manager.getMarkupById(i.id);r&&this.manager.updateMarkup(r,i,!1)}}return e}},QDe=new A,F_=class extends Os{constructor(e,t){var i;super(),this.drawableList=new $u("markup"),this.lineWidth=2,this.lineColor="#ff0000",this.fillColor="rgba(255, 0, 0, 0.3)",this.fontSize=20,this.mouseDown=!1,this.mouseDownPositionX=void 0,this.mouseDownPositionY=void 0,this.isDrawing=!1,this.tempPoints=[],this.actived=!1,this.undoRedoHelper=new kO(this),this.mousedown=e=>{var t;let i=this.pickThreejsPositionByMouse(e);if(this.mouseDownPositionX=i.x,this.mouseDownPositionY=i.y,0===e.button&&(this.mouseDown=!0),2===e.button&&(this.creatingShape&&this.tempPoints.length<2?(this.removeMarkup(this.creatingShape,!1),this.creatingShape=void 0):null==(t=this.creatingShape)||t.update(this.tempPoints),this.isDrawing&&this.endDraw(this.creatingShape)),this.selectedShape&&(this.selectedShape.selected=!1,this.selectedShape=void 0,this.render()),!this.isDrawing){let e=this.drawableList.getDrawableByPosition(i);e&&(this.selectedShape=e,e.selected=!0,this.render(),this.textInput&&(this.textInput.style.display="none"))}if(this.isCreateTextMode()&&this.mouseDown&&!this.selectedShape&&((!this.textInitialPosition||this.textInput&&0===this.textInput.value.length)&&(this.textInitialPosition=i.clone()),this.addInput(e.clientX,e.clientY)),this.isCreateLineMode()&&this.mouseDown&&!this.selectedShape){if(this.tempPoints.length>0){let e=this.tempPoints[0];if(QDe.subVectors(e,i).length(){let t=this.pickThreejsPositionByMouse(e);if(this.selectedShape){if(this.mouseDown&&void 0!==this.mouseDownPositionX&&void 0!==this.mouseDownPositionY){this.isEditing()||(this.initialDataForEditing=this.selectedShape.getData());let e=t.x-this.mouseDownPositionX,i=t.y-this.mouseDownPositionY;this.selectedShape.translate(e,i),this.render(),this.mouseDownPositionX=t.x,this.mouseDownPositionY=t.y}}else{if(this.isCreateDotMode())return;if(this.mouseDown&&this.isCreateShapeMode()&&void 0!==this.mouseDownPositionX&&void 0!==this.mouseDownPositionY){let e=new A(this.mouseDownPositionX,this.mouseDownPositionY,0);if(!this.creatingShape){let i=this.creatingShape=this.drawShape(e,t);i&&this.addMarkup(i,!1)}this.creatingShape.update([e,t]),this.isDrawing=!0,this.render()}if(this.isCreateLineMode()&&this.tempPoints.length>0&&this.isDrawing){if(!this.creatingShape){let e=this.creatingShape=this.drawLine([...this.tempPoints,t]);e&&this.addMarkup(e,!1)}let e=this.tempPoints[0];QDe.subVectors(e,t).length(){this.mouseDown=!1,this.selectedShape&&this.isEditing()&&this.endEdit(this.selectedShape),this.isCreateShapeMode()&&this.isDrawing&&this.endDraw(this.creatingShape)},this.keydown=e=>{"Delete"===e.code?this.selectedShape&&(this.viewer.hasEventListener("BeforeRemoveMarkup")?this.viewer.dispatchEvent("BeforeRemoveMarkup",this.confirmToRemove.bind(this)):(this.removeMarkup(this.selectedShape),this.viewer.dispatchEvent("MarkupRemoved",this.selectedShape.getData()),this.selectedShape=void 0)):e.ctrlKey&&"KeyZ"===e.code?this.undo():e.ctrlKey&&"KeyY"===e.code?this.redo():"Escape"===e.code&&this.cancelDraw(this.creatingShape)},this.viewer=e,this.inputManager=t,this.overlayRender=this.viewer.overlayRender,null==(i=this.overlayRender)||i.addDrawableList(this.drawableList)}get viewerCanvas(){var e;return null==(e=this.viewer.renderer)?void 0:e.domElement}get camera(){return this.viewer.camera}get raycaster(){return this.viewer.getRaycaster()}setMarkupVisibility(e,t){let i=this.drawableList.getDrawables().get(e);return!!i&&(i.visible=t,!0)}setMarkupsVisibility(e){this.drawableList.getDrawables().forEach((t=>t.visible=e))}clearAll(){this.drawableList.clear(),this.textInput&&(this.textInput.style.display="none"),this.undoRedoHelper.clear(),this.isDrawing&&this.reset(),this.render()}isMarkupActive(){return this.actived}activate(){this.actived=!0,this.inputManager.addEventListener("pointerdown",this.mousedown),this.inputManager.addEventListener("pointermove",this.mousemove),this.inputManager.addEventListener("pointerup",this.mouseup),this.inputManager.addEventListener("keydown",this.keydown);let e=this.viewer.controls;this.tempKey=e.mouseButtons.left,e.mouseButtons.left=et.NONE,this.tempArrowKeys=e.keys,e.keys={},this.render()}deactivate(){this.actived=!1,this.inputManager.removeEventListener("pointerdown",this.mousedown),this.inputManager.removeEventListener("pointermove",this.mousemove),this.inputManager.removeEventListener("pointerup",this.mouseup),this.inputManager.removeEventListener("keydown",this.keydown),this.viewer.controls.mouseButtons.left=this.tempKey,this.viewer.controls.keys=this.tempArrowKeys,this.textInput&&this.textInput.remove(),this.textInput=void 0,this.textInitialPosition=void 0,this.mouseDown=!1,this.tempPoints=[],this.isDrawing=!1,this.creatingShape=void 0,this.selectedShape&&(this.selectedShape.selected=!1,this.selectedShape=void 0)}getActiveMarkupType(){return this.type}setDrawType(e){this.type=e,this.reset()}setLineWidth(e){this.lineWidth=e}getLineWidth(){return this.lineWidth}setLineColor(e){this.lineColor=e}getLineColor(){return this.lineColor}setFillColor(e){this.fillColor=e}getFillColor(){return this.fillColor}setFontSize(e){this.fontSize=e}getFontSize(){return this.fontSize}pickPositionByScreenPoint(e){let t=new A,i=Ai.screenPoint2NdcPoint(e,this.camera,this.viewerCanvas);this.raycaster.setFromCamera(i,this.camera);let r=this.viewer.scene,n=this.raycaster.intersectObject(this.viewer.groundPlane||r)||[];return n.length>0&&t.copy(n[0].point),t}pickThreejsPositionByMouse(e){return this.pickPositionByScreenPoint(new le(e.x,e.y))}confirmToRemove(e){this.selectedShape&&e&&(this.removeMarkup(this.selectedShape),this.viewer.dispatchEvent("MarkupRemoved",this.selectedShape.getData()),this.selectedShape=void 0)}isEditing(){return!!this.initialDataForEditing}endEdit(e){let t=e.getData();this.undoRedoHelper.addRecord("Update",{from:this.initialDataForEditing,to:t}),this.initialDataForEditing=void 0,this.viewer.dispatchEvent("MarkupUpdated",t)}endDraw(e){if(e){let t=e.getData();this.undoRedoHelper.addRecord("Add",t),this.viewer.dispatchEvent("MarkupAdded",t)}this.reset()}cancelDraw(e){e&&this.removeMarkup(e,!1),this.reset()}reset(){this.textInput&&(this.textInput.style.display="none",this.textInput.value=""),this.textInitialPosition=void 0,this.tempPoints=[],this.isDrawing=!1,this.creatingShape=void 0,this.mouseDownPositionX=void 0,this.mouseDownPositionY=void 0,this.selectedShape&&(this.selectedShape.selected=!1,this.selectedShape=void 0),this.render()}render(){var e;null==(e=this.overlayRender)||e.render()}addMarkup(e,t=!0){this.drawableList.addDrawable(e),this.render(),t&&this.undoRedoHelper.addRecord("Add",e.getData())}updateMarkup(e,t,i=!0){this.drawableList.updateDrawable(e,t),this.render(),i&&this.undoRedoHelper.addRecord("Update",e.getData())}removeMarkup(e,t=!0){this.drawableList.removeDrawable(e),this.render(),t&&this.undoRedoHelper.addRecord("Remove",e.getData())}removeMarkupById(e,t=!0){let i=this.getMarkupById(e);return!!i&&(this.drawableList.removeDrawable(i),this.render(),t&&this.undoRedoHelper.addRecord("Remove",i.getData()),!0)}createMarkup(e){return wr.createDrawable(e)}getMarkupById(e){return this.drawableList.getDrawableById(e)}getMarkupData(){return this.drawableList.getDrawableDatas()}setMarkupData(e){this.drawableList.clear(),this.drawableList.setDrawableDatas(e),this.render()}isCreateLineMode(){return["PolylineMarkup","CloudLineMarkup"].includes(this.type)}isCreateDotMode(){return["DotMarkup"].includes(this.type)}isCreateTextMode(){return["TextMarkup"].includes(this.type)}isCreateShapeMode(){return["XMarkup","RectMarkup","CloudRectMarkup","CircleMarkup","EllipseMarkup","ArrowMarkup","DotMarkup"].includes(this.type)}drawShape(e,t){let i=[[e.x,e.y]];return t&&i.push([t.x,t.y]),wr.createDrawable({id:_t.guid(),lineWidth:this.lineWidth,lineColor:this.lineColor,fillColor:this.fillColor,type:this.type,points:i})}drawLine(e){return wr.createDrawable({id:_t.guid(),lineWidth:this.lineWidth,lineColor:this.lineColor,fillColor:this.fillColor,type:this.type,points:e.map((e=>[e.x,e.y]))})}drawText(e,t){return wr.createDrawable({id:_t.guid(),lineWidth:this.lineWidth,lineColor:this.lineColor,fillColor:this.fillColor,fontSize:this.fontSize*this.overlayRender.getPixelSize(1,this.camera),type:this.type,text:t,points:[[e.x,e.y]]})}addInput(e,t){var i;if(!this.textInput){let e,t=document.createElement("textarea");t.style.cssText=`\n position: fixed;\n border: 1px solid red;\n background: transparent;\n outline: none;\n resize: none;\n overflow: hidden;\n z-index: 1000;\n box-sizing: content-box;\n padding: 0px 2px;\n color: ${this.lineColor}`,t.setAttribute("wrap","off"),t.onkeydown=e=>{if("Enter"===e.key){let e=parseInt(t.style.height);t.style.height=`${e+this.fontSize}px`}this.isDrawing=!0},t.onkeyup=t=>{var i;let r=t.target.value,n=(null==(i=this.overlayRender)?void 0:i.measureTextLength(r,`${this.fontSize}px Arial`))||0;n>50&&(e&&clearTimeout(e),e=setTimeout((()=>{t.target.style.width=`${n+4}px`}),0))},t.onchange=e=>{console.log(e)},t.onblur=e=>{let t=e.target.value;if(t.length>0&&this.textInitialPosition){let e=this.creatingShape=this.drawText(this.textInitialPosition,t);e.setTolerance(this.overlayRender.getPixelSize(1,this.camera)),this.addMarkup(e,!1),this.endDraw(this.creatingShape)}},null==(i=this.viewer.viewerContainer)||i.appendChild(t),this.textInput=t}setTimeout((()=>{this.textInput.blur(),this.textInput.focus()}),0),this.textInput.style.width="50px",this.textInput.style.height=`${this.fontSize}px`,this.textInput.style.lineHeight=`${this.fontSize}px`,this.textInput.style.fontSize=`${this.fontSize}px`,this.textInput.style.color=this.lineColor,this.textInput.style.display="inline-block",this.textInput.style.left=e+4+"px",this.textInput.style.top=t-this.fontSize+"px"}undo(){let e=this.undoRedoHelper.undo();if(e){let t={Add:"MarkupRemoved",Update:"MarkupUpdated",Remove:"MarkupAdded"};this.viewer.dispatchEvent(t[e.type],e.payload.to?e.payload.to:e.payload)}}redo(){let e=this.undoRedoHelper.redo();if(e){let t={Add:"MarkupAdded",Update:"MarkupUpdated",Remove:"MarkupRemoved"};this.viewer.dispatchEvent(t[e.type],e.payload.to?e.payload.to:e.payload)}}clearUndoRedo(){this.undoRedoHelper.clear()}destroy(){this.deactivate(),this.clearAll()}},eCe=new A,A0=class extends Na{constructor(e,t){super(e),this.lineSegments=[],this.boxes=t,this.lineColor="red",this.lineWidth=2,this.calculateCloudLineSegments(t)}calculateCloudLineSegments(e){var t;for(let i=0;it.visible=e)),this.viewer.enableRender()}},$n=kn($l(),1);function gE(e){return{all:e=e||new Map,on:function(t,i){var r=e.get(t);r?r.push(i):e.set(t,[i])},off:function(t,i){var r=e.get(t);r&&(i?r.splice(r.indexOf(i)>>>0,1):e.set(t,[]))},emit:function(t,i){var r=e.get(t);r&&r.slice().map((function(e){e(i)})),(r=e.get("*"))&&r.slice().map((function(e){e(t,i)}))}}}var GO=(e=>(e[e.ClickEvent=1]="ClickEvent",e[e.Popup=2]="Popup",e[e.SubMenu=3]="SubMenu",e[e.Switch=4]="Switch",e))(GO||{}),H_=(e=>(e.HomeView="HomeView",e.OrthoMode="OrthoMode",e.Measure="Measure",e.MeasureDistance="MeasureDistance",e.MeasureArea="MeasureArea",e.MeasureAngle="MeasureAngle",e.MeasureCoordinate="MeasureCoordinate",e.MeasureClear="MeasureClear",e.Markup="Markup",e.MarkupArrow="Arrow",e.MarkupRect="Rect",e.MarkupCloudRect="CloudRect",e.MarkupPolyLine="PolyLine",e.MarkupCloudLine="CloudLine",e.MarkupEllipse="Ellipse",e.MarkupCircle="Circle",e.MarkupDot="Dot",e.MarkupText="Text",e.MarkupX="X",e.MarkupStrokeStyle="StrokeStyle",e.MarkupLineWidth="LineWidth",e.MarkupLineWidth2="LineWidth2",e.MarkupLineWidth5="LineWidth5",e.MarkupLineWidth10="LineWidth10",e.MarkupFontSize="FontSize",e.MarkupFontSize14="FontSize14",e.MarkupFontSize18="FontSize18",e.MarkupFontSize24="FontSize24",e.MarkupClear="MarkupClear",e.MarkupQuit="MarkupQuit",e.Section="Section",e.SectionBox="SectionBox",e.SectionPlane="SectionPlane",e.SectionAxis="SectionAxis",e.BimTree="BimTree",e.Viewpoint="Viewpoint",e.Annotation="Annotation",e.Property="Property",e.Settings="Settings",e.Compared="Compared",e.QuitCompare="QuitCompare",e.Fullscreen="FullScreen",e.SceneClear="SceneClear",e.Layers="Layers",e.ZoomToRectangle="ZoomToRectangle",e.Screenshot="GetScreenshot",e))(H_||{}),rCe=[["HomeView","OrthoMode","FullScreen","ZoomToRectangle","GetScreenshot"],["Measure","Markup","Section"],["BimTree","Viewpoint","Annotation","Property","Compared","QuitCompare","Layers"],["Settings"]],bh=class{constructor(e,t,i=[...rCe]){this.bimViewer=e,this.menuConfig=t,this.groupConfig=i,this.visible=!0,this.menuList=new Map,this.keydown=e=>{var t,i;if(this.visible&&"Escape"===e.code){if(null!=(t=this.bimViewer.getMeasurementManager())&&t.isMeasurementMeasuring()||null!=(i=this.bimViewer.getMarkupManager())&&i.isMarkupActive())return;this.clearActive()}},this.init(),window.addEventListener("keydown",this.keydown,!1)}init(){var e;let t=document.createElement("div");t.classList.add("toolbar"),this.groupConfig.forEach(((e,i)=>{let r=document.createElement("div");r.classList.add("toolbar-group");let n=document.createElement("div");n.classList.add("toolbar-group-division"),e.forEach((e=>{let t=(0,$n.get)(this.menuConfig,e);if(t&&!1!==t.visible){let i=this.createToolbarMenu(this.bimViewer,e,t);r.appendChild(i.element)}})),r.hasChildNodes()&&(i&&t.appendChild(n),t.appendChild(r))})),this.element=t,null==(e=this.bimViewer.widgetContainer)||e.appendChild(t),t.oncontextmenu=e=>{e.preventDefault()}}clearActive(){if(this.activateMenuId){let e=this.menuList.get(this.activateMenuId);null==e||e.setActive(!1),this.activateMenuId=void 0}}createToolbarMenu(e,t,i,r){let n=new DG(e,this,t,i,r);if(this.menuList.set(t,n),i.children){let t=document.createElement("div");t.classList.add("toolbar-sub-menu");let r=document.createElement("div");r.classList.add("toolbar-sub-menu-list"),t.appendChild(r),(0,$n.forIn)(i.children,((t,i)=>{if(t&&!1!==t.visible){let s=this.createToolbarMenu(e,i,t,n);r.appendChild(s.element)}})),n.element.appendChild(t)}return n}updateMenu(e,t){(0,$n.assign)(this.menuConfig[e],t),this.refresh()}updateMenus(e){(0,$n.forEach)(e,(({menuId:e,config:t})=>{(0,$n.assign)(this.menuConfig[e],t)})),this.refresh()}addMenu(e,t,i){if((0,$n.keys)(this.menuConfig).includes(e))ie.error("[Toolbar]",e,"exists.");else{if((0,$n.assign)(this.menuConfig,{[e]:t}),i){let[t,r]=i;if(t>this.groupConfig.length-1)this.groupConfig=(0,$n.concat)(this.groupConfig,[[e]]);else{let i=this.groupConfig[t];this.groupConfig[t]=r>i.length-1?(0,$n.concat)(i,e):(0,$n.concat)((0,$n.take)(i,r),e,(0,$n.takeRight)(i,i.length-r))}}else this.groupConfig=(0,$n.concat)(this.groupConfig,[[e]]);this.refresh()}}refresh(){this.element&&this.element.remove(),this.element=void 0,this.menuList.clear(),this.init()}show(){this.element&&(this.element.style.display=""),this.visible=!0}hide(){this.element&&(this.element.style.display="none"),this.visible=!1}destroy(){this.element&&this.element.remove(),this.element=void 0,this.menuList.clear(),window.removeEventListener("keydown",this.keydown,!1)}},DG=class{constructor(e,t,i,r,n){this.bimViewer=e,this.toolbar=t,this.menuId=i,this.eventBus=gE(),this.active=r.defaultActive||!1,this.element=r.customElement&&r.customElement(e,this.menuId,r)||this.createButton(e,this.menuId,r),this.eventBus.on("activeChange",(t=>{t?(this.element.classList.add("active"),(0,$n.forEach)(r.mutexIds,(e=>{var t;let i=null==(t=this.toolbar)?void 0:t.menuList.get(e);i&&i.active&&i.setActive(!1)})),r.onActive&&r.onActive(e)):(this.element.classList.remove("active"),r.onDeactive&&r.onDeactive(e)),this.element.firstChild instanceof HTMLElement&&UC(this.element.firstChild.classList,r.icon,this.active),n&&n.setActive(t)})),this.element.onclick=t=>{switch(t.stopPropagation(),r.type){case 1:r.onClick&&r.onClick(e,this.toolbar,t);break;case 4:r.onClick&&r.onClick(e,this.toolbar,t),this.active=!this.active,this.toolbar.activateMenuId=this.menuId,this.eventBus.emit("activeChange",this.active)}}}createButton(e,t,i){let r=document.createElement("div");r.id=t,r.classList.add("toolbar-menu"),i.defaultActive&&r.classList.add("active"),i.children&&r.classList.add("toolbar-parent-menu");let{default:n="icon-new",iconFont:s=fo}=i.icon;return r.innerHTML=`
`,r.title=Eh(i.menuName),r.innerHTML+=`${r.title}`,r}setActive(e){this.active=e,this.eventBus.emit("activeChange",this.active)}},iCe={Arrow:{menuName:"Toolbar.markupArrow",icon:{default:"icon-arrow",iconFont:"iconfont"},type:4,onActive:e=>{e.activateMarkup("ArrowMarkup")},onDeactive(e){e.deactivateMarkup()},mutexIds:["Rect","CloudRect","PolyLine","CloudLine","Ellipse","Circle","Dot","Text","X"]},Rect:{defaultActive:!1,menuName:"Toolbar.markupRect",icon:{default:"icon-rectangle",iconFont:"iconfont"},type:4,onActive:e=>{e.activateMarkup("RectMarkup")},onDeactive(e){e.deactivateMarkup()},mutexIds:["Arrow","CloudRect","PolyLine","CloudLine","Ellipse","Circle","Dot","Text","X"]},CloudRect:{defaultActive:!0,menuName:"Toolbar.markupCloudRect",icon:{default:"icon-cloud",iconFont:"iconfont"},type:4,onActive:e=>{e.activateMarkup("CloudRectMarkup")},onDeactive(e){e.deactivateMarkup()},mutexIds:["Rect","Arrow","PolyLine","CloudLine","Ellipse","Circle","Dot","Text","X"]},PolyLine:{menuName:"Toolbar.markupPolyLine",icon:{default:"icon-polyline",iconFont:"iconfont"},type:4,onActive:e=>{e.activateMarkup("PolylineMarkup")},onDeactive(e){e.deactivateMarkup()},mutexIds:["Rect","Arrow","CloudRect","CloudLine","Ellipse","Circle","Dot","Text","X"]},CloudLine:{menuName:"Toolbar.markupCloudLine",icon:{default:"icon-cloud-segment",iconFont:"iconfont"},type:4,onActive:e=>{e.activateMarkup("CloudLineMarkup")},onDeactive(e){e.deactivateMarkup()},mutexIds:["Rect","CloudRect","PolyLine","Arrow","Ellipse","Circle","Dot","Text","X"]},Ellipse:{menuName:"Toolbar.markupEllipse",icon:{default:"icon-oval",iconFont:"iconfont"},type:4,onActive:e=>{e.activateMarkup("EllipseMarkup")},onDeactive(e){e.deactivateMarkup()},mutexIds:["Rect","CloudRect","PolyLine","CloudLine","Arrow","Circle","Dot","Text","X"]},Circle:{menuName:"Toolbar.markupCircle",icon:{default:"icon-round",iconFont:"iconfont"},type:4,onActive:e=>{e.activateMarkup("CircleMarkup")},onDeactive(e){e.deactivateMarkup()},mutexIds:["Rect","CloudRect","PolyLine","CloudLine","Ellipse","Arrow","Dot","Text","X"]},Dot:{menuName:"Toolbar.markupDot",icon:{default:"icon-round",iconFont:"iconfont"},type:4,onActive:e=>{e.activateMarkup("DotMarkup")},onDeactive(e){e.deactivateMarkup()},mutexIds:["Rect","CloudRect","PolyLine","CloudLine","Ellipse","Arrow","Circle","Text","X"]},X:{menuName:"Toolbar.markupX",icon:{default:"icon-cross",iconFont:"iconfont"},type:4,onActive:e=>{e.activateMarkup("XMarkup")},onDeactive(e){e.deactivateMarkup()},mutexIds:["Rect","CloudRect","PolyLine","CloudLine","Ellipse","Circle","Dot","Arrow","Text"]},Text:{menuName:"Toolbar.markupText",icon:{default:"icon-text",iconFont:"iconfont"},type:4,onActive:e=>{e.activateMarkup("TextMarkup")},onDeactive(e){e.deactivateMarkup()},mutexIds:["Rect","CloudRect","PolyLine","CloudLine","Ellipse","Circle","Dot","Arrow","X"]},StrokeStyle:{menuName:"Toolbar.markupStroke",icon:{default:"icon-color-red",iconFont:"iconfont"},type:1,onClick:(e,t,i)=>{let r=i.target.parentElement,n=null==r?void 0:r.firstElementChild,s=document.createElement("input");s.setAttribute("type","color"),s.style.position="absolute",s.style.left=`${i.x}px`,s.style.top=`${i.y}px`,s.value=e.getMarkupLineColor(),s.click(),s.oninput=t=>{let i=t.target.value;e.setMarkupLineColor(i),n.style.color=i}}},LineWidth:{menuName:"Toolbar.markupLineWidth",icon:{default:"icon-line",iconFont:"iconfont"},customElement(e,t,i){let r=document.createElement("div");return r.id=t,r.classList.add("toolbar-menu"),i.children&&r.classList.add("toolbar-parent-menu"),r.title=Eh(i.menuName),r.innerHTML+=`${r.title}`,r},type:3,children:{LineWidth2:{defaultActive:!0,icon:{default:"icon-line-2",iconFont:"iconfont"},onClick:e=>{e.setMarkupLineWidth(2)},type:4,menuName:"Toolbar.markupLineWidth2",mutexIds:["LineWidth5","LineWidth10"]},LineWidth5:{icon:{default:"icon-line-3",iconFont:"iconfont"},onClick:e=>{e.setMarkupLineWidth(3)},type:4,menuName:"Toolbar.markupLineWidth5",mutexIds:["LineWidth2","LineWidth10"]},LineWidth10:{icon:{default:"icon-line-4",iconFont:"iconfont"},onClick:e=>{e.setMarkupLineWidth(4)},type:4,menuName:"Toolbar.markupLineWidth10",mutexIds:["LineWidth2","LineWidth5"]}}},FontSize:{menuName:"Toolbar.markupFontSize",icon:{default:"icon-font"},customElement(e,t,i){let r=document.createElement("div");return r.id=t,r.classList.add("toolbar-menu"),i.children&&r.classList.add("toolbar-parent-menu"),r.title=Eh(i.menuName),r.innerHTML+=`${r.title}`,r},type:3,children:{FontSize14:{icon:{default:"icon-font14",iconFont:"iconfont"},onClick:e=>{e.setMarkupFontSize(14)},type:4,menuName:"",mutexIds:["FontSize18","FontSize24"]},FontSize18:{defaultActive:!0,icon:{default:"icon-font18",iconFont:"iconfont"},onClick:e=>{e.setMarkupFontSize(18)},type:4,menuName:"",mutexIds:["FontSize14","FontSize24"]},FontSize24:{icon:{default:"icon-font24",iconFont:"iconfont"},onClick:e=>{e.setMarkupFontSize(24)},type:4,menuName:"",mutexIds:["FontSize14","FontSize18"]}}},MarkupClear:{icon:{default:"icon-eraser",iconFont:"iconfont"},onClick:e=>{ie.info("[Toolbar]","Clear Markup",e),e.clearMarkups()},type:1,menuName:"Toolbar.clearMarkup"},MarkupQuit:{icon:{default:""},customElement(e,t,i){let r=document.createElement("div");return r.id=t,r.classList.add("toolbar-menu"),i.children&&r.classList.add("toolbar-parent-menu"),r.title=Eh(i.menuName),r.innerHTML+=`${r.title}`,r},onClick:(e,t)=>{var i;e.deactivateMarkup(),t.destroy(),null==(i=e.toolbar)||i.show()},type:1,menuName:"Toolbar.quitMarkup"}},fFt=[["Arrow","Rect","CloudRect","PolyLine","Ellipse","Circle","Text","StrokeStyle","FontSize","MarkupClear","MarkupQuit"]],VO=class extends bh{constructor(e,t,i=[...fFt]){super(e,t,i),this.keydown=()=>{}}},vE=class{constructor(e,t,i=document.body){this.container=i,this.isFollowing=!1,this.diffX=0,this.diffY=0,this.start=e=>{this.isFollowing=!0,this.diffX=e.clientX-this.element.offsetLeft,this.diffY=e.clientY-this.element.offsetTop},this.stop=()=>{this.isFollowing=!1},this.follow=e=>{if(!this.isFollowing)return;let t=e.clientX-this.diffX,i=e.clientY-this.diffY;this.element.style.left=t+"px",this.element.style.top=i+"px"},this.element=document.createElement("div"),this.element.id=e,this.element.classList.add("pop-panel");let r=document.createElement("div");r.classList.add("pop-panel-header"),r.append(t),this.element.appendChild(r),this.header=r;let n=document.createElement("div");n.classList.add("pop-panel-body"),this.element.appendChild(n),this.body=n,r.addEventListener(qB,this.start),r.addEventListener(WB,this.stop),document.body.addEventListener(wf,this.follow),this.container.appendChild(this.element)}destroy(){document.body.removeEventListener(wf,this.follow),this.element.removeEventListener(qB,this.start),this.element.removeEventListener(WB,this.stop),this.element.remove()}},ka=new A(1,0,0),tm=new A(0,1,0),rm=new A(0,0,1),nCe=new A(0,1,0),U_=new Be,CG=2,ru=class extends ur{constructor(e=ka){super(),this.redMaterial=new lr({color:16711680,depthTest:!1}),this.greenMaterial=new lr({color:65280,depthTest:!1}),this.blueMaterial=new lr({color:255,depthTest:!1}),this.highlightMaterial=new lr({color:16776960,depthTest:!1}),this.pickableMaterial=new lr({color:9807270,depthTest:!1}),this.initIgnoreClipMaterial(),this.initOrUpdateByAxis(e)}initIgnoreClipMaterial(){[this.redMaterial,this.greenMaterial,this.blueMaterial,this.highlightMaterial,this.pickableMaterial].forEach((e=>{e.onBeforeCompile=function(e,t){e.fragmentShader=e.fragmentShader.replace("#include ","").replace("#include ",""),e.vertexShader=e.vertexShader.replace("#include ","").replace("#include ","")}}))}setDirection(e){let t=new Hr;t.setFromUnitVectors(ka,e),this.applyQuaternion(t)}initOrUpdateByAxis(e){this.clear(),[{actionType:"TranslateX",direction:ka,material:this.redMaterial},{actionType:"TranslateY",direction:tm,material:this.greenMaterial},{actionType:"TranslateZ",direction:rm,material:this.blueMaterial}].forEach((t=>{let{actionType:i,direction:r,material:n}=t,s=this.createTranslateGizmo(i,r,CG,0===r.angleTo(e)?n:this.pickableMaterial);this.add(s)})),[{actionType:"RotateX",direction:ka,material:this.redMaterial,degree:90},{actionType:"RotateY",direction:tm,material:this.greenMaterial,degree:90},{actionType:"RotateZ",direction:rm,material:this.blueMaterial,degree:90}].forEach((t=>{let{actionType:i,direction:r,material:n,degree:s}=t;if(0!==r.angleTo(e)){let e=this.createRotateGizmo(i,r,CG,n,s);this.add(e)}})),this.createSphere(1,this.pickableMaterial)}createTranslateGizmo(e,t,i,r){let n=t.angleTo(nCe),s=nCe.clone().cross(t);U_.makeRotationAxis(s,n);let a=new Cl(i/5,i/5,20*i),o=10*i;a.translate(0,o,0),a.applyMatrix4(U_);let l=new Cl(0,i,3*i),h=2*o;l.translate(0,h,0),l.applyMatrix4(U_);let u=qo([l,a]),c=new rt(u,r);return c.userData.actionType=e,r===this.pickableMaterial&&c.layers.set(11),c}createRotateGizmo(e,t,i,r,n){let s=new A(0,0,1),a=t.clone().cross(s),o=t.angleTo(s);U_.makeRotationAxis(a,o);let l=new Ap(12*i,i/5,8,36,_r.degToRad(n));l.applyMatrix4(U_);let h=new rt(l,r);return h.userData.actionType=e,h}createSphere(e,t){let i=new so(e,32,16),r=new rt(i,t);r.layers.set(11),this.add(r)}setActiveAxis(e){this.initOrUpdateByAxis(e)}createHoverRotateObjectByAxis(e){let t=ka;switch(e){case"RotateX":t=ka;break;case"RotateY":t=tm;break;case"RotateZ":t=rm}return this.createRotateGizmo("",t,CG,this.highlightMaterial,360)}setActive(e,t){var i;let r=t.userData.actionType;["RotateX","RotateY","RotateZ"].includes(r)?e?(this.hoverObject=this.createHoverRotateObjectByAxis(r),this.add(this.hoverObject),t.visible=!1):(null==(i=this.hoverObject)||i.removeFromParent(),t.visible=!0,this.hoverObject=void 0):e?(this.originalMaterial=t.material,t.material=this.highlightMaterial):this.originalMaterial&&(t.material=this.originalMaterial)}adjustSize(e){let t=new A;this.getWorldPosition(t);let i=e.position,r=1;e instanceof ki?r=(e.top-e.bottom)/e.zoom:e instanceof kr&&(r=t.distanceTo(i)*Math.min(1.9*Math.tan(Math.PI*e.fov/360)/e.zoom,7)),this.scale.set(1,1,1).multiplyScalar(r/180)}},im=class{constructor(e,t){if(this.mouseDown=!1,this.lastWorldPos=new A,this.mouseMoved=!1,this.dragStarted=!1,this.refrencePlane=new xi,this.isShowSectionPlane=!1,this.mousedown=e=>{0===e.button&&this.camera&&this.selectedObject&&(this.mouseDown=!0)},this.mousemove=e=>{if(this.dragStarted)this.updateRaycasterByMouse(e),this.onDragMove(e);else{this.activateSelectedObject(!1);let t=this.getIntersections(e);t?(this.selectedObject=t.object,this.activateSelectedObject(!0),this.mouseDown&&(this.dragStarted||(this.dragStarted=!0,this.onDragStart(e)))):this.selectedObject=void 0}this.viewer.enableRender()},this.mouseup=e=>{0===e.button&&(this.mouseDown&&this.dragStarted&&(this.onDragEnd(e),this.dragStarted=!1),this.mouseDown=!1,this.selectedObject=void 0)},this.keydown=e=>{"Escape"===e.code&&this.deactivate()},!(e.camera&&e.renderer&&e.controls&&e.scene))throw new Error("Invalid bimViewer!");this.viewer=e,this.inputManager=t,this.scene=e.scene,this.renderer=e.renderer;let i=e.getBBox();if(!i)throw new Error("Need to set sectionBox first!");this.sectionBox=i.clone()}get canvas(){var e;return null==(e=this.viewer.renderer)?void 0:e.domElement}get isActive(){return!!this.raycaster}get camera(){return this.viewer.camera}get controls(){return this.viewer.controls}setGlobalClippingEnable(e){this.clipPlanes&&(e?(this.renderer.localClippingEnabled=!0,this.renderer.clippingPlanes=this.clipPlanes):(this.renderer.localClippingEnabled=!1,this.renderer.clippingPlanes=[]))}activate(){this.inputManager.addEventListener("pointerdown",this.mousedown),this.inputManager.addEventListener("pointermove",this.mousemove),this.inputManager.addEventListener("pointerup",this.mouseup),this.inputManager.addEventListener("keydown",this.keydown),this.raycaster=this.viewer.getRaycaster()}deactivate(){var e;this.inputManager.removeEventListener("pointerdown",this.mousedown),this.inputManager.removeEventListener("pointermove",this.mousemove),this.inputManager.removeEventListener("pointerup",this.mouseup),this.inputManager.removeEventListener("keydown",this.keydown),this.setGlobalClippingEnable(!1),null==(e=this.selectedObject)||e.removeFromParent(),this.selectedObject=void 0,this.dragStarted=!1,this.raycaster=void 0}getIntersections(e){if(!this.raycaster)return;this.updateRaycasterByMouse(e);let t=this.raycaster.intersectObjects(this.getIntersectObjects())||[];return t.find((e=>e.object&&e.object.parent instanceof ru))||t[0]}updateRaycasterByMouse(e){if(!this.raycaster)return;let t=new le(e.x,e.y),i=Ai.screenPoint2NdcPoint(t,this.camera,this.canvas);this.raycaster&&this.raycaster.layers.disable(11),this.raycaster.setFromCamera(i,this.camera)}destroy(){this.deactivate()}},aCe=new Dt,oCe=new Hr,zO=class extends rt{constructor(e,t){super(),this.vertices=[],this.actionType=e,this.geometry=new lt,this.vertices=t,this.geometry.setFromPoints(t),this.geometry.setIndex([0,1,2,0,2,3]),this.material=new lr({depthTest:!1,color:zO.normalPlaneColor,transparent:!0,opacity:.1,side:yi}),this.createIgnoreClipMateriasl(this.material),this.geometry.computeVertexNormals(),this.edge=this.createEdge(t),this.add(this.edge)}createIgnoreClipMateriasl(e){e.onBeforeCompile=function(e,t){e.fragmentShader=e.fragmentShader.replace("#include ","").replace("#include ",""),e.vertexShader=e.vertexShader.replace("#include ","").replace("#include ","")}}createEdge(e){let t=new lt;t.setFromPoints(e),t.setIndex([0,1,1,2,2,3,3,0]);let i=new vr({color:zO.normalLineColor});this.createIgnoreClipMateriasl(i);let r=new Ir(t,i);return r.layers.set(11),r}update(e){this.geometry.setFromPoints(e),this.geometry.computeBoundingSphere(),this.geometry.computeVertexNormals(),this.edge.geometry.setFromPoints(e),this.vertices=e}rotatePlane(e,t){let i=this.getPlaneCenter();oCe.setFromAxisAngle(e,t),this.vertices=this.vertices.map((e=>e.sub(i).applyQuaternion(oCe).add(i))),this.update(this.vertices)}setDirection(e){let t=new Hr;t.setFromUnitVectors(ka,e);let i=this.getPlaneCenter();this.vertices=this.vertices.map((e=>e.sub(i).applyQuaternion(t).add(i))),this.update(this.vertices)}getPlaneNormal(){let[e,t,i]=this.vertices,r=new A;return un.getNormal(e,t,i,r),r}setActive(e){this.material.opacity=e?.2:.1}getPlaneCenter(){aCe.setFromPoints(this.vertices);let e=new A;return aCe.getCenter(e),e}},on=zO;on.normalPlaneColor=new je(0,.855,.718),on.activePlaneColor=new je(1,1,0),on.normalLineColor=16777215;var lCe=(e=>(e.X="X",e.Y="Y",e.Z="Z",e))(lCe||{}),jO=class extends im{constructor(e,t){super(e,t),this.activeAxis="X",this.center=new A,this.sectionBox.getCenter(this.center),this.axisInfoMap={X:{normal:new A(1,0,0)},Y:{normal:new A(0,1,0)},Z:{normal:new A(0,0,1)}},this.viewer.addEventListener("RenderAfter",(()=>{var e;this.isActive&&(null==(e=this.gizmo)||e.adjustSize(this.camera))}))}activate(){super.activate(),this.setActiveAxis("X")}deactivate(){var e,t;super.deactivate(),null==(e=this.planeMesh)||e.removeFromParent(),null==(t=this.gizmo)||t.removeFromParent(),this.setGlobalClippingEnable(!1),this.planeMesh=void 0,this.gizmo=void 0}resetSection(){var e,t;null==(e=this.planeMesh)||e.removeFromParent(),null==(t=this.gizmo)||t.removeFromParent(),this.setGlobalClippingEnable(!1),this.planeMesh=void 0,this.gizmo=void 0,this.setActiveAxis("X")}setActiveAxis(e){this.activeAxis=e,this.initOrUpdateGizmo(),this.initOrUpdateSectionPlane(),this.initOrUpdateClipPlane(),this.setGlobalClippingEnable(!0),this.viewer.enableRender()}setSectionVisible(e){this.gizmo&&this.planeMesh&&(this.gizmo.visible=e,this.planeMesh.visible=e),this.isShowSectionPlane=e,this.viewer.enableRender()}initOrUpdateClipPlane(){switch(this.activeAxis){case"X":this.clipPlane=new xi(new A(-1,0,0),this.center.x);break;case"Y":this.clipPlane=new xi(new A(0,-1,0),this.center.y);break;case"Z":this.clipPlane=new xi(new A(0,0,-1),this.center.z)}this.clipPlane&&(this.clipPlanes=[this.clipPlane])}initOrUpdateSectionPlane(){var e;let t=new A;this.sectionBox.getSize(t);let i=t.length(),r=this.center,n=(new Dt).setFromCenterAndSize(r,new A(i,i,i)),{min:s,max:a}=n;switch(null==(e=this.planeMesh)||e.removeFromParent(),this.activeAxis){case"X":this.planeMesh=new on("X",[new A(r.x,a.y,s.z),new A(r.x,a.y,a.z),new A(r.x,s.y,a.z),new A(r.x,s.y,s.z)]);break;case"Y":this.planeMesh=new on("Y",[new A(a.x,r.y,s.z),new A(s.x,r.y,s.z),new A(s.x,r.y,a.z),new A(a.x,r.y,a.z)]);break;case"Z":this.planeMesh=new on("Z",[new A(a.x,a.y,r.z),new A(s.x,a.y,r.z),new A(s.x,s.y,r.z),new A(a.x,s.y,r.z)])}this.planeMesh&&this.scene.add(this.planeMesh),this.viewer.enableRender()}initOrUpdateGizmo(){var e,t;null==(e=this.gizmo)||e.removeFromParent();let i=this.axisInfoMap[this.activeAxis].normal;this.gizmo=new ru,this.gizmo.setDirection(i),this.sectionBox.getCenter(this.gizmo.position),null==(t=this.scene)||t.add(this.gizmo)}onDragStart(e){var t;if(this.selectedObject instanceof on)return;this.controls&&this.dragStarted&&this.selectedObject&&!(this.selectedObject instanceof on)&&(this.controls.enableRotate=!1),ie.info("[AxisPlaneSection] onDragStart:",e);let i=new A;this.sectionBox.getCenter(i),this.refrencePlane.setFromNormalAndCoplanarPoint(this.camera.getWorldDirection(this.refrencePlane.normal),i),null==(t=this.raycaster)||t.ray.intersectPlane(this.refrencePlane,this.lastWorldPos)}onDragMove(e){var t,i,r;if(!this.lastWorldPos||!this.selectedObject||!this.clipPlane||!this.planeMesh||!this.gizmo||this.selectedObject&&this.selectedObject instanceof on)return;let n=new A;null==(t=this.raycaster)||t.ray.intersectPlane(this.refrencePlane,n);let s=this.selectedObject.userData.actionType,a=(new A).subVectors(this.lastWorldPos,this.center).normalize(),o=(new A).subVectors(n,this.center).normalize(),l=(new A).subVectors(n,this.lastWorldPos).projectOnVector(ka.clone().applyQuaternion(this.gizmo.quaternion)),h=a.angleTo(o),u=(new A).crossVectors(a,o),c=new A;this.sectionBox.getSize(c);let p,d=Math.max(c.x,c.y,c.z);switch(s){case"TranslateX":case"TranslateY":case"TranslateZ":p=(new A).addVectors(this.gizmo.position,l),this.sectionBox.clone().setFromCenterAndSize(this.center,new A(d,d,d)).containsPoint(p)&&(null==(i=this.gizmo)||i.position.add(l),null==(r=this.planeMesh)||r.position.add(l));break;case"RotateX":{let e=ka.clone().applyQuaternion(this.gizmo.quaternion);u.dot(e)<0&&(h=-h),this.gizmo.rotateX(h),this.planeMesh.rotatePlane(e,h)}break;case"RotateY":{let e=tm.clone().applyQuaternion(this.gizmo.quaternion);u.dot(e)<0&&(h=-h),this.gizmo.rotateY(h),this.planeMesh.rotatePlane(e,h)}break;case"RotateZ":{let e=rm.clone().applyQuaternion(this.gizmo.quaternion);u.dot(e)<0&&(h=-h),this.gizmo.rotateZ(h),this.planeMesh.rotatePlane(e,h)}}this.clipPlane.setFromNormalAndCoplanarPoint(this.planeMesh.getPlaneNormal().negate(),this.gizmo.position),this.lastWorldPos=n}onDragEnd(e){this.selectedObject instanceof on||(this.controls&&!this.controls.enableRotate&&(this.controls.enableRotate=!0),this.activateSelectedObject(!1),this.dragStarted=!1,this.selectedObject=void 0,ie.info("[AxisPlaneSection] onDragEnd:",e))}getIntersectObjects(){return this.planeMesh&&this.gizmo?[this.planeMesh,this.gizmo]:[]}activateSelectedObject(e){this.selectedObject&&(this.selectedObject instanceof on?this.selectedObject.setActive(e):this.selectedObject.parent instanceof ru&&this.selectedObject.parent.setActive(e,this.selectedObject))}},WO=class extends vE{constructor(e){super("axis-section-pop-panel","轴向剖切",e.widgetContainer),this.axis="x",this.isVisible=!0,this.keydown=e=>{"Escape"===e.code&&this.destroy()},this.section=e.getActiveSection(),this.createGroupSelectLayout(),this.addGroupSelectItems(),this.createActiveSelectLayout(),this.addActiveItems(),window.addEventListener("keydown",this.keydown)}destroy(){super.destroy(),window.removeEventListener("keydown",this.keydown)}createGroupSelectLayout(){let e=document.createElement("div");e.classList.add("pop-panel-group-select"),this.body.appendChild(e),this.groupSelectNode=e}addGroupSelectItems(){let e=(e,t,i=!1)=>{let r=document.createElement("div");return r.classList.add("pop-panel-item"),r.setAttribute("itemName",e),r.append(t),i&&r.classList.add("active"),this.groupSelectNode&&this.groupSelectNode.appendChild(r),r},t=(e,t)=>s=>{s.stopPropagation(),this.activeItem!==e&&(i.classList.remove("active"),r.classList.remove("active"),n.classList.remove("active"),this.activeItem=e,t.classList.add("active"),this.section.setActiveAxis(e))},i=e("X","X",!0);i.onclick=t("X",i);let r=e("Y","Y");r.onclick=t("Y",r);let n=e("Z","Z");n.onclick=t("Z",n)}createActiveSelectLayout(){let e=document.createElement("div");e.classList.add("pop-panel-active-select"),this.body.appendChild(e),this.activeSelectNode=e}addActiveItems(){let e=(e,t)=>{let i=document.createElement("i");i.classList.add(fo),i.classList.add(t),e.innerHTML="",e.appendChild(i)},t=((t,i,r="")=>{let n=document.createElement("div");return n.classList.add("pop-panel-item"),i&&n.setAttribute("title",i),n.setAttribute("itemName",t),n.setAttribute("isActive","false"),e(n,r),n})("visible","隐藏剖切面","icon-hidesectionplane");t.onclick=()=>{this.isVisible=!this.isVisible,this.isVisible?(e(t,"icon-hidesectionplane"),t.setAttribute("title","隐藏剖切面")):(e(t,"icon-showsectionplane"),t.setAttribute("title","显示剖切面")),this.section.setSectionVisible(this.isVisible)}}},qO=class extends vE{constructor(e){super("pick-section-pop-panel","拾取面剖切",e.widgetContainer),this.isVisible=!0,this.enabled=!0,this.keydown=e=>{"Escape"===e.code&&this.destroy()},this.section=e.getActiveSection(),this.createActiveSelectLayout(),this.addActiveItems(),window.addEventListener("keydown",this.keydown)}destroy(){super.destroy(),window.removeEventListener("keydown",this.keydown)}createActiveSelectLayout(){let e=document.createElement("div");e.classList.add("pop-panel-active-select"),this.body.appendChild(e),this.activeSelectNode=e}addActiveItems(){let e=(e,t)=>{let i=document.createElement("i");i.classList.add(fo),i.classList.add(t),e.innerHTML="",e.appendChild(i)},t=(t,i,r="")=>{let n=document.createElement("div");return n.classList.add("pop-panel-item"),i&&n.setAttribute("title",i),n.setAttribute("itemName",t),n.setAttribute("isActive","false"),e(n,r),n},i=t("visible","隐藏剖切面","icon-hidesectionplane");i.onclick=()=>{this.enabled&&(this.isVisible=!this.isVisible,this.isVisible?(e(i,"icon-hidesectionplane"),i.setAttribute("title","隐藏剖切面")):(e(i,"icon-showsectionplane"),i.setAttribute("title","显示剖切面")),this.section.setSectionVisible(this.isVisible))},this.activeSelectNode&&this.activeSelectNode.appendChild(i),this.visibleNode=i;let r=t("reset","重置","icon-reset");r.onclick=t=>{t.stopPropagation(),this.enabled&&(this.isVisible=!0,e(i,"icon-hidesectionplane"),i.setAttribute("title","隐藏剖切面"),this.section.resetSection())},this.activeSelectNode&&this.activeSelectNode.appendChild(r),this.resetNode=r}enable(){this.enabled=!0,this.visibleNode&&this.visibleNode.classList.remove("disable")}disable(){this.enabled=!1,this.visibleNode&&this.visibleNode.classList.add("disable")}},rc=(e=>(e.Distance="Distance",e.Area="Area",e.Angle="Angle",e.Coordinate="Coordinate",e))(rc||{}),iu=class extends Os{constructor(e,t,i,r,n){super(),this.mouseMoved=!1,this.mouseDowned=!1,this.mouseDownPositionX=-1,this.mouseDownPositionY=-1,this.tempEdgeMaterial=new vr({color:16711680}),this.snapPoint=void 0,this.mousedown=e=>{this.mouseDownPositionX=e.x,this.mouseDownPositionY=e.y,this.mouseMoved=!1,this.mouseDowned=!0},this.mousemove=e=>{if(this.lastMoveEvent=e,this.mouseDownPositionX>=0&&this.mouseDownPositionY>=0&&(Math.abs(e.x-this.mouseDownPositionX)>5||Math.abs(e.y-this.mouseDownPositionY)>5)&&(this.mouseMoved=!0),this.mouseDowned)return;let t=this.getIntersections(e);if(!t.length)return;let i=Date.now();this.handleSnap(t),ie.debug(`[BaseMeasurement] this.handleSnap costs ${(Date.now()-i)/1e3}s`),this.snapPoint?(this.onMouseMove(this.snapPoint),this.viewer.enableRender()):console.warn("[BaseMeasurement] Failed to find a snap point!")},this.mouseup=e=>{this.mouseDowned=!1,this.mouseMoved||this.onMouseClick(e)},this.dblclick=()=>{ie.info("[Measure] Double clicked")},this.keydown=e=>{if("Enter"===e.code){let e={x:0,y:0,pageX:0,pageY:0,clientX:0,clientY:0,deltaX:0,deltaY:0,button:2,movementX:0,movementY:0,deltaMode:0,pointerId:0,timestamp:0,buttons:0,pointerType:"mouse",altKey:!1,ctrlKey:!1,shiftKey:!1,metaKey:!1};this.onMouseClick(e)}else"Escape"===e.code&&this.cancel()},this.getIntersections=e=>{if(!this.raycaster)return[];this.raycaster&&this.raycaster.layers.disable(10);let t=this.viewer.getRaycastableObjectsByMouse(e);ie.debug(`[BaseMeasurement] The count of raycastable object is ${t.length}`,t);let i=Date.now(),r=this.raycaster.intersectObjects(t,!0)||[];return ie.debug(`[BaseMeasurement] this.raycaster.intersectObjects costs ${(Date.now()-i)/1e3}s`),this.renderer.clippingPlanes.length>0&&(r=r.filter((e=>this.renderer.clippingPlanes.every((function(t){return t.distanceToPoint(e.point)>0}))))),r},this.type=e,this.viewer=t,this.inputManager=i,this.drawList=r,this.osnapHelper=n}get canvas(){var e;return null==(e=this.viewer.renderer)?void 0:e.domElement}get camera(){return this.viewer.camera}get renderer(){return this.viewer.renderer}get isActive(){return!!this.raycaster}get isMeasuring(){return this.isActive&&!this.completed}activate(){this.inputManager.addEventListener("pointerdown",this.mousedown),this.inputManager.addEventListener("pointermove",this.mousemove),this.inputManager.addEventListener("pointerup",this.mouseup),this.inputManager.addEventListener("dblclick",this.dblclick),this.inputManager.addEventListener("keydown",this.keydown);let e=this.viewer.translate;if(e){this.tooltip=new gh("measure-tooltip",e("Tooltip.measure"),{followPointer:!0,showOnCreate:!0,parentNode:this.viewer.widgetContainer,target:this.canvas});let t=document.getElementById("measure-tooltip");t&&(t.style.pointerEvents="none")}this.setTooltipContent(),this.raycaster=this.viewer.getRaycaster()}deactivate(){var e,t;this.inputManager.removeEventListener("pointerdown",this.mousedown),this.inputManager.removeEventListener("pointermove",this.mousemove),this.inputManager.removeEventListener("pointerup",this.mouseup),this.inputManager.removeEventListener("dblclick",this.dblclick),this.inputManager.removeEventListener("keydown",this.keydown),null==(e=this.tooltip)||e.hide(),null==(t=this.tooltip)||t.destroy(),this.tooltip=void 0,this.raycaster=void 0,this.currentMeasureDrawable&&this.removeDrawable(this.currentMeasureDrawable),this.osnapHelper.deactivate(),this.drawingPoints=void 0,this.currentMeasureDrawable=void 0,this.lastMouseDownPosition=void 0}removeDrawable(e){this.drawList.removeDrawable(e)}clearClickedDrawable(){this.clickedOnMeasurementDrawable&&(this.clickedOnMeasurementDrawable.selected=!1,this.clickedOnMeasurementDrawable=void 0)}onMouseClick(e){let t=Date.now();if(!(this.lastClickTime&&t-this.lastClickTime<500)&&(this.lastClickTime=t,this.clickedOnMeasurementDrawable=void 0,null==this.completed||!0===this.completed)){let t=this.getIntersections(e)[0];if(t){let e=this.drawList.getDrawableByPosition(t.point,this.raycaster);e&&(this.dispatchEvent("clickedonmeasurement",e),this.clickedOnMeasurementDrawable=e)}}}getIntersectsOutline(e){var t,i;let r=[];for(let i=0;ie instanceof nn?0:e instanceof ci?2:e instanceof Ir?1:3;n.sort(((t,i)=>{let r=e(t.object),n=e(i.object);return r!==n?r-n:t.distance-i.distance}))}else r=e[0].point}r?(n=this.getIntersectsOutline(n),ie.debug("[BaseMeasurement] filteredIntersections:",n),this.snapPoint=(null==(i=this.osnapHelper.handleSnap(r,n,this.viewer.is3d(),this.lastMouseDownPosition))?void 0:i.clone())||e[0].point.clone(),this.snapPoint||(this.viewer.is3d()?this.snapPoint=e[0].point:this.snapPoint=r)):this.snapPoint=void 0}};iu.MAX_DISTANCE=5e3;var ca=class extends Na{constructor(e,t){super(e),this.type="Distance",this.labelBounds=new ns,this.drawing=!1,this.update(t)}setDrawingState(e){this.drawing=e}drawSelect(e,t){let i=this.getVertexs();this.drawPoints(e,t,i)}drawPoints(e,t,i){e.save(),e.fillStyle=ca.MAJOR_COLOR,e.strokeStyle=ca.MINOR_COLOR,e.lineWidth=ca.LINE_WIDTH,e.beginPath(),i.forEach((i=>{let r=this.transToScreenCoord(i,t);e.moveTo(r.x+ca.POINT_RADIUS,r.y),e.arc(r.x,r.y,ca.POINT_RADIUS,0,2*Math.PI)})),e.closePath(),e.fill(),e.stroke(),e.restore()}drawText(e,t){if(!this.label||!this.labelPositon)return;e.font=`${ca.LABEL_FONT_SIZE}px Arial`;let i=1.2*e.measureText(this.label).width,r=1.5*ca.LABEL_FONT_SIZE;this.labelBounds.setFromCenterAndSize(this.labelPositon,new le(i,r)),this.drawRoundRect(e,this.labelPositon.x-i/2,this.labelPositon.y-r/2,i,r,4),e.save(),e.fillStyle=ca.MINOR_COLOR,e.textBaseline="middle",e.textAlign="center",e.fillText(this.label,this.labelPositon.x,this.labelPositon.y),e.restore()}drawRoundRect(e,t,i,r,n,s){r<2*s&&(s=r/2),n<2*s&&(s=n/2),e.save(),e.fillStyle=ca.MAJOR_COLOR,e.strokeStyle=ca.MINOR_COLOR,e.lineWidth=ca.LINE_WIDTH,e.beginPath(),e.moveTo(t+s,i),e.arcTo(t+r,i,t+r,i+n,s),e.arcTo(t+r,i+n,t,i+n,s),e.arcTo(t,i+n,t,i,s),e.arcTo(t,i,t+r,i,s),e.closePath(),e.fill(),this.selected&&e.stroke(),e.restore()}getVertexs(){return this.points}update(e){let{min:t,max:i}=(new Dt).setFromPoints(e);return this.x=t.x,this.y=t.y,this.width=Math.abs(i.x-t.x),this.height=Math.abs(i.y-t.y),this.points=e,this}getBounds(){let e=this.getVertexs();return(new Dt).setFromPoints(e)}getData(){return{id:this.id,type:this.type,points:this.points.map((e=>[e.x,e.y,e.z]))}}setData(e){super.setData(e),this.setLineColor(ca.MAJOR_COLOR),this.setFillColor(ca.AREA_FILL_COLOR),this.setLineWidth(ca.LINE_WIDTH)}isPointInPath(e,t){let i=null==t?void 0:t.ray;if(!i)return!1;let r=3*this.tolerance,n=this.transToScreenCoord(e,t.camera);if(this.labelBounds.containsPoint(n))return!0;let s=new A,a=new A,o=this.points;for(let e=0;e{let n=this.transToScreenCoord(i,t);0===r?e.moveTo(n.x,n.y):e.lineTo(n.x,n.y)})),3===this.points.length){let[i,r,n]=this.points.map((e=>this.transToScreenCoord(e,t))),s=(new le).subVectors(i,r).normalize(),a=(new le).subVectors(n,r).normalize(),o=Math.min(i.distanceTo(r),n.distanceTo(r)),l=s.angle(),h=a.angle();e.moveTo(r.x,r.y),e.arc(r.x,r.y,o/5,l,h,s.cross(a)<0)}e.stroke(),e.restore(),this.drawing&&this.drawPoints(e,t,this.points.slice(0,this.points.length-1)),this.drawText(e,t)}drawText(e,t){if(this.points.length<3)return;let[i,r,n]=this.points,s=this.getAngleBisector(i,r,n),a=this.calculateAngle(i,r,n);this.label=`${qu(a,2)} ${this.getUnitString()}`;let o=.3*Math.min(i.distanceTo(r),n.distanceTo(r));this.labelPositon=this.transToScreenCoord(r.clone().add(new A(s.x*o,s.y*o,s.z*o)),t),super.drawText(e,t)}getAngleBisector(e,t,i){let r=e,n=t,s=i,a=new A(r.x-n.x,r.y-n.y,r.z-n.z).normalize(),o=new A(s.x-n.x,s.y-n.y,s.z-n.z).normalize();return new A(a.x+o.x,a.y+o.y,a.z+o.z).normalize()}calculateAngle(e,t,i){let r=e,n=t,s=i,a=new A(r.x-n.x,r.y-n.y,r.z-n.z),o=new A(s.x-n.x,s.y-n.y,s.z-n.z);return 180*a.angleTo(o)/Math.PI}getClassType(){return"Angle"}};wr._registerDrawableClass(B_);var YO=class extends iu{constructor(e,t,i,r){super("Angle",e,t,i,r)}onMouseMove(e){this.createOrUpdateAngleMeasureDrawable(e)}onMouseClick(e){var t;if(super.onMouseClick(e),this.clickedOnMeasurementDrawable)return;if(this.drawingPoints||(this.drawingPoints=[]),2===e.button)return this.drawingPoints=void 0,this.currentMeasureDrawable&&(this.removeDrawable(this.currentMeasureDrawable),this.currentMeasureDrawable=void 0),this.completed=void 0,void(this.lastMouseDownPosition=void 0);let i=this.getIntersections(e)[0];if(!i)return;let r=null!=(t=this.snapPoint)?t:null==i?void 0:i.point,n=this.drawingPoints;n.push(r),this.lastMouseDownPosition=r,1===n.length&&(this.dispatchEvent("firstpointpicked"),this.completed=!1),this.createOrUpdateAngleMeasureDrawable(),n.length>=3&&this.complete()}complete(){var e;null==(e=this.currentMeasureDrawable)||e.setDrawingState(!1),this.dispatchEvent("complete",this.currentMeasureDrawable),this.completed=!0,this.currentMeasureDrawable=void 0,this.drawingPoints=void 0,this.lastMouseDownPosition=void 0}cancel(){let e=this.drawingPoints;if(e&&e.length>0){if(e.pop(),0===e.length&&(this.currentMeasureDrawable&&(this.removeDrawable(this.currentMeasureDrawable),this.currentMeasureDrawable=void 0),this.completed=!0),this.lastMoveEvent){let e=this.getIntersections(this.lastMoveEvent)[0];e&&this.onMouseMove(e.point)}}else this.deactivate(),this.dispatchEvent("deactivate",this.type);this.osnapHelper.deactivate(),this.lastMouseDownPosition=void 0}deactivate(){super.deactivate(),this.currentMeasureDrawable&&this.removeDrawable(this.currentMeasureDrawable)}setTooltipContent(){var e;let t=this.viewer.translate;if(!t)return;let i=t("Tooltip.measure");i&&this.tooltip&&(null==(e=this.tooltip)||e.setContent(i))}createOrUpdateAngleMeasureDrawable(e){if(!this.drawingPoints||this.drawingPoints&&this.drawingPoints.length<1)return;let t=[...this.drawingPoints];this.currentMeasureDrawable||(this.currentMeasureDrawable=new B_(_t.guid(),this.drawingPoints),this.drawList.addDrawable(this.currentMeasureDrawable)),e&&t.push(e),this.currentMeasureDrawable.update(t),this.currentMeasureDrawable.setDrawingState(!0)}},k_=class extends Mi{constructor(e,t){super(e,t),this.type="Area",this.update(t)}draw(e,t){let i=this.points;e.save(),e.lineWidth=Mi.LINE_WIDTH,e.strokeStyle=Mi.MAJOR_COLOR,e.fillStyle=Mi.AREA_FILL_COLOR,e.beginPath(),i.forEach(((i,r)=>{let n=this.transToScreenCoord(i,t);0===r?e.moveTo(n.x,n.y):e.lineTo(n.x,n.y)})),e.closePath(),e.fill(),e.stroke(),e.restore(),this.drawing&&this.drawPoints(e,t,this.points.slice(0,this.points.length-1)),this.drawText(e,t)}drawText(e,t){let i=this.points,r=this.calculateArea(i);this.label=`${qu(r,2)}`,this.labelPositon=this.transToScreenCoord(this.getBarycenter(i),t),super.drawText(e,t)}calculateArea(e){let t=0,i=Mf.getFaces(e);for(let r=0;r{i+=e.x,r+=e.y,n+=e.z})),new A(i/t,r/t,n/t)}isPointInPath(e,t){let i=null==t?void 0:t.ray;if(!i)return!1;let r=this.transToScreenCoord(e,t.camera);if(this.labelBounds.containsPoint(r))return!0;let n=Mf.getFaces(this.points);for(let t=0;t=3&&!Mf.arePointsCoplanar([...r,s])?ie.warn("[Measure] The position is not coplanar with other points"):(r.push(s),this.lastMouseDownPosition=s,1===r.length&&(this.dispatchEvent("firstpointpicked"),this.completed=!1),this.createOrUpdateAreaMeasureDrawable())}complete(){var e;null==(e=this.currentMeasureDrawable)||e.setDrawingState(!1),this.dispatchEvent("complete",this.currentMeasureDrawable),this.completed=!0,this.drawingPoints=void 0,this.currentMeasureDrawable=void 0,this.lastMouseDownPosition=void 0}cancel(){let e=this.drawingPoints;if(e&&e.length>0){if(e.pop(),0===e.length&&(this.currentMeasureDrawable&&(this.removeDrawable(this.currentMeasureDrawable),this.currentMeasureDrawable=void 0),this.completed=!0),this.lastMoveEvent){let e=this.getIntersections(this.lastMoveEvent)[0];e&&this.onMouseMove(e.point)}}else this.deactivate(),this.dispatchEvent("deactivate",this.type);this.osnapHelper.deactivate(),this.lastMouseDownPosition=void 0}deactivate(){super.deactivate(),this.currentMeasureDrawable&&this.removeDrawable(this.currentMeasureDrawable)}setTooltipContent(){var e;let t=this.viewer.translate;if(t){let i=t("Tooltip.areaMeasurement");i&&this.tooltip&&(null==(e=this.tooltip)||e.setContent(i))}}createOrUpdateAreaMeasureDrawable(e){if(!this.drawingPoints||this.drawingPoints&&this.drawingPoints.length<1)return;let t=[...this.drawingPoints];this.currentMeasureDrawable||(this.currentMeasureDrawable=new k_(_t.guid(),this.drawingPoints),this.drawList.addDrawable(this.currentMeasureDrawable)),e&&t.push(e),this.currentMeasureDrawable.update(t),this.currentMeasureDrawable.setDrawingState(!0)}},G_=class extends Mi{constructor(e,t){super(e,t),this.type="Coordinate",this.update(t)}draw(e,t){this.drawText(e,t),e.save(),e.lineWidth=Mi.LINE_WIDTH,e.strokeStyle=Mi.MAJOR_COLOR,e.fillStyle=Mi.AREA_FILL_COLOR;let i=this.points;e.beginPath(),i.forEach((i=>{let r=this.transToScreenCoord(i,t);e.arc(r.x,r.y,Mi.POINT_RADIUS,0,2*Math.PI)})),e.fill(),e.stroke(),e.restore()}drawText(e,t){let i=this.points[0];ar.areNumbersEqual(i.x,0);let r=ar.areNumbersEqual(i.x,0)?0:i.x,n=ar.areNumbersEqual(i.y,0)?0:i.y,s=ar.areNumbersEqual(i.z,0)?0:i.z;this.label=`${qu(r,2)}, ${qu(n,2)}, ${qu(s,2)}`,e.font=`${Mi.LABEL_FONT_SIZE}px Arial`;let a=1.2*e.measureText(this.label).width,o=1.5*Mi.LABEL_FONT_SIZE;this.labelPositon=this.transToScreenCoord(i,t),this.labelPositon.y-=o/2,this.labelBounds.setFromCenterAndSize(this.labelPositon,new le(a,o)),this.drawRoundRect(e,this.labelPositon.x-a/2,this.labelPositon.y-o/2,a,o,4),e.save(),e.fillStyle=Mi.MINOR_COLOR,e.textBaseline="middle",e.textAlign="center",e.fillText(this.label,this.labelPositon.x,this.labelPositon.y),e.restore()}getClassType(){return"Coordinate"}};wr._registerDrawableClass(G_);var $O=class extends iu{constructor(e,t,i,r){super("Coordinate",e,t,i,r)}onMouseMove(e){this.createOrUpdatePointMarker(e)}onMouseClick(e){var t;if(super.onMouseClick(e),this.clickedOnMeasurementDrawable)return;if(this.drawingPoints||(this.drawingPoints=[]),2===e.button)return this.drawingPoints=void 0,this.currentMeasureDrawable&&(this.removeDrawable(this.currentMeasureDrawable),this.currentMeasureDrawable=void 0),this.completed=void 0,void(this.lastMouseDownPosition=void 0);let i=this.getIntersections(e)[0];if(!i)return;let r=null!=(t=this.snapPoint)?t:null==i?void 0:i.point,n=this.drawingPoints;n.push(r),this.lastMouseDownPosition=r,1===n.length&&(this.dispatchEvent("firstpointpicked"),this.completed=!1),this.createOrUpdatePointMarker(r),n.length>=1&&this.complete()}complete(){this.dispatchEvent("complete",this.currentMeasureDrawable),this.completed=!0,this.drawingPoints=void 0,this.currentMeasureDrawable=void 0,this.lastMouseDownPosition=void 0}cancel(){let e=this.drawingPoints;if(e&&e.length>0){if(e.pop(),0===e.length&&(this.completed=!0),this.lastMoveEvent){let e=this.getIntersections(this.lastMoveEvent)[0];e&&this.onMouseMove(e.point)}}else this.deactivate(),this.dispatchEvent("deactivate",this.type);this.osnapHelper.deactivate(),this.drawingPoints=void 0,this.currentMeasureDrawable=void 0,this.lastMouseDownPosition=void 0}setTooltipContent(){var e;let t=this.viewer.translate;if(t){let i=t("Tooltip.measure");i&&this.tooltip&&(null==(e=this.tooltip)||e.setContent(i))}}createOrUpdatePointMarker(e){if(!this.drawingPoints||this.drawingPoints&&this.drawingPoints.length<1)return;let t=[...this.drawingPoints];this.currentMeasureDrawable||(this.currentMeasureDrawable=new G_(_t.guid(),this.drawingPoints),this.currentMeasureDrawable.selected=!0,this.drawList.addDrawable(this.currentMeasureDrawable)),e&&t.push(e),this.currentMeasureDrawable.update(t)}},AG=class extends Mi{constructor(e,t){super(e,t),this.type="Distance",this.update(t)}draw(e,t){let i=this.points;e.save(),e.lineWidth=Mi.LINE_WIDTH,e.strokeStyle=Mi.MAJOR_COLOR,e.beginPath(),i.forEach(((i,r)=>{let n=this.transToScreenCoord(i,t);0===r?e.moveTo(n.x,n.y):e.lineTo(n.x,n.y)})),e.closePath(),e.stroke(),e.restore(),this.drawing?this.drawPoints(e,t,this.points.slice(0,this.points.length-1)):this.selected||this.drawVerticalLine(e,t),this.drawText(e,t)}drawText(e,t){if(this.points.length<2)return;let[i,r]=this.points,n=i.distanceTo(r);this.label=`${qu(n,2)}`,this.labelPositon=this.transToScreenCoord(i.clone().add(r).divideScalar(2),t),super.drawText(e,t)}drawVerticalLine(e,t){if(this.points.length<2)return;let[i,r]=this.points.map((e=>this.transToScreenCoord(e,t))),[n,s]=this.getShortLineBySegments(i,r),[a,o]=this.getShortLineBySegments(r,i);e.save(),e.lineWidth=Mi.LINE_WIDTH,e.strokeStyle=Mi.MAJOR_COLOR,e.beginPath(),e.moveTo(n.x,n.y),e.lineTo(s.x,s.y),e.moveTo(a.x,a.y),e.lineTo(o.x,o.y),e.stroke(),e.restore()}getShortLineBySegments(e,t){let i=(new le).subVectors(t,e).normalize(),r=AG.SHORT_LINE_LENGTH/2,n=Math.PI/2;return[i.clone().rotateAround(new le,n).normalize().multiplyScalar(r).add(e),i.clone().rotateAround(new le,-n).normalize().multiplyScalar(r).add(e)]}getClassType(){return"Distance"}},TE=AG;TE.SHORT_LINE_LENGTH=12,wr._registerDrawableClass(TE);var ua,ZO=class extends iu{constructor(e,t,i,r){super("Distance",e,t,i,r)}onMouseMove(e){this.createOrUpdateDistanceMeasureDrawable(e)}onMouseClick(e){var t;if(super.onMouseClick(e),this.clickedOnMeasurementDrawable)return;if(this.drawingPoints||(this.drawingPoints=[]),2===e.button)return this.drawingPoints=void 0,this.currentMeasureDrawable&&(this.removeDrawable(this.currentMeasureDrawable),this.currentMeasureDrawable=void 0),this.completed=void 0,void(this.lastMouseDownPosition=void 0);let i=this.getIntersections(e)[0];if(!i)return;let r=null!=(t=this.snapPoint)?t:null==i?void 0:i.point,n=this.drawingPoints;n.length<2&&n.push(r),this.lastMouseDownPosition=r,1===n.length&&(this.dispatchEvent("firstpointpicked"),this.completed=!1),this.createOrUpdateDistanceMeasureDrawable(),n.length>=2&&this.complete()}complete(){var e;null==(e=this.currentMeasureDrawable)||e.setDrawingState(!1),this.dispatchEvent("complete",this.currentMeasureDrawable),this.completed=!0,this.drawingPoints=void 0,this.currentMeasureDrawable=void 0,this.lastMouseDownPosition=void 0}cancel(){let e=this.drawingPoints;e&&e.length>0?(e.pop(),0===e.length&&(this.completed=!0),this.currentMeasureDrawable&&this.removeDrawable(this.currentMeasureDrawable)):(this.deactivate(),this.dispatchEvent("deactivate",this.type)),this.osnapHelper.deactivate(),this.drawingPoints=void 0,this.currentMeasureDrawable=void 0,this.lastMouseDownPosition=void 0}deactivate(){super.deactivate(),this.currentMeasureDrawable&&this.removeDrawable(this.currentMeasureDrawable)}setTooltipContent(){var e;let t=this.viewer.translate;if(t){let i=t("Tooltip.measure");i&&this.tooltip&&(null==(e=this.tooltip)||e.setContent(i))}}createOrUpdateDistanceMeasureDrawable(e){if(!this.drawingPoints||this.drawingPoints&&this.drawingPoints.length<1)return;let t=[...this.drawingPoints];this.currentMeasureDrawable||(this.currentMeasureDrawable=new TE(_t.guid(),this.drawingPoints),this.drawList.addDrawable(this.currentMeasureDrawable)),e&&t.push(e),this.currentMeasureDrawable.update(t),this.currentMeasureDrawable.setDrawingState(!0)}},KO=class extends uE{constructor(e,t=30){super(t),this.manager=e}undo(){let e=super.undo();switch(null==e?void 0:e.type){case"ADD":{let t=e.payload.id;t&&this.manager.removeMeasurementById(t,!1)}break;case"REMOVE":{let t=e.payload,i=this.manager.createMeasurement(t);this.manager.addMeasurement(i,!1)}}return e}redo(){let e=super.redo();switch(null==e?void 0:e.type){case"ADD":{let t=e.payload,i=this.manager.createMeasurement(t);this.manager.addMeasurement(i,!1)}break;case"REMOVE":{let t=e.payload.id;t&&this.manager.removeMeasurementById(t,!1)}}return e}},nu=class{constructor(e,t){var i;this.selectedMeasurementDrawable=void 0,this.drawableList=new $u("measure"),this.measurements={},this.activeMeasurementType=void 0,this.undoRedoHelper=new KO(this),this.keydown=e=>{let t,i=this.getActiveMeasurementType();i&&(t=this.measurements[i]);let r=this.selectedMeasurementDrawable;r&&"Delete"===e.code&&(this.removeMeasurement(r),this.activeMeasurementType&&this.measurements[this.activeMeasurementType].clearClickedDrawable()),e.ctrlKey&&"KeyZ"===e.code&&(null!=t&&t.isMeasuring?t.cancel():this.undo()),e.ctrlKey&&"KeyY"===e.code&&(null!=t&&t.isMeasuring||this.redo()),this.viewer.enableRender()},this.viewer=e,this.inputManager=t,this.overlayRender=this.viewer.overlayRender,null==(i=this.overlayRender)||i.addDrawableList(this.drawableList),this.scene=new Nn,this.osnapHelper=new OO(this.overlayRender),this.measurements.Distance=new ZO(this.viewer,t,this.drawableList,this.osnapHelper),this.measurements.Area=new XO(this.viewer,t,this.drawableList,this.osnapHelper),this.measurements.Angle=new YO(this.viewer,t,this.drawableList,this.osnapHelper),this.measurements.Coordinate=new $O(this.viewer,t,this.drawableList,this.osnapHelper),this.inputManager.addEventListener("wheel",(()=>{this.updateSnapTolerance()})),this.initEvents()}initEvents(){Object.values(this.measurements).forEach((e=>{e.addEventListener("complete",(e=>{this.undoRedoHelper.addRecord("ADD",e.getData()),this.selectMeasurement(e)})),e.addEventListener("deactivate",(()=>{this.osnapHelper.deactivate(),this.viewer.deactivateMeasurement()})),e.addEventListener("firstpointpicked",(()=>{this.unselectMeasurement()})),e.addEventListener("clickedonmeasurement",(e=>{this.selectMeasurement(e)}))}))}get canvas(){var e;return null==(e=this.viewer.renderer)?void 0:e.domElement}get raycaster(){return this.viewer.getRaycaster()}getPixelSizeInWorldCoord(){let e=this.viewer.camera,{width:t,height:i}=this.canvas,r=0;if("OrthographicCamera"===e.type){let n=e;r=Math.max(n.right-n.left,n.top-n.bottom)/n.zoom/Math.max(t,i)}else if("PerspectiveCamera"===e.type){let t=e,n=this.viewer.cameraCfg,s=n&&_t.arrayToVector3(n.eye),a=n&&_t.arrayToVector3(n.look);r=s.distanceTo(a)*Math.tan(t.fov/2*Math.PI/180)*2/i}return r}addMeasurement(e,t=!0){this.drawableList.addDrawable(e),this.selectedMeasurementDrawable=e,t&&this.undoRedoHelper.addRecord("ADD",e.getData()),this.viewer.enableRender()}createMeasurement(e){return wr.createDrawable(e)}removeMeasurement(e,t=!0){this.drawableList.removeDrawable(e),this.selectedMeasurementDrawable=void 0,t&&this.undoRedoHelper.addRecord("REMOVE",e.getData()),this.viewer.enableRender()}updateSnapTolerance(e=3){let t=this.getPixelSizeInWorldCoord()*e;this.osnapHelper.updateSnapTolerance(t)}activateMeasurement(e){this.activeMeasurementType&&this.deactivateMeasurement(),this.measurements[e]?(this.measurements[e].activate(),this.activeMeasurementType=e,this.updateSnapTolerance()):(this.activeMeasurementType=void 0,ie.error("[Measure] Failed to activate measurement, type:",e)),this.inputManager.addEventListener("keydown",this.keydown)}deactivateMeasurement(){this.unselectMeasurement();let e=this.activeMeasurementType;e&&this.measurements[e].deactivate(),this.activeMeasurementType=void 0,this.inputManager.removeEventListener("keydown",this.keydown)}getActiveMeasurementType(){return this.activeMeasurementType}isMeasurementActive(){let e=this.activeMeasurementType;return e?this.measurements[e].isActive:!!this.getActiveMeasurementType()}isMeasurementMeasuring(){let e=this.activeMeasurementType;return!!e&&this.measurements[e].isMeasuring}getMeasurementsData(){return this.drawableList.getDrawableDatas()}setMeasurementsData(e){this.drawableList.clear(),e.forEach((e=>{this.measurements[e.type]?e.points.length>=2?this.addMeasurement(wr.createDrawable(e),!1):ie.info("[Measure] Invalid points found in MeasurementData:",e):ie.warn("[Measure] Failed to add measurement data for",e)}))}setMeasurementVisibility(e,t){let i=this.drawableList.getDrawables().get(e);return!!i&&(i.visible=t,this.viewer.enableRender(),!0)}setMeasurementsVisibility(e){this.drawableList.getDrawables().forEach((t=>t.visible=e)),this.viewer.enableRender()}clearMeasurements(){this.drawableList.clear(),this.viewer.enableRender()}removeMeasurementById(e,t=!0){let i=this.drawableList.getDrawableById(e);i&&(this.removeMeasurement(i,t),ie.warn("[Measure] Failed to find measurement by id:",e))}selectMeasurementById(e){this.unselectMeasurement();let t=this.drawableList.getDrawableById(e);t&&(t.selected=!0,this.selectedMeasurementDrawable=t),this.viewer.enableRender()}selectMeasurement(e){this.unselectMeasurement(),e.selected=!0,this.selectedMeasurementDrawable=e,this.viewer.enableRender()}unselectMeasurement(){this.selectedMeasurementDrawable&&(this.selectedMeasurementDrawable.selected=!1),this.selectedMeasurementDrawable=void 0,this.viewer.enableRender()}undo(){this.undoRedoHelper.undo()}redo(){this.undoRedoHelper.redo()}clearUndoRedo(){this.undoRedoHelper.clear()}destroy(){var e;this.deactivateMeasurement(),this.clearMeasurements(),this.measurements={},null==(e=this.osnapHelper)||e.destroy(),this.scene.clear(),this.undoRedoHelper.destroy()}},cCe={HomeView:{icon:{default:"icon-home",active:"icon-home-filled"},menuName:"Toolbar.homeView",type:1,onClick:e=>{e.goToHomeView()}},OrthoMode:{icon:{default:"icon-orthomode",active:"icon-orthomode-filled"},menuName:"Toolbar.orthoView",type:4,onActive:e=>{ie.info("[Toolbar]","Enter OrthoMode"),e.setToOrthographicCamera(!0)},onDeactive:e=>{ie.info("[Toolbar]","Exit OrthoMode"),e.setToOrthographicCamera(!1)}},Measure:{icon:{default:"icon-measure",active:"icon-measure-filled"},menuName:"Toolbar.measurement",type:3,children:{MeasureDistance:{icon:{default:"icon-distancemeasure",active:"icon-distancemeasure-filled"},menuName:"Toolbar.distanceMeasurement",onActive:e=>{e.deactivateSection(),e.activateMeasurement("Distance")},onDeactive:e=>{e.deactivateMeasurement()},type:4,mutexIds:["MeasureArea","MeasureAngle","MeasureCoordinate"]},MeasureArea:{icon:{default:"icon-areameasure",active:"icon-areameasure-filled"},onActive:e=>{e.deactivateSection(),e.activateMeasurement("Area")},onDeactive:e=>{e.deactivateMeasurement()},type:4,menuName:"Toolbar.areaMeasurement",mutexIds:["MeasureDistance","MeasureAngle","MeasureCoordinate"]},MeasureAngle:{menuName:"Toolbar.angleMeasurement",icon:{default:"icon-anglemeasure"},type:4,onActive:e=>{e.deactivateSection(),e.activateMeasurement("Angle")},onDeactive:e=>{e.deactivateMeasurement()},mutexIds:["MeasureDistance","MeasureArea","MeasureCoordinate"]},MeasureCoordinate:{menuName:"Toolbar.coordinateMeasurement",icon:{default:"icon-distancemeasure"},type:4,onActive:e=>{e.deactivateSection(),e.activateMeasurement("Coordinate")},onDeactive:e=>{e.deactivateMeasurement()},mutexIds:["MeasureDistance","MeasureArea","MeasureAngle"]},MeasureClear:{icon:{default:"icon-clear",active:"icon-clear-filled"},onClick:e=>{ie.debug("[Toolbar]","Clearing Measure",e),e.clearMeasurements()},type:1,menuName:"Toolbar.clearMeasurement"}},mutexIds:["Section","SectionAxis","SectionBox","SectionPlane"]},Section:{icon:{default:"icon-section",active:"icon-section-filled"},menuName:"Toolbar.section",type:3,children:{SectionAxis:{icon:{default:"icon-sectionplane",active:"icon-sectionplane-filled"},menuName:"Toolbar.axisSection",type:4,onActive:e=>{e.deactivateMeasurement(),e.getMeasurements().forEach((t=>e.setMeasurementVisibility(t.id,!1))),null==ua||ua.destroy(),e.activateSection("AxisPlaneSection"),ua=new WO(e)},onDeactive:e=>{e.getMeasurements().forEach((t=>e.setMeasurementVisibility(t.id,!0))),e.deactivateSection(),null==ua||ua.destroy(),ua=void 0},mutexIds:["SectionBox","SectionPlane"]},SectionPlane:{icon:{default:"icon-choosesectionplane",active:"icon-choosesectionplane-filled"},menuName:"Toolbar.pickSectionPlane",type:4,onActive:e=>{e.deactivateMeasurement(),e.getMeasurements().forEach((t=>e.setMeasurementVisibility(t.id,!1))),null==ua||ua.destroy(),e.activateSection("PickPlaneSection"),ua=new qO(e)},onDeactive:e=>{e.getMeasurements().forEach((t=>e.setMeasurementVisibility(t.id,!0))),e.deactivateSection(),null==ua||ua.destroy(),ua=void 0},mutexIds:["SectionAxis","SectionBox"]},SectionBox:{icon:{default:"icon-sectionbox",active:"icon-sectionbox-filled"},menuName:"Toolbar.sectionBox",type:4,onActive:e=>{e.deactivateMeasurement(),e.getMeasurements().forEach((t=>e.setMeasurementVisibility(t.id,!1))),e.activateSection()},onDeactive:e=>{e.getMeasurements().forEach((t=>e.setMeasurementVisibility(t.id,!0))),e.deactivateSection()},mutexIds:["SectionAxis","SectionPlane"]}},mutexIds:["Measure","MeasureDistance","MeasureArea","MeasureAngle","MeasureCoordinate"]},BimTree:{icon:{default:"icon-bimtree",active:"icon-bimtree-filled"},menuName:"Toolbar.bimTree",type:4,onActive:()=>{ie.info("[Toolbar]","Activate Bim Tree")},onDeactive:()=>{ie.info("[Toolbar]","Deactivate Bim Tree")}},Viewpoint:{icon:{default:"icon-viewpoint",active:"icon-viewpoint-filled"},menuName:"Toolbar.viewpoint",type:4,onActive:()=>{ie.info("[Toolbar]","Activate Viewpoint")},onDeactive:()=>{ie.info("[Toolbar]","Deactivate Viewpoint")},visible:!1},Annotation:{icon:{default:"icon-annotation",active:"icon-annotation-filled"},menuName:"Toolbar.annotation",type:4,onActive:()=>{ie.info("[Toolbar]","Activate Annotation")},onDeactive:()=>{ie.info("[Toolbar]","Deactivate Annotation")},visible:!1},Property:{icon:{default:"icon-property",active:"icon-property-filled"},menuName:"Toolbar.property",type:4,onActive:()=>{ie.info("[Toolbar]","Activate Property")},onDeactive:()=>{ie.info("[Toolbar]","Deactivate Property")},visible:!1},Settings:{icon:{default:"icon-settings",active:"icon-settings-filled"},menuName:"Toolbar.settings",type:4,onActive:()=>{ie.info("[Toolbar]","Activate Settings")},onDeactive:()=>{ie.info("[Toolbar]","Deactivate Settings")},visible:!1},FullScreen:{icon:{default:"icon-fullscreen",active:"icon-fullscreen-filled"},menuName:"Toolbar.fullscreen",type:4,onClick:(e,t)=>{let i=()=>{let e=null==t?void 0:t.menuList.get("FullScreen");e&&e.setActive(_t.isFullScreen())};_t.isFullScreen()?(_t.exitFullscreen(),window.removeEventListener("resize",i)):_t.fullScreen(e.viewerContainer),window.addEventListener("resize",i)}}},uCe={SceneClear:{icon:{default:"icon-clear",active:"icon-clear-filled"},menuName:"clear",type:1,onClick:()=>{}}},hCe={HomeView:{icon:{default:"icon-zhushitu",active:"icon-zhushitu",iconFont:"iconfont"},menuName:"Toolbar.homeView",type:1,onClick:e=>{e.goToHomeView()}},ZoomToRectangle:{icon:{default:"icon-kuangxuanfangda",active:"icon-kuangxuanfangda",iconFont:"iconfont"},menuName:"Toolbar.zoomToRectangle",type:4,onActive:e=>{e.zoomToRect()},onDeactive:e=>{e.deactivateZoomRect()}},GetScreenshot:{icon:{default:"icon-frame-clipping",active:"icon-frame-clipping",iconFont:"iconfont"},menuName:"Toolbar.screenshot",type:1,onClick:e=>{e.getScreenshot().then((e=>{ie.info("[Toolbar] getScreenshot() returns:",e),e||ie.error("[Toolbar] Failed to get screenshot!");let t=document.createElement("a");t.href=e,t.download="",t.click()})).catch((e=>{ie.error("[Toolbar] Failed to get screenshot, reason:",e)}))}},Measure:{icon:{default:"icon-celiang1",active:"icon-celiang1",iconFont:"iconfont"},menuName:"Toolbar.measurement",type:3,children:{MeasureDistance:{icon:{default:"icon-distancemeasure",active:"icon-distancemeasure-filled"},menuName:"Toolbar.distanceMeasurement",onActive:e=>{e.activateMeasurement("Distance")},onDeactive:e=>{e.deactivateMeasurement()},type:4,mutexIds:["MeasureArea","MeasureAngle","MeasureCoordinate","ZoomToRectangle"]},MeasureArea:{icon:{default:"icon-areameasure",active:"icon-areameasure-filled"},onActive:e=>{e.activateMeasurement("Area")},onDeactive:e=>{e.deactivateMeasurement()},type:4,menuName:"Toolbar.areaMeasurement",mutexIds:["MeasureDistance","MeasureAngle","MeasureCoordinate","ZoomToRectangle"]},MeasureAngle:{menuName:"Toolbar.angleMeasurement",icon:{default:"icon-anglemeasure"},type:4,onActive:e=>{e.activateMeasurement("Angle")},onDeactive:e=>{e.deactivateMeasurement()},mutexIds:["MeasureDistance","MeasureArea","MeasureCoordinate","ZoomToRectangle"]},MeasureCoordinate:{menuName:"Toolbar.coordinateMeasurement",icon:{default:"icon-distancemeasure"},type:4,onActive:e=>{e.activateMeasurement("Coordinate")},onDeactive:e=>{e.deactivateMeasurement()},visible:!1,mutexIds:["MeasureDistance","MeasureArea","MeasureAngle","ZoomToRectangle"]},MeasureClear:{icon:{default:"icon-clear",active:"icon-clear-filled"},onClick:e=>{ie.debug("[Toolbar]","Clearing Measure",e),e.clearMeasurements()},type:1,menuName:"Toolbar.clearMeasurement"}}},Markup:{icon:{default:"icon-tianjiapizhu",iconFont:"iconfont"},menuName:"Toolbar.markup",type:1,onClick:(e,t)=>{e.activateMarkup("CloudRectMarkup"),t.hide(),e.deactivateMeasurement(),new VO(e,Br({},iCe))}},Settings:{icon:{default:"icon-settings",active:"icon-settings-filled"},menuName:"Toolbar.settings",type:4,onActive:()=>{ie.info("[Toolbar]","Activate Settings")},onDeactive:()=>{ie.info("[Toolbar]","Deactivate Settings")},visible:!0},Compared:{icon:{default:"icon-compared",iconFont:"iconfont"},menuName:"Toolbar.compared",type:4,onActive:()=>{ie.info("[Toolbar]","Activate Compare")},onDeactive:()=>{ie.info("[Toolbar]","Deactivate Compare")},visible:!1},QuitCompare:{icon:{default:"icon-compared",iconFont:"iconfont"},menuName:"Toolbar.quitCompare",type:4,onActive:()=>{ie.info("[Toolbar]","Activate Compare")},onDeactive:()=>{ie.info("[Toolbar]","Deactivate Compare")},visible:!1},Layers:{icon:{default:"icon-tucengkongzhi",active:"icon-tucengkongzhi",iconFont:"iconfont"},menuName:"Toolbar.layers",type:4,onClick:()=>{}},FullScreen:{icon:{default:"icon-quanping",active:"icon-quanping",iconFont:"iconfont"},menuName:"Toolbar.fullscreen",type:4,onClick:(e,t)=>{let i=()=>{let e=null==t?void 0:t.menuList.get("FullScreen");e&&e.setActive(_t.isFullScreen())};_t.isFullScreen()?(_t.exitFullscreen(),window.removeEventListener("resize",i)):_t.fullScreen(e.viewerContainer),window.addEventListener("resize",i)}}},pCe={enableNavCube:!0,enableAxisGizmo:!0,enableToolbar:!0,enableBottomBar:!0,enableContextMenu:!0,enableSpinner:!0,containerId:"myCanvas",units:"meters"},N3r={enableNavCube:!1,enableAxisGizmo:!1,enableToolbar:!1,enableBottomBar:!1,enableContextMenu:!1,containerId:"myCanvas"},V_=class{constructor(e="uploadModelFile"){this.input=document.createElement("input"),this.input.id=e,this.input.type="file",this.input.multiple=!0,this.input.accept=this.formats().map((e=>"."+e)).join(","),this.input.style.display="none",this.input.onchange=e=>{let t=e.target.files;!t||t.length<=0?ie.error("[Uploader] No files to be uploaded!"):this.uploadFiles(t)}}formats(){return ie.warn("[Uploader]: Should call derived class instead!"),[]}uploadFiles(e){ie.warn(`[Uploader]: Should call derived class instead! files: ${e}`)}openFileBrowserToUpload(){this.input.click()}},JO=class extends V_{constructor(e,t){super(t),this.defaultModelConfig={src:"",position:[0,0,0],rotation:[0,0,0],scale:[1,1,1],instantiate:!1,merge:!1},this.viewer=e}formats(){return["gltf","glb","dxf","obj","stl","fbx","ifc","dae","*"]}uploadFiles(e){let t=e.length;if(0===t)return;let i,r,n,s=Br({},this.defaultModelConfig),a=new Map;for(let i=0;i{n&&(i=URL.createObjectURL(n),o.push(i),s.src=n.name)};if(n){l();let e=Vs.extractUrlBase(i);r=new Fp,r.setURLModifier((t=>{let i=decodeURI(t).replace(e,"").replace(/^(\.?\/)/,"");if(a.has(i)){let e=a.get(i),t=URL.createObjectURL(e);return o.push(t),t}return t}))}else n=e[0],l();this.viewer.loadLocalModel(i,s,r,(e=>{let t=Math.floor(100*e.loaded/e.total);ie.info(`[Uploader] Loading ${null==n?void 0:n.name}, ${t}%`)})).then((()=>{ie.info(`[Uploader] Loaded ${null==n?void 0:n.name}`),o.forEach(URL.revokeObjectURL)}))}},dCe=class extends V_{constructor(e,t){super(t),this.defaultModelConfig={src:"",position:[0,0,0],rotation:[0,0,0],scale:[1,1,1],instantiate:!1,merge:!0},this.viewer=e}formats(){return["dxf"]}uploadFiles(e){let t=e=>{let t=(100*e.loaded/e.total).toFixed(1);ie.info(`[Uploader] Progress: ${t}%`)};if(2===e.length){let i=e[0],r=e[1],n=URL.createObjectURL(i),s=URL.createObjectURL(r);this.viewer.compare({src:n,modelId:i.name},{src:s,modelId:r.name},t).then((()=>{this.onSuccess&&this.onSuccess({compare:!0}),ie.debug(`[Uploader] Compared models: ${n}, ${s}`)})).catch((e=>{ie.error(`[Uploader] Failed to compare models: ${n}, ${s}. reason: ${e}`)}))}else{let i=e[0],r=URL.createObjectURL(i),n=Br({},this.defaultModelConfig);n.src=r,n.modelId=i.name;try{this.viewer.loadModelAsync(n,t).then((()=>{this.onSuccess&&this.onSuccess({}),ie.info(`[Uploader] Loaded model '${n.src}'`)}))}catch(e){ie.info(e)}}}},fCe=class extends V_{constructor(e,t){super(t),this.viewer=e}formats(){return["png","jpg","jpeg"]}uploadFiles(e){let t={panoramas:[],id:"viewpoint_1",name:"",position:[0,1,0],initialDirection:[0,0,1]};if(1===e.length){let i=[];i.push(URL.createObjectURL(e[0])),t.panoramas.push({id:"panorama_1",images:i}),this.viewer.setViewpoints([t]),this.viewer.activatePanoramaById(t.id,t.panoramas[0].id)}else if(6===e.length){let i=t=>{let i="";for(let r=0;r({position:new A(e,t,i),rotation:new xr(r,n,s)}),vFt={Front:Cn(Br({},Fs([0,0,1],[0,0,0])),{label:"NavCube.front"}),Right:Cn(Br({},Fs([1,0,0],[0,Zi,0])),{label:"NavCube.right"}),Back:Cn(Br({},Fs([0,0,-1],[0,Math.PI,0])),{label:"NavCube.back"}),Left:Cn(Br({},Fs([-1,0,0],[0,-Zi,0])),{label:"NavCube.left"}),Top:Cn(Br({},Fs([0,1,0],[-Zi,0,0])),{label:"NavCube.top"}),Bottom:Cn(Br({},Fs([0,-1,0],[Zi,0,0])),{label:"NavCube.bottom"})},yFt=[Fs([0,1,1],[-Ti,0,-Zi]),Fs([0,1,-1],[-3*Ti,0,-Zi]),Fs([0,-1,1],[Ti,0,-Zi]),Fs([0,-1,-1],[3*Ti,0,-Zi]),Fs([1,1,0],[-Zi,Ti,0]),Fs([1,-1,0],[-Zi,3*Ti,0]),Fs([-1,1,0],[-Zi,-Ti,0]),Fs([-1,-1,0],[-Zi,-3*Ti,0]),Fs([1,0,1],[0,Ti,0]),Fs([1,0,-1],[0,3*Ti,0]),Fs([-1,0,1],[0,-Ti,0]),Fs([-1,0,-1],[0,-3*Ti,0])],TFt=[{position:new A(1,1,1),rotation:[new xr(-Zi,Zi,-Ti),new xr(-Zi,0,Ti),new xr(0,0,3*Ti)]},{position:new A(1,1,-1),rotation:[new xr(0,Zi,3*Ti),new xr(-Zi,0,3*Ti),new xr(0,Math.PI,-3*Ti)]},{position:new A(-1,1,-1),rotation:[new xr(Math.PI,-Zi,Ti),new xr(-Zi,0,-3*Ti),new xr(0,Math.PI,3*Ti)]},{position:new A(-1,1,1),rotation:[new xr(0,-Zi,3*Ti),new xr(-Zi,0,-Ti),new xr(0,0,-3*Ti)]},{position:new A(1,-1,1),rotation:[new xr(0,Zi,-Ti),new xr(-Zi,Math.PI,-Ti),new xr(0,0,Ti)]},{position:new A(1,-1,-1),rotation:[new xr(-Zi,Zi,3*Ti),new xr(Zi,0,Ti),new xr(0,Math.PI,-Ti)]},{position:new A(-1,-1,1),rotation:[new xr(0,-Zi,Ti),new xr(Zi,0,-3*Ti),new xr(0,0,-Ti)]},{position:new A(-1,-1,-1),rotation:[new xr(0,-Zi,-Ti),new xr(Zi,0,-Ti),new xr(0,Math.PI,Ti)]}],e3=class extends sr{constructor(e={}){super(),this.NAVCUBE_SIZE=100,this.clickHandler=e.onClick,(0,P0.forEach)(vFt,(e=>{this.createPlane(e)})),(0,P0.forEach)(yFt,(e=>{this.createEdge(e)})),(0,P0.forEach)(TFt,((e,t)=>{this.createCorner(e,t)}))}createPlane(e){let t=e.position.clone().multiplyScalar(this.NAVCUBE_SIZE/2),{rotation:i,label:r}=e,n=document.createElement("div");n.style.width=this.NAVCUBE_SIZE+"px",n.style.height=this.NAVCUBE_SIZE+"px",n.classList.add("navcube-plane"),n.classList.add("outer");let s=document.createElement("div");s.style.width=this.NAVCUBE_SIZE-4+"px",s.style.height=this.NAVCUBE_SIZE-4+"px",s.innerHTML=Eh(r),s.classList.add("navcube-plane"),s.classList.add("inner"),n.appendChild(s);let a=new O0(n);a.position.copy(t),a.rotation.copy(i),this.add(a),n.addEventListener("click",(()=>{this.clickHandler&&this.clickHandler(t.clone().normalize(),i)}))}createEdge(e){let t=e.position.clone().multiplyScalar(this.NAVCUBE_SIZE/2),i=document.createElement("div");i.style.width="4px",i.style.height=this.NAVCUBE_SIZE-40+"px",i.style.background=vCe,i.classList.add("navcube-edge");let r=new O0(i);r.position.copy(t),r.rotation.copy(e.rotation),this.add(r),i.addEventListener("click",(()=>{this.clickHandler&&this.clickHandler(t.clone().normalize(),e.rotation)}))}createCorner(e,t){let i=i=>{i.addEventListener("click",(()=>{this.clickHandler&&this.clickHandler(e.position.clone().normalize(),new xr)})),i.addEventListener("mouseenter",(()=>{let e=document.getElementsByClassName("group-"+t);(0,P0.forEach)(e,(e=>{e instanceof HTMLElement&&e.classList.add("highlight")}))})),i.addEventListener("mouseleave",(()=>{let e=document.getElementsByClassName("group-"+t);(0,P0.forEach)(e,(e=>{e instanceof HTMLElement&&e.classList.remove("highlight")}))}))},r=e.position.clone().multiplyScalar(this.NAVCUBE_SIZE/2+.5),n=document.createElement("div");n.style.borderTop=14*Math.sqrt(3)+"px solid #efefef",n.style.borderLeft="14px solid transparent",n.style.borderRight="14px solid transparent",n.classList.add("navcube-corner"),n.classList.add("group-"+t);let s=new O0(n);s.position.copy(r).lerp(e.position,.14);let a=Math.atan2(r.z,r.x);s.rotateY(r.z*r.x<0?Math.PI+a:a);let o=(new xr).setFromVector3(r.clone().normalize());s.rotateX(-o.y),r.y<0&&s.rotateZ(Math.PI),this.add(s);let l=(t,n,s)=>{let a=document.createElement("div");a.style.borderTop=`13px solid ${vCe}`,a.style.borderLeft="13px solid transparent",a.style.borderRight="13px solid transparent",a.classList.add("navcube-corner-plane"),a.classList.add("group-"+n);let o=new O0(a),l=e.position.clone();l.setComponent(s,0),o.position.copy(r).sub(l),o.rotateX(t.x),o.rotateY(t.y),o.rotateZ(t.z),this.add(o),i(a)};(0,P0.forEach)(e.rotation,((e,i)=>{l(e,t,i)})),i(n)}},t3=class{constructor(e,t){this.height=150,this.width=150,this.width=e||this.width,this.height=t||this.height,this.init()}init(){this.initRenderer(),this.initScene(),this.animate()}initRenderer(){this.renderer=new QO,this.renderer.setSize(this.width,this.height),this.renderer.domElement.classList.add("css3d-navcube"),document.body.appendChild(this.renderer.domElement)}initScene(){this.scene=new Nn;let e=window.innerWidth/window.innerHeight,t=200;this.camera=new ki(t*e/-2,t*e/2,100,-100,1,1e3),this.camera.position.set(-200,200,200),this.scene.add(this.camera);this.navCube=new e3({onClick:e=>{if(!(this.camera&&e&&this.hostViewer&&this.hostViewer.camera&&this.hostViewer.controls))return;let t=this.hostViewer.controls instanceof Jl?this.hostViewer.controls.getTarget(new A):this.hostViewer.controls.target,i=this.hostViewer.camera.position.distanceTo(t);this.hostViewer.flyTo(t.clone().add(e.clone().multiplyScalar(i)),t)}}),this.scene.add(this.navCube)}render(){this.renderer&&this.scene&&this.camera&&(this.update(),this.renderer.render(this.scene,this.camera))}animate(){requestAnimationFrame(this.animate.bind(this)),this.render()}setHostViewer(e){this.hostViewer=e,this.update()}update(){if(!this.hostViewer||!this.hostViewer.camera)return;let e=this.hostViewer.camera;if(e){let t=new A;e.getWorldDirection(t);let i=e.up;this.updateCameraDirection(t,i)}}updateCameraDirection(e,t){if(!this.camera||!e)return;e.normalize();this.camera.position.set(20*-e.x+0,20*-e.y+0,20*-e.z+0),this.camera.lookAt(0,0,0),this.camera.up=t}dispose(){!this.scene||!this.camera||!this.navCube||(this.scene.clear(),this.hostViewer=void 0,this.camera=void 0,this.navCube=void 0,this.scene=void 0)}},EFt=new A(1,0,0),bFt=new A(0,1,0),xFt=new A(0,0,1),r3=class extends im{constructor(e,t){super(e,t);let{min:i,max:r}=this.sectionBox;this.sectionRange={x:[i.x,r.x],y:[i.y,r.y],z:[i.z,r.z]}}activate(){super.activate(),this.initOrUpdateClipPlane(),this.initOrUpdateVertices(),this.initOrUpdateSectionPlane(),this.setGlobalClippingEnable(!0)}deactivate(){super.deactivate(),this.planesMesh&&this.scene.remove(...this.planesMesh),this.planesMesh=void 0}initOrUpdateVertices(){if(!this.sectionBox)return;let{min:e,max:t}=this.sectionBox;this.vertices=[new A(t.x,t.y,t.z),new A(e.x,t.y,t.z),new A(e.x,e.y,t.z),new A(t.x,e.y,t.z),new A(t.x,t.y,e.z),new A(e.x,t.y,e.z),new A(e.x,e.y,e.z),new A(t.x,e.y,e.z)]}initOrUpdateClipPlane(){let{min:e,max:t}=this.sectionBox;this.clipPlanes?(this.clipPlanes[0].constant=t.x,this.clipPlanes[1].constant=-e.x,this.clipPlanes[2].constant=t.y,this.clipPlanes[3].constant=-e.y,this.clipPlanes[4].constant=t.z,this.clipPlanes[5].constant=-e.z):this.clipPlanes=[new xi(new A(-1,0,0),t.x),new xi(new A(1,0,0),-e.x),new xi(new A(0,-1,0),t.y),new xi(new A(0,1,0),-e.y),new xi(new A(0,0,-1),t.z),new xi(new A(0,0,1),-e.z)],this.renderer.clippingPlanes=this.clipPlanes}initOrUpdateSectionPlane(){let e=this.vertices;if(e){if(this.planesMesh)this.planesMesh[0].update([e[4],e[0],e[3],e[7]]),this.planesMesh[1].update([e[1],e[5],e[6],e[2]]),this.planesMesh[2].update([e[4],e[5],e[1],e[0]]),this.planesMesh[3].update([e[6],e[7],e[3],e[2]]),this.planesMesh[4].update([e[0],e[1],e[2],e[3]]),this.planesMesh[5].update([e[5],e[4],e[7],e[6]]);else{let t=[new on("Right",[e[4],e[0],e[3],e[7]]),new on("Left",[e[1],e[5],e[6],e[2]]),new on("Top",[e[4],e[5],e[1],e[0]]),new on("Bottom",[e[6],e[7],e[3],e[2]]),new on("Front",[e[0],e[1],e[2],e[3]]),new on("Back",[e[5],e[4],e[7],e[6]])];this.planesMesh=t,this.scene.add(...t)}this.viewer.enableRender()}}activateSelectedObject(e){var t;null==(t=this.selectedObject)||t.setActive(e)}onDragStart(e){var t;this.selectedObject&&(this.controls&&this.dragStarted&&(this.controls.enableRotate=!1),ie.info("[ObjectsBoxSection] onDragStart:",e),this.refrencePlane.setFromNormalAndCoplanarPoint(this.camera.getWorldDirection(this.refrencePlane.normal),this.selectedObject.getPlaneCenter()),null==(t=this.raycaster)||t.ray.intersectPlane(this.refrencePlane,this.lastWorldPos))}onDragMove(e){var t;if(!this.lastWorldPos||!this.selectedObject)return;let i=new A;null==(t=this.raycaster)||t.ray.intersectPlane(this.refrencePlane,i);let r=this.selectedObject.actionType;switch(r){case"Top":case"Bottom":this.dragTranslateSectionPlane(bFt,this.lastWorldPos,i,r);break;case"Left":case"Right":this.dragTranslateSectionPlane(EFt,this.lastWorldPos,i,r);break;case"Front":case"Back":this.dragTranslateSectionPlane(xFt,this.lastWorldPos,i,r)}this.lastWorldPos=i}onDragEnd(e){this.controls&&!this.controls.enableRotate&&(this.controls.enableRotate=!0),this.activateSelectedObject(!1),this.dragStarted=!1,this.selectedObject=void 0,ie.info("[ObjectsBoxSection] onDragEnd:",e)}dragTranslateSectionPlane(e,t,i,r){let n,{min:s,max:a}=this.sectionBox,o=i.clone().sub(t).projectOnVector(e);switch(r){case"Top":n=a.y+o.y,this.isInRange(n,this.sectionRange.y)&&(a.y=n);break;case"Bottom":n=s.y+o.y,this.isInRange(n,this.sectionRange.y)&&(s.y=n);break;case"Left":n=s.x+o.x,this.isInRange(n,this.sectionRange.x)&&(s.x=n);break;case"Right":n=a.x+o.x,this.isInRange(n,this.sectionRange.x)&&(a.x=n);break;case"Front":n=a.z+o.z,this.isInRange(n,this.sectionRange.z)&&(a.z=n);break;case"Back":n=s.z+o.z,this.isInRange(n,this.sectionRange.z)&&(s.z=n)}this.initOrUpdateVertices(),this.initOrUpdateSectionPlane(),this.initOrUpdateClipPlane(),this.viewer.enableRender()}isInRange(e,t){return e>t[0]&&et.visible=e)),this.isShowSectionPlane=e,this.viewer.enableRender()}},i3=class extends im{constructor(e,t){super(e,t),this.mousedown=e=>{var t;if(0===e.button){if(!this.faceInfo){let i=this.pickFace(e);if(i&&i.face){let e=i.face.normal,r=new Ni;e.applyNormalMatrix(r.getNormalMatrix(i.object.matrixWorld)),this.faceInfo={position:i.point,normal:e.normalize()},this.setSection(),null==(t=this.tooltip)||t.hide()}return}this.camera&&this.selectedObject&&(this.mouseDown=!0)}},this.mousemove=e=>{var t,i,r;if(this.faceInfo){if(this.dragStarted)this.updateRaycasterByMouse(e),this.onDragMove(e);else{this.activateSelectedObject(!1);let t=this.getIntersections(e);t?(this.selectedObject=t.object,this.activateSelectedObject(!0),this.mouseDown&&(null==(r=this.selectedObject)?void 0:r.parent)instanceof ru&&(this.dragStarted||(this.dragStarted=!0,this.onDragStart(e)))):this.selectedObject=void 0}this.viewer.enableRender()}else this.pickFace(e)?null==(t=this.tooltip)||t.show():null==(i=this.tooltip)||i.hide()},this.center=new A,this.sectionBox.getCenter(this.center),this.viewer.addEventListener("RenderAfter",(()=>{var e;this.isActive&&(null==(e=this.gizmo)||e.adjustSize(this.camera))}))}activate(){super.activate(),this.tooltip=new gh("pick-section-plane",Eh("Tooltip.section"),{parentNode:this.viewer.widgetContainer,followPointer:!0})}deactivate(){var e,t,i;super.deactivate(),null==(e=this.planeMesh)||e.removeFromParent(),null==(t=this.gizmo)||t.removeFromParent(),this.planeMesh=void 0,this.gizmo=void 0,this.faceInfo=void 0,null==(i=this.tooltip)||i.destroy(),this.tooltip=void 0}setSection(){this.initOrUpdateGizmo(),this.initOrUpdateSectionPlane(),this.initOrUpdateClipPlane(),this.setGlobalClippingEnable(!0),this.viewer.enableRender()}resetSection(){var e,t,i;null==(e=this.planeMesh)||e.removeFromParent(),null==(t=this.gizmo)||t.removeFromParent(),this.setGlobalClippingEnable(!1),this.planeMesh=void 0,this.gizmo=void 0,this.faceInfo=void 0,null==(i=this.tooltip)||i.show(),this.viewer.enableRender()}setSectionVisible(e){this.gizmo&&this.planeMesh&&(this.gizmo.visible=e,this.planeMesh.visible=e),this.isShowSectionPlane=e,this.viewer.enableRender()}initOrUpdateClipPlane(){if(!this.faceInfo)return;let{normal:e,position:t}=this.faceInfo;this.clipPlane=(new xi).setFromNormalAndCoplanarPoint(e.clone().negate(),t),this.clipPlane&&(this.clipPlanes=[this.clipPlane])}initOrUpdateSectionPlane(){var e;if(!this.faceInfo)return;let{normal:t,position:i}=this.faceInfo,r=new A;this.sectionBox.getSize(r);let n=r.length(),s=i,a=(new Dt).setFromCenterAndSize(s,new A(n,n,n)),{min:o,max:l}=a;null==(e=this.planeMesh)||e.removeFromParent(),this.planeMesh=new on("Plane",[new A(s.x,l.y,o.z),new A(s.x,l.y,l.z),new A(s.x,o.y,l.z),new A(s.x,o.y,o.z)]),this.planeMesh.setDirection(t),this.planeMesh&&this.scene.add(this.planeMesh),this.viewer.enableRender()}initOrUpdateGizmo(){var e,t;if(!this.faceInfo)return;null==(e=this.gizmo)||e.removeFromParent();let{normal:i,position:r}=this.faceInfo;this.gizmo=new ru,this.gizmo.setDirection(i),this.gizmo.position.copy(r),null==(t=this.scene)||t.add(this.gizmo)}onDragStart(e){var t;if(!this.faceInfo||this.selectedObject instanceof on)return;this.controls&&this.dragStarted&&this.selectedObject&&!(this.selectedObject instanceof on)&&(this.controls.enableRotate=!1),ie.info("[PickPlaneSection] onDragStart:",e);let{position:i}=this.faceInfo;this.refrencePlane.setFromNormalAndCoplanarPoint(this.camera.getWorldDirection(this.refrencePlane.normal),i),null==(t=this.raycaster)||t.ray.intersectPlane(this.refrencePlane,this.lastWorldPos)}onDragMove(e){var t,i,r;if(!this.lastWorldPos||!this.selectedObject||!this.clipPlane||!this.planeMesh||!this.gizmo||!this.faceInfo||this.selectedObject&&this.selectedObject instanceof on)return;let n=new A;null==(t=this.raycaster)||t.ray.intersectPlane(this.refrencePlane,n);let s=this.selectedObject.userData.actionType,{position:a}=this.faceInfo,o=(new A).subVectors(this.lastWorldPos,a).normalize(),l=(new A).subVectors(n,a).normalize(),h=(new A).subVectors(n,this.lastWorldPos).projectOnVector(ka.clone().applyQuaternion(this.gizmo.quaternion)),u=o.angleTo(l),c=(new A).crossVectors(o,l),p=new A;this.sectionBox.getSize(p);let d,f=Math.max(p.x,p.y,p.z);switch(s){case"TranslateX":case"TranslateY":case"TranslateZ":d=(new A).addVectors(this.gizmo.position,h),this.sectionBox.clone().setFromCenterAndSize(this.center,new A(f,f,f)).containsPoint(d)&&(null==(i=this.gizmo)||i.position.add(h),null==(r=this.planeMesh)||r.position.add(h));break;case"RotateX":{let e=ka.clone().applyQuaternion(this.gizmo.quaternion);c.dot(e)<0&&(u=-u),this.gizmo.rotateX(u),this.planeMesh.rotatePlane(e,u)}break;case"RotateY":{let e=tm.clone().applyQuaternion(this.gizmo.quaternion);c.dot(e)<0&&(u=-u),this.gizmo.rotateY(u),this.planeMesh.rotatePlane(e,u)}break;case"RotateZ":{let e=rm.clone().applyQuaternion(this.gizmo.quaternion);c.dot(e)<0&&(u=-u),this.gizmo.rotateZ(u),this.planeMesh.rotatePlane(e,u)}}this.clipPlane.setFromNormalAndCoplanarPoint(this.planeMesh.getPlaneNormal().negate(),this.gizmo.position),this.lastWorldPos=n}onDragEnd(e){this.selectedObject instanceof on||(this.controls&&!this.controls.enableRotate&&(this.controls.enableRotate=!0),this.activateSelectedObject(!1),this.dragStarted=!1,this.selectedObject=void 0,ie.info("[PickPlaneSection] onDragEnd:",e))}getIntersectObjects(){return this.planeMesh&&this.gizmo?[this.planeMesh,this.gizmo]:[]}activateSelectedObject(e){this.selectedObject&&(this.selectedObject instanceof on?this.selectedObject.setActive(e):this.selectedObject.parent instanceof ru&&this.selectedObject.parent.setActive(e,this.selectedObject))}pickFace(e){if(!this.raycaster)return;let t=new le(e.x,e.y),i=Ai.screenPoint2NdcPoint(t,this.camera,this.canvas);this.raycaster.setFromCamera(i,this.camera);let r=[];return Object.values(this.viewer.loadedModels).forEach((e=>{let t=this.scene&&this.scene.getObjectById(e.id);t&&t.visible&&r.push(t)})),(this.raycaster.intersectObjects(this.viewer.getRaycastableObjectsByMouse(e))||[]).find((e=>{let t=e.object;return t.visible&&(!1!==t.userData.selectable||t instanceof rt)}))}},n3=class{constructor(e,t){this.sections={},this.viewer=e,this.sections.ObjectsBoxSection=new r3(e,t),this.sections.AxisPlaneSection=new jO(e,t),this.sections.PickPlaneSection=new i3(e,t)}get raycaster(){return this.viewer.getRaycaster()}activateSection(e){this.activeSectionType&&this.deactivateSection(),this.activeSectionType=e,this.sections[e].activate()}deactivateSection(){let e=this.activeSectionType;e&&this.sections[e].deactivate(),this.activeSectionType=void 0}resetSection(){}isSectionActive(){let e=this.activeSectionType;return e?this.sections[e].isActive:!!this.getActiveSectionType()}getActiveSectionType(){return this.activeSectionType}getActiveSection(){if(this.activeSectionType)return this.sections[this.activeSectionType]}destroy(){this.deactivateSection(),this.activeSectionType=void 0}};function OG(e){let t;try{t=new URL(e,"http://fakehost.com/")}catch(e){return null}let i=t.pathname.split("/").pop(),r=i.lastIndexOf(".");return-1===r||r===i.length-1?null:i.substring(r+1)}function IFt(e){Promise.resolve().then(e)}var s3=class{constructor(){this.maxSize=800,this.minSize=600,this.unloadPercent=.05,this.itemSet=new Map,this.itemList=[],this.usedSet=new Set,this.callbacks=new Map,this.unloadPriorityCallback=null;let e=this.itemSet;this.defaultPriorityCallback=t=>e.get(t)}isFull(){return this.itemSet.size>=this.maxSize}add(e,t){let i=this.itemSet;if(i.has(e)||this.isFull())return!1;let r=this.usedSet,n=this.itemList,s=this.callbacks;return n.push(e),r.add(e),i.set(e,Date.now()),s.set(e,t),!0}remove(e){let t=this.usedSet,i=this.itemSet,r=this.itemList,n=this.callbacks;if(i.has(e)){n.get(e)(e);let s=r.indexOf(e);return r.splice(s,1),t.delete(e),i.delete(e),n.delete(e),!0}return!1}markUsed(e){let t=this.itemSet,i=this.usedSet;t.has(e)&&!i.has(e)&&(t.set(e,Date.now()),i.add(e))}markAllUnused(){this.usedSet.clear()}unloadUnusedContent(){let e=this.unloadPercent,t=this.minSize,i=this.itemList,r=this.itemSet,n=this.usedSet,s=this.callbacks,a=i.length-n.size,o=i.length-t,l=this.unloadPriorityCallback||this.defaultPriorityCallback;if(o>0&&a>0){i.sort(((e,t)=>{let i=n.has(e),r=n.has(t);return i&&r?0:i||r?i?1:-1:l(t)-l(e)}));let h=Math.min(o,a),u=Math.max(t*e,h*e),c=Math.min(u,a);c=Math.ceil(c);let p=i.splice(0,c);for(let e=0,t=p.length;e{this.scheduled=!1,this.unloadUnusedContent(),e&&this.markAllUnused()})))}},z_=class{constructor(){this.maxJobs=6,this.items=[],this.callbacks=new Map,this.currJobs=0,this.scheduled=!1,this.autoUpdate=!0,this.priorityCallback=()=>{throw new Error("PriorityQueue: PriorityCallback function not defined.")},this.schedulingCallback=e=>{requestAnimationFrame(e)},this._runjobs=()=>{this.tryRunJobs(),this.scheduled=!1}}sort(){let e=this.priorityCallback;this.items.sort(e)}add(e,t){return new Promise(((i,r)=>{let n=this.items,s=this.callbacks;n.push(e),s.set(e,((...e)=>t(...e).then(i).catch(r))),this.autoUpdate&&this.scheduleJobRun()}))}remove(e){let t=this.items,i=this.callbacks,r=t.indexOf(e);-1!==r&&(t.splice(r,1),i.delete(e))}tryRunJobs(){this.sort();let e=this.items,t=this.callbacks,i=this.maxJobs,r=this.currJobs;for(;i>r&&e.length>0;){r++;let i=e.pop(),n=t.get(i);t.delete(i),n(i).then((()=>{this.currJobs--,this.autoUpdate&&this.scheduleJobRun()})).catch((()=>{this.currJobs--,this.autoUpdate&&this.scheduleJobRun()}))}this.currJobs=r}scheduleJobRun(){this.scheduled||(this.schedulingCallback(this._runjobs),this.scheduled=!0)}},_Ft=.0033528106647474805,yCe=-(6378137*_Ft-6378137);function NG(e){return 3===e||4===e}function N0(e,t){return e.__lastFrameVisited===t&&e.__used}function TCe(e,t){e.__lastFrameVisited!==t&&(e.__lastFrameVisited=t,e.__used=!1,e.__inFrustum=!1,e.__isLeaf=!1,e.__visible=!1,e.__active=!1,e.__error=1/0,e.__distanceFromCamera=1/0,e.__childrenWereVisible=!1,e.__allChildrenLoaded=!1)}function ECe(e,t,i){if(TCe(e,t),e.__used=!0,i.markUsed(e),e.__contentEmpty){let r=e.children;for(let e=0,n=r.length;e0&&e.__depth+1>=s))return!0;let h=!1,u=e.children;for(let e=0,i=u.length;ee.__depth!==t.__depth?e.__depth>t.__depth?-1:1:e.__inFrustum!==t.__inFrustum?e.__inFrustum?1:-1:e.__used!==t.__used?e.__used?1:-1:e.__error!==t.__error?e.__error>t.__error?1:-1:e.__distanceFromCamera!==t.__distanceFromCamera?e.__distanceFromCamera>t.__distanceFromCamera?-1:1:0,SFt=e=>1/(e.__depthFromRenderedParent+1),l3=class{get rootTileSet(){let e=this.tileSets[this.rootURL];return!e||e instanceof Promise?null:e}get root(){let e=this.rootTileSet;return e?e.root:null}constructor(e){this.tileSets={},this.rootURL=e,this.fetchOptions={},this.preprocessURL=null;let t=new s3;t.unloadPriorityCallback=SFt;let i=new z_;i.maxJobs=4,i.priorityCallback=ICe;let r=new z_;r.maxJobs=1,r.priorityCallback=ICe,this.lruCache=t,this.downloadQueue=i,this.parseQueue=r,this.stats={parsing:0,downloading:0,failed:0,inFrustum:0,used:0,active:0,visible:0},this.frameCount=0,this.errorTarget=6,this.errorThreshold=1/0,this.loadSiblings=!0,this.displayActiveTiles=!1,this.maxDepth=1/0,this.stopAtEmptyTiles=!0}traverse(e,t){let i=this.tileSets[this.rootURL];!i||!i.root||o3(i.root,e,t)}update(){let e=this.stats,t=this.lruCache,i=this.tileSets,r=i[this.rootURL];if(!(this.rootURL in i))return void this.loadRootTileSet(this.rootURL);if(!r||!r.root)return;let n=r.root;e.inFrustum=0,e.used=0,e.active=0,e.visible=0,this.frameCount++,LG(n,this),FG(n,this),HG(n,this),UG(n,this),t.scheduleUnload()}parseTile(e,t,i){return null}disposeTile(e){}preprocessNode(e,t,i){if(e.content&&(!("uri"in e.content)&&"url"in e.content&&(e.content.uri=e.content.url,delete e.content.url),e.content.uri&&(e.content.uri=new URL(e.content.uri,i+"/").toString()),e.content.boundingVolume&&!("box"in e.content.boundingVolume||"sphere"in e.content.boundingVolume||"region"in e.content.boundingVolume)&&delete e.content.boundingVolume),e.parent=t,e.children=e.children||[],e.content&&e.content.uri){let t=OG(e.content.uri),i=Boolean(t&&"json"===t.toLowerCase());e.__externalTileSet=i,e.__contentEmpty=i}else e.__externalTileSet=!1,e.__contentEmpty=!0;e.__distanceFromCamera=1/0,e.__error=1/0,e.__inFrustum=!1,e.__isLeaf=!1,e.__usedLastFrame=!1,e.__used=!1,e.__wasSetVisible=!1,e.__visible=!1,e.__childrenWereVisible=!1,e.__allChildrenLoaded=!1,e.__wasSetActive=!1,e.__active=!1,e.__loadingState=0,e.__loadIndex=0,e.__loadAbort=null,e.__depthFromRenderedParent=-1,null===t?(e.__depth=0,e.refine=e.refine||"REPLACE"):(e.__depth=t.__depth+1,e.refine=e.refine||t.refine)}setTileActive(e,t){}setTileVisible(e,t){}calculateError(e){return 0}tileInView(e){return!0}resetFailedTiles(){let e=this.stats;0!==e.failed&&(this.traverse((e=>{4===e.__loadingState&&(e.__loadingState=0)})),e.failed=0)}fetchTileSet(e,t,i=null){return fetch(e,t).then((t=>{if(t.ok)return t.json();throw new Error(`TilesRenderer: Failed to load tileset "${e}" with status ${t.status} : ${t.statusText}`)})).then((t=>{let r=t.asset.version;console.assert("1.0"===r||"0.0"===r,'asset.version is expected to be a string of "1.0" or "0.0"');let n=e.replace(/\/[^\/]*\/?$/,"");return n=new URL(n,window.location.href).toString(),o3(t.root,((e,t)=>this.preprocessNode(e,t,n)),null,i,i?i.__depth:0),t}))}loadRootTileSet(e){let t=this.tileSets;if(e in t)return t[e]instanceof Error?Promise.reject(t[e]):Promise.resolve(t[e]);{let i=this.fetchTileSet(this.preprocessURL?this.preprocessURL(e):e,this.fetchOptions).then((i=>{t[e]=i}));return i.catch((i=>{console.error(i),t[e]=i})),t[e]=i,i}}requestTileContents(e){if(0!==e.__loadingState)return;let t=this.stats,i=this.lruCache,r=this.downloadQueue,n=this.parseQueue,s=e.__externalTileSet;i.add(e,(e=>{1===e.__loadingState?(e.__loadAbort.abort(),e.__loadAbort=null):s?e.children.length=0:this.disposeTile(e),1===e.__loadingState?t.downloading--:2===e.__loadingState&&t.parsing--,e.__loadingState=0,e.__loadIndex++,n.remove(e),r.remove(e)})),e.__loadIndex++;let a=e.__loadIndex,o=new AbortController,l=o.signal;t.downloading++,e.__loadAbort=o,e.__loadingState=1;let h=s=>{e.__loadIndex===a&&("AbortError"!==s.name?(n.remove(e),r.remove(e),2===e.__loadingState?t.parsing--:1===e.__loadingState&&t.downloading--,t.failed++,console.error(`TilesRenderer : Failed to load tile at url "${e.content.uri}".`),console.error(s),e.__loadingState=4):i.remove(e))};s?r.add(e,(e=>{if(e.__loadIndex!==a)return Promise.resolve();let t=this.preprocessURL?this.preprocessURL(e.content.uri):e.content.uri;return this.fetchTileSet(t,Object.assign({signal:l},this.fetchOptions),e)})).then((i=>{e.__loadIndex===a&&(t.downloading--,e.__loadAbort=null,e.__loadingState=3,e.children.push(i.root))})).catch(h):r.add(e,(e=>{if(e.__loadIndex!==a)return Promise.resolve();let t=this.preprocessURL?this.preprocessURL(e.content.uri):e.content.uri;return fetch(t,Object.assign({signal:l},this.fetchOptions))})).then((t=>{if(e.__loadIndex===a){if(t.ok)return t.arrayBuffer();throw new Error(`Failed to load model with error code ${t.status}`)}})).then((i=>{if(e.__loadIndex===a)return t.downloading--,t.parsing++,e.__loadAbort=null,e.__loadingState=2,n.add(e,(e=>{if(e.__loadIndex!==a)return Promise.resolve();let t=OG(e.content.uri);return this.parseTile(i,e,t)}))})).then((()=>{e.__loadIndex===a&&(t.parsing--,e.__loadingState=3,e.__wasSetVisible&&this.setTileVisible(e,!0),e.__wasSetActive&&this.setTileActive(e,!0))})).catch(h)}dispose(){let e=this.lruCache;this.traverse((t=>{e.remove(t)})),this.stats={parsing:0,downloading:0,failed:0,inFrustum:0,used:0,active:0,visible:0},this.frameCount=0}};function c3(e){return(new TextDecoder).decode(e)}var ld=class{constructor(e,t,i,r){this.buffer=e,this.binOffset=t+i,this.binLength=r;let n=null;if(0!==i){let r=new Uint8Array(e,t,i);n=JSON.parse(c3(r))}else n={};this.header=n}getKeys(){return Object.keys(this.header)}getData(e,t,i=null,r=null){let n=this.header;if(!(e in n))return null;let s=n[e];if(s instanceof Object){if(Array.isArray(s))return s;{let n,{buffer:a,binOffset:o,binLength:l}=this,h=s.byteOffset||0,u=s.type||r,c=s.componentType||i;if("type"in s&&r&&s.type!==r)throw new Error("FeatureTable: Specified type does not match expected type.");switch(u){case"SCALAR":n=1;break;case"VEC2":n=2;break;case"VEC3":n=3;break;case"VEC4":n=4;break;default:throw new Error(`FeatureTable : Feature type not provided for "${e}".`)}let p,d=o+h,f=t*n;switch(c){case"BYTE":p=new Int8Array(a,d,f);break;case"UNSIGNED_BYTE":p=new Uint8Array(a,d,f);break;case"SHORT":p=new Int16Array(a,d,f);break;case"UNSIGNED_SHORT":p=new Uint16Array(a,d,f);break;case"INT":p=new Int32Array(a,d,f);break;case"UNSIGNED_INT":p=new Uint32Array(a,d,f);break;case"FLOAT":p=new Float32Array(a,d,f);break;case"DOUBLE":p=new Float64Array(a,d,f);break;default:throw new Error(`FeatureTable : Feature component type not provided for "${e}".`)}if(d+f*p.BYTES_PER_ELEMENT>o+l)throw new Error("FeatureTable: Feature data read outside binary body length.");return p}}return s}},nm=class extends ld{constructor(e,t,i,r,n){super(e,i,r,n),this.batchSize=t}getData(e,t=null,i=null){return super.getData(e,this.batchSize,t,i)}},ic=class{constructor(){this.fetchOptions={},this.workingPath=""}load(e){return fetch(e,this.fetchOptions).then((t=>{if(!t.ok)throw new Error(`Failed to load file "${e}" with status ${t.status} : ${t.statusText}`);return t.arrayBuffer()})).then((t=>(""===this.workingPath&&(this.workingPath=this.workingPathForURL(e)),this.parse(t))))}resolveExternalURL(e){return/^[^\\/]/.test(e)?this.workingPath+"/"+e:e}workingPathForURL(e){let t=e.split(/[\\/]/g);return t.pop(),t.join("/")+"/"}parse(e){throw new Error("LoaderBase: Parse not implemented.")}};function su(e){let t;if(t=e instanceof DataView?e:new DataView(e),"{"===String.fromCharCode(t.getUint8(0)))return null;let i="";for(let e=0;e<4;e++)i+=String.fromCharCode(t.getUint8(e));return i}var u3=class extends ic{parse(e){let t=new DataView(e),i=su(t);console.assert("b3dm"===i);let r=t.getUint32(4,!0);console.assert(1===r);let n=t.getUint32(8,!0);console.assert(n===e.byteLength);let s=t.getUint32(12,!0),a=t.getUint32(16,!0),o=t.getUint32(20,!0),l=t.getUint32(24,!0),h=e.slice(28,28+s+a),u=new ld(h,0,s,a),c=28+s+a,p=e.slice(c,c+o+l),d=new nm(p,u.getData("BATCH_LENGTH"),0,o,l),f=c+o+l;return{version:r,featureTable:u,batchTable:d,glbBytes:new Uint8Array(e,f,n-f)}}},EE=class extends u3{constructor(e=co){super(),this.manager=e,this.adjustmentTransform=new Be}parse(e){let t=super.parse(e),i=t.glbBytes.slice().buffer;return new Promise(((e,r)=>{let n=this.manager,s=this.fetchOptions,a=n.getHandler("path.gltf")||new Zu(n);"include"===s.credentials&&"cors"===s.mode&&a.setCrossOrigin("use-credentials"),"credentials"in s&&a.setWithCredentials("include"===s.credentials),s.headers&&a.setRequestHeader(s.headers);let o=this.workingPath;!/[\\/]$/.test(o)&&o.length&&(o+="/");let l=this.adjustmentTransform;a.parse(i,o,(i=>{let{batchTable:r,featureTable:n}=t,{scene:s}=i,a=n.getData("RTC_CENTER");a&&(s.position.x+=a[0],s.position.y+=a[1],s.position.z+=a[2]),i.scene.updateMatrix(),i.scene.matrix.multiply(l),i.scene.matrix.decompose(i.scene.position,i.scene.quaternion,i.scene.scale),i.batchTable=r,i.featureTable=n,s.batchTable=r,s.featureTable=n,e(i)}),r)}))}},h3=class extends ic{parse(e){let t=new DataView(e),i=su(t);console.assert("pnts"===i);let r=t.getUint32(4,!0);console.assert(1===r);let n=t.getUint32(8,!0);console.assert(n===e.byteLength);let s=t.getUint32(12,!0),a=t.getUint32(16,!0),o=t.getUint32(20,!0),l=t.getUint32(24,!0),h=e.slice(28,28+s+a),u=new ld(h,0,s,a),c=28+s+a,p=e.slice(c,c+o+l),d=new nm(p,u.getData("BATCH_LENGTH")||u.getData("POINTS_LENGTH"),0,o,l);return Promise.resolve({version:r,featureTable:u,batchTable:d})}},bE=class extends h3{constructor(e=co){super(),this.manager=e}parse(e){return super.parse(e).then((e=>{let{featureTable:t}=e,i=t.getData("POINTS_LENGTH"),r=t.getData("POSITION",i,"FLOAT","VEC3"),n=t.getData("RGB",i,"UNSIGNED_BYTE","VEC3");["QUANTIZED_VOLUME_OFFSET","QUANTIZED_VOLUME_SCALE","CONSTANT_RGBA","BATCH_LENGTH","POSITION_QUANTIZED","RGBA","RGB565","NORMAL","NORMAL_OCT16P"].forEach((e=>{e in t.header&&console.warn(`PNTSLoader: Unsupported FeatureTable feature "${e}" detected.`)}));let s=new lt;s.setAttribute("position",new Wt(r,3,!1));let a=new qn;a.size=2,a.sizeAttenuation=!1,null!==n&&(s.setAttribute("color",new Wt(n,3,!0)),a.vertexColors=!0);let o=new nn(s,a);e.scene=o,e.scene.featureTable=t;let l=t.getData("RTC_CENTER");return l&&(e.scene.position.x+=l[0],e.scene.position.y+=l[1],e.scene.position.z+=l[2]),e}))}},p3=class extends ic{parse(e){let t=new DataView(e),i=su(t);console.assert("i3dm"===i);let r=t.getUint32(4,!0);console.assert(1===r);let n=t.getUint32(8,!0);console.assert(n===e.byteLength);let s=t.getUint32(12,!0),a=t.getUint32(16,!0),o=t.getUint32(20,!0),l=t.getUint32(24,!0),h=t.getUint32(28,!0),u=e.slice(32,32+s+a),c=new ld(u,0,s,a),p=32+s+a,d=e.slice(p,p+o+l),f=new nm(d,c.getData("INSTANCES_LENGTH"),0,o,l),m=p+o+l,g=new Uint8Array(e,m,n-m),y=null,v=null;if(h)y=g,v=Promise.resolve();else{let e=this.resolveExternalURL(c3(g));v=fetch(e,this.fetchOptions).then((t=>{if(!t.ok)throw new Error(`I3DMLoaderBase : Failed to load file "${e}" with status ${t.status} : ${t.statusText}`);return t.arrayBuffer()})).then((e=>{y=new Uint8Array(e)}))}return v.then((()=>({version:r,featureTable:c,batchTable:f,glbBytes:y})))}},_Ce=new A,GG=new A,VG=new A,SCe=new A,zG=new Hr,d3=new A,f3=new Be,xE=class extends p3{constructor(e=co){super(),this.manager=e,this.adjustmentTransform=new Be}resolveExternalURL(e){return this.manager.resolveURL(super.resolveExternalURL(e))}parse(e){return super.parse(e).then((e=>{let{featureTable:t,batchTable:i}=e,r=e.glbBytes.slice().buffer;return new Promise(((e,n)=>{let s=this.fetchOptions,a=this.manager,o=a.getHandler("path.gltf")||new Zu(a);"include"===s.credentials&&"cors"===s.mode&&o.setCrossOrigin("use-credentials"),"credentials"in s&&o.setWithCredentials("include"===s.credentials),s.headers&&o.setRequestHeader(s.headers);let l=this.workingPath;/[\\/]$/.test(l)||(l+="/");let h=this.adjustmentTransform;o.parse(r,l,(r=>{let n=t.getData("INSTANCES_LENGTH"),s=t.getData("POSITION",n,"FLOAT","VEC3"),a=t.getData("NORMAL_UP",n,"FLOAT","VEC3"),o=t.getData("NORMAL_RIGHT",n,"FLOAT","VEC3"),l=t.getData("SCALE_NON_UNIFORM",n,"FLOAT","VEC3"),u=t.getData("SCALE",n,"FLOAT","SCALAR");["RTC_CENTER","QUANTIZED_VOLUME_OFFSET","QUANTIZED_VOLUME_SCALE","EAST_NORTH_UP","POSITION_QUANTIZED","NORMAL_UP_OCT32P","NORMAL_RIGHT_OCT32P"].forEach((e=>{e in t.header&&console.warn(`I3DMLoader: Unsupported FeatureTable feature "${e}" detected.`)}));let c=new Map,p=[];r.scene.traverse((e=>{if(e.isMesh){let{geometry:t,material:i}=e,r=new rn(t,i,n);r.position.copy(e.position),r.rotation.copy(e.rotation),r.scale.copy(e.scale),p.push(r),c.set(e,r)}}));let d=new A;for(let e=0;e{let i=t.parent;i&&(i.remove(t),i.add(e),e.updateMatrixWorld(),e.position.copy(d).applyMatrix4(e.matrixWorld))}));for(let e=0;e{let t=new ur;return e.forEach((e=>{t.add(e.scene)})),{tiles:e,scene:t}}))}},v3=class{constructor(){this.name="CESIUM_RTC"}afterRoot(e){if(e.parser.json.extensions&&e.parser.json.extensions.CESIUM_RTC){let{center:t}=e.parser.json.extensions.CESIUM_RTC;t&&(e.scene.position.x+=t[0],e.scene.position.y+=t[1],e.scene.position.z+=t[2])}}},y3=class extends ic{constructor(e=co){super(),this.manager=e}parse(e){return new Promise(((t,i)=>{let r=this.manager,n=this.fetchOptions,s=r.getHandler("path.gltf")||r.getHandler("path.glb");s||(s=new Zu(r),s.register((()=>new v3)),"include"===n.credentials&&"cors"===n.mode&&s.setCrossOrigin("use-credentials"),"credentials"in n&&s.setWithCredentials("include"===n.credentials),n.headers&&s.setRequestHeader(n.headers));let a=s.resourcePath||s.path||this.workingPath;!/[\\/]$/.test(a)&&a.length&&(a+="/"),s.parse(e,a,(e=>{t(e)}),i)}))}},T3=new Be,E3=class extends ur{constructor(e){super(),this.name="TilesRenderer.TilesGroup",this.tilesRenderer=e}raycast(e,t){this.tilesRenderer.optimizeRaycast&&this.tilesRenderer.raycast(e,t)}updateMatrixWorld(e){if(this.matrixAutoUpdate&&this.updateMatrix(),this.matrixWorldNeedsUpdate||e){null===this.parent?T3.copy(this.matrix):T3.multiplyMatrices(this.parent.matrixWorld,this.matrix),this.matrixWorldNeedsUpdate=!1;let e=T3.elements,t=this.matrixWorld.elements,i=!1;for(let r=0;r<16;r++){let n=e[r],s=t[r];if(Math.abs(n-s)>Number.EPSILON){i=!0;break}}if(i){this.matrixWorld.copy(T3);let e=this.children;for(let t=0,i=e.length;t=t&&a<=i&&o>=r&&o<=n){let t=RFt(e);c.push(t),this.getCartographicToPosition(a,o,l,t)}}}return c}getBoundingBox(e,t){MCe();let{latStart:i,latEnd:r,lonStart:n,lonEnd:s}=this;if(r-i{Object.getPrototypeOf(e).raycast.call(e,t,i)}))}function YG(e,t,i,r){if(i.has(e)){if(qG(e.cached.scene,r,nc),nc.length>0){nc.length>1&&nc.sort(WG);let e=nc[0];return nc.length=0,e}return null}let n=[],s=e.children;for(let e=0,i=s.length;e1e-6&&console.warn("ThreeTilesRenderer : Non uniform scale used for tile which may cause issues when raycasting.");let t={distance:1/0,tile:null};n.push(t),t.distance=DCe.distanceToSquared(wE.origin)*e*e,t.tile=i}}}n.sort(WG);let a=1/0,o=null;for(let e=0,s=n.length;ea)break;{let e=s.tile,n=e.cached.scene,l=null;if(i.has(e)?(qG(n,r,nc),nc.length>0&&(nc.length>1&&nc.sort(WG),l=nc[0])):l=YG(e,t,i,r),l){let e=l.distance*l.distance;e{e.frustumCulled=e[OCe]&&t}))}var Y_=class extends l3{get autoDisableRendererCulling(){return this._autoDisableRendererCulling}set autoDisableRendererCulling(e){this._autoDisableRendererCulling!==e&&(super._autoDisableRendererCulling=e,this.forEachLoadedModel((t=>{ACe(t,!e)})))}constructor(...e){super(...e),this.group=new E3(this),this.cameras=[],this.cameraMap=new Map,this.cameraInfo=[],this.activeTiles=new Set,this.visibleTiles=new Set,this._autoDisableRendererCulling=!0,this.optimizeRaycast=!0,this.onLoadTileSet=null,this.onLoadModel=null,this.onDisposeModel=null,this.onTileVisibilityChange=null;let t=new Fp;t.setURLModifier((e=>this.preprocessURL?this.preprocessURL(e):e)),this.manager=t;let i=this;this._overridenRaycast=function(e,t){i.optimizeRaycast||Object.getPrototypeOf(this).raycast.call(this,e,t)}}getBounds(e){if(!this.root)return!1;let t=this.root.cached,i=t.box,r=t.boxTransform;return!!i&&(e.copy(i),e.applyMatrix4(r),!0)}getOrientedBounds(e,t){if(!this.root)return!1;let i=this.root.cached,r=i.box,n=i.boxTransform;return!!r&&(e.copy(r),t.copy(n),!0)}getBoundingSphere(e){if(!this.root)return!1;let t=this.root.cached.sphere;return!!t&&(e.copy(t),!0)}forEachLoadedModel(e){this.traverse((t=>{let i=t.cached.scene;i&&e(i,t)}))}raycast(e,t){if(this.root)if(e.firstHitOnly){let i=YG(this.root,this.group,this.activeTiles,e);i&&t.push(i)}else XG(this.root,this.group,this.activeTiles,e,t)}hasCamera(e){return this.cameraMap.has(e)}setCamera(e){let t=this.cameras,i=this.cameraMap;return!i.has(e)&&(i.set(e,new le),t.push(e),!0)}setResolution(e,t,i){let r=this.cameraMap;return!!r.has(e)&&(t instanceof le?r.get(e).copy(t):r.get(e).set(t,i),!0)}setResolutionFromRenderer(e,t){let i=this.cameraMap;if(!i.has(e))return!1;let r=i.get(e);return t.getSize(r),r.multiplyScalar(t.getPixelRatio()),!0}deleteCamera(e){let t=this.cameras,i=this.cameraMap;if(i.has(e)){let r=t.indexOf(e);return t.splice(r,1),i.delete(e),!0}return!1}fetchTileSet(e,...t){let i=super.fetchTileSet(e,...t);return i.then((t=>{this.onLoadTileSet&&Promise.resolve().then((()=>{this.onLoadTileSet(t,e)}))})),i}update(){let e=this.group,t=this.cameras,i=this.cameraMap,r=this.cameraInfo;if(0===t.length)return void console.warn("TilesRenderer: no cameras defined. Cannot update 3d tiles.");for(;r.length>t.length;)r.pop();for(;r.length1e-6&&console.warn("ThreeTilesRenderer : Non uniform scale used for tile which may cause issues when calculating screen space error.");for(let s=0,a=r.length;se.scene));break}case"pnts":{let t=new bE(a);t.workingPath=n,t.fetchOptions=s,l=t.parse(e).then((e=>e.scene));break}case"i3dm":{let t=new xE(a);t.workingPath=n,t.fetchOptions=s,t.adjustmentTransform.copy(au),l=t.parse(e).then((e=>e.scene));break}case"cmpt":{let t=new g3(a);t.workingPath=n,t.fetchOptions=s,t.adjustmentTransform.copy(au),l=t.parse(e).then((e=>e.scene));break}case"gltf":case"glb":let t=new y3(a);t.workingPath=n,t.fetchOptions=s,l=t.parse(e).then((e=>e.scene));break;default:console.warn(`TilesRenderer: Content type "${p}" not supported.`),l=Promise.resolve(null)}return l.then((e=>{if(t._loadIndex!==o)return;e.updateMatrix(),("glb"===p||"gltf"===p)&&e.matrix.multiply(au),e.matrix.premultiply(c),e.matrix.decompose(e.position,e.quaternion,e.scale),e.traverse((e=>{e[OCe]=e.frustumCulled})),ACe(e,!this.autoDisableRendererCulling),u.scene=e,e.traverse((e=>{e.raycast=this._overridenRaycast}));let i=[],r=[],n=[];e.traverse((e=>{if(e.geometry&&r.push(e.geometry),e.material){let t=e.material;i.push(e.material);for(let e in t){let i=t[e];i&&i.isTexture&&n.push(i)}}})),u.materials=i,u.geometry=r,u.textures=n,this.onLoadModel&&this.onLoadModel(e,t)}))}disposeTile(e){let t=e.cached;if(t.scene){let i=t.materials,r=t.geometry,n=t.textures,s=t.scene.parent;for(let e=0,t=r.length;e=s+1e3&&(o.update(1e3*a/(e-s),100),s=e,a=0,h)){var t=performance.memory;h.update(t.usedJSHeapSize/1048576,t.jsHeapSizeLimit/1048576)}return e},update:function(){n=this.end()},domElement:t,setMode:r}};Z_.Panel=function(e,t,i){var r=1/0,n=0,s=Math.round,a=s(window.devicePixelRatio||1),o=80*a,l=48*a,h=3*a,u=2*a,c=3*a,p=15*a,d=74*a,f=30*a,m=document.createElement("canvas");m.width=o,m.height=l,m.style.cssText="width:80px;height:48px";var g=m.getContext("2d");return g.font="bold "+9*a+"px Helvetica,Arial,sans-serif",g.textBaseline="top",g.fillStyle=i,g.fillRect(0,0,o,l),g.fillStyle=t,g.fillText(e,h,u),g.fillRect(c,p,d,f),g.fillStyle=i,g.globalAlpha=.9,g.fillRect(c,p,d,f),{dom:m,update:function(l,y){r=Math.min(r,l),n=Math.max(n,l),g.fillStyle=i,g.globalAlpha=1,g.fillRect(0,0,o,p),g.fillStyle=t,g.fillText(s(l)+" "+e+" ("+s(r)+"-"+s(n)+")",h,u),g.drawImage(m,c+a,p,d-a,f,c,p,d-a,f),g.fillRect(c+d-a,p,a,f),g.fillStyle=i,g.globalAlpha=.9,g.fillRect(c+d-a,p,a,s((1-l/y)*f))}}};var w3=Z_,ls=class{constructor(){this.enabled=!0,this.needsSwap=!0,this.clear=!1,this.renderToScreen=!1}setSize(){}render(){console.error("THREE.Pass: .render() must be implemented in derived pass.")}dispose(){}},CFt=new ki(-1,1,1,-1,0,1),ZG=new lt;ZG.setAttribute("position",new dt([-1,3,0,-1,-1,0,3,-1,0],3)),ZG.setAttribute("uv",new dt([0,2,0,0,2,0],2));var ha=class{constructor(e){this._mesh=new rt(ZG,e)}dispose(){this._mesh.geometry.dispose()}render(e){e.render(this._mesh,CFt)}get material(){return this._mesh.material}set material(e){this._mesh.material=e}},KG={defines:{KERNEL_SIZE_FLOAT:"25.0",KERNEL_SIZE_INT:"25"},uniforms:{tDiffuse:{value:null},uImageIncrement:{value:new le(.001953125,0)},cKernel:{value:[]}},vertexShader:"\n\n\t\tuniform vec2 uImageIncrement;\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv - ( ( KERNEL_SIZE_FLOAT - 1.0 ) / 2.0 ) * uImageIncrement;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}",fragmentShader:"\n\n\t\tuniform float cKernel[ KERNEL_SIZE_INT ];\n\n\t\tuniform sampler2D tDiffuse;\n\t\tuniform vec2 uImageIncrement;\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvec2 imageCoord = vUv;\n\t\t\tvec4 sum = vec4( 0.0, 0.0, 0.0, 0.0 );\n\n\t\t\tfor( int i = 0; i < KERNEL_SIZE_INT; i ++ ) {\n\n\t\t\t\tsum += texture2D( tDiffuse, imageCoord ) * cKernel[ i ];\n\t\t\t\timageCoord += uImageIncrement;\n\n\t\t\t}\n\n\t\t\tgl_FragColor = sum;\n\n\t\t}",buildKernel:function(e){let t=2*Math.ceil(3*e)+1;t>25&&(t=25);let i=.5*(t-1),r=new Array(t),n=0;for(let s=0;s0){e.getClearColor(this._oldClearColor),this.oldClearAlpha=e.getClearAlpha();let t=e.autoClear;e.autoClear=!1,n&&e.state.buffers.stencil.setTest(!1),e.setClearColor(16777215,1),this.changeVisibilityOfSelectedObjects(!1);let r=this.renderScene.background;if(this.renderScene.background=null,this.renderScene.overrideMaterial=this.depthMaterial,e.setRenderTarget(this.renderTargetDepthBuffer),e.clear(),e.render(this.renderScene,this.renderCamera),this.changeVisibilityOfSelectedObjects(!0),this._visibilityCache.clear(),this.updateTextureMatrix(),this.changeVisibilityOfNonSelectedObjects(!1),this.renderScene.overrideMaterial=this.prepareMaskMaterial,this.prepareMaskMaterial.uniforms.cameraNearFar.value.set(this.renderCamera.near,this.renderCamera.far),this.prepareMaskMaterial.uniforms.depthTexture.value=this.renderTargetDepthBuffer.texture,this.prepareMaskMaterial.uniforms.textureMatrix.value=this.textureMatrix,e.setRenderTarget(this.renderTargetMaskBuffer),e.clear(),e.render(this.renderScene,this.renderCamera),this.renderScene.overrideMaterial=null,this.changeVisibilityOfNonSelectedObjects(!0),this._visibilityCache.clear(),this.renderScene.background=r,this.fsQuad.material=this.materialCopy,this.copyUniforms.tDiffuse.value=this.renderTargetMaskBuffer.texture,e.setRenderTarget(this.renderTargetMaskDownSampleBuffer),e.clear(),this.fsQuad.render(e),this.tempPulseColor1.copy(this.visibleEdgeColor),this.tempPulseColor2.copy(this.hiddenEdgeColor),this.pulsePeriod>0){let e=.625+.75*Math.cos(.01*performance.now()/this.pulsePeriod)/2;this.tempPulseColor1.multiplyScalar(e),this.tempPulseColor2.multiplyScalar(e)}this.fsQuad.material=this.edgeDetectionMaterial,this.edgeDetectionMaterial.uniforms.maskTexture.value=this.renderTargetMaskDownSampleBuffer.texture,this.edgeDetectionMaterial.uniforms.texSize.value.set(this.renderTargetMaskDownSampleBuffer.width,this.renderTargetMaskDownSampleBuffer.height),this.edgeDetectionMaterial.uniforms.visibleEdgeColor.value=this.tempPulseColor1,this.edgeDetectionMaterial.uniforms.hiddenEdgeColor.value=this.tempPulseColor2,e.setRenderTarget(this.renderTargetEdgeBuffer1),e.clear(),this.fsQuad.render(e),this.fsQuad.material=this.separableBlurMaterial1,this.separableBlurMaterial1.uniforms.colorTexture.value=this.renderTargetEdgeBuffer1.texture,this.separableBlurMaterial1.uniforms.direction.value=lu.BlurDirectionX,this.separableBlurMaterial1.uniforms.kernelRadius.value=this.edgeThickness,e.setRenderTarget(this.renderTargetBlurBuffer1),e.clear(),this.fsQuad.render(e),this.separableBlurMaterial1.uniforms.colorTexture.value=this.renderTargetBlurBuffer1.texture,this.separableBlurMaterial1.uniforms.direction.value=lu.BlurDirectionY,e.setRenderTarget(this.renderTargetEdgeBuffer1),e.clear(),this.fsQuad.render(e),this.fsQuad.material=this.separableBlurMaterial2,this.separableBlurMaterial2.uniforms.colorTexture.value=this.renderTargetEdgeBuffer1.texture,this.separableBlurMaterial2.uniforms.direction.value=lu.BlurDirectionX,e.setRenderTarget(this.renderTargetBlurBuffer2),e.clear(),this.fsQuad.render(e),this.separableBlurMaterial2.uniforms.colorTexture.value=this.renderTargetBlurBuffer2.texture,this.separableBlurMaterial2.uniforms.direction.value=lu.BlurDirectionY,e.setRenderTarget(this.renderTargetEdgeBuffer2),e.clear(),this.fsQuad.render(e),this.fsQuad.material=this.overlayMaterial,this.overlayMaterial.uniforms.maskTexture.value=this.renderTargetMaskBuffer.texture,this.overlayMaterial.uniforms.edgeTexture1.value=this.renderTargetEdgeBuffer1.texture,this.overlayMaterial.uniforms.edgeTexture2.value=this.renderTargetEdgeBuffer2.texture,this.overlayMaterial.uniforms.patternTexture.value=this.patternTexture,this.overlayMaterial.uniforms.edgeStrength.value=this.edgeStrength,this.overlayMaterial.uniforms.edgeGlow.value=this.edgeGlow,this.overlayMaterial.uniforms.usePatternTexture.value=this.usePatternTexture,n&&e.state.buffers.stencil.setTest(!0),e.setRenderTarget(i),this.fsQuad.render(e),e.setClearColor(this._oldClearColor,this.oldClearAlpha),e.autoClear=t}this.renderToScreen&&(this.fsQuad.material=this.materialCopy,this.copyUniforms.tDiffuse.value=i.texture,e.setRenderTarget(null),this.fsQuad.render(e))}getPrepareMaskMaterial(){return new Yt({uniforms:{depthTexture:{value:null},cameraNearFar:{value:new le(.5,.5)},textureMatrix:{value:null}},vertexShader:"#include \n\t\t\t\t#include \n\n\t\t\t\tvarying vec4 projTexCoord;\n\t\t\t\tvarying vec4 vPosition;\n\t\t\t\tuniform mat4 textureMatrix;\n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\t#include \n\t\t\t\t\t#include \n\t\t\t\t\t#include \n\t\t\t\t\t#include \n\t\t\t\t\t#include \n\n\t\t\t\t\tvPosition = mvPosition;\n\n\t\t\t\t\tvec4 worldPosition = vec4( transformed, 1.0 );\n\n\t\t\t\t\t#ifdef USE_INSTANCING\n\n\t\t\t\t\t\tworldPosition = instanceMatrix * worldPosition;\n\n\t\t\t\t\t#endif\n\t\t\t\t\t\n\t\t\t\t\tworldPosition = modelMatrix * worldPosition;\n\n\t\t\t\t\tprojTexCoord = textureMatrix * worldPosition;\n\n\t\t\t\t}",fragmentShader:"#include \n\t\t\t\tvarying vec4 vPosition;\n\t\t\t\tvarying vec4 projTexCoord;\n\t\t\t\tuniform sampler2D depthTexture;\n\t\t\t\tuniform vec2 cameraNearFar;\n\n\t\t\t\tvoid main() {\n\n\t\t\t\t\tfloat depth = unpackRGBAToDepth(texture2DProj( depthTexture, projTexCoord ));\n\t\t\t\t\tfloat viewZ = - DEPTH_TO_VIEW_Z( depth, cameraNearFar.x, cameraNearFar.y );\n\t\t\t\t\tfloat depthTest = (-vPosition.z > viewZ) ? 1.0 : 0.0;\n\t\t\t\t\tgl_FragColor = vec4(0.0, depthTest, 1.0, 1.0);\n\n\t\t\t\t}"})}getEdgeDetectionMaterial(){return new Yt({uniforms:{maskTexture:{value:null},texSize:{value:new le(.5,.5)},visibleEdgeColor:{value:new A(1,1,1)},hiddenEdgeColor:{value:new A(1,1,1)}},vertexShader:"varying vec2 vUv;\n\n\t\t\t\tvoid main() {\n\t\t\t\t\tvUv = uv;\n\t\t\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\t\t\t\t}",fragmentShader:"varying vec2 vUv;\n\n\t\t\t\tuniform sampler2D maskTexture;\n\t\t\t\tuniform vec2 texSize;\n\t\t\t\tuniform vec3 visibleEdgeColor;\n\t\t\t\tuniform vec3 hiddenEdgeColor;\n\n\t\t\t\tvoid main() {\n\t\t\t\t\tvec2 invSize = 1.0 / texSize;\n\t\t\t\t\tvec4 uvOffset = vec4(1.0, 0.0, 0.0, 1.0) * vec4(invSize, invSize);\n\t\t\t\t\tvec4 c1 = texture2D( maskTexture, vUv + uvOffset.xy);\n\t\t\t\t\tvec4 c2 = texture2D( maskTexture, vUv - uvOffset.xy);\n\t\t\t\t\tvec4 c3 = texture2D( maskTexture, vUv + uvOffset.yw);\n\t\t\t\t\tvec4 c4 = texture2D( maskTexture, vUv - uvOffset.yw);\n\t\t\t\t\tfloat diff1 = (c1.r - c2.r)*0.5;\n\t\t\t\t\tfloat diff2 = (c3.r - c4.r)*0.5;\n\t\t\t\t\tfloat d = length( vec2(diff1, diff2) );\n\t\t\t\t\tfloat a1 = min(c1.g, c2.g);\n\t\t\t\t\tfloat a2 = min(c3.g, c4.g);\n\t\t\t\t\tfloat visibilityFactor = min(a1, a2);\n\t\t\t\t\tvec3 edgeColor = 1.0 - visibilityFactor > 0.001 ? visibleEdgeColor : hiddenEdgeColor;\n\t\t\t\t\tgl_FragColor = vec4(edgeColor, 1.0) * vec4(d);\n\t\t\t\t}"})}getSeperableBlurMaterial(e){return new Yt({defines:{MAX_RADIUS:e},uniforms:{colorTexture:{value:null},texSize:{value:new le(.5,.5)},direction:{value:new le(.5,.5)},kernelRadius:{value:1}},vertexShader:"varying vec2 vUv;\n\n\t\t\t\tvoid main() {\n\t\t\t\t\tvUv = uv;\n\t\t\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\t\t\t\t}",fragmentShader:"#include \n\t\t\t\tvarying vec2 vUv;\n\t\t\t\tuniform sampler2D colorTexture;\n\t\t\t\tuniform vec2 texSize;\n\t\t\t\tuniform vec2 direction;\n\t\t\t\tuniform float kernelRadius;\n\n\t\t\t\tfloat gaussianPdf(in float x, in float sigma) {\n\t\t\t\t\treturn 0.39894 * exp( -0.5 * x * x/( sigma * sigma))/sigma;\n\t\t\t\t}\n\n\t\t\t\tvoid main() {\n\t\t\t\t\tvec2 invSize = 1.0 / texSize;\n\t\t\t\t\tfloat sigma = kernelRadius/2.0;\n\t\t\t\t\tfloat weightSum = gaussianPdf(0.0, sigma);\n\t\t\t\t\tvec4 diffuseSum = texture2D( colorTexture, vUv) * weightSum;\n\t\t\t\t\tvec2 delta = direction * invSize * kernelRadius/float(MAX_RADIUS);\n\t\t\t\t\tvec2 uvOffset = delta;\n\t\t\t\t\tfor( int i = 1; i <= MAX_RADIUS; i ++ ) {\n\t\t\t\t\t\tfloat x = kernelRadius * float(i) / float(MAX_RADIUS);\n\t\t\t\t\t\tfloat w = gaussianPdf(x, sigma);\n\t\t\t\t\t\tvec4 sample1 = texture2D( colorTexture, vUv + uvOffset);\n\t\t\t\t\t\tvec4 sample2 = texture2D( colorTexture, vUv - uvOffset);\n\t\t\t\t\t\tdiffuseSum += ((sample1 + sample2) * w);\n\t\t\t\t\t\tweightSum += (2.0 * w);\n\t\t\t\t\t\tuvOffset += delta;\n\t\t\t\t\t}\n\t\t\t\t\tgl_FragColor = diffuseSum/weightSum;\n\t\t\t\t}"})}getOverlayMaterial(){return new Yt({uniforms:{maskTexture:{value:null},edgeTexture1:{value:null},edgeTexture2:{value:null},patternTexture:{value:null},edgeStrength:{value:1},edgeGlow:{value:1},usePatternTexture:{value:0}},vertexShader:"varying vec2 vUv;\n\n\t\t\t\tvoid main() {\n\t\t\t\t\tvUv = uv;\n\t\t\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\t\t\t\t}",fragmentShader:"varying vec2 vUv;\n\n\t\t\t\tuniform sampler2D maskTexture;\n\t\t\t\tuniform sampler2D edgeTexture1;\n\t\t\t\tuniform sampler2D edgeTexture2;\n\t\t\t\tuniform sampler2D patternTexture;\n\t\t\t\tuniform float edgeStrength;\n\t\t\t\tuniform float edgeGlow;\n\t\t\t\tuniform bool usePatternTexture;\n\n\t\t\t\tvoid main() {\n\t\t\t\t\tvec4 edgeValue1 = texture2D(edgeTexture1, vUv);\n\t\t\t\t\tvec4 edgeValue2 = texture2D(edgeTexture2, vUv);\n\t\t\t\t\tvec4 maskColor = texture2D(maskTexture, vUv);\n\t\t\t\t\tvec4 patternColor = texture2D(patternTexture, 6.0 * vUv);\n\t\t\t\t\tfloat visibilityFactor = 1.0 - maskColor.g > 0.0 ? 1.0 : 0.5;\n\t\t\t\t\tvec4 edgeValue = edgeValue1 + edgeValue2 * edgeGlow;\n\t\t\t\t\tvec4 finalColor = edgeStrength * maskColor.r * edgeValue;\n\t\t\t\t\tif(usePatternTexture)\n\t\t\t\t\t\tfinalColor += + visibilityFactor * (1.0 - maskColor.r) * (1.0 - patternColor.r);\n\t\t\t\t\tgl_FragColor = finalColor;\n\t\t\t\t}",blending:yp,depthTest:!1,depthWrite:!1,transparent:!0})}};lu.BlurDirectionX=new le(1,0),lu.BlurDirectionY=new le(0,1);var D3=class extends ls{constructor(e,t,i,r,n){super(),this.scene=e,this.camera=t,this.overrideMaterial=i,this.clearColor=r,this.clearAlpha=void 0!==n?n:0,this.clear=!0,this.clearDepth=!1,this.needsSwap=!1,this._oldClearColor=new je}render(e,t,i){let r,n,s=e.autoClear;e.autoClear=!1,void 0!==this.overrideMaterial&&(n=this.scene.overrideMaterial,this.scene.overrideMaterial=this.overrideMaterial),this.clearColor&&(e.getClearColor(this._oldClearColor),r=e.getClearAlpha(),e.setClearColor(this.clearColor,this.clearAlpha)),this.clearDepth&&e.clearDepth(),e.setRenderTarget(this.renderToScreen?null:i),this.clear&&e.clear(e.autoClearColor,e.autoClearDepth,e.autoClearStencil),e.render(this.scene,this.camera),this.clearColor&&e.setClearColor(this._oldClearColor,r),void 0!==this.overrideMaterial&&(this.scene.overrideMaterial=n),e.autoClear=s}},J_={defines:{NUM_SAMPLES:7,NUM_RINGS:4,NORMAL_TEXTURE:0,DIFFUSE_TEXTURE:0,DEPTH_PACKING:1,PERSPECTIVE_CAMERA:1},uniforms:{tDepth:{value:null},tDiffuse:{value:null},tNormal:{value:null},size:{value:new le(512,512)},cameraNear:{value:1},cameraFar:{value:100},cameraProjectionMatrix:{value:new Be},cameraInverseProjectionMatrix:{value:new Be},scale:{value:1},intensity:{value:.1},bias:{value:.5},minResolution:{value:0},kernelRadius:{value:100},randomSeed:{value:0}},vertexShader:"\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\t\t\tvUv = uv;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\t\t}",fragmentShader:"\n\n\t\t#include \n\n\t\tvarying vec2 vUv;\n\n\t\t#if DIFFUSE_TEXTURE == 1\n\t\tuniform sampler2D tDiffuse;\n\t\t#endif\n\n\t\tuniform sampler2D tDepth;\n\n\t\t#if NORMAL_TEXTURE == 1\n\t\tuniform sampler2D tNormal;\n\t\t#endif\n\n\t\tuniform float cameraNear;\n\t\tuniform float cameraFar;\n\t\tuniform mat4 cameraProjectionMatrix;\n\t\tuniform mat4 cameraInverseProjectionMatrix;\n\n\t\tuniform float scale;\n\t\tuniform float intensity;\n\t\tuniform float bias;\n\t\tuniform float kernelRadius;\n\t\tuniform float minResolution;\n\t\tuniform vec2 size;\n\t\tuniform float randomSeed;\n\n\t\t// RGBA depth\n\n\t\t#include \n\n\t\tvec4 getDefaultColor( const in vec2 screenPosition ) {\n\t\t\t#if DIFFUSE_TEXTURE == 1\n\t\t\treturn texture2D( tDiffuse, vUv );\n\t\t\t#else\n\t\t\treturn vec4( 1.0 );\n\t\t\t#endif\n\t\t}\n\n\t\tfloat getDepth( const in vec2 screenPosition ) {\n\t\t\t#if DEPTH_PACKING == 1\n\t\t\treturn unpackRGBAToDepth( texture2D( tDepth, screenPosition ) );\n\t\t\t#else\n\t\t\treturn texture2D( tDepth, screenPosition ).x;\n\t\t\t#endif\n\t\t}\n\n\t\tfloat getViewZ( const in float depth ) {\n\t\t\t#if PERSPECTIVE_CAMERA == 1\n\t\t\treturn perspectiveDepthToViewZ( depth, cameraNear, cameraFar );\n\t\t\t#else\n\t\t\treturn orthographicDepthToViewZ( depth, cameraNear, cameraFar );\n\t\t\t#endif\n\t\t}\n\n\t\tvec3 getViewPosition( const in vec2 screenPosition, const in float depth, const in float viewZ ) {\n\t\t\tfloat clipW = cameraProjectionMatrix[2][3] * viewZ + cameraProjectionMatrix[3][3];\n\t\t\tvec4 clipPosition = vec4( ( vec3( screenPosition, depth ) - 0.5 ) * 2.0, 1.0 );\n\t\t\tclipPosition *= clipW; // unprojection.\n\n\t\t\treturn ( cameraInverseProjectionMatrix * clipPosition ).xyz;\n\t\t}\n\n\t\tvec3 getViewNormal( const in vec3 viewPosition, const in vec2 screenPosition ) {\n\t\t\t#if NORMAL_TEXTURE == 1\n\t\t\treturn unpackRGBToNormal( texture2D( tNormal, screenPosition ).xyz );\n\t\t\t#else\n\t\t\treturn normalize( cross( dFdx( viewPosition ), dFdy( viewPosition ) ) );\n\t\t\t#endif\n\t\t}\n\n\t\tfloat scaleDividedByCameraFar;\n\t\tfloat minResolutionMultipliedByCameraFar;\n\n\t\tfloat getOcclusion( const in vec3 centerViewPosition, const in vec3 centerViewNormal, const in vec3 sampleViewPosition ) {\n\t\t\tvec3 viewDelta = sampleViewPosition - centerViewPosition;\n\t\t\tfloat viewDistance = length( viewDelta );\n\t\t\tfloat scaledScreenDistance = scaleDividedByCameraFar * viewDistance;\n\n\t\t\treturn max(0.0, (dot(centerViewNormal, viewDelta) - minResolutionMultipliedByCameraFar) / scaledScreenDistance - bias) / (1.0 + pow2( scaledScreenDistance ) );\n\t\t}\n\n\t\t// moving costly divides into consts\n\t\tconst float ANGLE_STEP = PI2 * float( NUM_RINGS ) / float( NUM_SAMPLES );\n\t\tconst float INV_NUM_SAMPLES = 1.0 / float( NUM_SAMPLES );\n\n\t\tfloat getAmbientOcclusion( const in vec3 centerViewPosition ) {\n\t\t\t// precompute some variables require in getOcclusion.\n\t\t\tscaleDividedByCameraFar = scale / cameraFar;\n\t\t\tminResolutionMultipliedByCameraFar = minResolution * cameraFar;\n\t\t\tvec3 centerViewNormal = getViewNormal( centerViewPosition, vUv );\n\n\t\t\t// jsfiddle that shows sample pattern: https://jsfiddle.net/a16ff1p7/\n\t\t\tfloat angle = rand( vUv + randomSeed ) * PI2;\n\t\t\tvec2 radius = vec2( kernelRadius * INV_NUM_SAMPLES ) / size;\n\t\t\tvec2 radiusStep = radius;\n\n\t\t\tfloat occlusionSum = 0.0;\n\t\t\tfloat weightSum = 0.0;\n\n\t\t\tfor( int i = 0; i < NUM_SAMPLES; i ++ ) {\n\t\t\t\tvec2 sampleUv = vUv + vec2( cos( angle ), sin( angle ) ) * radius;\n\t\t\t\tradius += radiusStep;\n\t\t\t\tangle += ANGLE_STEP;\n\n\t\t\t\tfloat sampleDepth = getDepth( sampleUv );\n\t\t\t\tif( sampleDepth >= ( 1.0 - EPSILON ) ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tfloat sampleViewZ = getViewZ( sampleDepth );\n\t\t\t\tvec3 sampleViewPosition = getViewPosition( sampleUv, sampleDepth, sampleViewZ );\n\t\t\t\tocclusionSum += getOcclusion( centerViewPosition, centerViewNormal, sampleViewPosition );\n\t\t\t\tweightSum += 1.0;\n\t\t\t}\n\n\t\t\tif( weightSum == 0.0 ) discard;\n\n\t\t\treturn occlusionSum * ( intensity / weightSum );\n\t\t}\n\n\t\tvoid main() {\n\t\t\tfloat centerDepth = getDepth( vUv );\n\t\t\tif( centerDepth >= ( 1.0 - EPSILON ) ) {\n\t\t\t\tdiscard;\n\t\t\t}\n\n\t\t\tfloat centerViewZ = getViewZ( centerDepth );\n\t\t\tvec3 viewPosition = getViewPosition( vUv, centerDepth, centerViewZ );\n\n\t\t\tfloat ambientOcclusion = getAmbientOcclusion( viewPosition );\n\n\t\t\tgl_FragColor = getDefaultColor( vUv );\n\t\t\tgl_FragColor.xyz *= 1.0 - ambientOcclusion;\n\t\t}"},dd={defines:{KERNEL_RADIUS:4,DEPTH_PACKING:1,PERSPECTIVE_CAMERA:1},uniforms:{tDiffuse:{value:null},size:{value:new le(512,512)},sampleUvOffsets:{value:[new le(0,0)]},sampleWeights:{value:[1]},tDepth:{value:null},cameraNear:{value:10},cameraFar:{value:1e3},depthCutoff:{value:10}},vertexShader:"\n\n\t\t#include \n\n\t\tuniform vec2 size;\n\n\t\tvarying vec2 vUv;\n\t\tvarying vec2 vInvSize;\n\n\t\tvoid main() {\n\t\t\tvUv = uv;\n\t\t\tvInvSize = 1.0 / size;\n\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\t\t}",fragmentShader:"\n\n\t\t#include \n\t\t#include \n\n\t\tuniform sampler2D tDiffuse;\n\t\tuniform sampler2D tDepth;\n\n\t\tuniform float cameraNear;\n\t\tuniform float cameraFar;\n\t\tuniform float depthCutoff;\n\n\t\tuniform vec2 sampleUvOffsets[ KERNEL_RADIUS + 1 ];\n\t\tuniform float sampleWeights[ KERNEL_RADIUS + 1 ];\n\n\t\tvarying vec2 vUv;\n\t\tvarying vec2 vInvSize;\n\n\t\tfloat getDepth( const in vec2 screenPosition ) {\n\t\t\t#if DEPTH_PACKING == 1\n\t\t\treturn unpackRGBAToDepth( texture2D( tDepth, screenPosition ) );\n\t\t\t#else\n\t\t\treturn texture2D( tDepth, screenPosition ).x;\n\t\t\t#endif\n\t\t}\n\n\t\tfloat getViewZ( const in float depth ) {\n\t\t\t#if PERSPECTIVE_CAMERA == 1\n\t\t\treturn perspectiveDepthToViewZ( depth, cameraNear, cameraFar );\n\t\t\t#else\n\t\t\treturn orthographicDepthToViewZ( depth, cameraNear, cameraFar );\n\t\t\t#endif\n\t\t}\n\n\t\tvoid main() {\n\t\t\tfloat depth = getDepth( vUv );\n\t\t\tif( depth >= ( 1.0 - EPSILON ) ) {\n\t\t\t\tdiscard;\n\t\t\t}\n\n\t\t\tfloat centerViewZ = -getViewZ( depth );\n\t\t\tbool rBreak = false, lBreak = false;\n\n\t\t\tfloat weightSum = sampleWeights[0];\n\t\t\tvec4 diffuseSum = texture2D( tDiffuse, vUv ) * weightSum;\n\n\t\t\tfor( int i = 1; i <= KERNEL_RADIUS; i ++ ) {\n\n\t\t\t\tfloat sampleWeight = sampleWeights[i];\n\t\t\t\tvec2 sampleUvOffset = sampleUvOffsets[i] * vInvSize;\n\n\t\t\t\tvec2 sampleUv = vUv + sampleUvOffset;\n\t\t\t\tfloat viewZ = -getViewZ( getDepth( sampleUv ) );\n\n\t\t\t\tif( abs( viewZ - centerViewZ ) > depthCutoff ) rBreak = true;\n\n\t\t\t\tif( ! rBreak ) {\n\t\t\t\t\tdiffuseSum += texture2D( tDiffuse, sampleUv ) * sampleWeight;\n\t\t\t\t\tweightSum += sampleWeight;\n\t\t\t\t}\n\n\t\t\t\tsampleUv = vUv - sampleUvOffset;\n\t\t\t\tviewZ = -getViewZ( getDepth( sampleUv ) );\n\n\t\t\t\tif( abs( viewZ - centerViewZ ) > depthCutoff ) lBreak = true;\n\n\t\t\t\tif( ! lBreak ) {\n\t\t\t\t\tdiffuseSum += texture2D( tDiffuse, sampleUv ) * sampleWeight;\n\t\t\t\t\tweightSum += sampleWeight;\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tgl_FragColor = diffuseSum / weightSum;\n\t\t}"},Q_={createSampleWeights:function(e,t){let i=[];for(let r=0;r<=e;r++)i.push(OFt(r,t));return i},createSampleOffsets:function(e,t){let i=[];for(let r=0;r<=e;r++)i.push(t.clone().multiplyScalar(r));return i},configure:function(e,t,i,r){e.defines.KERNEL_RADIUS=t,e.uniforms.sampleUvOffsets.value=Q_.createSampleOffsets(t,r),e.uniforms.sampleWeights.value=Q_.createSampleWeights(t,i),e.needsUpdate=!0}};function OFt(e,t){return Math.exp(-e*e/(t*t*2))/(Math.sqrt(2*Math.PI)*t)}var C3={uniforms:{tDiffuse:{value:null},opacity:{value:1}},vertexShader:"\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}",fragmentShader:"\n\n\t\tuniform float opacity;\n\n\t\tuniform sampler2D tDiffuse;\n\n\t\tvarying vec2 vUv;\n\n\t\t#include \n\n\t\tvoid main() {\n\n\t\t\tfloat depth = 1.0 - unpackRGBAToDepth( texture2D( tDiffuse, vUv ) );\n\t\t\tgl_FragColor = vec4( vec3( depth ), opacity );\n\n\t\t}"},eS=class extends ls{constructor(e,t,i=!1,r=!1,n=new le(256,256)){let s;super(),this.scene=e,this.camera=t,this.clear=!0,this.needsSwap=!1,this.supportsDepthTextureExtension=i,this.supportsNormalTexture=r,this.originalClearColor=new je,this._oldClearColor=new je,this.oldClearAlpha=1,this.params={output:0,saoBias:.5,saoIntensity:.18,saoScale:1,saoKernelRadius:100,saoMinResolution:0,saoBlur:!0,saoBlurRadius:8,saoBlurStdDev:4,saoBlurDepthCutoff:.01},this.resolution=new le(n.x,n.y),this.saoRenderTarget=new zr(this.resolution.x,this.resolution.y),this.blurIntermediateRenderTarget=this.saoRenderTarget.clone(),this.beautyRenderTarget=this.saoRenderTarget.clone(),this.normalRenderTarget=new zr(this.resolution.x,this.resolution.y,{minFilter:Ci,magFilter:Ci}),this.depthRenderTarget=this.normalRenderTarget.clone(),this.supportsDepthTextureExtension&&(s=new of,s.type=Ox,this.beautyRenderTarget.depthTexture=s,this.beautyRenderTarget.depthBuffer=!0),this.depthMaterial=new _p,this.depthMaterial.depthPacking=qy,this.depthMaterial.blending=Ui,this.normalMaterial=new uf,this.normalMaterial.blending=Ui,this.saoMaterial=new Yt({defines:Object.assign({},J_.defines),fragmentShader:J_.fragmentShader,vertexShader:J_.vertexShader,uniforms:hn.clone(J_.uniforms)}),this.saoMaterial.extensions.derivatives=!0,this.saoMaterial.defines.DEPTH_PACKING=this.supportsDepthTextureExtension?0:1,this.saoMaterial.defines.NORMAL_TEXTURE=this.supportsNormalTexture?1:0,this.saoMaterial.defines.PERSPECTIVE_CAMERA=this.camera.isPerspectiveCamera?1:0,this.saoMaterial.uniforms.tDepth.value=this.supportsDepthTextureExtension?s:this.depthRenderTarget.texture,this.saoMaterial.uniforms.tNormal.value=this.normalRenderTarget.texture,this.saoMaterial.uniforms.size.value.set(this.resolution.x,this.resolution.y),this.saoMaterial.uniforms.cameraInverseProjectionMatrix.value.copy(this.camera.projectionMatrixInverse),this.saoMaterial.uniforms.cameraProjectionMatrix.value=this.camera.projectionMatrix,this.saoMaterial.blending=Ui,this.vBlurMaterial=new Yt({uniforms:hn.clone(dd.uniforms),defines:Object.assign({},dd.defines),vertexShader:dd.vertexShader,fragmentShader:dd.fragmentShader}),this.vBlurMaterial.defines.DEPTH_PACKING=this.supportsDepthTextureExtension?0:1,this.vBlurMaterial.defines.PERSPECTIVE_CAMERA=this.camera.isPerspectiveCamera?1:0,this.vBlurMaterial.uniforms.tDiffuse.value=this.saoRenderTarget.texture,this.vBlurMaterial.uniforms.tDepth.value=this.supportsDepthTextureExtension?s:this.depthRenderTarget.texture,this.vBlurMaterial.uniforms.size.value.set(this.resolution.x,this.resolution.y),this.vBlurMaterial.blending=Ui,this.hBlurMaterial=new Yt({uniforms:hn.clone(dd.uniforms),defines:Object.assign({},dd.defines),vertexShader:dd.vertexShader,fragmentShader:dd.fragmentShader}),this.hBlurMaterial.defines.DEPTH_PACKING=this.supportsDepthTextureExtension?0:1,this.hBlurMaterial.defines.PERSPECTIVE_CAMERA=this.camera.isPerspectiveCamera?1:0,this.hBlurMaterial.uniforms.tDiffuse.value=this.blurIntermediateRenderTarget.texture,this.hBlurMaterial.uniforms.tDepth.value=this.supportsDepthTextureExtension?s:this.depthRenderTarget.texture,this.hBlurMaterial.uniforms.size.value.set(this.resolution.x,this.resolution.y),this.hBlurMaterial.blending=Ui,this.materialCopy=new Yt({uniforms:hn.clone(pa.uniforms),vertexShader:pa.vertexShader,fragmentShader:pa.fragmentShader,blending:Ui}),this.materialCopy.transparent=!0,this.materialCopy.depthTest=!1,this.materialCopy.depthWrite=!1,this.materialCopy.blending=Hp,this.materialCopy.blendSrc=zy,this.materialCopy.blendDst=df,this.materialCopy.blendEquation=Ma,this.materialCopy.blendSrcAlpha=Vy,this.materialCopy.blendDstAlpha=df,this.materialCopy.blendEquationAlpha=Ma,this.depthCopy=new Yt({uniforms:hn.clone(C3.uniforms),vertexShader:C3.vertexShader,fragmentShader:C3.fragmentShader,blending:Ui}),this.fsQuad=new ha(null)}render(e,t,i){if(this.renderToScreen&&(this.materialCopy.blending=Ui,this.materialCopy.uniforms.tDiffuse.value=i.texture,this.materialCopy.needsUpdate=!0,this.renderPass(e,this.materialCopy,null)),1===this.params.output)return;e.getClearColor(this._oldClearColor),this.oldClearAlpha=e.getClearAlpha();let r=e.autoClear;e.autoClear=!1,e.setRenderTarget(this.depthRenderTarget),e.clear(),this.saoMaterial.uniforms.bias.value=this.params.saoBias,this.saoMaterial.uniforms.intensity.value=this.params.saoIntensity,this.saoMaterial.uniforms.scale.value=this.params.saoScale,this.saoMaterial.uniforms.kernelRadius.value=this.params.saoKernelRadius,this.saoMaterial.uniforms.minResolution.value=this.params.saoMinResolution,this.saoMaterial.uniforms.cameraNear.value=this.camera.near,this.saoMaterial.uniforms.cameraFar.value=this.camera.far;let n=this.params.saoBlurDepthCutoff*(this.camera.far-this.camera.near);this.vBlurMaterial.uniforms.depthCutoff.value=n,this.hBlurMaterial.uniforms.depthCutoff.value=n,this.vBlurMaterial.uniforms.cameraNear.value=this.camera.near,this.vBlurMaterial.uniforms.cameraFar.value=this.camera.far,this.hBlurMaterial.uniforms.cameraNear.value=this.camera.near,this.hBlurMaterial.uniforms.cameraFar.value=this.camera.far,this.params.saoBlurRadius=Math.floor(this.params.saoBlurRadius),(this.prevStdDev!==this.params.saoBlurStdDev||this.prevNumSamples!==this.params.saoBlurRadius)&&(Q_.configure(this.vBlurMaterial,this.params.saoBlurRadius,this.params.saoBlurStdDev,new le(0,1)),Q_.configure(this.hBlurMaterial,this.params.saoBlurRadius,this.params.saoBlurStdDev,new le(1,0)),this.prevStdDev=this.params.saoBlurStdDev,this.prevNumSamples=this.params.saoBlurRadius),e.setClearColor(0),e.setRenderTarget(this.beautyRenderTarget),e.clear(),e.render(this.scene,this.camera),this.supportsDepthTextureExtension||this.renderOverride(e,this.depthMaterial,this.depthRenderTarget,0,1),this.supportsNormalTexture&&this.renderOverride(e,this.normalMaterial,this.normalRenderTarget,7829503,1),this.renderPass(e,this.saoMaterial,this.saoRenderTarget,16777215,1),this.params.saoBlur&&(this.renderPass(e,this.vBlurMaterial,this.blurIntermediateRenderTarget,16777215,1),this.renderPass(e,this.hBlurMaterial,this.saoRenderTarget,16777215,1));let s=this.materialCopy;3===this.params.output?this.supportsDepthTextureExtension?(this.materialCopy.uniforms.tDiffuse.value=this.beautyRenderTarget.depthTexture,this.materialCopy.needsUpdate=!0):(this.depthCopy.uniforms.tDiffuse.value=this.depthRenderTarget.texture,this.depthCopy.needsUpdate=!0,s=this.depthCopy):4===this.params.output?(this.materialCopy.uniforms.tDiffuse.value=this.normalRenderTarget.texture,this.materialCopy.needsUpdate=!0):(this.materialCopy.uniforms.tDiffuse.value=this.saoRenderTarget.texture,this.materialCopy.needsUpdate=!0),0===this.params.output?s.blending=Hp:s.blending=Ui,this.renderPass(e,s,this.renderToScreen?null:i),e.setClearColor(this._oldClearColor,this.oldClearAlpha),e.autoClear=r}renderPass(e,t,i,r,n){e.getClearColor(this.originalClearColor);let s=e.getClearAlpha(),a=e.autoClear;e.setRenderTarget(i),e.autoClear=!1,null!=r&&(e.setClearColor(r),e.setClearAlpha(n||0),e.clear()),this.fsQuad.material=t,this.fsQuad.render(e),e.autoClear=a,e.setClearColor(this.originalClearColor),e.setClearAlpha(s)}renderOverride(e,t,i,r,n){e.getClearColor(this.originalClearColor);let s=e.getClearAlpha(),a=e.autoClear;e.setRenderTarget(i),e.autoClear=!1,r=t.clearColor||r,n=t.clearAlpha||n,null!=r&&(e.setClearColor(r),e.setClearAlpha(n||0),e.clear()),this.scene.overrideMaterial=t,e.render(this.scene,this.camera),this.scene.overrideMaterial=null,e.autoClear=a,e.setClearColor(this.originalClearColor),e.setClearAlpha(s)}setSize(e,t){this.beautyRenderTarget.setSize(e,t),this.saoRenderTarget.setSize(e,t),this.blurIntermediateRenderTarget.setSize(e,t),this.normalRenderTarget.setSize(e,t),this.depthRenderTarget.setSize(e,t),this.saoMaterial.uniforms.size.value.set(e,t),this.saoMaterial.uniforms.cameraInverseProjectionMatrix.value.copy(this.camera.projectionMatrixInverse),this.saoMaterial.uniforms.cameraProjectionMatrix.value=this.camera.projectionMatrix,this.saoMaterial.needsUpdate=!0,this.vBlurMaterial.uniforms.size.value.set(e,t),this.vBlurMaterial.needsUpdate=!0,this.hBlurMaterial.uniforms.size.value.set(e,t),this.hBlurMaterial.needsUpdate=!0}dispose(){this.saoRenderTarget.dispose(),this.blurIntermediateRenderTarget.dispose(),this.beautyRenderTarget.dispose(),this.normalRenderTarget.dispose(),this.depthRenderTarget.dispose(),this.depthMaterial.dispose(),this.normalMaterial.dispose(),this.saoMaterial.dispose(),this.vBlurMaterial.dispose(),this.hBlurMaterial.dispose(),this.materialCopy.dispose(),this.depthCopy.dispose(),this.fsQuad.dispose()}};eS.OUTPUT={Beauty:1,Default:0,SAO:2,Depth:3,Normal:4};var A3=class extends ls{constructor(e,t,i,r){super(),this.scene=e,this.camera=t,this.sampleLevel=4,this.unbiased=!0,this.clearColor=void 0!==i?i:0,this.clearAlpha=void 0!==r?r:0,this._oldClearColor=new je;let n=pa;this.copyUniforms=hn.clone(n.uniforms),this.copyMaterial=new Yt({uniforms:this.copyUniforms,vertexShader:n.vertexShader,fragmentShader:n.fragmentShader,transparent:!0,depthTest:!1,depthWrite:!1,blending:Hp,blendEquation:Ma,blendDst:Gy,blendDstAlpha:Gy,blendSrc:Cx,blendSrcAlpha:Gy}),this.fsQuad=new ha(this.copyMaterial)}dispose(){this.sampleRenderTarget&&(this.sampleRenderTarget.dispose(),this.sampleRenderTarget=null),this.copyMaterial.dispose(),this.fsQuad.dispose()}setSize(e,t){this.sampleRenderTarget&&this.sampleRenderTarget.setSize(e,t)}render(e,t,i){this.sampleRenderTarget||(this.sampleRenderTarget=new zr(i.width,i.height),this.sampleRenderTarget.texture.name="SSAARenderPass.sample");let r=PFt[Math.max(0,Math.min(this.sampleLevel,5))],n=e.autoClear;e.autoClear=!1,e.getClearColor(this._oldClearColor);let s=e.getClearAlpha(),a=1/r.length;this.copyUniforms.tDiffuse.value=this.sampleRenderTarget.texture;let o={fullWidth:i.width,fullHeight:i.height,offsetX:0,offsetY:0,width:i.width,height:i.height},l=Object.assign({},this.camera.view);l.enabled&&Object.assign(o,l);for(let i=0;id?(s=1,a=0):(s=0,a=1);let f=p-s+u,m=d-a+u,g=p-1+2*u,y=d-1+2*u,v=255&l,T=255&h,x=this.perm[v+this.perm[T]]%12,b=this.perm[v+s+this.perm[T+a]]%12,_=this.perm[v+1+this.perm[T+1]]%12,E=.5-p*p-d*d;E<0?i=0:(E*=E,i=E*E*this.dot(this.grad3[x],p,d));let w=.5-f*f-m*m;w<0?r=0:(w*=w,r=w*w*this.dot(this.grad3[b],f,m));let S=.5-g*g-y*y;return S<0?n=0:(S*=S,n=S*S*this.dot(this.grad3[_],g,y)),70*(i+r+n)}noise3d(e,t,i){let r,n,s,a,o,l,h,u,c,p,d=.3333333333333333*(e+t+i),f=Math.floor(e+d),m=Math.floor(t+d),g=Math.floor(i+d),y=1/6,v=(f+m+g)*y,T=e-(f-v),x=t-(m-v),b=i-(g-v);T>=x?x>=b?(o=1,l=0,h=0,u=1,c=1,p=0):T>=b?(o=1,l=0,h=0,u=1,c=0,p=1):(o=0,l=0,h=1,u=1,c=0,p=1):xb?32:0)+(x>_?16:0)+(b>_?8:0)+(x>E?4:0)+(b>E?2:0)+(_>E?1:0),S=u[w][0]>=3?1:0,I=u[w][1]>=3?1:0,M=u[w][2]>=3?1:0,A=u[w][3]>=3?1:0,D=u[w][0]>=2?1:0,O=u[w][1]>=2?1:0,R=u[w][2]>=2?1:0,C=u[w][3]>=2?1:0,N=u[w][0]>=1?1:0,P=u[w][1]>=1?1:0,L=u[w][2]>=1?1:0,F=u[w][3]>=1?1:0,U=x-S+d,k=b-I+d,B=_-M+d,G=E-A+d,z=x-D+2*d,H=b-O+2*d,V=_-R+2*d,j=E-C+2*d,W=x-N+3*d,Y=b-P+3*d,X=_-L+3*d,q=E-F+3*d,Z=x-1+4*d,K=b-1+4*d,$=_-1+4*d,J=E-1+4*d,Q=255&m,ee=255&g,te=255&y,ie=255&v,re=c[Q+c[ee+c[te+c[ie]]]]%32,ne=c[Q+S+c[ee+I+c[te+M+c[ie+A]]]]%32,se=c[Q+D+c[ee+O+c[te+R+c[ie+C]]]]%32,ae=c[Q+N+c[ee+P+c[te+L+c[ie+F]]]]%32,oe=c[Q+1+c[ee+1+c[te+1+c[ie+1]]]]%32,le=.6-x*x-b*b-_*_-E*E;le<0?n=0:(le*=le,n=le*le*this.dot4(h[re],x,b,_,E));let he=.6-U*U-k*k-B*B-G*G;he<0?s=0:(he*=he,s=he*he*this.dot4(h[ne],U,k,B,G));let ue=.6-z*z-H*H-V*V-j*j;ue<0?a=0:(ue*=ue,a=ue*ue*this.dot4(h[se],z,H,V,j));let ce=.6-W*W-Y*Y-X*X-q*q;ce<0?o=0:(ce*=ce,o=ce*ce*this.dot4(h[ae],W,Y,X,q));let pe=.6-Z*Z-K*K-$*$-J*J;return pe<0?l=0:(pe*=pe,l=pe*pe*this.dot4(h[oe],Z,K,$,J)),27*(n+s+a+o+l)}},tS={defines:{PERSPECTIVE_CAMERA:1,KERNEL_SIZE:32},uniforms:{tDiffuse:{value:null},tNormal:{value:null},tDepth:{value:null},tNoise:{value:null},kernel:{value:null},cameraNear:{value:null},cameraFar:{value:null},resolution:{value:new le},cameraProjectionMatrix:{value:new Be},cameraInverseProjectionMatrix:{value:new Be},kernelRadius:{value:8},minDistance:{value:.005},maxDistance:{value:.05}},vertexShader:"\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}",fragmentShader:"\n\n\t\tuniform sampler2D tDiffuse;\n\t\tuniform sampler2D tNormal;\n\t\tuniform sampler2D tDepth;\n\t\tuniform sampler2D tNoise;\n\n\t\tuniform vec3 kernel[ KERNEL_SIZE ];\n\n\t\tuniform vec2 resolution;\n\n\t\tuniform float cameraNear;\n\t\tuniform float cameraFar;\n\t\tuniform mat4 cameraProjectionMatrix;\n\t\tuniform mat4 cameraInverseProjectionMatrix;\n\n\t\tuniform float kernelRadius;\n\t\tuniform float minDistance; // avoid artifacts caused by neighbour fragments with minimal depth difference\n\t\tuniform float maxDistance; // avoid the influence of fragments which are too far away\n\n\t\tvarying vec2 vUv;\n\n\t\t#include \n\n\t\tfloat getDepth( const in vec2 screenPosition ) {\n\n\t\t\treturn texture2D( tDepth, screenPosition ).x;\n\n\t\t}\n\n\t\tfloat getLinearDepth( const in vec2 screenPosition ) {\n\n\t\t\t#if PERSPECTIVE_CAMERA == 1\n\n\t\t\t\tfloat fragCoordZ = texture2D( tDepth, screenPosition ).x;\n\t\t\t\tfloat viewZ = perspectiveDepthToViewZ( fragCoordZ, cameraNear, cameraFar );\n\t\t\t\treturn viewZToOrthographicDepth( viewZ, cameraNear, cameraFar );\n\n\t\t\t#else\n\n\t\t\t\treturn texture2D( tDepth, screenPosition ).x;\n\n\t\t\t#endif\n\n\t\t}\n\n\t\tfloat getViewZ( const in float depth ) {\n\n\t\t\t#if PERSPECTIVE_CAMERA == 1\n\n\t\t\t\treturn perspectiveDepthToViewZ( depth, cameraNear, cameraFar );\n\n\t\t\t#else\n\n\t\t\t\treturn orthographicDepthToViewZ( depth, cameraNear, cameraFar );\n\n\t\t\t#endif\n\n\t\t}\n\n\t\tvec3 getViewPosition( const in vec2 screenPosition, const in float depth, const in float viewZ ) {\n\n\t\t\tfloat clipW = cameraProjectionMatrix[2][3] * viewZ + cameraProjectionMatrix[3][3];\n\n\t\t\tvec4 clipPosition = vec4( ( vec3( screenPosition, depth ) - 0.5 ) * 2.0, 1.0 );\n\n\t\t\tclipPosition *= clipW; // unprojection.\n\n\t\t\treturn ( cameraInverseProjectionMatrix * clipPosition ).xyz;\n\n\t\t}\n\n\t\tvec3 getViewNormal( const in vec2 screenPosition ) {\n\n\t\t\treturn unpackRGBToNormal( texture2D( tNormal, screenPosition ).xyz );\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tfloat depth = getDepth( vUv );\n\t\t\tfloat viewZ = getViewZ( depth );\n\n\t\t\tvec3 viewPosition = getViewPosition( vUv, depth, viewZ );\n\t\t\tvec3 viewNormal = getViewNormal( vUv );\n\n\t\t\tvec2 noiseScale = vec2( resolution.x / 4.0, resolution.y / 4.0 );\n\t\t\tvec3 random = vec3( texture2D( tNoise, vUv * noiseScale ).r );\n\n\t\t\t// compute matrix used to reorient a kernel vector\n\n\t\t\tvec3 tangent = normalize( random - viewNormal * dot( random, viewNormal ) );\n\t\t\tvec3 bitangent = cross( viewNormal, tangent );\n\t\t\tmat3 kernelMatrix = mat3( tangent, bitangent, viewNormal );\n\n\t\t float occlusion = 0.0;\n\n\t\t for ( int i = 0; i < KERNEL_SIZE; i ++ ) {\n\n\t\t\t\tvec3 sampleVector = kernelMatrix * kernel[ i ]; // reorient sample vector in view space\n\t\t\t\tvec3 samplePoint = viewPosition + ( sampleVector * kernelRadius ); // calculate sample point\n\n\t\t\t\tvec4 samplePointNDC = cameraProjectionMatrix * vec4( samplePoint, 1.0 ); // project point and calculate NDC\n\t\t\t\tsamplePointNDC /= samplePointNDC.w;\n\n\t\t\t\tvec2 samplePointUv = samplePointNDC.xy * 0.5 + 0.5; // compute uv coordinates\n\n\t\t\t\tfloat realDepth = getLinearDepth( samplePointUv ); // get linear depth from depth texture\n\t\t\t\tfloat sampleDepth = viewZToOrthographicDepth( samplePoint.z, cameraNear, cameraFar ); // compute linear depth of the sample view Z value\n\t\t\t\tfloat delta = sampleDepth - realDepth;\n\n\t\t\t\tif ( delta > minDistance && delta < maxDistance ) { // if fragment is before sample point, increase occlusion\n\n\t\t\t\t\tocclusion += 1.0;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tocclusion = clamp( occlusion / float( KERNEL_SIZE ), 0.0, 1.0 );\n\n\t\t\tgl_FragColor = vec4( vec3( 1.0 - occlusion ), 1.0 );\n\n\t\t}"},rS={defines:{PERSPECTIVE_CAMERA:1},uniforms:{tDepth:{value:null},cameraNear:{value:null},cameraFar:{value:null}},vertexShader:"varying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}",fragmentShader:"uniform sampler2D tDepth;\n\n\t\tuniform float cameraNear;\n\t\tuniform float cameraFar;\n\n\t\tvarying vec2 vUv;\n\n\t\t#include \n\n\t\tfloat getLinearDepth( const in vec2 screenPosition ) {\n\n\t\t\t#if PERSPECTIVE_CAMERA == 1\n\n\t\t\t\tfloat fragCoordZ = texture2D( tDepth, screenPosition ).x;\n\t\t\t\tfloat viewZ = perspectiveDepthToViewZ( fragCoordZ, cameraNear, cameraFar );\n\t\t\t\treturn viewZToOrthographicDepth( viewZ, cameraNear, cameraFar );\n\n\t\t\t#else\n\n\t\t\t\treturn texture2D( tDepth, screenPosition ).x;\n\n\t\t\t#endif\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tfloat depth = getLinearDepth( vUv );\n\t\t\tgl_FragColor = vec4( vec3( 1.0 - depth ), 1.0 );\n\n\t\t}"},iS={uniforms:{tDiffuse:{value:null},resolution:{value:new le}},vertexShader:"varying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}",fragmentShader:"uniform sampler2D tDiffuse;\n\n\t\tuniform vec2 resolution;\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvec2 texelSize = ( 1.0 / resolution );\n\t\t\tfloat result = 0.0;\n\n\t\t\tfor ( int i = - 2; i <= 2; i ++ ) {\n\n\t\t\t\tfor ( int j = - 2; j <= 2; j ++ ) {\n\n\t\t\t\t\tvec2 offset = ( vec2( float( i ), float( j ) ) ) * texelSize;\n\t\t\t\t\tresult += texture2D( tDiffuse, vUv + offset ).r;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tgl_FragColor = vec4( vec3( result / ( 5.0 * 5.0 ) ), 1.0 );\n\n\t\t}"},sc=class extends ls{constructor(e,t,i,r){super(),this.width=void 0!==i?i:512,this.height=void 0!==r?r:512,this.clear=!0,this.camera=t,this.scene=e,this.kernelRadius=8,this.kernelSize=32,this.kernel=[],this.noiseTexture=null,this.output=0,this.minDistance=.005,this.maxDistance=.1,this._visibilityCache=new Map,this.generateSampleKernel(),this.generateRandomKernelRotations();let n=new of;n.format=Ep,n.type=vp,this.beautyRenderTarget=new zr(this.width,this.height),this.normalRenderTarget=new zr(this.width,this.height,{minFilter:Ci,magFilter:Ci,depthTexture:n}),this.ssaoRenderTarget=new zr(this.width,this.height),this.blurRenderTarget=this.ssaoRenderTarget.clone(),this.ssaoMaterial=new Yt({defines:Object.assign({},tS.defines),uniforms:hn.clone(tS.uniforms),vertexShader:tS.vertexShader,fragmentShader:tS.fragmentShader,blending:Ui}),this.ssaoMaterial.uniforms.tDiffuse.value=this.beautyRenderTarget.texture,this.ssaoMaterial.uniforms.tNormal.value=this.normalRenderTarget.texture,this.ssaoMaterial.uniforms.tDepth.value=this.normalRenderTarget.depthTexture,this.ssaoMaterial.uniforms.tNoise.value=this.noiseTexture,this.ssaoMaterial.uniforms.kernel.value=this.kernel,this.ssaoMaterial.uniforms.cameraNear.value=this.camera.near,this.ssaoMaterial.uniforms.cameraFar.value=this.camera.far,this.ssaoMaterial.uniforms.resolution.value.set(this.width,this.height),this.ssaoMaterial.uniforms.cameraProjectionMatrix.value.copy(this.camera.projectionMatrix),this.ssaoMaterial.uniforms.cameraInverseProjectionMatrix.value.copy(this.camera.projectionMatrixInverse),this.normalMaterial=new uf,this.normalMaterial.blending=Ui,this.blurMaterial=new Yt({defines:Object.assign({},iS.defines),uniforms:hn.clone(iS.uniforms),vertexShader:iS.vertexShader,fragmentShader:iS.fragmentShader}),this.blurMaterial.uniforms.tDiffuse.value=this.ssaoRenderTarget.texture,this.blurMaterial.uniforms.resolution.value.set(this.width,this.height),this.depthRenderMaterial=new Yt({defines:Object.assign({},rS.defines),uniforms:hn.clone(rS.uniforms),vertexShader:rS.vertexShader,fragmentShader:rS.fragmentShader,blending:Ui}),this.depthRenderMaterial.uniforms.tDepth.value=this.normalRenderTarget.depthTexture,this.depthRenderMaterial.uniforms.cameraNear.value=this.camera.near,this.depthRenderMaterial.uniforms.cameraFar.value=this.camera.far,this.copyMaterial=new Yt({uniforms:hn.clone(pa.uniforms),vertexShader:pa.vertexShader,fragmentShader:pa.fragmentShader,transparent:!0,depthTest:!1,depthWrite:!1,blendSrc:zy,blendDst:df,blendEquation:Ma,blendSrcAlpha:Vy,blendDstAlpha:df,blendEquationAlpha:Ma}),this.fsQuad=new ha(null),this.originalClearColor=new je}dispose(){this.beautyRenderTarget.dispose(),this.normalRenderTarget.dispose(),this.ssaoRenderTarget.dispose(),this.blurRenderTarget.dispose(),this.normalMaterial.dispose(),this.blurMaterial.dispose(),this.copyMaterial.dispose(),this.depthRenderMaterial.dispose(),this.fsQuad.dispose()}render(e,t){switch(!1===e.capabilities.isWebGL2&&(this.noiseTexture.format=oC),e.setRenderTarget(this.beautyRenderTarget),e.clear(),e.render(this.scene,this.camera),this.overrideVisibility(),this.renderOverride(e,this.normalMaterial,this.normalRenderTarget,7829503,1),this.restoreVisibility(),this.ssaoMaterial.uniforms.kernelRadius.value=this.kernelRadius,this.ssaoMaterial.uniforms.minDistance.value=this.minDistance,this.ssaoMaterial.uniforms.maxDistance.value=this.maxDistance,this.renderPass(e,this.ssaoMaterial,this.ssaoRenderTarget),this.renderPass(e,this.blurMaterial,this.blurRenderTarget),this.output){case sc.OUTPUT.SSAO:this.copyMaterial.uniforms.tDiffuse.value=this.ssaoRenderTarget.texture,this.copyMaterial.blending=Ui,this.renderPass(e,this.copyMaterial,this.renderToScreen?null:t);break;case sc.OUTPUT.Blur:this.copyMaterial.uniforms.tDiffuse.value=this.blurRenderTarget.texture,this.copyMaterial.blending=Ui,this.renderPass(e,this.copyMaterial,this.renderToScreen?null:t);break;case sc.OUTPUT.Beauty:this.copyMaterial.uniforms.tDiffuse.value=this.beautyRenderTarget.texture,this.copyMaterial.blending=Ui,this.renderPass(e,this.copyMaterial,this.renderToScreen?null:t);break;case sc.OUTPUT.Depth:this.renderPass(e,this.depthRenderMaterial,this.renderToScreen?null:t);break;case sc.OUTPUT.Normal:this.copyMaterial.uniforms.tDiffuse.value=this.normalRenderTarget.texture,this.copyMaterial.blending=Ui,this.renderPass(e,this.copyMaterial,this.renderToScreen?null:t);break;case sc.OUTPUT.Default:this.copyMaterial.uniforms.tDiffuse.value=this.beautyRenderTarget.texture,this.copyMaterial.blending=Ui,this.renderPass(e,this.copyMaterial,this.renderToScreen?null:t),this.copyMaterial.uniforms.tDiffuse.value=this.blurRenderTarget.texture,this.copyMaterial.blending=Hp,this.renderPass(e,this.copyMaterial,this.renderToScreen?null:t);break;default:console.warn("THREE.SSAOPass: Unknown output type.")}}renderPass(e,t,i,r,n){e.getClearColor(this.originalClearColor);let s=e.getClearAlpha(),a=e.autoClear;e.setRenderTarget(i),e.autoClear=!1,null!=r&&(e.setClearColor(r),e.setClearAlpha(n||0),e.clear()),this.fsQuad.material=t,this.fsQuad.render(e),e.autoClear=a,e.setClearColor(this.originalClearColor),e.setClearAlpha(s)}renderOverride(e,t,i,r,n){e.getClearColor(this.originalClearColor);let s=e.getClearAlpha(),a=e.autoClear;e.setRenderTarget(i),e.autoClear=!1,r=t.clearColor||r,n=t.clearAlpha||n,null!=r&&(e.setClearColor(r),e.setClearAlpha(n||0),e.clear()),this.scene.overrideMaterial=t,e.render(this.scene,this.camera),this.scene.overrideMaterial=null,e.autoClear=a,e.setClearColor(this.originalClearColor),e.setClearAlpha(s)}setSize(e,t){this.width=e,this.height=t,this.beautyRenderTarget.setSize(e,t),this.ssaoRenderTarget.setSize(e,t),this.normalRenderTarget.setSize(e,t),this.blurRenderTarget.setSize(e,t),this.ssaoMaterial.uniforms.resolution.value.set(e,t),this.ssaoMaterial.uniforms.cameraProjectionMatrix.value.copy(this.camera.projectionMatrix),this.ssaoMaterial.uniforms.cameraInverseProjectionMatrix.value.copy(this.camera.projectionMatrixInverse),this.blurMaterial.uniforms.resolution.value.set(e,t)}generateSampleKernel(){let e=this.kernelSize,t=this.kernel;for(let i=0;i\n\t\t\t\tvarying vec2 vUv;\n\t\t\t\tuniform sampler2D colorTexture;\n\t\t\t\tuniform vec2 texSize;\n\t\t\t\tuniform vec2 direction;\n\n\t\t\t\tfloat gaussianPdf(in float x, in float sigma) {\n\t\t\t\t\treturn 0.39894 * exp( -0.5 * x * x/( sigma * sigma))/sigma;\n\t\t\t\t}\n\t\t\t\tvoid main() {\n\t\t\t\t\tvec2 invSize = 1.0 / texSize;\n\t\t\t\t\tfloat fSigma = float(SIGMA);\n\t\t\t\t\tfloat weightSum = gaussianPdf(0.0, fSigma);\n\t\t\t\t\tvec3 diffuseSum = texture2D( colorTexture, vUv).rgb * weightSum;\n\t\t\t\t\tfor( int i = 1; i < KERNEL_RADIUS; i ++ ) {\n\t\t\t\t\t\tfloat x = float(i);\n\t\t\t\t\t\tfloat w = gaussianPdf(x, fSigma);\n\t\t\t\t\t\tvec2 uvOffset = direction * invSize * x;\n\t\t\t\t\t\tvec3 sample1 = texture2D( colorTexture, vUv + uvOffset).rgb;\n\t\t\t\t\t\tvec3 sample2 = texture2D( colorTexture, vUv - uvOffset).rgb;\n\t\t\t\t\t\tdiffuseSum += (sample1 + sample2) * w;\n\t\t\t\t\t\tweightSum += 2.0 * w;\n\t\t\t\t\t}\n\t\t\t\t\tgl_FragColor = vec4(diffuseSum/weightSum, 1.0);\n\t\t\t\t}"})}getCompositeMaterial(e){return new Yt({defines:{NUM_MIPS:e},uniforms:{blurTexture1:{value:null},blurTexture2:{value:null},blurTexture3:{value:null},blurTexture4:{value:null},blurTexture5:{value:null},bloomStrength:{value:1},bloomFactors:{value:null},bloomTintColors:{value:null},bloomRadius:{value:0}},vertexShader:"varying vec2 vUv;\n\t\t\t\tvoid main() {\n\t\t\t\t\tvUv = uv;\n\t\t\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\t\t\t\t}",fragmentShader:"varying vec2 vUv;\n\t\t\t\tuniform sampler2D blurTexture1;\n\t\t\t\tuniform sampler2D blurTexture2;\n\t\t\t\tuniform sampler2D blurTexture3;\n\t\t\t\tuniform sampler2D blurTexture4;\n\t\t\t\tuniform sampler2D blurTexture5;\n\t\t\t\tuniform float bloomStrength;\n\t\t\t\tuniform float bloomRadius;\n\t\t\t\tuniform float bloomFactors[NUM_MIPS];\n\t\t\t\tuniform vec3 bloomTintColors[NUM_MIPS];\n\n\t\t\t\tfloat lerpBloomFactor(const in float factor) {\n\t\t\t\t\tfloat mirrorFactor = 1.2 - factor;\n\t\t\t\t\treturn mix(factor, mirrorFactor, bloomRadius);\n\t\t\t\t}\n\n\t\t\t\tvoid main() {\n\t\t\t\t\tgl_FragColor = bloomStrength * ( lerpBloomFactor(bloomFactors[0]) * vec4(bloomTintColors[0], 1.0) * texture2D(blurTexture1, vUv) +\n\t\t\t\t\t\tlerpBloomFactor(bloomFactors[1]) * vec4(bloomTintColors[1], 1.0) * texture2D(blurTexture2, vUv) +\n\t\t\t\t\t\tlerpBloomFactor(bloomFactors[2]) * vec4(bloomTintColors[2], 1.0) * texture2D(blurTexture3, vUv) +\n\t\t\t\t\t\tlerpBloomFactor(bloomFactors[3]) * vec4(bloomTintColors[3], 1.0) * texture2D(blurTexture4, vUv) +\n\t\t\t\t\t\tlerpBloomFactor(bloomFactors[4]) * vec4(bloomTintColors[4], 1.0) * texture2D(blurTexture5, vUv) );\n\t\t\t\t}"})}};fd.BlurDirectionX=new le(1,0),fd.BlurDirectionY=new le(0,1);var LCe={uniforms:{tDiffuse:{value:null},resolution:{value:new le(1/1024,1/512)}},vertexShader:"\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}",fragmentShader:"\n\tprecision highp float;\n\n\tuniform sampler2D tDiffuse;\n\n\tuniform vec2 resolution;\n\n\tvarying vec2 vUv;\n\n\t// FXAA 3.11 implementation by NVIDIA, ported to WebGL by Agost Biro (biro@archilogic.com)\n\n\t//----------------------------------------------------------------------------------\n\t// File: es3-keplerFXAAassetsshaders/FXAA_DefaultES.frag\n\t// SDK Version: v3.00\n\t// Email: gameworks@nvidia.com\n\t// Site: http://developer.nvidia.com/\n\t//\n\t// Copyright (c) 2014-2015, NVIDIA CORPORATION. All rights reserved.\n\t//\n\t// Redistribution and use in source and binary forms, with or without\n\t// modification, are permitted provided that the following conditions\n\t// are met:\n\t// * Redistributions of source code must retain the above copyright\n\t// notice, this list of conditions and the following disclaimer.\n\t// * Redistributions in binary form must reproduce the above copyright\n\t// notice, this list of conditions and the following disclaimer in the\n\t// documentation and/or other materials provided with the distribution.\n\t// * Neither the name of NVIDIA CORPORATION nor the names of its\n\t// contributors may be used to endorse or promote products derived\n\t// from this software without specific prior written permission.\n\t//\n\t// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ''AS IS'' AND ANY\n\t// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n\t// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\n\t// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR\n\t// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n\t// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n\t// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n\t// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY\n\t// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n\t// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n\t// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\t//\n\t//----------------------------------------------------------------------------------\n\n\t#ifndef FXAA_DISCARD\n\t\t\t//\n\t\t\t// Only valid for PC OpenGL currently.\n\t\t\t// Probably will not work when FXAA_GREEN_AS_LUMA = 1.\n\t\t\t//\n\t\t\t// 1 = Use discard on pixels which don't need AA.\n\t\t\t// For APIs which enable concurrent TEX+ROP from same surface.\n\t\t\t// 0 = Return unchanged color on pixels which don't need AA.\n\t\t\t//\n\t\t\t#define FXAA_DISCARD 0\n\t#endif\n\n\t/*--------------------------------------------------------------------------*/\n\t#define FxaaTexTop(t, p) texture2D(t, p, -100.0)\n\t#define FxaaTexOff(t, p, o, r) texture2D(t, p + (o * r), -100.0)\n\t/*--------------------------------------------------------------------------*/\n\n\t#define NUM_SAMPLES 5\n\n\t// assumes colors have premultipliedAlpha, so that the calculated color contrast is scaled by alpha\n\tfloat contrast( vec4 a, vec4 b ) {\n\t\t\tvec4 diff = abs( a - b );\n\t\t\treturn max( max( max( diff.r, diff.g ), diff.b ), diff.a );\n\t}\n\n\t/*============================================================================\n\n\t\t\t\t\t\t\t\t\tFXAA3 QUALITY - PC\n\n\t============================================================================*/\n\n\t/*--------------------------------------------------------------------------*/\n\tvec4 FxaaPixelShader(\n\t\t\tvec2 posM,\n\t\t\tsampler2D tex,\n\t\t\tvec2 fxaaQualityRcpFrame,\n\t\t\tfloat fxaaQualityEdgeThreshold,\n\t\t\tfloat fxaaQualityinvEdgeThreshold\n\t) {\n\t\t\tvec4 rgbaM = FxaaTexTop(tex, posM);\n\t\t\tvec4 rgbaS = FxaaTexOff(tex, posM, vec2( 0.0, 1.0), fxaaQualityRcpFrame.xy);\n\t\t\tvec4 rgbaE = FxaaTexOff(tex, posM, vec2( 1.0, 0.0), fxaaQualityRcpFrame.xy);\n\t\t\tvec4 rgbaN = FxaaTexOff(tex, posM, vec2( 0.0,-1.0), fxaaQualityRcpFrame.xy);\n\t\t\tvec4 rgbaW = FxaaTexOff(tex, posM, vec2(-1.0, 0.0), fxaaQualityRcpFrame.xy);\n\t\t\t// . S .\n\t\t\t// W M E\n\t\t\t// . N .\n\n\t\t\tbool earlyExit = max( max( max(\n\t\t\t\t\tcontrast( rgbaM, rgbaN ),\n\t\t\t\t\tcontrast( rgbaM, rgbaS ) ),\n\t\t\t\t\tcontrast( rgbaM, rgbaE ) ),\n\t\t\t\t\tcontrast( rgbaM, rgbaW ) )\n\t\t\t\t\t< fxaaQualityEdgeThreshold;\n\t\t\t// . 0 .\n\t\t\t// 0 0 0\n\t\t\t// . 0 .\n\n\t\t\t#if (FXAA_DISCARD == 1)\n\t\t\t\t\tif(earlyExit) FxaaDiscard;\n\t\t\t#else\n\t\t\t\t\tif(earlyExit) return rgbaM;\n\t\t\t#endif\n\n\t\t\tfloat contrastN = contrast( rgbaM, rgbaN );\n\t\t\tfloat contrastS = contrast( rgbaM, rgbaS );\n\t\t\tfloat contrastE = contrast( rgbaM, rgbaE );\n\t\t\tfloat contrastW = contrast( rgbaM, rgbaW );\n\n\t\t\tfloat relativeVContrast = ( contrastN + contrastS ) - ( contrastE + contrastW );\n\t\t\trelativeVContrast *= fxaaQualityinvEdgeThreshold;\n\n\t\t\tbool horzSpan = relativeVContrast > 0.;\n\t\t\t// . 1 .\n\t\t\t// 0 0 0\n\t\t\t// . 1 .\n\n\t\t\t// 45 deg edge detection and corners of objects, aka V/H contrast is too similar\n\t\t\tif( abs( relativeVContrast ) < .3 ) {\n\t\t\t\t\t// locate the edge\n\t\t\t\t\tvec2 dirToEdge;\n\t\t\t\t\tdirToEdge.x = contrastE > contrastW ? 1. : -1.;\n\t\t\t\t\tdirToEdge.y = contrastS > contrastN ? 1. : -1.;\n\t\t\t\t\t// . 2 . . 1 .\n\t\t\t\t\t// 1 0 2 ~= 0 0 1\n\t\t\t\t\t// . 1 . . 0 .\n\n\t\t\t\t\t// tap 2 pixels and see which ones are \"outside\" the edge, to\n\t\t\t\t\t// determine if the edge is vertical or horizontal\n\n\t\t\t\t\tvec4 rgbaAlongH = FxaaTexOff(tex, posM, vec2( dirToEdge.x, -dirToEdge.y ), fxaaQualityRcpFrame.xy);\n\t\t\t\t\tfloat matchAlongH = contrast( rgbaM, rgbaAlongH );\n\t\t\t\t\t// . 1 .\n\t\t\t\t\t// 0 0 1\n\t\t\t\t\t// . 0 H\n\n\t\t\t\t\tvec4 rgbaAlongV = FxaaTexOff(tex, posM, vec2( -dirToEdge.x, dirToEdge.y ), fxaaQualityRcpFrame.xy);\n\t\t\t\t\tfloat matchAlongV = contrast( rgbaM, rgbaAlongV );\n\t\t\t\t\t// V 1 .\n\t\t\t\t\t// 0 0 1\n\t\t\t\t\t// . 0 .\n\n\t\t\t\t\trelativeVContrast = matchAlongV - matchAlongH;\n\t\t\t\t\trelativeVContrast *= fxaaQualityinvEdgeThreshold;\n\n\t\t\t\t\tif( abs( relativeVContrast ) < .3 ) { // 45 deg edge\n\t\t\t\t\t\t\t// 1 1 .\n\t\t\t\t\t\t\t// 0 0 1\n\t\t\t\t\t\t\t// . 0 1\n\n\t\t\t\t\t\t\t// do a simple blur\n\t\t\t\t\t\t\treturn mix(\n\t\t\t\t\t\t\t\t\trgbaM,\n\t\t\t\t\t\t\t\t\t(rgbaN + rgbaS + rgbaE + rgbaW) * .25,\n\t\t\t\t\t\t\t\t\t.4\n\t\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\thorzSpan = relativeVContrast > 0.;\n\t\t\t}\n\n\t\t\tif(!horzSpan) rgbaN = rgbaW;\n\t\t\tif(!horzSpan) rgbaS = rgbaE;\n\t\t\t// . 0 . 1\n\t\t\t// 1 0 1 -> 0\n\t\t\t// . 0 . 1\n\n\t\t\tbool pairN = contrast( rgbaM, rgbaN ) > contrast( rgbaM, rgbaS );\n\t\t\tif(!pairN) rgbaN = rgbaS;\n\n\t\t\tvec2 offNP;\n\t\t\toffNP.x = (!horzSpan) ? 0.0 : fxaaQualityRcpFrame.x;\n\t\t\toffNP.y = ( horzSpan) ? 0.0 : fxaaQualityRcpFrame.y;\n\n\t\t\tbool doneN = false;\n\t\t\tbool doneP = false;\n\n\t\t\tfloat nDist = 0.;\n\t\t\tfloat pDist = 0.;\n\n\t\t\tvec2 posN = posM;\n\t\t\tvec2 posP = posM;\n\n\t\t\tint iterationsUsed = 0;\n\t\t\tint iterationsUsedN = 0;\n\t\t\tint iterationsUsedP = 0;\n\t\t\tfor( int i = 0; i < NUM_SAMPLES; i++ ) {\n\t\t\t\t\titerationsUsed = i;\n\n\t\t\t\t\tfloat increment = float(i + 1);\n\n\t\t\t\t\tif(!doneN) {\n\t\t\t\t\t\t\tnDist += increment;\n\t\t\t\t\t\t\tposN = posM + offNP * nDist;\n\t\t\t\t\t\t\tvec4 rgbaEndN = FxaaTexTop(tex, posN.xy);\n\t\t\t\t\t\t\tdoneN = contrast( rgbaEndN, rgbaM ) > contrast( rgbaEndN, rgbaN );\n\t\t\t\t\t\t\titerationsUsedN = i;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(!doneP) {\n\t\t\t\t\t\t\tpDist += increment;\n\t\t\t\t\t\t\tposP = posM - offNP * pDist;\n\t\t\t\t\t\t\tvec4 rgbaEndP = FxaaTexTop(tex, posP.xy);\n\t\t\t\t\t\t\tdoneP = contrast( rgbaEndP, rgbaM ) > contrast( rgbaEndP, rgbaN );\n\t\t\t\t\t\t\titerationsUsedP = i;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(doneN || doneP) break;\n\t\t\t}\n\n\n\t\t\tif ( !doneP && !doneN ) return rgbaM; // failed to find end of edge\n\n\t\t\tfloat dist = min(\n\t\t\t\t\tdoneN ? float( iterationsUsedN ) / float( NUM_SAMPLES - 1 ) : 1.,\n\t\t\t\t\tdoneP ? float( iterationsUsedP ) / float( NUM_SAMPLES - 1 ) : 1.\n\t\t\t);\n\n\t\t\t// hacky way of reduces blurriness of mostly diagonal edges\n\t\t\t// but reduces AA quality\n\t\t\tdist = pow(dist, .5);\n\n\t\t\tdist = 1. - dist;\n\n\t\t\treturn mix(\n\t\t\t\t\trgbaM,\n\t\t\t\t\trgbaN,\n\t\t\t\t\tdist * .5\n\t\t\t);\n\t}\n\n\tvoid main() {\n\t\t\tconst float edgeDetectionQuality = .2;\n\t\t\tconst float invEdgeDetectionQuality = 1. / edgeDetectionQuality;\n\n\t\t\tgl_FragColor = FxaaPixelShader(\n\t\t\t\t\tvUv,\n\t\t\t\t\ttDiffuse,\n\t\t\t\t\tresolution,\n\t\t\t\t\tedgeDetectionQuality, // [0,1] contrast needed, otherwise early discard\n\t\t\t\t\tinvEdgeDetectionQuality\n\t\t\t);\n\n\t}\n\t"},eV=kn($l(),1),NFt="bottomBar",LFt={stats:{icon:{default:"icon-showsectionplane"},mutexIds:["statistics","cameraInfo","tips"],onActive:e=>{e.viewer.showStats()},onDeactive:e=>{e.viewer.hideStats()}},statistics:{icon:{default:"icon-info",active:"icon-info-filled"},mutexIds:["stats","cameraInfo","tips"],onActive:e=>{let t=document.createElement("span");if(!e.viewer.scene)return void(t.textContent="Failed!");t.textContent="Comupting...";let i={components:{},points:0,faces:0,materials:{},lights:{}},r=["SKYBOX","GROUND_GRID","GRASS_GROUND","BIM_VIEWER_BOX_HELPER"];e.viewer.scene.traverse((e=>{(e instanceof rt||e instanceof Ir||e instanceof nn)&&!r.includes(e.name)?((e,t)=>{if(t.components[e.type]?t.components[e.type]++:t.components[e.type]=1,e.geometry){let i=e.geometry;if(e instanceof rt)if(i.index&&i.index.count){let r=Math.round(i.index.count/3);e instanceof rn&&(r*=e.count),t.faces+=r}else if(i.groups.length>0)for(let e=0;e{t.materials[e]?t.materials[e]++:t.materials[e]=1},r=e.material;r instanceof jr?i(r.id):Array.isArray(r)&&r.forEach((e=>i(e.id)))})(e,i):e instanceof Ol&&(i.lights[e.type]?i.lights[e.type]++:i.lights[e.type]=1)}));let n=(e,i)=>{t.innerHTML+=`

${e}:${i}

`};t.innerHTML="";let s=` (${(e=>{var t;let i=null==(t=e.renderer)?void 0:t.domElement;return null==i?void 0:i.dataset.engine})(e.viewer)})`;if(n("Version",`${$T}${s}`),n("Components",JSON.stringify(i.components)),n("Points",i.points),n("Faces",i.faces),n("Materials",Object.keys(i.materials).length),n("Lights",JSON.stringify(i.lights)),"DxfViewer"===e.viewer.name){n("Entities",e.viewer.getEntitiesCount())}e.tooltip.setContent(t),e.tooltip.show()},onDeactive:e=>{e.tooltip.hide()},onUpdate:e=>{let t=e.viewer.renderer,i=document.createElement("span"),r=(e,t)=>{i.innerHTML+=`

${e}:${t}

`};i.innerHTML="

-- Renderer Info --

";let n=null==t?void 0:t.info;r("Drawcalls",JSON.stringify(null==n?void 0:n.render.calls)),r("Points",JSON.stringify(null==n?void 0:n.render.points)),r("Lines",JSON.stringify(null==n?void 0:n.render.lines)),r("Triangles",JSON.stringify(null==n?void 0:n.render.triangles)),r("Geometries",JSON.stringify(null==n?void 0:n.memory.geometries)),r("Textures",JSON.stringify(null==n?void 0:n.memory.textures)),e.tooltip.updateChildContent(i)}},cameraInfo:{icon:{default:"icon-view",active:"icon-view-filled"},mutexIds:["stats","statistics","tips"],onActive:e=>{let t=()=>{if(!e.viewer||!e.viewer.camera||!e.viewer.controls)return;let i=e.viewer.camera,r=e.viewer.controls,n=e=>_t.numberToString(e),s=e=>_t.vectorToString(e),a=i.position,o=r instanceof Jl?r.getTarget(new A):r.target;if(a){let t=document.createElement("span");t.innerHTML=`\n

Camera position:${s(a)}

\n

Camera target:${s(o)}

`,i instanceof ki&&(t.innerHTML+=`\n

top: ${n(i.top)}, bottom: ${n(i.bottom)}, left: ${n(i.left)}, right: ${n(i.right)}

\n

zoom: ${n(i.zoom)}

`),e.tooltip.setContent(t)}e.active||window.removeEventListener("mouseup",t)};if(t(),window.addEventListener("mouseup",t),"BimViewer"===e.viewer.name){let i=e.viewer.controls;null==i||i.addEventListener("update",t)}else e.viewer.controls.addEventListener("change",t);e.tooltip.show()},onDeactive:e=>{e.tooltip.hide()}},tips:{icon:{default:"icon-more"},mutexIds:["stats","cameraInfo","cameraInfo"],onActive:e=>{let t=document.createElement("span");"BimViewer"===e.viewer.name?t.innerHTML="\n

W: Move forward

\n

A: Move backward

\n

S: Move left

\n

D: Move right

\n

Q: Rise up

\n

E: Lower down

\n

↑: Rotate up

\n

↓: Rotate down

\n

←: Rotate to left

\n

→: Rotate to right

\n ":"DxfViewer"===e.viewer.name?t.innerHTML="\n

↑: Move up

\n

↓: Move down

\n

←: Move to left

\n

→: Move to right

\n ":"BaseViewer"===e.viewer.name?t.innerHTML="\n

↑: Rotate up

\n

↓: Rotate down

\n

←: Rotate to left

\n

→: Rotate to right

\n ":t.innerHTML="\n

Nothing to show

\n ",e.tooltip.setContent(t),e.tooltip.show()},onDeactive:e=>{e.tooltip.hide()}}},am=class{constructor(e){this.viewer=e,this.itemList=new Map,this.init()}update(){this.itemList.forEach((e=>{e.update()}))}init(){var e;let t=document.createElement("div");t.id=NFt,t.classList.add("bottom-bar"),(0,eV.forEach)(LFt,((e,i)=>{let r=this.createItem(this.viewer,i,e);t.appendChild(r.element)})),this.element=t,null==(e=this.viewer.widgetContainer)||e.appendChild(this.element)}createItem(e,t,i){let r=new QG(e,this,t,i);return this.itemList.set(t,r),r}},QG=class{constructor(e,t,i,r){this.viewer=e,this.bottomBar=t,this.menuId=i,this.cfg=r,this.eventBus=gE(),this.active=!1,this.itemconfig=r,this.element=this.createButton(this.menuId,r),this.tooltip=new gh(i+"-tooltip",null,{parentNode:e.widgetContainer}),this.eventBus.on("activeChange",(e=>{e?(this.element.classList.add("active"),(0,eV.forEach)(r.mutexIds,(e=>{var t;let i=null==(t=this.bottomBar)?void 0:t.itemList.get(e);i&&i.active&&i.setActive(!1)})),r.onActive&&r.onActive(this)):(this.element.classList.remove("active"),r.onDeactive&&r.onDeactive(this)),this.element instanceof HTMLElement&&UC(this.element.classList,r.icon,this.active)}))}createButton(e,t){let i=document.createElement("i");i.id=e;let{default:r="icon-new",iconFont:n=fo}=t.icon;return i.classList.add("icon"),i.classList.add(n),i.classList.add(r),i.onclick=()=>{this.active=!this.active,t.onClick&&t.onClick(this),this.eventBus.emit("activeChange",this.active)},i}setActive(e){this.active=e,this.eventBus.emit("activeChange",this.active)}update(){this.active&&this.itemconfig.onUpdate&&this.itemconfig.onUpdate(this)}},nS=kn($l(),1),FFt="gemini-context-menu",P3=class{constructor(e){this.itemList=[],this.id=e.id||FFt,this.container=e.container||document.body,this.context=e.context||{},this.element=this.createMenuUI(e.items||[]),this.handleClick=()=>{this.hide()},!1!==e.hideOnMouseDown&&document.addEventListener("click",this.handleClick),this.hide()}isEnable(e){return e.getEnabled?e.getEnabled(this.context):void 0===e.enabled||e.enabled}isShown(e){return e.getShown?e.getShown(this.context):void 0===e.shown||e.shown}getTitle(e){return e.title||e.getTitle&&e.getTitle(this.context)||""}createMenuUI(e){let t=document.createElement("div");t.id=this.id,t.classList.add("context-menu");let i=this.createMenuGroup(e);return t.append(...i),this.container.appendChild(t),t}createMenuGroup(e){return(0,nS.map)(e,(e=>{let t=document.createElement("ul");return(0,nS.forEach)(e,(e=>{let i=this.createMenuItem(e);t.append(i)})),t}))}createMenuItem(e){let t=document.createElement("li");return t.innerHTML=this.getTitle(e),t.onclick=()=>e.doAction&&e.doAction(this.context),this.isEnable(e)?t.classList.remove("disabled"):t.classList.add("disabled"),this.isShown(e)?t.removeAttribute("hidden"):t.setAttribute("hidden",""),this.itemList.push([e,t]),t}updateMenuItems(){(0,nS.forEach)(this.itemList,(([e,t])=>{this.isEnable(e)?t.classList.remove("disabled"):t.classList.add("disabled"),this.isShown(e)?t.removeAttribute("hidden"):t.setAttribute("hidden",""),t.innerHTML=this.getTitle(e)}))}showMenuElement(e,t){let i=this.element.offsetHeight,r=this.element.offsetWidth;t+i>window.innerHeight&&(t=window.innerHeight-i-5),e+r>window.innerWidth&&(e=window.innerWidth-r-5),this.element.style.left=e+"px",this.element.style.top=t+"px"}show(e,t){this.updateMenuItems(),this.element.removeAttribute("hidden"),this.showMenuElement(e,t)}hide(){this.element.setAttribute("hidden","")}destroy(){document.removeEventListener("click",this.handleClick),this.container.removeChild(this.element)}},xo=e=>({bimViewer:t})=>t.translate(`ContextMenu.${e}`),HCe=e=>{var t;let i=0;return null==(t=e.scene)||t.traverseVisible((e=>{e instanceof rt&&i++})),i>0},HFt=e=>{var t,i;let r=0;return null==(t=e.scene)||t.traverse((e=>{e instanceof rt&&r++})),null==(i=e.scene)||i.traverseVisible((e=>{e instanceof rt&&r--})),r>0},tV=e=>e.hasTransparentObject(),N3=e=>!1!==e.userData.selectable,FCe=(e,t,i,r)=>{let n=e.selectedObject;return!(!n||!t||n.id!==t.id)&&(null!=i&&n.isInstancedMesh?i===n.userData.instanceId:null==r||!Yi.isMergedMesh(n)||r===n.userData.batchId)},UFt={getTitle:xo("viewFitEntity"),getShown:({hit:e})=>e,doAction:({bimViewer:e,hit:t})=>{e.flyToObject(t)}},BFt={getTitle:xo("viewFitAll"),getEnabled:({bimViewer:e})=>HCe(e),doAction:({bimViewer:e})=>e.viewFitAll()},kFt={getTitle:xo("hideEntity"),getShown:({hit:e})=>e,doAction:({bimViewer:e,hit:t})=>{N3(t)&&(t.visible=!1,e.enableRender())}},GFt={getTitle:xo("hideOthers"),getShown:({hit:e})=>e,doAction:({bimViewer:e,hit:t})=>{var i;null==(i=e.scene)||i.traverse((e=>{e instanceof rt&&N3(e)&&(e.visible=!1)})),t.visible=!0,e.enableRender()}},VFt={getTitle:xo("hideAll"),getEnabled:({bimViewer:e})=>HCe(e),doAction:({bimViewer:e})=>{var t;null==(t=e.scene)||t.traverse((e=>{e instanceof rt&&N3(e)&&(e.visible=!1)})),e.enableRender()}},zFt={getTitle:xo("showAll"),getEnabled:({bimViewer:e})=>HFt(e),doAction:({bimViewer:e})=>{var t;null==(t=e.scene)||t.traverse((e=>{e instanceof rt&&N3(e)&&(e.visible=!0)})),e.enableRender()}},jFt={getTitle:({hit:e,bimViewer:t,instanceId:i,batchId:r})=>FCe(t,e,i,r)?xo("deselect")({bimViewer:t}):xo("select")({bimViewer:t}),getShown:({hit:e})=>e,doAction:({hit:e,bimViewer:t,instanceId:i,batchId:r})=>{!1!==e.userData.selectable?FCe(t,e,i,r)?t.clearSelection():t.selectObject(e,e.instanceId,r):ie.debug(`[ContextMenu] object(type: ${e.type}, name: ${e.name}) not selectable!`)}},WFt={getTitle:xo("selectNone"),getEnabled:({bimViewer:e})=>e.selectedObject,doAction:({bimViewer:e})=>e.clearSelection()},qFt={getTitle:xo("xRayAll"),getShown:({bimViewer:e})=>!tV(e),doAction:({bimViewer:e})=>{e.addOrRemoveObjectOpacity(!0),e.enableRender()}},YFt={getTitle:xo("xRayNone"),getEnabled:({bimViewer:e})=>tV(e),doAction:({bimViewer:e})=>{tV(e)&&(e.addOrRemoveObjectOpacity(!1),e.enableRender())}},XFt={getTitle:xo("xRayEntity"),getShown:({hit:e})=>e,doAction:({bimViewer:e,hit:t})=>{e.addOrRemoveObjectOpacity(!0,void 0,[t.id],void 0)}},$Ft={getTitle:xo("xRayOthers"),getShown:({hit:e})=>e,doAction:({bimViewer:e,hit:t})=>{e.addOrRemoveObjectOpacity(!0,.1,void 0,[t.id]),e.enableRender()}},ZFt={getTitle:({bimViewer:e})=>{let t="";switch(e.sectionType){case"PickPlaneSection":t="*showSectionPlane";break;case"AxisPlaneSection":t="showAxisSection";break;case"ObjectsBoxSection":t="*showSectionBox"}return e.translate(`ContextMenu.${t}`)},getShown:({bimViewer:e,section:t})=>("PickPlaneSection"===e.sectionType||"AxisPlaneSection"===e.sectionType)&&(!!t&&!t.isShowSectionPlane),doAction:({bimViewer:e,section:t})=>{("PickPlaneSection"===e.sectionType||"AxisPlaneSection"===e.sectionType)&&(null==t||t.setSectionVisible(!0))}},KFt={getTitle:({bimViewer:e})=>{let t="";switch(e.sectionType){case"PickPlaneSection":t="hideSectionPlane";break;case"AxisPlaneSection":t="hideAxisSection";break;case"ObjectsBoxSection":t="hideSectionBox"}return e.translate(`ContextMenu.${t}`)},getShown:e=>UCe(e),doAction:({bimViewer:e,section:t})=>{("PickPlaneSection"===e.sectionType||"AxisPlaneSection"===e.sectionType)&&(null==t||t.setSectionVisible(!1))}},JFt={getTitle:xo("undoSection"),getShown:e=>UCe(e),doAction:({bimViewer:e,toolbar:t})=>{if("PickPlaneSection"===e.sectionType){let e=null==t?void 0:t.menuList.get("SectionPlane");null==e||e.setActive(!1)}else if("AxisPlaneSection"===e.sectionType){let e=null==t?void 0:t.menuList.get("SectionAxis");null==e||e.setActive(!1)}else if("ObjectsBoxSection"===e.sectionType){let e=null==t?void 0:t.menuList.get("SectionBox");null==e||e.setActive(!1)}}},UCe=({bimViewer:e,hit:t,section:i})=>("PickPlaneSection"===e.sectionType||"AxisPlaneSection"===e.sectionType)&&!!i&&i.isShowSectionPlane&&(null==t?void 0:t.name)===YB,BCe=[[ZFt],[KFt,JFt],[UFt,BFt],[kFt,GFt,VFt,zFt],[XFt,$Ft,qFt,YFt],[jFt,WFt]];function QFt(e){if(e&&"undefined"!=typeof window){var t=document.createElement("style");return t.setAttribute("type","text/css"),t.innerHTML=e,document.head.appendChild(t),e}}function AE(e,t){var i=e.__state.conversionName.toString(),r=Math.round(e.r),n=Math.round(e.g),s=Math.round(e.b),a=e.a,o=Math.round(e.h),l=e.s.toFixed(1),h=e.v.toFixed(1);if(t||"THREE_CHAR_HEX"===i||"SIX_CHAR_HEX"===i){for(var u=e.hex.toString(16);u.length<6;)u="0"+u;return"#"+u}return"CSS_RGB"===i?"rgb("+r+","+n+","+s+")":"CSS_RGBA"===i?"rgba("+r+","+n+","+s+","+a+")":"HEX"===i?"0x"+e.hex.toString(16):"RGB_ARRAY"===i?"["+r+","+n+","+s+"]":"RGBA_ARRAY"===i?"["+r+","+n+","+s+","+a+"]":"RGB_OBJ"===i?"{r:"+r+",g:"+n+",b:"+s+"}":"RGBA_OBJ"===i?"{r:"+r+",g:"+n+",b:"+s+",a:"+a+"}":"HSV_OBJ"===i?"{h:"+o+",s:"+l+",v:"+h+"}":"HSVA_OBJ"===i?"{h:"+o+",s:"+l+",v:"+h+",a:"+a+"}":"unknown format"}var kCe=Array.prototype.forEach,sS=Array.prototype.slice,mt={BREAK:{},extend:function(e){return this.each(sS.call(arguments,1),(function(t){(this.isObject(t)?Object.keys(t):[]).forEach(function(i){this.isUndefined(t[i])||(e[i]=t[i])}.bind(this))}),this),e},defaults:function(e){return this.each(sS.call(arguments,1),(function(t){(this.isObject(t)?Object.keys(t):[]).forEach(function(i){this.isUndefined(e[i])&&(e[i]=t[i])}.bind(this))}),this),e},compose:function(){var e=sS.call(arguments);return function(){for(var t=sS.call(arguments),i=e.length-1;i>=0;i--)t=[e[i].apply(this,t)];return t[0]}},each:function(e,t,i){if(e)if(kCe&&e.forEach&&e.forEach===kCe)e.forEach(t,i);else if(e.length===e.length+0){var r,n=void 0;for(n=0,r=e.length;n1?mt.toArray(arguments):arguments[0];return mt.each(e5t,(function(t){if(t.litmus(e))return mt.each(t.conversions,(function(t,i){if(aS=t.read(e),!1===L3&&!1!==aS)return L3=aS,aS.conversionName=i,aS.conversion=t,mt.BREAK})),mt.BREAK})),L3},GCe=void 0,H3={hsv_to_rgb:function(e,t,i){var r=Math.floor(e/60)%6,n=e/60-Math.floor(e/60),s=i*(1-t),a=i*(1-n*t),o=i*(1-(1-n)*t),l=[[i,o,s],[a,i,s],[s,i,o],[s,a,i],[o,s,i],[i,s,a]][r];return{r:255*l[0],g:255*l[1],b:255*l[2]}},rgb_to_hsv:function(e,t,i){var r=Math.min(e,t,i),n=Math.max(e,t,i),s=n-r,a=void 0;return 0===n?{h:NaN,s:0,v:0}:(a=e===n?(t-i)/s:t===n?2+(i-e)/s:4+(e-t)/s,(a/=6)<0&&(a+=1),{h:360*a,s:s/n,v:n/255})},rgb_to_hex:function(e,t,i){var r=this.hex_with_component(0,2,e);return r=this.hex_with_component(r,1,t),r=this.hex_with_component(r,0,i)},component_from_hex:function(e,t){return e>>8*t&255},hex_with_component:function(e,t,i){return i<<(GCe=8*t)|e&~(255<-1?t.length-t.indexOf(".")-1:0}var QCe=function(e){function t(e,i,r){cu(this,t);var n=cm(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,i)),s=r||{};return n.__min=s.min,n.__max=s.max,n.__step=s.step,mt.isUndefined(n.__step)?0===n.initialValue?n.__impliedStep=1:n.__impliedStep=Math.pow(10,Math.floor(Math.log(Math.abs(n.initialValue))/Math.LN10))/10:n.__impliedStep=n.__step,n.__precision=VCe(n.__impliedStep),n}return lm(t,F0),uu(t,[{key:"setValue",value:function(e){var i=e;return void 0!==this.__min&&ithis.__max&&(i=this.__max),void 0!==this.__step&&i%this.__step!=0&&(i=Math.round(i/this.__step)*this.__step),om(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"setValue",this).call(this,i)}},{key:"min",value:function(e){return this.__min=e,this}},{key:"max",value:function(e){return this.__max=e,this}},{key:"step",value:function(e){return this.__step=e,this.__impliedStep=e,this.__precision=VCe(e),this}}]),t}();function a5t(e,t){var i=Math.pow(10,t);return Math.round(e*i)/i}var U3=function(e){function t(e,i,r){cu(this,t);var n=cm(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,i,r));n.__truncationSuspended=!1;var s=n,a=void 0;function o(){s.__onFinishChange&&s.__onFinishChange.call(s,s.getValue())}function l(e){var t=a-e.clientY;s.setValue(s.getValue()+t*s.__impliedStep),a=e.clientY}function h(){Ye.unbind(window,"mousemove",l),Ye.unbind(window,"mouseup",h),o()}return n.__input=document.createElement("input"),n.__input.setAttribute("type","text"),Ye.bind(n.__input,"change",(function(){var e=parseFloat(s.__input.value);mt.isNaN(e)||s.setValue(e)})),Ye.bind(n.__input,"blur",(function(){o()})),Ye.bind(n.__input,"mousedown",(function(e){Ye.bind(window,"mousemove",l),Ye.bind(window,"mouseup",h),a=e.clientY})),Ye.bind(n.__input,"keydown",(function(e){13===e.keyCode&&(s.__truncationSuspended=!0,this.blur(),s.__truncationSuspended=!1,o())})),n.updateDisplay(),n.domElement.appendChild(n.__input),n}return lm(t,QCe),uu(t,[{key:"updateDisplay",value:function(){return this.__input.value=this.__truncationSuspended?this.getValue():a5t(this.getValue(),this.__precision),om(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"updateDisplay",this).call(this)}}]),t}();function zCe(e,t,i,r,n){return r+(e-t)/(i-t)*(n-r)}var nV=function(e){function t(e,i,r,n,s){cu(this,t);var a=cm(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,i,{min:r,max:n,step:s})),o=a;function l(e){e.preventDefault();var t=o.__background.getBoundingClientRect();return o.setValue(zCe(e.clientX,t.left,t.right,o.__min,o.__max)),!1}function h(){Ye.unbind(window,"mousemove",l),Ye.unbind(window,"mouseup",h),o.__onFinishChange&&o.__onFinishChange.call(o,o.getValue())}function u(e){var t=e.touches[0].clientX,i=o.__background.getBoundingClientRect();o.setValue(zCe(t,i.left,i.right,o.__min,o.__max))}function c(){Ye.unbind(window,"touchmove",u),Ye.unbind(window,"touchend",c),o.__onFinishChange&&o.__onFinishChange.call(o,o.getValue())}return a.__background=document.createElement("div"),a.__foreground=document.createElement("div"),Ye.bind(a.__background,"mousedown",(function(e){document.activeElement.blur(),Ye.bind(window,"mousemove",l),Ye.bind(window,"mouseup",h),l(e)})),Ye.bind(a.__background,"touchstart",(function(e){1===e.touches.length&&(Ye.bind(window,"touchmove",u),Ye.bind(window,"touchend",c),u(e))})),Ye.addClass(a.__background,"slider"),Ye.addClass(a.__foreground,"slider-fg"),a.updateDisplay(),a.__background.appendChild(a.__foreground),a.domElement.appendChild(a.__background),a}return lm(t,QCe),uu(t,[{key:"updateDisplay",value:function(){var e=(this.getValue()-this.__min)/(this.__max-this.__min);return this.__foreground.style.width=100*e+"%",om(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"updateDisplay",this).call(this)}}]),t}(),eAe=function(e){function t(e,i,r){cu(this,t);var n=cm(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,i)),s=n;return n.__button=document.createElement("div"),n.__button.innerHTML=void 0===r?"Fire":r,Ye.bind(n.__button,"click",(function(e){return e.preventDefault(),s.fire(),!1})),Ye.addClass(n.__button,"button"),n.domElement.appendChild(n.__button),n}return lm(t,F0),uu(t,[{key:"fire",value:function(){this.__onChange&&this.__onChange.call(this),this.getValue().call(this.object),this.__onFinishChange&&this.__onFinishChange.call(this,this.getValue())}}]),t}(),sV=function(e){function t(e,i){cu(this,t);var r=cm(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,i));r.__color=new Hs(r.getValue()),r.__temp=new Hs(0);var n=r;r.domElement=document.createElement("div"),Ye.makeSelectable(r.domElement,!1),r.__selector=document.createElement("div"),r.__selector.className="selector",r.__saturation_field=document.createElement("div"),r.__saturation_field.className="saturation-field",r.__field_knob=document.createElement("div"),r.__field_knob.className="field-knob",r.__field_knob_border="2px solid ",r.__hue_knob=document.createElement("div"),r.__hue_knob.className="hue-knob",r.__hue_field=document.createElement("div"),r.__hue_field.className="hue-field",r.__input=document.createElement("input"),r.__input.type="text",r.__input_textShadow="0 1px 1px ",Ye.bind(r.__input,"keydown",(function(e){13===e.keyCode&&u.call(this)})),Ye.bind(r.__input,"blur",u),Ye.bind(r.__selector,"mousedown",(function(){Ye.addClass(this,"drag").bind(window,"mouseup",(function(){Ye.removeClass(n.__selector,"drag")}))})),Ye.bind(r.__selector,"touchstart",(function(){Ye.addClass(this,"drag").bind(window,"touchend",(function(){Ye.removeClass(n.__selector,"drag")}))}));var s=document.createElement("div");function a(e){p(e),Ye.bind(window,"mousemove",p),Ye.bind(window,"touchmove",p),Ye.bind(window,"mouseup",l),Ye.bind(window,"touchend",l)}function o(e){d(e),Ye.bind(window,"mousemove",d),Ye.bind(window,"touchmove",d),Ye.bind(window,"mouseup",h),Ye.bind(window,"touchend",h)}function l(){Ye.unbind(window,"mousemove",p),Ye.unbind(window,"touchmove",p),Ye.unbind(window,"mouseup",l),Ye.unbind(window,"touchend",l),c()}function h(){Ye.unbind(window,"mousemove",d),Ye.unbind(window,"touchmove",d),Ye.unbind(window,"mouseup",h),Ye.unbind(window,"touchend",h),c()}function u(){var e=iV(this.value);!1!==e?(n.__color.__state=e,n.setValue(n.__color.toOriginal())):this.value=n.__color.toString()}function c(){n.__onFinishChange&&n.__onFinishChange.call(n,n.__color.toOriginal())}function p(e){-1===e.type.indexOf("touch")&&e.preventDefault();var t=n.__saturation_field.getBoundingClientRect(),i=e.touches&&e.touches[0]||e,r=i.clientX,s=i.clientY,a=(r-t.left)/(t.right-t.left),o=1-(s-t.top)/(t.bottom-t.top);return o>1?o=1:o<0&&(o=0),a>1?a=1:a<0&&(a=0),n.__color.v=o,n.__color.s=a,n.setValue(n.__color.toOriginal()),!1}function d(e){-1===e.type.indexOf("touch")&&e.preventDefault();var t=n.__hue_field.getBoundingClientRect(),i=1-((e.touches&&e.touches[0]||e).clientY-t.top)/(t.bottom-t.top);return i>1?i=1:i<0&&(i=0),n.__color.h=360*i,n.setValue(n.__color.toOriginal()),!1}return mt.extend(r.__selector.style,{width:"122px",height:"102px",padding:"3px",backgroundColor:"#222",boxShadow:"0px 1px 3px rgba(0,0,0,0.3)"}),mt.extend(r.__field_knob.style,{position:"absolute",width:"12px",height:"12px",border:r.__field_knob_border+(r.__color.v<.5?"#fff":"#000"),boxShadow:"0px 1px 3px rgba(0,0,0,0.5)",borderRadius:"12px",zIndex:1}),mt.extend(r.__hue_knob.style,{position:"absolute",width:"15px",height:"2px",borderRight:"4px solid #fff",zIndex:1}),mt.extend(r.__saturation_field.style,{width:"100px",height:"100px",border:"1px solid #555",marginRight:"3px",display:"inline-block",cursor:"pointer"}),mt.extend(s.style,{width:"100%",height:"100%",background:"none"}),jCe(s,"top","rgba(0,0,0,0)","#000"),mt.extend(r.__hue_field.style,{width:"15px",height:"100px",border:"1px solid #555",cursor:"ns-resize",position:"absolute",top:"3px",right:"3px"}),l5t(r.__hue_field),mt.extend(r.__input.style,{outline:"none",textAlign:"center",color:"#fff",border:0,fontWeight:"bold",textShadow:r.__input_textShadow+"rgba(0,0,0,0.7)"}),Ye.bind(r.__saturation_field,"mousedown",a),Ye.bind(r.__saturation_field,"touchstart",a),Ye.bind(r.__field_knob,"mousedown",a),Ye.bind(r.__field_knob,"touchstart",a),Ye.bind(r.__hue_field,"mousedown",o),Ye.bind(r.__hue_field,"touchstart",o),r.__saturation_field.appendChild(s),r.__selector.appendChild(r.__field_knob),r.__selector.appendChild(r.__saturation_field),r.__selector.appendChild(r.__hue_field),r.__hue_field.appendChild(r.__hue_knob),r.domElement.appendChild(r.__input),r.domElement.appendChild(r.__selector),r.updateDisplay(),r}return lm(t,F0),uu(t,[{key:"updateDisplay",value:function(){var e=iV(this.getValue());if(!1!==e){var t=!1;mt.each(Hs.COMPONENTS,(function(i){if(!mt.isUndefined(e[i])&&!mt.isUndefined(this.__color.__state[i])&&e[i]!==this.__color.__state[i])return t=!0,{}}),this),t&&mt.extend(this.__color.__state,e)}mt.extend(this.__temp.__state,this.__color.__state),this.__temp.a=1;var i=this.__color.v<.5||this.__color.s>.5?255:0,r=255-i;mt.extend(this.__field_knob.style,{marginLeft:100*this.__color.s-7+"px",marginTop:100*(1-this.__color.v)-7+"px",backgroundColor:this.__temp.toHexString(),border:this.__field_knob_border+"rgb("+i+","+i+","+i+")"}),this.__hue_knob.style.marginTop=100*(1-this.__color.h/360)+"px",this.__temp.s=1,this.__temp.v=1,jCe(this.__saturation_field,"left","#fff",this.__temp.toHexString()),this.__input.value=this.__color.toString(),mt.extend(this.__input.style,{backgroundColor:this.__color.toHexString(),color:"rgb("+i+","+i+","+i+")",textShadow:this.__input_textShadow+"rgba("+r+","+r+","+r+",.7)"})}}]),t}(),o5t=["-moz-","-o-","-webkit-","-ms-",""];function jCe(e,t,i,r){e.style.background="",mt.each(o5t,(function(n){e.style.cssText+="background: "+n+"linear-gradient("+t+", "+i+" 0%, "+r+" 100%); "}))}function l5t(e){e.style.background="",e.style.cssText+="background: -moz-linear-gradient(top, #ff0000 0%, #ff00ff 17%, #0000ff 34%, #00ffff 50%, #00ff00 67%, #ffff00 84%, #ff0000 100%);",e.style.cssText+="background: -webkit-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);",e.style.cssText+="background: -o-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);",e.style.cssText+="background: -ms-linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);",e.style.cssText+="background: linear-gradient(top, #ff0000 0%,#ff00ff 17%,#0000ff 34%,#00ffff 50%,#00ff00 67%,#ffff00 84%,#ff0000 100%);"}var c5t={load:function(e,t){var i=t||document,r=i.createElement("link");r.type="text/css",r.rel="stylesheet",r.href=e,i.getElementsByTagName("head")[0].appendChild(r)},inject:function(e,t){var i=t||document,r=document.createElement("style");r.type="text/css",r.innerHTML=e;var n=i.getElementsByTagName("head")[0];try{n.appendChild(r)}catch(e){}}},u5t='
\n\n Here\'s the new load parameter for your GUI\'s constructor:\n\n \n\n
\n\n Automatically save\n values to localStorage on exit.\n\n
The values saved to localStorage will\n override those passed to dat.GUI\'s constructor. This makes it\n easier to work incrementally, but localStorage is fragile,\n and your friends may not see the same values you do.\n\n
\n\n
\n\n
',h5t=function(e,t){var i=e[t];return mt.isArray(arguments[2])||mt.isObject(arguments[2])?new n5t(e,t,arguments[2]):mt.isNumber(i)?mt.isNumber(arguments[2])&&mt.isNumber(arguments[3])?mt.isNumber(arguments[4])?new nV(e,t,arguments[2],arguments[3],arguments[4]):new nV(e,t,arguments[2],arguments[3]):mt.isNumber(arguments[4])?new U3(e,t,{min:arguments[2],max:arguments[3],step:arguments[4]}):new U3(e,t,{min:arguments[2],max:arguments[3]}):mt.isString(i)?new s5t(e,t):mt.isFunction(i)?new eAe(e,t,""):mt.isBoolean(i)?new JCe(e,t):null};function p5t(e){setTimeout(e,1e3/60)}var d5t=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||p5t,f5t=function(){function e(){cu(this,e),this.backgroundElement=document.createElement("div"),mt.extend(this.backgroundElement.style,{backgroundColor:"rgba(0,0,0,0.8)",top:0,left:0,display:"none",zIndex:"1000",opacity:0,WebkitTransition:"opacity 0.2s linear",transition:"opacity 0.2s linear"}),Ye.makeFullscreen(this.backgroundElement),this.backgroundElement.style.position="fixed",this.domElement=document.createElement("div"),mt.extend(this.domElement.style,{position:"fixed",display:"none",zIndex:"1001",opacity:0,WebkitTransition:"-webkit-transform 0.2s ease-out, opacity 0.2s linear",transition:"transform 0.2s ease-out, opacity 0.2s linear"}),document.body.appendChild(this.backgroundElement),document.body.appendChild(this.domElement);var t=this;Ye.bind(this.backgroundElement,"click",(function(){t.hide()}))}return uu(e,[{key:"show",value:function(){var e=this;this.backgroundElement.style.display="block",this.domElement.style.display="block",this.domElement.style.opacity=0,this.domElement.style.webkitTransform="scale(1.1)",this.layout(),mt.defer((function(){e.backgroundElement.style.opacity=1,e.domElement.style.opacity=1,e.domElement.style.webkitTransform="scale(1)"}))}},{key:"hide",value:function(){var e=this,t=function t(){e.domElement.style.display="none",e.backgroundElement.style.display="none",Ye.unbind(e.domElement,"webkitTransitionEnd",t),Ye.unbind(e.domElement,"transitionend",t),Ye.unbind(e.domElement,"oTransitionEnd",t)};Ye.bind(this.domElement,"webkitTransitionEnd",t),Ye.bind(this.domElement,"transitionend",t),Ye.bind(this.domElement,"oTransitionEnd",t),this.backgroundElement.style.opacity=0,this.domElement.style.opacity=0,this.domElement.style.webkitTransform="scale(1.1)"}},{key:"layout",value:function(){this.domElement.style.left=window.innerWidth/2-Ye.getWidth(this.domElement)/2+"px",this.domElement.style.top=window.innerHeight/2-Ye.getHeight(this.domElement)/2+"px"}}]),e}(),m5t=QFt(".dg ul{list-style:none;margin:0;padding:0;width:100%;clear:both}.dg.ac{position:fixed;top:0;left:0;right:0;height:0;z-index:0}.dg:not(.ac) .main{overflow:hidden}.dg.main{-webkit-transition:opacity .1s linear;-o-transition:opacity .1s linear;-moz-transition:opacity .1s linear;transition:opacity .1s linear}.dg.main.taller-than-window{overflow-y:auto}.dg.main.taller-than-window .close-button{opacity:1;margin-top:-1px;border-top:1px solid #2c2c2c}.dg.main ul.closed .close-button{opacity:1 !important}.dg.main:hover .close-button,.dg.main .close-button.drag{opacity:1}.dg.main .close-button{-webkit-transition:opacity .1s linear;-o-transition:opacity .1s linear;-moz-transition:opacity .1s linear;transition:opacity .1s linear;border:0;line-height:19px;height:20px;cursor:pointer;text-align:center;background-color:#000}.dg.main .close-button.close-top{position:relative}.dg.main .close-button.close-bottom{position:absolute}.dg.main .close-button:hover{background-color:#111}.dg.a{float:right;margin-right:15px;overflow-y:visible}.dg.a.has-save>ul.close-top{margin-top:0}.dg.a.has-save>ul.close-bottom{margin-top:27px}.dg.a.has-save>ul.closed{margin-top:0}.dg.a .save-row{top:0;z-index:1002}.dg.a .save-row.close-top{position:relative}.dg.a .save-row.close-bottom{position:fixed}.dg li{-webkit-transition:height .1s ease-out;-o-transition:height .1s ease-out;-moz-transition:height .1s ease-out;transition:height .1s ease-out;-webkit-transition:overflow .1s linear;-o-transition:overflow .1s linear;-moz-transition:overflow .1s linear;transition:overflow .1s linear}.dg li:not(.folder){cursor:auto;height:27px;line-height:27px;padding:0 4px 0 5px}.dg li.folder{padding:0;border-left:4px solid rgba(0,0,0,0)}.dg li.title{cursor:pointer;margin-left:-4px}.dg .closed li:not(.title),.dg .closed ul li,.dg .closed ul li>*{height:0;overflow:hidden;border:0}.dg .cr{clear:both;padding-left:3px;height:27px;overflow:hidden}.dg .property-name{cursor:default;float:left;clear:left;width:40%;overflow:hidden;text-overflow:ellipsis}.dg .cr.function .property-name{width:100%}.dg .c{float:left;width:60%;position:relative}.dg .c input[type=text]{border:0;margin-top:4px;padding:3px;width:100%;float:right}.dg .has-slider input[type=text]{width:30%;margin-left:0}.dg .slider{float:left;width:66%;margin-left:-5px;margin-right:0;height:19px;margin-top:4px}.dg .slider-fg{height:100%}.dg .c input[type=checkbox]{margin-top:7px}.dg .c select{margin-top:5px}.dg .cr.function,.dg .cr.function .property-name,.dg .cr.function *,.dg .cr.boolean,.dg .cr.boolean *{cursor:pointer}.dg .cr.color{overflow:visible}.dg .selector{display:none;position:absolute;margin-left:-9px;margin-top:23px;z-index:10}.dg .c:hover .selector,.dg .selector.drag{display:block}.dg li.save-row{padding:0}.dg li.save-row .button{display:inline-block;padding:0px 6px}.dg.dialogue{background-color:#222;width:460px;padding:15px;font-size:13px;line-height:15px}#dg-new-constructor{padding:10px;color:#222;font-family:Monaco, monospace;font-size:10px;border:0;resize:none;box-shadow:inset 1px 1px 1px #888;word-wrap:break-word;margin:12px 0;display:block;width:440px;overflow-y:scroll;height:100px;position:relative}#dg-local-explain{display:none;font-size:11px;line-height:17px;border-radius:3px;background-color:#333;padding:8px;margin-top:10px}#dg-local-explain code{font-size:10px}#dat-gui-save-locally{display:none}.dg{color:#eee;font:11px 'Lucida Grande', sans-serif;text-shadow:0 -1px 0 #111}.dg.main::-webkit-scrollbar{width:5px;background:#1a1a1a}.dg.main::-webkit-scrollbar-corner{height:0;display:none}.dg.main::-webkit-scrollbar-thumb{border-radius:5px;background:#676767}.dg li:not(.folder){background:#1a1a1a;border-bottom:1px solid #2c2c2c}.dg li.save-row{line-height:25px;background:#dad5cb;border:0}.dg li.save-row select{margin-left:5px;width:108px}.dg li.save-row .button{margin-left:5px;margin-top:1px;border-radius:2px;font-size:9px;line-height:7px;padding:4px 4px 5px 4px;background:#c5bdad;color:#fff;text-shadow:0 1px 0 #b0a58f;box-shadow:0 -1px 0 #b0a58f;cursor:pointer}.dg li.save-row .button.gears{background:#c5bdad url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAANCAYAAAB/9ZQ7AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAQJJREFUeNpiYKAU/P//PwGIC/ApCABiBSAW+I8AClAcgKxQ4T9hoMAEUrxx2QSGN6+egDX+/vWT4e7N82AMYoPAx/evwWoYoSYbACX2s7KxCxzcsezDh3evFoDEBYTEEqycggWAzA9AuUSQQgeYPa9fPv6/YWm/Acx5IPb7ty/fw+QZblw67vDs8R0YHyQhgObx+yAJkBqmG5dPPDh1aPOGR/eugW0G4vlIoTIfyFcA+QekhhHJhPdQxbiAIguMBTQZrPD7108M6roWYDFQiIAAv6Aow/1bFwXgis+f2LUAynwoIaNcz8XNx3Dl7MEJUDGQpx9gtQ8YCueB+D26OECAAQDadt7e46D42QAAAABJRU5ErkJggg==) 2px 1px no-repeat;height:7px;width:8px}.dg li.save-row .button:hover{background-color:#bab19e;box-shadow:0 -1px 0 #b0a58f}.dg li.folder{border-bottom:0}.dg li.title{padding-left:16px;background:#000 url(data:image/gif;base64,R0lGODlhBQAFAJEAAP////Pz8////////yH5BAEAAAIALAAAAAAFAAUAAAIIlI+hKgFxoCgAOw==) 6px 10px no-repeat;cursor:pointer;border-bottom:1px solid rgba(255,255,255,0.2)}.dg .closed li.title{background-image:url(data:image/gif;base64,R0lGODlhBQAFAJEAAP////Pz8////////yH5BAEAAAIALAAAAAAFAAUAAAIIlGIWqMCbWAEAOw==)}.dg .cr.boolean{border-left:3px solid #806787}.dg .cr.color{border-left:3px solid}.dg .cr.function{border-left:3px solid #e61d5f}.dg .cr.number{border-left:3px solid #2FA1D6}.dg .cr.number input[type=text]{color:#2FA1D6}.dg .cr.string{border-left:3px solid #1ed36f}.dg .cr.string input[type=text]{color:#1ed36f}.dg .cr.function:hover,.dg .cr.boolean:hover{background:#111}.dg .c input[type=text]{background:#303030;outline:none}.dg .c input[type=text]:hover{background:#3c3c3c}.dg .c input[type=text]:focus{background:#494949;color:#fff}.dg .c .slider{background:#303030;cursor:ew-resize}.dg .c .slider-fg{background:#2FA1D6;max-width:100%}.dg .c .slider:hover{background:#3c3c3c}.dg .c .slider:hover .slider-fg{background:#44abda}\n");c5t.inject(m5t);var WCe="dg",qCe=72,YCe=20,uS="Default",oS=function(){try{return!!window.localStorage}catch(e){return!1}}(),lS=void 0,XCe=!0,DE=void 0,rV=!1,tAe=[],En=function e(t){var i=this,r=t||{};this.domElement=document.createElement("div"),this.__ul=document.createElement("ul"),this.domElement.appendChild(this.__ul),Ye.addClass(this.domElement,WCe),this.__folders={},this.__controllers=[],this.__rememberedObjects=[],this.__rememberedObjectIndecesToControllers=[],this.__listening=[],r=mt.defaults(r,{closeOnTop:!1,autoPlace:!0,width:e.DEFAULT_WIDTH}),r=mt.defaults(r,{resizable:r.autoPlace,hideable:r.autoPlace}),mt.isUndefined(r.load)?r.load={preset:uS}:r.preset&&(r.load.preset=r.preset),mt.isUndefined(r.parent)&&r.hideable&&tAe.push(this),r.resizable=mt.isUndefined(r.parent)&&r.resizable,r.autoPlace&&mt.isUndefined(r.scrollable)&&(r.scrollable=!0);var n,s=oS&&"true"===localStorage.getItem(CE(this,"isLocal")),a=void 0,o=void 0;if(Object.defineProperties(this,{parent:{get:function(){return r.parent}},scrollable:{get:function(){return r.scrollable}},autoPlace:{get:function(){return r.autoPlace}},closeOnTop:{get:function(){return r.closeOnTop}},preset:{get:function(){return i.parent?i.getRoot().preset:r.load.preset},set:function(e){i.parent?i.getRoot().preset=e:r.load.preset=e,T5t(this),i.revert()}},width:{get:function(){return r.width},set:function(e){r.width=e,lV(i,e)}},name:{get:function(){return r.name},set:function(e){r.name=e,o&&(o.innerHTML=r.name)}},closed:{get:function(){return r.closed},set:function(t){r.closed=t,r.closed?Ye.addClass(i.__ul,e.CLASS_CLOSED):Ye.removeClass(i.__ul,e.CLASS_CLOSED),this.onResize(),i.__closeButton&&(i.__closeButton.innerHTML=t?e.TEXT_OPEN:e.TEXT_CLOSED)}},load:{get:function(){return r.load}},useLocalStorage:{get:function(){return s},set:function(e){oS&&(s=e,e?Ye.bind(window,"unload",a):Ye.unbind(window,"unload",a),localStorage.setItem(CE(i,"isLocal"),e))}}}),mt.isUndefined(r.parent)){if(this.closed=r.closed||!1,Ye.addClass(this.domElement,e.CLASS_MAIN),Ye.makeSelectable(this.domElement,!1),oS&&s){i.useLocalStorage=!0;var l=localStorage.getItem(CE(this,"gui"));l&&(r.load=JSON.parse(l))}this.__closeButton=document.createElement("div"),this.__closeButton.innerHTML=e.TEXT_CLOSED,Ye.addClass(this.__closeButton,e.CLASS_CLOSE_BUTTON),r.closeOnTop?(Ye.addClass(this.__closeButton,e.CLASS_CLOSE_TOP),this.domElement.insertBefore(this.__closeButton,this.domElement.childNodes[0])):(Ye.addClass(this.__closeButton,e.CLASS_CLOSE_BOTTOM),this.domElement.appendChild(this.__closeButton)),Ye.bind(this.__closeButton,"click",(function(){i.closed=!i.closed}))}else{void 0===r.closed&&(r.closed=!0);var h=document.createTextNode(r.name);Ye.addClass(h,"controller-name"),o=hV(i,h);Ye.addClass(this.__ul,e.CLASS_CLOSED),Ye.addClass(o,"title"),Ye.bind(o,"click",(function(e){return e.preventDefault(),i.closed=!i.closed,!1})),r.closed||(this.closed=!1)}r.autoPlace&&(mt.isUndefined(r.parent)&&(XCe&&(DE=document.createElement("div"),Ye.addClass(DE,WCe),Ye.addClass(DE,e.CLASS_AUTO_PLACE_CONTAINER),document.body.appendChild(DE),XCe=!1),DE.appendChild(this.domElement),Ye.addClass(this.domElement,e.CLASS_AUTO_PLACE)),this.parent||lV(i,r.width)),this.__resizeHandler=function(){i.onResizeDebounced()},Ye.bind(window,"resize",this.__resizeHandler),Ye.bind(this.__ul,"webkitTransitionEnd",this.__resizeHandler),Ye.bind(this.__ul,"transitionend",this.__resizeHandler),Ye.bind(this.__ul,"oTransitionEnd",this.__resizeHandler),this.onResize(),r.resizable&&y5t(this),a=function(){oS&&"true"===localStorage.getItem(CE(i,"isLocal"))&&localStorage.setItem(CE(i,"gui"),JSON.stringify(i.getSaveObject()))},this.saveToLocalStorageIfPossible=a,r.parent||((n=i.getRoot()).width+=1,mt.defer((function(){n.width-=1})))};function hV(e,t,i){var r=document.createElement("li");return t&&r.appendChild(t),i?e.__ul.insertBefore(r,i):e.__ul.appendChild(r),e.onResize(),r}function $Ce(e){Ye.unbind(window,"resize",e.__resizeHandler),e.saveToLocalStorageIfPossible&&Ye.unbind(window,"unload",e.saveToLocalStorageIfPossible)}function aV(e,t){var i=e.__preset_select[e.__preset_select.selectedIndex];i.innerHTML=t?i.value+"*":i.value}function g5t(e,t,i){if(i.__li=t,i.__gui=e,mt.extend(i,{options:function(t){if(arguments.length>1){var r=i.__li.nextElementSibling;return i.remove(),cS(e,i.object,i.property,{before:r,factoryArgs:[mt.toArray(arguments)]})}if(mt.isArray(t)||mt.isObject(t)){var n=i.__li.nextElementSibling;return i.remove(),cS(e,i.object,i.property,{before:n,factoryArgs:[t]})}},name:function(e){return i.__li.firstElementChild.firstElementChild.innerHTML=e,i},listen:function(){return i.__gui.listen(i),i},remove:function(){return i.__gui.remove(i),i}}),i instanceof nV){var r=new U3(i.object,i.property,{min:i.__min,max:i.__max,step:i.__step});mt.each(["updateDisplay","onChange","onFinishChange","step","min","max"],(function(e){var t=i[e],n=r[e];i[e]=r[e]=function(){var e=Array.prototype.slice.call(arguments);return n.apply(r,e),t.apply(i,e)}})),Ye.addClass(t,"has-slider"),i.domElement.insertBefore(r.domElement,i.domElement.firstElementChild)}else if(i instanceof U3){var n=function(t){if(mt.isNumber(i.__min)&&mt.isNumber(i.__max)){var r=i.__li.firstElementChild.firstElementChild.innerHTML,n=i.__gui.__listening.indexOf(i)>-1;i.remove();var s=cS(e,i.object,i.property,{before:i.__li.nextElementSibling,factoryArgs:[i.__min,i.__max,i.__step]});return s.name(r),n&&s.listen(),s}return t};i.min=mt.compose(n,i.min),i.max=mt.compose(n,i.max)}else i instanceof JCe?(Ye.bind(t,"click",(function(){Ye.fakeEvent(i.__checkbox,"click")})),Ye.bind(i.__checkbox,"click",(function(e){e.stopPropagation()}))):i instanceof eAe?(Ye.bind(t,"click",(function(){Ye.fakeEvent(i.__button,"click")})),Ye.bind(t,"mouseover",(function(){Ye.addClass(i.__button,"hover")})),Ye.bind(t,"mouseout",(function(){Ye.removeClass(i.__button,"hover")}))):i instanceof sV&&(Ye.addClass(t,"color"),i.updateDisplay=mt.compose((function(e){return t.style.borderLeftColor=i.__color.toString(),e}),i.updateDisplay),i.updateDisplay());i.setValue=mt.compose((function(t){return e.getRoot().__preset_select&&i.isModified()&&aV(e.getRoot(),!0),t}),i.setValue)}function rAe(e,t){var i=e.getRoot(),r=i.__rememberedObjects.indexOf(t.object);if(-1!==r){var n=i.__rememberedObjectIndecesToControllers[r];if(void 0===n&&(n={},i.__rememberedObjectIndecesToControllers[r]=n),n[t.property]=t,i.load&&i.load.remembered){var s=i.load.remembered,a=void 0;if(s[e.preset])a=s[e.preset];else{if(!s[uS])return;a=s[uS]}if(a[r]&&void 0!==a[r][t.property]){var o=a[r][t.property];t.initialValue=o,t.setValue(o)}}}}function cS(e,t,i,r){if(void 0===t[i])throw new Error('Object "'+t+'" has no property "'+i+'"');var n=void 0;if(r.color)n=new sV(t,i);else{var s=[t,i].concat(r.factoryArgs);n=h5t.apply(e,s)}r.before instanceof F0&&(r.before=r.before.__li),rAe(e,n),Ye.addClass(n.domElement,"c");var a=document.createElement("span");Ye.addClass(a,"property-name"),a.innerHTML=n.property;var o=document.createElement("div");o.appendChild(a),o.appendChild(n.domElement);var l=hV(e,o,r.before);return Ye.addClass(l,En.CLASS_CONTROLLER_ROW),n instanceof sV?Ye.addClass(l,"color"):Ye.addClass(l,t5t(n.getValue())),g5t(e,l,n),e.__controllers.push(n),n}function CE(e,t){return document.location.href+"."+t}function oV(e,t,i){var r=document.createElement("option");r.innerHTML=t,r.value=t,e.__preset_select.appendChild(r),i&&(e.__preset_select.selectedIndex=e.__preset_select.length-1)}function ZCe(e,t){t.style.display=e.useLocalStorage?"block":"none"}function v5t(e){var t=e.__save_row=document.createElement("li");Ye.addClass(e.domElement,"has-save"),e.__ul.insertBefore(t,e.__ul.firstChild),Ye.addClass(t,"save-row");var i=document.createElement("span");i.innerHTML=" ",Ye.addClass(i,"button gears");var r=document.createElement("span");r.innerHTML="Save",Ye.addClass(r,"button"),Ye.addClass(r,"save");var n=document.createElement("span");n.innerHTML="New",Ye.addClass(n,"button"),Ye.addClass(n,"save-as");var s=document.createElement("span");s.innerHTML="Revert",Ye.addClass(s,"button"),Ye.addClass(s,"revert");var a=e.__preset_select=document.createElement("select");if(e.load&&e.load.remembered?mt.each(e.load.remembered,(function(t,i){oV(e,i,i===e.preset)})):oV(e,uS,!1),Ye.bind(a,"change",(function(){for(var t=0;t0&&(e.preset=this.preset,e.remembered||(e.remembered={}),e.remembered[this.preset]=F3(this)),e.folders={},mt.each(this.__folders,(function(t,i){e.folders[i]=t.getSaveObject()})),e},save:function(){this.load.remembered||(this.load.remembered={}),this.load.remembered[this.preset]=F3(this),aV(this,!1),this.saveToLocalStorageIfPossible()},saveAs:function(e){this.load.remembered||(this.load.remembered={},this.load.remembered[uS]=F3(this,!0)),this.load.remembered[e]=F3(this),this.preset=e,oV(this,e,!0),this.saveToLocalStorageIfPossible()},revert:function(e){mt.each(this.__controllers,(function(t){this.getRoot().load.remembered?rAe(e||this.getRoot(),t):t.setValue(t.initialValue),t.__onFinishChange&&t.__onFinishChange.call(t,t.getValue())}),this),mt.each(this.__folders,(function(e){e.revert(e)})),e||aV(this.getRoot(),!1)},listen:function(e){var t=0===this.__listening.length;this.__listening.push(e),t&&iAe(this.__listening)},updateDisplay:function(){mt.each(this.__controllers,(function(e){e.updateDisplay()})),mt.each(this.__folders,(function(e){e.updateDisplay()}))}});var nAe=En,sAe=[["requestFullscreen","exitFullscreen","fullscreenElement","fullscreenEnabled","fullscreenchange","fullscreenerror"],["webkitRequestFullscreen","webkitExitFullscreen","webkitFullscreenElement","webkitFullscreenEnabled","webkitfullscreenchange","webkitfullscreenerror"],["webkitRequestFullScreen","webkitCancelFullScreen","webkitCurrentFullScreenElement","webkitCancelFullScreen","webkitfullscreenchange","webkitfullscreenerror"],["mozRequestFullScreen","mozCancelFullScreen","mozFullScreenElement","mozFullScreenEnabled","mozfullscreenchange","mozfullscreenerror"],["msRequestFullscreen","msExitFullscreen","msFullscreenElement","msFullscreenEnabled","MSFullscreenChange","MSFullscreenError"]],md=(()=>{if("undefined"==typeof document)return!1;let e=sAe[0],t={};for(let i of sAe)if((null==i?void 0:i[1])in document){for(let[r,n]of i.entries())t[e[r]]=n;return t}return!1})(),aAe={change:md.fullscreenchange,error:md.fullscreenerror},al={request:(e=document.documentElement,t)=>new Promise(((i,r)=>{let n=()=>{al.off("change",n),i()};al.on("change",n);let s=e[md.requestFullscreen](t);s instanceof Promise&&s.then(n).catch(r)})),exit:()=>new Promise(((e,t)=>{if(!al.isFullscreen)return void e();let i=()=>{al.off("change",i),e()};al.on("change",i);let r=document[md.exitFullscreen]();r instanceof Promise&&r.then(i).catch(t)})),toggle:(e,t)=>al.isFullscreen?al.exit():al.request(e,t),onchange(e){al.on("change",e)},onerror(e){al.on("error",e)},on(e,t){let i=aAe[e];i&&document.addEventListener(i,t,!1)},off(e,t){let i=aAe[e];i&&document.removeEventListener(i,t,!1)},raw:md};Object.defineProperties(al,{isFullscreen:{get:()=>Boolean(document[md.fullscreenElement])},element:{enumerable:!0,get:()=>{var e;return null!=(e=document[md.fullscreenElement])?e:void 0}},isEnabled:{enumerable:!0,get:()=>Boolean(document[md.fullscreenEnabled])}}),md||(al={isEnabled:!1});var B3=al;function oAe(e,t,i,r,n,s,a){let o=e.addFolder(t);o.add(i,"x",n,s,a).onChange(r),o.add(i,"y",n,s,a).onChange(r),o.add(i,"z",n,s,a).onChange(r)}var k3=class{constructor(e){this.exploderDict={},this.controls={showGroundGrid:!1,showGrassGround:!1,skyMode:["None","Black Background","White Background","Gradient ramp","Cloudy"],environments:["None","Default (City Streat 64x32)","Venice Sunset","Footprint Court (HDR Labs)","City Street"],homeView:()=>console.log("[DGH] Go to home view"),views:["Top","Bottom","Front","Back","Left","Right"],OrthographicCamera:!1,viewpoints:!1,annotations:!1,takeSnapshot:()=>console.log("[DGH] Taking snapshot..."),fullScreen:()=>console.log("[DGH] Full screen..."),webcam:!1,uploadFile:()=>console.log("[DGH] Upload file..."),showBimTree:!1,showPropertyPanel:!1,transparentMode:!1,showVertexNormals:!1,sectionMode:["No section","Box section","Plane section"],alVisible:!0,alColor:"#cccccc",alIntensity:1,dlColor:"#dddddd",showDlHelper:!1,hlVisible:!0,hlIntensity:1,hlColor:[255,255,255,.6],hlGroundColor:[200,255,200,.6],fogEnabled:!1,fogColor:14540253,fogNearDistance:1,fogFarDistance:1e3,composerEnabled:!1,renderPassEnabled:!1,fxaaEnabled:!1,saoEnabled:!1,ssaoEnabled:!1,outlineEnabled:!1,ssaaEnabled:!1,bloomEnabled:!1,unrealBloomEnabled:!1},this.viewer=e,this.init()}init(){if(!this.viewer||!this.viewer.renderer||!this.viewer.scene)throw new Error("Need to initialize renderer, scene first!");let e=this.viewer,t=this.viewer.scene,i=this.controls;this.gui=new nAe({name:"controls",autoPlace:!0,width:300,closed:!0}),this.gui.domElement.style.opacity="0.6";let r=this.gui.addFolder("Common settings");r.add(i,"showGroundGrid").name("Show ground grid").onChange((i=>{e.groundGrid?e.groundGrid.visible=i:i&&(e.groundGrid=ia.createGroundGrid(),t.add(e.groundGrid),e.enableRender()),e.enableRender()})),r.add(i,"showGrassGround").name("Show grass ground").onChange((i=>{e.grassGround?e.grassGround.visible=i:i&&ht(this,null,(function*(){e.grassGround=yield ia.createGrassGround(),t.add(e.grassGround),e.enableRender()})),e.enableRender()}));let n=r.add(i,"skyMode",i.skyMode).name("Sky mode");n.onChange((i=>{if(e.skyOfGradientRamp&&(e.skyOfGradientRamp.visible="Gradient ramp"===i),"Black Background"===i)t.background=new je(0);else if("White Background"===i)t.background=new je(16777215);else if("Gradient ramp"===i)e.skyOfGradientRamp||(e.skyOfGradientRamp=$o.createSkyOfGradientRamp(),t.add(e.skyOfGradientRamp)),e.skyOfGradientRamp.visible=!0;else if("Cloudy"===i){let e=["right.jpg","left.jpg","top.jpg","bottom.jpg","front.jpg","back.jpg"];e=e.map((e=>`${window.location.origin}/images/skybox/cloudy/${e}`)),$o.createSkyFromTextures(e).then((e=>{t.background=e}))}else t.background=e.sceneBackgroundColor;e.enableRender()})),n.setValue("Gradient ramp"),r.add(i,"environments",i.environments).name("Environments").onChange((i=>{let r="";if("Default (City Streat 64x32)"===i){if(e.pmremGenerator)return Hc.createEnvTextureFromDataArray(e.pmremGenerator).then((e=>{t.environment=e})),void e.enableRender()}else"Venice Sunset"===i?r="venice_sunset_1k.hdr":"Footprint Court (HDR Labs)"===i?r="footprint_court_2k.hdr":"City Street"===i&&(r="city_street_256.hdr");""===r?t.environment=null:(r=`${window.location.origin}/images/envmap/${r}`,Hc.createEnvTexture(e.pmremGenerator,r).then((e=>{t.environment=e}))),e.enableRender()})),r.add(i,"homeView").name("Go to home view").onChange((()=>{e.goToHomeView()})),r.add(i,"views",i.views).name("Views").onChange((i=>{var r;let n=new A,s=new A,a=yn.getVisibleObjectBoundingBox(t),o=Is.getCameraDirectionByView(i);Is.getCameraPositionByBboxAndDirection(a,n,s,null==(r=e.camera)?void 0:r.projectionMatrix,o),e.flyTo(n,s)})),r.add(i,"OrthographicCamera").name("Orth Camera").onChange((t=>{e.setToOrthographicCamera(t)})),r.add(i,"takeSnapshot").name("Take snapshot").onChange((()=>{})),r.add(i,"fullScreen").name("Full screen").onChange((()=>{B3&&B3.isEnabled&&B3.request(),e.enableRender()})),r.add(i,"uploadFile").name("Upload file").onChange((()=>{new JO(e).openFileBrowserToUpload()}));let s=this.gui.addFolder("Model operations");s.add(i,"transparentMode",i.transparentMode).name("Transparent mode").onChange((t=>{e.addOrRemoveObjectOpacity(t),e.enableRender()})),s.add(i,"showVertexNormals",i.showVertexNormals).name("Show Vertex Normals").onChange((t=>{e.showVertexNormals(t),e.enableRender()})),s.add(i,"sectionMode",i.sectionMode).name("Section mode").onChange((t=>{"No section"===t?e.deactivateSection():"Box section"===t?e.activateSection("ObjectsBoxSection"):"Plane section"===t&&e.activateSection("PickPlaneSection"),e.enableRender()}));let a=this.viewer.ambientLight,o=this.gui.addFolder("Ambient light");o.add(i,"alVisible",i.alVisible).name("visible").onChange((t=>{a&&(a.visible=t),e.enableRender()})),o.addColor(i,"alColor").name("color").onChange((t=>{a&&(a.color=new je(t)),e.enableRender()})),o.add(i,"alIntensity",0,5).name("intensity").onChange((t=>{a&&(a.intensity=t),e.enableRender()}));let l=this.viewer.directionalLight;if(l){let t=this.gui.addFolder("Directional light");t.add(l,"visible").name("visible").onChange((t=>{l&&(l.visible=t),e.enableRender()})),t.addColor(i,"dlColor").name("color").onChange((t=>{l&&(l.color=new je(t)),e.enableRender()})),t.add(l,"intensity",0,5).name("intensity").onChange((t=>{l&&(l.intensity=t),e.enableRender()})),t.add(l,"castShadow").name("castShadow").onChange((t=>{l&&(l.castShadow=t),e.enableRender()})),t.add(i,"showDlHelper").name("showDlHelper").onChange((t=>{e.showDirectionalLightHelper(t),e.enableRender()}));let r=()=>{e.updateDirectionalLight(),e.enableRender()};oAe(t,"position",l.position,r),oAe(t,"target",l.target.position,r);let n=t.addFolder("shadow");n.add(l.shadow.camera,"near").name("near").onChange(r),n.add(l.shadow.camera,"far").name("far").onChange(r),n.add(l.shadow.camera,"zoom").name("zoom").onChange(r)}let h=this.viewer.hemisphereLight,u=this.gui.addFolder("Hemisphere Light");u.add(i,"hlVisible",i.hlVisible).name("visible").onChange((t=>{h&&(h.visible=t),e.enableRender()})),u.add(i,"hlIntensity",0,5).name("intensity").onChange((t=>{h&&(h.intensity=t),e.enableRender()})),u.addColor(i,"hlColor").name("color").onChange((t=>{h&&(h.color=new je(t)),e.enableRender()})),u.addColor(i,"hlGroundColor").name("groundColor").onChange((t=>{h&&(h.groundColor=new je(t)),e.enableRender()}));let c=this.gui.addFolder("Fog");c.add(i,"fogEnabled",i.fogEnabled).name("Enabled").onChange((r=>{t.fog=r?new Bu(i.fogColor,i.fogNearDistance,i.fogFarDistance):null,e.enableRender()})),c.add(i,"fogNearDistance",0,100).name("Near").onChange((r=>{i.fogEnabled&&t&&(t.fog=new Bu(i.fogColor,r,i.fogFarDistance)),e.enableRender()})),c.add(i,"fogFarDistance",100,2e3).name("Far").onChange((r=>{i.fogEnabled&&t&&(t.fog=new Bu(i.fogColor,i.fogNearDistance,r)),e.enableRender()}));let p=this.gui.addFolder("Composer");p.add(i,"composerEnabled",i.composerEnabled).name("Composer Enabled").onChange((t=>{e.enableComposer(t)})),p.add(i,"renderPassEnabled",i.renderPassEnabled).name("RenderPass Enabled").onChange((t=>{e.enableRenderPass(t)})),p.add(i,"fxaaEnabled",i.fxaaEnabled).name("Effect FXAA Enabled").onChange((t=>{e.enableFxaaPass(t)})),p.add(i,"saoEnabled",i.saoEnabled).name("SAO Enabled").onChange((t=>{e.enableSaoPass(t)})),p.add(i,"ssaoEnabled",i.ssaoEnabled).name("SSAO Enabled").onChange((t=>{e.enableSsaoPass(t)})),p.add(i,"outlineEnabled",i.outlineEnabled).name("OutlinePass Enabled").onChange((t=>{e.enableOutlinePass(t)})),p.add(i,"ssaaEnabled",i.ssaaEnabled).name("SSAA Enabled").onChange((t=>{e.enableSsaaPass(t)})),p.add(i,"bloomEnabled",i.bloomEnabled).name("Bloom Enabled").onChange((t=>{e.enableBloomPass(t)})),p.add(i,"unrealBloomEnabled",i.unrealBloomEnabled).name("Unreal Bloom Enabled").onChange((t=>{e.enableUnrealBloomPass(t)}))}setExplodeMode(e,t=!1){!this.viewer||!this.viewer.scene||!this.viewer.loadedModels||!this.exploderDict||(e?yn.explodeObjects(this.viewer.scene,this.exploderDict,Object.values(this.viewer.loadedModels).map((e=>e.id)),t):yn.unexplodeObjects(this.viewer.scene,this.exploderDict||{}))}open(){this.gui&&this.gui.open()}close(){this.gui&&this.gui.close()}beforeDestroy(){this.viewer=void 0,this.gui&&this.gui.destroy(),this.gui=void 0,this.exploderDict=[]}},G3=class{constructor(){this.vertexShader="\n varying vec2 vUv;\n void main( void ) {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position,1.0);\n }",this.fragmentShader="\n uniform vec3 keyColor;\n uniform float similarity;\n uniform float smoothness;\n varying vec2 vUv;\n uniform sampler2D map;\n void main() {\n vec4 videoColor = texture2D(map, vUv);\n\n float Y1 = 0.299 * keyColor.r + 0.587 * keyColor.g + 0.114 * keyColor.b;\n float Cr1 = keyColor.r - Y1;\n float Cb1 = keyColor.b - Y1;\n \n float Y2 = 0.299 * videoColor.r + 0.587 * videoColor.g + 0.114 * videoColor.b;\n float Cr2 = videoColor.r - Y2; \n float Cb2 = videoColor.b - Y2; \n \n float blend = smoothstep(similarity, similarity + smoothness, distance(vec2(Cr2, Cb2), vec2(Cr1, Cb1)));\n gl_FragColor = vec4(videoColor.rgb, videoColor.a * blend); \n }";let e=document.createElement("video");this.webcam=e;navigator.mediaDevices.getUserMedia({video:{width:600,height:400}}).then((t=>{e.srcObject=t,e.onloadedmetadata=()=>{e.setAttribute("autoplay","true"),e.setAttribute("playsinline","true"),e.play()}})).catch((function(e){alert(e.name+": "+e.message)})),this.webcamCanvas=document.createElement("canvas");let t=this.webcamCanvas.getContext("2d");this.canvasCtx=t,t.fillStyle="#000000",t.fillRect(0,0,this.webcamCanvas.width,this.webcamCanvas.height);let i=new Bi(this.webcamCanvas);this.webcamTexture=i,i.minFilter=li,i.magFilter=li,this.shaderMaterial=new Yt({transparent:!0,uniforms:{map:{value:i},keyColor:{value:[0,1,0]},similarity:{value:.3},smoothness:{value:0}},vertexShader:this.vertexShader,fragmentShader:this.fragmentShader})}getShaderMaterial(){return this.shaderMaterial}createWebCamPlane(e=5,t=4){let i=new is(e,t);return new rt(i,this.shaderMaterial)}animate(){this.webcam.readyState===this.webcam.HAVE_ENOUGH_DATA&&(this.canvasCtx.drawImage(this.webcam,0,0,this.webcamCanvas.width,this.webcamCanvas.height),this.webcamTexture.needsUpdate=!0)}},lAe=new A,cAe=new qi,uAe=class extends em{constructor(e,t){var i;super(e),this.name="BimViewer",this.timer=Date.now(),this.selectedObject=void 0,this.sceneBackgroundColor=new je(15463159),this.loadedModels={},this.loaded3dTiles={},this.composerRenderEnabled=!0,this.composerEnabled=!1,this.savedMaterialsForOpacity=[],this.raf=new fT,this.clock=new Nl,this.renderEnabled=!0,this.isFrustumInsectChecking=!1,this.lastFrameExecuteTime=Date.now(),this.maxFps=60,this.settings=uT,this.jobCount=0,this.twoDModelCount=0,this.bbox=new Dt,this.onResize=()=>{var e;let t=null==(e=this.renderer)?void 0:e.domElement;t&&t.parentElement&&this.resize(t.parentElement.clientWidth,t.parentElement.clientHeight)},this.onKeyDown=e=>{let t=this.camera,i=this.controls;if(!t||!i)return;let r=this.settings.keyboard.sensitivity||3,n=i.getPosition(new A),s=i.getTarget(new A),a=s.clone();if("ArrowLeft"===e.code||"ArrowRight"===e.code){let t=Math.PI*r/180;"ArrowLeft"===e.code&&(t=-t),a.x=(s.x-n.x)*Math.cos(t)-(s.z-n.z)*Math.sin(t)+n.x,a.z=(s.z-n.z)*Math.cos(t)+(s.x-n.x)*Math.sin(t)+n.z,i.setTarget(a.x,a.y,a.z)}else if("ArrowUp"===e.code||"ArrowDown"===e.code){let t=Math.PI*r/180,o=new A(s.x-n.x,s.y-n.y,s.z-n.z).length(),l=s.y-n.y;"ArrowDown"===e.code&&(t=-t);let h=Math.asin(l/o)+t;if(h<-Math.PI/2||h>Math.PI/2)return;let u=Math.sin(h)*o;a.y=s.y+(u-l),i.setTarget(a.x,a.y,a.z)}else if("KeyW"===e.code){let e=.01*r,a=n.distanceTo(s);if(a<10*t.near){let e=i.getTarget(new A).lerp(n,-t.near/a);i.setTarget(e.x,e.y,e.z)}n.lerp(s,e),i.setLookAt(n.x,n.y,n.z,s.x,s.y,s.z)}else if("KeyS"===e.code){let e=.01*r;n.lerp(s,-e),i.setLookAt(n.x,n.y,n.z,s.x,s.y,s.z,!1)}else if("KeyF"===e.code)this.flyToSelectedObject();else if("KeyT"===e.code){let e=this.getIntersections();if(e.length>0){let r=e.find((e=>{let t=e.object;return t.visible&&t instanceof rt}));if(r&&r.point&&this.camera&&this.controls){let e=this.camera.position,n=r.point,s=i.getTarget(new A),a=e.distanceTo(n);if(a>t.near&&a{this.renderEnabled=!0,this.raf&&(this.timeoutSymbol&&this.raf.clearTimeout(this.timeoutSymbol),this.timeoutSymbol=this.raf.setTimeout((()=>{this.renderEnabled=!1,this.composerRenderEnabled=!0}),e))},this.applyOptionsAndAddToScene=(e,t,i)=>{ie.info(`[BimViewer] '${e}' is loaded in ${(Date.now()-this.timer)/1e3}s, adding to scene...`),this.timer=Date.now();let r=i.src&&i.src.toLowerCase();if(r&&r.endsWith("dxf")&&this.twoDModelCount++,i.matrix&&16===i.matrix.length){let e=new Be;e.elements=i.matrix,t.applyMatrix4(e)}else{let e=i.position||[0,0,0],r=i.rotation||[0,0,0],n=i.scale||[1,1,1];t.position.set(e[0],e[1],e[2]),t.rotation.set(r[0]*Math.PI/180,r[1]*Math.PI/180,r[2]*Math.PI/180),t.scale.set(n[0],n[1],n[2])}t.matrixAutoUpdate=!1,t.updateMatrix(),t.traverse((e=>{e.matrixAutoUpdate&&(e.matrixAutoUpdate=!1,e.updateMatrix())}));let n=i.instantiate,s=i.merge;n?setTimeout((()=>{this.instantiate(t),setTimeout((()=>{s&&this.merge(t),this.addLoadedModelToScene(t,i)}),0)}),0):s?setTimeout((()=>{this.merge(t),setTimeout((()=>this.addLoadedModelToScene(t,i)),0)}),0):this.addLoadedModelToScene(t,i)},this.onAnchorPointerDown=e=>{var t,i;null==(t=this.controls)||!t.enableRotate||!this.renderer||null!=(i=this.sectionManager)&&i.isSectionActive()||this.setOrbitPoint(e)},this.onAnchorPointerUp=()=>{this.anchor&&(this.anchor.className="anchor")},this.viewerCfg=Br(Br({},pCe),e),ie.info("[BimViewer]","viewerCfg:",this.viewerCfg),this.settings=uT,this.cameraCfg=t,this.cameraCfg&&this.cameraCfg.near&&(this.settings.camera.near=this.cameraCfg.near),this.cameraCfg&&this.cameraCfg.far&&(this.settings.camera.far=this.cameraCfg.far),this.increaseJobCount(),this.init(),this.animate(),this.renderer&&(null==(i=this.viewerContainer)||i.append(this.renderer.domElement)),this.decreaseJobCount(),ie.info(`[BimViewer] Initialized in ${(Date.now()-this.timer)/1e3}s`)}init(){let e=this.viewerCfg;this.initThree(),Ii.isBrowser&&!e.context&&this.initDom(),this.initEvents(),this.initControls()}initThree(){this.initScene(),this.initRenderer(),this.initCamera(),this.initLights()}initDom(){let e=this.viewerCfg;this.initSpinner(),!0===e.enableDatGui&&this.initDatGui(),this.initOthers(),!0===e.enableAxisGizmo&&(this.axes=this.initAxes()),!0===e.enableStats&&(this.stats=this.initStats()),e.enableToolbar&&(this.toolbar=this.initToolbar()),e.enableBottomBar&&(this.bottomBar=this.initBottomBar()),e.enableNavCube&&(this.navCube=this.initNavCube()),e.enableContextMenu&&(this.contextMenu=this.initContextMenu())}initScene(){this.scene=new Nn,this.scene.matrixAutoUpdate=!1}initRenderer(){this.renderer=new Ll({antialias:!0,preserveDrawingBuffer:!0}),this.renderer.setPixelRatio(window.devicePixelRatio),this.renderer.setSize(this.width,this.height),this.renderer.outputEncoding=gr,this.renderer.toneMappingExposure=1,this.renderer.physicallyCorrectLights=!0,this.renderer.setClearColor(11119017,1),this.renderer.shadowMap.enabled=!0,this.renderer.shadowMap.type=ky,_t.printGpuInfo(this.renderer.getContext()),this.pmremGenerator=new Ip(this.renderer),this.pmremGenerator.compileEquirectangularShader(),this.enableOverlayRenderer&&(this.overlayRender=new wr(this)),this.setEnvironmentFromDataArray()}initCamera(){this.scene&&(this.perspectiveCamera=new kr(45,this.width/this.height,this.settings.camera.near,this.settings.camera.far),this.perspectiveCamera.layers.enable(11),this.perspectiveCamera.position.set(0,100,0),this.scene.add(this.perspectiveCamera),this.camera=this.perspectiveCamera)}initControls(e=!1){if(!this.renderer)return;Ii.printDeviceInfo();let t,i=e?this.orthoCamera:this.perspectiveCamera;i&&this.inputManager&&((!this.perspectiveCameraControls||!this.orthoCameraConrols)&&(t=new Jl(i,this.inputManager),t.dollySpeed=.1,t.dollyToCursor=!0,t.enabled=!0,t.keyTruckSpeed=10,t.restThreshold=0,t.keys={left:"KeyD",up:"KeyE",right:"KeyA",bottom:"KeyQ"},t.listenToKeyEvents(),t.update(0)),t&&(e?(this.orthoCameraConrols=t,t.minZoom=3):(this.perspectiveCameraControls=t,this.bbox&&(t.minDistance=.1,t.maxDistance=3*this.bbox.getSize(new A).length())),this.controls=t))}initRotateToCursor(){this.anchor=this.createAnchor()}initLights(){if(!this.scene)return;let e=16777215,t=new ta(e,1.5);t.name="sun",t.castShadow=!0,t.position.set(-2,2,4),t.shadow.autoUpdate=!1,t.shadow.mapSize.width=1024,t.shadow.mapSize.height=1024,this.directionalLight=t,this.scene.add(t),this.scene.add(t.target),this.directionalLightHelper=new Rx(this.directionalLight),this.directionalLightHelper.traverse((e=>{e.layers.set(11)})),this.directionalLightHelper.visible=!1,this.scene.add(this.directionalLightHelper),this.shadowCameraHelper=new Mx(this.directionalLight.shadow.camera),this.shadowCameraHelper.layers.set(11),this.shadowCameraHelper.visible=!1,this.scene.add(this.shadowCameraHelper),this.ambientLight=new Pl(3158064),this.hemisphereLight=new hf(e,14540253,2),this.hemisphereLight.position.set(0,300,0),this.scene.add(this.ambientLight),this.scene.add(this.hemisphereLight)}initEvents(){if(!this.renderer)return;let e=new w0(this.renderer.domElement);this.inputManager=e;let t,i=!1,r=!1;e.addEventListener("pointerdown",(e=>{r=!1,i=!0,0===e.button&&this.onAnchorPointerDown(e)})),e.addEventListener("pointermove",(()=>{i&&(r=!0)})),e.addEventListener("pointerup",(()=>{i=!1,this.onAnchorPointerUp()})),e.addEventListener("click",(e=>{var i;r?r=!1:(t&&clearTimeout(t),t=setTimeout((()=>{if(0===e.button)this.handleMouseClick(e)}),300),(!this.selectedObject||this.selectedObject&&this.selectedObject instanceof sr)&&(null==(i=this.contextMenu)||i.hide()))})),e.addEventListener("dblclick",(e=>{var i,n;!r&&null!=(i=this.sectionManager)&&i.isSectionActive()&&null!=(n=this.measurementManager)&&n.isMeasurementActive()||(t&&clearTimeout(t),this.handleMouseClick(e),this.flyToSelectedObject(),this.enableRender())})),e.addEventListener("keydown",(e=>{this.onKeyDown(e)})),e.addEventListener("contextmenu",(e=>{r||this.handleRightClick(e)})),e.addEventListener("resize",this.onResize),this.initRotateToCursor(),this.raycaster=new Lc}initDatGui(){this.datGui=new k3(this),this.datGui.close()}initSpinner(){var e;if(!this.viewerCfg.enableSpinner)return;let t=document.createElement("div");t.classList.add("bim-viewer-spinner");let i=document.createElement("div");i.classList.add(fo,"icon-loading"),t.append(i),null==(e=this.widgetContainer)||e.appendChild(t),this.spinner=t,this.setSpinnerVisibility(this.jobCount>0)}initOthers(){if(!this.scene||!this.renderer||!this.camera)return;let e=this.datGui&&this.datGui.controls;e&&(e.showGroundGrid&&(this.groundGrid=ia.createGroundGrid(),this.scene.add(this.groundGrid)),e.showGrassGround&&ht(this,null,(function*(){this.grassGround=yield ia.createGrassGround(),this.scene&&this.scene.add(this.grassGround),this.enableRender()})),e.webcam&&this.enableWebCam(),this.composerEnabled=e.composerEnabled,this.composerEnabled&&(this.enableComposer(!0),this.enableRenderPass(e.renderPassEnabled),this.enableFxaaPass(e.fxaaEnabled),this.enableSaoPass(e.saoEnabled),this.enableSsaoPass(e.ssaoEnabled),this.enableOutlinePass(e.outlineEnabled),this.enableSsaaPass(e.ssaaEnabled),this.enableBloomPass(e.bloomEnabled),this.enableUnrealBloomPass(e.unrealBloomEnabled))),this.renderer.domElement.style.outlineWidth="0"}initNavCube(){var e;let t=document.createElement("div");t.id="navCube";let i=new t3;return i.renderer&&(t.appendChild(i.renderer.domElement),i.setHostViewer(this)),null==(e=this.widgetContainer)||e.appendChild(t),i}initAxes(){var e,t;let i=document.createElement("div");i.classList.add("axesRenderer");let r=new If(i,this.camera);return null==(e=this.widgetContainer)||e.append(i),this.axesInScene=new lT(!1),null==(t=this.scene)||t.add(this.axesInScene),r}initStats(){var e;let t=w3();t.setMode(0);let i=document.createElement("div");return i.classList.add("statsOutput"),i.appendChild(t.domElement),null==(e=this.widgetContainer)||e.append(i),t}initContextMenu(){let e=new P3({items:BCe,context:{bimViewer:this,toolbar:this.toolbar,section:this.section},container:this.widgetContainer});return window.oncontextmenu=e=>e.preventDefault(),e}initToolbar(){let e=this.viewerCfg;return new bh(this,(0,um.merge)({},cCe,e.toolbarMenuConfig))}initBottomBar(){return new am(this)}get has2dModel(){return this.twoDModelCount>0}showContextMenu(e){if(!this.contextMenu||!this.widgetContainer)return;let t=this.getAllIntersections(e);ie.debug("[BimViewer] showContextMenu intersections = ",t);let i,r=(0,um.find)(t,(e=>{let t=e.object;return t instanceof rt&&t.visible})),n=this.contextMenu.context,s=null==r?void 0:r.instanceId,a=null==r?void 0:r.faceIndex;a&&(i=Yi.getBatchIdByFaceIndex(null==r?void 0:r.object,a)),this.contextMenu.context=Cn(Br({},n),{hit:null==r?void 0:r.object,instanceId:s,batchId:i});let{x:o,y:l}=e;this.contextMenu.show(o,l)}handleRightClick(e){this.showContextMenu(e)}sycnCameraPosition(e,t){let i=e.position;if(t.position.set(i.x,i.y,i.z),this.scene){let e=this.scene.position;t.lookAt(e)}}sycnControls(e,t){let i=e.getTarget(new A),r=e.getPosition(new A);t.setPosition(r.x,r.y,r.z),t.setTarget(i.x,i.y,i.z)}setToOrthographicCamera(e=!1){var t;if(!this.scene||!this.controls)return;let i=this.perspectiveCamera,r=this.perspectiveCameraControls,n=this.orthoCamera,s=this.orthoCameraConrols;e?(n||(n=new ki(-this.width/2,this.width/2,this.height/2,-this.height/2,this.settings.camera.near,this.settings.camera.far),n.layers.enable(11),n.position.set(0,100,0),n.zoom=10,n.updateProjectionMatrix(),this.scene&&this.scene.add(n),this.orthoCamera=n),s||(this.initControls(!0),s=this.orthoCameraConrols),i&&(this.sycnCameraPosition(i,n),n.zoom=10,n.updateProjectionMatrix()),r&&s&&i&&this.sycnControls(r,s),this.camera=n,this.controls=s):(i&&n&&this.sycnCameraPosition(n,i),r&&s&&n&&this.sycnControls(s,r),this.camera=i,this.controls=r),null==(t=this.axes)||t.setHostCamera(this.camera),this.resize(this.width,this.height),this.dispatchEvent("CameraChanged")}animate(){var e,t,i;this.requestAnimationFrameHandle=requestAnimationFrame(this.animate.bind(this));let r=this.clock.getDelta(),n=this.controls&&this.controls.update(r);if(this.maxFps>0){if(Date.now()-this.lastFrameExecuteTime<1e3/this.maxFps)return;this.lastFrameExecuteTime=Date.now()}this.webcam&&this.webcam.animate(),this.scene&&this.camera&&(this.renderEnabled||n)&&(this.update3dTiles(),null==(e=this.renderer)||e.render(this.scene,this.camera),this.dispatchEvent("RenderAfter")),this.composerRenderEnabled&&this.composer&&this.composerEnabled&&(this.composer.render(),this.composerRenderEnabled=!1),this.frustrumCullingByModelBBox(),null==(t=this.stats)||t.update(),null==(i=this.bottomBar)||i.update()}update3dTiles(){if(!this.camera)return;let e=Object.values(this.loaded3dTiles);0!==e.length&&(this.camera.updateMatrixWorld(),e.forEach((e=>{e.renderer.update()})))}frustrumCullingByModelBBox(){let e=new ea,t=new Be;this.isFrustumInsectChecking=!0,this.camera&&(t.multiplyMatrices(this.camera.projectionMatrix,this.camera.matrixWorldInverse),e.setFromProjectionMatrix(t),Object.values(this.loadedModels).forEach((t=>{let i=this.scene&&this.scene.getObjectById(t.id),r=t.bbox;i&&r&&this.scene&&(void 0===i.userData._visible&&(i.userData._visible=!0,Object.defineProperties(i,{visible:{set:e=>{i.userData._visible=e,this.isFrustumInsectChecking||(i.userData.userConfigVisibility=!0)},get:()=>i.userData._visible}})),void 0===i.userData.userConfigVisibility&&(r.geometry.computeBoundingBox(),r.geometry.boundingBox&&(i.visible=e.intersectsBox(r.geometry.boundingBox))))})),Object.values(this.loaded3dTiles).forEach((t=>{let i=t.renderer.group;i&&!t.bbox.isEmpty()&&this.scene&&(void 0===i.userData._visible&&(i.userData._visible=!0,Object.defineProperties(i,{visible:{set:e=>{i.userData._visible=e,this.isFrustumInsectChecking||(i.userData.userConfigVisibility=!0)},get:()=>i.userData._visible}})),void 0===i.userData.userConfigVisibility&&(i.visible=e.intersectsBox(t.bbox)))}))),this.isFrustumInsectChecking=!1}destroy(){var e,t,i,r;null==(e=this.inputManager)||e.removeEventListener(),this.datGui&&this.datGui.gui&&(this.datGui.beforeDestroy(),this.datGui=void 0);let n=this.webcamPlane;this.scene&&n&&(this.scene.remove(n),n.geometry.dispose(),n.material.dispose(),this.webcamPlane=void 0),this.webcam=void 0,this.composer=void 0,this.renderPass=void 0,this.effectFxaaPass=void 0,this.saoPass=void 0,this.ssaoPass=void 0,this.outlinePass=void 0,this.ambientLight=void 0,this.directionalLight=void 0,this.hemisphereLight=void 0,this.directionalLightHelper&&(this.directionalLightHelper.dispose(),this.directionalLightHelper=void 0),this.controls&&(this.disposeRotateToCursor(),this.controls.dispose(),this.controls=void 0),this.perspectiveCameraControls&&(this.perspectiveCameraControls.dispose(),this.perspectiveCameraControls=void 0),this.shadowCameraHelper&&(this.shadowCameraHelper.dispose(),this.shadowCameraHelper=void 0),this.stats=void 0,this.raycaster=void 0,this.selectedObject=void 0,this.groundGrid&&(this.groundGrid.geometry.dispose(),this.groundGrid.material.dispose(),this.groundGrid.clear(),this.groundGrid=void 0),this.grassGround&&(this.grassGround.geometry.dispose(),this.grassGround.material.dispose(),this.grassGround.clear(),this.grassGround=void 0),this.skyOfGradientRamp&&(this.skyOfGradientRamp.geometry.dispose(),this.skyOfGradientRamp.material.dispose(),this.skyOfGradientRamp.clear(),this.skyOfGradientRamp=void 0),this.savedMaterialsForOpacity=void 0,this.section=void 0,this.sectionType=void 0,Object.keys(this.loadedModels).forEach((e=>{delete this.loadedModels[e]})),Object.values(this.loaded3dTiles).forEach((e=>{e.renderer.dispose()})),this.loaded3dTiles={},this.perspectiveCamera=void 0,this.perspectiveCameraControls=void 0,this.raf&&(this.timeoutSymbol&&this.raf.clearTimeout(this.timeoutSymbol),this.raf=void 0),this.contextMenu&&(this.contextMenu.destroy(),this.contextMenu=void 0),this.navCube&&(this.navCube.dispose(),this.navCube=void 0),this.axes&&(this.axes.dispose(),this.axes=void 0),this.axesInScene&&(this.axesInScene.clear(),this.axesInScene=void 0),this.toolbar&&(this.toolbar.destroy(),this.toolbar=void 0),this.spinner&&(this.spinner.remove(),this.spinner=void 0),this.bottomBar=void 0,this.pmremGenerator&&(this.pmremGenerator.dispose(),this.pmremGenerator=void 0),null==(t=this.measurementManager)||t.destroy(),this.measurementManager=void 0,null==(i=this.zoomToRectHelper)||i.destroy(),this.zoomToRectHelper=void 0,null==(r=this.sectionManager)||r.destroy(),this.sectionManager=void 0,super.destroy()}loadLocalModel(e,t,i,r){return ht(this,null,(function*(){let n;this.timer=Date.now(),this.increaseJobCount();try{n=yield new Jc(i).loadLocalModel(e,t.src,r)}catch(e){let i=`Error loading ${t.src}`;return ie.error(i,e),Promise.reject(i)}finally{this.decreaseJobCount()}return n?(this.applyOptionsAndAddToScene(e,n,t),Promise.resolve()):Promise.reject()}))}loadModel(e,t){return ht(this,null,(function*(){let i;this.timer=Date.now(),this.increaseJobCount();try{i=yield(new Jc).loadModel(e.src,e.fileFormat,t)}catch(t){let i=`Error loading ${e.src}`;return ie.error(i,t),Promise.reject(i)}finally{this.decreaseJobCount()}return i?(this.applyOptionsAndAddToScene(e.src,i,e),Promise.resolve()):Promise.reject()}))}load3dTiles(e){return ht(this,null,(function*(){var t;this.timer=Date.now(),this.increaseJobCount();let i=new Y_(e.src),r=new Dt,n=yield new Promise(((t,n)=>{i.onLoadTileSet=()=>{i.getBounds(r)||(i.getBoundingSphere(cAe)?cAe.getBoundingBox(r):(ie.warn(`[BimViewer] Can't get the correct bounding box of 3dTiles '${e.src}'!`),n())),ie.debug(r),i.onLoadTileSet=null;let s=i.group;ie.debug(s),t(s)},i.onLoadModel=e=>{e.traverse((e=>{e.matrixAutoUpdate&&(e.matrixAutoUpdate=!1,e.updateMatrix()),e.isMesh&&(e.castShadow=!0,e.receiveShadow=!0)})),e.updateWorldMatrix(!1,!0),this.updateDirectionalLightShadow(),this.enableRender()},i.setCamera(this.camera),i.setResolutionFromRenderer(this.camera,this.renderer),i.update()}));if(n){let s=Date.now(),a=e.modelId||e.src;if(this.loaded3dTiles[a]){let e=1;for(;this.loaded3dTiles[`${a}_${e}`];)e++;a=`${a}_${e}`,ie.warn(`[BimViewer] 3dTiles '${a}' is loaded more than once!`)}if(this.loaded3dTiles[a]={id:n.id,bbox:r,renderer:i},e.matrix&&16===e.matrix.length){let t=new Be;t.elements=e.matrix,n.applyMatrix4(t)}else{let t=e.position||[0,0,0],i=e.rotation||[0,0,0],r=e.scale||[1,1,1];n.position.set(t[0],t[1],t[2]),n.rotation.set(i[0]*Math.PI/180,i[1]*Math.PI/180,i[2]*Math.PI/180),n.scale.set(r[0],r[1],r[2])}if(n.matrixAutoUpdate=!1,n.updateMatrix(),n.updateMatrixWorld(!0),null==(t=this.scene)||t.add(n),r.applyMatrix4(n.matrix),this.computeBoundingBox(),this.tryAdjustDirectionalLight(),0===Object.keys(this.loadedModels).length&&1===Object.keys(this.loaded3dTiles).length){let e=this.datGui&&this.datGui.controls;this.regenSkyOfGradientRamp(),e&&e.showGroundGrid&&this.regenGroundGrid(),this.tryAdjustCameraNearAndFar(),this.goToHomeView()}return ie.info(`[BimViewer] Added 3dTiles '${e.src}' to scene in ${(Date.now()-s)/1e3}s`),this.enableRender(),this.decreaseJobCount(),Promise.resolve()}return this.decreaseJobCount(),Promise.reject()}))}addLoadedModelToScene(e,t){if(!this.scene)return;if(t.merge){let t=Date.now();rE.createMeshBvhAsync([e],{saveOriginalIndex:!0}),ie.info(`[BimViewer] Creates mesh bvh cost ${(Date.now()-t)/1e3}s`)}e.traverse((e=>{e.isMesh&&(e.castShadow=!0,e.receiveShadow=!0)})),this.scene.add(e);let i=new Fg(e);i.name="BIM_VIEWER_BOX_HELPER",i.visible=!1,i.matrixAutoUpdate=!1;let r=t.modelId||t.src;if(this.loadedModels[r]){let e=1;for(;this.loadedModels[`${r}_${e}`];)e++;r=`${r}_${e}`,ie.warn(`[BimViewer] Model '${r}' is loaded more than once!`)}this.loadedModels[r]={id:e.id,bbox:i},this.computeBoundingBox(),this.tryAdjustDirectionalLight();let n=Object.values(this.loadedModels).map((e=>e.id));if(Object.values(this.loaded3dTiles).forEach((e=>n.push(e.id))),!n||n.length<=1){if(this.has2dModel)this.setToOrthographicCamera(!0),this.skyOfGradientRamp&&this.scene.remove(this.skyOfGradientRamp);else{let e=this.datGui&&this.datGui.controls;this.regenSkyOfGradientRamp(),e&&e.showGroundGrid&&this.regenGroundGrid()}this.tryAdjustCameraNearAndFar(),this.goToHomeView()}this.scene.add(i),t.edges&&ti.addOutlines(e),ie.info(`[BimViewer] Added '${t.src}' to scene in ${(Date.now()-this.timer)/1e3}s`),this.enableRender(),this.decreaseJobCount()}addOrRemoveObjectOpacity(e=!0,t=.3,i,r){if(this.savedMaterialsForOpacity||(this.savedMaterialsForOpacity=[]),!this.scene)return;let n=this.scene,s=[],a=Object.values(this.loadedModels).map((e=>e.id));Object.values(this.loaded3dTiles).forEach((e=>a.push(e.id))),a.forEach((a=>{if(e){this.savedMaterialsForOpacity&&this.savedMaterialsForOpacity.length>0&&ti.revertObjectOpacityById(n,a,this.savedMaterialsForOpacity);let e=ti.setObjectOpacityById(n,a,t,i,r);s.push(...e)}else this.savedMaterialsForOpacity&&ti.revertObjectOpacityById(n,a,this.savedMaterialsForOpacity)})),this.savedMaterialsForOpacity=e?s:[],this.enableRender()}hasTransparentObject(){return!!(this.savedMaterialsForOpacity&&this.savedMaterialsForOpacity.length>0)}showVertexNormals(e,t=.1){var i,r,n;e?(this.vertexNormalsHelpers||(this.vertexNormalsHelpers=new ur),null==(i=this.scene)||i.traverseVisible((e=>{var i;if(e instanceof rt&&!["SKYBOX","GROUND_GRID","GRASS_GROUND","BIM_VIEWER_BOX_HELPER"].includes(e.name)){if(!e.geometry.attributes.normal)return;let r=new S3(e,t,16711680);null==(i=this.vertexNormalsHelpers)||i.add(r)}})),null==(r=this.scene)||r.add(this.vertexNormalsHelpers)):this.vertexNormalsHelpers&&(null==(n=this.scene)||n.remove(this.vertexNormalsHelpers),this.vertexNormalsHelpers=void 0)}resize(e,t){let i=this.camera;i&&(this.width=e||window.innerWidth,this.height=t||window.innerHeight,i instanceof kr?i.aspect=this.width/this.height:i instanceof ki&&(i.left=-this.width/2,i.right=this.width/2,i.top=this.height/2,i.bottom=-this.height/2),i.updateProjectionMatrix(),this.renderer&&this.renderer.setSize(this.width,this.height),this.composer&&this.composer.setSize(this.width,this.height),this.effectFxaaPass&&this.effectFxaaPass.uniforms.resolution.value.set(1/this.width,1/this.height),this.overlayRender&&this.overlayRender.setSize(this.width,this.height)),this.enableRender()}getRaycaster(){return this.raycaster}getRaycastableObjectsByMouse(e){let t=[];if(!(this.raycaster&&this.camera&&this.scene&&e&&this.viewerContainer))return t;let i=new le(e.x,e.y),r=Ai.screenPoint2NdcPoint(i,this.camera,this.viewerContainer);return this.camera.updateMatrixWorld(),this.raycaster.setFromCamera(r,this.camera),t=this.getRaycastableObjects(),t}getRaycastableObjects(){let e=[];return Object.values(this.loadedModels).forEach((t=>{let i=this.scene&&this.scene.getObjectById(t.id);i&&i.visible&&e.push(i)})),Object.values(this.loaded3dTiles).forEach((t=>{let i=this.scene&&this.scene.getObjectById(t.id);i&&i.visible&&e.push(i)})),e}getIntersections(e){let t=this.getRaycastableObjectsByMouse(e);return this.raycaster&&this.raycaster.intersectObjects(t,!0)||[]}getAllIntersections(e){if(!(this.raycaster&&this.camera&&this.scene&&this.viewerContainer))return[];let t=new le(null==e?void 0:e.x,null==e?void 0:e.y),i=Ai.screenPoint2NdcPoint(t,this.camera,this.viewerContainer);this.raycaster.setFromCamera(i,this.camera);let r=this.scene.children;return this.raycaster.intersectObjects(r,!0)||[]}handleMouseClick(e){var t,i,r;if(null!=(t=this.measurementManager)&&t.isMeasurementActive()||null!=(i=this.sectionManager)&&i.isSectionActive())return;let n=Date.now(),s=this.getIntersections(e);ie.debug(`[BimViewer] getIntersections costs ${(Date.now()-n)/1e3}s`);let a,o,l=s.find((e=>{let t=e.object;return t.visible&&(!1!==t.userData.selectable||t instanceof rt)})),h=l&&l.object||void 0;if(h)if(h instanceof rn)a=l.instanceId,this.selectedObject&&this.selectedObject.id===h.id&&this.selectedObject.userData.instanceId===a&&(h=void 0);else if(Yi.isMergedMesh(h)){let e=l&&l.faceIndex||-1;e>=0?(o=Yi.getBatchIdByFaceIndex(h,e),this.selectedObject&&this.selectedObject.id===h.id&&this.selectedObject.userData.batchId===o&&(h=void 0)):h=void 0}else this.selectedObject&&this.selectedObject.id===h.id&&(h=void 0);if(s.length>0&&s[0].point){let e=null==(r=this.overlayRender)?void 0:r.getDrawablesByPosition(s[0].point,this.raycaster);e&&e.length>0&&(h=e[0])}this.selectedObject&&this.clearSelection(),h?this.selectObject(h,a,o):this.clearSelection()}selectObject(e,t,i,r=undefined){if(e instanceof Na)return this.selectedObject=e,this.selectedObject.selected=!0,void this.enableRender();if(this.selectedObject){let t=this.selectedObject.userData;if(null!=t.instanceId&&t.originalMatrix&&t.clonedMesh){this.scene&&this.scene.remove(t.clonedMesh);let i=this.selectedObject;if(i.setMatrixAt(t.instanceId,t.originalMatrix),i.instanceMatrix.needsUpdate=!0,i.updateMatrix(),delete t.instanceId,delete t.originalMatrix,e===t.clonedMesh)return t.clonedMesh.geometry.dispose(),delete t.clonedMesh,this.selectedObject=void 0,void(this.outlinePass&&(this.outlinePass.selectedObjects=[]));t.clonedMesh.geometry.dispose(),delete t.clonedMesh}else if(null!=t.batchId&&t.clonedMesh){if(this.scene&&this.scene.remove(t.clonedMesh),delete t.batchId,e===t.clonedMesh)return t.clonedMesh.geometry.dispose(),delete t.clonedMesh,this.selectedObject=void 0,void(this.outlinePass&&(this.outlinePass.selectedObjects=[]));t.clonedMesh.geometry.dispose(),delete t.clonedMesh}else if(t.originalMaterial){if(this.selectedObject.material){let e=this.selectedObject.material;Array.isArray(e)?e.forEach((e=>e.dispose())):e instanceof jr&&e.dispose()}this.selectedObject.material=t.originalMaterial,delete t.originalMaterial}this.selectedObject=void 0,this.outlinePass&&(this.outlinePass.selectedObjects=[])}if(this.scene&&e){if(e instanceof rn&&null!=t){let i=e,n=new Be,s=new Be;s.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),i.getMatrixAt(t,n),this.selectedObject=e,this.outlinePass&&(this.outlinePass.selectedObjects=[e]);let a=Ps.clonedHighlightMaterials(e,{depthTest:r});if(a){let r=new rt(i.geometry.clone(),a);r.applyMatrix4(e.matrixWorld.multiply(n)),r.matrixWorldNeedsUpdate=!0,r.name="Cloned mesh for highlighting";let o=n.clone();o.multiplyMatrices(n,s),i.setMatrixAt(t,o),i.instanceMatrix.needsUpdate=!0,i.updateMatrix(),this.selectedObject.userData.instanceId=t,this.selectedObject.userData.originalMatrix=n,this.selectedObject.userData.clonedMesh=r,this.scene.add(r)}}else if(Yi.isMergedMesh(e)&&null!=i){let t=Yi.getBatchByBatchId(e,i),n=`[BimViewer] Clicked on merged mesh(id: ${e.id}).`;n+=` Original mesh batchId: ${i}, name: ${null==t?void 0:t.name}`,ie.info(n);let s=Ps.clonedHighlightMaterials(e,{depthTest:r}),a=Yi.cloneGeometryForBatch(e,t);if(s&&a){let t=new rt(a,s);t.applyMatrix4(e.matrixWorld),t.matrixWorldNeedsUpdate=!0,t.name="Cloned mesh for highlighting",this.selectedObject=e,this.selectedObject.userData.batchId=i,this.selectedObject.userData.clonedMesh=t,this.scene.add(t)}}else{let t=Ps.clonedHighlightMaterials(e,{depthTest:r});t&&(this.selectedObject=e,this.selectedObject.userData.originalMaterial=this.selectedObject.material,this.selectedObject.material=t,this.outlinePass&&(this.outlinePass.selectedObjects=[e]))}this.enableRender()}else this.enableRender()}clearSelection(){this.selectedObject&&this.selectedObject instanceof Na?this.selectedObject.selected=!1:this.selectObject(),this.selectedObject=void 0}getBBox(){return this.bbox}flyToObjects(e){if(!e||0===e.length||!this.camera)return;let t=new A,i=new A,r=new Dt;e.forEach((e=>{let t=yn.getBoundingBox(e);r.union(t)}));let n=new A;this.camera.getWorldDirection(n),Is.getCameraPositionByBboxAndDirection(r,t,i,this.camera.projectionMatrix,n);let s=(new A).subVectors(t,i).length();if(this.controls.moveTo(t.x,t.y,t.z,!0),this.camera instanceof ki){let e=this.camera.right-this.camera.left,t=this.camera.top-this.camera.bottom,i=new A;r.getSize(i);let n=Math.min(e/i.x,t/i.y);this.controls.zoomTo(n,!0)}else this.camera instanceof kr&&this.controls.dollyTo(s,!0);this.controls.setFocalOffset(0,0,0,!0)}flyToObject(e){this.flyToObjects([e])}flyToSelectedObject(){if(!this.selectedObject)return;let e=this.selectedObject;(e instanceof rn&&e.userData.clonedMesh||Yi.isMergedMesh(e)&&e.userData.clonedMesh)&&(e=e.userData.clonedMesh),this.flyToObject(e)}flyToRandomObject(){var e,t,i;let r=Object.values(this.loadedModels).map((e=>e.id));Object.values(this.loaded3dTiles).forEach((e=>r.push(e.id)));let n=r.length;if(n<=0)return;let s=Math.floor(Math.random()*n),a=r[s];if(!(null==(e=this.scene)?void 0:e.getObjectById(a)))return;let o=[];if(null==(t=this.scene)||t.traverseVisible((e=>{(e instanceof rt||e instanceof Ir)&&!["SKYBOX","GROUND_GRID","GRASS_GROUND","BIM_VIEWER_BOX_HELPER"].includes(e.name)&&o.push(e.id)})),o.length<1)return;let l=Math.floor(Math.random()*o.length),h=null==(i=this.scene)?void 0:i.getObjectById(o[l]);h&&(ie.info(`[BimViewer] Flying to random object: ${h.name}, type: ${h.type}`),this.selectObject(h,void 0,void 0,!0),this.flyToObject(h))}flyTo(e,t){let i=this.camera,r=this.controls;if(!i||!r)return;if(e.equals(t))return void ie.error("[BimViewer] camera position and lookAt cannot be the same!");if(!_t.isVectorValid(e)||!_t.isVectorValid(t))return void ie.error("[BimViewer] invalid position or lookAt!");let n=e.distanceTo(t);ni.far&&(e=e.clone().sub(t).normalize().multiplyScalar(.9*i.far),ie.warn("[BimViewer] camera could be too far to see the object!")),r.setLookAt(e.x,e.y,e.z,t.x,t.y,t.z,!0)}viewFitAll(){var e;if(!this.scene||!this.camera)return;let t=new A,i=new A,r=yn.getVisibleObjectBoundingBox(this.scene),n=new A;null==(e=this.camera)||e.getWorldDirection(n),Is.getCameraPositionByBboxAndDirection(r,t,i,this.camera.projectionMatrix,n),this.flyTo(t,i)}goToHomeView(){let e=this.camera,t=this.cameraCfg,i=t&&_t.arrayToVector3(t.eye),r=t&&_t.arrayToVector3(t.look);if(i&&r)this.controls.setLookAt(i.x,i.y,i.z,r.x,r.y,r.z,!0),this.controls.setFocalOffset(0,0,0,!0);else if(this.scene){let t=new A,i=new A,r=new A(-1,-.5,-1);if(this.has2dModel){let e=this.bbox.max.x-this.bbox.min.x,t=this.bbox.max.y-this.bbox.min.y,i=this.bbox.max.z-this.bbox.min.z,n=Math.min(e,t,i);e-n<=0?r.set(1,0,0):t-n<=0?r.set(0,-1,0):i-n<=0&&r.set(0,0,-1)}if(Is.getCameraPositionByBboxAndDirection(this.bbox,t,i,null==e?void 0:e.projectionMatrix,r),(!this.cameraCfg||this.cameraCfg&&(!this.cameraCfg.eye||!this.cameraCfg.look))&&(this.cameraCfg={eye:t.toArray(),look:i.toArray()}),e instanceof ki){let t=this.bbox,i=t.max.x-t.min.x,r=t.max.z-t.min.z,n=e.right-e.left,s=e.top-e.bottom;e.zoom=Math.max(n,s)/Math.max(i,r),e.zoom/=2,e.updateProjectionMatrix()}t.equals(i)||this.flyTo(t,i)}}zoomToBBox(e){var t,i;let r=new A,n=new A,s=new A;if(null==(t=this.camera)||t.getWorldDirection(s),Is.getCameraPositionByBboxAndDirection(e,r,n,null==(i=this.camera)?void 0:i.projectionMatrix,s),!r.equals(n)){let t=(new A).subVectors(r,n).length();if(this.controls.moveTo(r.x,r.y,r.z,!0),this.camera instanceof ki){let t=this.camera.right-this.camera.left,i=this.camera.top-this.camera.bottom,r=new A;e.getSize(r);let n=Math.min(t/r.x,i/r.y);this.controls.zoomTo(n,!0)}else this.camera instanceof kr&&this.controls.dollyTo(t,!0);this.controls.setFocalOffset(0,0,0,!0)}}tryAdjustCameraNearAndFar(){let e=this.camera;if(!this.scene||!e)return;let t=this.bbox,i=e.near,r=e.far,n=t.max.x-t.min.x,s=t.max.y-t.min.y,a=t.max.z-t.min.z,o=Math.max(n,s,a),l=o/5,h=5*o;if(i>l||r_t.numberToString(e);ie.info(`[BimViewer] BBox's longest side is: ${t(o)}`),i>l&&(ie.warn(`[BimViewer] camera.near(${t(i)}) shouldn't bigger than ${t(l)}, will change it!`),e.near=l),re.id));if(Object.values(this.loaded3dTiles).forEach((t=>e.push(t.id))),e){let t=this.cameraCfg,i=t&&_t.arrayToVector3(t.eye),r=t&&_t.arrayToVector3(t.look),n=new Dt;if(i&&r){let e=i,t=r;n.expandByPoint(new A(e.x,e.y,e.z)),n.expandByPoint(new A(t.x,t.y,t.z))}else n=yn.getObjectsBoundingBox(this.scene,e);this.skyOfGradientRamp=$o.createSkyOfGradientRampByBoundingBox(n),this.scene.add(this.skyOfGradientRamp)}}regenGroundGrid(){if(!this.scene)return;this.groundGrid&&(this.groundGrid.geometry.dispose(),this.groundGrid.material.dispose(),this.scene.remove(this.groundGrid));let e=Object.values(this.loadedModels).map((e=>e.id));if(Object.values(this.loaded3dTiles).forEach((t=>e.push(t.id))),e){let e=this.cameraCfg,t=e&&_t.arrayToVector3(e.look);t&&(t.y=0),this.groundGrid=ia.createGroundGrid(void 0,void 0,t),this.scene.add(this.groundGrid)}}setOrbitPoint(e){let t=this.controls;if(this.camera&&this.renderer&&this.controls&&this.scene&&this.raycaster&&this.viewerContainer)if(this.selectedObject&&this.selectedObject instanceof sr){let e=(new Dt).setFromObject(this.selectedObject),i=new A;e.getCenter(i),null==t||t.setOrbitPoint(i.x,i.y,i.z);let r=Ai.worldPosition2ScreenPoint(i,this.camera,this.viewerContainer);this.setAnchorPosition(r)}else{let i=this.getIntersections(e),r=new le(e.x,e.y);if(i&&0!==i.length){let e=i[0].point;null==t||t.setOrbitPoint(e.x,e.y,e.z),this.setAnchorPosition(r),this.lastOrbPoint=i[0].point}else{let e=this.bbox.getCenter(new A);t.setOrbitPoint(e.x,e.y,e.z);let i=Ai.worldPosition2ScreenPoint(e,this.camera,this.renderer.domElement);this.setAnchorPosition(i),this.lastOrbPoint=e}}}setAnchorPosition(e){this.anchor&&(this.anchor.className="anchor active",this.anchor.style.left=`${e.x}px`,this.anchor.style.top=`${e.y}px`)}createAnchor(){var e;let t=document.createElement("div");return t.className="anchor",null==(e=this.viewerContainer)||e.appendChild(t),t}disposeAnchor(){var e;this.anchor&&(null==(e=this.viewerContainer)||e.removeChild(this.anchor),this.anchor=void 0)}disposeRotateToCursor(){this.disposeAnchor()}enableComposer(e){!this.scene||!this.camera||!this.renderer||(this.composerEnabled=e,e&&!this.composer&&(this.composer=new M3(this.renderer)),this.enableRender())}enableRenderPass(e){if(this.scene&&this.camera&&this.renderer&&this.composer){if(e&&!this.renderPass){let e=new D3(this.scene,this.camera);e.setSize(this.width,this.height),this.composer.addPass(e),this.renderPass=e}this.renderPass&&(this.renderPass.enabled=e),this.enableRender()}}enableFxaaPass(e){if(this.scene&&this.camera&&this.renderer&&this.composer){if(e&&!this.effectFxaaPass){let e=new ME(LCe);e.uniforms.resolution.value.set(1/this.width,1/this.height),e.setSize(this.width,this.height),e.renderToScreen=!0,this.composer.addPass(e),this.effectFxaaPass=e}this.effectFxaaPass&&(this.effectFxaaPass.enabled=e),this.enableRender()}}enableSaoPass(e){if(this.scene&&this.camera&&this.renderer&&this.composer){if(e&&!this.saoPass){let e=new eS(this.scene,this.camera,!1,!0,new le(1/this.width,1/this.height));e.setSize(this.width,this.height),e.params.output=0,e.params.saoBias=.5,e.params.saoIntensity=5e-5,e.params.saoScale=5,e.params.saoKernelRadius=40,e.params.saoMinResolution=0,this.composer.addPass(e),this.saoPass=e}this.saoPass&&(this.saoPass.enabled=e),this.enableRender()}}enableSsaoPass(e){if(this.scene&&this.camera&&this.renderer&&this.composer){if(e&&!this.ssaoPass){let e=new sc(this.scene,this.camera,this.width,this.height);e.kernelRadius=16,e.minDistance=.005,e.maxDistance=.1,this.composer.addPass(e),this.ssaoPass=e}this.ssaoPass&&(this.ssaoPass.enabled=e),this.enableRender()}}enableOutlinePass(e){if(this.scene&&this.camera&&this.renderer&&this.composer){if(e&&!this.outlinePass){let e=new lu(new le(this.width,this.height),this.scene,this.camera);e.edgeStrength=3,e.edgeGlow=0,e.edgeThickness=2,e.pulsePeriod=0,e.visibleEdgeColor.set(16711680),e.hiddenEdgeColor.set(16752768),this.composer.addPass(e),this.outlinePass=e}this.outlinePass&&(this.outlinePass.enabled=e),this.enableRender()}}enableSsaaPass(e){if(this.scene&&this.camera&&this.renderer&&this.composer){if(e&&!this.ssaaRenderPass){let e=new A3(this.scene,this.camera,16777215,0);this.composer.addPass(e),this.ssaaRenderPass=e}this.ssaaRenderPass&&(this.ssaaRenderPass.enabled=e),this.enableRender()}}enableBloomPass(e){if(this.scene&&this.camera&&this.renderer&&this.composer){if(e&&!this.bloomPass){let e=new Ih(1,25,4);e.renderToScreen=!0,this.composer.addPass(e),this.bloomPass=e}this.bloomPass&&(this.bloomPass.enabled=e),this.enableRender()}}enableUnrealBloomPass(e){if(this.scene&&this.camera&&this.renderer&&this.composer){if(e&&!this.unrealBloomPass){let e=new fd(new le(this.width,this.height),1,0,0);e.threshold=0,e.strength=.5,e.radius=0,this.composer.addPass(e),this.unrealBloomPass=e}this.unrealBloomPass&&(this.unrealBloomPass.enabled=e),this.enableRender()}}activateSection(e="ObjectsBoxSection"){this.inputManager&&(this.sectionType=e,this.clearSelection(),this.sectionManager||(this.sectionManager=new n3(this,this.inputManager)),this.sectionManager.activateSection(e),this.enableRender())}deactivateSection(){var e;null==(e=this.sectionManager)||e.deactivateSection(),this.enableRender()}getActiveSection(){var e;return null==(e=this.sectionManager)?void 0:e.getActiveSection()}getMeasurementManager(){return this.measurementManager}getMeasurements(){return this.inputManager?(this.measurementManager||(this.measurementManager=new nu(this,this.inputManager)),this.measurementManager.getMeasurementsData()):[]}activateMeasurement(e){this.inputManager&&(this.measurementManager||(this.measurementManager=new nu(this,this.inputManager)),this.measurementManager.activateMeasurement(e),this.clearSelection())}deactivateMeasurement(){var e;null==(e=this.measurementManager)||e.deactivateMeasurement()}setMeasurementVisibility(e,t){return!!(this.inputManager&&this.measurementManager&&e)&&this.measurementManager.setMeasurementVisibility(e,t)}clearMeasurements(){var e;null==(e=this.measurementManager)||e.clearMeasurements()}zoomToRect(){this.zoomToRectHelper||(this.zoomToRectHelper=new mE(this)),this.zoomToRectHelper.activate()}deactivateZoomRect(){var e;null==(e=this.zoomToRectHelper)||e.deactivate()}enableWebCam(){this.scene&&(this.webcam||(this.webcam=new G3),this.webcamPlane||(this.webcamPlane=this.webcam.createWebCamPlane(),this.webcamPlane.position.set(10,2,0)),this.scene.add(this.webcamPlane))}disableWebCam(){this.scene&&this.webcamPlane&&(this.webcamPlane.geometry.dispose(),this.webcamPlane.material.dispose(),this.scene.remove(this.webcamPlane))}setEnvironment(e){Hc.createEnvTexture(this.pmremGenerator,e).then((e=>{this.scene&&(this.scene.environment=e)}))}setEnvironmentFromDataArray(e){Hc.createEnvTextureFromDataArray(this.pmremGenerator,e).then((e=>{this.scene&&(this.scene.environment=e)}))}takeObjectsScreenshot(e){return ht(this,null,(function*(){return new Promise(((t,i)=>{var r;this.renderer||i("renderer is undefined"),null==(r=this.scene)||r.traverse((t=>{t instanceof rt&&((0,um.includes)(e,(0,um.get)(t.userData,"UniqueId"))?t.visible=!0:t.visible=!1)})),this.enableRender(),setTimeout((()=>{var e;t(null==(e=this.renderer)?void 0:e.domElement.toDataURL("image/png"))}),1e3)}))}))}updateRaycasterThreshold(){let e=this.camera;if(!e||!this.raycaster)return;let t=12/e.zoom,i=this.raycaster.params;i.Line?i.Line.threshold=t:i.Line={threshold:t},i.Points?i.Points.threshold=t:i.Points={threshold:t}}instantiate(e){new aA(e).instantiate()}merge(e){this.increaseJobCount();try{let t=[];e.traverse((e=>{e.geometry&&e.material&&t.push(e)})),Yi.deepMerge(t,e)}finally{this.decreaseJobCount()}}setSpinnerVisibility(e){this.spinner&&(e?this.spinner.classList.remove("hidden"):this.spinner.classList.add("hidden"))}increaseJobCount(){this.setSpinnerVisibility(++this.jobCount>0)}decreaseJobCount(){this.setSpinnerVisibility(--this.jobCount>0)}updateProjectSettings(e){this.settings=e;let t=(e,t)=>{e&&t&&(e.near=t.near,e.far=t.far,e.updateProjectionMatrix())};t(this.perspectiveCamera,this.settings.camera),t(this.orthoCamera,this.settings.camera),this.enableRender(10)}dynamicallyUpdateControllerTarget(e){let t=this.getIntersections(e);if(t.length<0)return;let i=this.camera,r=this.controls;if(!i||!r)return;let n=t.find((e=>{if(e.distancei.far)return!1;let t=e.object;return t.visible&&t instanceof rt}));if(null!=n&&n.point&&r){let e=i.position,t=r.getTarget(new A),s=n.distance,a=e.distanceTo(t),o=e.clone().lerp(t,s/a);r.setTarget(o.x,o.y,o.z)}}computeBoundingBox(){let e=new Dt;return Object.values(this.loadedModels).forEach((t=>{if(t.bbox){t.bbox.geometry.computeBoundingBox();let i=t.bbox.geometry.boundingBox;i&&!i.isEmpty()&&e.union(i)}})),Object.values(this.loaded3dTiles).forEach((t=>{t.bbox.isEmpty()||e.union(t.bbox)})),this.bbox=e,this.controls&&(this.controls.minDistance=.1,this.controls.maxDistance=3*this.bbox.getSize(new A).length()),e}},fAe=kn($l(),1),V3=class{constructor(e){this.viewer=e,this.itemList={},this.handleMouseWheel=e=>{e.preventDefault(),this.element&&(this.element.scrollLeft+=e.deltaY)},e.addEventListener("ModelLoaded",(()=>{this.init()}))}init(){var e;let t=document.createElement("div");t.classList.add("model-layout-switch-bar");let i=document.createElement("div");i.classList.add("model-layout-switch-bar-content"),i.addEventListener("wheel",this.handleMouseWheel),this.viewer.getLayoutNames().forEach(((e,t)=>{let r=this.createItem(e,t);this.itemList[e]=r,r.resetActivate=()=>{for(let e in this.itemList)this.itemList[e].resetActive()},null==i||i.appendChild(r.element)})),this.element=t,this.content=i,this.element.appendChild(this.content),null==(e=this.viewer.widgetContainer)||e.appendChild(this.element)}createItem(e,t){let i=new pV(this.viewer,e);return 0===t&&i.setActive(!0),i}destroy(){var e,t;for(let t in this.itemList){let i=this.itemList[t];i.destroy(),null==(e=this.content)||e.removeChild(i.element)}this.itemList={},this.element&&this.content&&(this.element.removeChild(this.content),this.element.removeEventListener("wheel",this.handleMouseWheel),null==(t=this.viewer.widgetContainer)||t.removeChild(this.element),this.element=void 0)}show(){this.element&&(this.element.style.display="block")}hide(){this.element&&(this.element.style.display="none")}},pV=class{constructor(e,t){this.viewer=e,this.eventBus=gE(),this.active=!1,this.element=this.createItem(t),this.eventBus.on("activechange",(e=>{this.resetActivate&&this.resetActivate(),e?(this.element.classList.add("activate"),this.viewer.activateLayout(t)):this.element.classList.remove("activate")}))}createItem(e){let t=document.createElement("div"),i=document.createElement("span");return t.classList.add("model-layout-switch-item"),t.onclick=()=>{this.active=!this.active,this.eventBus.emit("activechange",this.active)},i.innerText=e,t.appendChild(i),t}setActive(e){this.active!==e&&(this.active=e,this.eventBus.emit("activechange",e))}resetActive(){this.active=!1,this.element.classList.remove("activate")}destroy(){this.eventBus.off("activechange")}},z3=class{constructor(e){this.progresseItems=[],this.element=document.createElement("div"),this.element.classList.add("progress-bar"),e.appendChild(this.element)}setVisibility(e){this.element&&(e?this.element.classList.remove("hidden"):this.element.classList.add("hidden"))}addProgressItem(e,t){let i=this.progresseItems.find((t=>t.id===e));if(!i){let r=document.createElement("div");r.classList.add("progress-bar-item"),r.innerHTML=t||"",this.element.append(r),i={id:e,div:r},this.progresseItems.push(i)}this.setVisibility(!0)}updateProgress(e,t,i){let r=this.progresseItems.find((t=>t.id===e));if(!r)return;let n=t?`${t}`:"";t&&i&&(n+=": "),i&&(n+=`${i.toFixed(2)}%`),r.div.innerHTML=n}removeProgressItem(e){let t=this.progresseItems.find((t=>t.id===e));t&&t.div.remove(),0===this.progresseItems.length&&this.setVisibility(!1)}delayRemoveProgressItem(e,t=3e3){setTimeout((()=>{this.removeProgressItem(e)}),t)}},hS=new Be,hAe=new Be,pAe=new ea,dV=new A,dAe=class extends em{constructor(e){super(e),this.name="DxfViewer",this.CAMERA_Z_POSITION=100,this.CAMERA_MIN_ZOOM=1e-6,this.timer=Date.now(),this.loadedModels={},this.masterModelId="",this.raycaster=new Lc,this.mouseMoved=!1,this.mouseDoubleClicked=!1,this.selected=!0,this.raf=new fT,this.clock=new Nl,this.renderEnabled=!1,this.jobCount=0,this.enableHideVisuallySmallObjects=!0,this.sortedHidableObjects={},this.lastCameraZoom=1/0,this.activeLayoutName="",this.layoutInfos={},this.units=void 0,this.fpsUtils=new kC,this.onResize=()=>{var e;let t=null==(e=this.renderer)?void 0:e.domElement;t&&t.parentElement&&this.resize(t.parentElement.clientWidth,t.parentElement.clientHeight)},this.enableRender=(e=1e3)=>{this.renderEnabled=!0,this.raf&&(this.timeoutSymbol&&this.raf.clearTimeout(this.timeoutSymbol),this.timeoutSymbol=this.raf.setTimeout((()=>{this.renderEnabled=!1}),e))},this.loadingDxfCount=0,this.compareMode=!1,this.viewerCfg=e,this.increaseJobCount(),this.init(),this.animate(),this.enableRender(),this.decreaseJobCount(),ie.info(`[DxfViewer] Initialized in ${(Date.now()-this.timer)/1e3}s`)}init(){let e=this.viewerCfg;this.initThree(),Ii.isBrowser&&!e.context&&this.initDom(),this.initInputManager(),this.initEvents(),this.initControls(),this.initOthers(),this.enableSelection=e.enableSelection}initInputManager(){this.renderer&&(this.inputManager=new w0(this.renderer.domElement))}initThree(){this.initScene(),this.initRenderer(),this.initCamera()}initDom(){let e=this.viewerCfg;this.initSpinner(),this.initCSS2DRenderer(),!0===e.enableAxisGizmo&&(this.axes=this.initAxes()),!0===e.enableStats&&(this.stats=this.initStats()),e.enableToolbar&&(this.toolbar=this.initToolbar()),e.enableBottomBar&&(this.bottomBar=this.initBottomBar()),e.enableProgressBar&&(this.loadingProgressBar=this.initLoadingProgressBar()),e.enableLayoutBar&&(this.dxfLayoutBar=new V3(this))}initScene(){let e=new Nn;e.background=new je(2172976),e.matrixAutoUpdate=!1,e.matrixWorldAutoUpdate=!1,this.scene=e}initRenderer(){var e;let{context:t}=this.viewerCfg,i={context:t,antialias:!0,preserveDrawingBuffer:!0,alpha:!1,stencil:!1};!Ii.isBrowser&&t&&Object.assign(i,{context:t,canvas:Ii.creatReactNativeCanvas(t)}),t&&(this.width=t.drawingBufferWidth,this.height=t.drawingBufferHeight),this.renderer=new Ll(i),this.renderer.setClearColor(11119017,1),this.renderer.localClippingEnabled=!0,Ii.isBrowser&&(!t&&this.renderer.setPixelRatio(window.devicePixelRatio),this.renderer.domElement.classList.add("webgl-renderer"),null==(e=this.viewerContainer)||e.appendChild(this.renderer.domElement)),this.renderer.setSize(this.width,this.height),_t.printGpuInfo(this.renderer.getContext()),Er.maxFragmentUniforms=this.renderer.capabilities.maxFragmentUniforms-20,this.enableOverlayRenderer&&(this.overlayRender=new wr(this))}initCSS2DRenderer(){var e;let t=new xf;t.setSize(this.width,this.height),t.domElement.style.height="0",t.domElement.style.width="0",t.domElement.style.position="absolute",t.domElement.style.top="0",t.domElement.style.left="0",t.domElement.style.overflow="visible",t.domElement.classList.add("css2d-renderer"),null==(e=this.viewerContainer)||e.appendChild(t.domElement),this.css2dRenderer=t}initCamera(){if(!this.scene)return;let e=new ki(-this.width/2,this.width/2,this.height/2,-this.height/2,.1,1e5);e.layers.enable(10),e.position.set(0,0,this.CAMERA_Z_POSITION),e.zoom=10,e.updateProjectionMatrix(),this.scene.add(e),this.camera=e}initControls(){let e=this.camera;if(!this.inputManager||!e)return;let t=new Jl(e,this.inputManager);t.enableRotate=!1,t.enabled=!0,t.keyTruckSpeed=10,t.dollyToCursor=!0,t.dollySpeed=.5,t.truckSpeed=1,t.mouseButtons={left:et.TRUCK,middle:et.TRUCK,wheel:et.ZOOM,right:et.TRUCK},t.touches={one:et.TOUCH_TRUCK,two:et.TOUCH_ZOOM_TRUCK,three:et.NONE},t.listenToKeyEvents(),t.update(0),this.controls=t,t.addEventListener("control",this.onControlsChange(this)),t.addEventListener("controlend",this.onControlsEnd(this))}onControlsChange(e){return()=>{e.enableRender()}}onControlsEnd(e){return()=>{e.enableRender()}}initSpinner(){var e;if(!this.viewerCfg.enableSpinner)return;let t=document.createElement("div");t.classList.add("bim-viewer-spinner");let i=document.createElement("div");i.classList.add(fo,"icon-loading"),t.append(i),null==(e=this.widgetContainer)||e.appendChild(t),this.spinner=t,this.setSpinnerVisibility(this.jobCount>0)}initEvents(){if(!this.inputManager||!this.renderer)return;let e=!1,t=!1;this.inputManager.addEventListener("pointerdown",(i=>{var r;t=!1,e=!0,1===i.button&&(null==(r=this.inputManager)||r.setCursor("move"))})),this.inputManager.addEventListener("pointermove",(()=>{var i;e&&(t=!0,null==(i=this.inputManager)||i.setCursor("move"))})),this.inputManager.addEventListener("pointerup",(i=>{var r;if(e=!1,null==(r=this.inputManager)||r.setCursor("default"),t)return void(t=!1);this.handleMouseClick(i);let n={evt:i};this.selectedObject&&this.selectedObject instanceof Rn&&(n.markupData=this.selectedObject.getData()),this.selectedObject&&this.selectedObject instanceof Mi&&(n.measureData=this.selectedObject.getData()),this.dispatchEvent("MouseClicked",n)})),this.inputManager.addEventListener("keydown",(e=>{e.altKey&&"KeyR"===e.code&&this.flyToRandomObject()})),this.inputManager.addEventListener("wheel",(()=>{this.updateHidableObjectsVisibility()})),this.inputManager.addEventListener("resize",this.onResize)}initOthers(){!this.scene||!this.renderer||!this.camera||(this.renderer.domElement.style.outlineWidth="0")}initAxes(){var e;let t=document.createElement("div");t.classList.add("axesRenderer");let i=new If(t,this.camera,!0);return null==(e=this.widgetContainer)||e.append(t),i}initStats(){var e;let t=w3();t.setMode(0);let i=document.createElement("div");return i.classList.add("statsOutput"),i.appendChild(t.domElement),t.domElement.style.position="absolute",null==(e=this.widgetContainer)||e.append(i),t}showStats(){this.stats||(this.stats=this.initStats()),this.stats.showPanel(0)}hideStats(){this.stats&&this.stats.showPanel(-1)}initToolbar(){let e=this.viewerCfg;return new bh(this,(0,fAe.merge)({},hCe,e.toolbarMenuConfig))}initBottomBar(){return new am(this)}initLoadingProgressBar(){return new z3(this.widgetContainer)}showLayoutBar(){var e;null==(e=this.dxfLayoutBar)||e.show()}hideLayoutBar(){var e;null==(e=this.dxfLayoutBar)||e.hide()}animate(){var e,t,i,r,n,s;this.requestAnimationFrameHandle=requestAnimationFrame(this.animate.bind(this));let a=this.clock.getDelta(),o=null==(e=this.controls)?void 0:e.update(a);if(this.scene&&this.camera&&(this.renderEnabled||o)){if(this.updateRaycasterThreshold(),this.updateCameraZoomUniform(this.camera.zoom),Er.resolutionUniform.value.set(this.width,this.height),null==(t=this.renderer)||t.render(this.scene,this.camera),!Ii.isBrowser){let e=null==(i=this.renderer)?void 0:i.getContext();e&&e.endFrameEXP&&(e.flush(),e.endFrameEXP())}this.hotpointRoot&&this.hotpointRoot.children.length>0&&(null==(r=this.css2dRenderer)||r.render(this.scene,this.camera)),this.dispatchEvent("RenderAfter")}null==(n=this.stats)||n.update(),this.fpsUtils.update(),null==(s=this.bottomBar)||s.update()}getFps(){return this.fpsUtils.fps}is3d(){return!1}destroy(){var e,t,i,r,n,s;Er.abortJobs=!0,this.dxfLayoutBar&&(this.dxfLayoutBar.destroy(),this.dxfLayoutBar=void 0),null==(e=this.measurementManager)||e.destroy(),this.measurementManager=void 0,null==(t=this.markupManager)||t.destroy(),this.markupManager=void 0,null==(i=this.zoomToRectHelper)||i.destroy(),this.zoomToRectHelper=void 0,null==(r=this.boxSelectHelper)||r.destroy(),this.boxSelectHelper=void 0,this.sortedHidableObjects={},this.layoutInfos={},this.raycastableObjects=void 0,this.changes={},Object.keys(this.loadedModels).forEach((e=>{delete this.loadedModels[e]})),this.loadedModels={},this.css2dRenderer&&(null==(n=this.viewerContainer)||n.removeChild(this.css2dRenderer.domElement),this.css2dRenderer=void 0),this.stats=void 0,this.raycaster=void 0,this.selectedObject=void 0,this.raf&&(this.timeoutSymbol&&this.raf.clearTimeout(this.timeoutSymbol),this.raf=void 0),this.contextMenu&&(this.contextMenu.destroy(),this.contextMenu=void 0),this.axes&&(this.axes.dispose(),this.axes=void 0),this.toolbar&&(this.toolbar.destroy(),this.toolbar=void 0),this.spinner&&(this.spinner.remove(),this.spinner=void 0),this.bottomBar=void 0,this.font=void 0,null==(s=this.inputManager)||s.removeEventListener(),super.destroy()}loadModelAsync(e,t){return ht(this,null,(function*(){var i,r;this.loadingDxfCount++,this.timer=Date.now(),this.increaseJobCount();let n=e.modelId||e.src;this.masterModelId||(this.masterModelId=n);let s=e.ignorePaperSpace||this.masterModelId!==n;!1===e.ignorePaperSpace&&s&&ie.warn(`[DxfViewer] Paper space will be ignored for '${n}' although 'ignorePaperSpace' is false!`),_t.printMemory("Before loadModelAsync");let a=new Jc;a.setFont(this.font);let o=n,l=this.translate("ProgressBar.Loading"),h=e=>{var i;null==(i=this.loadingProgressBar)||i.updateProgress(o,l,e),t&&t(new ProgressEvent("LoadProgress",{loaded:e,total:100}))},u=(e,i,r)=>{var n;let s=100*e.loaded/e.total;s=s*(r-i)/100+i,null==(n=this.loadingProgressBar)||n.updateProgress(o,l,s),t&&t(new ProgressEvent("LoadProgress",{loaded:s,total:100}))};null==(i=this.loadingProgressBar)||i.addProgressItem(o),h(0);let c=this.viewerCfg,p=yield a.loadDxfDataAsync(e.src,e.modelId,(e=>u(e,0,90)),void 0,s,c.enableLocalCache).finally((()=>{this.loadingDxfCount--,0===this.loadingDxfCount&&this.font&&this.font.releaseFontData&&this.font.releaseFontData()}));if(ie.info(`[DxfViewer] Loaded '${e.src}' in ${(Date.now()-this.timer)/1e3}s, adding to scene...`),Er.abortJobs&&Promise.reject("[DxfViewer] abort load dxf"),0===p.threejsObject.children.length){let t=`[DxfViewer] Nothing was loaded from ${e.src}`;return ie.warn(t),this.decreaseJobCount(),Promise.reject(t)}let d=p.threejsObject;d.name=n;let f=this.getDxfUnits(p);if(this.masterModelId===e.modelId&&(this.units=f),ie.info(`[DxfViewer] Units of '${e.src}' is '${f}'`),f){let t=1;this.units&&f!==this.units&&(t=rG(f,this.units)),e.scale?e.scale=[e.scale[0]*t,e.scale[0]*t,e.scale[0]*t]:e.scale=[t,t,t]}if(e.matrix&&16===e.matrix.length){let t=new Be;t.elements=e.matrix,d.applyMatrix4(t)}else{let t=e.position||[0,0,0],i=e.rotation||[0,0,0],r=e.scale||[1,1,1];d.position.set(t[0],t[1],t[2]),d.rotation.set(i[0]*Math.PI/180,i[1]*Math.PI/180,i[2]*Math.PI/180),d.scale.set(r[0],r[1],r[2])}return this.addLoadedModelToScene(d,e,p),_t.printMemory("After addLoadedModelToScene"),ie.info(`[DxfViewer] Added '${e.src}' to scene in ${(Date.now()-this.timer)/1e3}s`),this.decreaseJobCount(),h(100),null==(r=this.loadingProgressBar)||r.delayRemoveProgressItem(o),this.dispatchEvent("ModelLoaded"),Promise.resolve()}))}unloadDxf(){throw new Error("Not implemented yet!")}isCompareMode(){return this.compareMode}compare(e,t,i){return ht(this,null,(function*(){var r,n,s,a,o;let{src:l,modelId:h}=e,{src:u}=t;if(this.compareMode)return Promise.reject("[DxfViewer] It is already under comparing mode!");if(this.masterModelId||Object.keys(this.loadedModels).length>0)return Promise.reject("[DxfViewer] Shouldn't load anything else before compare!");if(this.compareMode=!0,this.timer=Date.now(),this.increaseJobCount(),!this.font)return Promise.reject("[DxfViewer] Should set font first!");let c=new Er(!0);c.setFont(this.font),this.font instanceof Zc&&this.font.getFontData&&(yield this.font.getFontData());let p=l+u,d=this.translate("ProgressBar.Comparing"),f=e=>{var t;null==(t=this.loadingProgressBar)||t.updateProgress(p,d,e),i&&i(new ProgressEvent("CompareProgress",{loaded:e,total:100}))},m=(e,t,r)=>{var n;let s=100*e.loaded/e.total;s=s*(r-t)/100+t,null==(n=this.loadingProgressBar)||n.updateProgress(p,d,s),i&&i(new ProgressEvent("CompareProgress",{loaded:s,total:100}))};_t.printMemory("Before comparing"),this.masterModelId=h||l,this.loadingDxfCount+=2,null==(r=this.loadingProgressBar)||r.addProgressItem(p),f(0);let g=Date.now(),y=yield c.parse(l,(e=>m(e,0,15))),v=yield c.parse(u,(e=>m(e,15,30))),[T,x]=yield Promise.allSettled([y,v]);if("rejected"===T.status)return Promise.reject(`[DxfViewer] Failed to parse ${l}`);if("rejected"===x.status)return Promise.reject(`[DxfViewer] Failed to parse ${u}`);if(ie.info(`[DxfViewer] loadFiles in ${(Date.now()-g)/1e3}s`),Er.abortJobs)return Promise.reject("[DxfViewer] compare loadFile aborted");let b=T.value,_=x.value;g=Date.now();let E=yield new Xn(b,_).compare((e=>m(e,30,60)));if(ie.info(`[DxfViewer] Compared in ${(Date.now()-g)/1e3}s`),ie.debug("Compared results:",E),Er.abortJobs)return Promise.reject("[DxfViewer] compare change aborted");_t.printMemory("After getting the comparison results"),g=Date.now(),yield c.loadEntitiesForCompare(b,_,E,(e=>m(e,60,95))),_t.printMemory("After Creating threejs objects based on comparison result"),null==(n=this.font)||n.releaseFontData(),this.changes=E,ie.info(`[DxfViewer] Creates threejs objects based on comparison result in ${(Date.now()-g)/1e3}s`);let w=b,S=_;if(this.loadingDxfCount-=2,this.decreaseJobCount(),Object.keys(E).length||ie.info("[DxfViewer] No change found"),0===(null==(s=w.threejsObject)?void 0:s.children.length)&&0===(null==(a=S.threejsObject)?void 0:a.children.length)){let e=`[DxfViewer] Nothing was loaded from ${l} and ${u}`;return ie.warn(e),Promise.reject(e)}let I=w.threejsObject,M=S.threejsObject;return I.name=l,M.name=u,g=Date.now(),this.addLoadedModelToScene(I,Br({},e),w),_t.printMemory("After adding first loaded Model to scene"),f(95),this.addLoadedModelToScene(M,Br({},t),S),_t.printMemory("After adding second loaded Model to scene"),ie.info(`[DxfViewer] Added compared objects to scene in ${(Date.now()-g)/1e3}s`),ie.info(`[DxfViewer] The comparison between ${l}' and '${u}' is completed in ${(Date.now()-this.timer)/1e3}s !`),f(100),null==(o=this.loadingProgressBar)||o.delayRemoveProgressItem(p),Promise.resolve()}))}getEntitiesCount(){let e=0;return Object.values(this.loadedModels).forEach((t=>{var i;e+=(null==(i=t.dxfData)?void 0:i.loadedEntityCount)||0})),e}getLoadedDxfModelIds(){return Object.keys(this.loadedModels)}getLayoutNames(){let e=[];return this.getLayouts().forEach((t=>{e.push(t.layoutName)})),e}getLayouts(){let e=[],t=this.loadedModels[this.masterModelId];if(t){let i=t.dxfData,r=null==i?void 0:i.objects.LAYOUT;null==r||r.forEach((t=>{e.push(t)}))}return e}handleOverlayDxf(e){var t;let i=this.loadedModels[e];if(!i)return void ie.warn(`[DxfViewer] Can't find model for modelId '${e}'!`);this.increaseJobCount(),this.switchTransformMs(Er.MODEL_LAYOUT_NAME,e);let r=null==(t=i.dxfData)?void 0:t.threejsObject,n=null==r?void 0:r.children.find((e=>e.name===Er.MODEL_LAYOUT_NAME));n&&(n.traverse((e=>{this.addSpatialFilterSection(e,i.dxfData)})),this.calcBoundingBoxOfLayoutChild(n)),this.showLayoutObjects(this.activeLayoutName),this.decreaseJobCount()}activateLayout(e){var t,i,r;if(this.increaseJobCount(),0==e.length)return ie.warn("[DxfViewer] layout name is empty !"),void this.decreaseJobCount();if(e===this.activeLayoutName)return void this.decreaseJobCount();let n=Date.now(),s=this.camera,a=this.getLayoutByName(e);if(!a)return ie.warn(`[DxfViewer] Can't find layout of ${e} !`),void this.decreaseJobCount();let o=this.loadedModels[this.masterModelId];if(!o)return ie.warn(`[DxfViewer] Can't find master model for modelId '${this.masterModelId}'!`),void this.decreaseJobCount();if(this.raycastableObjects=void 0,this.activeLayoutName){let e=this.getActiveLayoutInfo();e.lastCameraPosition||(e.lastCameraPosition=new A),null==(t=this.camera)||t.getWorldPosition(e.lastCameraPosition),this.controls.update(0),e.lastCameraZoom=s.zoom}if(!(e=>{let t=this.layoutInfos[e];return!(null==t||!t.lastCameraZoom)})(e)){this.switchTransformMs(e,this.masterModelId);let t=this.getLayoutViewports(a),n=[];t.length>0&&(n=t[0].frozenLayerHandles);let s=e!==Er.MODEL_LAYOUT_NAME,l=null==(i=o.dxfData)?void 0:i.threejsObject,h=null==l?void 0:l.children.find((t=>t.name===e));if(h){let t=[],i=null==(r=o.dxfData)?void 0:r.layersAndThreejsObjects;h.traverse((r=>{this.addSpatialFilterSection(r,o.dxfData);let a=r;if(s&&a.material&&a.geometry){let r=a.userData.layerName;if(!this.isLayerFrozenForViewport(o.dxfData,r,n))return;t.push(a);let s=-1;i&&i[r]&&(s=i[r].indexOf(a),s>=0&&i[r].splice(s,1)),s<0&&ie.warn(`[DxfViewer] Failed to find object for modelId '${this.masterModelId}', layer '${r}', layout '${e}'`)}})),t.forEach((e=>{e.removeFromParent()}))}let u=this.getFilteredViewports(a);ie.debug("[DxfViewer] Active layout:",e,", viewports:",u);let c=Date.now(),p=this.CAMERA_Z_POSITION/10,d=0;u.forEach((t=>{var i;this.generateObjectsByViewport(e,t,o.dxfData);let r=null==(i=null==t?void 0:t.msToPsMatrix)?void 0:i.elements[14];r&&r>d&&(d=r)}));let f=this.controls,m=f.getPosition(new A);if(d>m.z+p){let e=Math.ceil(d+p);ie.info(`[DxfViewer] Changing camera's z value from ${m.z} to ${e}`);let t=f.getTarget(new A);m.setZ(e),f.setLookAt(m.x,m.y,m.z,t.x,t.y,t.z)}ie.info(`[DxfViewer] generateObjectsByViewport in ${(Date.now()-c)/1e3}s`),e!==Er.MODEL_LAYOUT_NAME&&this.switchTransformMs(Er.MODEL_LAYOUT_NAME,this.masterModelId),e!==Er.MODEL_LAYOUT_NAME&&h&&this.setLayoutHidableObjectArray(h),h&&this.calcBoundingBoxOfLayoutChild(h)}let l=this.getActiveLayoutInfo();this.measurementManager&&(l.measurementDataArray=this.measurementManager.getMeasurementsData()||[],l.measurementDataArray.forEach((e=>{e.layoutName=this.activeLayoutName,this.setMeasurementVisibility(e.id,!1)})),this.measurementManager.clearUndoRedo()),this.markupManager&&(l.markupDataArray=this.markupManager.getMarkupData()||[],l.markupDataArray.forEach((e=>{e.layoutName=this.activeLayoutName,this.setMarkupVisibility(e.id,!1)})),this.markupManager.clearUndoRedo()),this.showLayoutObjects(e),this.activeLayoutName=e,l=this.getActiveLayoutInfo();let h=l.measurementDataArray||[];this.measurementManager&&(this.measurementManager.setMeasurementsData(h),h.forEach((e=>this.setMeasurementVisibility(e.id,!0))));let u=l.markupDataArray||[];if(this.markupManager&&(this.markupManager.setMarkupData(u),u.forEach((e=>this.setMarkupVisibility(e.id,!0)))),l.lastCameraPosition)this.goTo(l.lastCameraPosition,l.lastCameraZoom,!1);else{l.extent=this.computeBoundingBox();let e=this.getLayoutExtentEx(a);if(e){let t=e.max.x-e.min.x,i=e.max.y-e.min.y;(t<1e-16||i<1e-16||t>1e16||i>1e16)&&(ie.warn(`[BimViewer] Got wired bbox, max: ${e.max.toArray()}, min: ${e.min.toArray()}, going to calculate one...`),e=this.computeBoundingBox()),l.homeViewExtent=e,this.activeLayoutName!==Er.MODEL_LAYOUT_NAME&&this.updateGroundPlane(),this.zoomToBBox(e)}}this.dispatchEvent("LayoutChanged"),_t.printMemory(`After activated layout '${this.activeLayoutName}'`),this.enableRender(),this.decreaseJobCount(),ie.info(`[DxfViewer] Activated layout '${e}' in ${(Date.now()-n)/1e3}s`)}calcBoundingBoxOfLayoutChild(e){let t=e.children.length;for(let i=0;i0?t.userData.boundingBox=yn.getBoundingBox(t):t.userData.boundingBox&&delete t.userData.boundingBox}}getActiveLayoutName(){return this.activeLayoutName}getLayers(){var e,t;let i=[];if(this.masterModelId){let t=this.loadedModels[this.masterModelId],r=null==(e=null==t?void 0:t.dxfData)?void 0:e.tables.layer.layers;r&&i.push({modelId:this.masterModelId,layers:r})}for(let[e,r]of Object.entries(this.loadedModels)){if(e===this.masterModelId)continue;let n=null==(t=null==r?void 0:r.dxfData)?void 0:t.tables.layer.layers;n&&i.push({modelId:e,layers:n})}return i}setModelVisibility(e,t){let i=this.loadedModels[e];if(!i||!i.dxfData)throw new Error(`Failed to find model by modelId '${e}'!`);i.dxfData.threejsObject.visible=t,this.enableRender()}setLayerVisibility(e,t,i){let r=this.camera;i=i||this.masterModelId;let n=this.loadedModels[i];if(!n)throw new Error(`Failed to find layer by modelId '${i}'!`);let s=n.dxfData,a=null==s?void 0:s.tables.layer.layers[e];a?a.visible=t:ie.warn(`[DxfViewer] Layer '${e}' not found from dxfData!`);let o=null==s?void 0:s.layersAndThreejsObjects[e];if(o){let e=r.zoom;o.forEach((i=>{this.enableHideVisuallySmallObjects&&t&&e&&i.userData.visibleMinZoom&&e{let i=e;i.material&&Ps.setMaterialColor(i.material,new je(t))})):ie.warn(`[DxfViewer] No object found for layer '${e}'`),this.enableRender()}setFont(e){return ht(this,null,(function*(){let t=Date.now();_0.isShxFile(e[0])?this.font=yield(new _0).loadAsync(e):(e.length>1&&ie.warn("[DxfViewer] Only support 1 typeface font file for now, others will be ignored!"),this.font=yield(new gT).loadAsync(e[0])),ie.info(`[DxfViewer] Font file(s) load time in ${(Date.now()-t)/1e3}s`)}))}setDisplayLengthUnits(){throw new Error("Not implemented yet!")}setDisplayAreaUnits(){throw new Error("Not implemented yet!")}setDisplayPrecision(){throw new Error("Not implemented yet!")}getCurrentViewExtent(){return{min:this.getHitResultByNdcCoordinate({x:-1,y:-1}),max:this.getHitResultByNdcCoordinate({x:1,y:1})}}getScreenshot(){return ht(this,null,(function*(){var e;let t,i="image/png",r=.8,n=null==(e=this.renderer)?void 0:e.domElement;if(!n)return;this.boxSelectHelper||(this.boxSelectHelper=new Kf(this)),t=yield this.boxSelectHelper.select();let s=yield _t.canvasToImage(n),a=document.createElement("canvas");a.width=n.width,a.height=n.height;let o=window.devicePixelRatio,l=a.getContext("2d");if(l.drawImage(s,0,0,s.width/o,s.height/o),this.overlayRender){let e=this.overlayRender.getCanvas(),t=yield _t.canvasToImage(e);l.drawImage(t,0,0,t.width/o,t.height/o)}return _t.renderingContextToImage(l,t,i,r)}))}getMeasurementManager(){return this.measurementManager}activateMeasurement(e){this.inputManager&&(this.measurementManager||(this.measurementManager=new nu(this,this.inputManager)),this.measurementManager.activateMeasurement(e),this.clearSelection())}deactivateMeasurement(){var e;null==(e=this.measurementManager)||e.deactivateMeasurement()}getActiveMeasurementType(){var e;return null==(e=this.measurementManager)?void 0:e.getActiveMeasurementType()}getMeasurements(){var e,t;let i=this.getActiveLayoutInfo();i.measurementDataArray=(null==(e=this.measurementManager)?void 0:e.getMeasurementsData())||[],i.measurementDataArray.forEach((e=>{e.layoutName||(e.layoutName=this.activeLayoutName)}));let r=[];for(let e of Object.values(this.layoutInfos))null==(t=e.measurementDataArray)||t.forEach((e=>r.push(e)));return r}setMeasurements(e){if(!this.inputManager)return;e.forEach((e=>{var t;let i=e.layoutName||Er.MODEL_LAYOUT_NAME;null==(t=this.getLayoutInfo(i).measurementDataArray)||t.push(e)}));let t=this.getActiveLayoutInfo();this.measurementManager||(this.measurementManager=new nu(this,this.inputManager));let i=this.measurementManager;t.measurementDataArray&&i.setMeasurementsData(t.measurementDataArray)}selectMeasurement(e){this.inputManager&&(this.measurementManager||(this.measurementManager=new nu(this,this.inputManager)),this.measurementManager.selectMeasurementById(e))}unselectMeasurement(){this.inputManager&&(this.measurementManager||(this.measurementManager=new nu(this,this.inputManager)),this.measurementManager.unselectMeasurement())}removeMeasurement(e){this.inputManager&&(this.measurementManager||(this.measurementManager=new nu(this,this.inputManager)),this.measurementManager.removeMeasurementById(e))}setMeasurementVisibility(e,t){return!!(this.inputManager&&this.measurementManager&&e)&&this.measurementManager.setMeasurementVisibility(e,t)}clearMeasurements(){var e;null==(e=this.measurementManager)||e.clearMeasurements();for(let e of Object.values(this.layoutInfos))e.measurementDataArray=[]}getMarkupManager(){return this.markupManager}activateMarkup(e){this.inputManager&&(this.markupManager||(this.markupManager=new F_(this,this.inputManager)),this.markupManager.isMarkupActive()||this.markupManager.activate(),this.markupManager.setDrawType(e),this.clearSelection())}deactivateMarkup(){this.markupManager&&this.markupManager.deactivate(),this.dispatchEvent("MarkupDeactived")}getActiveMarkupType(){var e;return null==(e=this.markupManager)?void 0:e.getActiveMarkupType()}setMarkupLineColor(e){var t;null==(t=this.markupManager)||t.setLineColor(e)}getMarkupLineColor(){var e;return null==(e=this.markupManager)?void 0:e.getLineColor()}setMarkupFillColor(e){var t;null==(t=this.markupManager)||t.setFillColor(e)}getMarkupFillColor(){var e;return null==(e=this.markupManager)?void 0:e.getFillColor()}setMarkupLineWidth(e){var t;null==(t=this.markupManager)||t.setLineWidth(e)}getMarkupLineWidth(){var e;return null==(e=this.markupManager)?void 0:e.getLineWidth()}setMarkupFontSize(e){var t;null==(t=this.markupManager)||t.setFontSize(e)}getMarkupFontSize(){var e;return null==(e=this.markupManager)?void 0:e.getFontSize()}getMarkups(){var e,t;let i=this.getActiveLayoutInfo();i.markupDataArray=(null==(e=this.markupManager)?void 0:e.getMarkupData())||[],i.markupDataArray.forEach((e=>{e.layoutName||(e.layoutName=this.activeLayoutName)}));let r=[];for(let e of Object.values(this.layoutInfos))null==(t=e.markupDataArray)||t.forEach((e=>r.push(e)));return r}setMarkups(e){if(!this.inputManager)return;this.clearMarkups(),e.forEach((e=>{var t;let i=e.layoutName||Er.MODEL_LAYOUT_NAME;null==(t=this.getLayoutInfo(i).markupDataArray)||t.push(e)}));let t=this.getActiveLayoutInfo();this.markupManager||(this.markupManager=new F_(this,this.inputManager));let i=this.markupManager;t.markupDataArray&&i.setMarkupData(t.markupDataArray),this.enableRender()}setMarkupVisibility(e,t){return!!(this.inputManager&&this.markupManager&&e)&&this.markupManager.setMarkupVisibility(e,t)}updateMarkup(e){if(!(this.inputManager&&this.markupManager&&e&&e.id))return!1;let t=!1;for(let i of Object.values(this.layoutInfos)){let r=i.markupDataArray||[];for(let i=0;i{var i;return(null==(i=t.userData.hotpoint)?void 0:i.hotpointId)===e}))}getHitResult(e){let t=this.viewerContainer;if(!this.camera||!this.raycaster||!this.groundPlane)return;let i=Ai.getScreenPointByEvent(e,t),r=Ai.screenPoint2NdcPoint(i,this.camera,t);return this.getHitResultByNdcCoordinate(r)}getHitResultByNdcCoordinate(e){if(!this.camera||!this.raycaster||!this.groundPlane)return;this.raycaster.setFromCamera(e,this.camera),this.raycaster.layers.enable(10);let t=this.raycaster.intersectObject(this.groundPlane,!0);return t&&t.length>0?t[0].point:void 0}zoomToRect(){this.zoomToRectHelper||(this.zoomToRectHelper=new mE(this)),this.zoomToRectHelper.activate()}deactivateZoomRect(){var e;null==(e=this.zoomToRectHelper)||e.deactivate()}getLayoutByName(e){let t,i=this.getLayouts();for(let r of i)if(r.layoutName===e){t=r;break}return t}getActiveLayoutInfo(){return this.getLayoutInfo(this.activeLayoutName)}getMsTransformMatrix(e){var t,i;let r=this.loadedModels[e],n=null==(t=r.dxfData)?void 0:t.header;if(!n)return;let s=n.$ANGDIR,a=this.getDxfUnits(r.dxfData),o=null==(i=r.dxfData)?void 0:i.tables.viewPort.viewPorts.filter((e=>"*ACTIVE"===e.name.toLocaleUpperCase()));if(!o)return;let l=new Be,h=Er.getDcs2WcsMatrix(o[0],s),u=new A(o[0].center.x,o[0].center.y,0).applyMatrix4(h),c=1;this.units&&a!==this.units&&(c=rG(a,this.units)),u.multiplyScalar(c),l.makeTranslation(u.x,u.y,0),l.multiply((new Be).makeRotationZ(_r.degToRad(o[0].viewTwistAngle))),l.multiply((new Be).makeTranslation(-u.x,-u.y,0)),this.loadedModels[e].msTransformMatrix=l}switchTransformMs(e,t){var i;let r=this.loadedModels[t];if(!r)return void ie.warn(`[DxfViewer] Can't find model whose modelId is ${t}`);let n=r.msTransformMatrix;if(hS.identity(),!n||n.equals(hS))return;let s=null==(i=r.dxfData)?void 0:i.threejsObject,a=null==s?void 0:s.children.find((e=>e.name===Er.MODEL_LAYOUT_NAME));a&&(e===Er.MODEL_LAYOUT_NAME?a.applyMatrix4(n):a.applyMatrix4(n.clone().invert()),a.updateMatrixWorld(!0))}getLayoutExtentEx(e){return e.layoutName===Er.MODEL_LAYOUT_NAME?this.getModelSpaceExtent():this.getLayoutExtent(e)}getModelSpaceExtent(){var e,t;let i=this.loadedModels[this.masterModelId],r=null==(e=i.dxfData)?void 0:e.header,n=new A,s=new A;if(!r)throw new Error(`Header is undefined in ${this.masterModelId}!`);let a=null==(t=i.dxfData)?void 0:t.tables.viewPort.viewPorts,o=r.$EXTMIN,l=r.$EXTMAX,h=r.$ANGDIR;if(a&&a.length>0)for(let e=0;e0){let e,t=s.filter((e=>1===parseInt(e.viewportId)));e=t.length>0?t[0]:s[0];let{centerPoint:i,width_paperSpace:r,height_paperSpace:n}=e,h=Er.getDcs2WcsMatrix(e,l),u=new A(i.x,i.y,0);u.applyMatrix4(h),a={x:u.x-r/2,y:u.y-n/2,z:0},o={x:u.x+r/2,y:u.y+n/2,z:0}}return r.set(a.x,a.y,a.z),n.set(o.x,o.y,o.z),new Dt(r,n)}showLayoutObjects(e){Object.values(this.loadedModels).forEach((t=>{var i;let r=0,n=0,s=null==(i=t.dxfData)?void 0:i.threejsObject;null==s||s.children.forEach((t=>{let i=t.name===e;t.visible=i,i?r++:n++})),ie.debug(`[DxfViewer] showLayoutObjects('${e}') sets ${r} layout level object(s) to visible and ${n} to hidden for model '${null==s?void 0:s.name}'`)}))}getLayoutViewports(e){var t;let i=this.loadedModels[this.masterModelId],r=e.ownerHandle;return(null==(t=i.dxfData)?void 0:t.layoutViewportsMap[r])||[]}setMaterialUniforms(e,t){e instanceof Yt&&(e.uniforms.u_cameraZoom&&(e.uniforms.u_cameraZoom=Er.cameraZoomUniform),e.uniforms.u_viewportScale&&1===(null==t?void 0:t.header.$PSLTSCALE)&&(e.uniforms.u_viewportScale=Er.viewportScaleUniform))}isLayerFrozenForViewport(e,t,i){if(!e||!t)return!1;let r=e.tables.layer.layers[t];return!!(r&&(1&r.flag)>0)||!(!i||i.length<=0)&&(r&&i.indexOf(r.handle)>=0)}getFilteredViewports(e){let t=this.getLayoutViewports(e),i=t.filter((e=>"1"!==e.viewportId));return i.length===t.length&&(i=t.filter(((e,t)=>0!==t))),i}generateObjectsByViewport(e,t,i,r=[]){let n=t;if("1"==t.viewportId)return;if(!n.psBBox||!n.msToPsMatrix)throw new Error("The bbox or matrix is invalid in the viewport!");Er.transformMatrixUniform={value:n.msToPsMatrix},Er.viewportScaleUniform={value:t.viewHeight/t.height_paperSpace};let s=n.psBBox.clone();s.applyMatrix4(n.msToPsMatrix.clone().invert()),s.min.setZ(-1),s.max.setZ(1);let a=this.getObjectsByBoundingBox(s);if(0===a.length)return;let o,l=n.psBBox.min,h=n.psBBox.max,u=new ns(new le(l.x,l.y),new le(h.x,h.y)),c=Xu.generateSectionPlanesByBox(u),p=[],d=e=>(p[e.id]||(p[e.id]=e.clone(),this.setMaterialUniforms(p[e.id],i),Xu.setMaterialSection(p[e.id],c)),p[e.id]),f=[...r,...t.frozenLayerHandles||[]];if(e!==Er.MODEL_LAYOUT_NAME){let e=t;e.associatedLeafObjectSet||(e.associatedLeafObjectSet=new Set),o=e.associatedLeafObjectSet}let m=new ur;m.name=t.viewportId;let g=null==i?void 0:i.layersAndThreejsObjects,y=[];if(a.forEach((t=>{let r=t.clone();r.traverse((t=>{if(t.material&&t.geometry){let r=t.userData.layerName;if(this.isLayerFrozenForViewport(i,r,f))return void y.push(t);!1!==t.userData.layerVisible&&(t.visible=!0),t.material=(e=>{if(Array.isArray(e)){let t=[];return e.forEach((e=>{let i=d(e);t.push(i)})),t}return d(e)})(t.material),null==o||o.add(t),g&&g[r]?g[r].push(t):ie.warn(`[DxfViewer] Failed to find object for modelId '${this.masterModelId}', layer '${r}', layout '${e}'`)}})),r.userData.boundingBox&&(r.visible=!0,delete r.userData.boundingBox),m.add(r)})),o&&0===o.size)return;ti.removeEmptyObjectsFromRemovingObjects(y,m);let v=null==i?void 0:i.threejsObject,T=null==v?void 0:v.children.find((t=>t.name===e));T||(T=new ur,ti.setSharedVariablesOfObject(T),T.name=e,null==v||v.add(T)),T.add(m),m.applyMatrix4(n.msToPsMatrix),m.updateMatrixWorld(!0),m.traverse((e=>{ti.setSharedVariablesOfObject(e),this.addSpatialFilterSection(e,i,!0)}))}findSpatialFilter(e,t){let i,r=t.objects.SPATIAL_FILTER;if(r){for(let t of r)if(t.handle===e){i=t;break}return i}}getAnyMaterial(e){let t,i=e;if(i.material)return Array.isArray(i.material)?i.material[0]:i.material;for(let i=0;i0),n=s.clipIntersection),t&&n!==r.clipPolylines[0].bReversed)return void ie.warn("[DxfViewer] Material cannot set clipIntersection to different values at the same time. clipIntersection needs to be set to true here!");n=r.clipPolylines[0].bReversed;let a=this.generateSectionsBySpatialFilter(r,e.matrixWorld);if(a){let i=e=>{let t=0;return e.clippingPlanes&&(t=e.clippingPlanes.length),t+a.length>Er.maxFragmentUniforms},r=new Set,s=e=>{r.has(e.id)||(r.add(e.id),i(e)||Xu.setMaterialSection(e,a,t,n))};e.traverse((e=>{let t=e.material;Array.isArray(t)?t.forEach((e=>{s(e)})):t&&s(t)}))}}}getObjectsByBoundingBox(e){var t;let i=[];if(e.isEmpty())return ie.warn("[DxfViewer] bbox is empty !"),i;let r=null==(t=this.loadedModels[this.masterModelId].dxfData)?void 0:t.threejsObject,n=null==r?void 0:r.children.find((e=>e.name===Er.MODEL_LAYOUT_NAME));return n&&n.children.forEach((t=>{(t=>{let r=yn.getBoundingBox(t,!1);e.intersectsBox(r)&&i.push(t)})(t)})),i}getDxfUnits(e){if(e||Object.keys(this.loadedModels).length>0&&(e=this.loadedModels[this.masterModelId].dxfData),!e)return"Unitless";let t=null==e?void 0:e.header;if(!t)return ie.warn("DxfData or its header is undefined!"),"Unitless";let i=t.$INSUNITS;return Er.getDxfUnits(i)}generateSectionsBySpatialFilter(e,t){let i=e.clipPolylines[0];if(i.bConcave)return void ie.warn("[DxfViewer] clipPolyline.bConcave = true is not supported yet in spatialFilter !");hS.copy(t),e.localMatrix&&hS.multiply(e.localMatrix);let r=i.polyline,n=[];r.forEach((e=>{let t=e.clone().applyMatrix4(hS);n.push(new le(t.x,t.y))}));let s=rs.isClockWise(n),a=!s&&!i.bReversed||s&&i.bReversed;return Xu.generateSectionPlanesByPoints(n,a)}addLoadedModelToScene(e,t,i){if(!this.scene)return;let r=t.modelId||t.src;if(this.loadedModels[r]){let e=1;for(;this.loadedModels[`${r}_${e}`];)e++;r=`${r}_${e}`,ie.warn(`[DxfViewer] Model '${r}' is loaded more than once!`)}this.loadedModels[r]={dxfData:i},e.matrixAutoUpdate=!1,e.updateMatrix(),_t.printMemory("Before merge"),t.merge&&(Er.merge(i),_t.printMemory("After merged")),e.updateMatrixWorld(!0),Er.computeLineDistances(e),this.getMsTransformMatrix(r),this.masterModelId===r?this.activateLayout(Er.MODEL_LAYOUT_NAME):this.handleOverlayDxf(r),ie.debug(i),this.scene.add(e);let n=null==i?void 0:i.threejsObject.children.find((e=>e.name===Er.MODEL_LAYOUT_NAME));n&&this.setLayoutHidableObjectArray(n),this.updateGroundPlane(),this.raycastableObjects=void 0,this.masterModelId===r||this.enableRender()}resize(e,t){let i=this.camera;if(i){let r=e||window.innerWidth,n=t||window.innerHeight,s=r/n;i.left=-this.height*s/2,i.right=this.height*s/2,i.top=this.height/2,i.bottom=-this.height/2,i.updateProjectionMatrix(),this.renderer&&this.renderer.setSize(r,n),this.css2dRenderer&&(this.css2dRenderer.setSize(r,n),this.css2dRenderer.domElement.style.width="0",this.css2dRenderer.domElement.style.height="0"),this.overlayRender&&this.overlayRender.setSize(r,n)}this.enableRender()}getRaycaster(){return this.raycaster}getRaycastableObjects(){var e;if(this.raycastableObjects)return this.raycastableObjects;let t=Date.now(),i=[];for(let t of Object.values(this.loadedModels)){let r=null==(e=t.dxfData)?void 0:e.threejsObject,n=r&&r.children.find((e=>e.name===this.activeLayoutName));n&&n.traverseVisible((e=>{ti.isLeafObject(e)&&i.push(e)}))}return this.groundPlane&&i.push(this.groundPlane),this.raycastableObjects=i,ie.debug(`[DxfViewer] getRaycastableObjects() finds ${i.length} objects`),ie.debug(`[DxfViewer] getRaycastableObjects() costs ${(Date.now()-t)/1e3} s`),i}getViewportByPoint(e){if(0===this.activeLayoutName.length||this.activeLayoutName===Er.MODEL_LAYOUT_NAME)return;let t=this.getLayoutByName(this.activeLayoutName);if(!t)return;let i=t=>e.xt.max.x||e.yt.max.y,r=this.getFilteredViewports(t);for(let e=0,t=r.length;e{i.visible&&(t.push(i),e.add(i))}))}let r=this.getViewportByPoint(this.raycaster.ray.origin);r&&r.associatedLeafObjectSet?(this.getRaycastableObjects().forEach((i=>{var n;null!=(n=r.associatedLeafObjectSet)&&n.has(i)&&!e.has(i)&&i.visible&&(t.push(i),e.add(i))})),ie.debug("[DxfViewer] getRaycastableObjectsByMouse() from inside of viewport:",r.viewportId)):ie.debug("[DxfViewer] getRaycastableObjectsByMouse() from out of viewport"),this.groundPlane&&t.push(this.groundPlane)}return ie.debug(`[DxfViewer] getRaycastableObjectsByMouse() costs ${(Date.now()-r)/1e3} s`),t}getIntersections(e){this.raycaster&&this.raycaster.layers.enable(10);let t=this.getRaycastableObjectsByMouse(e);return this.raycaster&&this.raycaster.intersectObjects(t,!0)||[]}handleMouseClick(e){if(this.selectDrawableByEvent(e),this.selectedObject||!this.enableSelection||this.measurementManager&&this.measurementManager.isMeasurementActive()||this.markupManager&&this.markupManager.isMarkupActive())return;let t=this.getIntersections(e);if(t.length>0){let e=e=>_t.vectorToString(e);ie.debug(`[DxfViewer] Clicked at: ${e(t[0].point)}`)}let i=t.find((e=>{let t=e.object;return t.visible&&!1!==t.userData.selectable})),r=i&&i.object||void 0;this.selectedObject&&this.clearSelection(),r&&this.selectedObject&&this.selectedObject.id===r.id&&(r=void 0),r?this.selectObject(r):this.clearSelection()}selectDrawableByEvent(e){var t;this.clearSelection();let i=this.getHitResult(e);if(!i)return;let r=null==(t=this.overlayRender)?void 0:t.getDrawablesByPosition(i,this.raycaster);r&&r.length>0&&(r[0].selected=!0,this.selectedObject=r[0])}selectObject(e,t){if(!this.enableSelection)return;let i=e=>{if(e.children.length>0&&e.children.forEach((e=>i(e))),e instanceof rt||e instanceof Ir){let i=Ps.clonedHighlightMaterials(e,{depthTest:t});i&&(e.userData.originalMaterial=e.material,e.material=i)}},r=e=>{if(e.children.length>0&&e.children.forEach((e=>r(e))),(e instanceof rt||e instanceof Ir)&&e.userData.originalMaterial){let t=e.material;e.material=e.userData.originalMaterial,delete e.userData.originalMaterial,Array.isArray(t)?t.forEach((e=>e.dispose())):t instanceof jr&&t.dispose()}};this.selectedObject&&(r(this.selectedObject),this.selectedObject=void 0),e&&(i(e),this.selectedObject=e,e.userData.dxfEntity?ie.info("[DxfViewer] Selected entity:",e.userData.dxfEntity):ie.info("[DxfViewer] Selected object:",e)),this.enableRender()}clearSelection(){this.selectedObject&&this.selectedObject instanceof Na?this.selectedObject.selected=!1:this.selectObject(),this.selectedObject=void 0}flyToObjects(e){if(!e||0===e.length||!this.camera)return;let t=new Dt;e.forEach((e=>{let i=yn.getBoundingBox(e);i.isEmpty()||t.union(i)})),this.zoomToBBox(t)}flyToObject(e){this.flyToObjects([e])}flyToSelectedObject(){if(!this.selectedObject)return;let e=this.selectedObject;(e instanceof rn&&e.userData.clonedMesh||e instanceof rt&&Yi.isMergedMesh(e)&&e.userData.clonedMesh)&&(e=e.userData.clonedMesh),this.flyToObject(e)}flyToRandomObject(){var e;let t=this.scene,i=[];for(let t of Object.values(this.loadedModels)){let r=null==(e=t.dxfData)?void 0:e.threejsObject;r&&i.push(r.id)}let r=i.length;if(r<=0)return;let n=i[Math.floor(Math.random()*r)],s=t.getObjectById(n);if(!s)return;let a=this.getActiveLayoutName();if(!s.children.find((e=>e.name===a)))return;let o=[];if(t.traverseVisible((e=>{(e instanceof rt||e instanceof Ir)&&!["SKYBOX","GROUND_GRID","GRASS_GROUND","BIM_VIEWER_BOX_HELPER"].includes(e.name)&&o.push(e.id)})),o.length<1)return;let l=Math.floor(Math.random()*o.length),h=t.getObjectById(o[l]);h&&(ie.info(`[DxfViewer] Flying to random object: ${h.name}, type: ${h.type}`),this.selectObject(h,void 0),this.flyToObject(h))}flyTo(e,t,i,r){let n=this.camera,s=this.controls;if(!n||!s)return;if(i&&(i=this.checkAndGetLimitedCameraZoom(i)),e.equals(t))return void ie.error("[DxfViewer] Camera position and lookAt cannot be the same!");if(!_t.isVectorValid(e)||!_t.isVectorValid(t))return void ie.error("[DxfViewer] Invalid position or lookAt!",e,t);let a=e.distanceTo(t);an.far&&(e=e.clone().sub(t).normalize().multiplyScalar(.9*n.far),ie.warn("[DxfViewer] Camera could be too far to see the object!"));let o=(e,t,i)=>{i&&Number.isFinite(i)&&s.zoomTo(i),s.setLookAt(e.x,e.y,e.z,t.x,t.y,t.z),this.updateHidableObjectsVisibility(),this.enableRender()};if(!1===r)return this.cameraUpdateInterval&&clearInterval(this.cameraUpdateInterval),void o(e,t,i);let l=n.position.clone(),h=s.getTarget(new A),u=n.zoom,c=300,p=Date.now();this.cameraUpdateInterval&&clearInterval(this.cameraUpdateInterval),this.cameraUpdateInterval=setInterval((()=>{let r=Date.now()-p;r>c&&(r=c);let n,s=(e,t,i)=>{let r=e.x+(t.x-e.x)*i,n=e.y+(t.y-e.y)*i,s=e.z+(t.z-e.z)*i;return new A(r,n,s)},a=s(l,e,r/c),d=s(h,t,r/c);i&&(n=u+(i-u)*r/c),o(a,d,n),r>=c&&(clearInterval(this.cameraUpdateInterval),this.cameraUpdateInterval=void 0)}),10)}goTo(e,t,i){let r=this.camera,n=this.controls;if(!r||!n)return;let s=new A(e.x,e.y,r.position.z),a=n.getTarget(new A),o=new A(e.x,e.y,a.z);this.flyTo(s,o,t,i)}goToHomeView(){let e=this.getActiveLayoutInfo();e.homeViewExtent?this.zoomToBBox(e.homeViewExtent):ie.error(`[DxfViewer] Failed to find extent for ${this.activeLayoutName}`)}zoomToBBox(e){let t=this.camera;if(!t)return;let i=e.max.x-e.min.x,r=e.max.y-e.min.y,n=t.right-t.left,s=t.top-t.bottom,a=Math.min(n/i,s/r);a/=1.1;let o=new Dt(new A(e.min.x,e.min.y,0),new A(e.max.x,e.max.y,0)),l=new A;o.getCenter(l),l.z=0;let h=l.clone().setZ(Math.max(t.position.z,this.CAMERA_Z_POSITION));h.equals(l)||this.flyTo(h,l,a,!1)}zoomToExtent(){let e=this.getActiveLayoutInfo();e.extent?this.zoomToBBox(e.extent):(console.error("[DxfViewer] Failed to find extent of current layout! Will go to home view."),this.goToHomeView())}zoomToCompareChange(e){if(this.changes){let t=this.changes[e];if(!t)return;let i=t.box;i&&this.zoomToBBox(i.clone().expandByScalar(1.2))}}getCompareChanges(){return this.changes}setBackgroundColor(e,t,i){this.scene&&(this.scene.background=new je(e,t,i),this.enableRender())}setSpinnerVisibility(e){this.spinner&&(e?this.spinner.classList.remove("hidden"):this.spinner.classList.add("hidden"))}increaseJobCount(){this.setSpinnerVisibility(++this.jobCount>0)}decreaseJobCount(){this.setSpinnerVisibility(--this.jobCount>0)}getLayoutInfo(e){return this.layoutInfos[e]||(this.layoutInfos[e]={measurementDataArray:[],markupDataArray:[]}),this.layoutInfos[e]}updateGroundPlane(){if(!this.scene)return;let e=this.getActiveLayoutInfo();if(!e.homeViewExtent)return;let t=e.homeViewExtent.clone();_t.expandBoxByScale(t,3);let i=t.min,r=t.max,n=r.x-i.x+r.y-i.y+r.z-i.z;_t.expandBoxByMinSize(t,n);let s=[],a=(e,t,i)=>{s.push(new A(e,t,i))},o=t.getSize(new A),l=t.getCenter(new A);if(a(-o.x/2,-o.y/2,0),a(o.x/2,-o.y/2,0),a(o.x/2,o.y/2,0),a(-o.x/2,o.y/2,0),this.groundPlane)this.groundPlane.position.copy(l),this.groundPlane.geometry.setFromPoints(s),this.groundPlane.geometry.computeBoundingSphere(),this.groundPlane.geometry.computeBoundingBox(),this.groundPlane.geometry.computeVertexNormals();else{let e=new lt;e.setFromPoints(s),e.setIndex([0,3,2,0,2,1]),e.computeVertexNormals();let t=new lr({color:"#888",transparent:!0,opacity:0,side:yi});this.groundPlane=new rt(e,t),this.groundPlane.frustumCulled=!1,this.groundPlane.position.copy(l),this.groundPlane.scale.set(1e5,1e5,1),this.groundPlane.name="groundPlane",this.groundPlane.userData.selectable=!1,this.groundPlane.renderOrder=-1e3,this.scene.add(this.groundPlane)}this.groundPlane.updateMatrixWorld()}computeBoundingBox(){var e;let t=new Dt;for(let i of Object.values(this.loadedModels)){let r=null==(e=i.dxfData)?void 0:e.threejsObject;for(let e=0;r&&e{e.visible&&e.children.forEach((e=>{e.userData.boundingBox&&(pAe.intersectsBox(e.userData.boundingBox)?e.visible=!0:e.visible=!1)}))}))}ie.debug(`[DxfViewer] setVisibilityByCameraFrustum cost: ${(Date.now()-t)/1e3}s`)}getVisiblePixelSize(e){let t=6.5*_r.smoothstep(e,1e4,3e4)+.5;return ie.debug("[DxfViewer] visiblePixelSize:",t),t}setLayoutHidableObjectArray(e){let t=this.camera;if(!this.enableHideVisuallySmallObjects||!t)return;let i=Date.now(),r=e.name;this.sortedHidableObjects[r]||(this.sortedHidableObjects[r]=[]);let n=this.sortedHidableObjects[r];this.controls.update(0);let s=t.zoom;this.lastCameraZoom=s;let a=e=>{if(!this.isCompareMode()||!e.material)return!1;let t;return t=e.material instanceof Yt?e.material.uniforms.u_color.value:e.material.color,t.equals(new je(Xn.ENTITY_COLOR_ADDED))||t.equals(new je(Xn.ENTITY_COLOR_REMOVED))},o=1;e.traverse((e=>{if(this.isCompareMode()&&a(e)||!ti.isLeafObject(e))return;let t=e.geometry;t.boundingBox||t.computeBoundingBox();let i=t.boundingBox.clone();if(!i||!_t.isBoxValid(i))return;i.applyMatrix4(e.matrixWorld),i.getSize(dV);let r=Math.max(dV.x,dV.y),s=o/r;s<1/0?n.push({visibleMinZoom:s,object:e}):e instanceof nn?n.push({visibleMinZoom:o,object:e}):ie.warn("[DxfViewer] The size of bbox is 0 ! ",e)})),o=this.getVisiblePixelSize(n.length);let l=0;n.forEach((e=>{let t=e.visibleMinZoom*o;e.visibleMinZoom=t,e.object.userData.visibleMinZoom=t,t>s&&(e.object.visible=!1,l++)})),n.sort(((e,t)=>e.visibleMinZoom-t.visibleMinZoom)),ie.debug(`[DxfViewer] setLayoutHidableObjectArray cost: ${(Date.now()-i)/1e3}s, ${l} objects changed to hidden`)}statObjects(e){let t=this.sortedHidableObjects[this.activeLayoutName],i=t.length,r={},n=0;t.forEach((t=>{let i=t.object;if(i.geometry&&i.material){n++;let i=(t=>{let i=0,r=t;for(;r&&(i++,r!==e);)r=r.parent;return i})(t.object);r[i]||(r[i]=0),r[i]++}}));let s=0;e.traverse((e=>{let t=e;t.geometry&&t.material&&s++})),ie.info(`[DxfViewer] hidableObjects count:${i}, real count:${n}, layout count: ${s}, level:`,r),ie.info("[DxfViewer] scene:",this.scene)}updateHidableObjectsVisibility(){let e=this.camera;if(!e)return;let t=Date.now();this.controls.update(0);let i=e.zoom;if(Math.abs(i-this.lastCameraZoom)<1e-5||(this.updateRaycasterThreshold(),this.updateCameraZoomUniform(i),this.raycastableObjects=void 0,!this.sortedHidableObjects[this.activeLayoutName]))return;let r=this.sortedHidableObjects[this.activeLayoutName];if(0===r.length)return;let n=i>this.lastCameraZoom,s=Math.min(i,this.lastCameraZoom),a=Math.max(i,this.lastCameraZoom),o=[],l=0;for(let e=0;ea)break;r[e].object.visible=n,n&&o.push(r[e].object),l++}this.lastCameraZoom=i,ie.debug(`[DxfViewer] updateHidableObjectsVisibility cost: ${(Date.now()-t)/1e3}s, ${l}(out of ${r.length}) objects changed to ${n?"visible":"hidden"}`),this.groundPlane&&o.push(this.groundPlane),this.raycastableObjects=o}updateRaycasterThreshold(){let e=this.camera;if(!e||!this.raycaster)return;let t=12/e.zoom,i=this.raycaster.params;i.Line?i.Line.threshold=t:i.Line={threshold:t},i.Points?i.Points.threshold=t:i.Points={threshold:t}}updateCameraZoomUniform(e){Er.cameraZoomUniform.value=e}},j3=kn($l(),1),b5t=(e=>(e[e.Browser=0]="Browser",e[e.Browserless=1]="Browserless",e[e.Headless=2]="Headless",e))(b5t||{}),mAe=class{constructor(e,t,i){if(this.scene=this.initScene(),this.selectedObject=void 0,this.loadedModels={},this.clock=new Nl,this.viewerMode=0,this.raycaster=new Lc,this.savedMaterialsForOpacity=[],this.jobCount=0,this.bbox=new Dt,this.outlineMaterial=new vr({color:1118481}),this.outlineRoot=new ur,this.transparentObjectIds=[],this.applyOptionsAndAddToScene=(e,t,i)=>{if(ie.info(`[SimplifiedBimViewer] '${e}' is loaded, adding to scene...`),i.matrix&&16===i.matrix.length){let e=new Be;e.elements=i.matrix,t.applyMatrix4(e)}else{let e=i.position||[0,0,0],r=i.rotation||[0,0,0],n=i.scale||[1,1,1];t.position.set(e[0],e[1],e[2]),t.rotation.set(r[0]*Math.PI/180,r[1]*Math.PI/180,r[2]*Math.PI/180),t.scale.set(n[0],n[1],n[2])}this.addLoadedModelToScene(t,i)},this.getMeshes=e=>{let t=[];return e instanceof rt?t.push(e):e.traverseVisible((e=>{e instanceof rt&&t.push(e)})),t},this.containerOrCanvas=e,t&&(this.viewerMode=t),this.glContext=i,1===this.viewerMode&&(e instanceof HTMLDivElement||!i))throw new Error("[SimplifiedBimViewer] Parameters don't match Browserless viewerMode !");this.increaseJobCount(),this.init(),this.decreaseJobCount(),ie.info("[SimplifiedBimViewer] Initialized"),this.animate()}init(){this.initRenderer(),this.initCamera(),this.initControls(),this.initLights(),this.initPointerEvents(),this.scene.add(this.outlineRoot)}initScene(){let e=new Nn;return e.background=new je(7112861),e.matrixAutoUpdate=!0,e}isBrowserlessMode(){return 1===this.viewerMode}isBrowserMode(){return 0===this.viewerMode}initRenderer(){let e={antialias:!0,preserveDrawingBuffer:!0},t=this.isBrowserlessMode();t&&Object.assign(e,{canvas:this.containerOrCanvas,context:this.glContext});let i=new Ll(e);if(t){let e=this.containerOrCanvas.width,t=this.containerOrCanvas.height;ie.info(`[SimplifiedBimViewer] Render target size: ${e} x ${t}`),this.renderTarget=new zr(e,t,{minFilter:li,magFilter:Ci,format:Gs,type:Hu}),i.setRenderTarget(this.renderTarget)}else{let e=this.containerOrCanvas.clientWidth,t=this.containerOrCanvas.clientHeight;this.containerOrCanvas.append(i.domElement),i.setPixelRatio(window.devicePixelRatio),i.setSize(e,t)}i.outputEncoding=gr,i.toneMappingExposure=1,i.physicallyCorrectLights=!0,i.setClearColor(11119017,1),i.shadowMap.enabled=!0,i.shadowMap.type=ky,this.renderer=i,t||(this.pmremGenerator=new Ip(i),this.pmremGenerator.compileEquirectangularShader(),this.setEnvironmentFromDataArray())}initCamera(){if(!this.scene)return;let e=this.containerOrCanvas.clientWidth||this.containerOrCanvas.width||0,t=this.containerOrCanvas.clientHeight||this.containerOrCanvas.height||0,i=1;e&&t&&(i=e/t),this.camera=new kr(68,i,.05,1e4),this.camera.position.set(10,10,10),this.camera.lookAt(0,0,0),this.scene.add(this.camera)}initControls(){if(!this.renderer)return;let e=this.camera;if(!e)return;let t=new Jl(e,this.renderer.domElement);t.smoothTime=.5,t.enabled=!0,t.keyTruckSpeed=10,t.keys={left:"KeyD",up:"KeyE",right:"KeyA",bottom:"KeyQ"},t.update(0),this.controls=t,t.addEventListener("update",(()=>{!this.isBrowserMode()&&this.renderer&&this.renderer.render(this.scene,e)}))}initLights(){if(!this.scene)return;let e=16777215,t=new ta(e,.3);t.position.set(-2,2,4);let i=new Pl(3158064),r=new hf(e,14540253,3);r.position.set(0,300,0),this.scene.add(t),this.scene.add(i),this.scene.add(r)}initPointerEvents(){if(!this.renderer||!this.camera||!this.controls)return;let e=!1,t=!1,i=-1,r=-1;this.renderer.domElement.addEventListener("pointerdown",(t=>{i=t.x,r=t.y,e=!1})),this.renderer.domElement.addEventListener("pointermove",(t=>{i>=0&&r>=0&&(Math.abs(t.x-i)>5||Math.abs(t.y-r)>5)&&(e=!0)})),this.renderer.domElement.addEventListener("pointerup",(()=>{t&&setTimeout((()=>{t=!1}),200),i=-1,r=-1})),this.renderer.domElement.addEventListener("dblclick",(i=>{t=!0,e||(this.handleMouseClick(i),this.flyToSelectedObject())}))}animate(){var e;this.isBrowserMode()&&requestAnimationFrame(this.animate.bind(this));let t=this.clock.getDelta();this.controls&&this.controls.update(t),this.scene&&this.camera&&(null==(e=this.renderer)||e.render(this.scene,this.camera))}destroy(){this.camera=void 0,this.scene&&this.scene.clear(),this.requestAnimationFrameHandle&&(cancelAnimationFrame(this.requestAnimationFrameHandle),this.requestAnimationFrameHandle=void 0),this.renderer&&(this.containerOrCanvas.removeChild(this.renderer.domElement),this.renderer.clear(),this.renderer.dispose(),this.renderer=void 0),this.controls&&(this.controls.dispose(),this.controls=void 0),this.renderTarget&&(this.renderTarget.dispose(),this.renderTarget=void 0),this.raycaster=void 0,this.selectedObject=void 0,this.savedMaterialsForOpacity=void 0,Object.keys(this.loadedModels).forEach((e=>{delete this.loadedModels[e]}))}loadLocalModel(e,t,i){return ht(this,null,(function*(){let r=yield(new Jc).loadLocalModel(e,t.src,i);return r?(this.applyOptionsAndAddToScene(e,r,t),Promise.resolve()):Promise.reject()}))}loadModel(e,t){return ht(this,null,(function*(){this.increaseJobCount();let i=yield(new Jc).loadModel(e.src,e.fileFormat,t);return i?(this.applyOptionsAndAddToScene(e.src,i,e),Promise.resolve()):Promise.reject()}))}parseGltf(e,t,i,r){this.increaseJobCount(),(new Jc).parseGltf(e,t.src,(e=>{this.applyOptionsAndAddToScene(t.src,e,t),i&&i(e)}),(e=>{r&&r(e)}))}addLoadedModelToScene(e,t){if(!this.scene)return;e.updateMatrix(),this.scene.add(e);let i=new Fg(e);i.name="BIM_VIEWER_BOX_HELPER",i.visible=!1,i.material&&(i.material=void 0,i.layers.set(11));let r=t.modelId||t.src;if(this.loadedModels[r]){let e=1;for(;this.loadedModels[`${r}_${e}`];)e++;r=`${r}_${e}`,ie.warn(`[BimViewer] Model '${r}' is loaded more than once!`)}this.loadedModels[r]={id:e.id,bbox:i},this.computeBoundingBox();let n=Object.values(this.loadedModels).map((e=>e.id));(!n||n.length<=1)&&(this.tryAdjustCameraNearAndFar(),this.goToHomeView()),this.scene.add(i),t.edges&&ti.addOutlines(e),this.decreaseJobCount(),ie.info(`[SimplifiedBimViewer] Added '${t.src}' to scene`)}addOrRemoveObjectOpacity(e=!0,t=.3,i,r){if(this.savedMaterialsForOpacity||(this.savedMaterialsForOpacity=[]),!this.scene)return;let n=this.scene,s=[];Object.keys(this.loadedModels).forEach((a=>{let o=this.loadedModels[a];if(e){this.savedMaterialsForOpacity&&this.savedMaterialsForOpacity.length>0&&ti.revertObjectOpacityById(n,o.id,this.savedMaterialsForOpacity);let e=ti.setObjectOpacityById(n,o.id,t,i,r);s.push(...e)}else this.savedMaterialsForOpacity&&ti.revertObjectOpacityById(n,o.id,this.savedMaterialsForOpacity)})),this.savedMaterialsForOpacity=e?s:[]}hasTransparentObject(){return!!(this.savedMaterialsForOpacity&&this.savedMaterialsForOpacity.length>0)}getIntersections(e){if(!this.raycaster||!this.camera||!this.scene)return[];let t=new le;e&&(t=Ai.getScreenPointByEvent(e,this.containerOrCanvas));let i=Ai.screenPoint2NdcPoint(t,this.camera,this.containerOrCanvas);this.raycaster.setFromCamera(i,this.camera);let r=[];return Object.values(this.loadedModels).forEach((e=>{let t=this.scene&&this.scene.getObjectById(e.id);t&&t.visible&&r.push(t)})),this.raycaster.intersectObjects(r,!0)||[]}handleMouseClick(e){let t=this.getIntersections(e).find((e=>{let t=e.object;return t.visible&&(!1!==t.userData.selectable||t instanceof rt)})),i=t&&t.object||void 0;i&&this.selectedObject&&this.selectedObject.id===i.id&&(i=void 0),i?this.selectObject(i):this.clearSelection()}selectObject(e){if(this.selectedObject){let e=this.selectedObject.userData;if(e.originalMaterial){if(this.selectedObject.material){let e=this.selectedObject.material;Array.isArray(e)?e.forEach((e=>e.dispose())):e instanceof jr&&e.dispose()}this.selectedObject.material=e.originalMaterial,delete e.originalMaterial}this.selectedObject=void 0}if(!this.scene||!e)return;let t=Ps.clonedHighlightMaterials(e);t&&(this.selectedObject=e,this.selectedObject.userData.originalMaterial=this.selectedObject.material,this.selectedObject.material=t)}clearSelection(){this.selectObject()}flyToObjects(e){if(!e||0===e.length||!this.camera)return;let t=new A,i=new A,r=new Dt;e.forEach((e=>{let t=yn.getBoundingBox(e);r.union(t)}));let n=new A;this.camera.getWorldDirection(n),Is.getCameraPositionByBboxAndDirection(r,t,i,this.camera.projectionMatrix,n),this.flyTo(t,i)}flyToObject(e){this.flyToObjects([e])}flyToSelectedObject(){this.selectedObject&&this.flyToObject(this.selectedObject)}flyTo(e,t,i){var r;let n=this.camera,s=this.controls;if(!n||!s)return;let a=e=Array.isArray(e)?new A(e[0],e[1],e[2]):e,o=t=Array.isArray(t)?new A(t[0],t[1],t[2]):t;ie.info("[SimplifiedBimViewer] flyTo: ",_t.vectorToString(a)),s.setPosition(a.x,a.y,a.z),s.setTarget(o.x,o.y,o.z),this.isBrowserMode()||null==(r=this.renderer)||r.render(this.scene,n),i&&i()}goToHomeView(){var e;let t=new A,i=new A,r=new A,n=new A;this.bbox.getSize(n),this.bbox.getCenter(r);let s=(n.x+n.y+n.z)/3*1.5,a=new A(r.x+s,r.y+s/1.5,r.z+s),o=r.clone().sub(a);Is.getCameraPositionByBboxAndDirection(this.bbox,t,i,null==(e=this.camera)?void 0:e.projectionMatrix,o),t.equals(i)||this.flyTo(t,i)}setEnvironmentFromDataArray(e){Hc.createEnvTextureFromDataArray(this.pmremGenerator,e).then((e=>{this.scene.environment=e,this.isBrowserMode()||this.animate()}))}tryAdjustCameraNearAndFar(){let e=this.camera;if(!this.scene||!e)return;let t=this.bbox,i=e.near,r=e.far,n=t.max.x-t.min.x,s=t.max.y-t.min.y,a=t.max.z-t.min.z,o=Math.max(n,s,a),l=o/5,h=5*o;if(i>l||r_t.numberToString(e);ie.info(`[SimplifiedBimViewer] BBox's longest side is: ${t(o)}`),i>l&&(ie.warn(`[SimplifiedBimViewer] camera.near(${t(i)}) shouldn't bigger than ${t(l)}, will change it!`),e.near=l),r0?void 0:this.transparentObjectIds,i=this.transparentObjectIds.length>0?this.transparentObjectIds:void 0,r=new lr({color:16777215,transparent:!0,opacity:.1});Object.keys(this.loadedModels).forEach((e=>{let n=this.loadedModels[e];ti.applyMaterialToObjectById(this.scene,n.id,r,i,t)})),this.outlineRoot.clear();let n=[];if(e.forEach((e=>{let t=e.modelId,i=t?this.scene.getObjectById(this.loadedModels[t].id):this.scene;i||(ie.warn(`[BimViewer] The ModelId of ${t} has no corresponding model.`),i=this.scene),i.traverse((t=>{if((0,j3.includes)(e.id,(0,j3.get)(t.userData,"UniqueId"))){let e=this.getMeshes(t);n=n.concat(e)}}))})),n.length>0){n.forEach((e=>{var t;let i=ti.createOutline(e.geometry,e.matrix,this.outlineMaterial);null!=(t=e.parent)&&t.matrixWorld&&i.applyMatrix4(e.parent.matrixWorld),this.outlineRoot.add(i)}));let e=n.map((e=>e.id));Object.keys(this.loadedModels).forEach((t=>{let i=this.loadedModels[t];ti.revertAppliedMaterialToObjectById(this.scene,i.id,e)})),this.transparentObjectIds=e,this.flyToObjects(n)}else ie.warn(`[BimViewer] No object found with uniqueIds: ${e.map((e=>e.id))}`);this.isBrowserMode()||this.animate()}increaseJobCount(){++this.jobCount}decreaseJobCount(){--this.jobCount}computeBoundingBox(){let e=new Dt;return Object.values(this.loadedModels).forEach((t=>{if(t.bbox){t.bbox.geometry.computeBoundingBox();let i=t.bbox.geometry.boundingBox;i&&!i.isEmpty()&&e.union(i)}})),this.bbox=e,e}getContext(){var e;return null==(e=this.renderer)?void 0:e.getContext()}getCameraDirection(){var e;let t=new A;return null==(e=this.camera)||e.getWorldDirection(t),{x:t.x,y:t.y,z:t.z}}setFov(e){this.camera&&(this.camera.fov=e,this.camera.updateProjectionMatrix())}},gAe=kn($l(),1),hm=class extends ur{constructor(e,t,i=10){super(),this.images=e,this.thumbnailImages=t,this.size=i,this.textureLoader=new xs,this.mesh=new rt}fadeIn(e=1e3){let t=this.getMaterials();if(!(Array.isArray(t)&&t.length>0))return void(this.visible=!0);t.forEach((e=>e.opacity=0));let i=1/(e/10);this.visible=!0,this.clearFading(),this.renderOrder+=1,this.fadingInInterval=setInterval((()=>{let e=1,r=this.getMaterials();this.materialEquals(t,r)||(t=r),t.length>0&&(e=Math.min(t[0].opacity+i,1),t.forEach((t=>t.opacity=e))),e>=1&&this.clearFading()}),10)}materialEquals(e,t){return gAe.default.isEqualWith(e,t,((e,t)=>{if(!Array.isArray(e)||!Array.isArray(t))return e.id===t.id}))}fadeOut(e=1e3){let t=this.getMaterials(),i=1/(e/10),r=1/(e/10);this.clearFading(),this.scale.set(2,2,2),this.fadingOutInterval=setInterval((()=>{let e=this.scale.x+r;this.scale.set(e,e,e);let n=0;t.length>0&&(n=Math.max(t[0].opacity-i,0),t.forEach((e=>e.opacity=n))),(n<=0||e>=3)&&this.clearFading()}),10)}clearFading(){let e=this.getMaterials();this.fadingInInterval&&(clearInterval(this.fadingInInterval),this.fadingInInterval=void 0,this.visible=!0,e.forEach((e=>e.opacity=1)),this.renderOrder-=1),this.fadingOutInterval&&(clearInterval(this.fadingOutInterval),this.fadingOutInterval=void 0,this.visible=!1,e.forEach((e=>e.opacity=1)),this.scale.set(1,1,1))}getMaterials(){let e=this.thumbnailMesh;e||(e=this.mesh);let t=[];return Array.isArray(e.material)?t.push(...e.material):e.material&&t.push(e.material),t}create(){}createThumbnailMesh(e){return ht(this,null,(function*(){if(!this.thumbnailImages||6!=this.thumbnailImages.length)return;this.thumbnailMesh=new rt(new io(e,e,e)),this.thumbnailMesh.geometry.scale(1,1,-1);let t=(yield this.loadTexturesAsync(this.thumbnailImages)).map((e=>new lr({map:e,side:tn,transparent:!0})));this.thumbnailMesh&&(this.thumbnailMesh.material=t,this.add(this.thumbnailMesh))}))}loadTextures(e){return e.map((e=>this.textureLoader.load(e)))}loadTexturesAsync(e){return ht(this,null,(function*(){let t=e.map((e=>this.textureLoader.loadAsync(e)));return yield Promise.all(t)}))}destroyMesh(e){var t;this.remove(e),e.clear(),e.geometry.dispose(),Array.isArray(e.material)?e.material.forEach((e=>{var t;null==(t=e.map)||t.dispose(),e.dispose()})):(null==(t=e.material.map)||t.dispose(),e.material.dispose())}destroy(){this.clearFading(),this.images=[],this.mesh&&(this.mesh instanceof rt?this.destroyMesh(this.mesh):this.mesh.traverse((e=>{e instanceof rt&&this.destroyMesh(e)})),this.mesh=void 0)}},W3=class extends hm{constructor(e,t,i=200){if(super(e,t,i),6!==e.length)throw new Error(`[VRCube] Wrong number of images! Expected 6, got ${e.length}`)}create(){return ht(this,null,(function*(){yield this.createThumbnailMesh(this.size+.1),this.thumbnailMesh?this.createMesh():yield this.createMesh()}))}createMesh(){return ht(this,null,(function*(){let e=this.mesh;e.geometry=new io(this.size,this.size,this.size),e.geometry.scale(1,1,-1);let t=(yield this.loadTexturesAsync(this.images)).map((e=>new lr({map:e,side:tn,transparent:!0})));e.material=t,this.add(e),this.thumbnailMesh&&(this.destroyMesh(this.thumbnailMesh),this.thumbnailMesh=void 0,this.thumbnailImages=void 0)}))}},q3=class extends hm{constructor(e,t,i=200){if(super(e,t,i),24!==e.length)throw new Error(`[VRCube24Faces] Wrong number of images! Expected 24, got ${e.length}`);this.ratio=1,this.subPlaneWidth0=this.size*(this.ratio/(this.ratio+1)),this.subPlaneWidth1=this.size-this.subPlaneWidth0}create(){return ht(this,null,(function*(){yield this.createThumbnailMesh(this.size+.1),this.thumbnailMesh?this.createMesh():yield this.createMesh()}))}createMesh(){return ht(this,null,(function*(){var e;this.mesh=new ur,this.mesh.scale.set(1,1,-1);let t=(yield this.loadTexturesAsync(this.images)).map((e=>new lr({map:e,side:Wn,transparent:!0})));if(24!==t.length)throw new Error(`[VRCube24Faces] Wrong number of materials! Expected 24, got ${t.length}`);let i=this.createPlaneOfAFace(t.slice(0,4));i.rotateOnAxis(new A(0,1,0),-Math.PI/2),i.position.set(this.size/2,0,0);let r=this.createPlaneOfAFace(t.slice(4,8));r.rotateOnAxis(new A(0,1,0),Math.PI/2),r.position.set(-this.size/2,0,0);let n=this.createPlaneOfAFace(t.slice(8,12));n.rotateOnAxis(new A(1,0,0),-Math.PI/2),n.rotateOnAxis(new A(0,0,1),Math.PI),n.rotateOnAxis(new A(1,0,0),Math.PI),n.position.set(0,this.size/2,0);let s=this.createPlaneOfAFace(t.slice(12,16));s.rotateOnAxis(new A(1,0,0),Math.PI/2),s.rotateOnAxis(new A(0,0,1),Math.PI),s.rotateOnAxis(new A(1,0,0),Math.PI),s.position.set(0,-this.size/2,0);let a=this.createPlaneOfAFace(t.slice(16,20));a.rotateOnAxis(new A(0,1,0),Math.PI),a.position.set(0,0,this.size/2),this.createPlaneOfAFace(t.slice(20,24)).position.set(0,0,-this.size/2),this.add(this.mesh),this.thumbnailMesh&&(this.destroyMesh(this.thumbnailMesh),this.remove(this.thumbnailMesh),null==(e=this.thumbnailMesh)||e.clear(),this.thumbnailMesh=void 0)}))}createPlaneOfAFace(e){var t;let i=new ur,r=new is(this.subPlaneWidth0,this.subPlaneWidth0),n=new is(this.subPlaneWidth1,this.subPlaneWidth0),s=new is(this.subPlaneWidth0,this.subPlaneWidth1),a=new is(this.subPlaneWidth1,this.subPlaneWidth1),o=new rt(r,e[0]),l=new rt(n,e[1]),h=new rt(s,e[2]),u=new rt(a,e[3]);return o.position.set(this.subPlaneWidth1/2,this.subPlaneWidth1/2,0),l.position.set(-this.subPlaneWidth0/2,this.subPlaneWidth1/2,0),h.position.set(this.subPlaneWidth1/2,-this.subPlaneWidth0/2,0),u.position.set(-this.subPlaneWidth0/2,-this.subPlaneWidth0/2,0),o.geometry.scale(-1,1,1),l.geometry.scale(-1,1,1),h.geometry.scale(-1,1,1),u.geometry.scale(-1,1,1),i.add(o,l,h,u),null==(t=this.mesh)||t.add(i),i}},Y3=class extends hm{constructor(e,t,i=100){if(super(e,t,i),1!==e.length)throw new Error(`[VRSphere] Wrong number of images! Expected 1, got ${e.length}`)}create(){return ht(this,null,(function*(){yield this.createThumbnailMesh(this.size+.1),this.thumbnailMesh?this.createMesh():yield this.createMesh()}))}createMesh(){return ht(this,null,(function*(){var e;let t=this.mesh;t.geometry=new so(this.size,100,100),t.geometry.scale(-1,1,1);let i=(yield this.loadTexturesAsync(this.images)).map((e=>new lr({map:e,side:tn,transparent:!0})));t.material=i[0],this.add(t),this.thumbnailMesh&&(this.destroyMesh(this.thumbnailMesh),this.remove(this.thumbnailMesh),null==(e=this.thumbnailMesh)||e.clear(),this.thumbnailMesh=void 0)}))}},vAe=class extends em{constructor(e,t){super(e),this.name="BaseViewer",this.minFov=50,this.maxFov=95,this.raycaster=new Lc,this.autoRotate=!0,this.events=[],this.lastFrameExecuteTime=Date.now(),this.maxFps=60,this.isMousePressing=!1,this.settings=uT,this.jobCount=0,this.viewpoints=[],this.previousViewpointId="",this.previousPanoramaId="",this.activeViewpointId="",this.activePanoramaId="",this.viewpointAssetsMap=new Map,this.loadingPanos=[],this.onResize=()=>{var e;let t=null==(e=this.renderer)?void 0:e.domElement;t&&t.parentElement&&this.resize(t.parentElement.clientWidth,t.parentElement.clientHeight)},this.onMouseWheel=e=>{let t=e.wheelDelta>0?-5:5;this.updateFov(t)},this.viewerCfg=e,this.cameraCfg=t||{eye:[0,0,0],look:[0,0,0]},this.settings=uT,this.cameraCfg.near&&(this.settings.camera.near=this.cameraCfg.near),this.cameraCfg.far&&(this.settings.camera.far=this.cameraCfg.far),this.setSpinnerVisibility(++this.jobCount>0),this.init(),this.animate(),this.setSpinnerVisibility(--this.jobCount>0)}init(){let e=this.viewerCfg;this.initSpinner(),this.initScene(),this.initRenderer(),this.initCamera(),this.initControls(),this.initLights(),this.initEvents(),this.initOthers(),!0===e.enableAxisGizmo&&(this.axes=this.initAxes()),e.enableToolbar&&(this.toolbar=this.initToolbar()),e.enableBottomBar&&(this.bottomBar=this.initBottomBar())}initScene(){let e=new Nn;e.background=new je(16777215),e.matrixAutoUpdate=!0,this.scene=e}initRenderer(){var e,t;this.renderer=new Ll({antialias:!1,preserveDrawingBuffer:!1}),this.renderer.setPixelRatio(window.devicePixelRatio),this.renderer.setSize(this.width,this.height),this.css2dRenderer=new xf,this.css2dRenderer.setSize(this.width,this.height),this.css2dRenderer.domElement.style.height="0",this.css2dRenderer.domElement.style.width="0",null==(e=this.viewerContainer)||e.appendChild(this.renderer.domElement),null==(t=this.viewerContainer)||t.appendChild(this.css2dRenderer.domElement)}initCamera(){this.scene&&(this.camera=new kr(75,this.width/this.height,this.settings.camera.near,this.settings.camera.far),this.scene.add(this.camera))}initControls(){if(!this.renderer||!this.camera)return;let e=this.camera,t=this.viewerCfg,i=new IO(e,this.renderer.domElement,!0);i.enabled=!0,i.autoRotate=this.autoRotate,i.autoRotateSpeed=t.autoRotateSpeed||-2,i.enablePan=!1,i.enableZoom=!1,i.enableRotate=!0,i.rotateSpeed=.3,i.minPolarAngle=.05*Math.PI,i.maxPolarAngle=.95*Math.PI,i.listenToKeyEvents(document.body),i.update(),this.controls=i,this.controlsHelper=new sA(e,i),this.controls.controlsHelper=this.controlsHelper,this.autoRotate&&this.controlsHelper.delayAutoRotate(),this.controlsHelper.automaticallyAdjustCameraPosition=!1,this.controls.addEventListener("end",(()=>{this.handleDragEnd&&this.handleDragEnd()}));let r=new A(0,0,0),n=new A(10,0,0);this.setCameraPositionAndDirection(r,n)}onKeyDown(e){return t=>{var i,r;let n=e.camera,s=e.controls;!n||!s||(("ArrowLeft"===t.code||"ArrowRight"===t.code||"ArrowUp"===t.code||"ArrowDown"===t.code)&&(null==(i=this.controlsHelper)||i.startToRotate(t)),null==(r=this.controlsHelper)||r.delayAutoRotate())}}initLights(){if(!this.scene)return;let e=new ta(16777215,.3);e.position.set(-2,2,4),this.scene.add(e)}initEvents(){let e=this.renderer,t=this.camera;if(!e||!t)return;let i=!1,r=-1,n=-1;this.addEvent(window,"keydown",this.onKeyDown(this)),this.addEvent(window,"resize",this.onResize),this.addEvent(window,"mousewheel",this.onMouseWheel),this.addEvent(window,"pointerdown",(t=>{var s;r=t.x,n=t.y,i=!1,this.isMousePressing=!0,this.autoRotate&&(null==(s=this.controlsHelper)||s.delayAutoRotate()),t.button===sC.LEFT&&t.target instanceof HTMLCanvasElement&&(e.domElement.style.cursor="move")})),this.addEvent(window,"pointermove",(e=>{r>=0&&n>=0&&(Math.abs(e.x-r)>5||Math.abs(e.y-n)>5)&&(i=!0)})),this.addEvent(window,"pointerup",(r=>{var n,s;if(this.isMousePressing=!1,this.autoRotate&&(null==(n=this.controlsHelper)||n.delayAutoRotate()),e.domElement.style.cursor="auto",!i&&r.button===sC.LEFT)if(r.target&&r.target instanceof HTMLDivElement){let e=_f.tryFindObjectId(r.target);if(e){let t=null==(s=this.scene)?void 0:s.getObjectById(e);if(t){let e=t.userData.hotpoint;e&&(ie.info("[VRViewer] Clicked on hotpoint: ",e.hotpointId||e),this.onHotpointClicked&&this.onHotpointClicked(e))}}}else{let e=this.getIntersection(r);if(e){let i=e=>_t.vectorToString(e),r=e.point,n=r.clone().sub(t.position).normalize();ie.info(`[VRViewer] Clicked at: ${i(r)},\n Camera position: ${i(t.position)},\n Target direction: ${i(n)}`)}}}))}initSpinner(){var e;let t=document.createElement("div");t.classList.add("spinner");let i=document.createElement("div");i.classList.add(fo,"icon-loading"),t.append(i),null==(e=this.widgetContainer)||e.appendChild(t),this.spinner=t,this.setSpinnerVisibility(this.jobCount>0)}initOthers(){!this.controls||!this.renderer||!this.camera||(this.renderer.domElement.style.outlineWidth="0")}initAxes(){var e;let t=document.createElement("div");t.classList.add("axesRenderer");let i=new If(t,this.camera);return null==(e=this.widgetContainer)||e.append(t),i}initToolbar(){let e=this.viewerCfg;return new bh(this,Br(Br({},uCe),e.toolbarMenuConfig),[["SceneClear"]])}initBottomBar(){return new am(this)}animate(){var e,t,i;if(this.requestAnimationFrameHandle=requestAnimationFrame(this.animate.bind(this)),this.maxFps>0){let e=Date.now()-this.lastFrameExecuteTime;if(e<1e3/this.maxFps)return;if(this.lastFrameExecuteTime=Date.now(),this.autoRotate){let t=this.controlsHelper;t&&t.autoRotateRemainingTime>0&&!this.isMousePressing&&(t.autoRotateRemainingTime-=e,t.autoRotateRemainingTime<=0&&this.controls&&t.startAutoRotate())}}this.controls&&this.controls.update(),this.scene&&this.camera&&(null==(e=this.renderer)||e.render(this.scene,this.camera),null==(t=this.css2dRenderer)||t.render(this.scene,this.camera),null==(i=this.css3dRenderer)||i.render(this.scene,this.camera))}clearAllCachedPanoramas(){this.handleCameraUpdateInterval(),this.loadingPanos.forEach((e=>{e.creationPromise&&(e.creationPromise.cancel(),e.creationPromise=void 0)})),this.viewpointAssetsMap.forEach((e=>{var t;let i=e.panoramas;for(let e=i.length-1;e>=0;--e){let r=i[e];r.box.destroy(),null==(t=this.scene)||t.remove(r.box)}})),this.loadingPanos=[],this.viewpointAssetsMap.clear(),this.activePanoramaId="",this.activePanoramaId="",this.previousViewpointId="",this.previousPanoramaId=""}destroy(){var e,t,i,r;this.events.forEach((e=>e.node.removeEventListener(e.type,e.func))),this.events=[],this.clearAllCachedPanoramas(),this.css2dRenderer&&(null==(e=this.viewerContainer)||e.removeChild(this.css2dRenderer.domElement)),null==(t=this.spinner)||t.remove(),null==(i=this.axes)||i.dispose(),null==(r=this.toolbar)||r.destroy(),super.destroy()}updateFov(e){var t;let i=this.camera;if(!i)return;let r=this.minFov,n=this.maxFov,s=e=>{let t=i.fov+e;t=Math.min(t,n),t=Math.max(t,r),i.fov!==t&&(i.fov=t,i.updateProjectionMatrix())},a=e/20;for(let e=0;e<20;++e)setTimeout((()=>s(a)),5*e);this.autoRotate&&(null==(t=this.controlsHelper)||t.delayAutoRotate())}setMinAndMaxFov(e,t){let i=this.controls;i&&(this.minFov=e,this.maxFov=t,i.minFov=e,i.maxFov=t)}resize(e,t){var i,r,n;let s=this.camera;s&&(this.width=e||window.innerWidth,this.height=t||window.innerHeight,s.aspect=this.width/this.height,s.updateProjectionMatrix(),null==(i=this.renderer)||i.setSize(this.width,this.height),null==(r=this.css2dRenderer)||r.setSize(this.width,this.height),null==(n=this.css3dRenderer)||n.setSize(this.width,this.height))}enableAutoRotate(e){this.controls&&(this.autoRotate=e,this.controls.autoRotate=e)}setAutoRotateSpeed(e=1){this.controls&&(this.controls.autoRotateSpeed=e)}setCameraFov(e=75){let t=this.camera;t&&(t.fov=e,t.updateProjectionMatrix())}setSpinnerVisibility(e){this.spinner&&(e?this.spinner.classList.remove("hidden"):this.spinner.classList.add("hidden"))}addEvent(e,t,i){e.addEventListener(t,i),this.events.push({node:e,type:t,func:i})}setCameraPositionAndDirection(e,t,i){let r,n,s=this.camera,a=this.controls;if(!s||!a)return;r=t?Array.isArray(t)?new A(t[0],t[1],t[2]):new A(t.x,t.y,t.z):a.target.clone().sub(s.position),r.normalize(),n=Array.isArray(e)?new A(e[0],e[1],e[2]):new A(e.x,e.y,e.z);let o=n.clone().addScaledVector(r,.01);this.fianlCameraPosition=n,this.finalCameraTarget=o;let l=(e,t)=>{s.position.set(e.x,e.y,e.z),a.target.set(t.x,t.y,t.z),a.update()};if(!1===i)return this.cameraUpdateInterval&&clearInterval(this.cameraUpdateInterval),void l(n,o);let h=s.position.clone(),u=a.target.clone(),c=500,p=Date.now();this.cameraUpdateInterval&&clearInterval(this.cameraUpdateInterval),this.cameraUpdateInterval=setInterval((()=>{let e=Date.now()-p;e>c&&(e=c);let t=(e,t,i)=>{let r=e.x+(t.x-e.x)*i,n=e.y+(t.y-e.y)*i,s=e.z+(t.z-e.z)*i;return new A(r,n,s)},i=t(h,n,e/c),r=t(u,o,e/c);l(i,r),e>=c&&(clearInterval(this.cameraUpdateInterval),this.cameraUpdateInterval=void 0)}),10)}getCameraPositionAndDirection(){let e=this.camera;if(!e)return;let t=e.position,i=new A;return e.getWorldDirection(i),{position:{x:t.x,y:t.y,z:t.z},direction:{x:i.x,y:i.y,z:i.z}}}getCameraFov(){let e=this.camera;if(e)return e.fov}setViewpoints(e){this.handleCameraUpdateInterval(),this.viewpointAssetsMap.size>0&&(this.viewpointAssetsMap.forEach((e=>{let t=e.panoramas,i=e.css2dObjects;t.forEach((e=>{var t;e.box.destroy(),null==(t=this.scene)||t.remove(e.box)})),i.forEach((e=>{var t;null==(t=this.scene)||t.remove(e)}))})),this.viewpointAssetsMap.clear()),this.loadingPanos.forEach((e=>{e.creationPromise&&(e.creationPromise.cancel(),e.creationPromise=void 0)})),this.loadingPanos=[],this.previousViewpointId="",this.previousPanoramaId="",this.activeViewpointId="",this.activePanoramaId="",this.viewpoints=e}addPanorama(e,t){let i=this.viewpoints.find((t=>t.id===e));if(!i)throw new Error(`[VRViewer] Failed to find viewpoint by id '${e}'`);i.panoramas||(i.panoramas=[]),i.panoramas.push(t)}findPanorama(e,t){let i=this.viewpoints.find((t=>t.id===e));if(i&&i.panoramas)return i.panoramas.find((e=>e.id===t))}setHotpointsVisibility(e,t="",i=[]){if(!this.viewpoints)return;let r=t=>{var r;let n=this.viewpointAssetsMap.get(t.id),s=(null==n?void 0:n.css2dObjects)||[];null==(r=t.hotpoints)||r.forEach((r=>{if(i&&i.length>0){if(-1===i.findIndex((e=>e===r.hotpointId)))return;if(r.visible=e,this.activeViewpointId===t.id){let t=s.find((e=>e.userData.hotpoint.hotpointId===r.hotpointId));t&&(t.visible=e)}}else r.visible=e,this.activeViewpointId===t.id&&s.forEach((t=>t.visible=e))}))};if(t){let e=this.viewpoints.find((e=>e.id===t));e&&r(e)}else this.viewpoints.forEach((e=>r(e)))}addHotpoints(e){if(!this.activeViewpointId||!e)return;let t=this.viewpoints.find((e=>e.id===this.activeViewpointId)),i=this.viewpointAssetsMap.get(this.activeViewpointId);!t||!i||(t.hotpoints||(t.hotpoints=[]),e.forEach((e=>{var r,n;if(-1!==(null==(r=t.hotpoints)?void 0:r.findIndex((t=>t.hotpointId===e.hotpointId))))return void ie.warn(`[VRViewer] Duplicated hotpointId: ${e.hotpointId}`);let s=t.position||[0,0,0],a=e.anchorPosition,o=_f.createHotpoint(e.html),l=new A(a[0],a[1],a[2]),h=new A(s[0],s[1],s[2]);this.relocateAnchorIfTooCloseToCamera(o,l,h),o.visible=!1!==e.visible,o.userData.hotpoint=e,i.css2dObjects.push(o),null==(n=this.scene)||n.add(o),t.hotpoints.push(e)})))}removeHotpoints(e){if(!this.activeViewpointId||!e)return;let t=this.viewpoints.find((e=>e.id===this.activeViewpointId)),i=this.viewpointAssetsMap.get(this.activeViewpointId);!t||!i||e.forEach((e=>{var r,n;if(t.hotpoints)for(let i=t.hotpoints.length-1;i>=0;--i)e===t.hotpoints[i].hotpointId&&t.hotpoints.splice(i,1);for(let t=i.css2dObjects.length-1;t>=0;--t){let s=i.css2dObjects[t];e===(null==(r=s.userData.hotpoint)?void 0:r.hotpointId)&&(i.css2dObjects.splice(t,1),null==(n=this.scene)||n.remove(s))}}))}activeViewpointById(e,t,i,r){this.activatePanoramaById(e,"",!0,t,i,r)}activatePanoramaById(e,t,i=!0,r,n,s){if(e===this.activeViewpointId&&t===this.activePanoramaId)return;let a=this.viewpoints.find((t=>t.id===e));a&&this.activatePanorama(a,t,i,r,n,s)}removeCachedPanoramas(){this.viewpointAssetsMap.forEach(((e,t)=>{var i;let r=e.panoramas;for(let e=r.length-1;e>=0;--e){let n=r[e];if(t===this.activeViewpointId&&n.id===this.activePanoramaId||t===this.previousViewpointId&&n.id===this.previousPanoramaId)return;n.box.destroy(),null==(i=this.scene)||i.remove(n.box),r.splice(e,1)}}))}unlimitControlsAndShowAssets(e=!1){if(this.controls){let e=this.controls;e.enablePan=!0,e.enableZoom=!0}this.viewpointAssetsMap.forEach((t=>{t.panoramas.forEach((e=>{e.box.visible=!0})),e&&t.css2dObjects.forEach((e=>{e.visible=!0}))}))}relocateAnchorIfTooCloseToCamera(e,t,i){let r=this.camera;if(!r)return ie.error("[VRViewer] Camera is not initialized"),void e.position.set(t.x,t.y,t.z);let n,s=Math.abs(t.distanceTo(i));if(s{let r=e.panoramas.find((e=>e.id===t)),n=null==r?void 0:r.box;n&&(i?this.fadeIn(n):this.fadeOut(n))},u=(e,t)=>{e.css2dObjects.forEach((e=>{t?!1!==e.userData.hotpoint.visible&&(e.visible=t):e.visible=t}))},c=()=>{var t;let n=new A(0,0,0),s=new A(1,0,0),a=null==(t=this.getCameraPositionAndDirection())?void 0:t.direction;a&&s.set(a.x,a.y,a.z);let o=e.position;if(o&&3===o.length&&n.set(o[0],o[1],o[2]),i){let t=e.initialDirection;t&&3===t.length&&s.set(t[0],t[1],t[2])}this.setCameraPositionAndDirection(n,s,r)};!t&&(null==(a=e.panoramas)?void 0:a.length)>0&&(t=e.panoramas[0].id||""),this.handleCameraUpdateInterval();let p=this.viewpointAssetsMap.get(this.activeViewpointId),d=this.viewpointAssetsMap.get(e.id);if(this.activeViewpointId&&p&&(this.activeViewpointId!==e.id&&u(p,!1),h(p,this.activePanoramaId,!1)),d&&d.panoramas.find((e=>e.id===t)))return h(d,t,!0),this.activeViewpointId!==e.id&&u(d,!0),this.activeViewpointId!==e.id&&c(),this.activeViewpointId=e.id,this.activePanoramaId=t,void(n&&n(e));this.previousViewpointId=this.activeViewpointId,this.previousPanoramaId=this.activePanoramaId,this.activeViewpointId=e.id,this.activePanoramaId=t;try{if(this.loadingPanos.some((i=>i.viewpointId===e.id&&i.panoramaId===t)))return void ie.warn(`[VRViewer] Panorama with viewpointId=${e.id} and panoramaId=${t} is being created`);let i=new LC(this.createBoxByImageOrImages(e,t));this.loadingPanos.push({viewpointId:e.id,panoramaId:t,creationPromise:i});let r=yield i.promise;this.loadingPanos=this.loadingPanos.filter((i=>i.viewpointId!==e.id||i.panoramaId!==t));let s=e.position;s&&3===s.length&&r.position.set(s[0],s[1],s[2]),this.activeViewpointId===e.id&&this.activePanoramaId===t?(this.fadeIn(r),null==(o=this.scene)||o.add(r),c()):(r.visible=!1,null==(l=this.scene)||l.add(r));let a={id:t,box:r},h=this.viewpointAssetsMap.get(e.id);if(h)h.panoramas.push(a),u(h,!0);else{let i=[];e.hotpoints&&e.hotpoints.forEach((n=>{let s=n.anchorPosition,a=_f.createHotpoint(n.html);a.visible=!1!==n.visible,a.userData.hotpoint=n;let o=new A(s[0],s[1],s[2]);this.relocateAnchorIfTooCloseToCamera(a,o,r.position),(this.activeViewpointId!==e.id||this.activePanoramaId!==t)&&(a.visible=!1),i.push(a)}));let n={panoramas:[a],css2dObjects:i};this.viewpointAssetsMap.set(e.id,n),i.forEach((e=>{var t;return null==(t=this.scene)?void 0:t.add(e)}))}n&&n(e)}catch(e){"cancel"!==e.type&&s&&s(e)}}))}createBoxByImageOrImages(e,t){var i;let r=e.imageOrImages,n=e.thumbnailImages;if((null==(i=e.panoramas)?void 0:i.length)>0){let i=this.findPanorama(e.id,t);i||(i=e.panoramas[0],ie.warn(`[VRViewer] Failed to find panorama by id '${t}', will use the first one`)),r=i.images,n=i.thumbnails}if(!r)throw new Error("[VRViewer] Invalid images!");if(Array.isArray(r)||(r=[r]),1===r.length)return this.createBoxByImage(r,n);if(6===r.length)return this.createBoxBy6Images(r,n);if(24===r.length)return this.createBoxBy24Images(r,n);throw new Error(`[VRViewer] Wrong number of images! Expected 1/6/24, got ${r.length}`)}createBoxByImage(e,t){return ht(this,null,(function*(){let i=new Y3(e,t);return yield i.create(),i}))}createBoxBy6Images(e,t){return ht(this,null,(function*(){if(6!==e.length)throw new Error(`[VRCube] Wrong number of images! Expected 6, got ${e.length}`);let i=new W3(e,t);return yield i.create(),i}))}createBoxBy24Images(e,t){return ht(this,null,(function*(){if(24!==e.length)throw new Error(`[VRCube] Wrong number of images! Expected 24, got ${e.length}`);let i=new q3(e,t);return yield i.create(),i}))}getIntersection(e){if(!this.camera||!this.scene)return;let t=this.viewpointAssetsMap.get(this.activeViewpointId);if(!t)return;let i=t.panoramas.find((e=>e.id===this.activePanoramaId));if(!i)return;let r=i.box,n=this.viewerContainer,s=new le;e&&(s=Ai.getScreenPointByEvent(e,n));let a=Ai.screenPoint2NdcPoint(s,this.camera,n);this.raycaster.setFromCamera(a,this.camera);let o=[r],l=this.raycaster.intersectObjects(o,!0)||[];return l.length>0?l.find((e=>{let t=e.object;return t.visible&&t instanceof rt})):void 0}fadeIn(e,t=500){e.fadeIn(t)}fadeOut(e,t=1e3){e.fadeOut(t)}handleCameraUpdateInterval(){if(this.cameraUpdateInterval){clearInterval(this.cameraUpdateInterval);let e=this.fianlCameraPosition,t=this.finalCameraTarget;if(e&&t&&this.controls&&this.camera){this.camera.position.set(e.x,e.y,e.z);let i=this.controls;i.target.set(t.x,t.y,t.z),i.update()}this.cameraUpdateInterval=void 0}this.fianlCameraPosition=void 0,this.finalCameraTarget=void 0}getHitResult(e){let t={location:null};if(!this.camera)return t;let i=this.getIntersection(e);return t.location=i?{x:i.point.x,y:i.point.y,z:i.point.z}:null,t}lookToPosition(e){var t;if(!this.camera)return;this.handleCameraUpdateInterval();let i=new A(e[0],e[1],e[2]).clone().sub(this.camera.position);null==(t=this.controlsHelper)||t.lookTo(i)}};export{JXt as AXIS_SECTION_PLANE_CONTROL_ID,KXt as AXIS_SECTION_PLANE_ID,YO as AngleMeasurement,iG as AnnotationTable,XO as AreaMeasurement,ck as ArrowMarkup,jO as AxisPlaneSection,lCe as AxisType,j8 as BYBLOCK,rO as BYLAYER,iu as BaseMeasurement,im as BaseSection,uh as BaseTable,hm as BaseVRMesh,em as BaseViewer,uAe as BimViewer,Cf as BinaryReader,S0 as BitView,Kf as BoxSelectHelper,_f as CSS2DObjectUtils,Jl as CameraControlsEx,LC as CancelablePromise,wr as CanvasRender,uk as CircleMarkup,Gp as CloudLineMarkup,hk as CloudRectMarkup,_t as CommonUtils,A0 as CompareDrawable,sA as ControlsHelper,lT as CoordinateAxes,If as CoordinateAxesViewport,Ai as CoordinateConversionUtils,$O as CoordinateMeasurement,Wx as CreateEdgesGeometryWorker,cCe as DEFAULT_BIMVIEWER_TOOLBAR_CONFIG,pCe as DEFAULT_BIM_VIEWER_CONFIG,hCe as DEFAULT_DXFVIEWER_TOOLBAR_CONFIG,Xpe as DEFAULT_LABEL_FONT_SIZE,eEt as DEFAULT_LINE_WIDTH,iCe as DEFAULT_MARKUP_TOOLBAR_CONFIG,dO as DEFAULT_SIZE,uCe as DEFAULT_VRVIEWER_TOOLBAR_CONFIG,Ii as DeviceUtils,ZO as DistanceMeasurement,pk as DotMarkup,Na as Drawable,$u as DrawableList,Z8 as DxfChangeType,Xn as DxfCompare,tCe as DxfCompareMarkupManager,eE as DxfDataTable,Er as DxfLoader,b0 as DxfParser,JMe as DxfRenderOrder,dAe as DxfViewer,ZXt as ENTER_KEY,$Xt as ESC_KEY,dk as EllipseMarkup,Os as Event,Qx as Exploder,Vg as ExportUtils,hh as FontDataTable,kC as FpsUtils,hde as GROUND_PLANE_RENDER_ORDER,rCe as GROUP_CONFIG,VC as GenerateMeshBvhWorker,kt as GeometryUtils,ia as GroundUtils,fo as ICON_FONT_CLASS,V_ as IUploader,os as IndexedDbManager,w0 as InputManager,aA as InstantiateHelper,YXt as KEYDOWN_EVENT,XXt as KEYUP_EVENT,OLt as Keys,uO as LinePatternShaders,Jc as LoadingHelper,dCe as LocalDxfUploader,fCe as LocalImageUploader,JO as LocalModelUploader,qB as MOUSEDOWN_EVENT,wf as MOUSEMOVE_EVENT,WB as MOUSEUP_EVENT,F_ as MarkupManager,VO as MarkupToolbar,Zo as MarkupType,Ps as MaterialUtils,ar as MathUtils,nu as MeasurementManager,rc as MeasurementType,GO as MenuTypeEnums,Yi as MergeUtils,rE as MeshBvhHelper,e3 as NavCube,t3 as NavCubeViewport,y0 as NestCompareTypes,OO as OSnapHelper,FLt as OSnapType,ADe as ObjectPixelSizeHelper,ti as ObjectUtils,r3 as ObjectsBoxSection,GC as Offset,mDe as Orientation,i3 as PickPlaneSection,Mf as PolygonUtils,fk as PolylineMarkup,fT as RafHelper,mk as RectMarkup,t$t as SECTION_BOX_ID,e$t as SECTION_PLANE_CONTROL_ID,QXt as SECTION_PLANE_ID,YB as SECTION_PLANE_NAME,_De as SHP,xO as SHPLoader,EO as SHPParser,N3r as SIMPLE_BIM_VIEWER_CONFIG,qpe as SNAP_ICON_COLOR,Ype as SNAP_ICON_SIZE,ALt as STATE,Hpe as SVGObject,cT as SVGObjectUtils,Upe as SVGRenderer,yn as SceneUtils,n3 as SectionManager,pT as SectionType,Xu as SectionUtils,bO as ShpThree,Zc as ShxFont,_0 as ShxFontLoader,I0 as ShxFontType,mAe as SimplifiedBimViewer,eI as SimplifyUtils,$o as SkyboxUtils,sl as SnapDrawable,$pe as SnapType,gk as TextMarkup,Hc as TextureUtils,bh as Toolbar,DG as ToolbarMenu,H_ as ToolbarMenuId,uE as UndoRedoHelper,tG as Units,IO as VRControls,W3 as VRCube,q3 as VRCube24Faces,Y3 as VRSphere,vAe as VRViewer,Is as Viewer3DUtils,Df as ViewerEvent,b5t as ViewerMode,fE as ViewerName,nG as ViewpointTable,lk as Views,G3 as WebCam,vk as XMarkup,mE as ZoomToRectHelper,eG as bspline,fDe as checkIsNewVersion,dde as cn,hDe as createHatchPatternShaderMaterial,fLt as decodeDxfTextCharacterCodes,gLt as decodeDxfTextMbcsCharacterCodes,mLt as decodeDxfTextUnicodeCodePoints,pde as en,yZt as getLengthValueByUnit,tI as getUnitStr,yLt as getVersionFromLocalStorage,Yu as layerForNonSnapableObjects,Yn as layerForUnselectableObjects,ie as log,vn as matrixAutoUpdate,hO as parseDxfMTextContent,pO as parseDxfTextContent,J8 as round10,qXt as sceneAutoUpdate,UC as setIcon,Wpe as setLogLevel,TLt as setVersionToLocalStorage,qu as showPrecisionValue,Yde as unitConversionByMeter,h1t as unitLabel,rG as unitScaleConversion,pDe as unitScaleToMeter}; \ No newline at end of file diff --git a/public/demo/libs/types/src/components/bottom-bar/BottomBar.d.ts b/public/demo/libs/types/src/components/bottom-bar/BottomBar.d.ts index 6309d70..78ad1b9 100644 --- a/public/demo/libs/types/src/components/bottom-bar/BottomBar.d.ts +++ b/public/demo/libs/types/src/components/bottom-bar/BottomBar.d.ts @@ -1,6 +1,6 @@ -import { IconClass } from "../../core/utils/CommonUtils"; -import { BimViewer, DxfViewer, VRViewer } from "../../core/viewers"; -import { Tooltip } from "../tool-tip/Tooltip"; +import { Tooltip } from "../../components/tool-tip"; +import { IconClass } from "../../core/utils"; +import { BaseViewer } from "../../core/viewers/BaseViewer"; declare enum BottomBarItemId { statistics = "statistics", cameraInfo = "cameraInfo", @@ -16,16 +16,16 @@ interface BottomBarItemConfig { onUpdate?: (item: BottomBarItem) => void; } export declare class BottomBar { - protected readonly viewer: BimViewer | DxfViewer | VRViewer; + protected readonly viewer: BaseViewer; private element; itemList: Map; - constructor(viewer: BimViewer | DxfViewer | VRViewer); + constructor(viewer: BaseViewer); update(): void; private init; private createItem; } declare class BottomBarItem { - readonly viewer: BimViewer | DxfViewer | VRViewer; + readonly viewer: BaseViewer; private readonly bottomBar; protected readonly menuId: string; protected cfg: BottomBarItemConfig; @@ -34,7 +34,7 @@ declare class BottomBarItem { tooltip: Tooltip; element: HTMLElement; active: boolean; - constructor(viewer: BimViewer | DxfViewer | VRViewer, bottomBar: BottomBar, menuId: string, cfg: BottomBarItemConfig); + constructor(viewer: BaseViewer, bottomBar: BottomBar, menuId: string, cfg: BottomBarItemConfig); private createButton; setActive(active: boolean): void; update(): void; diff --git a/public/demo/libs/types/src/components/context-menu/ContextMenu.d.ts b/public/demo/libs/types/src/components/context-menu/ContextMenu.d.ts index 182bd56..3a945f0 100644 --- a/public/demo/libs/types/src/components/context-menu/ContextMenu.d.ts +++ b/public/demo/libs/types/src/components/context-menu/ContextMenu.d.ts @@ -1,9 +1,9 @@ +import { Toolbar } from "../../components/toolbar"; import { Context as ContextFromConfigs, ContextMenuConfig as ContextMenuConfigFromConfigs, ContextMenuItem } from "../../core/Configs"; -import { AxisPlaneSection, ObjectsBoxSection, ObjectsPlaneSection, PickPlaneSection } from "../../core/section"; -import { BimViewer } from "../../core/viewers"; -import { Toolbar } from "../toolbar"; +import type { AxisPlaneSection, ObjectsBoxSection, PickPlaneSection } from "../../core/section"; +import type { BimViewer } from "../../core/viewers"; export interface Context extends ContextFromConfigs { - section?: ObjectsBoxSection | ObjectsPlaneSection | PickPlaneSection | AxisPlaneSection; + section?: ObjectsBoxSection | PickPlaneSection | AxisPlaneSection; toolbar?: Toolbar; } export interface ContextMenuConfig extends ContextMenuConfigFromConfigs { diff --git a/public/demo/libs/types/src/components/dat-gui/BimViewerDatGui.d.ts b/public/demo/libs/types/src/components/dat-gui/BimViewerDatGui.d.ts index add057a..17ce8ed 100644 --- a/public/demo/libs/types/src/components/dat-gui/BimViewerDatGui.d.ts +++ b/public/demo/libs/types/src/components/dat-gui/BimViewerDatGui.d.ts @@ -1,6 +1,6 @@ import * as dat from "dat.gui"; import { Exploder } from "../../core/exploder/Exploder"; -import { BimViewer } from "../../core/viewers"; +import type { BimViewer } from "../../core/viewers"; /** * @internal */ diff --git a/public/demo/libs/types/src/components/dxf-layout-bar/DxfLayoutBar.d.ts b/public/demo/libs/types/src/components/dxf-layout-bar/DxfLayoutBar.d.ts index e28de92..97d116f 100644 --- a/public/demo/libs/types/src/components/dxf-layout-bar/DxfLayoutBar.d.ts +++ b/public/demo/libs/types/src/components/dxf-layout-bar/DxfLayoutBar.d.ts @@ -1,4 +1,4 @@ -import { DxfViewer } from "../../core/viewers"; +import type { DxfViewer } from "../../core/viewers"; export declare class DxfLayoutBar { protected readonly viewer: DxfViewer; private element?; diff --git a/public/demo/libs/types/src/components/pop-panel/AxisSectionPopPanel.d.ts b/public/demo/libs/types/src/components/pop-panel/AxisSectionPopPanel.d.ts index 54d32f9..fda3a85 100644 --- a/public/demo/libs/types/src/components/pop-panel/AxisSectionPopPanel.d.ts +++ b/public/demo/libs/types/src/components/pop-panel/AxisSectionPopPanel.d.ts @@ -1,18 +1,16 @@ -import { Emitter } from "mitt"; import { PopPanel } from "./PopPanel"; -import { AxisType } from "../../core/section/AxisPlaneSection"; -export type Events = { - axis: AxisType; - visible: boolean; -}; +import { AxisPlaneSection } from "../../core/section/AxisPlaneSection"; +import type { BaseViewer } from "../../core/viewers/BaseViewer"; export declare class AxisSectionPopPanel extends PopPanel { protected axis: string; protected activeItem?: string; protected groupSelectNode?: HTMLElement; protected activeSelectNode?: HTMLElement; protected isVisible: boolean; - eventBus: Emitter; - constructor(container?: HTMLElement); + protected section: AxisPlaneSection; + constructor(viewer: BaseViewer); + keydown: (e: KeyboardEvent) => void; + destroy(): void; createGroupSelectLayout(): void; addGroupSelectItems(): void; createActiveSelectLayout(): void; diff --git a/public/demo/libs/types/src/components/pop-panel/PickSectionPopPanel.d.ts b/public/demo/libs/types/src/components/pop-panel/PickSectionPopPanel.d.ts index b4799c6..06f7d03 100644 --- a/public/demo/libs/types/src/components/pop-panel/PickSectionPopPanel.d.ts +++ b/public/demo/libs/types/src/components/pop-panel/PickSectionPopPanel.d.ts @@ -1,17 +1,16 @@ -import { Emitter } from "mitt"; import { PopPanel } from "./PopPanel"; -export type Events = { - visible: boolean; - reset: void; -}; +import type { PickPlaneSection } from "../../core/section/PickPlaneSection"; +import type { BaseViewer } from "../../core/viewers/BaseViewer"; export declare class PickSectionPopPanel extends PopPanel { - eventBus: Emitter; protected activeSelectNode?: Element; protected isVisible: boolean; protected enabled: boolean; protected visibleNode?: HTMLElement; protected resetNode?: HTMLElement; - constructor(container?: HTMLElement); + protected section: PickPlaneSection; + constructor(viewer: BaseViewer); + keydown: (e: KeyboardEvent) => void; + destroy(): void; createActiveSelectLayout(): void; addActiveItems(): void; enable(): void; diff --git a/public/demo/libs/types/src/components/toolbar/MarkupToolbar.d.ts b/public/demo/libs/types/src/components/toolbar/MarkupToolbar.d.ts index a7f6205..8bb0a60 100644 --- a/public/demo/libs/types/src/components/toolbar/MarkupToolbar.d.ts +++ b/public/demo/libs/types/src/components/toolbar/MarkupToolbar.d.ts @@ -1,6 +1,6 @@ import { Toolbar } from "./Toolbar"; import { ToolbarConfig, ToolbarMenuId } from "./Toolbar.constants"; -import { BimViewer, DxfViewer, VRViewer } from "../../core/viewers"; +import type { BimViewer, DxfViewer, VRViewer } from "../../core/viewers"; /** * @internal */ @@ -10,4 +10,5 @@ export declare const DEFAULT_MARKUP_TOOLBAR_CONFIG: ToolbarConfig; */ export declare class MarkupToolbar extends Toolbar { constructor(bimViewer: T, menuConfig: ToolbarConfig, groupConfig?: ToolbarMenuId[][] | string[][]); + keydown: () => void; } diff --git a/public/demo/libs/types/src/components/toolbar/Toolbar.config.d.ts b/public/demo/libs/types/src/components/toolbar/Toolbar.config.d.ts index dec3a6b..bf3f164 100644 --- a/public/demo/libs/types/src/components/toolbar/Toolbar.config.d.ts +++ b/public/demo/libs/types/src/components/toolbar/Toolbar.config.d.ts @@ -1,16 +1,9 @@ -import { ToolbarConfig, ToolbarMenuId } from "./Toolbar.constants"; -import { BimViewer, DxfViewer, VRViewer } from "../../core/viewers"; -/** - * Toolbar.config - **/ +import { ToolbarConfig } from "./Toolbar.constants"; +import type { BimViewer, DxfViewer, VRViewer } from "../../core/viewers"; /** * @internal */ export declare const DEFAULT_BIMVIEWER_TOOLBAR_CONFIG: ToolbarConfig; -/** - * @internal - */ -export declare const GROUP_CONFIG: ToolbarMenuId[][]; /** * @internal */ diff --git a/public/demo/libs/types/src/components/toolbar/Toolbar.constants.d.ts b/public/demo/libs/types/src/components/toolbar/Toolbar.constants.d.ts index ac50eb8..7dd2371 100644 --- a/public/demo/libs/types/src/components/toolbar/Toolbar.constants.d.ts +++ b/public/demo/libs/types/src/components/toolbar/Toolbar.constants.d.ts @@ -1,4 +1,4 @@ -import { Toolbar } from "./Toolbar"; +import type { Toolbar } from "./Toolbar"; import { IconClass } from "../../core/utils"; import type { BaseViewer } from "../../core/viewers"; /** @@ -53,7 +53,7 @@ export declare enum ToolbarMenuId { Section = "Section", SectionBox = "SectionBox", SectionPlane = "SectionPlane", - AxisSectionPlane = "AxisSectionPlane", + SectionAxis = "SectionAxis", BimTree = "BimTree", Viewpoint = "Viewpoint", Annotation = "Annotation", @@ -64,7 +64,8 @@ export declare enum ToolbarMenuId { Fullscreen = "FullScreen", SceneClear = "SceneClear", Layers = "Layers", - ZoomToRectangle = "ZoomToRectangle" + ZoomToRectangle = "ZoomToRectangle", + Screenshot = "GetScreenshot" } /** * ToolbarConfig @@ -89,3 +90,7 @@ export interface ToolbarMenuConfig { export type ToolbarConfig = { [key in ToolbarMenuId]?: ToolbarMenuConfig; }; +/** + * @internal + */ +export declare const GROUP_CONFIG: ToolbarMenuId[][]; diff --git a/public/demo/libs/types/src/components/toolbar/Toolbar.d.ts b/public/demo/libs/types/src/components/toolbar/Toolbar.d.ts index c4a1ec2..614c0e3 100644 --- a/public/demo/libs/types/src/components/toolbar/Toolbar.d.ts +++ b/public/demo/libs/types/src/components/toolbar/Toolbar.d.ts @@ -44,9 +44,13 @@ declare class Toolbar { readonly menuConfig: ToolbarConfig; groupConfig: ToolbarMenuId[][] | string[][]; private element; + private visible; + activateMenuId?: string; menuList: Map>; constructor(bimViewer: T, menuConfig: ToolbarConfig, groupConfig?: ToolbarMenuId[][] | string[][]); private init; + keydown: (e: KeyboardEvent) => void; + clearActive(): void; private createToolbarMenu; /** * @description Modify the menu configuration and update the toolbar. diff --git a/public/demo/libs/types/src/core/Configs.d.ts b/public/demo/libs/types/src/core/Configs.d.ts index 3c41c94..312cf58 100644 --- a/public/demo/libs/types/src/core/Configs.d.ts +++ b/public/demo/libs/types/src/core/Configs.d.ts @@ -1,5 +1,5 @@ -import type { BimViewer, DxfViewer, VRViewer } from "./viewers"; import { ToolbarMenuConfig, ToolbarMenuId } from "../components/toolbar"; +import type { BimViewer, DxfViewer, VRViewer } from "../core/viewers"; /** * Camera config */ @@ -72,6 +72,7 @@ export interface ModelConfig { instantiate?: boolean; /** * If we want to merge meshes/lines/points with the same material + * @internal * @default false */ merge?: boolean; @@ -146,6 +147,20 @@ export interface BaseViewerConfig { * @internal */ language?: "cn" | "en"; + /** + * @internal + */ + logLevel?: "debug" | "info" | "warn" | "error" | "silent"; + /** + * @description just for react native + * @internal + */ + context?: WebGLRenderingContext | WebGL2RenderingContext; + /** + * @description just for react native + * @internal + */ + context2d?: CanvasRenderingContext2D; } /** * This wrappers most config for BimViewer @@ -211,12 +226,27 @@ export interface BimViewerConfig extends BaseViewerConfig { * This wrappers most config for DxfViewer */ export interface DxfViewerConfig extends BaseViewerConfig { + /** + * @internal + */ enableAxisGizmo?: boolean; enableLayoutBar?: boolean; + /** + * @internal + */ enableStats?: boolean; enableToolbar?: boolean; + /** + * @internal + */ enableSpinner?: boolean; + /** + * @internal + */ enableProgressBar?: boolean; + /** + * @internal + */ enableBottomBar?: boolean; /** * If to cache model into indexeddb (or maybe local storage in future). @@ -227,6 +257,7 @@ export interface DxfViewerConfig extends BaseViewerConfig { enableLocalCache?: boolean; /** * If user can select an entity by mouse click + * @internal * @default false */ enableSelection?: boolean; @@ -242,8 +273,14 @@ export interface DxfViewerConfig extends BaseViewerConfig { */ export interface VRViewerConfig extends BaseViewerConfig { autoRotateSpeed?: number; + /** + * @internal + */ enableAxisGizmo?: boolean; enableToolbar?: boolean; + /** + * @internal + */ enableBottomBar?: boolean; /** * @internal @@ -318,3 +355,11 @@ export interface IsolateObjectsParam { export interface IsolateObjectsParams { familyInstanceIds: IsolateObjectsParam[]; } +/** + * @internal + */ +export interface ScreenshotConfig { + type: string; + quality: number; + includeOverlay: boolean; +} diff --git a/public/demo/libs/types/src/core/Constants.d.ts b/public/demo/libs/types/src/core/Constants.d.ts index f681692..702e4f2 100644 --- a/public/demo/libs/types/src/core/Constants.d.ts +++ b/public/demo/libs/types/src/core/Constants.d.ts @@ -100,20 +100,16 @@ export declare enum SectionType { PickPlaneSection = "PickPlaneSection", AxisPlaneSection = "AxisPlaneSection" } -/** - * @deprecated Use SectionType instead - */ -export declare enum SectionMode { - ObjectsBoxSection = "ObjectsBoxSection", - PickPlaneSection = "PickPlaneSection", - AxisPlaneSection = "AxisPlaneSection" +export interface Vector2 { + x: number; + y: number; } export interface Vector3 { x: number; y: number; z: number; } -export interface Vector2 { - x: number; - y: number; +export interface Box2 { + min: Vector2; + max: Vector2; } diff --git a/public/demo/libs/types/src/core/canvas/CanvasRender.d.ts b/public/demo/libs/types/src/core/canvas/CanvasRender.d.ts index e588b53..69156d7 100644 --- a/public/demo/libs/types/src/core/canvas/CanvasRender.d.ts +++ b/public/demo/libs/types/src/core/canvas/CanvasRender.d.ts @@ -1,10 +1,16 @@ import * as THREE from "three"; import { DrawableData } from "./Constants"; import { Drawable } from "./Drawable"; -import { DrawableList } from "./DrawableList"; -import { Event } from "../utils"; -import type { BimViewer, DxfViewer } from "../viewers"; +import type { DrawableList } from "./DrawableList"; +import { Event } from "../../core/utils"; +import type { BimViewer, DxfViewer } from "../../core/viewers"; +/** + * @internal + */ export type constructorReturnType = new (...arg: any) => T; +/** + * @internal + */ export declare class CanvasRender extends Event { private viewer; private drawableLists; @@ -33,5 +39,10 @@ export declare class CanvasRender extends Event { type: string; quality: number; }): Promise; + getImage(option?: { + type: string; + quality: number; + }): string | undefined; + getCanvas(): HTMLCanvasElement | undefined; destroy(): void; } diff --git a/public/demo/libs/types/src/core/canvas/Constants.d.ts b/public/demo/libs/types/src/core/canvas/Constants.d.ts index e6f1bc4..a4a6e2b 100644 --- a/public/demo/libs/types/src/core/canvas/Constants.d.ts +++ b/public/demo/libs/types/src/core/canvas/Constants.d.ts @@ -1,5 +1,6 @@ /** * Markup data + * @internal */ export interface DrawableData { /** @@ -7,15 +8,16 @@ export interface DrawableData { */ id: string; /** - * Two dimension float array stores 2d points. - * e.g. [[1, 1], [2.5, 3]] + * Two dimension float array stores 2d or 3d points. + * e.g., You can use "[[1, 1], [2.5, 3]]" to represent a distance measurement result + * "[1, 1]" is the first point, and "[2.5, 3]" is the second point. */ points: number[][]; lineWidth?: number; lineColor?: string; fillColor?: string; /** - * is class type for serialize + * Drawable dta type */ type: string; } diff --git a/public/demo/libs/types/src/core/canvas/Drawable.d.ts b/public/demo/libs/types/src/core/canvas/Drawable.d.ts index caa48ec..490481e 100644 --- a/public/demo/libs/types/src/core/canvas/Drawable.d.ts +++ b/public/demo/libs/types/src/core/canvas/Drawable.d.ts @@ -1,6 +1,9 @@ import * as THREE from "three"; import { DrawableData } from "./Constants"; -import { Event } from "../utils"; +import { Event } from "../../core/utils"; +/** + * @internal + */ export declare abstract class Drawable extends Event { protected readonly DEFAULT_LINE_WIDTH = 1; protected readonly DEFAULT_STROKE_STYLE = "#000000"; diff --git a/public/demo/libs/types/src/core/canvas/DrawableList.d.ts b/public/demo/libs/types/src/core/canvas/DrawableList.d.ts index cb62a3d..c2dbbc0 100644 --- a/public/demo/libs/types/src/core/canvas/DrawableList.d.ts +++ b/public/demo/libs/types/src/core/canvas/DrawableList.d.ts @@ -1,9 +1,16 @@ import { DrawableData } from "./Constants"; import { Drawable } from "./Drawable"; +import { Event } from "../../core/utils"; +type DrawableListHandler = { + addDrawable: DrawableData; + updateDrawable: DrawableData; + removeDrawable: DrawableData; +}; /** * A group of Drawlables for a certain category + * @internal */ -export declare class DrawableList { +export declare class DrawableList extends Event { private category; private drawableMap; constructor(category: string); @@ -17,3 +24,4 @@ export declare class DrawableList { setDrawableDatas(drawableDatas: DrawableData[]): void; getDrawableByPosition(p: THREE.Vector3, raycaster?: THREE.Raycaster): Drawable | undefined; } +export {}; diff --git a/public/demo/libs/types/src/core/canvas/index.d.ts b/public/demo/libs/types/src/core/canvas/index.d.ts index 40c18fa..91af098 100644 --- a/public/demo/libs/types/src/core/canvas/index.d.ts +++ b/public/demo/libs/types/src/core/canvas/index.d.ts @@ -1,4 +1,4 @@ export * from "./CanvasRender"; -export { DrawableList } from "./DrawableList"; -export { Drawable } from "./Drawable"; +export * from "./DrawableList"; +export * from "./Drawable"; export * from "./Constants"; diff --git a/public/demo/libs/types/src/core/compare/CompareDrawable.d.ts b/public/demo/libs/types/src/core/compare/CompareDrawable.d.ts index aa04d6c..b4a886b 100644 --- a/public/demo/libs/types/src/core/compare/CompareDrawable.d.ts +++ b/public/demo/libs/types/src/core/compare/CompareDrawable.d.ts @@ -1,5 +1,5 @@ import * as THREE from "three"; -import { Drawable } from "../canvas"; +import { Drawable } from "../../core/canvas"; /** * @internal */ diff --git a/public/demo/libs/types/src/core/compare/DxfCompareMarkupManager.d.ts b/public/demo/libs/types/src/core/compare/DxfCompareMarkupManager.d.ts index 796a6b1..b8b5d86 100644 --- a/public/demo/libs/types/src/core/compare/DxfCompareMarkupManager.d.ts +++ b/public/demo/libs/types/src/core/compare/DxfCompareMarkupManager.d.ts @@ -1,12 +1,11 @@ -import { DxfChange } from "../dxf"; -import { Event } from "../utils"; import type { DxfViewer } from "../viewers"; +import { DxfChange } from "../../core/dxf"; +import { Event } from "../../core/utils"; export declare class DxfCompareMarkupManager extends Event { private viewer; private overlayRender?; private drawableList; constructor(viewer: DxfViewer); - render(): void; drawCompareDrawable(changes: Record): void; setCompareDrawableVisible(visilbe: boolean): void; } diff --git a/public/demo/libs/types/src/core/controls/VRControls.d.ts b/public/demo/libs/types/src/core/controls/VRControls.d.ts index b2b11ba..6bade7d 100644 --- a/public/demo/libs/types/src/core/controls/VRControls.d.ts +++ b/public/demo/libs/types/src/core/controls/VRControls.d.ts @@ -1,5 +1,5 @@ import { EventDispatcher, PerspectiveCamera, Vector3 } from "three"; -import { ControlsHelper } from "../helpers/ControlsHelper"; +import type { ControlsHelper } from "../../core/helpers"; /** * @internal */ diff --git a/public/demo/libs/types/src/core/controls/index.d.ts b/public/demo/libs/types/src/core/controls/index.d.ts index c8beb42..810751b 100644 --- a/public/demo/libs/types/src/core/controls/index.d.ts +++ b/public/demo/libs/types/src/core/controls/index.d.ts @@ -1 +1,2 @@ export * from "./VRControls"; +export * from "./CameraControlsEx"; diff --git a/public/demo/libs/types/src/core/dxf-parser/DxfParser.d.ts b/public/demo/libs/types/src/core/dxf-parser/DxfParser.d.ts index 82f43ea..b83f84f 100644 --- a/public/demo/libs/types/src/core/dxf-parser/DxfParser.d.ts +++ b/public/demo/libs/types/src/core/dxf-parser/DxfParser.d.ts @@ -89,7 +89,7 @@ export interface ILineTypeTableDefinition { parseTableRecords(): Record; } /** - * @internal + * dwg layer */ export interface ILayer { name: string; @@ -302,4 +302,9 @@ export default class DxfParser { parseSync(source: string | ArrayBuffer): IDxf; parseStream(stream: Readable): Promise; private _parse; + /** + * Splits a string to string array by line separator, "\r\n", "\r", "\n", etc. + * We do this instead of using "String.prototype.split(/\r\n|\r|\n/g)", because it is extreamly slow! + */ + private splitByLineSeparator; } diff --git a/public/demo/libs/types/src/core/dxf-parser/entities/3dface.d.ts b/public/demo/libs/types/src/core/dxf-parser/entities/3dface.d.ts index d6195eb..09daff4 100644 --- a/public/demo/libs/types/src/core/dxf-parser/entities/3dface.d.ts +++ b/public/demo/libs/types/src/core/dxf-parser/entities/3dface.d.ts @@ -1,5 +1,5 @@ -import IGeometry, { IEntity, IPoint } from "./geomtry"; import { DxfBaseReader, IGroup } from "../DxfBaseReader"; +import IGeometry, { IEntity, IPoint } from "./geomtry"; export interface I3DfaceEntity extends IEntity { shape: boolean; hasContinuousLinetypePattern: boolean; diff --git a/public/demo/libs/types/src/core/dxf-parser/entities/attdef.d.ts b/public/demo/libs/types/src/core/dxf-parser/entities/attdef.d.ts index 17dadb5..110087c 100644 --- a/public/demo/libs/types/src/core/dxf-parser/entities/attdef.d.ts +++ b/public/demo/libs/types/src/core/dxf-parser/entities/attdef.d.ts @@ -1,5 +1,5 @@ -import IGeometry, { IEntity, IPoint } from "./geomtry"; import { DxfBaseReader, IGroup } from "../DxfBaseReader"; +import IGeometry, { IEntity, IPoint } from "./geomtry"; export interface IAttdefEntity extends IEntity { xScale: number; textStyle: "STANDARD" | string; diff --git a/public/demo/libs/types/src/core/dxf-parser/entities/attrib.d.ts b/public/demo/libs/types/src/core/dxf-parser/entities/attrib.d.ts index 061e6bc..6c5ca73 100644 --- a/public/demo/libs/types/src/core/dxf-parser/entities/attrib.d.ts +++ b/public/demo/libs/types/src/core/dxf-parser/entities/attrib.d.ts @@ -1,5 +1,5 @@ -import IGeometry, { IEntity, IPoint } from "./geomtry"; import { DxfBaseReader, IGroup } from "../DxfBaseReader"; +import IGeometry, { IEntity, IPoint } from "./geomtry"; export interface IAttribEntity extends IEntity { xScale: number; textStyle: "STANDARD" | string; diff --git a/public/demo/libs/types/src/core/dxf-parser/entities/circle.d.ts b/public/demo/libs/types/src/core/dxf-parser/entities/circle.d.ts index 5c0de56..7fceed3 100644 --- a/public/demo/libs/types/src/core/dxf-parser/entities/circle.d.ts +++ b/public/demo/libs/types/src/core/dxf-parser/entities/circle.d.ts @@ -1,5 +1,5 @@ -import IGeometry, { IEntity, IPoint } from "./geomtry"; import { DxfBaseReader, IGroup } from "../DxfBaseReader"; +import IGeometry, { IEntity, IPoint } from "./geomtry"; export interface ICircleEntity extends IEntity { center: IPoint; radius: number; diff --git a/public/demo/libs/types/src/core/dxf-parser/entities/dimension.d.ts b/public/demo/libs/types/src/core/dxf-parser/entities/dimension.d.ts index e7d7321..667b77b 100644 --- a/public/demo/libs/types/src/core/dxf-parser/entities/dimension.d.ts +++ b/public/demo/libs/types/src/core/dxf-parser/entities/dimension.d.ts @@ -1,5 +1,5 @@ -import IGeometry, { IEntity, IPoint } from "./geomtry"; import { DxfBaseReader, IGroup } from "../DxfBaseReader"; +import IGeometry, { IEntity, IPoint } from "./geomtry"; export interface IDimensionEntity extends IEntity { block: string; dimStyleName: string; diff --git a/public/demo/libs/types/src/core/dxf-parser/entities/ellipse.d.ts b/public/demo/libs/types/src/core/dxf-parser/entities/ellipse.d.ts index 3bcc1a5..3f2ea5a 100644 --- a/public/demo/libs/types/src/core/dxf-parser/entities/ellipse.d.ts +++ b/public/demo/libs/types/src/core/dxf-parser/entities/ellipse.d.ts @@ -1,5 +1,5 @@ -import IGeometry, { IEntity, IPoint } from "./geomtry"; import { DxfBaseReader, IGroup } from "../DxfBaseReader"; +import IGeometry, { IEntity, IPoint } from "./geomtry"; export interface IEllipseEntity extends IEntity { center: IPoint; majorAxisEndPoint: IPoint; diff --git a/public/demo/libs/types/src/core/dxf-parser/entities/hatch.d.ts b/public/demo/libs/types/src/core/dxf-parser/entities/hatch.d.ts index 72b45ed..18a7873 100644 --- a/public/demo/libs/types/src/core/dxf-parser/entities/hatch.d.ts +++ b/public/demo/libs/types/src/core/dxf-parser/entities/hatch.d.ts @@ -1,5 +1,5 @@ -import IGeometry, { IEntity, IPoint } from "./geomtry"; import { DxfBaseReader, IGroup } from "../DxfBaseReader"; +import IGeometry, { IEntity, IPoint } from "./geomtry"; export declare enum HatchBoundaryPathTypeFlag { Default = 0, External = 1, diff --git a/public/demo/libs/types/src/core/dxf-parser/entities/mleader.d.ts b/public/demo/libs/types/src/core/dxf-parser/entities/mleader.d.ts index a46e89c..21d5cb6 100644 --- a/public/demo/libs/types/src/core/dxf-parser/entities/mleader.d.ts +++ b/public/demo/libs/types/src/core/dxf-parser/entities/mleader.d.ts @@ -1,5 +1,5 @@ -import IGeometry, { IEntity, IPoint } from "./geomtry"; import { DxfBaseReader, IGroup } from "../DxfBaseReader"; +import IGeometry, { IEntity, IPoint } from "./geomtry"; export interface ILeaderEntity extends IEntity { leaderStyleId: number; leaderLineType: number; diff --git a/public/demo/libs/types/src/core/dxf-parser/entities/ole2frame.d.ts b/public/demo/libs/types/src/core/dxf-parser/entities/ole2frame.d.ts index 2aa25a1..6336344 100644 --- a/public/demo/libs/types/src/core/dxf-parser/entities/ole2frame.d.ts +++ b/public/demo/libs/types/src/core/dxf-parser/entities/ole2frame.d.ts @@ -1,5 +1,5 @@ -import IGeometry, { IEntity } from "./geomtry"; import { DxfBaseReader, IGroup } from "../DxfBaseReader"; +import IGeometry, { IEntity } from "./geomtry"; export interface IOleEntity extends IEntity { documentType: string; version: number; diff --git a/public/demo/libs/types/src/core/dxf-parser/entities/region.d.ts b/public/demo/libs/types/src/core/dxf-parser/entities/region.d.ts index 6cccc66..eb65427 100644 --- a/public/demo/libs/types/src/core/dxf-parser/entities/region.d.ts +++ b/public/demo/libs/types/src/core/dxf-parser/entities/region.d.ts @@ -1,5 +1,5 @@ -import IGeometry, { IEntity } from "./geomtry"; import { DxfBaseReader, IGroup } from "../DxfBaseReader"; +import IGeometry, { IEntity } from "./geomtry"; export interface IRegionEntity extends IEntity { modelerVersion?: number; proprietaryData?: string; diff --git a/public/demo/libs/types/src/core/dxf-parser/entities/solid.d.ts b/public/demo/libs/types/src/core/dxf-parser/entities/solid.d.ts index ea8ee3d..79965c7 100644 --- a/public/demo/libs/types/src/core/dxf-parser/entities/solid.d.ts +++ b/public/demo/libs/types/src/core/dxf-parser/entities/solid.d.ts @@ -1,5 +1,5 @@ -import IGeometry, { IEntity, IPoint } from "./geomtry"; import { DxfBaseReader, IGroup } from "../DxfBaseReader"; +import IGeometry, { IEntity, IPoint } from "./geomtry"; export interface ISolidEntity extends IEntity { points: IPoint[]; extrusionDirection: IPoint; diff --git a/public/demo/libs/types/src/core/dxf-parser/entities/spline.d.ts b/public/demo/libs/types/src/core/dxf-parser/entities/spline.d.ts index d32a8c6..f48eaa5 100644 --- a/public/demo/libs/types/src/core/dxf-parser/entities/spline.d.ts +++ b/public/demo/libs/types/src/core/dxf-parser/entities/spline.d.ts @@ -1,5 +1,5 @@ -import IGeometry, { IEntity, IPoint } from "./geomtry"; import { DxfBaseReader, IGroup } from "../DxfBaseReader"; +import IGeometry, { IEntity, IPoint } from "./geomtry"; export interface ISplineEntity extends IEntity { controlPoints?: IPoint[]; fitPoints?: IPoint[]; diff --git a/public/demo/libs/types/src/core/dxf-parser/entities/text.d.ts b/public/demo/libs/types/src/core/dxf-parser/entities/text.d.ts index d08e167..4648a0a 100644 --- a/public/demo/libs/types/src/core/dxf-parser/entities/text.d.ts +++ b/public/demo/libs/types/src/core/dxf-parser/entities/text.d.ts @@ -1,5 +1,5 @@ -import IGeometry, { IEntity, IPoint } from "./geomtry"; import { DxfBaseReader, IGroup } from "../DxfBaseReader"; +import IGeometry, { IEntity, IPoint } from "./geomtry"; export interface ITextEntity extends IEntity { startPoint: IPoint; endPoint: IPoint; diff --git a/public/demo/libs/types/src/core/dxf-parser/entities/viewport.d.ts b/public/demo/libs/types/src/core/dxf-parser/entities/viewport.d.ts index 3d5d5b7..561c5e2 100644 --- a/public/demo/libs/types/src/core/dxf-parser/entities/viewport.d.ts +++ b/public/demo/libs/types/src/core/dxf-parser/entities/viewport.d.ts @@ -1,5 +1,5 @@ -import IGeometry, { IEntity, IPoint } from "./geomtry"; import { DxfBaseReader, IGroup } from "../DxfBaseReader"; +import IGeometry, { IEntity, IPoint } from "./geomtry"; export interface IViewportEntity extends IEntity { centerPoint: IPoint; width_paperSpace: number; diff --git a/public/demo/libs/types/src/core/dxf-parser/objects/dictionary.d.ts b/public/demo/libs/types/src/core/dxf-parser/objects/dictionary.d.ts index de18f06..766286c 100644 --- a/public/demo/libs/types/src/core/dxf-parser/objects/dictionary.d.ts +++ b/public/demo/libs/types/src/core/dxf-parser/objects/dictionary.d.ts @@ -1,5 +1,5 @@ -import { IObject, IObjectParser } from "./common"; import { DxfBaseReader, IGroup } from "../DxfBaseReader"; +import { IObject, IObjectParser } from "./common"; export declare enum DictionaryCloningFlags { NotApplicable = 0, KeepExisting = 1, diff --git a/public/demo/libs/types/src/core/dxf-parser/objects/sortentstable.d.ts b/public/demo/libs/types/src/core/dxf-parser/objects/sortentstable.d.ts index dc22ffe..a1222e7 100644 --- a/public/demo/libs/types/src/core/dxf-parser/objects/sortentstable.d.ts +++ b/public/demo/libs/types/src/core/dxf-parser/objects/sortentstable.d.ts @@ -1,5 +1,5 @@ -import { IObject, IObjectParser } from "./common"; import { DxfBaseReader, IGroup } from "../DxfBaseReader"; +import { IObject, IObjectParser } from "./common"; export interface ISortEntsObject extends IObject { entityHandles: string[][]; } diff --git a/public/demo/libs/types/src/core/dxf-parser/objects/spatialfilter.d.ts b/public/demo/libs/types/src/core/dxf-parser/objects/spatialfilter.d.ts index 26efa68..101eec3 100644 --- a/public/demo/libs/types/src/core/dxf-parser/objects/spatialfilter.d.ts +++ b/public/demo/libs/types/src/core/dxf-parser/objects/spatialfilter.d.ts @@ -1,6 +1,6 @@ -import { IObject, IObjectParser } from "./common"; import { DxfBaseReader, IGroup } from "../DxfBaseReader"; import { IPoint } from "../entities/geomtry"; +import { IObject, IObjectParser } from "./common"; export interface ISpatialFilterObject extends IObject { origin: IPoint; numberOfPointsOnClipBoundary: number; diff --git a/public/demo/libs/types/src/core/dxf-parser/objects/xrecord.d.ts b/public/demo/libs/types/src/core/dxf-parser/objects/xrecord.d.ts index 3d1b72a..b6e2c6a 100644 --- a/public/demo/libs/types/src/core/dxf-parser/objects/xrecord.d.ts +++ b/public/demo/libs/types/src/core/dxf-parser/objects/xrecord.d.ts @@ -1,6 +1,6 @@ +import { DxfBaseReader, IGroup } from "../DxfBaseReader"; import { IObject, IObjectParser } from "./common"; import { DictionaryCloningFlags } from "./dictionary"; -import { DxfBaseReader, IGroup } from "../DxfBaseReader"; export interface IXRecord extends IObject { binaryData: string | undefined; cloningFlag: DictionaryCloningFlags; diff --git a/public/demo/libs/types/src/core/dxf/DXFLoader.d.ts b/public/demo/libs/types/src/core/dxf/DXFLoader.d.ts index 9264300..b6f60bf 100644 --- a/public/demo/libs/types/src/core/dxf/DXFLoader.d.ts +++ b/public/demo/libs/types/src/core/dxf/DXFLoader.d.ts @@ -1,11 +1,11 @@ import * as THREE from "three"; import { Font } from "three/examples/jsm/loaders/FontLoader.js"; import { DxfChange, DxfChangeType } from "./DxfCompare"; -import { Units } from "../Units"; -import { IBlock, IDxf, IEntity, ILayer, ILayoutObject, IPoint, IViewPort, IViewportEntity } from "../dxf-parser"; -import { IMLeaderContextData } from "../dxf-parser/entities/mleader"; -import { ISpatialFilterObject } from "../dxf-parser/objects/spatialfilter"; -import { ShxFont } from "../shx-parser/ShxFont"; +import { Units } from "../../core/Units"; +import { IBlock, IDxf, IEntity, ILayer, ILayoutObject, IPoint, IViewPort, IViewportEntity } from "../../core/dxf-parser"; +import { IMLeaderContextData } from "../../core/dxf-parser/entities/mleader"; +import { ISpatialFilterObject } from "../../core/dxf-parser/objects/spatialfilter"; +import { ShxFont } from "../../core/shx-parser"; /** * @internal */ @@ -15,8 +15,14 @@ export interface DxfData extends IDxf { loadedEntityCount: number; layoutViewportsMap: Record; } -export interface DxfLayer extends ILayer { -} +/** + * Dxf/dwg layer, which contains a number of objects in it. + * + * A layer has "name", "handle", "color", "visible" and many other properties. + * + * We can change a layer's visibility, color, etc. + */ +export type DxfLayer = ILayer; /** * @internal */ @@ -145,7 +151,7 @@ export interface DxfSpatialFilter extends ISpatialFilterObject { * @author Sourabh Soni / https://www.prolincur.com * @internal */ -export declare class DXFLoader extends THREE.Loader { +export declare class DxfLoader extends THREE.Loader { static readonly MODEL_LAYOUT_NAME = "Model"; private timer; private ignorePaperSpace; @@ -290,19 +296,7 @@ export declare class DXFLoader extends THREE.Loader { }; private getTextLineNum; draw3DFace(entity: DxfEntity): THREE.Line | undefined; - drawSpline(entity: DxfEntity): THREE.Line | undefined; - /** - * Interpolate a b-spline. The algorithm examins the knot vector - * to create segments for interpolation. The parameterisation value - * is re-normalised back to [0,1] as that is what the lib expects ( - * and t i de-normalised in the b-spline library) - * - * @param controlPoints the control points - * @param degree the b-spline degree - * @param knots the knot vector - * @returns the polyline - */ - getBSplinePolyline(controlPoints: IPoint[], degree: number, knots: number[], interpolationsPerSplineSegment?: number, weights?: number[]): THREE.Vector3[]; + drawSpline(entity: DxfEntity, blockEntity?: IEntity): THREE.Line | undefined; drawXLine(entity: DxfEntity): THREE.Line | undefined; drawRay(entity: DxfEntity): THREE.Line | undefined; drawLine(entity: DxfEntity): THREE.LineSegments | THREE.Points | undefined; @@ -344,6 +338,10 @@ export declare class DXFLoader extends THREE.Loader { * Note that, when entity is in layer "0", it tries to get its parent blockEntity's layer name. */ private getLayerName; + /** + * Sets object's material after being created + * TODO: hatch is handled separately, and may move its logic here. + */ private setMaterial; private setHatchMaterial; private setRenderOrderByObjectType; @@ -360,6 +358,13 @@ export declare class DXFLoader extends THREE.Loader { * @param size may not be accurate, can be the radius, long size of bbox, etc. */ getDivision(startAngle: number, endAngle: number, size: number): number; + /** + * Gets a proper interpolation for bspline. + * A bigger interpolation value generates smooth bspline, but with a bad performance, so we need to limit this value. + * @param pointCount control point count + * @param size may not be accurate, can be the long side of bbox, etc. + */ + getBSplineInterpolationsPerSplineSegment(pointCount: number, size: number): number; /** * Gets proper simplify tolerance. * If tolerance is bigger, more points are simpified. diff --git a/public/demo/libs/types/src/core/dxf/DxfCompare.d.ts b/public/demo/libs/types/src/core/dxf/DxfCompare.d.ts index 0a4f4a7..1905e09 100644 --- a/public/demo/libs/types/src/core/dxf/DxfCompare.d.ts +++ b/public/demo/libs/types/src/core/dxf/DxfCompare.d.ts @@ -1,8 +1,13 @@ import * as THREE from "three"; -import { DxfEntity } from "./DXFLoader"; -import { IDxf } from "../dxf-parser"; +import type { DxfEntity } from "./DxfLoader"; +import { IDxf } from "../../core/dxf-parser"; /** - * Dxf change type + * Dxf change type, which can be "Added", "Removed" or "Modified". + * + * Note that a "Modified" change can be represented as a "Removed" and an "Added" types. + * + * The system can display "Added" object in a specific color (green, etc.), + * and "Removed" in another color (red, etc.). */ export declare enum DxfChangeType { Added = "Added", @@ -11,12 +16,24 @@ export declare enum DxfChangeType { NoChange = "NoChange" } /** - * Dxf change + * Describes a dxf change */ export interface DxfChange { + /** + * An integer type id. It is unique in the lifecycle of a DxfViewer. + */ id: number; + /** + * Change type, which can be "Added", "Removed", "Modified" or "NoChange". + */ type: DxfChangeType; + /** + * AutoCAD entity handle + */ handle: string; + /** + * @internal + */ parentHandles?: string[]; /** * @internal diff --git a/public/demo/libs/types/src/core/dxf/index.d.ts b/public/demo/libs/types/src/core/dxf/index.d.ts index e80373e..a9c73c2 100644 --- a/public/demo/libs/types/src/core/dxf/index.d.ts +++ b/public/demo/libs/types/src/core/dxf/index.d.ts @@ -1,5 +1,9 @@ export * from "./DxfCompare"; -export * from "./DXFLoader"; -export * from "./bspline"; +export * from "./DxfLoader"; +export * as bspline from "./bspline"; export * from "./dxfom-mtext"; -export * from "./round10"; +export * as round10 from "./round10"; +export * from "./DxfConstants"; +export * from "./HatchPatternShaders"; +export * from "./LinePatternShaders"; +export * from "./dxfom-text"; diff --git a/public/demo/libs/types/src/core/helpers/ControlsHelper.d.ts b/public/demo/libs/types/src/core/helpers/ControlsHelper.d.ts index 4d69aef..b1d5094 100644 --- a/public/demo/libs/types/src/core/helpers/ControlsHelper.d.ts +++ b/public/demo/libs/types/src/core/helpers/ControlsHelper.d.ts @@ -1,5 +1,5 @@ import * as THREE from "three"; -import { VRControls } from "../controls/VRControls"; +import type { VRControls } from "../../core/controls"; /** * @internal */ diff --git a/public/demo/libs/types/src/core/helpers/LoadingHelper.d.ts b/public/demo/libs/types/src/core/helpers/LoadingHelper.d.ts index e2b24c1..51a62fd 100644 --- a/public/demo/libs/types/src/core/helpers/LoadingHelper.d.ts +++ b/public/demo/libs/types/src/core/helpers/LoadingHelper.d.ts @@ -1,7 +1,7 @@ import * as THREE from "three"; import { Font } from "three/examples/jsm/loaders/FontLoader.js"; -import { DxfData } from "../dxf"; -import { ShxFont } from "../shx-parser/ShxFont"; +import type { DxfData } from "../../core/dxf"; +import type { ShxFont } from "../../core/shx-parser"; export declare class LoadingHelper { private gltfLoader?; private font?; diff --git a/public/demo/libs/types/src/core/helpers/MeshBvhHelper.d.ts b/public/demo/libs/types/src/core/helpers/MeshBvhHelper.d.ts index 28b4391..4d3caef 100644 --- a/public/demo/libs/types/src/core/helpers/MeshBvhHelper.d.ts +++ b/public/demo/libs/types/src/core/helpers/MeshBvhHelper.d.ts @@ -1,5 +1,5 @@ import * as THREE from "three"; -import { BvhParameter } from "../workers/GenerateMeshBvhWorker"; +import { BvhParameter } from "../../core/workers"; /** * Bvh: Bounding volume hierarchy */ diff --git a/public/demo/libs/types/src/core/helpers/OSnapHelper.d.ts b/public/demo/libs/types/src/core/helpers/OSnapHelper.d.ts index 68304de..5382bde 100644 --- a/public/demo/libs/types/src/core/helpers/OSnapHelper.d.ts +++ b/public/demo/libs/types/src/core/helpers/OSnapHelper.d.ts @@ -1,8 +1,6 @@ import * as THREE from "three"; -import { CanvasRender } from "../canvas/CanvasRender"; -import { Drawable } from "../canvas/Drawable"; -import { ILine } from "../utils/GeometryUtils"; -import { SnapType } from "../utils/SVGObjectUtils"; +import { CanvasRender, Drawable } from "../../core/canvas"; +import { ILine, SnapType } from "../../core/utils"; export declare class SnapDrawable extends Drawable { static readonly LINE_COLOR = "rgba(255, 240, 0, 0.8)"; static readonly FILL_COLOR = "rgba(135, 206, 250, 0.5)"; diff --git a/public/demo/libs/types/src/core/helpers/ObjectPixelSizeHelper.d.ts b/public/demo/libs/types/src/core/helpers/ObjectPixelSizeHelper.d.ts index 69d7a40..293e039 100644 --- a/public/demo/libs/types/src/core/helpers/ObjectPixelSizeHelper.d.ts +++ b/public/demo/libs/types/src/core/helpers/ObjectPixelSizeHelper.d.ts @@ -1,5 +1,5 @@ import * as THREE from "three"; -import { OrbitControls } from "../controls/OrbitControls"; +import { CameraControlsEx } from "../../core/controls"; /** * Helper class to adjust object visual size */ @@ -8,6 +8,6 @@ export declare class ObjectPixelSizeHelper { private camera; targetPixelHeight: number; canvasHeight: number; - constructor(camera: THREE.Camera, controls: OrbitControls, object: THREE.Object3D, targetPixelHeight: number, canvasHeight: number); + constructor(camera: THREE.Camera, controls: CameraControlsEx, object: THREE.Object3D, targetPixelHeight: number, canvasHeight: number); adjustSize(): void; } diff --git a/public/demo/libs/types/src/core/helpers/ZoomToRectHelper.d.ts b/public/demo/libs/types/src/core/helpers/ZoomToRectHelper.d.ts index 7fd7fe8..05c15d3 100644 --- a/public/demo/libs/types/src/core/helpers/ZoomToRectHelper.d.ts +++ b/public/demo/libs/types/src/core/helpers/ZoomToRectHelper.d.ts @@ -1,30 +1,15 @@ import * as THREE from "three"; -import { BimViewer, DxfViewer } from "../viewers"; +import type { BimViewer, DxfViewer } from "../../core/viewers"; export declare class ZoomToRectHelper { - private viewer; - protected mouseDown: boolean; - protected mouseMove: boolean; - protected mouseDownPositionX: number; - protected mouseDownPositionY: number; - protected tempKey?: number; - protected tempEnableRotate: boolean; - protected rectDom?: HTMLDivElement; - private actived; - static readonly BORDER_COLOR = "#fff000"; - static readonly BORDER_WIDTH = "2px"; + protected viewer: DxfViewer | BimViewer; + private boxSelectHelper?; constructor(viewer: DxfViewer | BimViewer); - get viewerContainer(): HTMLCanvasElement; + private get viewerContainer(); get camera(): THREE.OrthographicCamera | THREE.PerspectiveCamera; get raycaster(): THREE.Raycaster; - isActived(): boolean; activate(): void; deactivate(): void; - mousedown: (e: MouseEvent) => void; - mousemove: (e: MouseEvent) => void; - mouseup: (e: MouseEvent) => void; - private pickPositionByScreenPoint; - private handleZoomToRect; - drawRect(leftTop: THREE.Vector2, rightBottom: THREE.Vector2): void; - setRectDomVisible(visible: boolean): void; + protected pickPositionByScreenPoint(p: THREE.Vector2): THREE.Vector3 | undefined; + protected handleZoomToRect(leftTop: THREE.Vector2, rightBottom: THREE.Vector2): void; destroy(): void; } diff --git a/public/demo/libs/types/src/core/helpers/index.d.ts b/public/demo/libs/types/src/core/helpers/index.d.ts index fe8b0a4..a401372 100644 --- a/public/demo/libs/types/src/core/helpers/index.d.ts +++ b/public/demo/libs/types/src/core/helpers/index.d.ts @@ -1,4 +1,11 @@ export * from "./ControlsHelper"; -export * from "../../components/dat-gui/BimViewerDatGui"; export * from "./InstantiateHelper"; export * from "./RafHelper"; +export * from "./BinaryReader"; +export * from "./LoadingHelper"; +export * from "./MeshBvhHelper"; +export * from "./ObjectPixelSizeHelper"; +export * from "./OSnapHelper"; +export * from "./BoxSelectHelper"; +export * from "./UndoRedoHelper"; +export * from "./ZoomToRectHelper"; diff --git a/public/demo/libs/types/src/core/index.d.ts b/public/demo/libs/types/src/core/index.d.ts index b74001f..a31d666 100644 --- a/public/demo/libs/types/src/core/index.d.ts +++ b/public/demo/libs/types/src/core/index.d.ts @@ -1,15 +1,28 @@ export * from "./patches"; +export * from "./axes"; export * from "./canvas"; -export * from "./Configs"; +export * from "./compare"; export * from "./controls"; -export * from "./Constants"; export * from "./dxf"; -export type { ILayoutObject, IPoint } from "./dxf-parser"; +export * from "./dxf-parser"; export * from "./exploder"; +export * from "./geometry-offset"; export * from "./helpers"; +export * from "./indexeddb"; export * from "./local-model-uploader"; -export { MarkupType } from "./markup"; -export { MeasurementType } from "./measure"; -export * from "../components/toolbar"; +export * from "./input"; +export * from "./markup"; +export * from "./measure"; +export * from "./navcube"; +export * from "./section"; +export * from "./shp-js"; +export * from "./shx-parser"; export * from "./utils"; export * from "./viewers"; +export * from "./vr"; +export * from "./webcam"; +export * from "./workers"; +export * from "./Configs"; +export * from "./Constants"; +export * from "./Units"; +export * from "./VersionManager"; diff --git a/public/demo/libs/types/src/core/indexeddb/FontDataTable.d.ts b/public/demo/libs/types/src/core/indexeddb/FontDataTable.d.ts index d117276..8495d7c 100644 --- a/public/demo/libs/types/src/core/indexeddb/FontDataTable.d.ts +++ b/public/demo/libs/types/src/core/indexeddb/FontDataTable.d.ts @@ -1,5 +1,5 @@ import { BaseTable } from "./BaseTable"; -import type { Orientation, ShxFontType } from "../shx-parser/files/FontFile"; +import type { Orientation, ShxFontType } from "../../core/shx-parser"; export interface FontDataTableRecord { url: string; type: ShxFontType; diff --git a/public/demo/libs/types/src/core/indexeddb/index.d.ts b/public/demo/libs/types/src/core/indexeddb/index.d.ts index b873aea..0a25025 100644 --- a/public/demo/libs/types/src/core/indexeddb/index.d.ts +++ b/public/demo/libs/types/src/core/indexeddb/index.d.ts @@ -2,3 +2,5 @@ export * from "./AnnotationTable"; export * from "./BaseTable"; export * from "./IndexedDbManager"; export * from "./ViewpointTable"; +export * from "./DxfDataTable"; +export * from "./FontDataTable"; diff --git a/public/demo/libs/types/src/core/local-model-uploader/LocalModelUploader.d.ts b/public/demo/libs/types/src/core/local-model-uploader/LocalModelUploader.d.ts index 5bc7708..053b618 100644 --- a/public/demo/libs/types/src/core/local-model-uploader/LocalModelUploader.d.ts +++ b/public/demo/libs/types/src/core/local-model-uploader/LocalModelUploader.d.ts @@ -1,5 +1,5 @@ -import type { BimViewer, DxfViewer, VRViewer } from "../viewers"; -import type { ModelConfig } from "@"; +import type { ModelConfig } from "../.."; +import type { BimViewer, DxfViewer, VRViewer } from "../../core/viewers"; /** * @internal */ diff --git a/public/demo/libs/types/src/core/markup/ArrowMarkup.d.ts b/public/demo/libs/types/src/core/markup/ArrowMarkup.d.ts index 56a8607..b7055c1 100644 --- a/public/demo/libs/types/src/core/markup/ArrowMarkup.d.ts +++ b/public/demo/libs/types/src/core/markup/ArrowMarkup.d.ts @@ -1,6 +1,6 @@ import * as THREE from "three"; -import { BaseMarkup } from "./BaseMarkup"; -import { MarkupType } from "./Constants"; +import { BaseMarkup } from "../../core/markup/BaseMarkup"; +import { MarkupType } from "../../core/markup/Constants"; export declare class ArrowMarkup extends BaseMarkup { type: MarkupType; constructor(id: string, points: THREE.Vector3[]); diff --git a/public/demo/libs/types/src/core/markup/BaseMarkup.d.ts b/public/demo/libs/types/src/core/markup/BaseMarkup.d.ts index 7934328..0b6b0d5 100644 --- a/public/demo/libs/types/src/core/markup/BaseMarkup.d.ts +++ b/public/demo/libs/types/src/core/markup/BaseMarkup.d.ts @@ -1,5 +1,5 @@ import * as THREE from "three"; -import { Drawable, DrawableData } from "../canvas"; +import { Drawable, DrawableData } from "../../core/canvas"; export declare abstract class BaseMarkup extends Drawable { protected editPointSize: number; protected editPointColor: string; diff --git a/public/demo/libs/types/src/core/markup/CircleMarkup.d.ts b/public/demo/libs/types/src/core/markup/CircleMarkup.d.ts index 9d1ed86..c513f4e 100644 --- a/public/demo/libs/types/src/core/markup/CircleMarkup.d.ts +++ b/public/demo/libs/types/src/core/markup/CircleMarkup.d.ts @@ -1,6 +1,6 @@ import * as THREE from "three"; -import { BaseMarkup } from "./BaseMarkup"; -import { MarkupType } from "./Constants"; +import { BaseMarkup } from "../../core/markup/BaseMarkup"; +import { MarkupType } from "../../core/markup/Constants"; export declare class CircleMarkup extends BaseMarkup { radius: number; type: MarkupType; diff --git a/public/demo/libs/types/src/core/markup/CloudLineMarkup.d.ts b/public/demo/libs/types/src/core/markup/CloudLineMarkup.d.ts index 7e16eb0..e78eca4 100644 --- a/public/demo/libs/types/src/core/markup/CloudLineMarkup.d.ts +++ b/public/demo/libs/types/src/core/markup/CloudLineMarkup.d.ts @@ -1,6 +1,6 @@ import * as THREE from "three"; -import { BaseMarkup } from "./BaseMarkup"; -import { MarkupType } from "./Constants"; +import { BaseMarkup } from "../../core/markup/BaseMarkup"; +import { MarkupType } from "../../core/markup/Constants"; export declare class CloudLineMarkup extends BaseMarkup { type: MarkupType; constructor(id: string, points: THREE.Vector3[]); diff --git a/public/demo/libs/types/src/core/markup/CloudRectMarkup.d.ts b/public/demo/libs/types/src/core/markup/CloudRectMarkup.d.ts index da0eeb9..1119eeb 100644 --- a/public/demo/libs/types/src/core/markup/CloudRectMarkup.d.ts +++ b/public/demo/libs/types/src/core/markup/CloudRectMarkup.d.ts @@ -1,6 +1,6 @@ import * as THREE from "three"; -import { BaseMarkup } from "./BaseMarkup"; -import { MarkupType } from "./Constants"; +import { BaseMarkup } from "../../core/markup/BaseMarkup"; +import { MarkupType } from "../../core/markup/Constants"; export declare class CloudRectMarkup extends BaseMarkup { type: MarkupType; constructor(id: string, points: THREE.Vector3[]); diff --git a/public/demo/libs/types/src/core/markup/DotMarkup.d.ts b/public/demo/libs/types/src/core/markup/DotMarkup.d.ts index 0833dfe..1f43a08 100644 --- a/public/demo/libs/types/src/core/markup/DotMarkup.d.ts +++ b/public/demo/libs/types/src/core/markup/DotMarkup.d.ts @@ -1,5 +1,5 @@ import * as THREE from "three"; -import { BaseMarkup } from "./BaseMarkup"; +import { BaseMarkup } from "../../core/markup/BaseMarkup"; export declare class DotMarkup extends BaseMarkup { radius: number; constructor(id: string, points: THREE.Vector3[]); diff --git a/public/demo/libs/types/src/core/markup/EllipseMarkup.d.ts b/public/demo/libs/types/src/core/markup/EllipseMarkup.d.ts index bbb1fdb..b4588d2 100644 --- a/public/demo/libs/types/src/core/markup/EllipseMarkup.d.ts +++ b/public/demo/libs/types/src/core/markup/EllipseMarkup.d.ts @@ -1,6 +1,6 @@ import * as THREE from "three"; -import { BaseMarkup } from "./BaseMarkup"; -import { MarkupType } from "./Constants"; +import { BaseMarkup } from "../../core/markup/BaseMarkup"; +import { MarkupType } from "../../core/markup/Constants"; export declare class EllipseMarkup extends BaseMarkup { radiusX: number; radiusY: number; diff --git a/public/demo/libs/types/src/core/markup/MarkupManager.d.ts b/public/demo/libs/types/src/core/markup/MarkupManager.d.ts index 7b62366..a15381e 100644 --- a/public/demo/libs/types/src/core/markup/MarkupManager.d.ts +++ b/public/demo/libs/types/src/core/markup/MarkupManager.d.ts @@ -1,11 +1,14 @@ import * as THREE from "three"; import { BaseMarkup } from "./BaseMarkup"; import { MarkupType } from "./Constants"; -import { DrawableData } from "../canvas"; -import { Event } from "../utils"; -import { BimViewer, DxfViewer } from "../viewers"; -export declare class MarkupManager extends Event { +import { DrawableData } from "../../core/canvas"; +import type { EventInfo, InputManager } from "../../core/input/InputManager"; +import { Event } from "../../core/utils"; +import type { BaseViewer } from "../../core/viewers"; +type MarkupHandler = {}; +export declare class MarkupManager extends Event { private viewer; + private inputManager; private overlayRender?; private drawableList; private lineWidth; @@ -27,11 +30,11 @@ export declare class MarkupManager extends Event { private textInput?; private actived; private undoRedoHelper; - constructor(viewer: BimViewer | DxfViewer); + constructor(viewer: BaseViewer, input: InputManager); get viewerCanvas(): HTMLCanvasElement; get camera(): THREE.OrthographicCamera | THREE.PerspectiveCamera; get raycaster(): THREE.Raycaster; - private removeMarkupEventFromViewer; + setMarkupVisibility(id: string, visible: boolean): boolean; setMarkupsVisibility(visible: boolean): void; clearAll(): void; isMarkupActive(): boolean; @@ -48,11 +51,12 @@ export declare class MarkupManager extends Event { setFontSize(fontSize: number): void; getFontSize(): number; pickPositionByScreenPoint(p: THREE.Vector2): THREE.Vector3; - pickThreejsPositionByMouse(e: MouseEvent): THREE.Vector3; - mousedown: (e: MouseEvent) => void; - mousemove: (e: MouseEvent) => void; - mouseup: (e: MouseEvent) => void; - keydown: (e: KeyboardEvent) => void; + pickThreejsPositionByMouse(e: EventInfo): THREE.Vector3; + mousedown: (e: EventInfo) => void; + mousemove: (e: EventInfo) => void; + mouseup: (e: EventInfo) => void; + keydown: (e: EventInfo) => void; + confirmToRemove(isConfirm: boolean): void; isEditing(): boolean; endEdit(selectMarkup: BaseMarkup): void; endDraw(createdMarkup?: BaseMarkup): void; @@ -62,7 +66,7 @@ export declare class MarkupManager extends Event { addMarkup(markup: BaseMarkup, needRecord?: boolean): void; updateMarkup(markup: BaseMarkup, newData: DrawableData, needRecord?: boolean): void; removeMarkup(markup: BaseMarkup, needRecord?: boolean): void; - removeMarkupById(id: string, needRecord?: boolean): void; + removeMarkupById(id: string, needRecord?: boolean): boolean; createMarkup(data: DrawableData): BaseMarkup; getMarkupById(id: string): BaseMarkup; getMarkupData(): DrawableData[]; @@ -80,3 +84,4 @@ export declare class MarkupManager extends Event { clearUndoRedo(): void; destroy(): void; } +export {}; diff --git a/public/demo/libs/types/src/core/markup/MarkupUndoRedo.d.ts b/public/demo/libs/types/src/core/markup/MarkupUndoRedo.d.ts index e4a1fc2..9090d0e 100644 --- a/public/demo/libs/types/src/core/markup/MarkupUndoRedo.d.ts +++ b/public/demo/libs/types/src/core/markup/MarkupUndoRedo.d.ts @@ -1,5 +1,5 @@ -import { MarkupManager } from "./MarkupManager"; -import { OperationRecord, UndoRedoHelper } from "../helpers/UndoRedoHelper"; +import { OperationRecord, UndoRedoHelper } from "../../core/helpers"; +import type { MarkupManager } from "../../core/markup"; export declare enum MarkupState { Add = "Add", Update = "Update", diff --git a/public/demo/libs/types/src/core/markup/PolylineMarkup.d.ts b/public/demo/libs/types/src/core/markup/PolylineMarkup.d.ts index 61f4067..58f8157 100644 --- a/public/demo/libs/types/src/core/markup/PolylineMarkup.d.ts +++ b/public/demo/libs/types/src/core/markup/PolylineMarkup.d.ts @@ -1,6 +1,6 @@ import * as THREE from "three"; -import { BaseMarkup } from "./BaseMarkup"; -import { MarkupType } from "./Constants"; +import { BaseMarkup } from "../../core/markup/BaseMarkup"; +import { MarkupType } from "../../core/markup/Constants"; export declare class PolylineMarkup extends BaseMarkup { type: MarkupType; constructor(id: string, points: THREE.Vector3[]); diff --git a/public/demo/libs/types/src/core/markup/RectMarkup.d.ts b/public/demo/libs/types/src/core/markup/RectMarkup.d.ts index 6d839ad..75158c6 100644 --- a/public/demo/libs/types/src/core/markup/RectMarkup.d.ts +++ b/public/demo/libs/types/src/core/markup/RectMarkup.d.ts @@ -1,6 +1,6 @@ import * as THREE from "three"; -import { BaseMarkup } from "./BaseMarkup"; -import { MarkupType } from "./Constants"; +import { BaseMarkup } from "../../core/markup/BaseMarkup"; +import { MarkupType } from "../../core/markup/Constants"; export declare class RectMarkup extends BaseMarkup { type: MarkupType; constructor(id: string, points: THREE.Vector3[]); diff --git a/public/demo/libs/types/src/core/markup/TextMarkup.d.ts b/public/demo/libs/types/src/core/markup/TextMarkup.d.ts index 0d5da07..b3d31c9 100644 --- a/public/demo/libs/types/src/core/markup/TextMarkup.d.ts +++ b/public/demo/libs/types/src/core/markup/TextMarkup.d.ts @@ -1,7 +1,7 @@ import * as THREE from "three"; -import { BaseMarkup } from "./BaseMarkup"; -import { MarkupType } from "./Constants"; -import { DrawableData } from "../canvas"; +import { DrawableData } from "../../core/canvas"; +import { BaseMarkup } from "../../core/markup/BaseMarkup"; +import { MarkupType } from "../../core/markup/Constants"; export interface TextShape extends DrawableData { text: string; fontSize: number; diff --git a/public/demo/libs/types/src/core/markup/XMarkup.d.ts b/public/demo/libs/types/src/core/markup/XMarkup.d.ts index b150c6c..6090637 100644 --- a/public/demo/libs/types/src/core/markup/XMarkup.d.ts +++ b/public/demo/libs/types/src/core/markup/XMarkup.d.ts @@ -1,6 +1,6 @@ import * as THREE from "three"; -import { BaseMarkup } from "./BaseMarkup"; -import { MarkupType } from "./Constants"; +import { BaseMarkup } from "../../core/markup/BaseMarkup"; +import { MarkupType } from "../../core/markup/Constants"; export declare class XMarkup extends BaseMarkup { type: MarkupType; constructor(id: string, points: THREE.Vector3[]); diff --git a/public/demo/libs/types/src/core/measure/AngleMeasureDrawable.d.ts b/public/demo/libs/types/src/core/measure/AngleMeasureDrawable.d.ts index b6b145f..93bbd1a 100644 --- a/public/demo/libs/types/src/core/measure/AngleMeasureDrawable.d.ts +++ b/public/demo/libs/types/src/core/measure/AngleMeasureDrawable.d.ts @@ -1,6 +1,6 @@ import * as THREE from "three"; -import { BaseMeasureDrawable } from "./BaseMeasureDrawable"; -import { MeasurementType } from "./BaseMeasurement"; +import { BaseMeasureDrawable } from "../../core/measure/BaseMeasureDrawable"; +import { MeasurementType } from "../../core/measure/BaseMeasurement"; export declare class AngleMeasureDrawable extends BaseMeasureDrawable { type: MeasurementType; constructor(id: string, points: THREE.Vector3[]); diff --git a/public/demo/libs/types/src/core/measure/AngleMeasurement.d.ts b/public/demo/libs/types/src/core/measure/AngleMeasurement.d.ts index 8f326fa..62e1608 100644 --- a/public/demo/libs/types/src/core/measure/AngleMeasurement.d.ts +++ b/public/demo/libs/types/src/core/measure/AngleMeasurement.d.ts @@ -1,12 +1,13 @@ import * as THREE from "three"; -import { BaseMeasurement } from "./BaseMeasurement"; -import { DrawableList } from "../canvas/DrawableList"; -import { OSnapHelper } from "../helpers/OSnapHelper"; -import type { BaseViewer } from "../viewers/BaseViewer"; +import { DrawableList } from "../../core/canvas"; +import { OSnapHelper } from "../../core/helpers"; +import { EventInfo, InputManager } from "../../core/input/InputManager"; +import { BaseMeasurement } from "../../core/measure/BaseMeasurement"; +import type { BaseViewer } from "../../core/viewers"; export declare class AngleMeasurement extends BaseMeasurement { - constructor(viewer: BaseViewer, drawList: DrawableList, osnapHelper: OSnapHelper); + constructor(viewer: BaseViewer, input: InputManager, drawList: DrawableList, osnapHelper: OSnapHelper); protected onMouseMove(position: THREE.Vector3): void; - protected onMouseClick(e: MouseEvent): void; + protected onMouseClick(e: EventInfo): void; protected complete(): void; cancel(): void; deactivate(): void; diff --git a/public/demo/libs/types/src/core/measure/AreaMeasureDrawable.d.ts b/public/demo/libs/types/src/core/measure/AreaMeasureDrawable.d.ts index 7bbd5a3..ece2392 100644 --- a/public/demo/libs/types/src/core/measure/AreaMeasureDrawable.d.ts +++ b/public/demo/libs/types/src/core/measure/AreaMeasureDrawable.d.ts @@ -1,6 +1,6 @@ import * as THREE from "three"; -import { BaseMeasureDrawable } from "./BaseMeasureDrawable"; -import { MeasurementType } from "./BaseMeasurement"; +import { BaseMeasureDrawable } from "../../core/measure/BaseMeasureDrawable"; +import { MeasurementType } from "../../core/measure/BaseMeasurement"; export declare class AreaMeasureDrawable extends BaseMeasureDrawable { type: MeasurementType; constructor(id: string, points: THREE.Vector3[]); diff --git a/public/demo/libs/types/src/core/measure/AreaMeasurement.d.ts b/public/demo/libs/types/src/core/measure/AreaMeasurement.d.ts index d1c0941..91577b1 100644 --- a/public/demo/libs/types/src/core/measure/AreaMeasurement.d.ts +++ b/public/demo/libs/types/src/core/measure/AreaMeasurement.d.ts @@ -1,12 +1,13 @@ import * as THREE from "three"; -import { BaseMeasurement } from "./BaseMeasurement"; -import { DrawableList } from "../canvas/DrawableList"; -import { OSnapHelper } from "../helpers/OSnapHelper"; -import type { BaseViewer } from "../viewers/BaseViewer"; +import { DrawableList } from "../../core/canvas"; +import { OSnapHelper } from "../../core/helpers"; +import { EventInfo, InputManager } from "../../core/input/InputManager"; +import { BaseMeasurement } from "../../core/measure/BaseMeasurement"; +import type { BaseViewer } from "../../core/viewers"; export declare class AreaMeasurement extends BaseMeasurement { - constructor(viewer: BaseViewer, drawList: DrawableList, osnapHelper: OSnapHelper); + constructor(viewer: BaseViewer, input: InputManager, drawList: DrawableList, osnapHelper: OSnapHelper); protected onMouseMove(position: THREE.Vector3): void; - protected onMouseClick(e: MouseEvent): void; + protected onMouseClick(e: EventInfo): void; protected complete(): void; cancel(): void; deactivate(): void; diff --git a/public/demo/libs/types/src/core/measure/BaseMeasureDrawable.d.ts b/public/demo/libs/types/src/core/measure/BaseMeasureDrawable.d.ts index 53fe9e1..dde89cf 100644 --- a/public/demo/libs/types/src/core/measure/BaseMeasureDrawable.d.ts +++ b/public/demo/libs/types/src/core/measure/BaseMeasureDrawable.d.ts @@ -1,6 +1,6 @@ import * as THREE from "three"; -import { MeasurementData, MeasurementType } from "./BaseMeasurement"; -import { Drawable } from "../canvas/Drawable"; +import { Drawable } from "../../core/canvas"; +import { MeasurementData, MeasurementType } from "../../core/measure/BaseMeasurement"; export declare abstract class BaseMeasureDrawable extends Drawable { type: MeasurementType; static readonly MAJOR_COLOR = "rgba(249, 157, 11, 0.9)"; diff --git a/public/demo/libs/types/src/core/measure/BaseMeasurement.d.ts b/public/demo/libs/types/src/core/measure/BaseMeasurement.d.ts index c7d9921..f4e41e4 100644 --- a/public/demo/libs/types/src/core/measure/BaseMeasurement.d.ts +++ b/public/demo/libs/types/src/core/measure/BaseMeasurement.d.ts @@ -1,11 +1,14 @@ import * as THREE from "three"; -import { BaseMeasureDrawable } from "./BaseMeasureDrawable"; -import { Tooltip } from "../../components/tool-tip/Tooltip"; -import { DrawableData } from "../canvas"; -import { DrawableList } from "../canvas/DrawableList"; -import { OSnapHelper } from "../helpers/OSnapHelper"; -import { Event } from "../utils"; -import type { BaseViewer } from "../viewers/BaseViewer"; +import { Tooltip } from "../../components/tool-tip"; +import { DrawableData, DrawableList } from "../../core/canvas"; +import { OSnapHelper } from "../../core/helpers"; +import { EventInfo, InputManager } from "../../core/input/InputManager"; +import type { BaseMeasureDrawable } from "../../core/measure/BaseMeasureDrawable"; +import { Event } from "../../core/utils"; +import type { BaseViewer } from "../../core/viewers"; +/** + * Measurement type. e.g. distance measurement, area measurement, etc. + */ export declare enum MeasurementType { Distance = "Distance", Area = "Area", @@ -26,23 +29,43 @@ export interface MeasurementData extends DrawableData { id: string; /** * Two dimension float array stores 2d or 3d points. - * e.g. [[1, 1, 1], [2.5, 3, 5]] + * e.g., You can use "[[1, 1], [2.5, 3]]" to represent a distance measurement result + * "[1, 1]" is the first point, and "[2.5, 3]" is the second point. */ points: number[][]; } +type MeasureHandler = { + /** + * click measure + */ + clickedonmeasurement: BaseMeasureDrawable; + /** + * draw measure complete + */ + complete: BaseMeasureDrawable; + /** + * deactivate measure + */ + deactivate: MeasurementType; + /** + * draw first point + */ + firstpointpicked: BaseMeasureDrawable; +}; /** * BaseMeasurement class */ -export declare abstract class BaseMeasurement extends Event { +export declare abstract class BaseMeasurement extends Event { static MAX_DISTANCE: number; protected type: MeasurementType; protected viewer: BaseViewer; + private inputManager; protected drawList: DrawableList; protected osnapHelper: OSnapHelper; protected raycaster?: THREE.Raycaster; protected mouseMoved: boolean; protected mouseDowned: boolean; - protected lastMoveEvent?: MouseEvent; + protected lastMoveEvent?: EventInfo; protected mouseDownPositionX: number; protected mouseDownPositionY: number; protected currentMeasureDrawable?: BaseMeasureDrawable; @@ -53,9 +76,10 @@ export declare abstract class BaseMeasurement extends Event { protected snapPoint?: THREE.Vector3 | undefined; protected completed?: boolean; protected clickedOnMeasurementDrawable?: BaseMeasureDrawable; - constructor(type: MeasurementType, viewer: BaseViewer, drawList: DrawableList, osnapHelper: OSnapHelper); + constructor(type: MeasurementType, viewer: BaseViewer, input: InputManager, drawList: DrawableList, osnapHelper: OSnapHelper); get canvas(): HTMLCanvasElement; get camera(): THREE.Camera; + get renderer(): THREE.WebGLRenderer; /** * If measurement is active. * Here let's use raycaster to identify whether this measurement is active. @@ -69,12 +93,12 @@ export declare abstract class BaseMeasurement extends Event { deactivate(): void; protected removeDrawable(drawable: BaseMeasureDrawable): void; clearClickedDrawable(): void; - mousedown: (e: MouseEvent) => void; - mousemove: (e: MouseEvent) => void; - mouseup: (e: MouseEvent) => void; + mousedown: (e: EventInfo) => void; + mousemove: (e: EventInfo) => void; + mouseup: (e: EventInfo) => void; dblclick: () => void; - protected onMouseClick(e: MouseEvent): void; - keydown: (e: KeyboardEvent) => void; + protected onMouseClick(e: EventInfo): void; + keydown: (e: EventInfo) => void; protected abstract complete(): void; abstract cancel(): void; protected abstract setTooltipContent(): void; @@ -83,8 +107,9 @@ export declare abstract class BaseMeasurement extends Event { * The closest intersection * @param e */ - getIntersections: (e: MouseEvent) => THREE.Intersection[]; + getIntersections: (e: EventInfo) => THREE.Intersection[]; private getIntersectsOutline; lastMouseDownPosition?: THREE.Vector3; private handleSnap; } +export {}; diff --git a/public/demo/libs/types/src/core/measure/CoordinateMeasureDrawable.d.ts b/public/demo/libs/types/src/core/measure/CoordinateMeasureDrawable.d.ts index ee3b4a3..c1d0309 100644 --- a/public/demo/libs/types/src/core/measure/CoordinateMeasureDrawable.d.ts +++ b/public/demo/libs/types/src/core/measure/CoordinateMeasureDrawable.d.ts @@ -1,6 +1,6 @@ import * as THREE from "three"; -import { BaseMeasureDrawable } from "./BaseMeasureDrawable"; -import { MeasurementType } from "./BaseMeasurement"; +import { BaseMeasureDrawable } from "../../core/measure/BaseMeasureDrawable"; +import { MeasurementType } from "../../core/measure/BaseMeasurement"; export declare class CoordinateMeasureDrawable extends BaseMeasureDrawable { type: MeasurementType; constructor(id: string, points: THREE.Vector3[]); diff --git a/public/demo/libs/types/src/core/measure/CoordinateMeasurement.d.ts b/public/demo/libs/types/src/core/measure/CoordinateMeasurement.d.ts index 4d4e3f0..ce3df9a 100644 --- a/public/demo/libs/types/src/core/measure/CoordinateMeasurement.d.ts +++ b/public/demo/libs/types/src/core/measure/CoordinateMeasurement.d.ts @@ -1,12 +1,13 @@ import * as THREE from "three"; -import { BaseMeasurement } from "./BaseMeasurement"; -import { DrawableList } from "../canvas/DrawableList"; -import { OSnapHelper } from "../helpers/OSnapHelper"; -import type { BaseViewer } from "../viewers/BaseViewer"; +import { DrawableList } from "../../core/canvas"; +import { OSnapHelper } from "../../core/helpers"; +import { EventInfo, InputManager } from "../../core/input/InputManager"; +import { BaseMeasurement } from "../../core/measure/BaseMeasurement"; +import type { BaseViewer } from "../../core/viewers"; export declare class CoordinateMeasurement extends BaseMeasurement { - constructor(viewer: BaseViewer, drawList: DrawableList, osnapHelper: OSnapHelper); + constructor(viewer: BaseViewer, input: InputManager, drawList: DrawableList, osnapHelper: OSnapHelper); protected onMouseMove(position: THREE.Vector3): void; - protected onMouseClick(e: MouseEvent): void; + protected onMouseClick(e: EventInfo): void; protected complete(): void; cancel(): void; protected setTooltipContent(): void; diff --git a/public/demo/libs/types/src/core/measure/DistanceMeasureDrawable.d.ts b/public/demo/libs/types/src/core/measure/DistanceMeasureDrawable.d.ts index 3692f9c..56b72f7 100644 --- a/public/demo/libs/types/src/core/measure/DistanceMeasureDrawable.d.ts +++ b/public/demo/libs/types/src/core/measure/DistanceMeasureDrawable.d.ts @@ -1,6 +1,6 @@ import * as THREE from "three"; -import { BaseMeasureDrawable } from "./BaseMeasureDrawable"; -import { MeasurementType } from "./BaseMeasurement"; +import { BaseMeasureDrawable } from "../../core/measure/BaseMeasureDrawable"; +import { MeasurementType } from "../../core/measure/BaseMeasurement"; export declare class DistanceMeasureDrawable extends BaseMeasureDrawable { static readonly SHORT_LINE_LENGTH = 12; type: MeasurementType; diff --git a/public/demo/libs/types/src/core/measure/DistanceMeasurement.d.ts b/public/demo/libs/types/src/core/measure/DistanceMeasurement.d.ts index 40a6326..b1d3485 100644 --- a/public/demo/libs/types/src/core/measure/DistanceMeasurement.d.ts +++ b/public/demo/libs/types/src/core/measure/DistanceMeasurement.d.ts @@ -1,12 +1,13 @@ import * as THREE from "three"; -import { BaseMeasurement } from "./BaseMeasurement"; -import { DrawableList } from "../canvas/DrawableList"; -import { OSnapHelper } from "../helpers/OSnapHelper"; -import type { BaseViewer } from "../viewers/BaseViewer"; +import { DrawableList } from "../../core/canvas"; +import { OSnapHelper } from "../../core/helpers"; +import { EventInfo, InputManager } from "../../core/input/InputManager"; +import { BaseMeasurement } from "../../core/measure/BaseMeasurement"; +import type { BaseViewer } from "../../core/viewers"; export declare class DistanceMeasurement extends BaseMeasurement { - constructor(viewer: BaseViewer, drawList: DrawableList, osnapHelper: OSnapHelper); + constructor(viewer: BaseViewer, input: InputManager, drawList: DrawableList, osnapHelper: OSnapHelper); protected onMouseMove(position: THREE.Vector3): void; - protected onMouseClick(e: MouseEvent): void; + protected onMouseClick(e: EventInfo): void; protected complete(): void; cancel(): void; deactivate(): void; diff --git a/public/demo/libs/types/src/core/measure/MeasurementManager.d.ts b/public/demo/libs/types/src/core/measure/MeasurementManager.d.ts index 4d8b624..38ef2c0 100644 --- a/public/demo/libs/types/src/core/measure/MeasurementManager.d.ts +++ b/public/demo/libs/types/src/core/measure/MeasurementManager.d.ts @@ -1,37 +1,36 @@ import * as THREE from "three"; -import { BaseMeasureDrawable } from "./BaseMeasureDrawable"; -import { MeasurementData, MeasurementType } from "./BaseMeasurement"; -import type { BaseViewer } from "../viewers/BaseViewer"; +import { EventInfo, InputManager } from "../../core/input/InputManager"; +import { BaseMeasureDrawable } from "../../core/measure/BaseMeasureDrawable"; +import { MeasurementData, MeasurementType } from "../../core/measure/BaseMeasurement"; +import type { BaseViewer } from "../../core/viewers"; export declare class MeasurementManager { scene: THREE.Scene; selectedMeasurementDrawable: BaseMeasureDrawable | undefined; private overlayRender?; private drawableList; private viewer; + private inputManager; private osnapHelper; private measurements; private activeMeasurementType; private undoRedoHelper; - constructor(viewer: BaseViewer); + constructor(viewer: BaseViewer, input: InputManager); private initEvents; get canvas(): HTMLCanvasElement; get raycaster(): THREE.Raycaster | undefined; getPixelSizeInWorldCoord(): number; - /** - * The closest intersection - * @param e - */ - getIntersections: (e: MouseEvent) => THREE.Intersection[]; addMeasurement(drawable: BaseMeasureDrawable, needRecord?: boolean): void; - createMeasurement(data: MeasurementData): import("..").Drawable; + createMeasurement(data: MeasurementData): import("../../core/canvas").Drawable; removeMeasurement(drawable: BaseMeasureDrawable, needRecord?: boolean): void; updateSnapTolerance(pixelSize?: number): void; activateMeasurement(type: MeasurementType): void; deactivateMeasurement(): void; getActiveMeasurementType(): MeasurementType | undefined; isMeasurementActive(): boolean; + isMeasurementMeasuring(): boolean; getMeasurementsData(): MeasurementData[]; setMeasurementsData(dataArray: MeasurementData[]): void; + setMeasurementVisibility(id: string, visible: boolean): boolean; setMeasurementsVisibility(visible: boolean): void; clearMeasurements(): void; removeMeasurementById(id: string, needRecord?: boolean): void; @@ -42,5 +41,5 @@ export declare class MeasurementManager { redo(): void; clearUndoRedo(): void; destroy(): void; - keydown: (e: KeyboardEvent) => void; + keydown: (e: EventInfo) => void; } diff --git a/public/demo/libs/types/src/core/measure/MeasurementUndoRedo.d.ts b/public/demo/libs/types/src/core/measure/MeasurementUndoRedo.d.ts index 9d295dd..462dcf3 100644 --- a/public/demo/libs/types/src/core/measure/MeasurementUndoRedo.d.ts +++ b/public/demo/libs/types/src/core/measure/MeasurementUndoRedo.d.ts @@ -1,5 +1,5 @@ -import { MeasurementManager } from "./MeasurementManager"; -import { OperationRecord, UndoRedoHelper } from "../helpers/UndoRedoHelper"; +import { OperationRecord, UndoRedoHelper } from "../../core/helpers"; +import type { MeasurementManager } from "../../core/measure/MeasurementManager"; export declare enum MeasurementState { Add = "ADD", Remove = "REMOVE" diff --git a/public/demo/libs/types/src/core/navcube/NavCubeViewport.d.ts b/public/demo/libs/types/src/core/navcube/NavCubeViewport.d.ts index 0664cda..06792e0 100644 --- a/public/demo/libs/types/src/core/navcube/NavCubeViewport.d.ts +++ b/public/demo/libs/types/src/core/navcube/NavCubeViewport.d.ts @@ -1,7 +1,7 @@ import { OrthographicCamera, Scene, Vector3 } from "three"; import { CSS3DRenderer } from "three/examples/jsm/renderers/CSS3DRenderer.js"; import { NavCube } from "./NavCube"; -import type { BaseViewer } from "../viewers/BaseViewer"; +import type { BaseViewer } from "../../core/viewers"; /** * This renderer monitors the host renderer's camera, and keeps a NavCube * the same direction as host renderer's diff --git a/public/demo/libs/types/src/core/section/AxisPlaneSection.d.ts b/public/demo/libs/types/src/core/section/AxisPlaneSection.d.ts index 82b4ced..6bea042 100644 --- a/public/demo/libs/types/src/core/section/AxisPlaneSection.d.ts +++ b/public/demo/libs/types/src/core/section/AxisPlaneSection.d.ts @@ -1,34 +1,38 @@ -import { Scene, Vector3, WebGLRenderer } from "three"; -import { OrbitControls } from "../controls/OrbitControls"; -import type { BaseViewer } from "../viewers/BaseViewer"; +import * as THREE from "three"; +import { EventInfo, InputManager } from "../../core/input/InputManager"; +import { BaseSection } from "../../core/section/BaseSection"; +import { SectionGizmo } from "../../core/section/SectionGizmo"; +import { SectionPlane } from "../../core/section/SectionPlane"; +import type { BaseViewer } from "../../core/viewers"; export declare enum AxisType { - X = "x", - Y = "y", - Z = "z" + X = "X", + Y = "Y", + Z = "Z" } -export declare class AxisPlaneSection { - private readonly container?; - protected viewer: BaseViewer; - protected camera: THREE.Camera; - protected controls: OrbitControls; - protected scene: Scene; - protected renderer: WebGLRenderer; - protected objectIds: number[]; - private sectionPlane?; - isShowSectionPlane: boolean; - private popPanel?; +export declare class AxisPlaneSection extends BaseSection { + protected activeAxis: AxisType; + protected gizmo?: SectionGizmo; + protected planeMesh?: SectionPlane; + protected clipPlane?: THREE.Plane; + protected selectedObject?: SectionPlane | THREE.Mesh; protected axisInfoMap: { [key in AxisType]: { - normal: Vector3; + normal: THREE.Vector3; }; }; - constructor(viewer: BaseViewer, objectIds: number[], container?: HTMLElement | undefined); - getRotateParam(axisType: AxisType): (number | Vector3)[]; - initPlane(axisType: AxisType): void; - open(): void; - close(): void; - enableSection(): void; - cancelSection(): void; - showSectionPlane(): void; - hideSectionPlane(): void; + protected center: THREE.Vector3; + constructor(viewer: BaseViewer, input: InputManager); + activate(): void; + deactivate(): void; + resetSection(): void; + setActiveAxis(type: AxisType): void; + setSectionVisible(visible: boolean): void; + initOrUpdateClipPlane(): void; + initOrUpdateSectionPlane(): void; + initOrUpdateGizmo(): void; + onDragStart(e: EventInfo): void; + onDragMove(e: EventInfo): void; + onDragEnd(e: EventInfo): void; + getIntersectObjects(): THREE.Object3D[]; + activateSelectedObject(active: boolean): void; } diff --git a/public/demo/libs/types/src/core/section/BaseBoxSection.d.ts b/public/demo/libs/types/src/core/section/BaseBoxSection.d.ts index c189e6b..612220d 100644 --- a/public/demo/libs/types/src/core/section/BaseBoxSection.d.ts +++ b/public/demo/libs/types/src/core/section/BaseBoxSection.d.ts @@ -1,5 +1,5 @@ import { Box3, Group, LineSegments, Mesh, OrthographicCamera, PerspectiveCamera, Plane, Raycaster, Scene, Vector2, Vector3, WebGLRenderer } from "three"; -import { OrbitControls } from "../controls/OrbitControls"; +import { CameraControlsEx } from "../controls/CameraControlsEx"; import { Views } from "../utils/Viewer3DUtils"; /** * Object's box section @@ -10,13 +10,13 @@ export declare class BaseBoxSection { protected scene: Scene; protected camera: PerspectiveCamera | OrthographicCamera; protected renderer: WebGLRenderer; - protected controls: OrbitControls; + protected controls: CameraControlsEx; protected draggableArrowView: Views | string; protected visibleArrowView: Views | string; /** * Constructor */ - constructor(scene: Scene, camera: PerspectiveCamera | OrthographicCamera, renderer: WebGLRenderer, controls: OrbitControls); + constructor(scene: Scene, camera: PerspectiveCamera | OrthographicCamera, renderer: WebGLRenderer, controls: CameraControlsEx); /** * If sectionBox is not assigned in constructor, then set it here. * For now, we only support it to be set once. Otherwise, need to check isOpen status, and initSectionBox properly. diff --git a/public/demo/libs/types/src/core/section/BasePlaneSection.d.ts b/public/demo/libs/types/src/core/section/BasePlaneSection.d.ts index d24b867..82d05d2 100644 --- a/public/demo/libs/types/src/core/section/BasePlaneSection.d.ts +++ b/public/demo/libs/types/src/core/section/BasePlaneSection.d.ts @@ -1,6 +1,6 @@ import * as THREE from "three"; import { Box3, Group, LineSegments, Matrix4, Mesh, Plane, Raycaster, Scene, Vector2, Vector3, WebGLRenderer } from "three"; -import { OrbitControls } from "../controls/OrbitControls"; +import { CameraControlsEx } from "../controls/CameraControlsEx"; import { ObjectPixelSizeHelper } from "../helpers/ObjectPixelSizeHelper"; declare enum ActionType { None = "", @@ -19,7 +19,7 @@ export declare class BasePlaneSection { protected scene: Scene; protected camera: THREE.Camera; protected renderer: WebGLRenderer; - protected controls: OrbitControls; + protected controls: CameraControlsEx; protected isSectionObjectVisible: boolean; protected gizmo: THREE.Group; protected objectPixelSizeHelper?: ObjectPixelSizeHelper; @@ -27,7 +27,7 @@ export declare class BasePlaneSection { /** * Constructor */ - constructor(scene: Scene, camera: THREE.Camera, renderer: WebGLRenderer, controls: OrbitControls); + constructor(scene: Scene, camera: THREE.Camera, renderer: WebGLRenderer, controls: CameraControlsEx); /** * If plane is not assigned in constructor, then set it here. * For now, we only support it to be set once. Otherwise, need to check isOpen status, and initSectionPlane properly. diff --git a/public/demo/libs/types/src/core/section/GlobalPlaneSection.d.ts b/public/demo/libs/types/src/core/section/GlobalPlaneSection.d.ts index 1dda003..12bbeed 100644 --- a/public/demo/libs/types/src/core/section/GlobalPlaneSection.d.ts +++ b/public/demo/libs/types/src/core/section/GlobalPlaneSection.d.ts @@ -1,6 +1,6 @@ import { Box3, OrthographicCamera, PerspectiveCamera, Scene, WebGLRenderer } from "three"; +import { CameraControlsEx } from "../controls/CameraControlsEx"; import { BasePlaneSection } from "./BasePlaneSection"; -import { OrbitControls } from "../controls/OrbitControls"; /** * GlobalPlaneSection section */ @@ -8,7 +8,7 @@ export declare class GlobalPlaneSection extends BasePlaneSection { /** * Constructor */ - constructor(sectionBox: Box3, scene: Scene, camera: PerspectiveCamera | OrthographicCamera, renderer: WebGLRenderer, controls: OrbitControls); + constructor(sectionBox: Box3, scene: Scene, camera: PerspectiveCamera | OrthographicCamera, renderer: WebGLRenderer, controls: CameraControlsEx); /** * Initialize section box */ diff --git a/public/demo/libs/types/src/core/section/ObjectsBoxSection.d.ts b/public/demo/libs/types/src/core/section/ObjectsBoxSection.d.ts index 274635b..041b0f4 100644 --- a/public/demo/libs/types/src/core/section/ObjectsBoxSection.d.ts +++ b/public/demo/libs/types/src/core/section/ObjectsBoxSection.d.ts @@ -1,21 +1,27 @@ -import { OrthographicCamera, PerspectiveCamera, Scene, WebGLRenderer } from "three"; -import { BaseBoxSection } from "./BaseBoxSection"; -import { OrbitControls } from "../controls/OrbitControls"; -/** - * Object's box section - **/ -export declare class ObjectsBoxSection extends BaseBoxSection { - private objectIds; - /** - * Constructor - */ - constructor(scene: Scene, camera: PerspectiveCamera | OrthographicCamera, renderer: WebGLRenderer, controls: OrbitControls, objectIds: number[]); - /** - * Initialize 6 section plane - **/ - protected initPlanes(): void; - /** - * Clears section box - **/ - protected clearSectionBox(): void; +import * as THREE from "three"; +import { Views } from "../utils/Viewer3DUtils"; +import { BaseViewer } from "../viewers/BaseViewer"; +import { BaseSection } from "./BaseSection"; +import { SectionPlane } from "./SectionPlane"; +import { EventInfo, InputManager } from "../../core/input/InputManager"; +export declare class ObjectsBoxSection extends BaseSection { + protected selectedObject?: SectionPlane; + protected planesMesh?: SectionPlane[]; + protected sectionRange: Record; + constructor(viewer: BaseViewer, input: InputManager); + activate(): void; + deactivate(): void; + protected initOrUpdateVertices(): void; + initOrUpdateClipPlane(): void; + initOrUpdateSectionPlane(): void; + activateSelectedObject(active: boolean): void; + onDragStart(e: EventInfo): void; + onDragMove(e: EventInfo): void; + onDragEnd(e: EventInfo): void; + protected dragTranslateSectionPlane(axis: THREE.Vector3, from: THREE.Vector3, to: THREE.Vector3, actionType: Views): void; + protected isInRange(value: number, range: number[]): boolean; + protected getIntersections(e: EventInfo): THREE.Intersection | undefined; + getIntersectObjects(): SectionPlane[]; + resetSection(): void; + setSectionVisible(visible: boolean): void; } diff --git a/public/demo/libs/types/src/core/section/ObjectsPlaneSection.d.ts b/public/demo/libs/types/src/core/section/ObjectsPlaneSection.d.ts index 47fa26f..b5e8dbe 100644 --- a/public/demo/libs/types/src/core/section/ObjectsPlaneSection.d.ts +++ b/public/demo/libs/types/src/core/section/ObjectsPlaneSection.d.ts @@ -1,6 +1,6 @@ import { OrthographicCamera, PerspectiveCamera, Scene, WebGLRenderer } from "three"; +import { CameraControlsEx } from "../controls/CameraControlsEx"; import { BasePlaneSection } from "./BasePlaneSection"; -import { OrbitControls } from "../controls/OrbitControls"; /** * Objects' plane section **/ @@ -9,7 +9,7 @@ export declare class ObjectsPlaneSection extends BasePlaneSection { /** * Constructor */ - constructor(objectIds: number[], scene: Scene, camera: PerspectiveCamera | OrthographicCamera, renderer: WebGLRenderer, controls: OrbitControls); + constructor(objectIds: number[], scene: Scene, camera: PerspectiveCamera | OrthographicCamera, renderer: WebGLRenderer, controls: CameraControlsEx); /** * Initialize 6 section plane **/ diff --git a/public/demo/libs/types/src/core/section/PickPlaneSection.d.ts b/public/demo/libs/types/src/core/section/PickPlaneSection.d.ts index c35396e..ef0f92d 100644 --- a/public/demo/libs/types/src/core/section/PickPlaneSection.d.ts +++ b/public/demo/libs/types/src/core/section/PickPlaneSection.d.ts @@ -1,33 +1,36 @@ import * as THREE from "three"; -import { Raycaster, Scene, WebGLRenderer } from "three"; -import { BasePlaneSection } from "./BasePlaneSection"; -import { PickSectionPopPanel } from "../../components/pop-panel/PickSectionPopPanel"; -import { Tooltip } from "../../components/tool-tip/Tooltip"; -import { OrbitControls } from "../controls/OrbitControls"; -import type { BaseViewer } from "../viewers/BaseViewer"; -export declare class PickPlaneSection { - private readonly container?; - protected viewer: BaseViewer; - protected camera: THREE.Camera; - protected controls: OrbitControls; - protected scene: Scene; - protected renderer: WebGLRenderer; - protected objectIds: number[]; - isShowSectionPlane: boolean; - protected sectionPlane?: BasePlaneSection; - protected popPanel?: PickSectionPopPanel; +import { Tooltip } from "../../components/tool-tip"; +import { EventInfo, InputManager } from "../../core/input/InputManager"; +import { BaseSection } from "../../core/section/BaseSection"; +import { SectionGizmo } from "../../core/section/SectionGizmo"; +import { SectionPlane } from "../../core/section/SectionPlane"; +import type { BaseViewer } from "../../core/viewers"; +export declare class PickPlaneSection extends BaseSection { + protected faceInfo?: { + position: THREE.Vector3; + normal: THREE.Vector3; + }; + protected gizmo?: SectionGizmo; + protected planeMesh?: SectionPlane; + protected clipPlane?: THREE.Plane; + protected selectedObject?: SectionPlane | THREE.Mesh | THREE.Object3D; + protected center: THREE.Vector3; protected tooltip?: Tooltip; - protected isSelected: boolean; - protected raycaster: Raycaster; - constructor(viewer: BaseViewer, objectIds: number[], container?: HTMLElement | undefined); - protected updateMouseAndRay(event: MouseEvent): void; - protected pickFace(evt: MouseEvent): boolean; - init(): void; - protected clickOnceListerner: (event: MouseEvent) => void; - open(): void; - close(): void; - enableSection(): void; - cancelSection(): void; - hideSectionPlane(): void; - showSectionPlane(): void; + constructor(viewer: BaseViewer, input: InputManager); + activate(): void; + deactivate(): void; + setSection(): void; + resetSection(): void; + setSectionVisible(visible: boolean): void; + initOrUpdateClipPlane(): void; + initOrUpdateSectionPlane(): void; + initOrUpdateGizmo(): void; + mousedown: (e: EventInfo) => void; + mousemove: (e: EventInfo) => void; + onDragStart(e: EventInfo): void; + onDragMove(e: EventInfo): void; + onDragEnd(e: EventInfo): void; + getIntersectObjects(): THREE.Object3D[]; + activateSelectedObject(active: boolean): void; + pickFace(e: EventInfo): THREE.Intersection> | undefined; } diff --git a/public/demo/libs/types/src/core/section/ViewportSection.d.ts b/public/demo/libs/types/src/core/section/ViewportSection.d.ts index 441eb93..07b13c4 100644 --- a/public/demo/libs/types/src/core/section/ViewportSection.d.ts +++ b/public/demo/libs/types/src/core/section/ViewportSection.d.ts @@ -1,6 +1,6 @@ import { Box3, Group, Plane, Scene, Vector3 } from "three"; -import { BoxFace, BoxLine } from "./BaseBoxSection"; import { Views } from "../utils/Viewer3DUtils"; +import { BoxFace, BoxLine } from "./BaseBoxSection"; /** * For dxf viewport section, only 4 section planes are required. */ diff --git a/public/demo/libs/types/src/core/section/index.d.ts b/public/demo/libs/types/src/core/section/index.d.ts index 7bb3082..16cf49b 100644 --- a/public/demo/libs/types/src/core/section/index.d.ts +++ b/public/demo/libs/types/src/core/section/index.d.ts @@ -1,4 +1,5 @@ +export * from "./BaseSection"; export * from "./AxisPlaneSection"; export * from "./ObjectsBoxSection"; -export * from "./ObjectsPlaneSection"; export * from "./PickPlaneSection"; +export * from "./SectionManager"; diff --git a/public/demo/libs/types/src/core/shx-parser/ShxParser.d.ts b/public/demo/libs/types/src/core/shx-parser/ShxParser.d.ts index 399cbef..66d98b9 100644 --- a/public/demo/libs/types/src/core/shx-parser/ShxParser.d.ts +++ b/public/demo/libs/types/src/core/shx-parser/ShxParser.d.ts @@ -1,7 +1,7 @@ import * as THREE from "three"; -import { TextShape } from "./TextShape"; -import { FontFile } from "./files/FontFile"; import { BinaryReader } from "../helpers/BinaryReader"; +import { TextShape } from "./TextShape"; +import type { FontFile } from "./files/FontFile"; export declare class ShxParser { static stopFlag: string; static FILE_STOP_FLAG: string[]; diff --git a/public/demo/libs/types/src/core/shx-parser/files/BigFontFile.d.ts b/public/demo/libs/types/src/core/shx-parser/files/BigFontFile.d.ts index a8bc133..80e26c0 100644 --- a/public/demo/libs/types/src/core/shx-parser/files/BigFontFile.d.ts +++ b/public/demo/libs/types/src/core/shx-parser/files/BigFontFile.d.ts @@ -1,5 +1,6 @@ -import { FontFile, ShxFontType } from "./FontFile"; import { BinaryReader } from "../../helpers/BinaryReader"; +import { ShxFontType } from "../Shx.constants"; +import { FontFile } from "./FontFile"; export declare class BigFontFile extends FontFile { isExtend: boolean; type: ShxFontType; diff --git a/public/demo/libs/types/src/core/shx-parser/files/FontFile.d.ts b/public/demo/libs/types/src/core/shx-parser/files/FontFile.d.ts index 02c6294..343c178 100644 --- a/public/demo/libs/types/src/core/shx-parser/files/FontFile.d.ts +++ b/public/demo/libs/types/src/core/shx-parser/files/FontFile.d.ts @@ -1,17 +1,8 @@ import * as THREE from "three"; import { FontDataTableRecord } from "../../../core/indexeddb/FontDataTable"; import { BinaryReader } from "../../helpers/BinaryReader"; +import { Orientation, ShxFontType } from "../Shx.constants"; import { TextShape } from "../TextShape"; -export declare enum Orientation { - Horizontal = 0, - Vertical = 1, - All = 2 -} -export declare enum ShxFontType { - Shapes = 0, - Bigfont = 1, - Unifont = 2 -} export declare abstract class FontFile { type: ShxFontType; info: string; diff --git a/public/demo/libs/types/src/core/shx-parser/files/ShapeFontFile.d.ts b/public/demo/libs/types/src/core/shx-parser/files/ShapeFontFile.d.ts index 78bc22e..b0fae23 100644 --- a/public/demo/libs/types/src/core/shx-parser/files/ShapeFontFile.d.ts +++ b/public/demo/libs/types/src/core/shx-parser/files/ShapeFontFile.d.ts @@ -1,5 +1,6 @@ -import { FontFile, ShxFontType } from "./FontFile"; import { BinaryReader } from "../../helpers/BinaryReader"; +import { ShxFontType } from "../Shx.constants"; +import { FontFile } from "./FontFile"; export declare class ShapeFontFile extends FontFile { type: ShxFontType; constructor(url: string); diff --git a/public/demo/libs/types/src/core/shx-parser/files/UniFontFile.d.ts b/public/demo/libs/types/src/core/shx-parser/files/UniFontFile.d.ts index d287392..dd6f2f8 100644 --- a/public/demo/libs/types/src/core/shx-parser/files/UniFontFile.d.ts +++ b/public/demo/libs/types/src/core/shx-parser/files/UniFontFile.d.ts @@ -1,5 +1,6 @@ -import { FontFile, ShxFontType } from "./FontFile"; import { BinaryReader } from "../../helpers/BinaryReader"; +import { ShxFontType } from "../Shx.constants"; +import { FontFile } from "./FontFile"; export declare class UniFontFile extends FontFile { type: ShxFontType; isUniCode: boolean; diff --git a/public/demo/libs/types/src/core/utils/CommonUtils.d.ts b/public/demo/libs/types/src/core/utils/CommonUtils.d.ts index cf4a24a..19117b2 100644 --- a/public/demo/libs/types/src/core/utils/CommonUtils.d.ts +++ b/public/demo/libs/types/src/core/utils/CommonUtils.d.ts @@ -1,5 +1,5 @@ import * as THREE from "three"; -import { SVGObject } from "../patches/SVGRenderer"; +import { SVGObject } from "src/core/patches/SVGRenderer"; /** * @internal */ @@ -75,6 +75,11 @@ export declare class CommonUtils { static roundNumber(value: number, n: number): number; static convertDecimalToHex(decimal: number | string): string; static canvasToImage(canvas: HTMLCanvasElement): Promise; + /** + * Takes screenshot to given rendering context and return base64 string in png/jpeg format. + * @param bbox If valid, takes screenshot of a sub image with given bounding box in screen coordinate. + */ + static renderingContextToImage(context: CanvasRenderingContext2D, bbox?: THREE.Box2, type?: string, quality?: number): string; /** * Prints memory usage */ diff --git a/public/demo/libs/types/src/core/utils/CoordinateConversionUtils.d.ts b/public/demo/libs/types/src/core/utils/CoordinateConversionUtils.d.ts index 93fdba0..01eb1d2 100644 --- a/public/demo/libs/types/src/core/utils/CoordinateConversionUtils.d.ts +++ b/public/demo/libs/types/src/core/utils/CoordinateConversionUtils.d.ts @@ -1,9 +1,10 @@ import * as THREE from "three"; +import type { EventInfo, IPointerEvent } from "../../core/input/InputManager"; /** * @internal */ export declare class CoordinateConversionUtils { - static getScreenPointByEvent(event: MouseEvent, container: HTMLElement): THREE.Vector2; + static getScreenPointByEvent(event: IPointerEvent | EventInfo | MouseEvent | PointerEvent, container: HTMLElement): THREE.Vector2; static getScreenPointByTouchEvent(event: TouchEvent, container: HTMLElement): THREE.Vector2; static worldPosition2ScreenPoint(vector: THREE.Vector3, camera: THREE.Camera, container: HTMLElement): THREE.Vector2; static screenPoint2worldPosition(vector: THREE.Vector2, camera: THREE.Camera, container: HTMLElement): THREE.Vector3; diff --git a/public/demo/libs/types/src/core/utils/DeviceUtils.d.ts b/public/demo/libs/types/src/core/utils/DeviceUtils.d.ts index 3c0c76d..a120c11 100644 --- a/public/demo/libs/types/src/core/utils/DeviceUtils.d.ts +++ b/public/demo/libs/types/src/core/utils/DeviceUtils.d.ts @@ -8,4 +8,7 @@ export declare class DeviceUtils { */ static isTouchScreenDevice(): boolean; static printDeviceInfo(): void; + static creatReactNativeCanvas(context: WebGLRenderingContext | WebGL2RenderingContext | CanvasRenderingContext2D): HTMLCanvasElement; + static isBrowser: boolean; + static isNode: boolean; } diff --git a/public/demo/libs/types/src/core/utils/Event.d.ts b/public/demo/libs/types/src/core/utils/Event.d.ts index f08f397..ab4c8b7 100644 --- a/public/demo/libs/types/src/core/utils/Event.d.ts +++ b/public/demo/libs/types/src/core/utils/Event.d.ts @@ -1,17 +1,45 @@ +export type Handler = (val: T) => void; /** * @internal */ -export declare class Event { - private eventList; +export declare class Event = {}> { + private map; /** * @internal */ - addEventListener(type: string | symbol, handler: (event?: unknown) => void): void; + addEventListener(name: EventName, handler: Handler): void; /** * @internal */ - dispatchEvent(type: string | symbol, event?: unknown): void; - removeEventListener(type: string | symbol, handler: (event?: unknown) => void): void; - clearEventListeners(type: string | symbol): void; + dispatchEvent(name: EventName, value?: Events[EventName]): void; + /** + * Checks if there is a listener + * @internal + */ + hasEventListener(name: EventName): boolean; + /** + * Removes all event listeners + * @internal + */ + removeEventListener(): void; + /** + * @internal + */ + removeEventListener(name: EventName): void; + /** + * @internal + */ + removeEventListener(name: EventName, handler: Handler): void; + /** + * + * @param name + * @deprecated Replaced by removeEventListener(name); + * @internal + */ + clearEventListeners(name: EventName): void; + /** + * @deprecated Replaced by removeEventListener(); + * @internal + */ clearAllEventListener(): void; } diff --git a/public/demo/libs/types/src/core/utils/Locale.d.ts b/public/demo/libs/types/src/core/utils/Locale.d.ts index 2a054c0..92e9cbf 100644 --- a/public/demo/libs/types/src/core/utils/Locale.d.ts +++ b/public/demo/libs/types/src/core/utils/Locale.d.ts @@ -79,11 +79,13 @@ export declare const en: { fullscreen: string; layers: string; zoomToRectangle: string; + screenshot: string; }; Tooltip: { measure: string; areaMeasurement: string; section: string; + boxSelect: string; }; PopPanel: { reset: string; @@ -170,11 +172,13 @@ export declare const cn: { fullscreen: string; layers: string; zoomToRectangle: string; + screenshot: string; }; Tooltip: { measure: string; areaMeasurement: string; section: string; + boxSelect: string; }; PopPanel: { reset: string; diff --git a/public/demo/libs/types/src/core/utils/LogUtils.d.ts b/public/demo/libs/types/src/core/utils/LogUtils.d.ts index bef1d7b..cb1f054 100644 --- a/public/demo/libs/types/src/core/utils/LogUtils.d.ts +++ b/public/demo/libs/types/src/core/utils/LogUtils.d.ts @@ -1,2 +1,7 @@ import * as loglevel from "loglevel"; export declare const log: loglevel.RootLogger; +/** + * Sets log level. + * Note that, we limit user to set only some of the levels. + */ +export declare const setLogLevel: (level: string) => void; diff --git a/public/demo/libs/types/src/core/utils/MathUtils.d.ts b/public/demo/libs/types/src/core/utils/MathUtils.d.ts index 75cdffb..2de6702 100644 --- a/public/demo/libs/types/src/core/utils/MathUtils.d.ts +++ b/public/demo/libs/types/src/core/utils/MathUtils.d.ts @@ -11,7 +11,7 @@ export declare class MathUtils { static areNumbersClose(a: number, b: number, ref_tol?: number, abs_tol?: number): boolean; static areVector2sClose(point1: THREE.Vector2, point2: THREE.Vector2, ref_tol?: number, abs_tol?: number): boolean; static areVectorsClose(point1: THREE.Vector3, point2: THREE.Vector3, ref_tol?: number, abs_tol?: number): boolean; - static getArcAngleSpanRad(startAngle: number, endAngle: number): number; + static getArcAngleSpanInRadian(startAngle: number, endAngle: number): number; static getIntegerPartLength(num: number): number; static getRelativeEps(num: number, epsilon?: number): number; static getVector2RelativeEps(vec: THREE.Vector2, epsilon?: number): number; diff --git a/public/demo/libs/types/src/core/utils/SceneUtils.d.ts b/public/demo/libs/types/src/core/utils/SceneUtils.d.ts index 4c82150..b2e83dc 100644 --- a/public/demo/libs/types/src/core/utils/SceneUtils.d.ts +++ b/public/demo/libs/types/src/core/utils/SceneUtils.d.ts @@ -1,5 +1,5 @@ import * as THREE from "three"; -import { Exploder } from "../exploder/Exploder"; +import { Exploder } from "../../core/exploder"; /** * Util methods about Scene * @internal diff --git a/public/demo/libs/types/src/core/utils/index.d.ts b/public/demo/libs/types/src/core/utils/index.d.ts index cbd04bc..b617fdf 100644 --- a/public/demo/libs/types/src/core/utils/index.d.ts +++ b/public/demo/libs/types/src/core/utils/index.d.ts @@ -1,18 +1,26 @@ +export * from "./CancelablePromise"; export * from "./CommonUtils"; export * from "./CoordinateConversionUtils"; +export * from "./CSS2DObjectUtils"; export * from "./DecimalPrecisionUtils"; export * from "./DeviceUtils"; -export * from "./ExportUtils"; export * from "./Event"; +export * from "./ExportUtils"; export * from "./FpsUtils"; export * from "./GeometryUtils"; export * from "./GroundUtils"; +export * from "./Locale"; +export * from "./LogUtils"; export * from "./MaterialUtils"; export * from "./MathUtils"; export * from "./MergeUtils"; export * from "./ObjectUtils"; +export * from "./PolygonUtils"; export * from "./SceneUtils"; +export * from "./SectionUtils"; export * from "./SimplifyUtils"; export * from "./SkyboxUtils"; +export * from "./SVGObjectUtils"; +export * from "./TextureUtils"; export * from "./UnitConversionUtils"; export * from "./Viewer3DUtils"; diff --git a/public/demo/libs/types/src/core/viewers/BaseViewer.d.ts b/public/demo/libs/types/src/core/viewers/BaseViewer.d.ts index 630adb8..dbd7721 100644 --- a/public/demo/libs/types/src/core/viewers/BaseViewer.d.ts +++ b/public/demo/libs/types/src/core/viewers/BaseViewer.d.ts @@ -1,15 +1,34 @@ import type { TFunction } from "i18next"; import * as THREE from "three"; -import { OrbitControls as ThreeJsOrbitControls } from "three/examples/jsm/controls/OrbitControls.js"; -import { BaseViewerConfig, CameraConfig } from "../Configs"; -import { CanvasRender } from "../canvas"; -import { VRControls } from "../controls"; -import { OrbitControls } from "../controls/OrbitControls"; -import { Event } from "../utils"; +import { ViewerEvent } from "./ViewerEvent"; +import type { BaseViewerConfig, CameraConfig } from "../../core/Configs"; +import type { CanvasRender } from "../../core/canvas"; +import type { CameraControlsEx, VRControls } from "../../core/controls"; +import { EventInfo, InputManager } from "../../core/input/InputManager"; +import type { MarkupManager } from "../../core/markup"; +import type { MeasurementManager } from "../../core/measure"; +import type { BaseSection } from "../../core/section"; +import { Event } from "../../core/utils"; /** * @internal */ -export declare abstract class BaseViewer extends Event { +export declare enum ViewerName { + BaseViewer = "BaseViewer", + BimViewer = "BimViewer", + DxfViewer = "DxfViewer", + VRViewer = "BaseViewer" +} +type ViewerEventType = { + [K in ViewerEvent]: any; +}; +/** + * @internal + */ +export declare abstract class BaseViewer = ViewerEventType> extends Event { + /** + * @internal + */ + name: ViewerName; /** * @internal */ @@ -18,6 +37,7 @@ export declare abstract class BaseViewer extends Event { * @internal */ viewerContainer?: HTMLElement; + protected inputManager?: InputManager; /** * @internal */ @@ -29,11 +49,11 @@ export declare abstract class BaseViewer extends Event { /** * @internal */ - camera?: THREE.Camera; + camera?: THREE.PerspectiveCamera | THREE.OrthographicCamera; /** * @internal */ - controls?: OrbitControls | ThreeJsOrbitControls | VRControls; + controls?: CameraControlsEx | VRControls; protected height: number; protected width: number; /** @@ -41,6 +61,9 @@ export declare abstract class BaseViewer extends Event { */ widgetContainer?: HTMLElement; protected viewerCfg: BaseViewerConfig; + /** + * @internal + */ cameraCfg?: CameraConfig; /** * @internal @@ -51,8 +74,17 @@ export declare abstract class BaseViewer extends Event { * @internal */ overlayRender?: CanvasRender; + /** + * @internal + */ + loadedModels?: any; protected enableOverlayRenderer: boolean; + /** + * @internal + */ + protected requestAnimationFrameHandle?: number; constructor(viewerCfg: BaseViewerConfig); + private initLogLevel; private initLocalization; /** * Creates a viewerContainer under the container that user passed in. @@ -62,16 +94,64 @@ export declare abstract class BaseViewer extends Event { private initViewerContainer; private initWidgetContainer; destroy(): void; + /** + * @internal + */ + getInputManager(): InputManager | undefined; + /** + * @internal + */ + getViewConfig(): BaseViewerConfig; + /** + * @internal + */ enableRender(): void; + /** + * @internal + */ getRaycaster(): THREE.Raycaster | undefined; - getRaycastableObjectsByMouse(event?: MouseEvent | TouchEvent): THREE.Object3D[]; + /** + * @internal + */ + getRaycastableObjectsByMouse(event?: EventInfo): THREE.Object3D[]; + /** + * Gets all objects' bounding box in viewer. + * @internal + */ getBBox(): THREE.Box3 | undefined; + /** + * @internal + */ + getActiveSection(): BaseSection | undefined; flyTo(position: THREE.Vector3, lookAt: THREE.Vector3): void; /** * If it is a 3d viewer. * DxfViewer is 2d, thus returns false. * @default true + * @internal */ is3d(): boolean; + /** + * @internal + */ + getMeasurementManager(): MeasurementManager | undefined; + /** + * @internal + */ + getMarkupManager(): MarkupManager | undefined; deactivateMeasurement(): void; + setMeasurementVisibility(id: string, visible: boolean): boolean; + /** + * @internal + */ + screenshot(config: any): Promise; + /** + * @internal + */ + showStats(): void; + /** + * @internal + */ + hideStats(): void; } +export {}; diff --git a/public/demo/libs/types/src/core/viewers/BimViewer.d.ts b/public/demo/libs/types/src/core/viewers/BimViewer.d.ts index 78c6804..4f5ba12 100644 --- a/public/demo/libs/types/src/core/viewers/BimViewer.d.ts +++ b/public/demo/libs/types/src/core/viewers/BimViewer.d.ts @@ -1,13 +1,18 @@ import { TilesRenderer } from "3d-tiles-renderer"; import * as THREE from "three"; -import { BaseViewer } from "./BaseViewer"; -import { Settings as SettingsType } from "../../components/settings/ProjectSettingsDef"; +import { Settings as SettingsType } from "../../components/settings"; import { Toolbar } from "../../components/toolbar"; -import { BimViewerConfig, CameraConfig, ModelConfig } from "../Configs"; -import { SectionType } from "../Constants"; -import { Drawable } from "../canvas/Drawable"; -import { MeasurementType } from "../measure/"; +import { BimViewerConfig, CameraConfig, ModelConfig } from "../../core/Configs"; +import { SectionType } from "../../core/Constants"; +import { Drawable } from "../../core/canvas"; +import { EventInfo } from "../../core/input/InputManager"; +import { MeasurementData, MeasurementManager, MeasurementType } from "../../core/measure"; +import { BaseViewer, ViewerName } from "../../core/viewers/BaseViewer"; export declare class BimViewer extends BaseViewer { + /** + * @internal + */ + name: ViewerName; private timer; /** * @internal @@ -83,27 +88,26 @@ export declare class BimViewer extends BaseViewer { private raycaster?; private cameraUpdateInterval?; private savedMaterialsForOpacity?; - private mouseMoved; - private mouseDoubleClicked; private section?; /** * @internal */ sectionType?: string; + private sectionManager?; private measurementManager?; - private zoomToRect?; + private zoomToRectHelper?; private datGui?; private shadowCameraHelper?; private directionalLightHelper?; private webcam?; private webcamPlane?; private raf?; + private clock; private renderEnabled; private timeoutSymbol?; private isFrustumInsectChecking; private lastFrameExecuteTime; private maxFps; - private events; private settings; private spinner?; private jobCount; @@ -130,25 +134,20 @@ export declare class BimViewer extends BaseViewer { * @internal */ init(): void; + private initThree; + private initDom; private initScene; private initRenderer; private initCamera; private initControls; private initRotateToCursor; private onResize; - private onControlsChange; private onKeyDown; - /** - * When 'pointerup' event is triggered, we don't know if it is a dblclick. - * So, need to wait for 200ms etc. to see if there is another mouse click. - * @internal - */ - onPointerUp(viewer: BimViewer, event: MouseEvent): () => void; private initLights; /** * Initialize mouse/pointer events */ - private initPointerEvents; + private initEvents; private initDatGui; private initSpinner; private initOthers; @@ -199,6 +198,7 @@ export declare class BimViewer extends BaseViewer { * Loads 3dtiles * TODO: Temporarily does not support 3dtiles version 1.0 above * The coordinate system is not processed yet + * @internal */ load3dTiles(modelCfg: ModelConfig): Promise; /** @@ -215,6 +215,7 @@ export declare class BimViewer extends BaseViewer { * We won't set a opacity directly, because that way will lose model's original opacity value * @param isAdd is add or remove the opacity we added * @param opacity + * @internal */ addOrRemoveObjectOpacity(isAdd?: boolean, opacity?: number, includeObjectIds?: number[], excludeObjectIds?: number[]): void; /** @@ -233,7 +234,7 @@ export declare class BimViewer extends BaseViewer { /** * @internal */ - getRaycastableObjectsByMouse(event?: MouseEvent | TouchEvent): THREE.Object3D[]; + getRaycastableObjectsByMouse(event?: EventInfo): THREE.Object3D[]; private getRaycastableObjects; /** * Gets intersections by given mouse location. @@ -267,8 +268,9 @@ export declare class BimViewer extends BaseViewer { * selected by user manually, we don't need to make sure user can see it. While if selection is * made by program, we parbably need to make sure user can see it, in other words, the selected * object won't be blocked by other objects. + * @internal */ - selectObject(object?: THREE.Object3D, instanceId?: number, batchId?: number, depthTest?: boolean | undefined): void; + selectObject(object?: THREE.Object3D | Drawable, instanceId?: number, batchId?: number, depthTest?: boolean | undefined): void; /** * Clears the current selection */ @@ -284,6 +286,7 @@ export declare class BimViewer extends BaseViewer { protected flyToObjects(objects: THREE.Object3D[]): void; /** * Make camera fly to an object + * @internal */ flyToObject(object: THREE.Object3D): void; /** @@ -317,8 +320,14 @@ export declare class BimViewer extends BaseViewer { */ private tryAdjustCameraNearAndFar; private tryAdjustDirectionalLight; + /** + * @internal + */ updateDirectionalLight(): void; private updateDirectionalLightShadow; + /** + * @internal + */ showDirectionalLightHelper(visible: boolean): void; /** * Regenerates skybox according to models' location and size @@ -330,8 +339,7 @@ export declare class BimViewer extends BaseViewer { private regenGroundGrid; /**** Anchor rotation related interface start ****/ private setOrbitPoint; - private updateOrbPoint; - private onPointerDown; + private onAnchorPointerDown; private setAnchorPosition; private createAnchor; private disposeAnchor; @@ -388,15 +396,23 @@ export declare class BimViewer extends BaseViewer { * Currently, it only implemented local(object) box section. */ activateSection(type?: SectionType): void; + /** + * Deactivates section + */ deactivateSection(): void; /** - * @deprecated Use deactivateSection instead + * @internal */ - disableSection(): void; + getActiveSection(): import("../../core/section").BaseSection | undefined; /** - * @deprecated Use activateSection instead + * @internal */ - enableSection(type?: SectionType): void; + getMeasurementManager(): MeasurementManager | undefined; + /** + * Gets measurement data + * @internal + */ + getMeasurements(): MeasurementData[]; /** * Activates one of "Distance", "Area" or "Angle" measurement * @param type "Distance", "Area" or "Angle" @@ -406,12 +422,22 @@ export declare class BimViewer extends BaseViewer { * Deactivates measurement */ deactivateMeasurement(): void; + /** + * @internal + */ + setMeasurementVisibility(id: string, visible: boolean): boolean; /** * Clears all measurement results */ clearMeasurements(): void; - activateZoomToRect(): void; - deactivateZoomToRect(): void; + /** + * Zooms to selected box area. + */ + zoomToRect(): void; + /** + * @internal + */ + deactivateZoomRect(): void; /** * @internal */ @@ -450,9 +476,8 @@ export declare class BimViewer extends BaseViewer { private merge; /** * Sets spinner visibility - * @internal */ - setSpinnerVisibility(visible: boolean): void; + protected setSpinnerVisibility(visible: boolean): void; /** * Increases job count, and show spinner accordingly * @internal @@ -463,14 +488,6 @@ export declare class BimViewer extends BaseViewer { * @internal */ decreaseJobCount(): void; - /** - * Calls addEventListener of a node. - * This makes sure to removeEventListener properly - * @param node window, dom element, etc. - * @param type 'change', 'keydown', etc. - * @param func event callback - */ - private addEvent; /** * Updates project settings * @internal diff --git a/public/demo/libs/types/src/core/viewers/DxfViewer.d.ts b/public/demo/libs/types/src/core/viewers/DxfViewer.d.ts index 74949a4..cac910c 100644 --- a/public/demo/libs/types/src/core/viewers/DxfViewer.d.ts +++ b/public/demo/libs/types/src/core/viewers/DxfViewer.d.ts @@ -2,32 +2,40 @@ import * as THREE from "three"; import Stats from "three/examples/jsm/libs/stats.module.js"; import { Font } from "three/examples/jsm/loaders/FontLoader.js"; import { CSS2DRenderer } from "three/examples/jsm/renderers/CSS2DRenderer.js"; -import { BaseViewer } from "./BaseViewer"; import { Toolbar } from "../../components/toolbar"; -import { DxfModelConfig, DxfViewerConfig, Hotpoint } from "../Configs"; -import { DrawableData } from "../canvas"; -import { Drawable } from "../canvas/Drawable"; -import { DxfLayer } from "../dxf"; -import { DxfChange } from "../dxf/DxfCompare"; -import { ILayoutObject } from "../dxf-parser"; -import { MarkupType } from "../markup/Constants"; -import { MeasurementData, MeasurementType } from "../measure/"; +import { DxfModelConfig, DxfViewerConfig, Hotpoint } from "../../core/Configs"; +import { Box2, Vector2 } from "../../core/Constants"; +import { DrawableData, Drawable } from "../../core/canvas"; +import { DxfData, DxfLayer, DxfChange } from "../../core/dxf"; +import { ILayoutObject } from "../../core/dxf-parser"; +import { EventInfo } from "../../core/input/InputManager"; +import { MarkupType, MarkupManager } from "../../core/markup"; +import { MeasurementData, MeasurementManager, MeasurementType } from "../../core/measure"; +import { BaseViewer, ViewerName } from "../../core/viewers/BaseViewer"; /** * Measurements for DxfViewer contains additional information, e.g. layoutName. + * * DxfViewer doesn't maintain the relationship between model and measurement data, * business logic should knows which model a set of measurement data belong to. */ export interface DxfMeasurementData extends MeasurementData { + /** + * Dxf layout name + */ layoutName?: string; } /** * Markup for DxfViewer contains additional information, e.g. layoutName. + * * DxfViewer doesn't maintain the relationship between model and markup data, * business logic should knows which model a set of markup data belong to. */ export interface DxfMarkupData extends DrawableData { layoutName?: string; } +/** + * A group of dxf/dwg layers for a drawing. + */ export interface DxfLayers { modelId: string; layers: Record; @@ -45,6 +53,10 @@ export interface DxfLayers { * } */ /** + * "dwg" is short for "drawing", it is a file format saved by AutoCAD. + * And "dxf" is data exchange format, which can be converted from a dwg file. + * We cannot read dwg directly, and need to convert it to dxf first via ODA. + * * Supported dxf version: AutoCAD 2018. Both binary and ascii are supported. * * Json Encoding: UTF-8 encoding without BOM @@ -52,10 +64,10 @@ export interface DxfLayers { * Coordinate system: right-handed, y-up * * About units: - * - Distance units follows the master dxf file - * - Area units follows the master dxf file - * - Angle units is degree, counterclockwise by default - * - Time unit is Second + * - The unit of distance follows the master dxf file's unit + * - The unit of area follows the master dxf file's unit + * - The unit of angle is "degree", counterclockwise + * - The unit of time is "second" * * Color: use rgb/rgba, values between 0-1 * @@ -94,6 +106,10 @@ export interface DxfLayers { * ``` */ export declare class DxfViewer extends BaseViewer { + /** + * @internal + */ + name: ViewerName; private readonly CAMERA_Z_POSITION; private readonly CAMERA_MIN_ZOOM; private timer; @@ -102,7 +118,14 @@ export declare class DxfViewer extends BaseViewer { protected enableSelection?: boolean; protected selectedObject?: THREE.Object3D | Drawable; protected stats?: Stats; - private loadedModels; + /** + * The record "key" is modelId or src. + * @internal + */ + loadedModels: Record; private masterModelId; private dxfLayoutBar?; private raycaster?; @@ -112,8 +135,10 @@ export declare class DxfViewer extends BaseViewer { protected selected: boolean; private measurementManager?; private markupManager?; - private zoomToRect?; + private zoomToRectHelper?; + private boxSelectHelper?; private raf?; + private clock; protected renderEnabled: boolean; private timeoutSymbol?; private spinner?; @@ -142,6 +167,9 @@ export declare class DxfViewer extends BaseViewer { * @internal */ protected init(): void; + private initInputManager; + private initThree; + private initDom; private initScene; private initRenderer; protected initCSS2DRenderer(): void; @@ -161,7 +189,6 @@ export declare class DxfViewer extends BaseViewer { * Initialize mouse/pointer events */ private initEvents; - protected initMouseWheel(): void; protected initOthers(): void; private initAxes; private initStats; @@ -204,6 +231,9 @@ export declare class DxfViewer extends BaseViewer { * @internal */ getFps(): number; + /** + * @internal + */ is3d(): boolean; /** * Destroies DxfViewer @@ -250,6 +280,7 @@ export declare class DxfViewer extends BaseViewer { private compareMode; /** * If it is under compare mode + * @internal */ isCompareMode(): boolean; /** @@ -289,7 +320,7 @@ export declare class DxfViewer extends BaseViewer { /** * Calculates the boundingBox of objects with child objects in the children of layoutLevelObject */ - private calBoundingBoxOfLayoutChild; + private calcBoundingBoxOfLayoutChild; /** * Gets active layout */ @@ -362,6 +393,19 @@ export declare class DxfViewer extends BaseViewer { * @default 2 */ setDisplayPrecision(): void; + /** + * Gets current view extent. + * This is useful for user to save this value as a viewpoint, and jump to this viewpoint next time. + */ + getCurrentViewExtent(): Box2; + /** + * Box selects an area and get the screenshot in format of base64 string. + */ + getScreenshot(): Promise; + /** + * @internal + */ + getMeasurementManager(): MeasurementManager | undefined; /** * Activates one of "Distance", "Area" or "Angle" measurement * @param type "Distance", "Area" or "Angle" @@ -418,12 +462,21 @@ export declare class DxfViewer extends BaseViewer { * Removes a measurement */ removeMeasurement(id: string): void; - setMeasurementsVisibility(visible: boolean): void; /** - * Clears all measurement results + * Sets a measurement's visibility. + * Note that, the markup should belong to active layout. You shouldn't update a markup of an inactive layout. + * @internal + */ + setMeasurementVisibility(id: string, visible: boolean): boolean; + /** + * Clears measurement results for all layouts */ clearMeasurements(): void; /** markup start **/ + /** + * @internal + */ + getMarkupManager(): MarkupManager | undefined; /** * Activates markup feature * @param type MarkupType @@ -484,8 +537,7 @@ export declare class DxfViewer extends BaseViewer { getMarkups(): DxfMarkupData[]; /** * Sets markup data. - * User can set markup data for all layouts, DxfViewer manages their visibilities - * for different layouts. + * User can set markup data for all layouts, DxfViewer manages their visibilities for different layouts. * @example * ``` typescript * const markupData = [{ @@ -500,14 +552,25 @@ export declare class DxfViewer extends BaseViewer { * viewer.setMarkups(markupData); * ``` */ - setMarkups(markupData: DxfMarkupData[]): void; - setMarkupsVisibility(visible: boolean): void; + setMarkups(markupDataArray: DxfMarkupData[]): void; /** - * Removes a markup + * Sets a markup's visibility by id. + * Note that, the markup should belong to active layout. You shouldn't update a markup of an inactive layout. + * @internal */ - removeMarkup(id: string): void; + setMarkupVisibility(id: string, visible: boolean): boolean; /** - * Clears markups + * Updates a markup. + * Note that, you are able to update a markup of an inactive layout. But, you can see nothing happen from ui. + */ + updateMarkup(markup: DxfMarkupData): boolean; + /** + * Removes a markup by markup id. + * Note that, you are able to delete a markup of an inactive layout. But, you can see nothing happen from ui. + */ + removeMarkup(id: string): boolean; + /** + * Clears markups for all layouts */ clearMarkups(): void; /** markup end **/ @@ -540,12 +603,23 @@ export declare class DxfViewer extends BaseViewer { * } * }); * ``` + * @internal */ - getHitResult(event: MouseEvent): { - location: number[]; - } | undefined; - activateZoomToRect(): void; - deactivateZoomToRect(): void; + getHitResult(event: MouseEvent | PointerEvent | EventInfo): Vector2 | undefined; + /** + * Gets hit result by Normalized Device Coordinates. + * Lower left coordinate: (-1, -1) + * Upper right coordinate: (1, 1) + */ + protected getHitResultByNdcCoordinate(coord: Vector2): Vector2 | undefined; + /** + * Asks user to select a box area, and zooms to it. + */ + zoomToRect(): void; + /** + * @internal + */ + deactivateZoomRect(): void; /** * draw compare markups */ @@ -598,7 +672,7 @@ export declare class DxfViewer extends BaseViewer { * Gets raycast-able objects by mouseEvent. * @internal */ - getRaycastableObjectsByMouse(event?: MouseEvent): THREE.Object3D[]; + getRaycastableObjectsByMouse(event?: EventInfo): THREE.Object3D[]; /** * Gets intersections by given mouse location. * If no MouseEvent is passed in, use (0, 0) as the raycaster's origin. @@ -608,6 +682,7 @@ export declare class DxfViewer extends BaseViewer { * Handles mouse click event */ private handleMouseClick; + private selectDrawableByEvent; /** * Select or unselect an object. */ @@ -639,13 +714,14 @@ export declare class DxfViewer extends BaseViewer { * @param position camera's target position * @param lookAt camera's new lookAt position * @param targetCameraZoom camera's target zoom value + * @internal */ flyTo(position: THREE.Vector3, lookAt: THREE.Vector3, targetCameraZoom?: number, animate?: boolean): void; /** * Moves camera to target position * @param position 2d position */ - protected goTo(position: THREE.Vector2 | THREE.Vector3, targetCameraZoom?: number, animate?: boolean): void; + goTo(position: Vector2, targetCameraZoom?: number, animate?: boolean): void; /** * Moves camera to home view */ @@ -654,12 +730,16 @@ export declare class DxfViewer extends BaseViewer { * Zooms to specific bounding box * @internal */ - zoomToBBox(bbox: THREE.Box3): void; + zoomToBBox(bbox: Box2): void; + /** + * Zooms to view extent + */ + zoomToExtent(): void; /** * Zooms to a compare change - * @param id a chang data id + * @param changeId Change data id */ - zoomToCompareChange(id: number): void; + zoomToCompareChange(changeId: number): void; /** * Gets compare changes */ @@ -697,7 +777,7 @@ export declare class DxfViewer extends BaseViewer { */ private updateGroundPlane; /** - * Compute bounding box of loaded models + * Compute bounding box of loaded models for active layout * @internal */ computeBoundingBox(): THREE.Box3; @@ -722,7 +802,7 @@ export declare class DxfViewer extends BaseViewer { */ private updateRaycasterThreshold; /** - * Updates camera zoom value for shader materials, which are created in DXFLoader + * Updates camera zoom value for shader materials, which are created in DxfLoader */ private updateCameraZoomUniform; } diff --git a/public/demo/libs/types/src/core/viewers/SimplifiedBimViewer.d.ts b/public/demo/libs/types/src/core/viewers/SimplifiedBimViewer.d.ts index 030400d..b6ffed2 100644 --- a/public/demo/libs/types/src/core/viewers/SimplifiedBimViewer.d.ts +++ b/public/demo/libs/types/src/core/viewers/SimplifiedBimViewer.d.ts @@ -1,6 +1,6 @@ import * as THREE from "three"; -import { OrbitControls } from "three/examples/jsm/controls/OrbitControls.js"; -import { IsolateObjectsParam, ModelConfig } from "../Configs"; +import { IsolateObjectsParam, ModelConfig } from "../../core/Configs"; +import { CameraControlsEx } from "../../core/controls/CameraControlsEx"; /** * @internal */ @@ -19,7 +19,7 @@ export declare class SimplifiedBimViewer { scene: THREE.Scene; renderer?: THREE.WebGLRenderer; renderTarget?: THREE.WebGLRenderTarget; - controls?: OrbitControls; + controls?: CameraControlsEx; selectedObject: any | undefined; loadedModels: { [src: string]: { @@ -28,6 +28,7 @@ export declare class SimplifiedBimViewer { }; }; pmremGenerator?: THREE.PMREMGenerator; + private clock; private viewerMode; private raycaster?; private savedMaterialsForOpacity?; @@ -36,6 +37,7 @@ export declare class SimplifiedBimViewer { private outlineMaterial; private outlineRoot; private transparentObjectIds; + private requestAnimationFrameHandle?; constructor(containerOrCanvas: HTMLDivElement | any, viewerMode?: ViewerMode, glContext?: WebGLRenderingContext | WebGL2RenderingContext); /** * Initialize everything it needs @@ -137,4 +139,5 @@ export declare class SimplifiedBimViewer { y: number; z: number; }; + setFov(fov: number): void; } diff --git a/public/demo/libs/types/src/core/viewers/VRViewer.d.ts b/public/demo/libs/types/src/core/viewers/VRViewer.d.ts index c9b6cec..377163d 100644 --- a/public/demo/libs/types/src/core/viewers/VRViewer.d.ts +++ b/public/demo/libs/types/src/core/viewers/VRViewer.d.ts @@ -1,10 +1,14 @@ import { CSS2DRenderer } from "three/examples/jsm/renderers/CSS2DRenderer.js"; import { CSS3DRenderer } from "three/examples/jsm/renderers/CSS3DRenderer.js"; -import { BaseViewer } from "./BaseViewer"; import { Toolbar } from "../../components/toolbar"; -import { CameraConfig, Hotpoint, Panorama, VRViewerConfig, VRViewpoint } from "../Configs"; -import { Vector3 } from "../Constants"; +import { CameraConfig, Hotpoint, Panorama, VRViewerConfig, VRViewpoint } from "../../core/Configs"; +import { Vector3 } from "../../core/Constants"; +import { BaseViewer, ViewerName } from "../../core/viewers/BaseViewer"; export declare class VRViewer extends BaseViewer { + /** + * @internal + */ + name: ViewerName; /** * @internal */ @@ -92,7 +96,7 @@ export declare class VRViewer extends BaseViewer { /** * Sets spinner visibility */ - setSpinnerVisibility(visible: boolean): void; + protected setSpinnerVisibility(visible: boolean): void; /** * Calls addEventListener of a node. * This makes sure to removeEventListener properly @@ -154,6 +158,7 @@ export declare class VRViewer extends BaseViewer { removeCachedPanoramas(): void; /** * Unlimits controls and show all assets. This is useful for debugging. + * @internal */ unlimitControlsAndShowAssets(showAllHotpoints?: boolean): void; private relocateAnchorIfTooCloseToCamera; diff --git a/public/demo/libs/types/src/core/viewers/ViewerEvent.d.ts b/public/demo/libs/types/src/core/viewers/ViewerEvent.d.ts index ea49da9..2a34f1e 100644 --- a/public/demo/libs/types/src/core/viewers/ViewerEvent.d.ts +++ b/public/demo/libs/types/src/core/viewers/ViewerEvent.d.ts @@ -1,19 +1,53 @@ /** * Viewer events + * TODO: dxf event asnd bim event */ export declare enum ViewerEvent { /** - * Triggered when a markup is clicked - * @internal + * Triggered when click viewer */ + MouseClicked = "MouseClicked", /** * Triggered when layout is changed. * It is specific for DxfViewer. */ LayoutChanged = "LayoutChanged", + /** + * @internal + */ + ModelLoaded = "ModelLoaded", /** * Triggered when rendered * @internal */ - RenderAfter = "RenderAfter" + RenderAfter = "RenderAfter", + /** + * Triggered when bimviewer switch camera + * @internal + */ + CameraChanged = "CameraChanged", + /** + * Triggered when a markup is clicked + * @internal + */ + /** + * Triggered when markup feature is deactivated + */ + MarkupDeactived = "MarkupDeactived", + /** + * Triggered when a markup is added + */ + MarkupAdded = "MarkupAdded", + /** + * Triggered when a markup is updated + */ + MarkupUpdated = "MarkupUpdated", + /** + * Triggered when a markup is removed + */ + MarkupRemoved = "MarkupRemoved", + /** + * Triggered before a markup is being removed + */ + BeforeRemoveMarkup = "BeforeRemoveMarkup" } diff --git a/public/demo/libs/types/src/core/vr/index.d.ts b/public/demo/libs/types/src/core/vr/index.d.ts index ad686c9..fd24c88 100644 --- a/public/demo/libs/types/src/core/vr/index.d.ts +++ b/public/demo/libs/types/src/core/vr/index.d.ts @@ -1,3 +1,4 @@ +export * from "./BaseVRMesh"; export * from "./VRCube"; export * from "./VRCube24Faces"; export * from "./VRSphere"; diff --git a/public/demo/libs/types/src/index.d.ts b/public/demo/libs/types/src/index.d.ts index 5f3d32d..1034dda 100644 --- a/public/demo/libs/types/src/index.d.ts +++ b/public/demo/libs/types/src/index.d.ts @@ -4,4 +4,4 @@ import "intl-pluralrules"; import "core-js/stable"; import "regenerator-runtime/runtime"; export * from "./core"; -export type { Settings, CameraSettings, KeyboardSetting, MouseSetting } from "./components/settings/ProjectSettingsDef"; +export * from "./components/toolbar";