diff --git a/DEPENDENCIES.md b/DEPENDENCIES.md index 4d4fbbe2f..00c40ea99 100644 --- a/DEPENDENCIES.md +++ b/DEPENDENCIES.md @@ -107,3 +107,27 @@ FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE._ + +# Panoramax - The Panoramax viewer is a web JS library which displays pictures and sequences from a Panoramax server, or any STAC API offering geolocated pictures. + +MIT License + +Copyright (c) 2022 Adrien Pavie + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/DRAFT_CHANGELOG.md b/DRAFT_CHANGELOG.md index be8b61f18..8e22b37c1 100644 --- a/DRAFT_CHANGELOG.md +++ b/DRAFT_CHANGELOG.md @@ -15,6 +15,8 @@ __DATE__ * ✨ [Added] + - Panoramax : 🎉 nouveau widget ! + * 🔨 [Changed] - perf: écoute évènement moveend sur map au lieu de change:resolution sur view diff --git a/build/licences/licence-panoramax.tmpl b/build/licences/licence-panoramax.tmpl new file mode 100644 index 000000000..53efdc961 --- /dev/null +++ b/build/licences/licence-panoramax.tmpl @@ -0,0 +1,7 @@ +/*! + * @overview Panoramax - a web JS viewer library which displays pictures and sequences from a Panoramax server + * @copyright Copyright (c) 2022 Adrien Pavie + * @license Licensed under MIT license + * See https://gitlab.com/panoramax/clients/web-viewer/-/raw/develop/LICENSE + * @version {__VERSION__} + */ diff --git a/build/webpack/bundle.webpack.config.js b/build/webpack/bundle.webpack.config.js index 8dc7f3231..4014113bd 100644 --- a/build/webpack/bundle.webpack.config.js +++ b/build/webpack/bundle.webpack.config.js @@ -69,6 +69,12 @@ module.exports = (env, argv) => { amd : "ol", root : "ol" }, + "@panoramax/web-viewer/build/photoviewer" : { + commonjs : "@panoramax/web-viewer/build/photoviewer", + commonjs2 : "@panoramax/web-viewer/build/photoviewer", + amd : "Panoramax", + root : "Panoramax" + }, request : { commonjs2 : "request", commonjs : "request", @@ -171,7 +177,7 @@ module.exports = (env, argv) => { test : /\.css$/, include : [ path.join(rootdir, "src", "packages", "CSS"), - /node_modules\/@gouvfr\/dsfr\/dist/, + /node_modules\/@gouvfr\/dsfr\/dist/ ], use : [ MiniCssExtractPlugin.loader, diff --git a/build/webpack/extend.banners.webpack.js b/build/webpack/extend.banners.webpack.js index 818f033a4..e0688fa71 100644 --- a/build/webpack/extend.banners.webpack.js +++ b/build/webpack/extend.banners.webpack.js @@ -37,6 +37,12 @@ module.exports = (env, argv) => { raw : true, entryOnly : true }), + new BannerWebPackPlugin({ + banner : header(fs.readFileSync(path.join(rootdir, "build/licences", "licence-panoramax.tmpl"), "utf8"), { + __VERSION__ : pkg.dependencies["@panoramax/web-viewer"], + }), + raw : true + }), ] }; }; \ No newline at end of file diff --git a/build/webpack/extend.base.webpack.js b/build/webpack/extend.base.webpack.js index 7aa05e027..fbf564c67 100644 --- a/build/webpack/extend.base.webpack.js +++ b/build/webpack/extend.base.webpack.js @@ -107,6 +107,7 @@ module.exports = (env, argv) => { include : [ path.join(rootdir, "src", "packages", "CSS"), /node_modules\/@gouvfr\/dsfr\/dist/, + /node_modules\/@panoramax\/web-viewer\/build/, ], use : [ MiniCssExtractPlugin.loader, diff --git a/build/webpack/extend.themes.webpack.js b/build/webpack/extend.themes.webpack.js index 4ccc5f627..239e29d5a 100644 --- a/build/webpack/extend.themes.webpack.js +++ b/build/webpack/extend.themes.webpack.js @@ -39,6 +39,7 @@ module.exports = (env, argv) => { path.join(rootdir, "src", "packages", "CSS", "Controls/ControlList", "GPFcontrolListStyle.css"), path.join(rootdir, "src", "packages", "CSS", "Controls/ContextMenu", "GPFcontextMenuStyle.css"), path.join(rootdir, "src", "packages", "CSS", "Controls/Reporting", "GPFreportingStyle.css"), + path.join(rootdir, "src", "packages", "CSS", "Controls/Panoramax", "GPFpanoramaxStyle.css"), ], // CSS themes dsfr "Dsfr" : [ @@ -76,6 +77,7 @@ module.exports = (env, argv) => { path.join(rootdir, "src", "packages", "CSS", "Controls/ControlList", "DSFRcontrolListStyle.css"), path.join(rootdir, "src", "packages", "CSS", "Controls/ContextMenu", "DSFRcontextMenuStyle.css"), path.join(rootdir, "src", "packages", "CSS", "Controls/Reporting", "DSFRreportingStyle.css"), + path.join(rootdir, "src", "packages", "CSS", "Controls/Panoramax", "DSFRpanoramaxStyle.css"), ], } }; diff --git a/build/webpack/modules.webpack.config.js b/build/webpack/modules.webpack.config.js index 0a91ca4a2..4d5d8e15b 100644 --- a/build/webpack/modules.webpack.config.js +++ b/build/webpack/modules.webpack.config.js @@ -66,6 +66,8 @@ module.exports = (env, argv) => { "GpfExtOlControlList" : path.join(rootdir, "src", "packages", "Controls/ControlList", "ControlList.js"), "GpfExtOlContextMenu" : path.join(rootdir, "src", "packages", "Controls/ContextMenu", "ContextMenu.js"), "GpfExtOlReporting" : path.join(rootdir, "src", "packages", "Controls/Reporting", "Reporting.js"), + "GpfExtOlPanoramax" : path.join(rootdir, "src", "packages", "Controls/Panoramax", "Panoramax.js"), + // Formats étendus "GpfExtOlFormats" : [ path.join(rootdir, "src", "packages", "Formats", "GeoJSON.js"), @@ -120,6 +122,12 @@ module.exports = (env, argv) => { amd : "ol", root : "ol" }, + "@panoramax/web-viewer/build/photoviewer" : { + commonjs : "@panoramax/web-viewer/build/photoviewer", + commonjs2 : "@panoramax/web-viewer/build/photoviewer", + amd : "Panoramax", + root : "Panoramax" + }, request : { commonjs2 : "request", commonjs : "request", @@ -134,7 +142,7 @@ module.exports = (env, argv) => { ], devtool : "source-map", devServer : { - webSocketServer: false, + webSocketServer : false, server : "https", open : ["samples/index-modules.html"], static : { @@ -222,7 +230,7 @@ module.exports = (env, argv) => { test : /\.css$/, include : [ path.join(rootdir, "src", "packages", "CSS"), - /node_modules\/@gouvfr\/dsfr\/dist/, + /node_modules\/@gouvfr\/dsfr\/dist/ ], use : [ MiniCssExtractPlugin.loader, diff --git a/package.json b/package.json index b357f82a5..7b4a9d1e3 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "geopf-extensions-openlayers", "description": "French Geoportal Extensions for OpenLayers libraries", - "version": "1.0.0-beta.9-496", + "version": "1.0.0-beta.9-492", "date": "12/03/2026", "module": "src/index.js", "directories": {}, @@ -44,19 +44,21 @@ "dependencies": { "@gouvfr/dsfr": "^1.13.1", "@mapbox/mapbox-gl-style-spec": "14.8.0", + "@panoramax/web-viewer": "^4.4.0", "@xmldom/xmldom": "^0.9.0", "ajv": "^8.17.1", "ajv-formats": "^3.0.1", "clusterize.js": "^1.0.0", + "date-fns": "^4.1.0", "doctoc": "^2.3.0", - "dompurify": "^3.2.6", + "dompurify": "^3.3.3", "eventbusjs": "0.2.0", "geoportal-access-lib": "3.4.6", "loglevel": "^1.9.1", "marked": "^16.2.1", "ol": "^10.3.1", "ol-contextmenu": "^5.5.0", - "ol-mapbox-style": "^12.3.5", + "ol-mapbox-style": "^13.3.0", "proj4": "2.15.0", "sortablejs": "1.15.3", "typescript": "^5.3.3", diff --git a/samples-src/pages/tests/Default/pages-ol-bundle-dsfr-default.html b/samples-src/pages/tests/Default/pages-ol-bundle-dsfr-default.html index 68a141f8f..018cacf8c 100644 --- a/samples-src/pages/tests/Default/pages-ol-bundle-dsfr-default.html +++ b/samples-src/pages/tests/Default/pages-ol-bundle-dsfr-default.html @@ -1,6 +1,8 @@ {{#extend "ol-sample-bundle-dsfr-layout"}} {{#content "vendor"}} + + {{/content}} @@ -46,8 +48,18 @@
Should not be used directly, use Viewer/CoverageMap/Editor instead
`}getSubComponentsNames(){return["loader","api"]}addEventListener(t,a,A){let h=t.split(":").shift();if(h&&this.getSubComponentsNames().includes(h)){var p;const g=t.substring(h.length+1);null!==(p=this[h])&&void 0!==p&&p.addEventListener?this[h].addEventListener(g,a,A):setTimeout((()=>this.addEventListener(t,a,A)),50)}else super.addEventListener(t,a,A)}static GetJSONConverter(){return{fromAttribute:t=>null===t||""===t?null:"object"===typeof t||Array.isArray(t)?t:x().parse(t),toAttribute:t=>null===t||""===t?"":"string"===typeof t?t:x().stringify(t)}}}Basic.properties={picture:{type:String,reflect:!0},sequence:{type:String,reflect:!0},"fetch-options":{converter:Basic.GetJSONConverter()},users:{type:Array,reflect:!0},"map-style":{type:String},lang:{type:String},endpoint:{type:String}}},3407:(t,a,A)=>{"use strict";A.d(a,{$p:()=>w,Ay:()=>PhotoViewer});A(970);var h=A(1545),p=A(4451),g=A(9039),m=A(9048),v=A(5995),_=A(7343),E=A(2118),x=A(4207);const w=20,C=Math.PI/6,T=["pnx-mini","pnx-widget-player","pnx-widget-zoom"];class PhotoViewer extends g.A{constructor(){super(),this["psv-options"]={},this["url-parameters"]=this.getAttribute("url-parameters")||"true",this["keyboard-shortcuts"]=this.getAttribute("keyboard-shortcuts")||"true",this["skip-tags-menu-opening"]="true"!==(this.getAttribute("skip-tags-menu-opening")||"false"),this["share-base-url"]=this.getAttribute("share-base-url")||null,this.widgets=this.getAttribute("widgets")||"true",this.grid=(0,v.createWebComp)("pnx-cornered-grid"),this.psvContainer=document.createElement("div"),this.psvContainer.setAttribute("slot","bg"),this.grid.appendChild(this.psvContainer),this.popup=(0,v.createWebComp)("pnx-popup",{_parent:this,onclose:this._onPopupClose.bind(this)}),this.tabindex=0,this._sequencesMetadata={}}_createInitParamsHandler(){var t,a;this._initParams=new E.Ay(E.Ay.GetComponentProperties(PhotoViewer,this),Object.assign({},null===(t=this.urlHandler)||void 0===t?void 0:t.currentURLParams(),null===(a=this.urlHandler)||void 0===a?void 0:a.currentURLParams(!0)),{disableAnnotations:localStorage.getItem(_.DISABLE_ANNOTATIONS_PARAM)})}_initWidgets(){"false"!==this._initParams.getParentPostInit().widgets&&((0,_.isInIframe)()||(this.grid.appendChild((0,v.createWebComp)("pnx-widget-player",{slot:"top",_parent:this,class:"pnx-only-psv pnx-print-hidden",size:this.isHeightSmall()?"md":"xl"})),this.grid.appendChild((0,v.createWebComp)("pnx-annotations-switch",{slot:"top",_parent:this,class:"pnx-only-psv pnx-print-hidden",size:this.isHeightSmall()?"md":"xl"}))),(0,_.isInIframe)()?(this.legend=(0,v.createWebComp)("pnx-widget-legend",{slot:"bottom-right",light:!0,_parent:this,focus:this._initParams.getParentPostInit().focus,picture:this._initParams.getParentPostInit().picture}),this.grid.appendChild(this.legend)):this.isWidthSmall()?(this.legend=(0,v.createWebComp)("pnx-picture-legend",{_parent:this}),this.bottomDrawer=(0,v.createWebComp)("pnx-bottom-drawer",{slot:"bottom",_parent:this,class:this._initParams.getParentPostInit().willLoadPicture?void 0:"pnx-hidden"}),this.bottomDrawer.appendChild(this.legend),this.grid.appendChild(this.bottomDrawer),this.addEventListener("select",(t=>{(0,_.isNullId)(t.detail.picId)?this.bottomDrawer.classList.add("pnx-hidden"):this.bottomDrawer.classList.remove("pnx-hidden")}))):(this.legend=(0,v.createWebComp)("pnx-widget-legend",{slot:this.isWidthSmall()?void 0:"top-left",_parent:this,focus:this._initParams.getParentPostInit().focus,picture:this._initParams.getParentPostInit().picture}),this.grid.appendChild((0,v.createWebComp)("pnx-widget-zoom",{slot:"bottom-right",class:"pnx-print-hidden",_parent:this})),this.grid.appendChild(this.legend)))}connectedCallback(){super.connectedCallback(),this.presetsManager=new x.A(this.lang),"false"!==this["url-parameters"]&&(this.urlHandler=new p.A(this),this.onceReady().then((()=>{this.urlHandler.listenToChanges(),this.urlHandler._onParentChange()}))),this.onceAPIReady().then(this._postAPIInit.bind(this)),this._moveChildToGrid(),window.addEventListener("DOMContentLoaded",(()=>{this._moveChildToGrid()}),{once:!0})}disconnectedCallback(){var t,a;super.disconnectedCallback(),null===(t=this.urlHandler)||void 0===t||t.destroy(),null===(a=this.psv)||void 0===a||a.destroy(),document.body.removeEventListener("click",this._toggleKeyboardBasedOnFocus),window.removeEventListener("keypress",this._toggleKeyboardBasedOnFocus)}getClassName(){return"PhotoViewer"}onceReady(){return this.oncePSVReady().then((()=>this._initParams.getParentPostInit().willLoadPicture&&!this.psv.getPictureMetadata()?this.onceFirstPicLoaded():Promise.resolve()))}render(){return[this.loader,this.grid,this.popup]}getSubComponentsNames(){return super.getSubComponentsNames().concat(["psv","grid","popup","urlHandler"])}oncePSVReady(){let t;return new Promise((a=>{t=setInterval((()=>{this.psv&&"object"===typeof this.psv&&(this.psv.container?(clearInterval(t),a()):this.psv.addEventListener&&this.psv.addEventListener("ready",(()=>{clearInterval(t),a()}),{once:!0}))}),250)}))}onceFirstPicLoaded(){return this.oncePSVReady().then((()=>this.psv.getPictureMetadata()?Promise.resolve():new Promise((t=>{this.psv.addEventListener("picture-loaded",t,{once:!0})}))))}async _postAPIInit(){this.loader.setAttribute("value",30),this._createInitParamsHandler();const t=this._initParams.getParentPostInit();this._initPSV(),this._initWidgets(),(0,E.ai)(this,t),t.keyboardShortcuts&&this._handleKeyboardManagement(),t.willLoadPicture?this.psv.getPictureMetadata()?this.loader.dismiss():this.psv.addEventListener("picture-loaded",(()=>this.loader.dismiss()),{once:!0}):this.loader.dismiss()}_initPSV(){try{this.psv=new m.Ay(this,this.psvContainer,{shouldGoFast:this._psvShouldGoFast.bind(this),keyboard:"always",keyboardActions:{...h.zY.keyboardActions,8:"ROTATE_UP",2:"ROTATE_DOWN",4:"ROTATE_LEFT",6:"ROTATE_RIGHT",PageUp:()=>this.psv.goToNextPicture(),9:()=>this.psv.goToNextPicture(),PageDown:()=>this.psv.goToPrevPicture(),3:()=>this.psv.goToPrevPicture(),5:()=>this.moveCenter(),"*":()=>this.moveCenter(),Home:()=>{var t;return null===(t=this._toggleFocus)||void 0===t?void 0:t.call(this)},7:()=>{var t;return null===(t=this._toggleFocus)||void 0===t?void 0:t.call(this)},End:()=>this.mini.toggleAttribute("collapsed"),1:()=>this.mini.toggleAttribute("collapsed")," ":()=>this.psv.toggleSequencePlaying(),0:()=>this.psv.toggleSequencePlaying()},...this._initParams.getPSVInit()}),this.oncePSVReady().then((()=>{this.loader.setAttribute("value",50),(0,E.Vy)(this.psv,this._initParams.getPSVPostInit())})),this.psv.addEventListener("sequence-playing",(()=>this.classList.add("pnx-playing"))),this.psv.addEventListener("sequence-stopped",(()=>this.classList.remove("pnx-playing"))),this.psv.addEventListener("dblclick",(()=>clearTimeout(this._gridFocus))),this.psv.addEventListener("click",(t=>{clearTimeout(this._gridFocus),"CANVAS"===t.data.target.tagName&&(!this.isMapWide||this.isMapWide&&!this.isMapWide())&&(this._gridFocus=setTimeout((()=>{this.grid.toggleAway()?this.classList.add("pnx-grid-toggled"):this.classList.remove("pnx-grid-toggled")}),250))})),this.psvContainer.addEventListener("mousemove",(()=>{this.grid._hidden&&(clearTimeout(this._gridFocus),this.grid.toggleAway(!0),this.classList.remove("pnx-grid-toggled"))}))}catch(t){let a=h.IJ.isWebGLSupported?this._t.pnx.error_psv:this._t.pnx.error_webgl;this.loader.dismiss(t,a)}}_enableKeyboard(){this.psv.startKeyboardControl()}_disableKeyboard(){this.psv.stopKeyboardControl()}_toggleKeyboardBasedOnFocus(t){const a=(null===t||void 0===t?void 0:t.target)||document.activeElement;if(this.contains(a)){for(let t of this.grid.childNodes)if("bg"!==t.getAttribute("slot")&&!T.includes(t.tagName.toLowerCase())&&t.contains(a))return void this._disableKeyboard();if(null!==this.popup.getAttribute("visible"))return void this._disableKeyboard();this._enableKeyboard()}else this._disableKeyboard()}_handleKeyboardManagement(){window.addEventListener("click",(t=>this._toggleKeyboardBasedOnFocus(t))),window.addEventListener("keypress",this._toggleKeyboardBasedOnFocus.bind(this)),this.popup.addEventListener("open",this._disableKeyboard.bind(this)),this.popup.addEventListener("close",this._enableKeyboard.bind(this)),this.psv.addEventListener("click",this._enableKeyboard.bind(this));for(let t of this.grid.childNodes)"bg"===t.getAttribute("slot")||T.includes(t.tagName.toLowerCase())||(t.addEventListener("focusin",this._disableKeyboard.bind(this)),t.addEventListener("focusout",(()=>{null===this.popup.getAttribute("visible")&&this._enableKeyboard()})))}_psvShouldGoFast(){return this.psv._sequencePlaying&&this.psv.getTransitionDuration()<1e3}_moveChildToGrid(){Array.from(this.querySelectorAll("[slot]")).forEach((t=>{var a;null!==(a=t.tagName)&&void 0!==a&&a.toLowerCase().startsWith("pnx-")&&(t._parent=this,t._t=this._t),"editors"===t.getAttribute("slot")?this.onceReady().then((()=>{var a;return null===(a=this.legend)||void 0===a?void 0:a.appendChild(t)})):this.grid.appendChild(t)}))}setPopup(t){let a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;t?this.popup.setAttribute("visible",""):this.popup.removeAttribute("visible"),this.popup.innerHTML="","string"===typeof a?this.popup.innerHTML=a:Array.isArray(a)&&a.forEach((t=>this.popup.appendChild(t)))}_onPopupClose(){this.dispatchEvent(new CustomEvent("focus-changed",{detail:{focus:this.map&&this.isMapWide()?"map":"pic"}}))}_showQualityScoreDoc(){this.setPopup(!0,[(0,v.createWebComp)("pnx-quality-score-doc",{_t:this._t})])}_showReportForm(){if(!this.psv.getPictureMetadata())throw new Error("No picture currently selected");this.setPopup(!0,[(0,v.createWebComp)("pnx-report-form",{_parent:this})])}_showShareOptions(){this.setPopup(!0,[(0,v.createWebComp)("pnx-share-menu",{_parent:this,"base-url":this["share-base-url"]})])}_showSemanticsDoc(){this.setPopup(!0,[(0,v.createWebComp)("pnx-semantics-doc",{_t:this._t})])}_showSemanticsDownload(){this.setPopup(!0,[(0,v.createWebComp)("pnx-semantics-download",{_t:this._t})])}moveCenter(){this.psv.getPictureMetadata()&&this._psvAnimate({speed:m.LM,yaw:0,pitch:0,zoom:m.cS})}moveLeft(){this._moveToDirection("left")}moveRight(){this._moveToDirection("right")}moveUp(){this._moveToDirection("up")}moveDown(){this._moveToDirection("down")}_moveToDirection(t){let a=this.psv.getPosition();switch(t){case"up":a.pitch+=C;break;case"left":a.yaw-=C;break;case"down":a.pitch-=C;break;case"right":a.yaw+=C}this._psvAnimate({speed:m.LM,...a})}_psvAnimate(t){this._lastPsvAnim&&this._lastPsvAnim.cancel(),this._lastPsvAnim=this.psv.animate(t)}addEventListener(t,a,A){super.addEventListener(t,a,A)}}PhotoViewer.properties={"psv-options":{converter:g.A.GetJSONConverter()},widgets:{type:String},"url-parameters":{type:String},"keyboard-shortcuts":{type:String},tabindex:{type:Number},"skip-tags-menu-opening":{type:String},"share-base-url":{type:String},...g.A.properties},customElements.define("pnx-photo-viewer",PhotoViewer)},2504:(t,a,A)=>{"use strict";A.r(a),A.d(a,{layout:()=>h,menus:()=>p,ui:()=>g});var h=A(456),p=A(9015),g=A(6957)},6784:(t,a,A)=>{"use strict";A.d(a,{A:()=>BottomDrawer});var h=A(4542),p=A(1198),g=A(5995);const m={opened:0,"half-opened":.7,closed:1};class BottomDrawer extends h.WF{constructor(){super(),this._isDragging=!1,this.openness="half-opened"}firstUpdated(){super.firstUpdated(),this._boundTouchMove=this._onTouchMove.bind(this),this._boundTouchEnd=this._onTouchEnd.bind(this),this._drawerHeight=window.innerHeight-30;const t=this._getDrawer();t&&(t.style.height=`${this._drawerHeight}px`,t.style.maxHeight=`${this._drawerHeight}px`,(0,g.onceParentAvailable)(this).then((()=>this._parent.onceReady())).then((()=>{var t,a;null===(t=this._parent.map)||void 0===t||t.addEventListener("click",(()=>this.openness="closed")),null===(a=this._parent.psv)||void 0===a||a.addEventListener("click",(()=>this.openness="closed"))})))}attributeChangedCallback(t,a,A){if(super.attributeChangedCallback(t,a,A),"openness"===t){if("opened"!==A){const t=this.shadowRoot.querySelector(".content");t&&(t.scrollTop=0)}const t=this._getDrawer();t&&(t.style.transform=null)}}disconnectedCallback(){super.disconnectedCallback(),this._cleanupTouchListeners()}_getDrawer(){var t;return null===(t=this.shadowRoot)||void 0===t?void 0:t.querySelector(".drawer")}_onHandleClick(){"opened"===this.openness?this.openness="closed":"half-opened"===this.openness?this.openness="opened":"closed"===this.openness&&(this.openness="half-opened")}_onTouchStart(t){this._isDragging=!0,this._startFingerY=t.touches[0].clientY,this._deltaFingerY=0,this._drawerY=this._drawerHeight*m[this.openness],window.addEventListener("touchmove",this._boundTouchMove,{passive:!0}),window.addEventListener("touchend",this._boundTouchEnd),window.addEventListener("touchcancel",this._boundTouchEnd)}_onTouchMove(t){if(!this._isDragging)return;const a=this.shadowRoot.querySelector(".content");a.scrollHeight>a.offsetHeight&&a.scrollTop>0?this._updateDrawerTransform(0):(this._deltaFingerY=t.touches[0].clientY-this._startFingerY,this._updateDrawerTransform(this._drawerY+this._deltaFingerY))}_onTouchEnd(t){(this._isDragging&&!(Math.abs(this._deltaFingerY)<30)||t.target.closest(".handle"))&&(t.preventDefault(),this._isDragging=!1,0===this._deltaFingerY&&"closed"===this.openness?this.openness="half-opened":this._updateDrawerTransform(this._drawerY+this._deltaFingerY,!0),this._cleanupTouchListeners(),this._startFingerY=null,this._deltaFingerY=null)}_cleanupTouchListeners(){window.removeEventListener("touchmove",this._boundTouchMove),window.removeEventListener("touchend",this._boundTouchEnd),window.removeEventListener("touchcancel",this._boundTouchCancel)}_updateDrawerTransform(t){let a=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const A=this._getDrawer();A&&(t=Math.max(0,Math.min(t,this._drawerHeight-30)),a&&(this._deltaFingerY<0?"closed"===this.openness?Math.abs(this._deltaFingerY)>this._drawerHeight*(1-m["half-opened"])?this.openness="opened":this.openness="half-opened":this.openness="opened":this.openness="closed",this._drawerY=null,t=Math.max(0,Math.min(m[this.openness]*this._drawerHeight,this._drawerHeight-30))),A.style.transform=`translateY(${t}px)`)}render(){const t={drawer:!0,[this.openness]:!0,dragging:this._isDragging};return h.qy` +${null===(a=this._t)||void 0===a?void 0:a.pnx.qualityscore_doc_1}
+${null===(A=this._t)||void 0===A?void 0:A.pnx.qualityscore_doc_2}
+${null===(p=this._t)||void 0===p?void 0:p.pnx.qualityscore_doc_3}
+${null===(_=this._t)||void 0===_?void 0:_.pnx.qualityscore_doc_4}
+${null===(w=this._t)||void 0===w?void 0:w.pnx.qualityscore_doc_5}
++ ${"wait"===this.mode?null===(Y=this._parent)||void 0===Y?void 0:Y._t.pnx.report_wait:h.s6} + ${"success"===this.mode?null===(q=this._parent)||void 0===q?void 0:q._t.pnx.report_success:h.s6} + ${"failure"===this.mode?null===(Q=this._parent)||void 0===Q?void 0:Q._t.pnx.report_failure.replace("{e}",this.failure):h.s6} +
+ `:h.qy` +${null===(A=this._parent)||void 0===A?void 0:A._t.pnx.report_auth.replace("{a}",G.name)}
+ `:h.s6} + + + `}}ReportForm.styles=[p.YC,p.Op,p.Lt,p.PC,p.hF,h.AH` + .group { + margin-bottom: 10px; + } + + .group:not(.group-inline) label { + margin-bottom: 5px; + display: inline-block; + } + `],ReportForm.properties={mode:{state:!0},failure:{state:!0}},customElements.define("pnx-report-form",ReportForm)},5457:(t,a,A)=>{"use strict";A.d(a,{A:()=>SemanticsDoc});var h=A(4542),p=A(8591),g=A(5995),m=A(6249),v=A(7704);class SemanticsDoc extends h.WF{render(){var t,a,A,p,_,E;return h.qy` +${null===(a=this._t)||void 0===a?void 0:a.pnx.semantics_doc_info1}
+${null===(_=this._t)||void 0===_?void 0:_.pnx.semantics_doc_info3}
+${null===(a=this._t)||void 0===a?void 0:a.pnx.semantics_download_info}
+| ${this._t.pnx.semantics_key} | ${this._t.pnx.semantics_value} |
|---|---|
|
+ ${""!=t.prefix?t.logo?h.qy` |
+
+ ${t.value_transform?t.value_transform(a,this._t):a.value}
+ ${a.qualifiers?h.qy`
+ ${this._t.pnx.semantics_qualifiers}
+ `:h.s6}
+
|
+
${this.viewer.config.caption}
`:""}${this.viewer.config.description}`})):(this.mode=1,this.viewer.notification.show({id:F.DESCRIPTION,content:this.viewer.config.caption}))}};Dt.id="description";var Lt=class extends Tt{constructor(t){super(t,{tagName:"a",className:"psv-download-button",hoverScale:!0,collapsable:!0,tabbable:!0,icon:W.download}),this.viewer.addEventListener(Ee.type,this),this.viewer.addEventListener(Fe.type,this)}destroy(){this.viewer.removeEventListener(Ee.type,this),this.viewer.removeEventListener(Fe.type,this),super.destroy()}handleEvent(t){t instanceof Ee?(t.containsOptions("downloadUrl")&&this.checkSupported(),t.containsOptions("downloadUrl","downloadName")&&this.__update()):t instanceof Fe&&this.__update()}onClick(){}checkSupported(){this.viewer.adapter.constructor.supportsDownload||this.viewer.config.downloadUrl?this.show():this.hide()}__update(){const t=this.container;t.href=this.viewer.config.downloadUrl||this.viewer.config.panorama,t.target="_blank",t.href.startsWith("data:")&&!this.viewer.config.downloadName?t.download="panorama."+t.href.substring(0,t.href.indexOf(";")).split("/").pop():t.download=this.viewer.config.downloadName||t.href.split("/").pop()}};Lt.id="download";var Nt=class extends Tt{constructor(t){super(t,{className:"psv-fullscreen-button",hoverScale:!0,collapsable:!1,tabbable:!0,icon:W.fullscreenIn,iconActive:W.fullscreenOut}),this.viewer.addEventListener(xe.type,this)}destroy(){this.viewer.removeEventListener(xe.type,this),super.destroy()}handleEvent(t){t instanceof xe&&this.toggleActive(t.fullscreenEnabled)}onClick(){this.viewer.toggleFullscreen()}};Nt.id="fullscreen";var zt=class extends Tt{constructor(t){super(t,{className:"psv-menu-button",hoverScale:!0,collapsable:!1,tabbable:!0,icon:W.menu}),this.viewer.addEventListener(at.type,this),this.viewer.addEventListener(Ie.type,this),super.hide()}destroy(){this.viewer.removeEventListener(at.type,this),this.viewer.removeEventListener(Ie.type,this),super.destroy()}handleEvent(t){t instanceof at?this.toggleActive(t.panelId===F.MENU):t instanceof Ie&&this.toggleActive(!1)}onClick(){this.state.active?this.__hideMenu():this.__showMenu()}hide(t){super.hide(t),this.__hideMenu()}show(t){super.show(t),this.state.active&&this.__showMenu()}__showMenu(){var t,a;this.viewer.panel.show({id:F.MENU,content:(t=this.viewer.navbar.collapsed,a=this.viewer.config.lang.menu,`\n\n`),noMargin:!0,clickHandler:t=>{const a=t?getClosest(t,".psv-panel-menu-item"):void 0,A=a?a.dataset.psvButton:void 0;A&&(this.viewer.navbar.getButton(A).onClick(),this.__hideMenu())}})}__hideMenu(){this.viewer.panel.hide(F.MENU)}};function getIcon(t){let a=0;switch(t){case 0:a=90;break;case 1:a=-90;break;case 3:a=180;break;default:a=0}return W.arrow.replace("rotate(0",`rotate(${a}`)}zt.id="menu";var Pt=class extends Tt{constructor(t,a){super(t,{className:"psv-move-button",hoverScale:!0,collapsable:!1,tabbable:!0,icon:getIcon(a)}),this.direction=a,this.handler=new ae,this.container.addEventListener("mousedown",this),this.container.addEventListener("keydown",this),this.container.addEventListener("keyup",this),this.viewer.container.addEventListener("mouseup",this),this.viewer.container.addEventListener("touchend",this)}destroy(){this.__onMouseUp(),this.viewer.container.removeEventListener("mouseup",this),this.viewer.container.removeEventListener("touchend",this),super.destroy()}handleEvent(t){switch(t.type){case"mousedown":this.__onMouseDown();break;case"mouseup":case"touchend":this.__onMouseUp();break;case"keydown":t.key===G.Enter&&this.__onMouseDown();break;case"keyup":t.key===G.Enter&&this.__onMouseUp()}}onClick(){}isSupported(){return invertResolvableBoolean(Mt.isTouchEnabled)}__onMouseDown(){if(!this.state.enabled)return;const t={};switch(this.direction){case 0:t.pitch=!1;break;case 1:t.pitch=!0;break;case 3:t.yaw=!1;break;default:t.yaw=!0}this.viewer.stopAll(),this.viewer.dynamics.position.roll(t),this.handler.down()}__onMouseUp(){this.state.enabled&&this.handler.up((()=>{this.viewer.dynamics.position.stop(),this.viewer.resetIdleTimer()}))}};Pt.groupId="move";var Ot=class extends Pt{constructor(t){super(t,1)}};Ot.id="moveDown";var Ut=class extends Pt{constructor(t){super(t,2)}};Ut.id="moveLeft";var jt=class extends Pt{constructor(t){super(t,3)}};jt.id="moveRight";var Rt=class extends Pt{constructor(t){super(t,0)}};Rt.id="moveUp";var Ft=class extends Tt{constructor(t,a,A){super(t,{className:"psv-zoom-button",hoverScale:!0,collapsable:!1,tabbable:!0,icon:a}),this.direction=A,this.handler=new ae,this.container.addEventListener("mousedown",this),this.container.addEventListener("keydown",this),this.container.addEventListener("keyup",this),this.viewer.container.addEventListener("mouseup",this),this.viewer.container.addEventListener("touchend",this)}destroy(){this.__onMouseUp(),this.viewer.container.removeEventListener("mouseup",this),this.viewer.container.removeEventListener("touchend",this),super.destroy()}handleEvent(t){switch(t.type){case"mousedown":this.__onMouseDown();break;case"mouseup":case"touchend":this.__onMouseUp();break;case"keydown":t.key===G.Enter&&this.__onMouseDown();break;case"keyup":t.key===G.Enter&&this.__onMouseUp()}}onClick(){}isSupported(){return invertResolvableBoolean(Mt.isTouchEnabled)}__onMouseDown(){this.state.enabled&&(this.viewer.dynamics.zoom.roll(1===this.direction),this.handler.down())}__onMouseUp(){this.state.enabled&&this.handler.up((()=>this.viewer.dynamics.zoom.stop()))}};Ft.groupId="zoom";var Bt=class extends Ft{constructor(t){super(t,W.zoomIn,0)}};Bt.id="zoomIn";var Gt=class extends Ft{constructor(t){super(t,W.zoomOut,1)}};Gt.id="zoomOut";var Vt=class extends Tt{constructor(t){super(t,{className:"psv-zoom-range",hoverScale:!1,collapsable:!1,tabbable:!1}),this.zoomRange=document.createElement("div"),this.zoomRange.className="psv-zoom-range-line",this.container.appendChild(this.zoomRange),this.zoomValue=document.createElement("div"),this.zoomValue.className="psv-zoom-range-handle",this.zoomRange.appendChild(this.zoomValue),this.slider=new se(this.container,"HORIZONTAL",(t=>this.__onSliderUpdate(t))),this.mediaMinWidth=parseInt(getStyleProperty(this.container,"max-width"),10),this.viewer.addEventListener(At.type,this),this.viewer.state.ready?this.__moveZoomValue(this.viewer.getZoomLevel()):this.viewer.addEventListener(Ke.type,this)}destroy(){this.slider.destroy(),this.viewer.removeEventListener(At.type,this),this.viewer.removeEventListener(Ke.type,this),super.destroy()}handleEvent(t){t instanceof At?this.__moveZoomValue(t.zoomLevel):t instanceof Ke&&this.__moveZoomValue(this.viewer.getZoomLevel())}onClick(){}isSupported(){return invertResolvableBoolean(Mt.isTouchEnabled)}autoSize(){this.state.supported&&(this.viewer.state.size.width<=this.mediaMinWidth&&this.state.visible?this.hide(!1):this.viewer.state.size.width>this.mediaMinWidth&&!this.state.visible&&this.show(!1))}__moveZoomValue(t){this.zoomValue.style.left=t/100*this.zoomRange.offsetWidth-this.zoomValue.offsetWidth/2+"px"}__onSliderUpdate(t){t.mousedown&&this.viewer.zoom(100*t.value)}};Vt.id="zoomRange",Vt.groupId="zoom";var Ht=class extends ce{constructor(t){super(),this.viewer=t}init(){}destroy(){}},Wt=class extends Ht{constructor(t,a){super(t),this.config=this.constructor.configParser(a)}setOption(t,a){this.setOptions({[t]:a})}setOptions(t){const a={...this.config,...t},A=this.constructor,h=A.configParser,p=A.readonlyOptions,g=A.id;for(let[m,v]of Object.entries(t))m in h.defaults?p.includes(m)?logWarn(`${g}: Option "${m}" cannot be updated`):(m in h.parsers&&(v=h.parsers[m](v,{rawConfig:a,defValue:h.defaults[m]})),this.config[m]=v):logWarn(`${g}: Unknown option "${m}"`)}};function pluginInterop(t){if(t)for(const[,a]of[["_",t],...Object.entries(t)])if(a.prototype instanceof Ht)return checkVersion(a.id,a.VERSION,"5.14.1"),a;return null}Wt.readonlyOptions=[];var Yt={panorama:null,container:null,adapter:[wt,null],plugins:[],caption:null,description:null,downloadUrl:null,downloadName:null,loadingImg:null,loadingTxt:"",size:null,fisheye:0,minFov:30,maxFov:90,defaultZoomLvl:50,defaultYaw:0,defaultPitch:0,sphereCorrection:null,moveSpeed:1,zoomSpeed:1,moveInertia:.8,mousewheel:!0,mousemove:!0,mousewheelCtrlKey:!1,touchmoveTwoFingers:!1,panoData:null,requestHeaders:null,canvasBackground:"#000",defaultTransition:{speed:1500,rotation:!0,effect:"fade"},rendererParameters:{alpha:!0,antialias:!0},withCredentials:()=>!1,navbar:["zoom","move","download","description","caption","fullscreen"],lang:{zoom:"Zoom",zoomOut:"Zoom out",zoomIn:"Zoom in",moveUp:"Move up",moveDown:"Move down",moveLeft:"Move left",moveRight:"Move right",description:"Description",download:"Download",fullscreen:"Fullscreen",loading:"Loading...",menu:"Menu",close:"Close",twoFingers:"Use two fingers to navigate",ctrlZoom:"Use ctrl + scroll to zoom the image",loadError:"The panorama cannot be loaded",webglError:"Your browser does not seem to support WebGL"},keyboard:"fullscreen",keyboardActions:{[G.ArrowUp]:"ROTATE_UP",[G.ArrowDown]:"ROTATE_DOWN",[G.ArrowRight]:"ROTATE_RIGHT",[G.ArrowLeft]:"ROTATE_LEFT",[G.PageUp]:"ZOOM_IN",[G.PageDown]:"ZOOM_OUT",[G.Plus]:"ZOOM_IN",[G.Minus]:"ZOOM_OUT"}},qt={panorama:"Use setPanorama method to change the panorama",panoData:"Use setPanorama method to change the panorama",container:"Cannot change viewer container",adapter:"Cannot change adapter",plugins:"Cannot change plugins"},Qt={container:t=>{if(!t)throw new Q("No value given for container.");return t},adapter:(t,a)=>{let{defValue:A}=a;if(!(t=t?Array.isArray(t)?[adapterInterop(t[0]),t[1]]:[adapterInterop(t),null]:A)[0])throw new Q("An undefined value was given for adapter.");if(!t[0].id)throw new Q("Adapter has no id.");return t},defaultYaw:t=>parseAngle(t),defaultPitch:t=>parseAngle(t,!0),defaultZoomLvl:t=>h.cj9.clamp(t,0,100),minFov:(t,a)=>{let{rawConfig:A}=a;return A.maxFov${a.caption}
`));let h=A.join("");return this.config.getLinkTooltip&&(h=this.config.getLinkTooltip(h,t,a)),h}__onEnterArrow(t,a){const A=h.Wp.getPosition(this.viewer.container),p={x:a.clientX-A.x,y:a.clientY-A.y};this.config.showLinkTooltip&&(this.state.currentTooltip=this.viewer.createTooltip({...$,left:p.x,top:p.y,box:{width:20,height:20}}),this.__getTooltipContent(t).then((t=>{t?this.state.currentTooltip.update(t):this.__hideTooltip()}))),this.map?.setActiveHotspot(J+t.nodeId),this.plan?.setActiveHotspot(J+t.nodeId),this.dispatchEvent(new E(t,this.state.currentNode))}__onHoverArrow(t){const a=h.Wp.getPosition(this.viewer.container),A={x:t.clientX-a.x,y:t.clientY-a.y};this.state.currentTooltip?.move({left:A.x,top:A.y})}__onLeaveArrow(t){this.__hideTooltip(),this.map?.setActiveHotspot(null),this.plan?.setActiveHotspot(null),this.dispatchEvent(new w(t,this.state.currentNode))}__hideTooltip(){this.state.currentTooltip?.hide(),this.state.currentTooltip=null}__preload(t){this.config.preload&&(this.state.preload[t.id]=!0,this.state.currentNode.links.filter((t=>!this.state.preload[t.nodeId])).filter((t=>"function"!==typeof this.config.preload||this.config.preload(this.state.currentNode,t))).forEach((t=>{this.state.preload[t.nodeId]=this.datasource.loadNode(t.nodeId).then((t=>this.viewer.textureLoader.preloadPanorama(t.panorama))).then((()=>{this.state.preload[t.nodeId]=!0})).catch((()=>{delete this.state.preload[t.nodeId]}))})))}__addNodeMarkers(t){t.markers&&(this.markers?this.markers.setMarkers(t.markers.map((a=>(a.gps&&this.isGps&&(a.position=gpsToSpherical(t.gps,a.gps),a.data?.map&&Object.assign(a.data.map,this.__getGpsMapPosition(a.gps)),a.data?.plan&&(a.data.plan.coordinates=a.gps)),a)))):h.Wp.logWarn(`Node ${t.id} markers ignored because the plugin is not loaded.`))}__getNodeMapPosition(t){const a=this.__getGpsMapPosition(t.gps);return a||(t.map?{x:t.map.x,y:t.map.y}:null)}__getGpsMapPosition(t){const a=this.config.map;return this.isGps&&a&&a.extent&&a.size?{x:p.cj9.mapLinear(t[0],a.extent[0],a.extent[2],0,a.size.width),y:p.cj9.mapLinear(t[1],a.extent[1],a.extent[3],0,a.size.height)}:null}};oe.id="virtual-tour",oe.VERSION="5.14.1",oe.configParser=se,oe.readonlyOptions=Object.keys(se.defaults);var le=oe},2614:function(t){t.exports=function(){"use strict";function createCommonjsModule(t,a){return t(a={exports:{}},a.exports),a.exports}var t=createCommonjsModule((function(t){var a=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=a)})),a=createCommonjsModule((function(t){var a=t.exports={version:"2.6.5"};"number"==typeof __e&&(__e=a)})),A=(a.version,function(t){return"object"===typeof t?null!==t:"function"===typeof t}),_anObject=function(t){if(!A(t))throw TypeError(t+" is not an object!");return t},_fails=function(t){try{return!!t()}catch(a){return!0}},h=!_fails((function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})),p=t.document,g=A(p)&&A(p.createElement),_domCreate=function(t){return g?p.createElement(t):{}},m=!h&&!_fails((function(){return 7!=Object.defineProperty(_domCreate("div"),"a",{get:function(){return 7}}).a})),_toPrimitive=function(t,a){if(!A(t))return t;var h,p;if(a&&"function"==typeof(h=t.toString)&&!A(p=h.call(t)))return p;if("function"==typeof(h=t.valueOf)&&!A(p=h.call(t)))return p;if(!a&&"function"==typeof(h=t.toString)&&!A(p=h.call(t)))return p;throw TypeError("Can't convert object to primitive value")},v=Object.defineProperty,_={f:h?Object.defineProperty:function(t,a,A){if(_anObject(t),a=_toPrimitive(a,!0),_anObject(A),m)try{return v(t,a,A)}catch(h){}if("get"in A||"set"in A)throw TypeError("Accessors not supported!");return"value"in A&&(t[a]=A.value),t}},_propertyDesc=function(t,a){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:a}},E=h?function(t,a,A){return _.f(t,a,_propertyDesc(1,A))}:function(t,a,A){return t[a]=A,t},x={}.hasOwnProperty,_has=function(t,a){return x.call(t,a)},w=0,C=Math.random(),_uid=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++w+C).toString(36))},T=!1,D=createCommonjsModule((function(A){var h="__core-js_shared__",p=t[h]||(t[h]={});(A.exports=function(t,a){return p[t]||(p[t]=void 0!==a?a:{})})("versions",[]).push({version:a.version,mode:T?"pure":"global",copyright:"\xa9 2019 Denis Pushkarev (zloirock.ru)"})})),O=D("native-function-to-string",Function.toString),U=createCommonjsModule((function(A){var h=_uid("src"),p="toString",g=(""+O).split(p);a.inspectSource=function(t){return O.call(t)},(A.exports=function(a,A,p,m){var v="function"==typeof p;v&&(_has(p,"name")||E(p,"name",A)),a[A]!==p&&(v&&(_has(p,h)||E(p,h,a[A]?""+a[A]:g.join(String(A)))),a===t?a[A]=p:m?a[A]?a[A]=p:E(a,A,p):(delete a[A],E(a,A,p)))})(Function.prototype,p,(function(){return"function"==typeof this&&this[h]||O.call(this)}))})),_aFunction=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t},_ctx=function(t,a,A){if(_aFunction(t),void 0===a)return t;switch(A){case 1:return function(A){return t.call(a,A)};case 2:return function(A,h){return t.call(a,A,h)};case 3:return function(A,h,p){return t.call(a,A,h,p)}}return function(){return t.apply(a,arguments)}},j="prototype",$export=function(A,h,p){var g,m,v,_,x=A&$export.F,w=A&$export.G,C=A&$export.S,T=A&$export.P,D=A&$export.B,O=w?t:C?t[h]||(t[h]={}):(t[h]||{})[j],F=w?a:a[h]||(a[h]={}),G=F[j]||(F[j]={});for(g in w&&(p=h),p)v=((m=!x&&O&&void 0!==O[g])?O:p)[g],_=D&&m?_ctx(v,t):T&&"function"==typeof v?_ctx(Function.call,v):v,O&&U(O,g,v,A&$export.U),F[g]!=v&&E(F,g,_),T&&G[g]!=v&&(G[g]=v)};t.core=a,$export.F=1,$export.G=2,$export.S=4,$export.P=8,$export.B=16,$export.W=32,$export.U=64,$export.R=128;var F,G=$export,W=Math.ceil,Y=Math.floor,_toInteger=function(t){return isNaN(t=+t)?0:(t>0?Y:W)(t)},_defined=function(t){if(void 0==t)throw TypeError("Can't call method on "+t);return t},q=(F=!1,function(t,a){var A,h,p=String(_defined(t)),g=_toInteger(a),m=p.length;return g<0||g>=m?F?"":void 0:(A=p.charCodeAt(g))<55296||A>56319||g+1===m||(h=p.charCodeAt(g+1))<56320||h>57343?F?p.charAt(g):A:F?p.slice(g,g+2):h-56320+(A-55296<<10)+65536});G(G.P,"String",{codePointAt:function(t){return q(this,t)}}),a.String.codePointAt;var Q=Math.max,Z=Math.min,_toAbsoluteIndex=function(t,a){return(t=_toInteger(t))<0?Q(t+a,0):Z(t,a)},K=String.fromCharCode,X=String.fromCodePoint;G(G.S+G.F*(!!X&&1!=X.length),"String",{fromCodePoint:function(t){for(var a,A=arguments,h=[],p=arguments.length,g=0;p>g;){if(a=+A[g++],_toAbsoluteIndex(a,1114111)!==a)throw RangeError(a+" is not a valid code point");h.push(a<65536?K(a):K(55296+((a-=65536)>>10),a%1024+56320))}return h.join("")}}),a.String.fromCodePoint;var J,$,ee,te,ie,ne,ae,re,se,oe,le,ce,de,ue,Ae={Space_Separator:/[\u1680\u2000-\u200A\u202F\u205F\u3000]/,ID_Start:/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE83\uDE86-\uDE89\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]/,ID_Continue:/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u09FC\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9-\u0AFF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D00-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C88\u1CD0-\u1CD2\u1CD4-\u1CF9\u1D00-\u1DF9\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC00-\uDC4A\uDC50-\uDC59\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDE00-\uDE3E\uDE47\uDE50-\uDE83\uDE86-\uDE99\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC40\uDC50-\uDC59\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD47\uDD50-\uDD59]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6\uDD00-\uDD4A\uDD50-\uDD59]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/},he={isSpaceSeparator:function(t){return"string"===typeof t&&Ae.Space_Separator.test(t)},isIdStartChar:function(t){return"string"===typeof t&&(t>="a"&&t<="z"||t>="A"&&t<="Z"||"$"===t||"_"===t||Ae.ID_Start.test(t))},isIdContinueChar:function(t){return"string"===typeof t&&(t>="a"&&t<="z"||t>="A"&&t<="Z"||t>="0"&&t<="9"||"$"===t||"_"===t||"\u200c"===t||"\u200d"===t||Ae.ID_Continue.test(t))},isDigit:function(t){return"string"===typeof t&&/[0-9]/.test(t)},isHexDigit:function(t){return"string"===typeof t&&/[0-9A-Fa-f]/.test(t)}},parse=function(t,a){J=String(t),$="start",ee=[],te=0,ie=1,ne=0,ae=void 0,re=void 0,se=void 0;do{ae=lex(),ge[$]()}while("eof"!==ae.type);return"function"===typeof a?internalize({"":se},"",a):se};function internalize(t,a,A){var h=t[a];if(null!=h&&"object"===typeof h)if(Array.isArray(h))for(var p=0;p0!==t>0&&this.version++,this._alphaTest=t}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(t){if(void 0!==t)for(const a in t){const A=t[a];if(void 0===A){console.warn(`THREE.Material: parameter '${a}' has value of undefined.`);continue}const h=this[a];void 0!==h?h&&h.isColor?h.set(A):h&&h.isVector3&&A&&A.isVector3?h.copy(A):this[a]=A:console.warn(`THREE.Material: '${a}' is not a property of THREE.${this.type}.`)}}toJSON(t){const a=void 0===t||"string"===typeof t;a&&(t={textures:{},images:{}});const A={metadata:{version:4.7,type:"Material",generator:"Material.toJSON"}};function extractFromCache(t){const a=[];for(const A in t){const h=t[A];delete h.metadata,a.push(h)}return a}if(A.uuid=this.uuid,A.type=this.type,""!==this.name&&(A.name=this.name),this.color&&this.color.isColor&&(A.color=this.color.getHex()),void 0!==this.roughness&&(A.roughness=this.roughness),void 0!==this.metalness&&(A.metalness=this.metalness),void 0!==this.sheen&&(A.sheen=this.sheen),this.sheenColor&&this.sheenColor.isColor&&(A.sheenColor=this.sheenColor.getHex()),void 0!==this.sheenRoughness&&(A.sheenRoughness=this.sheenRoughness),this.emissive&&this.emissive.isColor&&(A.emissive=this.emissive.getHex()),void 0!==this.emissiveIntensity&&1!==this.emissiveIntensity&&(A.emissiveIntensity=this.emissiveIntensity),this.specular&&this.specular.isColor&&(A.specular=this.specular.getHex()),void 0!==this.specularIntensity&&(A.specularIntensity=this.specularIntensity),this.specularColor&&this.specularColor.isColor&&(A.specularColor=this.specularColor.getHex()),void 0!==this.shininess&&(A.shininess=this.shininess),void 0!==this.clearcoat&&(A.clearcoat=this.clearcoat),void 0!==this.clearcoatRoughness&&(A.clearcoatRoughness=this.clearcoatRoughness),this.clearcoatMap&&this.clearcoatMap.isTexture&&(A.clearcoatMap=this.clearcoatMap.toJSON(t).uuid),this.clearcoatRoughnessMap&&this.clearcoatRoughnessMap.isTexture&&(A.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(t).uuid),this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture&&(A.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(t).uuid,A.clearcoatNormalScale=this.clearcoatNormalScale.toArray()),void 0!==this.dispersion&&(A.dispersion=this.dispersion),void 0!==this.iridescence&&(A.iridescence=this.iridescence),void 0!==this.iridescenceIOR&&(A.iridescenceIOR=this.iridescenceIOR),void 0!==this.iridescenceThicknessRange&&(A.iridescenceThicknessRange=this.iridescenceThicknessRange),this.iridescenceMap&&this.iridescenceMap.isTexture&&(A.iridescenceMap=this.iridescenceMap.toJSON(t).uuid),this.iridescenceThicknessMap&&this.iridescenceThicknessMap.isTexture&&(A.iridescenceThicknessMap=this.iridescenceThicknessMap.toJSON(t).uuid),void 0!==this.anisotropy&&(A.anisotropy=this.anisotropy),void 0!==this.anisotropyRotation&&(A.anisotropyRotation=this.anisotropyRotation),this.anisotropyMap&&this.anisotropyMap.isTexture&&(A.anisotropyMap=this.anisotropyMap.toJSON(t).uuid),this.map&&this.map.isTexture&&(A.map=this.map.toJSON(t).uuid),this.matcap&&this.matcap.isTexture&&(A.matcap=this.matcap.toJSON(t).uuid),this.alphaMap&&this.alphaMap.isTexture&&(A.alphaMap=this.alphaMap.toJSON(t).uuid),this.lightMap&&this.lightMap.isTexture&&(A.lightMap=this.lightMap.toJSON(t).uuid,A.lightMapIntensity=this.lightMapIntensity),this.aoMap&&this.aoMap.isTexture&&(A.aoMap=this.aoMap.toJSON(t).uuid,A.aoMapIntensity=this.aoMapIntensity),this.bumpMap&&this.bumpMap.isTexture&&(A.bumpMap=this.bumpMap.toJSON(t).uuid,A.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(A.normalMap=this.normalMap.toJSON(t).uuid,A.normalMapType=this.normalMapType,A.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(A.displacementMap=this.displacementMap.toJSON(t).uuid,A.displacementScale=this.displacementScale,A.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(A.roughnessMap=this.roughnessMap.toJSON(t).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(A.metalnessMap=this.metalnessMap.toJSON(t).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(A.emissiveMap=this.emissiveMap.toJSON(t).uuid),this.specularMap&&this.specularMap.isTexture&&(A.specularMap=this.specularMap.toJSON(t).uuid),this.specularIntensityMap&&this.specularIntensityMap.isTexture&&(A.specularIntensityMap=this.specularIntensityMap.toJSON(t).uuid),this.specularColorMap&&this.specularColorMap.isTexture&&(A.specularColorMap=this.specularColorMap.toJSON(t).uuid),this.envMap&&this.envMap.isTexture&&(A.envMap=this.envMap.toJSON(t).uuid,void 0!==this.combine&&(A.combine=this.combine)),void 0!==this.envMapRotation&&(A.envMapRotation=this.envMapRotation.toArray()),void 0!==this.envMapIntensity&&(A.envMapIntensity=this.envMapIntensity),void 0!==this.reflectivity&&(A.reflectivity=this.reflectivity),void 0!==this.refractionRatio&&(A.refractionRatio=this.refractionRatio),this.gradientMap&&this.gradientMap.isTexture&&(A.gradientMap=this.gradientMap.toJSON(t).uuid),void 0!==this.transmission&&(A.transmission=this.transmission),this.transmissionMap&&this.transmissionMap.isTexture&&(A.transmissionMap=this.transmissionMap.toJSON(t).uuid),void 0!==this.thickness&&(A.thickness=this.thickness),this.thicknessMap&&this.thicknessMap.isTexture&&(A.thicknessMap=this.thicknessMap.toJSON(t).uuid),void 0!==this.attenuationDistance&&this.attenuationDistance!==1/0&&(A.attenuationDistance=this.attenuationDistance),void 0!==this.attenuationColor&&(A.attenuationColor=this.attenuationColor.getHex()),void 0!==this.size&&(A.size=this.size),null!==this.shadowSide&&(A.shadowSide=this.shadowSide),void 0!==this.sizeAttenuation&&(A.sizeAttenuation=this.sizeAttenuation),this.blending!==D&&(A.blending=this.blending),this.side!==x&&(A.side=this.side),!0===this.vertexColors&&(A.vertexColors=!0),this.opacity<1&&(A.opacity=this.opacity),!0===this.transparent&&(A.transparent=!0),this.blendSrc!==$&&(A.blendSrc=this.blendSrc),this.blendDst!==ee&&(A.blendDst=this.blendDst),this.blendEquation!==G&&(A.blendEquation=this.blendEquation),null!==this.blendSrcAlpha&&(A.blendSrcAlpha=this.blendSrcAlpha),null!==this.blendDstAlpha&&(A.blendDstAlpha=this.blendDstAlpha),null!==this.blendEquationAlpha&&(A.blendEquationAlpha=this.blendEquationAlpha),this.blendColor&&this.blendColor.isColor&&(A.blendColor=this.blendColor.getHex()),0!==this.blendAlpha&&(A.blendAlpha=this.blendAlpha),this.depthFunc!==he&&(A.depthFunc=this.depthFunc),!1===this.depthTest&&(A.depthTest=this.depthTest),!1===this.depthWrite&&(A.depthWrite=this.depthWrite),!1===this.colorWrite&&(A.colorWrite=this.colorWrite),255!==this.stencilWriteMask&&(A.stencilWriteMask=this.stencilWriteMask),519!==this.stencilFunc&&(A.stencilFunc=this.stencilFunc),0!==this.stencilRef&&(A.stencilRef=this.stencilRef),255!==this.stencilFuncMask&&(A.stencilFuncMask=this.stencilFuncMask),this.stencilFail!==ni&&(A.stencilFail=this.stencilFail),this.stencilZFail!==ni&&(A.stencilZFail=this.stencilZFail),this.stencilZPass!==ni&&(A.stencilZPass=this.stencilZPass),!0===this.stencilWrite&&(A.stencilWrite=this.stencilWrite),void 0!==this.rotation&&0!==this.rotation&&(A.rotation=this.rotation),!0===this.polygonOffset&&(A.polygonOffset=!0),0!==this.polygonOffsetFactor&&(A.polygonOffsetFactor=this.polygonOffsetFactor),0!==this.polygonOffsetUnits&&(A.polygonOffsetUnits=this.polygonOffsetUnits),void 0!==this.linewidth&&1!==this.linewidth&&(A.linewidth=this.linewidth),void 0!==this.dashSize&&(A.dashSize=this.dashSize),void 0!==this.gapSize&&(A.gapSize=this.gapSize),void 0!==this.scale&&(A.scale=this.scale),!0===this.dithering&&(A.dithering=!0),this.alphaTest>0&&(A.alphaTest=this.alphaTest),!0===this.alphaHash&&(A.alphaHash=!0),!0===this.alphaToCoverage&&(A.alphaToCoverage=!0),!0===this.premultipliedAlpha&&(A.premultipliedAlpha=!0),!0===this.forceSinglePass&&(A.forceSinglePass=!0),!0===this.wireframe&&(A.wireframe=!0),this.wireframeLinewidth>1&&(A.wireframeLinewidth=this.wireframeLinewidth),"round"!==this.wireframeLinecap&&(A.wireframeLinecap=this.wireframeLinecap),"round"!==this.wireframeLinejoin&&(A.wireframeLinejoin=this.wireframeLinejoin),!0===this.flatShading&&(A.flatShading=!0),!1===this.visible&&(A.visible=!1),!1===this.toneMapped&&(A.toneMapped=!1),!1===this.fog&&(A.fog=!1),Object.keys(this.userData).length>0&&(A.userData=this.userData),a){const a=extractFromCache(t.textures),h=extractFromCache(t.images);a.length>0&&(A.textures=a),h.length>0&&(A.images=h)}return A}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.blendColor.copy(t.blendColor),this.blendAlpha=t.blendAlpha,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;const a=t.clippingPlanes;let A=null;if(null!==a){const t=a.length;A=new Array(t);for(let h=0;h!==t;++h)A[h]=a[h].clone()}return this.clippingPlanes=A,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.alphaHash=t.alphaHash,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){!0===t&&this.version++}}class MeshBasicMaterial extends Material{constructor(t){super(),this.isMeshBasicMaterial=!0,this.type="MeshBasicMaterial",this.color=new Color(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.envMapRotation=new Euler,this.combine=ve,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.envMapRotation.copy(t.envMapRotation),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}}const Hn=new Vector3,Wn=new Vector2;let Yn=0;class BufferAttribute{constructor(t,a,A){if(void 0===A&&(A=!1),Array.isArray(t))throw new TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.isBufferAttribute=!0,Object.defineProperty(this,"id",{value:Yn++}),this.name="",this.array=t,this.itemSize=a,this.count=void 0!==t?t.length/a:0,this.normalized=A,this.usage=Ai,this.updateRanges=[],this.gpuType=Ze,this.version=0}onUploadCallback(){}set needsUpdate(t){!0===t&&this.version++}setUsage(t){return this.usage=t,this}addUpdateRange(t,a){this.updateRanges.push({start:t,count:a})}clearUpdateRanges(){this.updateRanges.length=0}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.gpuType=t.gpuType,this}copyAt(t,a,A){t*=this.itemSize,A*=a.itemSize;for(let h=0,p=this.itemSize;h
a.count&&console.warn("THREE.BufferGeometry: Buffer size too small for points data. Use .dispose() and create a new geometry."),a.needsUpdate=!0}return this}computeBoundingBox(){null===this.boundingBox&&(this.boundingBox=new Box3);const t=this.attributes.position,a=this.morphAttributes.position;if(t&&t.isGLBufferAttribute)return console.error("THREE.BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box.",this),void this.boundingBox.set(new Vector3(-1/0,-1/0,-1/0),new Vector3(1/0,1/0,1/0));if(void 0!==t){if(this.boundingBox.setFromBufferAttribute(t),a)for(let A=0,h=a.length;A 0&&(h[v]=A,p=!0)}p&&(t.data.morphAttributes=h,t.data.morphTargetsRelative=this.morphTargetsRelative);const g=this.groups;g.length>0&&(t.data.groups=JSON.parse(JSON.stringify(g)));const m=this.boundingSphere;return null!==m&&(t.data.boundingSphere=m.toJSON()),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;const a={};this.name=t.name;const A=t.index;null!==A&&this.setIndex(A.clone());const h=t.attributes;for(const _ in h){const t=h[_];this.setAttribute(_,t.clone(a))}const p=t.morphAttributes;for(const _ in p){const t=[],A=p[_];for(let h=0,p=A.length;h 0){const A=t[a[0]];if(void 0!==A){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let t=0,a=A.length;t(t.far-t.near)**2)return}ea.copy(p).invert(),ta.copy(t.ray).applyMatrix4(ea),null!==A.boundingBox&&!1===ta.intersectsBox(A.boundingBox)||this._computeIntersections(t,a,ta)}}_computeIntersections(t,a,A){let h;const p=this.geometry,g=this.material,m=p.index,v=p.attributes.position,_=p.attributes.uv,E=p.attributes.uv1,x=p.attributes.normal,w=p.groups,C=p.drawRange;if(null!==m)if(Array.isArray(g))for(let T=0,D=w.length;T