12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349 |
- import{g as Mi,d as Ot,e as W0,_ as On,r as U,f as gs,h as Dn,i as ee,j as z0,o as Be,c as Xe,k as O,w as k,b as E,u as V,l as tt,n as vt,E as ue,m as re,q as Ze,s as yt,t as Tt,v as yr,x as rt,y as Dt,z as hu,F as hr,A as ja,B as xe,C as Fe,p as ea,a as ta,D as du,G as vu,H as Mo,I as Vo,J as A0,K as H0,L as j0,V as K0}from"./index-f3a411ec.js";function Hr(t){let e=new Date(t),n=e.getFullYear(),r=("0"+(e.getMonth()+1)).slice(-2),a=("0"+e.getDate()).slice(-2),s=("0"+e.getHours()).slice(-2),i=("0"+e.getMinutes()).slice(-2),o=("0"+e.getSeconds()).slice(-2);return n+"-"+r+"-"+a+" "+s+":"+i+":"+o}const P0="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAAAXNSR0IArs4c6QAABUpJREFUWEfVmW/In1Mcxq+rvJiaWFGEmiJWFmpCWiaTLZYVC1EsW/Ziqy3EolgUMtmKWCgvKMtkilCTyUQhlDJRFPKUlRUv9kJd7mu+53F+9+/+c363nxfPefNsz33u+3zO98/1/Z7zEHNkcI5wYiqgkk4AcA6AUwHMj80fBvALgIMk//yvBhkMKumiCuJGACsCso3lLwBfAngHwG6SXw+BnhhU0s0A7s/gbLlPAsYWTNY7HsCZAM6tIC8GMC8A91U/HyT50STAxaCSzgbwYixqK70C4GUA+0j6/61DkiGvBrAuPOC5fn8LyZkS4CJQSXcA2BFWeQnANpLflyxQnyPpfABPAlgGwJC3kHyv71u9oJIesKsAHAJwG8m3+j5a8jzbvKcb9rWu9zpBM8iDAFaS/LEEonSOpEurGN4D4EQnZhdsK6ik2wE8X+3WLl5aGkulkGmeJMvahyFry9uSrBFUkjP1UwDO6EumbcmGuL3MSRkxu5ik1x0ZbaCGXFJJzmqSb0xqpSHzJd1ZWXW7vUhyfS+opGsB7LV8kLxpyKJD3pF0DIAvQp8X1VVlzKIVaJp8FsmfBy46j+SRtncDCnX9leQQ2G+9Jrk2f38EVJIryMdDrRkAduG94cK7G+LRwm9NPlJl+eKG599ERTspj9U6qIV4M4ArSTq4i4ekBOCy6TFilahsTwFYHs8Pk1zQAJpidR3JF9LzOuh3oWneTWdZzOTFpTUB+B1L2oYEGp2Vi8ZGAI5DNydWlfktoN6oOfaQXDMGKsmi+5s/RHJlnykD4KGASgCbooL9XrnPpdbx5kx2G2g93kjy3ciDhU2gXrfS8J/8s7Lo6U2gKT63kxyLrcyChnIxeDQAXLU2GyAWMZRB07AmPgxgZ/JSAejb0bwcl3rZWddLuiE6mg0kdzVZNLLy2ZCQMYAaqMPA3dZWku4TZkcB6DPhKcuUDfFvhy/p1vjwWpJeYGRkJdW/t1s3NVWQCAlbdExiMq9YArtcn5L6ApJuuicCtca5hzy56qLcnNzV1ERkoFaNVU16WmDRTtDVAF6PeNvZ4no3wE4gZ7D/7WRxfH6VWSuP0cYNFYA+F022i87RvjePUdd21/gdJLd0Zb2khdH8enNJktxMz2QWdVWzkoxtqAD0/Wisj00eyUH9wT8qQT5A8vI+eYrEuSLkx127k8sN9m4Av0a8b8s25FeciP6ds7orRi2Th0guGpOnWDjV+QVdtbqWwd6gE9GQjl+7yqI9m0yS6hs6+okWwU+eHUnGemV6JOr0xO2dJEPeE7Ji+HoJrW+orYQ6B3zKdcdv7/yzqZp1UvnaX+r+BhlzGBh4b75QlmyO2/uiKdna4J0fIq5Pyb3a1OalQF5C8vOSWJ3WnEzLxxK6CTT1hE6qpdOC6PtOnP1tTcvbGfUzWttR5FUA10cT8XTfItN4LimVTd+iWBlGRhvoaaGp3t2KKl4/mAZM2zey8vxZnHjHTgddx2VLintHNxTLqvPTt/8HrKSr4ozmO6sL2068fRcQ10V9t5hbLnqvXibZTCSPi4BHp+dKrnR8KnUz4uEe9LHSYtDhaofU41HP7THrduftXi+oF4s+1K2fa7zbLgf8xOf9OPz52tKNtPPAMbmm5IKjCDRgbQVXLp+HPAxsS/tytvNOStJ5cenri19v1sliWHun6GxWDJpVFlcenxQtX+ly1p2SwX2NmC5yvTFbzfNdjTwc6z78PTHpXdbEoBmwQRy/18T1jy1VH7aWm5QD1R2Wz1RvDo3vwaB1Ikn+I4Mbk/yPDTNDwerfnxroJLI0ZO6cAf0bYrtPSWjc7nQAAAAASUVORK5CYII=",X0="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAAAXNSR0IArs4c6QAABQNJREFUWEfVWW/InlMcvq7ywQcfKCtCFMoHy0SxkK0sK8SyQshWk8nK1iYrE4vFYiGEUGQfCNkyRRKyZUUhZGVlivjgg6L4oC7nevvdj/t9nvu+z7nv50m9p97e5+0553eu8/tz/a5zXmKBDC4QnJgJUEnHAjgLwEkAjonD/wngRwCHSPrzVGMwUEnnA7gOwJUBsgvIlwDeTfNeJfnVEMS9gUq6GsDWtPGFseHvCezn8fMzgMp79uypAM4GcHHN0wcBPExybx/AxUAlnQ7gBQDLAPxj7wB4zZ4i6b9bh6SjY91tAK6JiXsAbCTp9MiOIqCSrgXwUnjFG9xF8nDWesMESUsAPARgZQLqaNxE8p2crSxQSfcAeDCMridpL049JN0C4Nlk+6iULltIPtFltBOopPvS4vsBHAGwYqgX2wBIOgeAI3QagA0kn26b2wo0isZGDHI5Sf+e+ZBkkJ8k755gBiH5XtMmjUAluVoPRdGcO2tPjgORdB6A/cEY3u+n8TltQN8Ofrx+VjmZC4WkOwA8FVx7QxZoLeR7Ejmvym0wy+8lOQXMuctIfly3PeFRSZ8GmS8Z2kWGgpd0aQL5EYB9JK9qBSrJXeTrpokdlXtRtEc3g3un7esJ7Ifh1TPrBTzPo5IeSAW0zd2jtMUFH7oZePxqOiP53BReNb/anrl1V2VnHKjD7s6xqNQzNaD7UuVelvq426VFiHnxQF/Ako4H8ItTIK1fMQFUkjvEXxYXicuWlm5QA7o2UsBRWRfrrQe2lvbzas/Usp1+J6dudVwTUOvJ79zWSN4+BCjJuRSIfv5MFOXfSSM8CmAHSX/OjiSAXrEGAHBKxamj0Ety2N53jpLckbUWE+oerYDWPGO9+nh0Heev1VJWK0iyaLGUXErSsvA/hS/J8uutMNYpEOqH6AIa3nXO3h1F6vTaTfLmLkfUNIZbt+nqfwFqHevQ2xHWrY7YzmmAWhCbw0wv26cNfdyj7MmNwQT2jJng25xtSY/FOvd9M8g8j54B4HureJK35ozV8rDivbXO0WCPG33diNy0wHblv9nD5usAVgdN/jYO1PnzR6q2w8no4h5GR0DjoA6z71NW7/68q7Taa4f/wbeJpE8XtRF+1b5OJDl3ktyoFZNloSnOwzTldjoh1wrsWZ8a6DxRNN6ZNocX1pF8MWc0qrryqP80lWyqKKVk/fgcSc5rp80aki+3edSncZ4eJHlJyUZB7k9Gbo8Ml6xtmpNk5hcRGUfV6TM3mmRelcgTmnDo5qXralp4ojs2AbUo+SyEhTtD5529FERuXtz953o8ANOSc3402q4iz4ewMK10knMOQOn3kh6xtHPLJblpfF0bUD96+XS+Ga5M+fpB6YZD5km6wmLd1AhgcROddV2XL4hrgUNvsL21ZQnodPW5PO72nj4R8tZiqhuvGTHY1W137hJALRXup6Ld8Z1vFY13+saqb+C16sTuXOa3Yl3ZdoAoHAts56Rf/7JOyL49ebN4IHgjnl6+CQXU69kw7Piw1gG+l1lbuLJXjVd40wGLgMYm1pUWtOtDDXkTt8q9uY3ijckPvmsCoJW+BfX2Uh1QDLQ6pST38ztjU4P3sC7wY657e/0h153OvOwLm4c7jSOzs+8zUW+gNcCmML8++53TasmgmoYpxxrAheKHhVFb7FOEg4E2FJ2fws271T8bHN4jpaHNgZ4Z0NxG036/YID+C13f/zrMiYL6AAAAAElFTkSuQmCC",I0="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAAAXNSR0IArs4c6QAABF9JREFUWEfVmU+oVVUYxdeCBg0MahAINVBSaJDwAoUkI0WjJEEDI8VBDRKFBiolGSolJRUaORAieGFBUNF7lBRUEFSoaFhkECRoqCQkFNjAgYNgudfj24/juefcc+6793Z5e3Lf/XP2/u29vz/r+x4xSwZnCScGAippDoD7ANwFwH97XAfwB4DzJP/t90BmDCppMYCnAKwKyFu6wPwG4EsAn5P8cSbQPYNKejgt9AqA5YWTOw7AMD7Ba/H5rQDuiU0sK5z0GT9P8mgvwK1BJd0N4B0AawD8B+BrAO/6laTf1w5JhvbGtgB4DIDffw/gGZKX2gC3ApX0OIAPAdwegDtInm2zQPk3ku4F8DqAdWHHhv2kaa5GUEnb0rUdjFPcSvKDpknbfC/J9j0eJmFT2Nftua6gkp4DcBjAZQCrSdoOBzYkzQPwHQC/7iG5v27yWlBJj4anXgHwEMmLAyMsTFSCXU9ysmqdSlBJcwH8Eja5jOTPw4DMc0paEOv5o0VVh1IH+hGADQBsk/bsoQ9Jm8JhHUVWlxfsAJU0Frs7RXLp0AlvNoOvInwtJ/lDce0q0M8idIyR/PV/BrUJ/J6y3fEEuqIWNAz7QtpV69OMZ66QdG7vGJKcWueRPN9m05K+iKRiW52OMjedqKTnI2Y6CDfGy4A8B+C1ujhYCHH3k3T67DokrbUmiDn35h+XQbON3EnynxaTZns+RHJHzYm+nD63NlhB0mmzCdTp9WoyvzNFHymD+geXUyxb1DShvy843sBAY95jKVU/AOC2bFLToCE6/kxqZ4LkkyMGtfjZGjF1yk6LoN7ByaRs3iD50ohBXzSHQ1W6/m/KoJZhzruNAiFvYohXvx3A2w6TWbcWT3TWgLq0OO3wRHLniK9+t8MTgEdIflu+eotie73rmidGDHrE6h/AwpwoyuHpL6vuFOznjxjUys3p9I5c5pRBP01F2noA89voz2E4kyTf7N/lfF8GfTrl5fdTJfkCybeaTjVir0XEdpLv1WSmXHIsaVNnScoMu0i+WZdC824uklzYBDqM71Nl4Vhux/atugSaGlUyLxtybVkwDMBInSsB2Ms7HLoKNGtC10iWWpXybdCwIQcdHi10OrRwXSlywHbaS0ztF1xSjp3jJDeX56sDtdRyiHCzYDqN9QtT93xUvNagrnitWzuaat3KZXfnbNhW6IadEgeDHpIejO6L11lF8kTVGk0NCNf23qnHhl4bW02bipOciF7Umm6H0aalY1hP5r6nuyY7+3WwcJxXww/cYGu8sUbQCBuOBC66bLOOBk4IlR2NFqfomsi9LM/pgm8jyZ+anmsFGrB2MNc/1or+28Buck02ZZzohBjQqt2APkXfzl6SuZ/albU1aJ4l2j1W4M8WmrMuBF1hGr7YyDWUndItIg/H5I8B7G9bPud1ewYtANtmfUpujbujbKiqYfhT4dlHZ9rPnzFomSi6yu5KF//ZYM0wkMw2MNAmZ+j3+1kDegOA+wZJIwcZzQAAAABJRU5ErkJggg==",Y0="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAAAXNSR0IArs4c6QAABWBJREFUWEfVmW/onlMYx7/f8oIiFEW8sBCLxWoLaSFki7JiIYply154sWWL1cSiWCZbEeIFRSwTilCTyUQhZDJRCLUypXjhxerrfH9d53Ge+7n/PfczL3Zq/X7P7nM/53Ouc13f67rOjzhMBg8TThwSUEnHATgbwCkAjo7N/wngNwD7SP49q0EGg0q6IEHcCGBpQDaxHATwJYB3AOwguXcI9NSgkm4GsKmAs+U+CRhbMFvvWABnADg3QV4I4MgA3JV+3k/yo2mAe4NKOgvAc7GorfQygBcB7CLpz41DkiGvBrAqTsBz/f46kvv7APcClXQHgG1hlRcAbCb5Q58FqnMknQ/gMQCXAjDkLSTf6/quTlBJ9/mo4ktXkXyr60v7PC827+mGfbXtvVbQAnIfgGUkf+oD0XeOpIuTD+8EcIIDsw22EVTS7QCeTbv1ES/p60t9IfM8SZa1D0PWrmgKslpQSY7UTwE4oi861Jas8dtLHJThXgtIet2x0QRqyEVJcpaTfGNaKw2ZL+muZNWtPkWSqztBJV0L4HXLB8mbhiw65B1JRwD4IvR5flVVJiyaQPPkM0n+Wi5qPST5TxNI1/OuDUiyC+y2XpNcWc4fA5XkDPJxnTULObGeWkfHgCMovk4u82by7bVpoZ+7wOqeS/o2MtqJpa9WQS3EawFcSdLOPRqS8jP/n4V6PUlnprkhyQL+fnz0Jmo31AVf+OptJJ/P86ug34emeTdjabEAdWa6PrKUiw1/4VcFqI/utPg3saEeoK4PzLGT5IoJUEkW3d9d5ZBcViMh2aILw6L+7OrJw/DOWC+lD85iWwA4il28OM+PNtQFGqfzS3r3YLLovDrQ7J9bSW5oAyXphX3clrBnkko4f+fhymhzPD8p8nq5oQ1dySOVkG9H8XJMrmVHR5+c+IaoaNaQfLoPaOGfzmIPAjDYCLR4Xm7I/murb29SEElPplNbk+pXy5TT938VvqRbo4xbSdLl3NgofHRhtmg5ofDRCdAC2Gs8Hulyb8rtC+pcoW6t0qKzgubaoBZU0umReZbb//w7yY1DQP0Fr4UGbu9r0QqAXxsDjX7KgbU+AsuqcGeK6G+aAkuS/d5FtpPOXN1bWtR+5By/jeS6LtAAuDt015HtL7S0zIFGSnTbYt89NZ5vIrmjK/JThrIeW5ePyn5cgnqxvwDsIXlZC+hiAOck6zwcwWPAewD8EYLvQHGycIFhJXEP5d+3tKXfir9bJg+kTc2fkKeQk5znj69JkVlHs+VcihngUc8tgsn1gS3oYX3dWK0Z2iwakueTHcv31cz0UFhnoryrpFCrwr0lQCWFuit14+afUw1JD0SicMU/cpMqaE5fu6vHH5WN6wAf4QSAJGuog8Cpb5Sjp6GMbvXHCLqTy1OtK/OyIy8i+fk0C806t9DyiYCuA801oYNqyayL932/sKavh+ZV02xTK/JKVEjWuyf6LjbLvCJt1iaMJlBHrSPPu1ua/PWDWSC63i063s+i453oItra5cvjYuuAxTf1T991LTjkuaSrokez3i5u6ni7LiCui4rKmmm56Lx6mQY2guepeKf15Ppc6bgr9YWWh7NR7wzTBB3p95HI5z4x63br7V4naGQsK4FF3i2Gi2Y7/NT9fk3+t0+u6HPB0Qs0YB1YzlwuaD0MbEv7crb1TkrSedG2uNL3Zh0sLlZ8Oq1XlvlUeoPmF+La0GVbbvD8yPnd4G7m8kWuN2b1cJvifszDvu77LNcHve5FB4MWwAax/14T1z+2VHXYWi5i9qQ7rHfd8/etoKpfNLVFWwLEf2Rwvi//2LB/KNj/BjqNLA2Ze8gsOmTxad75F0QPWUncuoGpAAAAAElFTkSuQmCC",ai="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAAXNSR0IArs4c6QAAAIpJREFUKFNjzFjz352RgUFiegjjQgYsIGPd/2iGfwxvGMGM/wxL/v9nKJgZwjgRWW36mv/5jIwMExgZGRIYQRIwAWTF6GJgheiKQXyQScga4QqRFYPY6E4hXSGym3BaTZRnMtf8j//PyLAAX/AwMDLEMGZs+O/O8I9BZEYQ41JsAZ657n/8fyaGFwCSUmao4tQfEwAAAABJRU5ErkJggg==";function ba(t,e){return t==null||e==null?NaN:t<e?-1:t>e?1:t>=e?0:NaN}function q0(t,e){return t==null||e==null?NaN:e<t?-1:e>t?1:e>=t?0:NaN}function yu(t){let e,n,r;t.length!==2?(e=ba,n=(o,u)=>ba(t(o),u),r=(o,u)=>t(o)-u):(e=t===ba||t===q0?t:Q0,n=t,r=t);function a(o,u,c=0,f=o.length){if(c<f){if(e(u,u)!==0)return f;do{const l=c+f>>>1;n(o[l],u)<0?c=l+1:f=l}while(c<f)}return c}function s(o,u,c=0,f=o.length){if(c<f){if(e(u,u)!==0)return f;do{const l=c+f>>>1;n(o[l],u)<=0?c=l+1:f=l}while(c<f)}return c}function i(o,u,c=0,f=o.length){const l=a(o,u,c,f-1);return l>c&&r(o[l-1],u)>-r(o[l],u)?l-1:l}return{left:a,center:i,right:s}}function Q0(){return 0}function Z0(t){return t===null?NaN:+t}const J0=yu(ba),ep=J0.right;yu(Z0).center;const tp=ep,np=Math.sqrt(50),rp=Math.sqrt(10),ap=Math.sqrt(2);function Ka(t,e,n){const r=(e-t)/Math.max(0,n),a=Math.floor(Math.log10(r)),s=r/Math.pow(10,a),i=s>=np?10:s>=rp?5:s>=ap?2:1;let o,u,c;return a<0?(c=Math.pow(10,-a)/i,o=Math.round(t*c),u=Math.round(e*c),o/c<t&&++o,u/c>e&&--u,c=-c):(c=Math.pow(10,a)*i,o=Math.round(t/c),u=Math.round(e/c),o*c<t&&++o,u*c>e&&--u),u<o&&.5<=n&&n<2?Ka(t,e,n*2):[o,u,c]}function sp(t,e,n){if(e=+e,t=+t,n=+n,!(n>0))return[];if(t===e)return[t];const r=e<t,[a,s,i]=r?Ka(e,t,n):Ka(t,e,n);if(!(s>=a))return[];const o=s-a+1,u=new Array(o);if(r)if(i<0)for(let c=0;c<o;++c)u[c]=(s-c)/-i;else for(let c=0;c<o;++c)u[c]=(s-c)*i;else if(i<0)for(let c=0;c<o;++c)u[c]=(a+c)/-i;else for(let c=0;c<o;++c)u[c]=(a+c)*i;return u}function si(t,e,n){return e=+e,t=+t,n=+n,Ka(t,e,n)[2]}function ip(t,e,n){e=+e,t=+t,n=+n;const r=e<t,a=r?si(e,t,n):si(t,e,n);return(r?-1:1)*(a<0?1/-a:a)}function op(t,e){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(e).domain(t);break}return this}function Vi(t,e,n){t.prototype=e.prototype=n,n.constructor=t}function Tu(t,e){var n=Object.create(t.prototype);for(var r in e)n[r]=e[r];return n}function na(){}var Xr=.7,Pa=1/Xr,dr="\\s*([+-]?\\d+)\\s*",Ir="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",Qt="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",cp=/^#([0-9a-f]{3,8})$/,up=new RegExp(`^rgb\\(${dr},${dr},${dr}\\)$`),fp=new RegExp(`^rgb\\(${Qt},${Qt},${Qt}\\)$`),lp=new RegExp(`^rgba\\(${dr},${dr},${dr},${Ir}\\)$`),gp=new RegExp(`^rgba\\(${Qt},${Qt},${Qt},${Ir}\\)$`),pp=new RegExp(`^hsl\\(${Ir},${Qt},${Qt}\\)$`),hp=new RegExp(`^hsla\\(${Ir},${Qt},${Qt},${Ir}\\)$`),Lo={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};Vi(na,Yr,{copy(t){return Object.assign(new this.constructor,this,t)},displayable(){return this.rgb().displayable()},hex:Bo,formatHex:Bo,formatHex8:dp,formatHsl:vp,formatRgb:ko,toString:ko});function Bo(){return this.rgb().formatHex()}function dp(){return this.rgb().formatHex8()}function vp(){return xu(this).formatHsl()}function ko(){return this.rgb().formatRgb()}function Yr(t){var e,n;return t=(t+"").trim().toLowerCase(),(e=cp.exec(t))?(n=e[1].length,e=parseInt(e[1],16),n===6?Fo(e):n===3?new ht(e>>8&15|e>>4&240,e>>4&15|e&240,(e&15)<<4|e&15,1):n===8?ca(e>>24&255,e>>16&255,e>>8&255,(e&255)/255):n===4?ca(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|e&240,((e&15)<<4|e&15)/255):null):(e=up.exec(t))?new ht(e[1],e[2],e[3],1):(e=fp.exec(t))?new ht(e[1]*255/100,e[2]*255/100,e[3]*255/100,1):(e=lp.exec(t))?ca(e[1],e[2],e[3],e[4]):(e=gp.exec(t))?ca(e[1]*255/100,e[2]*255/100,e[3]*255/100,e[4]):(e=pp.exec(t))?No(e[1],e[2]/100,e[3]/100,1):(e=hp.exec(t))?No(e[1],e[2]/100,e[3]/100,e[4]):Lo.hasOwnProperty(t)?Fo(Lo[t]):t==="transparent"?new ht(NaN,NaN,NaN,0):null}function Fo(t){return new ht(t>>16&255,t>>8&255,t&255,1)}function ca(t,e,n,r){return r<=0&&(t=e=n=NaN),new ht(t,e,n,r)}function yp(t){return t instanceof na||(t=Yr(t)),t?(t=t.rgb(),new ht(t.r,t.g,t.b,t.opacity)):new ht}function ii(t,e,n,r){return arguments.length===1?yp(t):new ht(t,e,n,r??1)}function ht(t,e,n,r){this.r=+t,this.g=+e,this.b=+n,this.opacity=+r}Vi(ht,ii,Tu(na,{brighter(t){return t=t==null?Pa:Math.pow(Pa,t),new ht(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=t==null?Xr:Math.pow(Xr,t),new ht(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new ht(Kn(this.r),Kn(this.g),Kn(this.b),Xa(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Uo,formatHex:Uo,formatHex8:Tp,formatRgb:bo,toString:bo}));function Uo(){return`#${jn(this.r)}${jn(this.g)}${jn(this.b)}`}function Tp(){return`#${jn(this.r)}${jn(this.g)}${jn(this.b)}${jn((isNaN(this.opacity)?1:this.opacity)*255)}`}function bo(){const t=Xa(this.opacity);return`${t===1?"rgb(":"rgba("}${Kn(this.r)}, ${Kn(this.g)}, ${Kn(this.b)}${t===1?")":`, ${t})`}`}function Xa(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function Kn(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function jn(t){return t=Kn(t),(t<16?"0":"")+t.toString(16)}function No(t,e,n,r){return r<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new bt(t,e,n,r)}function xu(t){if(t instanceof bt)return new bt(t.h,t.s,t.l,t.opacity);if(t instanceof na||(t=Yr(t)),!t)return new bt;if(t instanceof bt)return t;t=t.rgb();var e=t.r/255,n=t.g/255,r=t.b/255,a=Math.min(e,n,r),s=Math.max(e,n,r),i=NaN,o=s-a,u=(s+a)/2;return o?(e===s?i=(n-r)/o+(n<r)*6:n===s?i=(r-e)/o+2:i=(e-n)/o+4,o/=u<.5?s+a:2-s-a,i*=60):o=u>0&&u<1?0:i,new bt(i,o,u,t.opacity)}function xp(t,e,n,r){return arguments.length===1?xu(t):new bt(t,e,n,r??1)}function bt(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}Vi(bt,xp,Tu(na,{brighter(t){return t=t==null?Pa:Math.pow(Pa,t),new bt(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=t==null?Xr:Math.pow(Xr,t),new bt(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=this.h%360+(this.h<0)*360,e=isNaN(t)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*e,a=2*n-r;return new ht(Rs(t>=240?t-240:t+120,a,r),Rs(t,a,r),Rs(t<120?t+240:t-120,a,r),this.opacity)},clamp(){return new bt(Go(this.h),ua(this.s),ua(this.l),Xa(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const t=Xa(this.opacity);return`${t===1?"hsl(":"hsla("}${Go(this.h)}, ${ua(this.s)*100}%, ${ua(this.l)*100}%${t===1?")":`, ${t})`}`}}));function Go(t){return t=(t||0)%360,t<0?t+360:t}function ua(t){return Math.max(0,Math.min(1,t||0))}function Rs(t,e,n){return(t<60?e+(n-e)*t/60:t<180?n:t<240?e+(n-e)*(240-t)/60:e)*255}const Li=t=>()=>t;function Sp(t,e){return function(n){return t+n*e}}function Cp(t,e,n){return t=Math.pow(t,n),e=Math.pow(e,n)-t,n=1/n,function(r){return Math.pow(t+r*e,n)}}function wp(t){return(t=+t)==1?Su:function(e,n){return n-e?Cp(e,n,t):Li(isNaN(e)?n:e)}}function Su(t,e){var n=e-t;return n?Sp(t,n):Li(isNaN(t)?e:t)}const $o=function t(e){var n=wp(e);function r(a,s){var i=n((a=ii(a)).r,(s=ii(s)).r),o=n(a.g,s.g),u=n(a.b,s.b),c=Su(a.opacity,s.opacity);return function(f){return a.r=i(f),a.g=o(f),a.b=u(f),a.opacity=c(f),a+""}}return r.gamma=t,r}(1);function _p(t,e){e||(e=[]);var n=t?Math.min(e.length,t.length):0,r=e.slice(),a;return function(s){for(a=0;a<n;++a)r[a]=t[a]*(1-s)+e[a]*s;return r}}function Ep(t){return ArrayBuffer.isView(t)&&!(t instanceof DataView)}function Rp(t,e){var n=e?e.length:0,r=t?Math.min(n,t.length):0,a=new Array(r),s=new Array(n),i;for(i=0;i<r;++i)a[i]=Bi(t[i],e[i]);for(;i<n;++i)s[i]=e[i];return function(o){for(i=0;i<r;++i)s[i]=a[i](o);return s}}function Op(t,e){var n=new Date;return t=+t,e=+e,function(r){return n.setTime(t*(1-r)+e*r),n}}function Ia(t,e){return t=+t,e=+e,function(n){return t*(1-n)+e*n}}function Dp(t,e){var n={},r={},a;(t===null||typeof t!="object")&&(t={}),(e===null||typeof e!="object")&&(e={});for(a in e)a in t?n[a]=Bi(t[a],e[a]):r[a]=e[a];return function(s){for(a in n)r[a]=n[a](s);return r}}var oi=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Os=new RegExp(oi.source,"g");function mp(t){return function(){return t}}function Mp(t){return function(e){return t(e)+""}}function Vp(t,e){var n=oi.lastIndex=Os.lastIndex=0,r,a,s,i=-1,o=[],u=[];for(t=t+"",e=e+"";(r=oi.exec(t))&&(a=Os.exec(e));)(s=a.index)>n&&(s=e.slice(n,s),o[i]?o[i]+=s:o[++i]=s),(r=r[0])===(a=a[0])?o[i]?o[i]+=a:o[++i]=a:(o[++i]=null,u.push({i,x:Ia(r,a)})),n=Os.lastIndex;return n<e.length&&(s=e.slice(n),o[i]?o[i]+=s:o[++i]=s),o.length<2?u[0]?Mp(u[0].x):mp(e):(e=u.length,function(c){for(var f=0,l;f<e;++f)o[(l=u[f]).i]=l.x(c);return o.join("")})}function Bi(t,e){var n=typeof e,r;return e==null||n==="boolean"?Li(e):(n==="number"?Ia:n==="string"?(r=Yr(e))?(e=r,$o):Vp:e instanceof Yr?$o:e instanceof Date?Op:Ep(e)?_p:Array.isArray(e)?Rp:typeof e.valueOf!="function"&&typeof e.toString!="function"||isNaN(e)?Dp:Ia)(t,e)}function Lp(t,e){return t=+t,e=+e,function(n){return Math.round(t*(1-n)+e*n)}}function Bp(t){return function(){return t}}function kp(t){return+t}var Wo=[0,1];function lr(t){return t}function ci(t,e){return(e-=t=+t)?function(n){return(n-t)/e}:Bp(isNaN(e)?NaN:.5)}function Fp(t,e){var n;return t>e&&(n=t,t=e,e=n),function(r){return Math.max(t,Math.min(e,r))}}function Up(t,e,n){var r=t[0],a=t[1],s=e[0],i=e[1];return a<r?(r=ci(a,r),s=n(i,s)):(r=ci(r,a),s=n(s,i)),function(o){return s(r(o))}}function bp(t,e,n){var r=Math.min(t.length,e.length)-1,a=new Array(r),s=new Array(r),i=-1;for(t[r]<t[0]&&(t=t.slice().reverse(),e=e.slice().reverse());++i<r;)a[i]=ci(t[i],t[i+1]),s[i]=n(e[i],e[i+1]);return function(o){var u=tp(t,o,1,r)-1;return s[u](a[u](o))}}function Np(t,e){return e.domain(t.domain()).range(t.range()).interpolate(t.interpolate()).clamp(t.clamp()).unknown(t.unknown())}function Gp(){var t=Wo,e=Wo,n=Bi,r,a,s,i=lr,o,u,c;function f(){var g=Math.min(t.length,e.length);return i!==lr&&(i=Fp(t[0],t[g-1])),o=g>2?bp:Up,u=c=null,l}function l(g){return g==null||isNaN(g=+g)?s:(u||(u=o(t.map(r),e,n)))(r(i(g)))}return l.invert=function(g){return i(a((c||(c=o(e,t.map(r),Ia)))(g)))},l.domain=function(g){return arguments.length?(t=Array.from(g,kp),f()):t.slice()},l.range=function(g){return arguments.length?(e=Array.from(g),f()):e.slice()},l.rangeRound=function(g){return e=Array.from(g),n=Lp,f()},l.clamp=function(g){return arguments.length?(i=g?!0:lr,f()):i!==lr},l.interpolate=function(g){return arguments.length?(n=g,f()):n},l.unknown=function(g){return arguments.length?(s=g,l):s},function(g,p){return r=g,a=p,f()}}function $p(){return Gp()(lr,lr)}function Wp(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)}function Ya(t,e){if((n=(t=e?t.toExponential(e-1):t.toExponential()).indexOf("e"))<0)return null;var n,r=t.slice(0,n);return[r.length>1?r[0]+r.slice(2):r,+t.slice(n+1)]}function Tr(t){return t=Ya(Math.abs(t)),t?t[1]:NaN}function zp(t,e){return function(n,r){for(var a=n.length,s=[],i=0,o=t[0],u=0;a>0&&o>0&&(u+o+1>r&&(o=Math.max(1,r-u)),s.push(n.substring(a-=o,a+o)),!((u+=o+1)>r));)o=t[i=(i+1)%t.length];return s.reverse().join(e)}}function Ap(t){return function(e){return e.replace(/[0-9]/g,function(n){return t[+n]})}}var Hp=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function qa(t){if(!(e=Hp.exec(t)))throw new Error("invalid format: "+t);var e;return new ki({fill:e[1],align:e[2],sign:e[3],symbol:e[4],zero:e[5],width:e[6],comma:e[7],precision:e[8]&&e[8].slice(1),trim:e[9],type:e[10]})}qa.prototype=ki.prototype;function ki(t){this.fill=t.fill===void 0?" ":t.fill+"",this.align=t.align===void 0?">":t.align+"",this.sign=t.sign===void 0?"-":t.sign+"",this.symbol=t.symbol===void 0?"":t.symbol+"",this.zero=!!t.zero,this.width=t.width===void 0?void 0:+t.width,this.comma=!!t.comma,this.precision=t.precision===void 0?void 0:+t.precision,this.trim=!!t.trim,this.type=t.type===void 0?"":t.type+""}ki.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===void 0?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision===void 0?"":"."+Math.max(0,this.precision|0))+(this.trim?"~":"")+this.type};function jp(t){e:for(var e=t.length,n=1,r=-1,a;n<e;++n)switch(t[n]){case".":r=a=n;break;case"0":r===0&&(r=n),a=n;break;default:if(!+t[n])break e;r>0&&(r=0);break}return r>0?t.slice(0,r)+t.slice(a+1):t}var Cu;function Kp(t,e){var n=Ya(t,e);if(!n)return t+"";var r=n[0],a=n[1],s=a-(Cu=Math.max(-8,Math.min(8,Math.floor(a/3)))*3)+1,i=r.length;return s===i?r:s>i?r+new Array(s-i+1).join("0"):s>0?r.slice(0,s)+"."+r.slice(s):"0."+new Array(1-s).join("0")+Ya(t,Math.max(0,e+s-1))[0]}function zo(t,e){var n=Ya(t,e);if(!n)return t+"";var r=n[0],a=n[1];return a<0?"0."+new Array(-a).join("0")+r:r.length>a+1?r.slice(0,a+1)+"."+r.slice(a+1):r+new Array(a-r.length+2).join("0")}const Ao={"%":(t,e)=>(t*100).toFixed(e),b:t=>Math.round(t).toString(2),c:t=>t+"",d:Wp,e:(t,e)=>t.toExponential(e),f:(t,e)=>t.toFixed(e),g:(t,e)=>t.toPrecision(e),o:t=>Math.round(t).toString(8),p:(t,e)=>zo(t*100,e),r:zo,s:Kp,X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function Ho(t){return t}var jo=Array.prototype.map,Ko=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function Pp(t){var e=t.grouping===void 0||t.thousands===void 0?Ho:zp(jo.call(t.grouping,Number),t.thousands+""),n=t.currency===void 0?"":t.currency[0]+"",r=t.currency===void 0?"":t.currency[1]+"",a=t.decimal===void 0?".":t.decimal+"",s=t.numerals===void 0?Ho:Ap(jo.call(t.numerals,String)),i=t.percent===void 0?"%":t.percent+"",o=t.minus===void 0?"−":t.minus+"",u=t.nan===void 0?"NaN":t.nan+"";function c(l){l=qa(l);var g=l.fill,p=l.align,y=l.sign,h=l.symbol,d=l.zero,x=l.width,S=l.comma,v=l.precision,T=l.trim,w=l.type;w==="n"?(S=!0,w="g"):Ao[w]||(v===void 0&&(v=12),T=!0,w="g"),(d||g==="0"&&p==="=")&&(d=!0,g="0",p="=");var C=h==="$"?n:h==="#"&&/[boxX]/.test(w)?"0"+w.toLowerCase():"",R=h==="$"?r:/[%p]/.test(w)?i:"",m=Ao[w],B=/[defgprs%]/.test(w);v=v===void 0?6:/[gprs]/.test(w)?Math.max(1,Math.min(21,v)):Math.max(0,Math.min(20,v));function M(D){var L=C,b=R,$,Q,Y;if(w==="c")b=m(D)+b,D="";else{D=+D;var Z=D<0||1/D<0;if(D=isNaN(D)?u:m(Math.abs(D),v),T&&(D=jp(D)),Z&&+D==0&&y!=="+"&&(Z=!1),L=(Z?y==="("?y:o:y==="-"||y==="("?"":y)+L,b=(w==="s"?Ko[8+Cu/3]:"")+b+(Z&&y==="("?")":""),B){for($=-1,Q=D.length;++$<Q;)if(Y=D.charCodeAt($),48>Y||Y>57){b=(Y===46?a+D.slice($+1):D.slice($))+b,D=D.slice(0,$);break}}}S&&!d&&(D=e(D,1/0));var se=L.length+D.length+b.length,W=se<x?new Array(x-se+1).join(g):"";switch(S&&d&&(D=e(W+D,W.length?x-b.length:1/0),W=""),p){case"<":D=L+D+b+W;break;case"=":D=L+W+D+b;break;case"^":D=W.slice(0,se=W.length>>1)+L+D+b+W.slice(se);break;default:D=W+L+D+b;break}return s(D)}return M.toString=function(){return l+""},M}function f(l,g){var p=c((l=qa(l),l.type="f",l)),y=Math.max(-8,Math.min(8,Math.floor(Tr(g)/3)))*3,h=Math.pow(10,-y),d=Ko[8+y/3];return function(x){return p(h*x)+d}}return{format:c,formatPrefix:f}}var fa,wu,_u;Eu({thousands:",",grouping:[3],currency:["$",""]});function Eu(t){return fa=Pp(t),wu=fa.format,_u=fa.formatPrefix,fa}function Xp(t){return Math.max(0,-Tr(Math.abs(t)))}function Ip(t,e){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(Tr(e)/3)))*3-Tr(Math.abs(t)))}function Yp(t,e){return t=Math.abs(t),e=Math.abs(e)-t,Math.max(0,Tr(e)-Tr(t))+1}function qp(t,e,n,r){var a=ip(t,e,n),s;switch(r=qa(r??",f"),r.type){case"s":{var i=Math.max(Math.abs(t),Math.abs(e));return r.precision==null&&!isNaN(s=Ip(a,i))&&(r.precision=s),_u(r,i)}case"":case"e":case"g":case"p":case"r":{r.precision==null&&!isNaN(s=Yp(a,Math.max(Math.abs(t),Math.abs(e))))&&(r.precision=s-(r.type==="e"));break}case"f":case"%":{r.precision==null&&!isNaN(s=Xp(a))&&(r.precision=s-(r.type==="%")*2);break}}return wu(r)}function Qp(t){var e=t.domain;return t.ticks=function(n){var r=e();return sp(r[0],r[r.length-1],n??10)},t.tickFormat=function(n,r){var a=e();return qp(a[0],a[a.length-1],n??10,r)},t.nice=function(n){n==null&&(n=10);var r=e(),a=0,s=r.length-1,i=r[a],o=r[s],u,c,f=10;for(o<i&&(c=i,i=o,o=c,c=a,a=s,s=c);f-- >0;){if(c=si(i,o,n),c===u)return r[a]=i,r[s]=o,e(r);if(c>0)i=Math.floor(i/c)*c,o=Math.ceil(o/c)*c;else if(c<0)i=Math.ceil(i*c)/c,o=Math.floor(o*c)/c;else break;u=c}return t},t}function ps(){var t=$p();return t.copy=function(){return Np(t,ps())},op.apply(t,arguments),Qp(t)}var he=1e-6,Ye=typeof Float32Array<"u"?Float32Array:Array;Math.hypot||(Math.hypot=function(){for(var t=0,e=arguments.length;e--;)t+=arguments[e]*arguments[e];return Math.sqrt(t)});function Ru(){var t=new Ye(9);return Ye!=Float32Array&&(t[1]=0,t[2]=0,t[3]=0,t[5]=0,t[6]=0,t[7]=0),t[0]=1,t[4]=1,t[8]=1,t}function Fi(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[4],t[4]=e[5],t[5]=e[6],t[6]=e[8],t[7]=e[9],t[8]=e[10],t}function Zp(t){var e=new Ye(9);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e}function Jp(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t}function eh(t,e,n,r,a,s,i,o,u){var c=new Ye(9);return c[0]=t,c[1]=e,c[2]=n,c[3]=r,c[4]=a,c[5]=s,c[6]=i,c[7]=o,c[8]=u,c}function th(t,e,n,r,a,s,i,o,u,c){return t[0]=e,t[1]=n,t[2]=r,t[3]=a,t[4]=s,t[5]=i,t[6]=o,t[7]=u,t[8]=c,t}function Qn(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t}function Ou(t,e){if(t===e){var n=e[1],r=e[2],a=e[5];t[1]=e[3],t[2]=e[6],t[3]=n,t[5]=e[7],t[6]=r,t[7]=a}else t[0]=e[0],t[1]=e[3],t[2]=e[6],t[3]=e[1],t[4]=e[4],t[5]=e[7],t[6]=e[2],t[7]=e[5],t[8]=e[8];return t}function Ui(t,e){var n=e[0],r=e[1],a=e[2],s=e[3],i=e[4],o=e[5],u=e[6],c=e[7],f=e[8],l=f*i-o*c,g=-f*s+o*u,p=c*s-i*u,y=n*l+r*g+a*p;return y?(y=1/y,t[0]=l*y,t[1]=(-f*r+a*c)*y,t[2]=(o*r-a*i)*y,t[3]=g*y,t[4]=(f*n-a*u)*y,t[5]=(-o*n+a*s)*y,t[6]=p*y,t[7]=(-c*n+r*u)*y,t[8]=(i*n-r*s)*y,t):null}function nh(t,e){var n=e[0],r=e[1],a=e[2],s=e[3],i=e[4],o=e[5],u=e[6],c=e[7],f=e[8];return t[0]=i*f-o*c,t[1]=a*c-r*f,t[2]=r*o-a*i,t[3]=o*u-s*f,t[4]=n*f-a*u,t[5]=a*s-n*o,t[6]=s*c-i*u,t[7]=r*u-n*c,t[8]=n*i-r*s,t}function rh(t){var e=t[0],n=t[1],r=t[2],a=t[3],s=t[4],i=t[5],o=t[6],u=t[7],c=t[8];return e*(c*s-i*u)+n*(-c*a+i*o)+r*(u*a-s*o)}function Du(t,e,n){var r=e[0],a=e[1],s=e[2],i=e[3],o=e[4],u=e[5],c=e[6],f=e[7],l=e[8],g=n[0],p=n[1],y=n[2],h=n[3],d=n[4],x=n[5],S=n[6],v=n[7],T=n[8];return t[0]=g*r+p*i+y*c,t[1]=g*a+p*o+y*f,t[2]=g*s+p*u+y*l,t[3]=h*r+d*i+x*c,t[4]=h*a+d*o+x*f,t[5]=h*s+d*u+x*l,t[6]=S*r+v*i+T*c,t[7]=S*a+v*o+T*f,t[8]=S*s+v*u+T*l,t}function ah(t,e,n){var r=e[0],a=e[1],s=e[2],i=e[3],o=e[4],u=e[5],c=e[6],f=e[7],l=e[8],g=n[0],p=n[1];return t[0]=r,t[1]=a,t[2]=s,t[3]=i,t[4]=o,t[5]=u,t[6]=g*r+p*i+c,t[7]=g*a+p*o+f,t[8]=g*s+p*u+l,t}function sh(t,e,n){var r=e[0],a=e[1],s=e[2],i=e[3],o=e[4],u=e[5],c=e[6],f=e[7],l=e[8],g=Math.sin(n),p=Math.cos(n);return t[0]=p*r+g*i,t[1]=p*a+g*o,t[2]=p*s+g*u,t[3]=p*i-g*r,t[4]=p*o-g*a,t[5]=p*u-g*s,t[6]=c,t[7]=f,t[8]=l,t}function ih(t,e,n){var r=n[0],a=n[1];return t[0]=r*e[0],t[1]=r*e[1],t[2]=r*e[2],t[3]=a*e[3],t[4]=a*e[4],t[5]=a*e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t}function oh(t,e){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=1,t[5]=0,t[6]=e[0],t[7]=e[1],t[8]=1,t}function ch(t,e){var n=Math.sin(e),r=Math.cos(e);return t[0]=r,t[1]=n,t[2]=0,t[3]=-n,t[4]=r,t[5]=0,t[6]=0,t[7]=0,t[8]=1,t}function uh(t,e){return t[0]=e[0],t[1]=0,t[2]=0,t[3]=0,t[4]=e[1],t[5]=0,t[6]=0,t[7]=0,t[8]=1,t}function fh(t,e){return t[0]=e[0],t[1]=e[1],t[2]=0,t[3]=e[2],t[4]=e[3],t[5]=0,t[6]=e[4],t[7]=e[5],t[8]=1,t}function lh(t,e){var n=e[0],r=e[1],a=e[2],s=e[3],i=n+n,o=r+r,u=a+a,c=n*i,f=r*i,l=r*o,g=a*i,p=a*o,y=a*u,h=s*i,d=s*o,x=s*u;return t[0]=1-l-y,t[3]=f-x,t[6]=g+d,t[1]=f+x,t[4]=1-c-y,t[7]=p-h,t[2]=g-d,t[5]=p+h,t[8]=1-c-l,t}function gh(t,e){var n=e[0],r=e[1],a=e[2],s=e[3],i=e[4],o=e[5],u=e[6],c=e[7],f=e[8],l=e[9],g=e[10],p=e[11],y=e[12],h=e[13],d=e[14],x=e[15],S=n*o-r*i,v=n*u-a*i,T=n*c-s*i,w=r*u-a*o,C=r*c-s*o,R=a*c-s*u,m=f*h-l*y,B=f*d-g*y,M=f*x-p*y,D=l*d-g*h,L=l*x-p*h,b=g*x-p*d,$=S*b-v*L+T*D+w*M-C*B+R*m;return $?($=1/$,t[0]=(o*b-u*L+c*D)*$,t[1]=(u*M-i*b-c*B)*$,t[2]=(i*L-o*M+c*m)*$,t[3]=(a*L-r*b-s*D)*$,t[4]=(n*b-a*M+s*B)*$,t[5]=(r*M-n*L-s*m)*$,t[6]=(h*R-d*C+x*w)*$,t[7]=(d*T-y*R-x*v)*$,t[8]=(y*C-h*T+x*S)*$,t):null}function ph(t,e,n){return t[0]=2/e,t[1]=0,t[2]=0,t[3]=0,t[4]=-2/n,t[5]=0,t[6]=-1,t[7]=1,t[8]=1,t}function hh(t){return"mat3("+t[0]+", "+t[1]+", "+t[2]+", "+t[3]+", "+t[4]+", "+t[5]+", "+t[6]+", "+t[7]+", "+t[8]+")"}function dh(t){return Math.hypot(t[0],t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8])}function vh(t,e,n){return t[0]=e[0]+n[0],t[1]=e[1]+n[1],t[2]=e[2]+n[2],t[3]=e[3]+n[3],t[4]=e[4]+n[4],t[5]=e[5]+n[5],t[6]=e[6]+n[6],t[7]=e[7]+n[7],t[8]=e[8]+n[8],t}function mu(t,e,n){return t[0]=e[0]-n[0],t[1]=e[1]-n[1],t[2]=e[2]-n[2],t[3]=e[3]-n[3],t[4]=e[4]-n[4],t[5]=e[5]-n[5],t[6]=e[6]-n[6],t[7]=e[7]-n[7],t[8]=e[8]-n[8],t}function yh(t,e,n){return t[0]=e[0]*n,t[1]=e[1]*n,t[2]=e[2]*n,t[3]=e[3]*n,t[4]=e[4]*n,t[5]=e[5]*n,t[6]=e[6]*n,t[7]=e[7]*n,t[8]=e[8]*n,t}function Th(t,e,n,r){return t[0]=e[0]+n[0]*r,t[1]=e[1]+n[1]*r,t[2]=e[2]+n[2]*r,t[3]=e[3]+n[3]*r,t[4]=e[4]+n[4]*r,t[5]=e[5]+n[5]*r,t[6]=e[6]+n[6]*r,t[7]=e[7]+n[7]*r,t[8]=e[8]+n[8]*r,t}function xh(t,e){return t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]&&t[3]===e[3]&&t[4]===e[4]&&t[5]===e[5]&&t[6]===e[6]&&t[7]===e[7]&&t[8]===e[8]}function Sh(t,e){var n=t[0],r=t[1],a=t[2],s=t[3],i=t[4],o=t[5],u=t[6],c=t[7],f=t[8],l=e[0],g=e[1],p=e[2],y=e[3],h=e[4],d=e[5],x=e[6],S=e[7],v=e[8];return Math.abs(n-l)<=he*Math.max(1,Math.abs(n),Math.abs(l))&&Math.abs(r-g)<=he*Math.max(1,Math.abs(r),Math.abs(g))&&Math.abs(a-p)<=he*Math.max(1,Math.abs(a),Math.abs(p))&&Math.abs(s-y)<=he*Math.max(1,Math.abs(s),Math.abs(y))&&Math.abs(i-h)<=he*Math.max(1,Math.abs(i),Math.abs(h))&&Math.abs(o-d)<=he*Math.max(1,Math.abs(o),Math.abs(d))&&Math.abs(u-x)<=he*Math.max(1,Math.abs(u),Math.abs(x))&&Math.abs(c-S)<=he*Math.max(1,Math.abs(c),Math.abs(S))&&Math.abs(f-v)<=he*Math.max(1,Math.abs(f),Math.abs(v))}var Ch=Du,wh=mu;const _h=Object.freeze(Object.defineProperty({__proto__:null,add:vh,adjoint:nh,clone:Zp,copy:Jp,create:Ru,determinant:rh,equals:Sh,exactEquals:xh,frob:dh,fromMat2d:fh,fromMat4:Fi,fromQuat:lh,fromRotation:ch,fromScaling:uh,fromTranslation:oh,fromValues:eh,identity:Qn,invert:Ui,mul:Ch,multiply:Du,multiplyScalar:yh,multiplyScalarAndAdd:Th,normalFromMat4:gh,projection:ph,rotate:sh,scale:ih,set:th,str:hh,sub:wh,subtract:mu,translate:ah,transpose:Ou},Symbol.toStringTag,{value:"Module"}));function bi(){var t=new Ye(16);return Ye!=Float32Array&&(t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0),t[0]=1,t[5]=1,t[10]=1,t[15]=1,t}function Eh(t){var e=new Ye(16);return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}function nt(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t}function Rh(t,e,n,r,a,s,i,o,u,c,f,l,g,p,y,h){var d=new Ye(16);return d[0]=t,d[1]=e,d[2]=n,d[3]=r,d[4]=a,d[5]=s,d[6]=i,d[7]=o,d[8]=u,d[9]=c,d[10]=f,d[11]=l,d[12]=g,d[13]=p,d[14]=y,d[15]=h,d}function Oh(t,e,n,r,a,s,i,o,u,c,f,l,g,p,y,h,d){return t[0]=e,t[1]=n,t[2]=r,t[3]=a,t[4]=s,t[5]=i,t[6]=o,t[7]=u,t[8]=c,t[9]=f,t[10]=l,t[11]=g,t[12]=p,t[13]=y,t[14]=h,t[15]=d,t}function le(t){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function Ve(t,e){if(t===e){var n=e[1],r=e[2],a=e[3],s=e[6],i=e[7],o=e[11];t[1]=e[4],t[2]=e[8],t[3]=e[12],t[4]=n,t[6]=e[9],t[7]=e[13],t[8]=r,t[9]=s,t[11]=e[14],t[12]=a,t[13]=i,t[14]=o}else t[0]=e[0],t[1]=e[4],t[2]=e[8],t[3]=e[12],t[4]=e[1],t[5]=e[5],t[6]=e[9],t[7]=e[13],t[8]=e[2],t[9]=e[6],t[10]=e[10],t[11]=e[14],t[12]=e[3],t[13]=e[7],t[14]=e[11],t[15]=e[15];return t}function dt(t,e){var n=e[0],r=e[1],a=e[2],s=e[3],i=e[4],o=e[5],u=e[6],c=e[7],f=e[8],l=e[9],g=e[10],p=e[11],y=e[12],h=e[13],d=e[14],x=e[15],S=n*o-r*i,v=n*u-a*i,T=n*c-s*i,w=r*u-a*o,C=r*c-s*o,R=a*c-s*u,m=f*h-l*y,B=f*d-g*y,M=f*x-p*y,D=l*d-g*h,L=l*x-p*h,b=g*x-p*d,$=S*b-v*L+T*D+w*M-C*B+R*m;return $?($=1/$,t[0]=(o*b-u*L+c*D)*$,t[1]=(a*L-r*b-s*D)*$,t[2]=(h*R-d*C+x*w)*$,t[3]=(g*C-l*R-p*w)*$,t[4]=(u*M-i*b-c*B)*$,t[5]=(n*b-a*M+s*B)*$,t[6]=(d*T-y*R-x*v)*$,t[7]=(f*R-g*T+p*v)*$,t[8]=(i*L-o*M+c*m)*$,t[9]=(r*M-n*L-s*m)*$,t[10]=(y*C-h*T+x*S)*$,t[11]=(l*T-f*C-p*S)*$,t[12]=(o*B-i*D-u*m)*$,t[13]=(n*D-r*B+a*m)*$,t[14]=(h*v-y*w-d*S)*$,t[15]=(f*w-l*v+g*S)*$,t):null}function Dh(t,e){var n=e[0],r=e[1],a=e[2],s=e[3],i=e[4],o=e[5],u=e[6],c=e[7],f=e[8],l=e[9],g=e[10],p=e[11],y=e[12],h=e[13],d=e[14],x=e[15];return t[0]=o*(g*x-p*d)-l*(u*x-c*d)+h*(u*p-c*g),t[1]=-(r*(g*x-p*d)-l*(a*x-s*d)+h*(a*p-s*g)),t[2]=r*(u*x-c*d)-o*(a*x-s*d)+h*(a*c-s*u),t[3]=-(r*(u*p-c*g)-o*(a*p-s*g)+l*(a*c-s*u)),t[4]=-(i*(g*x-p*d)-f*(u*x-c*d)+y*(u*p-c*g)),t[5]=n*(g*x-p*d)-f*(a*x-s*d)+y*(a*p-s*g),t[6]=-(n*(u*x-c*d)-i*(a*x-s*d)+y*(a*c-s*u)),t[7]=n*(u*p-c*g)-i*(a*p-s*g)+f*(a*c-s*u),t[8]=i*(l*x-p*h)-f*(o*x-c*h)+y*(o*p-c*l),t[9]=-(n*(l*x-p*h)-f*(r*x-s*h)+y*(r*p-s*l)),t[10]=n*(o*x-c*h)-i*(r*x-s*h)+y*(r*c-s*o),t[11]=-(n*(o*p-c*l)-i*(r*p-s*l)+f*(r*c-s*o)),t[12]=-(i*(l*d-g*h)-f*(o*d-u*h)+y*(o*g-u*l)),t[13]=n*(l*d-g*h)-f*(r*d-a*h)+y*(r*g-a*l),t[14]=-(n*(o*d-u*h)-i*(r*d-a*h)+y*(r*u-a*o)),t[15]=n*(o*g-u*l)-i*(r*g-a*l)+f*(r*u-a*o),t}function mh(t){var e=t[0],n=t[1],r=t[2],a=t[3],s=t[4],i=t[5],o=t[6],u=t[7],c=t[8],f=t[9],l=t[10],g=t[11],p=t[12],y=t[13],h=t[14],d=t[15],x=e*i-n*s,S=e*o-r*s,v=e*u-a*s,T=n*o-r*i,w=n*u-a*i,C=r*u-a*o,R=c*y-f*p,m=c*h-l*p,B=c*d-g*p,M=f*h-l*y,D=f*d-g*y,L=l*d-g*h;return x*L-S*D+v*M+T*B-w*m+C*R}function ft(t,e,n){var r=e[0],a=e[1],s=e[2],i=e[3],o=e[4],u=e[5],c=e[6],f=e[7],l=e[8],g=e[9],p=e[10],y=e[11],h=e[12],d=e[13],x=e[14],S=e[15],v=n[0],T=n[1],w=n[2],C=n[3];return t[0]=v*r+T*o+w*l+C*h,t[1]=v*a+T*u+w*g+C*d,t[2]=v*s+T*c+w*p+C*x,t[3]=v*i+T*f+w*y+C*S,v=n[4],T=n[5],w=n[6],C=n[7],t[4]=v*r+T*o+w*l+C*h,t[5]=v*a+T*u+w*g+C*d,t[6]=v*s+T*c+w*p+C*x,t[7]=v*i+T*f+w*y+C*S,v=n[8],T=n[9],w=n[10],C=n[11],t[8]=v*r+T*o+w*l+C*h,t[9]=v*a+T*u+w*g+C*d,t[10]=v*s+T*c+w*p+C*x,t[11]=v*i+T*f+w*y+C*S,v=n[12],T=n[13],w=n[14],C=n[15],t[12]=v*r+T*o+w*l+C*h,t[13]=v*a+T*u+w*g+C*d,t[14]=v*s+T*c+w*p+C*x,t[15]=v*i+T*f+w*y+C*S,t}function We(t,e,n){var r=n[0],a=n[1],s=n[2],i,o,u,c,f,l,g,p,y,h,d,x;return e===t?(t[12]=e[0]*r+e[4]*a+e[8]*s+e[12],t[13]=e[1]*r+e[5]*a+e[9]*s+e[13],t[14]=e[2]*r+e[6]*a+e[10]*s+e[14],t[15]=e[3]*r+e[7]*a+e[11]*s+e[15]):(i=e[0],o=e[1],u=e[2],c=e[3],f=e[4],l=e[5],g=e[6],p=e[7],y=e[8],h=e[9],d=e[10],x=e[11],t[0]=i,t[1]=o,t[2]=u,t[3]=c,t[4]=f,t[5]=l,t[6]=g,t[7]=p,t[8]=y,t[9]=h,t[10]=d,t[11]=x,t[12]=i*r+f*a+y*s+e[12],t[13]=o*r+l*a+h*s+e[13],t[14]=u*r+g*a+d*s+e[14],t[15]=c*r+p*a+x*s+e[15]),t}function xr(t,e,n){var r=n[0],a=n[1],s=n[2];return t[0]=e[0]*r,t[1]=e[1]*r,t[2]=e[2]*r,t[3]=e[3]*r,t[4]=e[4]*a,t[5]=e[5]*a,t[6]=e[6]*a,t[7]=e[7]*a,t[8]=e[8]*s,t[9]=e[9]*s,t[10]=e[10]*s,t[11]=e[11]*s,t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t}function Xt(t,e,n,r){var a=r[0],s=r[1],i=r[2],o=Math.hypot(a,s,i),u,c,f,l,g,p,y,h,d,x,S,v,T,w,C,R,m,B,M,D,L,b,$,Q;return o<he?null:(o=1/o,a*=o,s*=o,i*=o,u=Math.sin(n),c=Math.cos(n),f=1-c,l=e[0],g=e[1],p=e[2],y=e[3],h=e[4],d=e[5],x=e[6],S=e[7],v=e[8],T=e[9],w=e[10],C=e[11],R=a*a*f+c,m=s*a*f+i*u,B=i*a*f-s*u,M=a*s*f-i*u,D=s*s*f+c,L=i*s*f+a*u,b=a*i*f+s*u,$=s*i*f-a*u,Q=i*i*f+c,t[0]=l*R+h*m+v*B,t[1]=g*R+d*m+T*B,t[2]=p*R+x*m+w*B,t[3]=y*R+S*m+C*B,t[4]=l*M+h*D+v*L,t[5]=g*M+d*D+T*L,t[6]=p*M+x*D+w*L,t[7]=y*M+S*D+C*L,t[8]=l*b+h*$+v*Q,t[9]=g*b+d*$+T*Q,t[10]=p*b+x*$+w*Q,t[11]=y*b+S*$+C*Q,e!==t&&(t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]),t)}function Mu(t,e,n){var r=Math.sin(n),a=Math.cos(n),s=e[4],i=e[5],o=e[6],u=e[7],c=e[8],f=e[9],l=e[10],g=e[11];return e!==t&&(t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]),t[4]=s*a+c*r,t[5]=i*a+f*r,t[6]=o*a+l*r,t[7]=u*a+g*r,t[8]=c*a-s*r,t[9]=f*a-i*r,t[10]=l*a-o*r,t[11]=g*a-u*r,t}function Vu(t,e,n){var r=Math.sin(n),a=Math.cos(n),s=e[0],i=e[1],o=e[2],u=e[3],c=e[8],f=e[9],l=e[10],g=e[11];return e!==t&&(t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]),t[0]=s*a-c*r,t[1]=i*a-f*r,t[2]=o*a-l*r,t[3]=u*a-g*r,t[8]=s*r+c*a,t[9]=i*r+f*a,t[10]=o*r+l*a,t[11]=u*r+g*a,t}function Lu(t,e,n){var r=Math.sin(n),a=Math.cos(n),s=e[0],i=e[1],o=e[2],u=e[3],c=e[4],f=e[5],l=e[6],g=e[7];return e!==t&&(t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15]),t[0]=s*a+c*r,t[1]=i*a+f*r,t[2]=o*a+l*r,t[3]=u*a+g*r,t[4]=c*a-s*r,t[5]=f*a-i*r,t[6]=l*a-o*r,t[7]=g*a-u*r,t}function Bu(t,e){return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=e[0],t[13]=e[1],t[14]=e[2],t[15]=1,t}function ku(t,e){return t[0]=e[0],t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=e[1],t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=e[2],t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function Mh(t,e,n){var r=n[0],a=n[1],s=n[2],i=Math.hypot(r,a,s),o,u,c;return i<he?null:(i=1/i,r*=i,a*=i,s*=i,o=Math.sin(e),u=Math.cos(e),c=1-u,t[0]=r*r*c+u,t[1]=a*r*c+s*o,t[2]=s*r*c-a*o,t[3]=0,t[4]=r*a*c-s*o,t[5]=a*a*c+u,t[6]=s*a*c+r*o,t[7]=0,t[8]=r*s*c+a*o,t[9]=a*s*c-r*o,t[10]=s*s*c+u,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t)}function Vh(t,e){var n=Math.sin(e),r=Math.cos(e);return t[0]=1,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=r,t[6]=n,t[7]=0,t[8]=0,t[9]=-n,t[10]=r,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function Lh(t,e){var n=Math.sin(e),r=Math.cos(e);return t[0]=r,t[1]=0,t[2]=-n,t[3]=0,t[4]=0,t[5]=1,t[6]=0,t[7]=0,t[8]=n,t[9]=0,t[10]=r,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function Bh(t,e){var n=Math.sin(e),r=Math.cos(e);return t[0]=r,t[1]=n,t[2]=0,t[3]=0,t[4]=-n,t[5]=r,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=1,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function Fu(t,e,n){var r=e[0],a=e[1],s=e[2],i=e[3],o=r+r,u=a+a,c=s+s,f=r*o,l=r*u,g=r*c,p=a*u,y=a*c,h=s*c,d=i*o,x=i*u,S=i*c;return t[0]=1-(p+h),t[1]=l+S,t[2]=g-x,t[3]=0,t[4]=l-S,t[5]=1-(f+h),t[6]=y+d,t[7]=0,t[8]=g+x,t[9]=y-d,t[10]=1-(f+p),t[11]=0,t[12]=n[0],t[13]=n[1],t[14]=n[2],t[15]=1,t}function kh(t,e){var n=new Ye(3),r=-e[0],a=-e[1],s=-e[2],i=e[3],o=e[4],u=e[5],c=e[6],f=e[7],l=r*r+a*a+s*s+i*i;return l>0?(n[0]=(o*i+f*r+u*s-c*a)*2/l,n[1]=(u*i+f*a+c*r-o*s)*2/l,n[2]=(c*i+f*s+o*a-u*r)*2/l):(n[0]=(o*i+f*r+u*s-c*a)*2,n[1]=(u*i+f*a+c*r-o*s)*2,n[2]=(c*i+f*s+o*a-u*r)*2),Fu(t,e,n),t}function Fh(t,e){return t[0]=e[12],t[1]=e[13],t[2]=e[14],t}function Uu(t,e){var n=e[0],r=e[1],a=e[2],s=e[4],i=e[5],o=e[6],u=e[8],c=e[9],f=e[10];return t[0]=Math.hypot(n,r,a),t[1]=Math.hypot(s,i,o),t[2]=Math.hypot(u,c,f),t}function bu(t,e){var n=new Ye(3);Uu(n,e);var r=1/n[0],a=1/n[1],s=1/n[2],i=e[0]*r,o=e[1]*a,u=e[2]*s,c=e[4]*r,f=e[5]*a,l=e[6]*s,g=e[8]*r,p=e[9]*a,y=e[10]*s,h=i+f+y,d=0;return h>0?(d=Math.sqrt(h+1)*2,t[3]=.25*d,t[0]=(l-p)/d,t[1]=(g-u)/d,t[2]=(o-c)/d):i>f&&i>y?(d=Math.sqrt(1+i-f-y)*2,t[3]=(l-p)/d,t[0]=.25*d,t[1]=(o+c)/d,t[2]=(g+u)/d):f>y?(d=Math.sqrt(1+f-i-y)*2,t[3]=(g-u)/d,t[0]=(o+c)/d,t[1]=.25*d,t[2]=(l+p)/d):(d=Math.sqrt(1+y-i-f)*2,t[3]=(o-c)/d,t[0]=(g+u)/d,t[1]=(l+p)/d,t[2]=.25*d),t}function Nu(t,e,n,r){var a=e[0],s=e[1],i=e[2],o=e[3],u=a+a,c=s+s,f=i+i,l=a*u,g=a*c,p=a*f,y=s*c,h=s*f,d=i*f,x=o*u,S=o*c,v=o*f,T=r[0],w=r[1],C=r[2];return t[0]=(1-(y+d))*T,t[1]=(g+v)*T,t[2]=(p-S)*T,t[3]=0,t[4]=(g-v)*w,t[5]=(1-(l+d))*w,t[6]=(h+x)*w,t[7]=0,t[8]=(p+S)*C,t[9]=(h-x)*C,t[10]=(1-(l+y))*C,t[11]=0,t[12]=n[0],t[13]=n[1],t[14]=n[2],t[15]=1,t}function Uh(t,e,n,r,a){var s=e[0],i=e[1],o=e[2],u=e[3],c=s+s,f=i+i,l=o+o,g=s*c,p=s*f,y=s*l,h=i*f,d=i*l,x=o*l,S=u*c,v=u*f,T=u*l,w=r[0],C=r[1],R=r[2],m=a[0],B=a[1],M=a[2],D=(1-(h+x))*w,L=(p+T)*w,b=(y-v)*w,$=(p-T)*C,Q=(1-(g+x))*C,Y=(d+S)*C,Z=(y+v)*R,se=(d-S)*R,W=(1-(g+h))*R;return t[0]=D,t[1]=L,t[2]=b,t[3]=0,t[4]=$,t[5]=Q,t[6]=Y,t[7]=0,t[8]=Z,t[9]=se,t[10]=W,t[11]=0,t[12]=n[0]+m-(D*m+$*B+Z*M),t[13]=n[1]+B-(L*m+Q*B+se*M),t[14]=n[2]+M-(b*m+Y*B+W*M),t[15]=1,t}function Ni(t,e){var n=e[0],r=e[1],a=e[2],s=e[3],i=n+n,o=r+r,u=a+a,c=n*i,f=r*i,l=r*o,g=a*i,p=a*o,y=a*u,h=s*i,d=s*o,x=s*u;return t[0]=1-l-y,t[1]=f+x,t[2]=g-d,t[3]=0,t[4]=f-x,t[5]=1-c-y,t[6]=p+h,t[7]=0,t[8]=g+d,t[9]=p-h,t[10]=1-c-l,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,t}function bh(t,e,n,r,a,s,i){var o=1/(n-e),u=1/(a-r),c=1/(s-i);return t[0]=s*2*o,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=s*2*u,t[6]=0,t[7]=0,t[8]=(n+e)*o,t[9]=(a+r)*u,t[10]=(i+s)*c,t[11]=-1,t[12]=0,t[13]=0,t[14]=i*s*2*c,t[15]=0,t}function Gu(t,e,n,r,a){var s=1/Math.tan(e/2),i;return t[0]=s/n,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=s,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[11]=-1,t[12]=0,t[13]=0,t[15]=0,a!=null&&a!==1/0?(i=1/(r-a),t[10]=(a+r)*i,t[14]=2*a*r*i):(t[10]=-1,t[14]=-2*r),t}var Nh=Gu;function Gh(t,e,n,r,a){var s=1/Math.tan(e/2),i;return t[0]=s/n,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=s,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[11]=-1,t[12]=0,t[13]=0,t[15]=0,a!=null&&a!==1/0?(i=1/(r-a),t[10]=a*i,t[14]=a*r*i):(t[10]=-1,t[14]=-r),t}function $h(t,e,n,r){var a=Math.tan(e.upDegrees*Math.PI/180),s=Math.tan(e.downDegrees*Math.PI/180),i=Math.tan(e.leftDegrees*Math.PI/180),o=Math.tan(e.rightDegrees*Math.PI/180),u=2/(i+o),c=2/(a+s);return t[0]=u,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=c,t[6]=0,t[7]=0,t[8]=-((i-o)*u*.5),t[9]=(a-s)*c*.5,t[10]=r/(n-r),t[11]=-1,t[12]=0,t[13]=0,t[14]=r*n/(n-r),t[15]=0,t}function $u(t,e,n,r,a,s,i){var o=1/(e-n),u=1/(r-a),c=1/(s-i);return t[0]=-2*o,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=-2*u,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=2*c,t[11]=0,t[12]=(e+n)*o,t[13]=(a+r)*u,t[14]=(i+s)*c,t[15]=1,t}var Wu=$u;function Wh(t,e,n,r,a,s,i){var o=1/(e-n),u=1/(r-a),c=1/(s-i);return t[0]=-2*o,t[1]=0,t[2]=0,t[3]=0,t[4]=0,t[5]=-2*u,t[6]=0,t[7]=0,t[8]=0,t[9]=0,t[10]=c,t[11]=0,t[12]=(e+n)*o,t[13]=(a+r)*u,t[14]=s*c,t[15]=1,t}function zu(t,e,n,r){var a,s,i,o,u,c,f,l,g,p,y=e[0],h=e[1],d=e[2],x=r[0],S=r[1],v=r[2],T=n[0],w=n[1],C=n[2];return Math.abs(y-T)<he&&Math.abs(h-w)<he&&Math.abs(d-C)<he?le(t):(f=y-T,l=h-w,g=d-C,p=1/Math.hypot(f,l,g),f*=p,l*=p,g*=p,a=S*g-v*l,s=v*f-x*g,i=x*l-S*f,p=Math.hypot(a,s,i),p?(p=1/p,a*=p,s*=p,i*=p):(a=0,s=0,i=0),o=l*i-g*s,u=g*a-f*i,c=f*s-l*a,p=Math.hypot(o,u,c),p?(p=1/p,o*=p,u*=p,c*=p):(o=0,u=0,c=0),t[0]=a,t[1]=o,t[2]=f,t[3]=0,t[4]=s,t[5]=u,t[6]=l,t[7]=0,t[8]=i,t[9]=c,t[10]=g,t[11]=0,t[12]=-(a*y+s*h+i*d),t[13]=-(o*y+u*h+c*d),t[14]=-(f*y+l*h+g*d),t[15]=1,t)}function zh(t,e,n,r){var a=e[0],s=e[1],i=e[2],o=r[0],u=r[1],c=r[2],f=a-n[0],l=s-n[1],g=i-n[2],p=f*f+l*l+g*g;p>0&&(p=1/Math.sqrt(p),f*=p,l*=p,g*=p);var y=u*g-c*l,h=c*f-o*g,d=o*l-u*f;return p=y*y+h*h+d*d,p>0&&(p=1/Math.sqrt(p),y*=p,h*=p,d*=p),t[0]=y,t[1]=h,t[2]=d,t[3]=0,t[4]=l*d-g*h,t[5]=g*y-f*d,t[6]=f*h-l*y,t[7]=0,t[8]=f,t[9]=l,t[10]=g,t[11]=0,t[12]=a,t[13]=s,t[14]=i,t[15]=1,t}function Ah(t){return"mat4("+t[0]+", "+t[1]+", "+t[2]+", "+t[3]+", "+t[4]+", "+t[5]+", "+t[6]+", "+t[7]+", "+t[8]+", "+t[9]+", "+t[10]+", "+t[11]+", "+t[12]+", "+t[13]+", "+t[14]+", "+t[15]+")"}function Hh(t){return Math.hypot(t[0],t[1],t[2],t[3],t[4],t[5],t[6],t[7],t[8],t[9],t[10],t[11],t[12],t[13],t[14],t[15])}function jh(t,e,n){return t[0]=e[0]+n[0],t[1]=e[1]+n[1],t[2]=e[2]+n[2],t[3]=e[3]+n[3],t[4]=e[4]+n[4],t[5]=e[5]+n[5],t[6]=e[6]+n[6],t[7]=e[7]+n[7],t[8]=e[8]+n[8],t[9]=e[9]+n[9],t[10]=e[10]+n[10],t[11]=e[11]+n[11],t[12]=e[12]+n[12],t[13]=e[13]+n[13],t[14]=e[14]+n[14],t[15]=e[15]+n[15],t}function Au(t,e,n){return t[0]=e[0]-n[0],t[1]=e[1]-n[1],t[2]=e[2]-n[2],t[3]=e[3]-n[3],t[4]=e[4]-n[4],t[5]=e[5]-n[5],t[6]=e[6]-n[6],t[7]=e[7]-n[7],t[8]=e[8]-n[8],t[9]=e[9]-n[9],t[10]=e[10]-n[10],t[11]=e[11]-n[11],t[12]=e[12]-n[12],t[13]=e[13]-n[13],t[14]=e[14]-n[14],t[15]=e[15]-n[15],t}function Kh(t,e,n){return t[0]=e[0]*n,t[1]=e[1]*n,t[2]=e[2]*n,t[3]=e[3]*n,t[4]=e[4]*n,t[5]=e[5]*n,t[6]=e[6]*n,t[7]=e[7]*n,t[8]=e[8]*n,t[9]=e[9]*n,t[10]=e[10]*n,t[11]=e[11]*n,t[12]=e[12]*n,t[13]=e[13]*n,t[14]=e[14]*n,t[15]=e[15]*n,t}function Ph(t,e,n,r){return t[0]=e[0]+n[0]*r,t[1]=e[1]+n[1]*r,t[2]=e[2]+n[2]*r,t[3]=e[3]+n[3]*r,t[4]=e[4]+n[4]*r,t[5]=e[5]+n[5]*r,t[6]=e[6]+n[6]*r,t[7]=e[7]+n[7]*r,t[8]=e[8]+n[8]*r,t[9]=e[9]+n[9]*r,t[10]=e[10]+n[10]*r,t[11]=e[11]+n[11]*r,t[12]=e[12]+n[12]*r,t[13]=e[13]+n[13]*r,t[14]=e[14]+n[14]*r,t[15]=e[15]+n[15]*r,t}function Xh(t,e){return t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]&&t[3]===e[3]&&t[4]===e[4]&&t[5]===e[5]&&t[6]===e[6]&&t[7]===e[7]&&t[8]===e[8]&&t[9]===e[9]&&t[10]===e[10]&&t[11]===e[11]&&t[12]===e[12]&&t[13]===e[13]&&t[14]===e[14]&&t[15]===e[15]}function Ih(t,e){var n=t[0],r=t[1],a=t[2],s=t[3],i=t[4],o=t[5],u=t[6],c=t[7],f=t[8],l=t[9],g=t[10],p=t[11],y=t[12],h=t[13],d=t[14],x=t[15],S=e[0],v=e[1],T=e[2],w=e[3],C=e[4],R=e[5],m=e[6],B=e[7],M=e[8],D=e[9],L=e[10],b=e[11],$=e[12],Q=e[13],Y=e[14],Z=e[15];return Math.abs(n-S)<=he*Math.max(1,Math.abs(n),Math.abs(S))&&Math.abs(r-v)<=he*Math.max(1,Math.abs(r),Math.abs(v))&&Math.abs(a-T)<=he*Math.max(1,Math.abs(a),Math.abs(T))&&Math.abs(s-w)<=he*Math.max(1,Math.abs(s),Math.abs(w))&&Math.abs(i-C)<=he*Math.max(1,Math.abs(i),Math.abs(C))&&Math.abs(o-R)<=he*Math.max(1,Math.abs(o),Math.abs(R))&&Math.abs(u-m)<=he*Math.max(1,Math.abs(u),Math.abs(m))&&Math.abs(c-B)<=he*Math.max(1,Math.abs(c),Math.abs(B))&&Math.abs(f-M)<=he*Math.max(1,Math.abs(f),Math.abs(M))&&Math.abs(l-D)<=he*Math.max(1,Math.abs(l),Math.abs(D))&&Math.abs(g-L)<=he*Math.max(1,Math.abs(g),Math.abs(L))&&Math.abs(p-b)<=he*Math.max(1,Math.abs(p),Math.abs(b))&&Math.abs(y-$)<=he*Math.max(1,Math.abs(y),Math.abs($))&&Math.abs(h-Q)<=he*Math.max(1,Math.abs(h),Math.abs(Q))&&Math.abs(d-Y)<=he*Math.max(1,Math.abs(d),Math.abs(Y))&&Math.abs(x-Z)<=he*Math.max(1,Math.abs(x),Math.abs(Z))}var ui=ft,Yh=Au;const fi=Object.freeze(Object.defineProperty({__proto__:null,add:jh,adjoint:Dh,clone:Eh,copy:nt,create:bi,determinant:mh,equals:Ih,exactEquals:Xh,frob:Hh,fromQuat:Ni,fromQuat2:kh,fromRotation:Mh,fromRotationTranslation:Fu,fromRotationTranslationScale:Nu,fromRotationTranslationScaleOrigin:Uh,fromScaling:ku,fromTranslation:Bu,fromValues:Rh,fromXRotation:Vh,fromYRotation:Lh,fromZRotation:Bh,frustum:bh,getRotation:bu,getScaling:Uu,getTranslation:Fh,identity:le,invert:dt,lookAt:zu,mul:ui,multiply:ft,multiplyScalar:Kh,multiplyScalarAndAdd:Ph,ortho:Wu,orthoNO:$u,orthoZO:Wh,perspective:Nh,perspectiveFromFieldOfView:$h,perspectiveNO:Gu,perspectiveZO:Gh,rotate:Xt,rotateX:Mu,rotateY:Vu,rotateZ:Lu,scale:xr,set:Oh,str:Ah,sub:Yh,subtract:Au,targetTo:zh,translate:We,transpose:Ve},Symbol.toStringTag,{value:"Module"}));function Hu(){var t=new Ye(3);return Ye!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0),t}function qh(t){var e=t[0],n=t[1],r=t[2];return Math.hypot(e,n,r)}function Po(t,e,n){var r=new Ye(3);return r[0]=t,r[1]=e,r[2]=n,r}function Qa(t,e,n,r){return t[0]=e,t[1]=n,t[2]=r,t}function Nr(t,e,n){return t[0]=e[0]+n[0],t[1]=e[1]+n[1],t[2]=e[2]+n[2],t}function En(t,e,n){return t[0]=e[0]-n[0],t[1]=e[1]-n[1],t[2]=e[2]-n[2],t}function xn(t,e,n){return t[0]=e[0]*n,t[1]=e[1]*n,t[2]=e[2]*n,t}function Qh(t,e){return t[0]=1/e[0],t[1]=1/e[1],t[2]=1/e[2],t}function qr(t,e){var n=e[0],r=e[1],a=e[2],s=n*n+r*r+a*a;return s>0&&(s=1/Math.sqrt(s)),t[0]=e[0]*s,t[1]=e[1]*s,t[2]=e[2]*s,t}function ju(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}function Ds(t,e,n){var r=e[0],a=e[1],s=e[2],i=n[0],o=n[1],u=n[2];return t[0]=a*u-s*o,t[1]=s*i-r*u,t[2]=r*o-a*i,t}function Se(t,e,n){var r=e[0],a=e[1],s=e[2],i=n[3]*r+n[7]*a+n[11]*s+n[15];return i=i||1,t[0]=(n[0]*r+n[4]*a+n[8]*s+n[12])/i,t[1]=(n[1]*r+n[5]*a+n[9]*s+n[13])/i,t[2]=(n[2]*r+n[6]*a+n[10]*s+n[14])/i,t}function Xo(t,e){return t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]}function Io(t,e){var n=t[0],r=t[1],a=t[2],s=e[0],i=e[1],o=e[2];return Math.abs(n-s)<=he*Math.max(1,Math.abs(n),Math.abs(s))&&Math.abs(r-i)<=he*Math.max(1,Math.abs(r),Math.abs(i))&&Math.abs(a-o)<=he*Math.max(1,Math.abs(a),Math.abs(o))}var li=En,Ku=qh;(function(){var t=Hu();return function(e,n,r,a,s,i){var o,u;for(n||(n=3),r||(r=0),a?u=Math.min(a*n+r,e.length):u=e.length,o=r;o<u;o+=n)t[0]=e[o],t[1]=e[o+1],t[2]=e[o+2],s(t,t,i),e[o]=t[0],e[o+1]=t[1],e[o+2]=t[2];return e}})();function Zh(){var t=new Ye(4);return Ye!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0,t[3]=0),t}function Jh(t,e,n,r){var a=new Ye(4);return a[0]=t,a[1]=e,a[2]=n,a[3]=r,a}function ed(t,e){var n=e[0],r=e[1],a=e[2],s=e[3],i=n*n+r*r+a*a+s*s;return i>0&&(i=1/Math.sqrt(i)),t[0]=n*i,t[1]=r*i,t[2]=a*i,t[3]=s*i,t}function la(t,e,n){var r=e[0],a=e[1],s=e[2],i=e[3];return t[0]=n[0]*r+n[4]*a+n[8]*s+n[12]*i,t[1]=n[1]*r+n[5]*a+n[9]*s+n[13]*i,t[2]=n[2]*r+n[6]*a+n[10]*s+n[14]*i,t[3]=n[3]*r+n[7]*a+n[11]*s+n[15]*i,t}(function(){var t=Zh();return function(e,n,r,a,s,i){var o,u;for(n||(n=4),r||(r=0),a?u=Math.min(a*n+r,e.length):u=e.length,o=r;o<u;o+=n)t[0]=e[o],t[1]=e[o+1],t[2]=e[o+2],t[3]=e[o+3],s(t,t,i),e[o]=t[0],e[o+1]=t[1],e[o+2]=t[2],e[o+3]=t[3];return e}})();function qn(){var t=new Ye(4);return Ye!=Float32Array&&(t[0]=0,t[1]=0,t[2]=0),t[3]=1,t}function Gi(t,e,n){n=n*.5;var r=Math.sin(n);return t[0]=r*e[0],t[1]=r*e[1],t[2]=r*e[2],t[3]=Math.cos(n),t}function td(t,e){var n=Math.acos(e[3])*2,r=Math.sin(n/2);return r>he?(t[0]=e[0]/r,t[1]=e[1]/r,t[2]=e[2]/r):(t[0]=1,t[1]=0,t[2]=0),n}function Yo(t,e,n){var r=e[0],a=e[1],s=e[2],i=e[3],o=n[0],u=n[1],c=n[2],f=n[3];return t[0]=r*f+i*o+a*c-s*u,t[1]=a*f+i*u+s*o-r*c,t[2]=s*f+i*c+r*u-a*o,t[3]=i*f-r*o-a*u-s*c,t}function Na(t,e,n,r){var a=e[0],s=e[1],i=e[2],o=e[3],u=n[0],c=n[1],f=n[2],l=n[3],g,p,y,h,d;return p=a*u+s*c+i*f+o*l,p<0&&(p=-p,u=-u,c=-c,f=-f,l=-l),1-p>he?(g=Math.acos(p),y=Math.sin(g),h=Math.sin((1-r)*g)/y,d=Math.sin(r*g)/y):(h=1-r,d=r),t[0]=h*a+d*u,t[1]=h*s+d*c,t[2]=h*i+d*f,t[3]=h*o+d*l,t}function nd(t,e){return t[0]=-e[0],t[1]=-e[1],t[2]=-e[2],t[3]=e[3],t}function rd(t,e){var n=e[0]+e[4]+e[8],r;if(n>0)r=Math.sqrt(n+1),t[3]=.5*r,r=.5/r,t[0]=(e[5]-e[7])*r,t[1]=(e[6]-e[2])*r,t[2]=(e[1]-e[3])*r;else{var a=0;e[4]>e[0]&&(a=1),e[8]>e[a*3+a]&&(a=2);var s=(a+1)%3,i=(a+2)%3;r=Math.sqrt(e[a*3+a]-e[s*3+s]-e[i*3+i]+1),t[a]=.5*r,r=.5/r,t[3]=(e[s*3+i]-e[i*3+s])*r,t[s]=(e[s*3+a]+e[a*3+s])*r,t[i]=(e[i*3+a]+e[a*3+i])*r}return t}var qo=Jh,Pu=ed;(function(){var t=Hu(),e=Po(1,0,0),n=Po(0,1,0);return function(r,a,s){var i=ju(a,s);return i<-.999999?(Ds(t,e,a),Ku(t)<1e-6&&Ds(t,n,a),qr(t,t),Gi(r,t,Math.PI),r):i>.999999?(r[0]=0,r[1]=0,r[2]=0,r[3]=1,r):(Ds(t,a,s),r[0]=t[0],r[1]=t[1],r[2]=t[2],r[3]=1+i,Pu(r,r))}})();(function(){var t=qn(),e=qn();return function(n,r,a,s,i,o){return Na(t,r,i,o),Na(e,a,s,o),Na(n,t,e,2*o*(1-o)),n}})();(function(){var t=Ru();return function(e,n,r,a){return t[0]=r[0],t[3]=r[1],t[6]=r[2],t[1]=a[0],t[4]=a[1],t[7]=a[2],t[2]=-n[0],t[5]=-n[1],t[8]=-n[2],Pu(e,rd(e,t))}})();var ad=function t(e,n){if(e===n)return!0;if(e&&n&&typeof e=="object"&&typeof n=="object"){if(e.constructor!==n.constructor)return!1;var r,a,s;if(Array.isArray(e)){if(r=e.length,r!=n.length)return!1;for(a=r;a--!==0;)if(!t(e[a],n[a]))return!1;return!0}if(e.constructor===RegExp)return e.source===n.source&&e.flags===n.flags;if(e.valueOf!==Object.prototype.valueOf)return e.valueOf()===n.valueOf();if(e.toString!==Object.prototype.toString)return e.toString()===n.toString();if(s=Object.keys(e),r=s.length,r!==Object.keys(n).length)return!1;for(a=r;a--!==0;)if(!Object.prototype.hasOwnProperty.call(n,s[a]))return!1;for(a=r;a--!==0;){var i=s[a];if(!t(e[i],n[i]))return!1}return!0}return e!==e&&n!==n};const sd=Mi(ad);var Qo=Object.prototype.toString,Xu=function(e){var n=Qo.call(e),r=n==="[object Arguments]";return r||(r=n!=="[object Array]"&&e!==null&&typeof e=="object"&&typeof e.length=="number"&&e.length>=0&&Qo.call(e.callee)==="[object Function]"),r},ms,Zo;function id(){if(Zo)return ms;Zo=1;var t;if(!Object.keys){var e=Object.prototype.hasOwnProperty,n=Object.prototype.toString,r=Xu,a=Object.prototype.propertyIsEnumerable,s=!a.call({toString:null},"toString"),i=a.call(function(){},"prototype"),o=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],u=function(g){var p=g.constructor;return p&&p.prototype===g},c={$applicationCache:!0,$console:!0,$external:!0,$frame:!0,$frameElement:!0,$frames:!0,$innerHeight:!0,$innerWidth:!0,$onmozfullscreenchange:!0,$onmozfullscreenerror:!0,$outerHeight:!0,$outerWidth:!0,$pageXOffset:!0,$pageYOffset:!0,$parent:!0,$scrollLeft:!0,$scrollTop:!0,$scrollX:!0,$scrollY:!0,$self:!0,$webkitIndexedDB:!0,$webkitStorageInfo:!0,$window:!0},f=function(){if(typeof window>"u")return!1;for(var g in window)try{if(!c["$"+g]&&e.call(window,g)&&window[g]!==null&&typeof window[g]=="object")try{u(window[g])}catch{return!0}}catch{return!0}return!1}(),l=function(g){if(typeof window>"u"||!f)return u(g);try{return u(g)}catch{return!1}};t=function(p){var y=p!==null&&typeof p=="object",h=n.call(p)==="[object Function]",d=r(p),x=y&&n.call(p)==="[object String]",S=[];if(!y&&!h&&!d)throw new TypeError("Object.keys called on a non-object");var v=i&&h;if(x&&p.length>0&&!e.call(p,0))for(var T=0;T<p.length;++T)S.push(String(T));if(d&&p.length>0)for(var w=0;w<p.length;++w)S.push(String(w));else for(var C in p)!(v&&C==="prototype")&&e.call(p,C)&&S.push(String(C));if(s)for(var R=l(p),m=0;m<o.length;++m)!(R&&o[m]==="constructor")&&e.call(p,o[m])&&S.push(o[m]);return S}}return ms=t,ms}var od=Array.prototype.slice,cd=Xu,Jo=Object.keys,Ga=Jo?function(e){return Jo(e)}:id(),ec=Object.keys;Ga.shim=function(){if(Object.keys){var e=function(){var n=Object.keys(arguments);return n&&n.length===arguments.length}(1,2);e||(Object.keys=function(r){return cd(r)?ec(od.call(r)):ec(r)})}else Object.keys=Ga;return Object.keys||Ga};var ud=Ga,fd=function(){if(typeof Symbol!="function"||typeof Object.getOwnPropertySymbols!="function")return!1;if(typeof Symbol.iterator=="symbol")return!0;var e={},n=Symbol("test"),r=Object(n);if(typeof n=="string"||Object.prototype.toString.call(n)!=="[object Symbol]"||Object.prototype.toString.call(r)!=="[object Symbol]")return!1;var a=42;e[n]=a;for(n in e)return!1;if(typeof Object.keys=="function"&&Object.keys(e).length!==0||typeof Object.getOwnPropertyNames=="function"&&Object.getOwnPropertyNames(e).length!==0)return!1;var s=Object.getOwnPropertySymbols(e);if(s.length!==1||s[0]!==n||!Object.prototype.propertyIsEnumerable.call(e,n))return!1;if(typeof Object.getOwnPropertyDescriptor=="function"){var i=Object.getOwnPropertyDescriptor(e,n);if(i.value!==a||i.enumerable!==!0)return!1}return!0},tc=typeof Symbol<"u"&&Symbol,ld=fd,gd=function(){return typeof tc!="function"||typeof Symbol!="function"||typeof tc("foo")!="symbol"||typeof Symbol("bar")!="symbol"?!1:ld()},nc={foo:{}},pd=Object,hd=function(){return{__proto__:nc}.foo===nc.foo&&!({__proto__:null}instanceof pd)},dd="Function.prototype.bind called on incompatible ",Ms=Array.prototype.slice,vd=Object.prototype.toString,yd="[object Function]",Td=function(e){var n=this;if(typeof n!="function"||vd.call(n)!==yd)throw new TypeError(dd+n);for(var r=Ms.call(arguments,1),a,s=function(){if(this instanceof a){var f=n.apply(this,r.concat(Ms.call(arguments)));return Object(f)===f?f:this}else return n.apply(e,r.concat(Ms.call(arguments)))},i=Math.max(0,n.length-r.length),o=[],u=0;u<i;u++)o.push("$"+u);if(a=Function("binder","return function ("+o.join(",")+"){ return binder.apply(this,arguments); }")(s),n.prototype){var c=function(){};c.prototype=n.prototype,a.prototype=new c,c.prototype=null}return a},xd=Td,Iu=Function.prototype.bind||xd,Sd=Iu,Cd=Sd.call(Function.call,Object.prototype.hasOwnProperty),fe,Sr=SyntaxError,Yu=Function,vr=TypeError,Vs=function(t){try{return Yu('"use strict"; return ('+t+").constructor;")()}catch{}},Pn=Object.getOwnPropertyDescriptor;if(Pn)try{Pn({},"")}catch{Pn=null}var Ls=function(){throw new vr},wd=Pn?function(){try{return arguments.callee,Ls}catch{try{return Pn(arguments,"callee").get}catch{return Ls}}}():Ls,er=gd(),_d=hd(),Pe=Object.getPrototypeOf||(_d?function(t){return t.__proto__}:null),or={},Ed=typeof Uint8Array>"u"||!Pe?fe:Pe(Uint8Array),Xn={"%AggregateError%":typeof AggregateError>"u"?fe:AggregateError,"%Array%":Array,"%ArrayBuffer%":typeof ArrayBuffer>"u"?fe:ArrayBuffer,"%ArrayIteratorPrototype%":er&&Pe?Pe([][Symbol.iterator]()):fe,"%AsyncFromSyncIteratorPrototype%":fe,"%AsyncFunction%":or,"%AsyncGenerator%":or,"%AsyncGeneratorFunction%":or,"%AsyncIteratorPrototype%":or,"%Atomics%":typeof Atomics>"u"?fe:Atomics,"%BigInt%":typeof BigInt>"u"?fe:BigInt,"%BigInt64Array%":typeof BigInt64Array>"u"?fe:BigInt64Array,"%BigUint64Array%":typeof BigUint64Array>"u"?fe:BigUint64Array,"%Boolean%":Boolean,"%DataView%":typeof DataView>"u"?fe:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":Error,"%eval%":eval,"%EvalError%":EvalError,"%Float32Array%":typeof Float32Array>"u"?fe:Float32Array,"%Float64Array%":typeof Float64Array>"u"?fe:Float64Array,"%FinalizationRegistry%":typeof FinalizationRegistry>"u"?fe:FinalizationRegistry,"%Function%":Yu,"%GeneratorFunction%":or,"%Int8Array%":typeof Int8Array>"u"?fe:Int8Array,"%Int16Array%":typeof Int16Array>"u"?fe:Int16Array,"%Int32Array%":typeof Int32Array>"u"?fe:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":er&&Pe?Pe(Pe([][Symbol.iterator]())):fe,"%JSON%":typeof JSON=="object"?JSON:fe,"%Map%":typeof Map>"u"?fe:Map,"%MapIteratorPrototype%":typeof Map>"u"||!er||!Pe?fe:Pe(new Map()[Symbol.iterator]()),"%Math%":Math,"%Number%":Number,"%Object%":Object,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":typeof Promise>"u"?fe:Promise,"%Proxy%":typeof Proxy>"u"?fe:Proxy,"%RangeError%":RangeError,"%ReferenceError%":ReferenceError,"%Reflect%":typeof Reflect>"u"?fe:Reflect,"%RegExp%":RegExp,"%Set%":typeof Set>"u"?fe:Set,"%SetIteratorPrototype%":typeof Set>"u"||!er||!Pe?fe:Pe(new Set()[Symbol.iterator]()),"%SharedArrayBuffer%":typeof SharedArrayBuffer>"u"?fe:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":er&&Pe?Pe(""[Symbol.iterator]()):fe,"%Symbol%":er?Symbol:fe,"%SyntaxError%":Sr,"%ThrowTypeError%":wd,"%TypedArray%":Ed,"%TypeError%":vr,"%Uint8Array%":typeof Uint8Array>"u"?fe:Uint8Array,"%Uint8ClampedArray%":typeof Uint8ClampedArray>"u"?fe:Uint8ClampedArray,"%Uint16Array%":typeof Uint16Array>"u"?fe:Uint16Array,"%Uint32Array%":typeof Uint32Array>"u"?fe:Uint32Array,"%URIError%":URIError,"%WeakMap%":typeof WeakMap>"u"?fe:WeakMap,"%WeakRef%":typeof WeakRef>"u"?fe:WeakRef,"%WeakSet%":typeof WeakSet>"u"?fe:WeakSet};if(Pe)try{null.error}catch(t){var Rd=Pe(Pe(t));Xn["%Error.prototype%"]=Rd}var Od=function t(e){var n;if(e==="%AsyncFunction%")n=Vs("async function () {}");else if(e==="%GeneratorFunction%")n=Vs("function* () {}");else if(e==="%AsyncGeneratorFunction%")n=Vs("async function* () {}");else if(e==="%AsyncGenerator%"){var r=t("%AsyncGeneratorFunction%");r&&(n=r.prototype)}else if(e==="%AsyncIteratorPrototype%"){var a=t("%AsyncGenerator%");a&&Pe&&(n=Pe(a.prototype))}return Xn[e]=n,n},rc={"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},ra=Iu,Za=Cd,Dd=ra.call(Function.call,Array.prototype.concat),md=ra.call(Function.apply,Array.prototype.splice),ac=ra.call(Function.call,String.prototype.replace),Ja=ra.call(Function.call,String.prototype.slice),Md=ra.call(Function.call,RegExp.prototype.exec),Vd=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,Ld=/\\(\\)?/g,Bd=function(e){var n=Ja(e,0,1),r=Ja(e,-1);if(n==="%"&&r!=="%")throw new Sr("invalid intrinsic syntax, expected closing `%`");if(r==="%"&&n!=="%")throw new Sr("invalid intrinsic syntax, expected opening `%`");var a=[];return ac(e,Vd,function(s,i,o,u){a[a.length]=o?ac(u,Ld,"$1"):i||s}),a},kd=function(e,n){var r=e,a;if(Za(rc,r)&&(a=rc[r],r="%"+a[0]+"%"),Za(Xn,r)){var s=Xn[r];if(s===or&&(s=Od(r)),typeof s>"u"&&!n)throw new vr("intrinsic "+e+" exists, but is not available. Please file an issue!");return{alias:a,name:r,value:s}}throw new Sr("intrinsic "+e+" does not exist!")},$i=function(e,n){if(typeof e!="string"||e.length===0)throw new vr("intrinsic name must be a non-empty string");if(arguments.length>1&&typeof n!="boolean")throw new vr('"allowMissing" argument must be a boolean');if(Md(/^%?[^%]*%?$/,e)===null)throw new Sr("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var r=Bd(e),a=r.length>0?r[0]:"",s=kd("%"+a+"%",n),i=s.name,o=s.value,u=!1,c=s.alias;c&&(a=c[0],md(r,Dd([0,1],c)));for(var f=1,l=!0;f<r.length;f+=1){var g=r[f],p=Ja(g,0,1),y=Ja(g,-1);if((p==='"'||p==="'"||p==="`"||y==='"'||y==="'"||y==="`")&&p!==y)throw new Sr("property names with quotes must have matching quotes");if((g==="constructor"||!l)&&(u=!0),a+="."+g,i="%"+a+"%",Za(Xn,i))o=Xn[i];else if(o!=null){if(!(g in o)){if(!n)throw new vr("base intrinsic for "+e+" exists, but the property is not available.");return}if(Pn&&f+1>=r.length){var h=Pn(o,g);l=!!h,l&&"get"in h&&!("originalValue"in h.get)?o=h.get:o=o[g]}else l=Za(o,g),o=o[g];l&&!u&&(Xn[i]=o)}}return o},Fd=$i,gi=Fd("%Object.defineProperty%",!0),pi=function(){if(gi)try{return gi({},"a",{value:1}),!0}catch{return!1}return!1};pi.hasArrayLengthDefineBug=function(){if(!pi())return null;try{return gi([],"length",{value:1}).length!==1}catch{return!0}};var qu=pi,Bs,sc;function Ud(){if(sc)return Bs;sc=1;var t=$i,e=t("%Object.getOwnPropertyDescriptor%",!0);if(e)try{e([],"length")}catch{e=null}return Bs=e,Bs}var bd=qu(),Wi=$i,ic=bd&&Wi("%Object.defineProperty%",!0),Nd=Wi("%SyntaxError%"),tr=Wi("%TypeError%"),oc=Ud(),Gd=function(e,n,r){if(!e||typeof e!="object"&&typeof e!="function")throw new tr("`obj` must be an object or a function`");if(typeof n!="string"&&typeof n!="symbol")throw new tr("`property` must be a string or a symbol`");if(arguments.length>3&&typeof arguments[3]!="boolean"&&arguments[3]!==null)throw new tr("`nonEnumerable`, if provided, must be a boolean or null");if(arguments.length>4&&typeof arguments[4]!="boolean"&&arguments[4]!==null)throw new tr("`nonWritable`, if provided, must be a boolean or null");if(arguments.length>5&&typeof arguments[5]!="boolean"&&arguments[5]!==null)throw new tr("`nonConfigurable`, if provided, must be a boolean or null");if(arguments.length>6&&typeof arguments[6]!="boolean")throw new tr("`loose`, if provided, must be a boolean");var a=arguments.length>3?arguments[3]:null,s=arguments.length>4?arguments[4]:null,i=arguments.length>5?arguments[5]:null,o=arguments.length>6?arguments[6]:!1,u=!!oc&&oc(e,n);if(ic)ic(e,n,{configurable:i===null&&u?u.configurable:!i,enumerable:a===null&&u?u.enumerable:!a,value:r,writable:s===null&&u?u.writable:!s});else if(o||!a&&!s&&!i)e[n]=r;else throw new Nd("This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.")},$d=ud,Wd=typeof Symbol=="function"&&typeof Symbol("foo")=="symbol",zd=Object.prototype.toString,Ad=Array.prototype.concat,cc=Gd,Hd=function(t){return typeof t=="function"&&zd.call(t)==="[object Function]"},Qu=qu(),jd=function(t,e,n,r){if(e in t){if(r===!0){if(t[e]===n)return}else if(!Hd(r)||!r())return}Qu?cc(t,e,n,!0):cc(t,e,n)},Zu=function(t,e){var n=arguments.length>2?arguments[2]:{},r=$d(e);Wd&&(r=Ad.call(r,Object.getOwnPropertySymbols(e)));for(var a=0;a<r.length;a+=1)jd(t,r[a],e[r[a]],n[r[a]])};Zu.supportsDescriptors=!!Qu;var Ju=Zu,$a={exports:{}};typeof self<"u"?$a.exports=self:typeof window<"u"?$a.exports=window:$a.exports=Function("return this")();var ef=$a.exports,Kd=ef,tf=function(){return typeof Ot!="object"||!Ot||Ot.Math!==Math||Ot.Array!==Array?Kd:Ot},Pd=Ju,Xd=tf,Id=function(){var e=Xd();if(Pd.supportsDescriptors){var n=Object.getOwnPropertyDescriptor(e,"globalThis");(!n||n.configurable&&(n.enumerable||!n.writable||globalThis!==e))&&Object.defineProperty(e,"globalThis",{configurable:!0,enumerable:!1,value:e,writable:!0})}else(typeof globalThis!="object"||globalThis!==e)&&(e.globalThis=e);return e},Yd=Ju,qd=ef,nf=tf,Qd=Id,Zd=nf(),rf=function(){return Zd};Yd(rf,{getPolyfill:nf,implementation:qd,shim:Qd});var Jd=rf;const e1=Mi(Jd),Ft=e1(),af={vtkObject:()=>null};function $t(t){if(t==null||t.isA)return t;if(!t.vtkClass)return Ft.console&&Ft.console.error&&Ft.console.error("Invalid VTK object"),null;const e=af[t.vtkClass];if(!e)return Ft.console&&Ft.console.error&&Ft.console.error(`No vtk class found for Object of type ${t.vtkClass}`),null;const n={...t};Object.keys(n).forEach(a=>{n[a]&&typeof n[a]=="object"&&n[a].vtkClass&&(n[a]=$t(n[a]))});const r=e(n);return r&&r.modified&&r.modified(),r}function t1(t,e){af[t]=e}$t.register=t1;class ks extends Array{push(){for(let e=0;e<arguments.length;e++)this.includes(arguments[e])||super.push(arguments[e]);return this.length}}let hi=0;const sf=Symbol("void");function n1(){return hi}const of={};function zn(){}const r1=["log","debug","info","warn","error","time","timeEnd","group","groupEnd"];r1.forEach(t=>{of[t]=zn});Ft.console=console.hasOwnProperty("log")?console:of;const Rn={debug:zn,error:Ft.console.error||zn,info:Ft.console.info||zn,log:Ft.console.log||zn,warn:Ft.console.warn||zn};function cf(t,e){Rn[t]&&(Rn[t]=e||zn)}function uf(){Rn.log(...arguments)}function ff(){Rn.info(...arguments)}function es(){Rn.debug(...arguments)}function ce(){Rn.error(...arguments)}function zi(){Rn.warn(...arguments)}const uc={};function lf(t){uc[t]||(Rn.error(t),uc[t]=!0)}const at=Object.create(null);at.Float32Array=Float32Array;at.Float64Array=Float64Array;at.Uint8Array=Uint8Array;at.Int8Array=Int8Array;at.Uint16Array=Uint16Array;at.Int16Array=Int16Array;at.Uint32Array=Uint32Array;at.Int32Array=Int32Array;at.Uint8ClampedArray=Uint8ClampedArray;try{at.BigInt64Array=BigInt64Array,at.BigUint64Array=BigUint64Array}catch{}function Rr(t){for(var e=arguments.length,n=new Array(e>1?e-1:0),r=1;r<e;r++)n[r-1]=arguments[r];return new(at[t]||Float64Array)(...n)}function Ai(t){for(var e=arguments.length,n=new Array(e>1?e-1:0),r=1;r<e;r++)n[r-1]=arguments[r];return(at[t]||Float64Array).from(...n)}function hs(t){return t.charAt(0).toUpperCase()+t.slice(1)}function Ue(t){return hs(t[0]==="_"?t.slice(1):t)}function gf(t){return t.charAt(0).toLowerCase()+t.slice(1)}function pf(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:2,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1e3;const r=["TB","GB","MB","KB"];let a=Number(t),s="B";for(;a>n;)a/=n,s=r.pop();return`${a.toFixed(e)} ${s}`}function hf(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:" ";const n=[];let r=t;for(;r>1e3;)n.push(`000${r%1e3}`.slice(-3)),r=Math.floor(r/1e3);return r>0&&n.push(r),n.reverse(),n.join(e)}function df(t){Object.keys(t).forEach(e=>{Array.isArray(t[e])&&(t[e]=[].concat(t[e]))})}function a1(t){return Object.values(at).some(e=>t instanceof e)}function s1(t,e){if(t===e)return!0;if(Array.isArray(t)&&Array.isArray(e)){if(t.length!==e.length)return!1;for(let n=0;n<t.length;n++)if(t[n]!==e[n])return!1;return!0}return!1}function i1(t,e){return Object.keys(t).find(n=>t[n]===e)}function vf(t){return t&&t.isA?t.getState():t}function Hi(t){setTimeout(t,0)}function yf(t,e){const n=performance.now();t.finally(()=>{const r=performance.now()-n;e(r)})}function qe(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};df(e);const n=[];if(Number.isInteger(e.mtime)||(e.mtime=++hi),!("classHierarchy"in e))e.classHierarchy=new ks("vtkObject");else if(!(e.classHierarchy instanceof ks)){const s=new ks;for(let i=0;i<e.classHierarchy.length;i++)s.push(e.classHierarchy[i]);e.classHierarchy=s}function r(s){n[s]=null}function a(s){function i(){r(s)}return Object.freeze({unsubscribe:i})}return t.isDeleted=()=>!!e.deleted,t.modified=s=>{if(e.deleted){ce("instance deleted - cannot call any method");return}s&&s<t.getMTime()||(e.mtime=++hi,n.forEach(i=>i&&i(t)))},t.onModified=s=>{if(e.deleted)return ce("instance deleted - cannot call any method"),null;const i=n.length;return n.push(s),a(i)},t.getMTime=()=>e.mtime,t.isA=s=>{let i=e.classHierarchy.length;for(;i--;)if(e.classHierarchy[i]===s)return!0;return!1},t.getClassName=function(){let s=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return e.classHierarchy[e.classHierarchy.length-1-s]},t.set=function(){let s=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,u=!1;return Object.keys(s).forEach(c=>{const f=o?null:t[`set${hs(c)}`];f&&Array.isArray(s[c])&&f.length>1?u=f(...s[c])||u:f?u=f(s[c])||u:(["mtime"].indexOf(c)===-1&&!i&&zi(`Warning: Set value to model directly ${c}, ${s[c]}`),u=e[c]!==s[c]||u,e[c]=s[c])}),u},t.get=function(){for(var s=arguments.length,i=new Array(s),o=0;o<s;o++)i[o]=arguments[o];if(!i.length)return e;const u={};return i.forEach(c=>{u[c]=e[c]}),u},t.getReferenceByName=s=>e[s],t.delete=()=>{Object.keys(e).forEach(s=>delete e[s]),n.forEach((s,i)=>r(i)),e.deleted=!0},t.getState=()=>{if(e.deleted)return null;const s={...e,vtkClass:t.getClassName()};Object.keys(s).forEach(o=>{s[o]===null||s[o]===void 0||o[0]==="_"?delete s[o]:s[o].isA?s[o]=s[o].getState():Array.isArray(s[o])?s[o]=s[o].map(vf):a1(s[o])&&(s[o]=Array.from(s[o]))});const i={};return Object.keys(s).sort().forEach(o=>{i[o]=s[o]}),i.mtime&&delete i.mtime,i},t.shallowCopy=function(s){let i=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;if(s.getClassName()!==t.getClassName())throw new Error(`Cannot ShallowCopy ${s.getClassName()} into ${t.getClassName()}`);const o=s.get(),u=Object.keys(e).sort();Object.keys(o).sort().forEach(f=>{const l=u.indexOf(f);l===-1?i&&es(`add ${f} in shallowCopy`):u.splice(l,1),e[f]=o[f]}),u.length&&i&&es(`Untouched keys: ${u.join(", ")}`),t.modified()},t.toJSON=function(){return t.getState()},t}const o1={object(t,e,n){return function(){return{...e[n.name]}}}};function lt(t,e,n){n.forEach(r=>{if(typeof r=="object"){const a=o1[r.type];a?t[`get${Ue(r.name)}`]=a(t,e,r):t[`get${Ue(r.name)}`]=()=>e[r.name]}else t[`get${Ue(r)}`]=()=>e[r]})}const c1={enum(t,e,n){const r=`_on${Ue(n.name)}Changed`;return a=>{var s;if(typeof a=="string"){if(n.enum[a]!==void 0)return e[n.name]!==n.enum[a]?(e[n.name]=n.enum[a],t.modified(),!0):!1;throw ce(`Set Enum with invalid argument ${n}, ${a}`),new RangeError("Set Enum with invalid string argument")}if(typeof a=="number"){if(e[n.name]!==a){if(Object.keys(n.enum).map(i=>n.enum[i]).indexOf(a)!==-1){const i=e[n.name];return e[n.name]=a,(s=e[r])==null||s.call(e,t,e,a,i),t.modified(),!0}throw ce(`Set Enum outside numeric range ${n}, ${a}`),new RangeError("Set Enum outside numeric range")}return!1}throw ce(`Set Enum with invalid argument (String/Number) ${n}, ${a}`),new TypeError("Set Enum with invalid argument (String/Number)")}},object(t,e,n){const r=`_on${Ue(n.name)}Changed`;return a=>{var s;if(!sd(e[n.name],a)){const i=e[n.name];return e[n.name]=a,(s=e[r])==null||s.call(e,t,e,a,i),t.modified(),!0}return!1}}};function fc(t){if(typeof t=="object"){const e=c1[t.type];if(e)return(n,r)=>e(n,r,t);throw ce(`No setter for field ${t}`),new TypeError("No setter for field")}return function(n,r){const a=`_on${Ue(t)}Changed`;return function(i){var o;if(r.deleted)return ce("instance deleted - cannot call any method"),!1;if(r[t]!==i){const u=r[t.name];return r[t]=i,(o=r[a])==null||o.call(r,n,r,i,u),n.modified(),!0}return!1}}}function aa(t,e,n){n.forEach(r=>{typeof r=="object"?t[`set${Ue(r.name)}`]=fc(r)(t,e):t[`set${Ue(r)}`]=fc(r)(t,e)})}function He(t,e,n){lt(t,e,n),aa(t,e,n)}function Or(t,e,n){n.forEach(r=>{t[`get${Ue(r)}`]=()=>e[r]?Array.from(e[r]):e[r],t[`get${Ue(r)}ByReference`]=()=>e[r]})}function ji(t,e,n,r){let a=arguments.length>4&&arguments[4]!==void 0?arguments[4]:void 0;n.forEach(s=>{if(e[s]&&r&&e[s].length!==r)throw new RangeError(`Invalid initial number of values for array (${s})`);const i=`_on${Ue(s)}Changed`;t[`set${Ue(s)}`]=function(){var p;if(e.deleted)return ce("instance deleted - cannot call any method"),!1;for(var o=arguments.length,u=new Array(o),c=0;c<o;c++)u[c]=arguments[c];let f=u,l,g=!1;if(f.length===1&&(f[0]==null||f[0].length>=0)&&(f=f[0],g=!0),f==null)l=e[s]!==f;else{if(r&&f.length!==r)if(f.length<r&&a!==void 0)for(f=Array.from(f),g=!1;f.length<r;)f.push(a);else throw new RangeError(`Invalid number of values for array setter (${s})`);l=e[s]==null||e[s].length!==f.length;for(let y=0;!l&&y<f.length;++y)l=e[s][y]!==f[y];l&&g&&(f=Array.from(f))}if(l){const y=e[s.name];e[s]=f,(p=e[i])==null||p.call(e,t,e,f,y),t.modified()}return l},t[`set${Ue(s)}From`]=o=>{const u=e[s];o.forEach((c,f)=>{u[f]=c})}})}function Ki(t,e,n,r){let a=arguments.length>4&&arguments[4]!==void 0?arguments[4]:void 0;Or(t,e,n),ji(t,e,n,r,a)}function sa(t,e,n){for(let r=0;r<n.length;r++){const a=n[r];e[a]!==void 0&&(e[`_${a}`]=e[a],delete e[a])}}function Tf(t,e,n,r){e.inputData?e.inputData=e.inputData.map($t):e.inputData=[],e.inputConnection?e.inputConnection=e.inputConnection.map($t):e.inputConnection=[],e.output?e.output=e.output.map($t):e.output=[],e.inputArrayToProcess?e.inputArrayToProcess=e.inputArrayToProcess.map($t):e.inputArrayToProcess=[],e.numberOfInputs=n;function a(p){let y=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;if(e.deleted){ce("instance deleted - cannot call any method");return}if(y>=e.numberOfInputs){ce(`algorithm ${t.getClassName()} only has ${e.numberOfInputs} input ports. To add more input ports, use addInputData()`);return}(e.inputData[y]!==p||e.inputConnection[y])&&(e.inputData[y]=p,e.inputConnection[y]=null,t.modified&&t.modified())}function s(){let p=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return e.inputConnection[p]&&(e.inputData[p]=e.inputConnection[p]()),e.inputData[p]}function i(p){let y=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;if(e.deleted){ce("instance deleted - cannot call any method");return}if(y>=e.numberOfInputs){let h=`algorithm ${t.getClassName()} only has `;h+=`${e.numberOfInputs}`,h+=" input ports. To add more input ports, use addInputConnection()",ce(h);return}e.inputData[y]=null,e.inputConnection[y]=p}function o(){let p=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return e.inputConnection[p]}function u(){let p=e.numberOfInputs;for(;p&&!e.inputData[p-1]&&!e.inputConnection[p-1];)p--;return p===e.numberOfInputs&&e.numberOfInputs++,p}function c(p){if(e.deleted){ce("instance deleted - cannot call any method");return}i(p,u())}function f(p){if(e.deleted){ce("instance deleted - cannot call any method");return}a(p,u())}function l(){let p=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return e.deleted?(ce("instance deleted - cannot call any method"),null):(t.shouldUpdate()&&t.update(),e.output[p])}t.shouldUpdate=()=>{var d,x;const p=t.getMTime();let y=1/0,h=r;for(;h--;){if(!e.output[h]||e.output[h].isDeleted())return!0;const S=e.output[h].getMTime();if(S<p)return!0;S<y&&(y=S)}for(h=e.numberOfInputs;h--;)if((d=e.inputConnection[h])!=null&&d.filter.shouldUpdate()||((x=t.getInputData(h))==null?void 0:x.getMTime())>y)return!0;return!1};function g(){let p=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;const y=()=>l(p);return y.filter=t,y}if(e.numberOfInputs){let p=e.numberOfInputs;for(;p--;)e.inputData.push(null),e.inputConnection.push(null);t.setInputData=a,t.setInputConnection=i,t.addInputData=f,t.addInputConnection=c,t.getInputData=s,t.getInputConnection=o}r&&(t.getOutputData=l,t.getOutputPort=g),t.update=()=>{const p=[];if(e.numberOfInputs){let y=0;for(;y<e.numberOfInputs;)p[y]=t.getInputData(y),y++}t.shouldUpdate()&&t.requestData&&t.requestData(p,e.output)},t.getNumberOfInputPorts=()=>e.numberOfInputs,t.getNumberOfOutputPorts=()=>r||e.output.length,t.getInputArrayToProcess=p=>{const y=e.inputArrayToProcess[p],h=e.inputData[p];return y&&h?h[`get${y.fieldAssociation}`]().getArray(y.arrayName):null},t.setInputArrayToProcess=function(p,y,h){let d=arguments.length>3&&arguments[3]!==void 0?arguments[3]:"Scalars";for(;e.inputArrayToProcess.length<p;)e.inputArrayToProcess.push(null);e.inputArrayToProcess[p]={arrayName:y,fieldAssociation:h,attributeType:d}}}const Pi=Symbol("Event abort");function xf(t,e,n){const r=[],a=t.delete;let s=1;function i(c){for(let f=0;f<r.length;++f){const[l]=r[f];if(l===c){r.splice(f,1);return}}}function o(c){function f(){i(c)}return Object.freeze({unsubscribe:f})}function u(){if(e.deleted){ce("instance deleted - cannot call any method");return}const c=r.slice();for(let f=0;f<c.length;++f){const[,l,g]=c[f];if(l){if(g<0)setTimeout(()=>l.apply(t,arguments),1-g);else if(l.apply(t,arguments)===Pi)break}}}t[`invoke${Ue(n)}`]=u,t[`on${Ue(n)}`]=function(c){let f=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;if(!c.apply)return console.error(`Invalid callback for event ${n}`),null;if(e.deleted)return ce("instance deleted - cannot call any method"),null;const l=s++;return r.push([l,c,f]),r.sort((g,p)=>p[2]-g[2]),o(l)},t.delete=()=>{a(),r.forEach(c=>{let[f]=c;return i(f)})}}function De(t,e){const n=function(){let r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const a={},s={};return t(s,a,r),Object.freeze(s)};return e&&$t.register(e,n),n}function Sf(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return function(){for(var r=arguments.length,a=new Array(r),s=0;s<r;s++)a[s]=arguments[s];return e.filter(i=>!!i).map(i=>i(...a))}}function Xi(t){return t&&t.isA&&t.isA("vtkObject")}function ts(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:[],r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:[];if(Xi(t)){if(r.indexOf(t)>=0)return n;r.push(t);const a=e(t);a!==void 0&&n.push(a);const s=t.get();Object.keys(s).forEach(i=>{const o=s[i];Array.isArray(o)?o.forEach(u=>{ts(u,e,n,r)}):ts(o,e,n,r)})}return n}function Cf(t,e,n){var r=this;let a;const s=function(){for(var i=arguments.length,o=new Array(i),u=0;u<i;u++)o[u]=arguments[u];const c=r,f=()=>{a=null,n||t.apply(c,o)},l=n&&!a;clearTimeout(a),a=setTimeout(f,e),l&&t.apply(c,o)};return s.cancel=()=>clearTimeout(a),s}function Ii(t,e){let n=!1,r=null;function a(){n=!1,r!==null&&(s(...r),r=null)}function s(){for(var i=arguments.length,o=new Array(i),u=0;u<i;u++)o[u]=arguments[u];if(n){r=o;return}n=!0,t(...o),setTimeout(a,e)}return s}function Yi(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};e.keystore=Object.assign(e.keystore||{},n),t.setKey=(r,a)=>{e.keystore[r]=a},t.getKey=r=>e.keystore[r],t.getAllKeys=()=>Object.keys(e.keystore),t.deleteKey=r=>delete e.keystore[r],t.clearKeystore=()=>t.getAllKeys().forEach(r=>delete e.keystore[r])}let u1=1;const ga="__root__";function wf(t,e){Yi(t,e);const n=t.delete;e.proxyId=`${u1++}`,e.ui=JSON.parse(JSON.stringify(e.ui||[])),lt(t,e,["proxyId","proxyGroup","proxyName"]),He(t,e,["proxyManager"]);const r={},a={};function s(c,f){a[f]||(a[f]=[]);const l=a[f];for(let g=0;g<c.length;g++)l.push(c[g].name),r[c[g].name]=c[g],c[g].children&&c[g].children.length&&s(c[g].children,c[g].name)}s(e.ui,ga),t.updateUI=c=>{e.ui=JSON.parse(JSON.stringify(c||[])),Object.keys(r).forEach(f=>delete r[f]),Object.keys(a).forEach(f=>delete a[f]),s(e.ui,ga),t.modified()};function i(){let c=arguments.length>0&&arguments[0]!==void 0?arguments[0]:ga;return a[c]}t.updateProxyProperty=(c,f)=>{const l=r[c];l?Object.assign(l,f):r[c]={...f}},t.activate=()=>{if(e.proxyManager){const c=`setActive${Ue(t.getProxyGroup().slice(0,-1))}`;e.proxyManager[c]&&e.proxyManager[c](t)}},e.propertyLinkSubscribers={},t.registerPropertyLinkForGC=(c,f)=>{f in e.propertyLinkSubscribers||(e.propertyLinkSubscribers[f]=[]),e.propertyLinkSubscribers[f].push(c)},t.gcPropertyLinks=c=>{const f=e.propertyLinkSubscribers[c]||[];for(;f.length;)f.pop().unbind(t)},e.propertyLinkMap={},t.getPropertyLink=function(c){let f=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;if(e.propertyLinkMap[c])return e.propertyLinkMap[c];let l=null;const g=[];let p=0,y=!1;function h(T){let w=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;if(y)return null;const C=[];let R=null;for(p=g.length;p--;){const B=g[p];B.instance===T?R=B:C.push(B)}if(!R)return null;const m=R.instance[`get${Ue(R.propertyName)}`]();if(!s1(m,l)||w){for(l=m,y=!0;C.length;){const B=C.pop();B.instance.set({[B.propertyName]:l})}y=!1}return e.propertyLinkMap[c].persistent&&(e.propertyLinkMap[c].value=m),m}function d(T,w){const C=[];for(p=g.length;p--;){const R=g[p];R.instance===T&&(R.propertyName===w||w===void 0)&&(R.subscription.unsubscribe(),C.push(p))}for(;C.length;)g.splice(C.pop(),1)}function x(T,w){let C=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;const R=T.onModified(h),m=g[0];return g.push({instance:T,propertyName:w,subscription:R}),C&&(e.propertyLinkMap[c].persistent&&e.propertyLinkMap[c].value!==void 0?T.set({[w]:e.propertyLinkMap[c].value}):m&&h(m.instance,!0)),{unsubscribe:()=>d(T,w)}}function S(){for(;g.length;)g.pop().subscription.unsubscribe()}const v={bind:x,unbind:d,unsubscribe:S,persistent:f};return e.propertyLinkMap[c]=v,v};function o(){let c=arguments.length>0&&arguments[0]!==void 0?arguments[0]:ga;const f=[],l=e.proxyId,g=i(c)||[];for(let p=0;p<g.length;p++){const y=g[p],h=t[`get${Ue(y)}`],d=h?h():void 0,x={id:l,name:y,value:d},S=o(y);S.length&&(x.children=S),f.push(x)}return f}t.listPropertyNames=()=>o().map(c=>c.name),t.getPropertyByName=c=>o().find(f=>f.name===c),t.getPropertyDomainByName=c=>(r[c]||{}).domain,t.getProxySection=()=>({id:e.proxyId,name:e.proxyGroup,ui:e.ui,properties:o()}),t.delete=()=>{const c=Object.keys(e.propertyLinkMap);let f=c.length;for(;f--;)e.propertyLinkMap[c[f]].unsubscribe();Object.keys(e.propertyLinkSubscribers).forEach(t.gcPropertyLinks),n()},t.getState=()=>null;function u(){if(e.links)for(let c=0;c<e.links.length;c++){const{link:f,property:l,persistent:g,updateOnBind:p,type:y}=e.links[c];if(y==="application"){const h=e.proxyManager.getPropertyLink(f,g);t.registerPropertyLinkForGC(h,"application"),h.bind(t,l,p)}}}Hi(u)}function _f(t,e,n){const r=t.delete,a=[],s=Object.keys(n);let i=s.length;for(;i--;){const o=s[i],{modelKey:u,property:c,modified:f=!0}=n[o],l=Ue(c),g=Ue(o);t[`get${g}`]=e[u][`get${l}`],t[`set${g}`]=e[u][`set${l}`],f&&a.push(e[u].onModified(t.modified))}t.delete=()=>{for(;a.length;)a.pop().unsubscribe();r()}}function Ef(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};e.this=t;function a(o){const u=Object.keys(o);let c=u.length;for(;c--;){const f=u[c];e[f].set(o[f])}}const s=Object.keys(r);let i=s.length;for(;i--;){const o=s[i];e[o]=r[o];const u=n[o];t[`set${Ue(o)}`]=c=>{if(c!==e[o]){e[o]=c;const f=u[c];a(f),t.modified()}}}s.length&<(t,e,s)}const lc=10,gc=40,pc=800;function Rf(t){let e=0,n=0,r=0,a=0;return"detail"in t&&(n=t.detail),"wheelDelta"in t&&(n=-t.wheelDelta/120),"wheelDeltaY"in t&&(n=-t.wheelDeltaY/120),"wheelDeltaX"in t&&(e=-t.wheelDeltaX/120),"axis"in t&&t.axis===t.HORIZONTAL_AXIS&&(e=n,n=0),r=e*lc,a=n*lc,"deltaY"in t&&(a=t.deltaY),"deltaX"in t&&(r=t.deltaX),(r||a)&&t.deltaMode&&(t.deltaMode===1?(r*=gc,a*=gc):(r*=pc,a*=pc)),r&&!e&&(e=r<1?-1:1),a&&!n&&(n=a<1?-1:1),{spinX:e,spinY:n||e,pixelX:r,pixelY:a||r}}var _={algo:Tf,capitalize:hs,chain:Sf,debounce:Cf,enumToString:i1,event:xf,EVENT_ABORT:Pi,formatBytesToProperUnit:pf,formatNumbersWithThousandSeparator:hf,get:lt,getArray:Or,getCurrentGlobalMTime:n1,getStateArrayMapFunc:vf,isVtkObject:Xi,keystore:Yi,measurePromiseExecution:yf,moveToProtected:sa,newInstance:De,newTypedArray:Rr,newTypedArrayFrom:Ai,normalizeWheel:Rf,obj:qe,proxy:wf,proxyPropertyMapping:_f,proxyPropertyState:Ef,safeArrays:df,set:aa,setArray:ji,setGet:He,setGetArray:Ki,setImmediate:Hi,setLoggerFunction:cf,throttle:Ii,traverseInstanceTree:ts,TYPED_ARRAYS:at,uncapitalize:gf,VOID:sf,vtkDebugMacro:es,vtkErrorMacro:ce,vtkInfoMacro:ff,vtkLogMacro:uf,vtkOnceErrorMacro:lf,vtkWarningMacro:zi},Jt=Object.freeze({__proto__:null,VOID:sf,setLoggerFunction:cf,vtkLogMacro:uf,vtkInfoMacro:ff,vtkDebugMacro:es,vtkErrorMacro:ce,vtkWarningMacro:zi,vtkOnceErrorMacro:lf,TYPED_ARRAYS:at,newTypedArray:Rr,newTypedArrayFrom:Ai,capitalize:hs,_capitalize:Ue,uncapitalize:gf,formatBytesToProperUnit:pf,formatNumbersWithThousandSeparator:hf,setImmediateVTK:Hi,measurePromiseExecution:yf,obj:qe,get:lt,set:aa,setGet:He,getArray:Or,setArray:ji,setGetArray:Ki,moveToProtected:sa,algo:Tf,EVENT_ABORT:Pi,event:xf,newInstance:De,chain:Sf,isVtkObject:Xi,traverseInstanceTree:ts,debounce:Cf,throttle:Ii,keystore:Yi,proxy:wf,proxyPropertyMapping:_f,proxyPropertyState:Ef,normalizeWheel:Rf,default:_});const{vtkErrorMacro:f1}=_,l1=["Build","Render"];function g1(t,e){e.classHierarchy.push("vtkViewNode"),t.build=r=>{},t.render=r=>{},t.traverse=r=>{const a=r.getTraverseOperation(),s=t[a];if(s){s(r);return}t.apply(r,!0);for(let i=0;i<e.children.length;i++)e.children[i].traverse(r);t.apply(r,!1)},t.apply=(r,a)=>{const s=t[r.getOperation()];s&&s(a,r)},t.getViewNodeFor=r=>{if(e.renderable===r)return t;for(let a=0;a<e.children.length;++a){const i=e.children[a].getViewNodeFor(r);if(i)return i}},t.getFirstAncestorOfType=r=>e._parent?e._parent.isA(r)?e._parent:e._parent.getFirstAncestorOfType(r):null,t.addMissingNode=r=>{if(!r)return;const a=e._renderableChildMap.get(r);if(a!==void 0)a.setVisited(!0);else{const s=t.createViewNode(r);s&&(s.setParent(t),s.setVisited(!0),e._renderableChildMap.set(r,s),e.children.push(s))}},t.addMissingNodes=r=>{if(!(!r||!r.length))for(let a=0;a<r.length;++a){const s=r[a],i=e._renderableChildMap.get(s);if(i!==void 0)i.setVisited(!0);else{const o=t.createViewNode(s);o&&(o.setParent(t),o.setVisited(!0),e._renderableChildMap.set(s,o),e.children.push(o))}}},t.addMissingChildren=r=>{if(!(!r||!r.length))for(let a=0;a<r.length;++a){const s=r[a];e.children.indexOf(s)===-1&&(s.setParent(t),e.children.push(s)),s.setVisited(!0)}},t.prepareNodes=()=>{for(let r=0;r<e.children.length;++r)e.children[r].setVisited(!1)},t.setVisited=r=>{e.visited=r},t.removeUnusedNodes=()=>{let r=0;for(let a=0;a<e.children.length;++a){const s=e.children[a];if(s.getVisited())e.children[r++]=s,s.setVisited(!1);else{const o=s.getRenderable();o&&e._renderableChildMap.delete(o),s.delete()}}e.children.length=r},t.createViewNode=r=>{if(!e.myFactory)return f1("Cannot create view nodes without my own factory"),null;const a=e.myFactory.createNode(r);return a&&a.setRenderable(r),a};const n=t.delete;t.delete=()=>{for(let r=0;r<e.children.length;r++)e.children[r].delete();n()}}const p1={renderable:null,myFactory:null,children:[],visited:!1};function Of(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,p1,n),_.obj(t,e),_.event(t,e,"event"),e._renderableChildMap=new Map,_.get(t,e,["visited"]),_.setGet(t,e,["_parent","renderable","myFactory"]),_.getArray(t,e,["children"]),_.moveToProtected(t,e,["parent"]),g1(t,e)}const h1=_.newInstance(Of,"vtkViewNode");var be={newInstance:h1,extend:Of,PASS_TYPES:l1};function d1(t,e){e.overrides||(e.overrides={}),e.classHierarchy.push("vtkViewNodeFactory"),t.createNode=n=>{if(n.isDeleted())return null;let r=0,a=n.getClassName(r++),s=!1;const i=Object.keys(e.overrides);for(;a&&!s;)i.indexOf(a)!==-1?s=!0:a=n.getClassName(r++);if(!s)return null;const o=e.overrides[a]();return o.setMyFactory(t),o},t.registerOverride=(n,r)=>{e.overrides[n]=r}}const v1={};function Df(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,v1,n),_.obj(t,e),d1(t,e)}const y1=_.newInstance(Df,"vtkViewNodeFactory");var mf={newInstance:y1,extend:Df};const Mf=Object.create(null);function At(t,e){Mf[t]=e}function T1(t,e){e.classHierarchy.push("vtkOpenGLViewNodeFactory")}const x1={};function Vf(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,x1,n),e.overrides=Mf,mf.extend(t,e,n),T1(t,e)}const S1=_.newInstance(Vf,"vtkOpenGLViewNodeFactory");var C1={newInstance:S1,extend:Vf};function w1(t,e){e.classHierarchy.push("vtkOpenGLCamera"),t.buildPass=n=>{n&&(e._openGLRenderer=t.getFirstAncestorOfType("vtkOpenGLRenderer"),e._openGLRenderWindow=e._openGLRenderer.getParent(),e.context=e._openGLRenderWindow.getContext())},t.opaquePass=n=>{if(n){const r=e._openGLRenderer.getTiledSizeAndOrigin();e.context.viewport(r.lowerLeftU,r.lowerLeftV,r.usize,r.vsize),e.context.scissor(r.lowerLeftU,r.lowerLeftV,r.usize,r.vsize)}},t.translucentPass=t.opaquePass,t.zBufferPass=t.opaquePass,t.opaqueZBufferPass=t.opaquePass,t.volumePass=t.opaquePass,t.getKeyMatrices=n=>{if(n!==e.lastRenderer||e._openGLRenderWindow.getMTime()>e.keyMatrixTime.getMTime()||t.getMTime()>e.keyMatrixTime.getMTime()||n.getMTime()>e.keyMatrixTime.getMTime()||e.renderable.getMTime()>e.keyMatrixTime.getMTime()){nt(e.keyMatrices.wcvc,e.renderable.getViewMatrix()),Fi(e.keyMatrices.normalMatrix,e.keyMatrices.wcvc),Ui(e.keyMatrices.normalMatrix,e.keyMatrices.normalMatrix),Ve(e.keyMatrices.wcvc,e.keyMatrices.wcvc);const r=e._openGLRenderer.getAspectRatio();nt(e.keyMatrices.vcpc,e.renderable.getProjectionMatrix(r,-1,1)),Ve(e.keyMatrices.vcpc,e.keyMatrices.vcpc),ft(e.keyMatrices.wcpc,e.keyMatrices.vcpc,e.keyMatrices.wcvc),e.keyMatrixTime.modified(),e.lastRenderer=n}return e.keyMatrices}}const _1={context:null,lastRenderer:null,keyMatrixTime:null,keyMatrices:null};function E1(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,_1,n),be.extend(t,e,n),e.keyMatrixTime={},qe(e.keyMatrixTime),e.keyMatrices={normalMatrix:new Float64Array(9),vcpc:new Float64Array(16),wcvc:new Float64Array(16),wcpc:new Float64Array(16)},He(t,e,["context","keyMatrixTime"]),w1(t,e)}const R1=De(E1);At("vtkCamera",R1);const{vtkDebugMacro:O1}=Jt;function D1(t,e){e.classHierarchy.push("vtkOpenGLRenderer"),t.buildPass=n=>{if(n){if(!e.renderable)return;t.updateLights(),t.prepareNodes(),t.addMissingNode(e.renderable.getActiveCamera()),t.addMissingNodes(e.renderable.getViewPropsWithNestedProps()),t.removeUnusedNodes()}},t.updateLights=()=>{let n=0;const r=e.renderable.getLightsByReference();for(let a=0;a<r.length;++a)r[a].getSwitch()>0&&n++;return n||(O1("No lights are on, creating one."),e.renderable.createLight()),n},t.zBufferPass=n=>{if(n){let r=0;const a=e.context;e.renderable.getTransparent()||(e.context.clearColor(1,0,0,1),r|=a.COLOR_BUFFER_BIT),e.renderable.getPreserveDepthBuffer()||(a.clearDepth(1),r|=a.DEPTH_BUFFER_BIT,e.context.depthMask(!0));const s=t.getTiledSizeAndOrigin();a.enable(a.SCISSOR_TEST),a.scissor(s.lowerLeftU,s.lowerLeftV,s.usize,s.vsize),a.viewport(s.lowerLeftU,s.lowerLeftV,s.usize,s.vsize),a.colorMask(!0,!0,!0,!0),r&&a.clear(r),a.enable(a.DEPTH_TEST)}},t.opaqueZBufferPass=n=>t.zBufferPass(n),t.cameraPass=n=>{n&&t.clear()},t.getAspectRatio=()=>{const n=e._parent.getSizeByReference(),r=e.renderable.getViewportByReference();return n[0]*(r[2]-r[0])/((r[3]-r[1])*n[1])},t.getTiledSizeAndOrigin=()=>{const n=e.renderable.getViewportByReference(),r=[0,0,1,1],a=n[0]-r[0],s=n[1]-r[1],i=e._parent.normalizedDisplayToDisplay(a,s),o=Math.round(i[0]),u=Math.round(i[1]),c=n[2]-r[0],f=n[3]-r[1],l=e._parent.normalizedDisplayToDisplay(c,f);let g=Math.round(l[0])-o,p=Math.round(l[1])-u;return g<0&&(g=0),p<0&&(p=0),{usize:g,vsize:p,lowerLeftU:o,lowerLeftV:u}},t.clear=()=>{let n=0;const r=e.context;if(!e.renderable.getTransparent()){const s=e.renderable.getBackgroundByReference();e.context.clearColor(s[0],s[1],s[2],s[3]),n|=r.COLOR_BUFFER_BIT}e.renderable.getPreserveDepthBuffer()||(r.clearDepth(1),n|=r.DEPTH_BUFFER_BIT,e.context.depthMask(!0)),r.colorMask(!0,!0,!0,!0);const a=t.getTiledSizeAndOrigin();r.enable(r.SCISSOR_TEST),r.scissor(a.lowerLeftU,a.lowerLeftV,a.usize,a.vsize),r.viewport(a.lowerLeftU,a.lowerLeftV,a.usize,a.vsize),n&&r.clear(n),r.enable(r.DEPTH_TEST)},t.releaseGraphicsResources=()=>{e.selector!==null&&e.selector.releaseGraphicsResources(),e.renderable&&e.renderable.getViewProps().forEach(n=>{n.modified()})},t.setOpenGLRenderWindow=n=>{e._openGLRenderWindow!==n&&(t.releaseGraphicsResources(),e._openGLRenderWindow=n,e.context=null,n&&(e.context=e._openGLRenderWindow.getContext()))}}const m1={context:null,_openGLRenderWindow:null,selector:null};function M1(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,m1,n),be.extend(t,e,n),lt(t,e,["shaderCache"]),He(t,e,["selector"]),sa(t,e,["openGLRenderWindow"]),D1(t,e)}const V1=De(M1,"vtkOpenGLRenderer");At("vtkRenderer",V1);function L1(t,e){e.classHierarchy.push("vtkOpenGLActor"),t.buildPass=n=>{if(n){e._openGLRenderWindow=t.getFirstAncestorOfType("vtkOpenGLRenderWindow"),e._openGLRenderer=t.getFirstAncestorOfType("vtkOpenGLRenderer"),e.context=e._openGLRenderWindow.getContext(),t.prepareNodes(),t.addMissingNodes(e.renderable.getTextures()),t.addMissingNode(e.renderable.getMapper()),t.removeUnusedNodes(),e.ogltextures=null,e.activeTextures=null;for(let r=0;r<e.children.length;r++){const a=e.children[r];a.isA("vtkOpenGLTexture")?(e.ogltextures||(e.ogltextures=[]),e.ogltextures.push(a)):e.oglmapper=a}}},t.traverseZBufferPass=n=>{!e.renderable||!e.renderable.getNestedVisibility()||e._openGLRenderer.getSelector()&&!e.renderable.getNestedPickable()||(t.apply(n,!0),e.oglmapper.traverse(n),t.apply(n,!1))},t.traverseOpaqueZBufferPass=n=>t.traverseOpaquePass(n),t.traverseOpaquePass=n=>{!e.renderable||!e.renderable.getNestedVisibility()||!e.renderable.getIsOpaque()||e._openGLRenderer.getSelector()&&!e.renderable.getNestedPickable()||(t.apply(n,!0),e.oglmapper.traverse(n),t.apply(n,!1))},t.traverseTranslucentPass=n=>{!e.renderable||!e.renderable.getNestedVisibility()||e.renderable.getIsOpaque()||e._openGLRenderer.getSelector()&&!e.renderable.getNestedPickable()||(t.apply(n,!0),e.oglmapper.traverse(n),t.apply(n,!1))},t.activateTextures=()=>{if(e.ogltextures){e.activeTextures=[];for(let n=0;n<e.ogltextures.length;n++){const r=e.ogltextures[n];r.render(),r.getHandle()&&e.activeTextures.push(r)}}},t.queryPass=(n,r)=>{if(n){if(!e.renderable||!e.renderable.getVisibility())return;e.renderable.getIsOpaque()?r.incrementOpaqueActorCount():r.incrementTranslucentActorCount()}},t.zBufferPass=(n,r)=>t.opaquePass(n,r),t.opaqueZBufferPass=(n,r)=>t.opaquePass(n,r),t.opaquePass=(n,r)=>{if(n)e.context.depthMask(!0),t.activateTextures();else if(e.activeTextures)for(let a=0;a<e.activeTextures.length;a++)e.activeTextures[a].deactivate()},t.translucentPass=(n,r)=>{if(n)e.context.depthMask(!1),t.activateTextures();else if(e.activeTextures)for(let a=0;a<e.activeTextures.length;a++)e.activeTextures[a].deactivate()},t.getKeyMatrices=()=>(e.renderable.getMTime()>e.keyMatrixTime.getMTime()&&(e.renderable.computeMatrix(),nt(e.keyMatrices.mcwc,e.renderable.getMatrix()),Ve(e.keyMatrices.mcwc,e.keyMatrices.mcwc),e.renderable.getIsIdentity()?Qn(e.keyMatrices.normalMatrix):(Fi(e.keyMatrices.normalMatrix,e.keyMatrices.mcwc),Ui(e.keyMatrices.normalMatrix,e.keyMatrices.normalMatrix),Ou(e.keyMatrices.normalMatrix,e.keyMatrices.normalMatrix)),e.keyMatrixTime.modified()),e.keyMatrices)}const B1={context:null,keyMatrixTime:null,keyMatrices:null,activeTextures:null};function k1(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,B1,n),be.extend(t,e,n),e.keyMatrixTime={},qe(e.keyMatrixTime,{mtime:0}),e.keyMatrices={normalMatrix:Qn(new Float64Array(9)),mcwc:le(new Float64Array(16))},He(t,e,["context"]),lt(t,e,["activeTextures"]),L1(t,e)}const F1=De(k1);At("vtkActor",F1);function U1(t,e){e.classHierarchy.push("vtkOpenGLActor2D"),t.buildPass=n=>{if(n){if(!e.renderable)return;e._openGLRenderWindow=t.getFirstAncestorOfType("vtkOpenGLRenderWindow"),e._openGLRenderer=t.getFirstAncestorOfType("vtkOpenGLRenderer"),e.context=e._openGLRenderWindow.getContext(),t.prepareNodes(),t.addMissingNodes(e.renderable.getTextures()),t.addMissingNode(e.renderable.getMapper()),t.removeUnusedNodes(),e.ogltextures=null,e.activeTextures=null;for(let r=0;r<e.children.length;r++){const a=e.children[r];a.isA("vtkOpenGLTexture")?(e.ogltextures||(e.ogltextures=[]),e.ogltextures.push(a)):e.oglmapper=a}}},t.queryPass=(n,r)=>{if(n){if(!e.renderable||!e.renderable.getVisibility())return;r.incrementOverlayActorCount()}},t.traverseOpaquePass=n=>{!e.oglmapper||!e.renderable||!e.renderable.getNestedVisibility()||!e.renderable.getIsOpaque()||e._openGLRenderer.getSelector()&&!e.renderable.getNestedPickable()||(t.apply(n,!0),e.oglmapper.traverse(n),t.apply(n,!1))},t.traverseTranslucentPass=n=>{!e.oglmapper||!e.renderable||!e.renderable.getNestedVisibility()||e.renderable.getIsOpaque()||e._openGLRenderer.getSelector()&&!e.renderable.getNestedPickable()||(t.apply(n,!0),e.oglmapper.traverse(n),t.apply(n,!1))},t.traverseOverlayPass=n=>{!e.oglmapper||!e.renderable||!e.renderable.getNestedVisibility()||e._openGLRenderer.getSelector()&&!e.renderable.getNestedPickable||(t.apply(n,!0),e.oglmapper.traverse(n),t.apply(n,!1))},t.activateTextures=()=>{if(e.ogltextures){e.activeTextures=[];for(let n=0;n<e.ogltextures.length;n++){const r=e.ogltextures[n];r.render(),r.getHandle()&&e.activeTextures.push(r)}}},t.opaquePass=(n,r)=>{if(n)e.context.depthMask(!0),t.activateTextures();else if(e.activeTextures)for(let a=0;a<e.activeTextures.length;a++)e.activeTextures[a].deactivate()},t.translucentPass=(n,r)=>{if(n)e.context.depthMask(!1),t.activateTextures();else if(e.activeTextures)for(let a=0;a<e.activeTextures.length;a++)e.activeTextures[a].deactivate()},t.overlayPass=(n,r)=>{if(n)e.context.depthMask(!0),t.activateTextures();else if(e.activeTextures)for(let a=0;a<e.activeTextures.length;a++)e.activeTextures[a].deactivate()}}const b1={context:null,activeTextures:null};function N1(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,b1,n),be.extend(t,e,n),He(t,e,["context"]),lt(t,e,["activeTextures"]),U1(t,e)}const G1=De(N1);At("vtkActor2D",G1);var qi={exports:{}};qi.exports;(function(t){(function(e,n,r){function a(u){var c=this,f=o();c.next=function(){var l=2091639*c.s0+c.c*23283064365386963e-26;return c.s0=c.s1,c.s1=c.s2,c.s2=l-(c.c=l|0)},c.c=1,c.s0=f(" "),c.s1=f(" "),c.s2=f(" "),c.s0-=f(u),c.s0<0&&(c.s0+=1),c.s1-=f(u),c.s1<0&&(c.s1+=1),c.s2-=f(u),c.s2<0&&(c.s2+=1),f=null}function s(u,c){return c.c=u.c,c.s0=u.s0,c.s1=u.s1,c.s2=u.s2,c}function i(u,c){var f=new a(u),l=c&&c.state,g=f.next;return g.int32=function(){return f.next()*4294967296|0},g.double=function(){return g()+(g()*2097152|0)*11102230246251565e-32},g.quick=g,l&&(typeof l=="object"&&s(l,f),g.state=function(){return s(f,{})}),g}function o(){var u=4022871197,c=function(f){f=String(f);for(var l=0;l<f.length;l++){u+=f.charCodeAt(l);var g=.02519603282416938*u;u=g>>>0,g-=u,g*=u,u=g>>>0,g-=u,u+=g*4294967296}return(u>>>0)*23283064365386963e-26};return c}n&&n.exports?n.exports=i:r&&r.amd?r(function(){return i}):this.alea=i})(Ot,t,!1)})(qi);var $1=qi.exports,Qi={exports:{}};Qi.exports;(function(t){(function(e,n,r){function a(o){var u=this,c="";u.x=0,u.y=0,u.z=0,u.w=0,u.next=function(){var l=u.x^u.x<<11;return u.x=u.y,u.y=u.z,u.z=u.w,u.w^=u.w>>>19^l^l>>>8},o===(o|0)?u.x=o:c+=o;for(var f=0;f<c.length+64;f++)u.x^=c.charCodeAt(f)|0,u.next()}function s(o,u){return u.x=o.x,u.y=o.y,u.z=o.z,u.w=o.w,u}function i(o,u){var c=new a(o),f=u&&u.state,l=function(){return(c.next()>>>0)/4294967296};return l.double=function(){do var g=c.next()>>>11,p=(c.next()>>>0)/4294967296,y=(g+p)/(1<<21);while(y===0);return y},l.int32=c.next,l.quick=l,f&&(typeof f=="object"&&s(f,c),l.state=function(){return s(c,{})}),l}n&&n.exports?n.exports=i:r&&r.amd?r(function(){return i}):this.xor128=i})(Ot,t,!1)})(Qi);var W1=Qi.exports,Zi={exports:{}};Zi.exports;(function(t){(function(e,n,r){function a(o){var u=this,c="";u.next=function(){var l=u.x^u.x>>>2;return u.x=u.y,u.y=u.z,u.z=u.w,u.w=u.v,(u.d=u.d+362437|0)+(u.v=u.v^u.v<<4^(l^l<<1))|0},u.x=0,u.y=0,u.z=0,u.w=0,u.v=0,o===(o|0)?u.x=o:c+=o;for(var f=0;f<c.length+64;f++)u.x^=c.charCodeAt(f)|0,f==c.length&&(u.d=u.x<<10^u.x>>>4),u.next()}function s(o,u){return u.x=o.x,u.y=o.y,u.z=o.z,u.w=o.w,u.v=o.v,u.d=o.d,u}function i(o,u){var c=new a(o),f=u&&u.state,l=function(){return(c.next()>>>0)/4294967296};return l.double=function(){do var g=c.next()>>>11,p=(c.next()>>>0)/4294967296,y=(g+p)/(1<<21);while(y===0);return y},l.int32=c.next,l.quick=l,f&&(typeof f=="object"&&s(f,c),l.state=function(){return s(c,{})}),l}n&&n.exports?n.exports=i:r&&r.amd?r(function(){return i}):this.xorwow=i})(Ot,t,!1)})(Zi);var z1=Zi.exports,Ji={exports:{}};Ji.exports;(function(t){(function(e,n,r){function a(o){var u=this;u.next=function(){var f=u.x,l=u.i,g,p;return g=f[l],g^=g>>>7,p=g^g<<24,g=f[l+1&7],p^=g^g>>>10,g=f[l+3&7],p^=g^g>>>3,g=f[l+4&7],p^=g^g<<7,g=f[l+7&7],g=g^g<<13,p^=g^g<<9,f[l]=p,u.i=l+1&7,p};function c(f,l){var g,p=[];if(l===(l|0))p[0]=l;else for(l=""+l,g=0;g<l.length;++g)p[g&7]=p[g&7]<<15^l.charCodeAt(g)+p[g+1&7]<<13;for(;p.length<8;)p.push(0);for(g=0;g<8&&p[g]===0;++g);for(g==8?p[7]=-1:p[g],f.x=p,f.i=0,g=256;g>0;--g)f.next()}c(u,o)}function s(o,u){return u.x=o.x.slice(),u.i=o.i,u}function i(o,u){o==null&&(o=+new Date);var c=new a(o),f=u&&u.state,l=function(){return(c.next()>>>0)/4294967296};return l.double=function(){do var g=c.next()>>>11,p=(c.next()>>>0)/4294967296,y=(g+p)/(1<<21);while(y===0);return y},l.int32=c.next,l.quick=l,f&&(f.x&&s(f,c),l.state=function(){return s(c,{})}),l}n&&n.exports?n.exports=i:r&&r.amd?r(function(){return i}):this.xorshift7=i})(Ot,t,!1)})(Ji);var A1=Ji.exports,eo={exports:{}};eo.exports;(function(t){(function(e,n,r){function a(o){var u=this;u.next=function(){var f=u.w,l=u.X,g=u.i,p,y;return u.w=f=f+1640531527|0,y=l[g+34&127],p=l[g=g+1&127],y^=y<<13,p^=p<<17,y^=y>>>15,p^=p>>>12,y=l[g]=y^p,u.i=g,y+(f^f>>>16)|0};function c(f,l){var g,p,y,h,d,x=[],S=128;for(l===(l|0)?(p=l,l=null):(l=l+"\0",p=0,S=Math.max(S,l.length)),y=0,h=-32;h<S;++h)l&&(p^=l.charCodeAt((h+32)%l.length)),h===0&&(d=p),p^=p<<10,p^=p>>>15,p^=p<<4,p^=p>>>13,h>=0&&(d=d+1640531527|0,g=x[h&127]^=p+d,y=g==0?y+1:0);for(y>=128&&(x[(l&&l.length||0)&127]=-1),y=127,h=4*128;h>0;--h)p=x[y+34&127],g=x[y=y+1&127],p^=p<<13,g^=g<<17,p^=p>>>15,g^=g>>>12,x[y]=p^g;f.w=d,f.X=x,f.i=y}c(u,o)}function s(o,u){return u.i=o.i,u.w=o.w,u.X=o.X.slice(),u}function i(o,u){o==null&&(o=+new Date);var c=new a(o),f=u&&u.state,l=function(){return(c.next()>>>0)/4294967296};return l.double=function(){do var g=c.next()>>>11,p=(c.next()>>>0)/4294967296,y=(g+p)/(1<<21);while(y===0);return y},l.int32=c.next,l.quick=l,f&&(f.X&&s(f,c),l.state=function(){return s(c,{})}),l}n&&n.exports?n.exports=i:r&&r.amd?r(function(){return i}):this.xor4096=i})(Ot,t,!1)})(eo);var H1=eo.exports,to={exports:{}};to.exports;(function(t){(function(e,n,r){function a(o){var u=this,c="";u.next=function(){var l=u.b,g=u.c,p=u.d,y=u.a;return l=l<<25^l>>>7^g,g=g-p|0,p=p<<24^p>>>8^y,y=y-l|0,u.b=l=l<<20^l>>>12^g,u.c=g=g-p|0,u.d=p<<16^g>>>16^y,u.a=y-l|0},u.a=0,u.b=0,u.c=-1640531527,u.d=1367130551,o===Math.floor(o)?(u.a=o/4294967296|0,u.b=o|0):c+=o;for(var f=0;f<c.length+20;f++)u.b^=c.charCodeAt(f)|0,u.next()}function s(o,u){return u.a=o.a,u.b=o.b,u.c=o.c,u.d=o.d,u}function i(o,u){var c=new a(o),f=u&&u.state,l=function(){return(c.next()>>>0)/4294967296};return l.double=function(){do var g=c.next()>>>11,p=(c.next()>>>0)/4294967296,y=(g+p)/(1<<21);while(y===0);return y},l.int32=c.next,l.quick=l,f&&(typeof f=="object"&&s(f,c),l.state=function(){return s(c,{})}),l}n&&n.exports?n.exports=i:r&&r.amd?r(function(){return i}):this.tychei=i})(Ot,t,!1)})(to);var j1=to.exports,Lf={exports:{}};const K1={},P1=Object.freeze(Object.defineProperty({__proto__:null,default:K1},Symbol.toStringTag,{value:"Module"})),X1=W0(P1);(function(t){(function(e,n,r){var a=256,s=6,i=52,o="random",u=r.pow(a,s),c=r.pow(2,i),f=c*2,l=a-1,g;function p(T,w,C){var R=[];w=w==!0?{entropy:!0}:w||{};var m=x(d(w.entropy?[T,v(n)]:T??S(),3),R),B=new y(R),M=function(){for(var D=B.g(s),L=u,b=0;D<c;)D=(D+b)*a,L*=a,b=B.g(1);for(;D>=f;)D/=2,L/=2,b>>>=1;return(D+b)/L};return M.int32=function(){return B.g(4)|0},M.quick=function(){return B.g(4)/4294967296},M.double=M,x(v(B.S),n),(w.pass||C||function(D,L,b,$){return $&&($.S&&h($,B),D.state=function(){return h(B,{})}),b?(r[o]=D,L):D})(M,m,"global"in w?w.global:this==r,w.state)}function y(T){var w,C=T.length,R=this,m=0,B=R.i=R.j=0,M=R.S=[];for(C||(T=[C++]);m<a;)M[m]=m++;for(m=0;m<a;m++)M[m]=M[B=l&B+T[m%C]+(w=M[m])],M[B]=w;(R.g=function(D){for(var L,b=0,$=R.i,Q=R.j,Y=R.S;D--;)L=Y[$=l&$+1],b=b*a+Y[l&(Y[$]=Y[Q=l&Q+L])+(Y[Q]=L)];return R.i=$,R.j=Q,b})(a)}function h(T,w){return w.i=T.i,w.j=T.j,w.S=T.S.slice(),w}function d(T,w){var C=[],R=typeof T,m;if(w&&R=="object")for(m in T)try{C.push(d(T[m],w-1))}catch{}return C.length?C:R=="string"?T:T+"\0"}function x(T,w){for(var C=T+"",R,m=0;m<C.length;)w[l&m]=l&(R^=w[l&m]*19)+C.charCodeAt(m++);return v(w)}function S(){try{var T;return g&&(T=g.randomBytes)?T=T(a):(T=new Uint8Array(a),(e.crypto||e.msCrypto).getRandomValues(T)),v(T)}catch{var w=e.navigator,C=w&&w.plugins;return[+new Date,e,C,e.screen,v(n)]}}function v(T){return String.fromCharCode.apply(0,T)}if(x(r.random(),n),t.exports){t.exports=p;try{g=X1}catch{}}else r["seed"+o]=p})(typeof self<"u"?self:Ot,[],Math)})(Lf);var I1=Lf.exports,Y1=$1,q1=W1,Q1=z1,Z1=A1,J1=H1,ev=j1,Dr=I1;Dr.alea=Y1;Dr.xor128=q1;Dr.xorwow=Q1;Dr.xorshift7=Z1;Dr.xor4096=J1;Dr.tychei=ev;const tv=1e-6,nv=1e-12,{vtkErrorMacro:hL,vtkWarningMacro:hc}=_;function di(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:3;const e=Array(t);for(let n=0;n<t;++n)e[n]=0;return e}function Ge(t){return t/180*Math.PI}function Qr(t){return t*180/Math.PI}const{round:pa,floor:rv,ceil:dL,min:vL,max:yL}=Math;function Ut(t){let e=1;for(;e<t;)e*=2;return e}function ha(t){return t===Ut(t)}function Fs(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;const n=(arguments.length>1&&arguments[1]!==void 0?arguments[1]:1)-t;return t+n*Math.random()}function vi(t,e,n){return n[0]=t[0]+e[0],n[1]=t[1]+e[1],n[2]=t[2]+e[2],n}function un(t,e,n){return n[0]=t[0]-e[0],n[1]=t[1]-e[1],n[2]=t[2]-e[2],n}function dc(t,e,n,r){return r[0]=t[0]+e[0]*n,r[1]=t[1]+e[1]*n,r[2]=t[2]+e[2]*n,r}function ge(t,e){return t[0]*e[0]+t[1]*e[1]+t[2]*e[2]}function Zr(t,e,n){const r=t[1]*e[2]-t[2]*e[1],a=t[2]*e[0]-t[0]*e[2],s=t[0]*e[1]-t[1]*e[0];return n[0]=r,n[1]=a,n[2]=s,n}function no(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:3;switch(e){case 1:return Math.abs(t);case 2:return Math.sqrt(t[0]*t[0]+t[1]*t[1]);case 3:return Math.sqrt(t[0]*t[0]+t[1]*t[1]+t[2]*t[2]);default:{let n=0;for(let r=0;r<e;r++)n+=t[r]*t[r];return Math.sqrt(n)}}}function Jr(t){const e=no(t);return e!==0&&(t[0]/=e,t[1]/=e,t[2]/=e),e}function Yt(t,e){return(t[0]-e[0])*(t[0]-e[0])+(t[1]-e[1])*(t[1]-e[1])+(t[2]-e[2])*(t[2]-e[2])}function av(t){return Math.sqrt(t[0]*t[0]+t[1]*t[1])}function sv(t){const e=av(t);return e!==0&&(t[0]/=e,t[1]/=e),e}function Wa(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];return e.length===2?e[0][0]*e[1][1]-e[1][0]*e[0][1]:e.length===4?e[0]*e[3]-e[1]*e[2]:Number.NaN}function iv(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:tv;if(t.length!==e.length)return!1;function r(a,s){return Math.abs(a-e[s])<=n}return t.every(r)}const ov=iv;function Us(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;if(!`${t}`.includes("e"))return+`${Math.round(`${t}e+${e}`)}e-${e}`;const n=`${t}`.split("e");let r="";return+n[1]+e>0&&(r="+"),+`${Math.round(`${+n[0]}e${r}${+n[1]+e}`)}e-${e}`}function vc(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[0,0,0],n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0;return e[0]=Us(t[0],n),e[1]=Us(t[1],n),e[2]=Us(t[2],n),e}function cv(t,e,n){let r,a,s,i,o=0,u,c,f;const l=di(n);for(r=0;r<n;r++){for(i=0,a=0;a<n;a++)(f=Math.abs(t[r*n+a]))>i&&(i=f);if(i===0)return hc("Unable to factor linear system"),0;l[r]=1/i}for(a=0;a<n;a++){for(r=0;r<a;r++){for(u=t[r*n+a],s=0;s<r;s++)u-=t[r*n+s]*t[s*n+a];t[r*n+a]=u}for(i=0,r=a;r<n;r++){for(u=t[r*n+a],s=0;s<a;s++)u-=t[r*n+s]*t[s*n+a];t[r*n+a]=u,(c=l[r]*Math.abs(u))>=i&&(i=c,o=r)}if(a!==o){for(s=0;s<n;s++)c=t[o*n+s],t[o*n+s]=t[a*n+s],t[a*n+s]=c;l[o]=l[a]}if(e[a]=o,Math.abs(t[a*n+a])<=nv)return hc("Unable to factor linear system"),0;if(a!==n-1)for(c=1/t[a*n+a],r=a+1;r<n;r++)t[r*n+a]*=c}return 1}function uv(t,e,n,r){let a,s,i,o,u;for(i=-1,a=0;a<r;a++){if(o=e[a],u=n[o],n[o]=n[a],i>=0)for(s=i;s<=a-1;s++)u-=t[a*r+s]*n[s];else u!==0&&(i=a);n[a]=u}for(a=r-1;a>=0;a--){for(u=n[a],s=a+1;s<r;s++)u-=t[a*r+s]*n[s];n[a]=u/t[a*r+a]}}function fv(t,e,n){if(n===2){const a=di(2),s=Wa(t[0],t[1],t[2],t[3]);return s===0?0:(a[0]=(t[3]*e[0]-t[1]*e[1])/s,a[1]=(-(t[2]*e[0])+t[0]*e[1])/s,e[0]=a[0],e[1]=a[1],1)}if(n===1)return t[0]===0?0:(e[0]/=t[0],1);const r=di(n);return cv(t,r,n)===0?0:(uv(t,r,e,n),1)}function da(t,e){let n,r;const[a,s,i]=t,o=1/3,u=1/6,c=2/3;let f=a,l=a;s>f?f=s:s<l&&(l=s),i>f?f=i:i<l&&(l=i);const g=f;g>0?r=(f-l)/f:r=0,r>0?(a===f?n=u*(s-i)/(f-l):s===f?n=o+u*(i-a)/(f-l):n=c+u*(a-s)/(f-l),n<0&&(n+=1)):n=0,e[0]=n,e[1]=r,e[2]=g}function cr(t,e){const[n,r,a]=t,s=1/3,i=1/6,o=2/3,u=5/6;let c,f,l;n>i&&n<=s?(f=1,c=(s-n)/i,l=0):n>s&&n<=.5?(f=1,l=(n-s)/i,c=0):n>.5&&n<=o?(l=1,f=(o-n)/i,c=0):n>o&&n<=u?(l=1,c=(n-o)/i,f=0):n>u&&n<=1?(c=1,l=(1-n)/i,f=0):(c=1,f=n/i,l=0),c=r*c+(1-r),f=r*f+(1-r),l=r*l+(1-r),c*=a,f*=a,l*=a,e[0]=c,e[1]=f,e[2]=l}function lv(t,e){const[n,r,a]=t;let s=(n+16)/116,i=r/500+s,o=s-a/200;s**3>.008856?s**=3:s=(s-16/116)/7.787,i**3>.008856?i**=3:i=(i-16/116)/7.787,o**3>.008856?o**=3:o=(o-16/116)/7.787;const u=.9505,c=1,f=1.089;e[0]=u*i,e[1]=c*s,e[2]=f*o}function gv(t,e){const[n,r,a]=t,s=.9505,i=1,o=1.089;let u=n/s,c=r/i,f=a/o;u>.008856?u**=1/3:u=7.787*u+16/116,c>.008856?c**=1/3:c=7.787*c+16/116,f>.008856?f**=1/3:f=7.787*f+16/116,e[0]=116*c-16,e[1]=500*(u-c),e[2]=200*(c-f)}function pv(t,e){const[n,r,a]=t;let s=n*3.2406+r*-1.5372+a*-.4986,i=n*-.9689+r*1.8758+a*.0415,o=n*.0557+r*-.204+a*1.057;s>.0031308?s=1.055*s**(1/2.4)-.055:s*=12.92,i>.0031308?i=1.055*i**(1/2.4)-.055:i*=12.92,o>.0031308?o=1.055*o**(1/2.4)-.055:o*=12.92;let u=s;u<i&&(u=i),u<o&&(u=o),u>1&&(s/=u,i/=u,o/=u),s<0&&(s=0),i<0&&(i=0),o<0&&(o=0),e[0]=s,e[1]=i,e[2]=o}function hv(t,e){let[n,r,a]=t;n>.04045?n=((n+.055)/1.055)**2.4:n/=12.92,r>.04045?r=((r+.055)/1.055)**2.4:r/=12.92,a>.04045?a=((a+.055)/1.055)**2.4:a/=12.92,e[0]=n*.4124+r*.3576+a*.1805,e[1]=n*.2126+r*.7152+a*.0722,e[2]=n*.0193+r*.1192+a*.9505}function gr(t,e){const n=[0,0,0];hv(t,n),gv(n,e)}function yi(t,e){const n=[0,0,0];lv(t,n),pv(n,e)}function ro(t){return t[0]=1,t[1]=-1,t[2]=1,t[3]=-1,t[4]=1,t[5]=-1,t}function bs(t){return!(t[1]-t[0]<0)}function Ns(t,e,n){return t<e?e:t>n?n:t}function yc(t,e,n){let r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:[0,0,0];return r[0]=Ns(t[0],e[0],n[0]),r[1]=Ns(t[1],e[1],n[1]),r[2]=Ns(t[2],e[2],n[2]),r}const dv=t=>!Number.isFinite(t),{isFinite:TL,isNaN:vv}=Number,ns=vv;function ao(){return[].concat([Number.MAX_VALUE,-Number.MAX_VALUE,Number.MAX_VALUE,-Number.MAX_VALUE,Number.MAX_VALUE,-Number.MAX_VALUE])}const Ti=1e-6,Bf="coincide",kf="disjoint";function yv(t,e,n){return t[0]*(n[0]-e[0])+t[1]*(n[1]-e[1])+t[2]*(n[2]-e[2])}function Ff(t,e,n){const r=n[0]*(t[0]-e[0])+n[1]*(t[1]-e[1])+n[2]*(t[2]-e[2]);return Math.abs(r)}function Uf(t,e,n,r){const a=[];un(t,e,a);const s=ge(n,a);r[0]=t[0]-s*n[0],r[1]=t[1]-s*n[1],r[2]=t[2]-s*n[2]}function bf(t,e,n){const r=ge(t,e);let a=ge(e,e);return a===0&&(a=1),n[0]=t[0]-r*e[0]/a,n[1]=t[1]-r*e[1]/a,n[2]=t[2]-r*e[2]/a,n}function Nf(t,e,n,r){const a=[];un(t,e,a);const s=ge(n,a),i=ge(n,n);i!==0?(r[0]=t[0]-s*n[0]/i,r[1]=t[1]-s*n[1]/i,r[2]=t[2]-s*n[2]/i):(r[0]=t[0],r[1]=t[1],r[2]=t[2])}function Gf(t,e,n,r){const a={intersection:!1,betweenPoints:!1,t:Number.MAX_VALUE,x:[]},s=[],i=[];un(e,t,s),un(n,t,i);const o=ge(r,i),u=ge(r,s);let c,f;return u<0?c=-u:c=u,o<0?f=-o*Ti:f=o*Ti,c<=f||(a.t=o/u,a.x[0]=t[0]+a.t*s[0],a.x[1]=t[1]+a.t*s[1],a.x[2]=t[2]+a.t*s[2],a.intersection=!0,a.betweenPoints=a.t>=0&&a.t<=1),a}function $f(t,e,n,r){const a={intersection:!1,l0:[],l1:[],error:null},s=[];Zr(e,r,s);const i=s.map(l=>Math.abs(l));if(i[0]+i[1]+i[2]<Ti){const l=[];return un(t,n,l),ge(e,l)===0?a.error=Bf:a.error=kf,a}let o;i[0]>i[1]&&i[0]>i[2]?o="x":i[1]>i[2]?o="y":o="z";const u=[],c=-ge(e,t),f=-ge(r,n);switch(o){case"x":u[0]=0,u[1]=(f*e[2]-c*r[2])/s[0],u[2]=(c*r[1]-f*e[1])/s[0];break;case"y":u[0]=(c*r[2]-f*e[2])/s[1],u[1]=0,u[2]=(f*e[0]-c*r[0])/s[1];break;case"z":u[0]=(f*e[1]-c*r[1])/s[2],u[1]=(c*r[0]-f*e[0])/s[2],u[2]=0;break}return a.l0=u,vi(u,s,a.l1),a.intersection=!0,a}const Tv={evaluate:yv,distanceToPlane:Ff,projectPoint:Uf,projectVector:bf,generalizedProjectPoint:Nf,intersectWithLine:Gf,intersectWithPlane:$f,DISJOINT:kf,COINCIDE:Bf};function xv(t,e){e.classHierarchy.push("vtkPlane"),t.distanceToPlane=n=>Ff(n,e.origin,e.normal),t.projectPoint=(n,r)=>{Uf(n,e.origin,e.normal,r)},t.projectVector=(n,r)=>bf(n,e.normal,r),t.push=n=>{if(n!==0)for(let r=0;r<3;r++)e.origin[r]+=n*e.normal[r]},t.generalizedProjectPoint=(n,r)=>{Nf(n,e.origin,e.normal,r)},t.evaluateFunction=(n,r,a)=>Array.isArray(n)?e.normal[0]*(n[0]-e.origin[0])+e.normal[1]*(n[1]-e.origin[1])+e.normal[2]*(n[2]-e.origin[2]):e.normal[0]*(n-e.origin[0])+e.normal[1]*(r-e.origin[1])+e.normal[2]*(a-e.origin[2]),t.evaluateGradient=n=>[e.normal[0],e.normal[1],e.normal[2]],t.intersectWithLine=(n,r)=>Gf(n,r,e.origin,e.normal),t.intersectWithPlane=(n,r)=>$f(n,r,e.origin,e.normal)}const Sv={normal:[0,0,1],origin:[0,0,0]};function Wf(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Sv,n),_.obj(t,e),_.setGetArray(t,e,["normal","origin"],3),xv(t,e)}const Cv=_.newInstance(Wf,"vtkPlane");var Cr={newInstance:Cv,extend:Wf,...Tv};const ds=[Number.MAX_VALUE,-Number.MAX_VALUE,Number.MAX_VALUE,-Number.MAX_VALUE,Number.MAX_VALUE,-Number.MAX_VALUE];function zf(t,e){return t[0]===e[0]&&t[1]===e[1]&&t[2]===e[2]&&t[3]===e[3]&&t[4]===e[4]&&t[5]===e[5]}function fn(t){return(t==null?void 0:t.length)>=6&&t[0]<=t[1]&&t[2]<=t[3]&&t[4]<=t[5]}function so(t,e){return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t}function io(t){return so(t,ds)}function rs(t,e,n,r){const[a,s,i,o,u,c]=t;return t[0]=a<e?a:e,t[1]=s>e?s:e,t[2]=i<n?i:n,t[3]=o>n?o:n,t[4]=u<r?u:r,t[5]=c>r?c:r,t}function oo(t,e){if(e.length===0)return t;if(Array.isArray(e[0]))for(let n=0;n<e.length;++n)rs(t,...e[n]);else for(let n=0;n<e.length;n+=3)rs(t,...e.slice(n,n+3));return t}function Af(t,e,n,r,a,s,i){const[o,u,c,f,l,g]=t;return i===void 0?(t[0]=Math.min(e[0],o),t[1]=Math.max(e[1],u),t[2]=Math.min(e[2],c),t[3]=Math.max(e[3],f),t[4]=Math.min(e[4],l),t[5]=Math.max(e[5],g)):(t[0]=Math.min(e,o),t[1]=Math.max(n,u),t[2]=Math.min(r,c),t[3]=Math.max(a,f),t[4]=Math.min(s,l),t[5]=Math.max(i,g)),t}function Hf(t,e,n,r){const[a,s,i,o,u,c]=t;return t[0]=e,t[1]=e>s?e:s,t[2]=n,t[3]=n>o?n:o,t[4]=r,t[5]=r>c?r:c,a!==e||i!==n||u!==r}function jf(t,e,n,r){const[a,s,i,o,u,c]=t;return t[0]=e<a?e:a,t[1]=e,t[2]=n<i?n:i,t[3]=n,t[4]=r<u?r:u,t[5]=r,s!==e||o!==n||c!==r}function Kf(t,e){return t[0]-=e,t[1]+=e,t[2]-=e,t[3]+=e,t[4]-=e,t[5]+=e,t}function co(t,e,n,r){return fn(t)?(e>=0?(t[0]*=e,t[1]*=e):(t[0]=e*t[1],t[1]=e*t[0]),n>=0?(t[2]*=n,t[3]*=n):(t[2]=n*t[3],t[3]=n*t[2]),r>=0?(t[4]*=r,t[5]*=r):(t[4]=r*t[5],t[5]=r*t[4]),!0):!1}function uo(t){return[.5*(t[0]+t[1]),.5*(t[2]+t[3]),.5*(t[4]+t[5])]}function wv(t,e,n,r){if(!fn(t))return!1;const a=uo(t);return t[0]-=a[0],t[1]-=a[0],t[2]-=a[1],t[3]-=a[1],t[4]-=a[2],t[5]-=a[2],co(t,e,n,r),t[0]+=a[0],t[1]+=a[0],t[2]+=a[1],t[3]+=a[1],t[4]+=a[2],t[5]+=a[2],!0}function jr(t,e){return t[e*2+1]-t[e*2]}function vs(t){return[jr(t,0),jr(t,1),jr(t,2)]}function Pf(t){return t.slice(0,2)}function Xf(t){return t.slice(2,4)}function If(t){return t.slice(4,6)}function Yf(t){const e=vs(t);return e[0]>e[1]?e[0]>e[2]?e[0]:e[2]:e[1]>e[2]?e[1]:e[2]}function qf(t){if(fn(t)){const e=vs(t);return Math.sqrt(e[0]*e[0]+e[1]*e[1]+e[2]*e[2])}return null}function fo(t){return[t[0],t[2],t[4]]}function lo(t){return[t[1],t[3],t[5]]}function va(t,e){return t<=0&&e>=0||t>=0&&e<=0}function go(t,e){let n=0;for(let r=0;r<2;r++)for(let a=2;a<4;a++)for(let s=4;s<6;s++)e[n++]=[t[r],t[a],t[s]];return e}function Qf(t,e,n){return e[0]=t[0],e[1]=t[2],e[2]=t[4],n[0]=t[1],n[1]=t[3],n[2]=t[5],e}function Zf(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:[];const r=go(t,[]);for(let a=0;a<r.length;++a)Se(r[a],r[a],e);return io(n),oo(n,r)}function Jf(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];return e[0]=.5*(t[1]-t[0]),e[1]=.5*(t[3]-t[2]),e[2]=.5*(t[5]-t[4]),e}function el(t,e,n,r){const a=[].concat(ds),s=t.getData();for(let i=0;i<s.length;i+=3){const o=[s[i],s[i+1],s[i+2]],u=ge(o,e);a[0]=Math.min(u,a[0]),a[1]=Math.max(u,a[1]);const c=ge(o,n);a[2]=Math.min(c,a[2]),a[3]=Math.max(c,a[3]);const f=ge(o,r);a[4]=Math.min(f,a[4]),a[5]=Math.max(f,a[5])}return a}function tl(t,e,n,r,a){let s=!0;const i=[];let o=0;const u=[],c=[0,0,0],f=0,l=1,g=2;for(let p=0;p<3;p++)e[p]<t[2*p]?(i[p]=l,c[p]=t[2*p],s=!1):e[p]>t[2*p+1]?(i[p]=f,c[p]=t[2*p+1],s=!1):i[p]=g;if(s)return r[0]=e[0],r[1]=e[1],r[2]=e[2],a[0]=0,1;for(let p=0;p<3;p++)i[p]!==g&&n[p]!==0?u[p]=(c[p]-e[p])/n[p]:u[p]=-1;for(let p=0;p<3;p++)u[o]<u[p]&&(o=p);if(u[o]>1||u[o]<0)return 0;a[0]=u[o];for(let p=0;p<3;p++)if(o!==p){if(r[p]=e[p]+u[o]*n[p],r[p]<t[2*p]||r[p]>t[2*p+1])return 0}else r[p]=c[p];return 1}function nl(t,e,n){const r=[];let a=0,s=1,i=1;for(let o=4;o<=5;++o){r[2]=t[o];for(let u=2;u<=3;++u){r[1]=t[u];for(let c=0;c<=1;++c)if(r[0]=t[c],a=Cr.evaluate(n,e,r),i&&(s=a>=0?1:-1,i=0),a===0||s>0&&a<0||s<0&&a>0)return 1}}return 0}function rl(t,e){if(!(fn(t)&&fn(e)))return!1;const n=[0,0,0,0,0,0];let r;for(let a=0;a<3;a++)if(r=!1,e[a*2]>=t[a*2]&&e[a*2]<=t[a*2+1]?(r=!0,n[a*2]=e[a*2]):t[a*2]>=e[a*2]&&t[a*2]<=e[a*2+1]&&(r=!0,n[a*2]=t[a*2]),e[a*2+1]>=t[a*2]&&e[a*2+1]<=t[a*2+1]?(r=!0,n[a*2+1]=e[2*a+1]):t[a*2+1]>=e[a*2]&&t[a*2+1]<=e[a*2+1]&&(r=!0,n[a*2+1]=t[a*2+1]),!r)return!1;return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[4]=n[4],t[5]=n[5],!0}function as(t,e){if(!(fn(t)&&fn(e)))return!1;for(let n=0;n<3;n++)if(!(e[n*2]>=t[n*2]&&e[n*2]<=t[n*2+1])&&!(t[n*2]>=e[n*2]&&t[n*2]<=e[n*2+1])&&!(e[n*2+1]>=t[n*2]&&e[n*2+1]<=t[n*2+1])&&!(t[n*2+1]>=e[n*2]&&t[n*2+1]<=e[n*2+1]))return!1;return!0}function ss(t,e,n,r){return!(e<t[0]||e>t[1]||n<t[2]||n>t[3]||r<t[4]||r>t[5])}function _v(t,e){return!(!as(t,e)||!ss(t,...fo(e))||!ss(t,...lo(e)))}function al(t,e,n){const r=[[0,1,2,3,4,5,6,7],[0,1,4,5,2,3,6,7],[0,2,4,6,1,3,5,7]],a=[0,0,0,0,0,0,0,0];let s=0;for(let l=0;l<2;l++)for(let g=2;g<4;g++)for(let p=4;p<6;p++){const y=[t[l],t[g],t[p]];a[s++]=Cr.evaluate(n,e,y)}let i=2;for(;i--&&!(va(a[r[i][0]],a[r[i][4]])&&va(a[r[i][1]],a[r[i][5]])&&va(a[r[i][2]],a[r[i][6]])&&va(a[r[i][3]],a[r[i][7]])););if(i<0)return!1;const o=Math.sign(n[i]),u=Math.abs((t[i*2+1]-t[i*2])*n[i]);let c=o>0?1:0;for(let l=0;l<4;l++){if(u===0)continue;const g=Math.abs(a[r[i][l]])/u;o>0&&g<c&&(c=g),o<0&&g>c&&(c=g)}const f=(1-c)*t[i*2]+c*t[i*2+1];return o>0?t[i*2]=f:t[i*2+1]=f,!0}class Ev{constructor(e){this.bounds=e,this.bounds||(this.bounds=new Float64Array(ds))}getBounds(){return this.bounds}equals(e){return zf(this.bounds,e)}isValid(){return fn(this.bounds)}setBounds(e){return so(this.bounds,e)}reset(){return io(this.bounds)}addPoint(){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];return rs(this.bounds,...n)}addPoints(e){return oo(this.bounds,e)}addBounds(e,n,r,a,s,i){return Af(this.bounds,e,n,r,a,s,i)}setMinPoint(e,n,r){return Hf(this.bounds,e,n,r)}setMaxPoint(e,n,r){return jf(this.bounds,e,n,r)}inflate(e){return Kf(this.bounds,e)}scale(e,n,r){return co(this.bounds,e,n,r)}getCenter(){return uo(this.bounds)}getLength(e){return jr(this.bounds,e)}getLengths(){return vs(this.bounds)}getMaxLength(){return Yf(this.bounds)}getDiagonalLength(){return qf(this.bounds)}getMinPoint(){return fo(this.bounds)}getMaxPoint(){return lo(this.bounds)}getXRange(){return Pf(this.bounds)}getYRange(){return Xf(this.bounds)}getZRange(){return If(this.bounds)}getCorners(e){return go(this.bounds,e)}computeCornerPoints(e,n){return Qf(this.bounds,e,n)}computeLocalBounds(e,n,r){return el(this.bounds,e,n,r)}transformBounds(e){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];return Zf(this.bounds,e,n)}computeScale3(e){return Jf(this.bounds,e)}cutWithPlane(e,n){return al(this.bounds,e,n)}intersectBox(e,n,r,a){return tl(this.bounds,e,n,r,a)}intersectPlane(e,n){return nl(this.bounds,e,n)}intersect(e){return rl(this.bounds,e)}intersects(e){return as(this.bounds,e)}containsPoint(e,n,r){return ss(this.bounds,e,n,r)}contains(e){return as(this.bounds,e)}}function Rv(t){const e=t&&t.bounds;return new Ev(e)}const Ov={equals:zf,isValid:fn,setBounds:so,reset:io,addPoint:rs,addPoints:oo,addBounds:Af,setMinPoint:Hf,setMaxPoint:jf,inflate:Kf,scale:co,scaleAboutCenter:wv,getCenter:uo,getLength:jr,getLengths:vs,getMaxLength:Yf,getDiagonalLength:qf,getMinPoint:fo,getMaxPoint:lo,getXRange:Pf,getYRange:Xf,getZRange:If,getCorners:go,computeCornerPoints:Qf,computeLocalBounds:el,transformBounds:Zf,computeScale3:Jf,cutWithPlane:al,intersectBox:tl,intersectPlane:nl,intersect:rl,intersects:as,containsPoint:ss,contains:_v,INIT_BOUNDS:ds};var Me={newInstance:Rv,...Ov};const Dv={DISPLAY:0,WORLD:1};var sl={CoordinateSystem:Dv};const{CoordinateSystem:xi}=sl;function Tc(t){return()=>_.vtkErrorMacro(`vtkProp::${t} - NOT IMPLEMENTED`)}function mv(t,e){e.classHierarchy.push("vtkProp"),t.getMTime=()=>{let n=e.mtime;for(let r=0;r<e.textures.length;++r){const a=e.textures[r].getMTime();a>n&&(n=a)}return n},t.processSelectorPixelBuffers=(n,r)=>{},t.getNestedProps=()=>null,t.getActors=()=>[],t.getActors2D=()=>[],t.getVolumes=()=>[],t.pick=Tc("pick"),t.hasKey=Tc("hasKey"),t.getNestedVisibility=()=>e.visibility&&(!e._parentProp||e._parentProp.getNestedVisibility()),t.getNestedPickable=()=>e.pickable&&(!e._parentProp||e._parentProp.getNestedPickable()),t.getNestedDragable=()=>e.dragable&&(!e._parentProp||e._parentProp.getNestedDragable()),t.getRedrawMTime=()=>e.mtime,t.setEstimatedRenderTime=n=>{e.estimatedRenderTime=n,e.savedEstimatedRenderTime=n},t.restoreEstimatedRenderTime=()=>{e.estimatedRenderTime=e.savedEstimatedRenderTime},t.addEstimatedRenderTime=n=>{e.estimatedRenderTime+=n},t.setAllocatedRenderTime=n=>{e.allocatedRenderTime=n,e.savedEstimatedRenderTime=e.estimatedRenderTime,e.estimatedRenderTime=0},t.getSupportsSelection=()=>!1,t.getTextures=()=>e.textures,t.hasTexture=n=>e.textures.indexOf(n)!==-1,t.addTexture=n=>{n&&!t.hasTexture(n)&&(e.textures=e.textures.concat(n),t.modified())},t.removeTexture=n=>{const r=e.textures.filter(a=>a!==n);e.textures.length!==r.length&&(e.textures=r,t.modified())},t.removeAllTextures=()=>{e.textures=[],t.modified()},t.setCoordinateSystemToWorld=()=>t.setCoordinateSystem(xi.WORLD),t.setCoordinateSystemToDisplay=()=>t.setCoordinateSystem(xi.DISPLAY)}const Mv={allocatedRenderTime:10,coordinateSystem:xi.WORLD,dragable:!0,estimatedRenderTime:0,paths:null,pickable:!0,renderTimeMultiplier:1,savedEstimatedRenderTime:0,textures:[],useBounds:!0,visibility:!0};function il(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Mv,n),_.obj(t,e),_.get(t,e,["estimatedRenderTime","allocatedRenderTime"]),_.setGet(t,e,["_parentProp","coordinateSystem","dragable","pickable","renderTimeMultiplier","useBounds","visibility"]),_.moveToProtected(t,e,["parentProp"]),mv(t,e)}const Vv=_.newInstance(il,"vtkProp");var ia={newInstance:Vv,extend:il,...sl};function Lv(t,e){e.classHierarchy.push("vtkProp3D"),t.addPosition=r=>{e.position=e.position.map((a,s)=>a+r[s]),t.modified()},t.getOrientationWXYZ=()=>{const r=qn();bu(r,e.rotation);const a=new Float64Array(3),s=td(a,r);return[Qr(s),a[0],a[1],a[2]]},t.rotateX=r=>{r!==0&&(Mu(e.rotation,e.rotation,Ge(r)),t.modified())},t.rotateY=r=>{r!==0&&(Vu(e.rotation,e.rotation,Ge(r)),t.modified())},t.rotateZ=r=>{r!==0&&(Lu(e.rotation,e.rotation,Ge(r)),t.modified())},t.rotateWXYZ=(r,a,s,i)=>{if(r===0||a===0&&s===0&&i===0)return;const o=Ge(r),u=qn();Gi(u,[a,s,i],o);const c=new Float64Array(16);Ni(c,u),ft(e.rotation,e.rotation,c),t.modified()},t.setOrientation=(r,a,s)=>r===e.orientation[0]&&a===e.orientation[1]&&s===e.orientation[2]?!1:(e.orientation=[r,a,s],le(e.rotation),t.rotateZ(s),t.rotateX(r),t.rotateY(a),t.modified(),!0),t.setUserMatrix=r=>ov(e.userMatrix,r)?!1:(nt(e.userMatrix,r),t.modified(),!0),t.getMatrix=()=>(t.computeMatrix(),e.matrix),t.computeMatrix=()=>{if(t.getMTime()>e.matrixMTime.getMTime()){le(e.matrix),e.userMatrix&&ft(e.matrix,e.matrix,e.userMatrix),We(e.matrix,e.matrix,e.origin),We(e.matrix,e.matrix,e.position),ft(e.matrix,e.matrix,e.rotation),xr(e.matrix,e.matrix,e.scale),We(e.matrix,e.matrix,[-e.origin[0],-e.origin[1],-e.origin[2]]),Ve(e.matrix,e.matrix),e.isIdentity=!0;for(let r=0;r<4;++r)for(let a=0;a<4;++a)(r===a?1:0)!==e.matrix[r+a*4]&&(e.isIdentity=!1);e.matrixMTime.modified()}},t.getCenter=()=>Me.getCenter(e.bounds),t.getLength=()=>Me.getLength(e.bounds),t.getXRange=()=>Me.getXRange(e.bounds),t.getYRange=()=>Me.getYRange(e.bounds),t.getZRange=()=>Me.getZRange(e.bounds),t.getUserMatrix=()=>e.userMatrix;function n(){t.computeMatrix()}t.onModified(n)}const Bv={origin:[0,0,0],position:[0,0,0],orientation:[0,0,0],rotation:null,scale:[1,1,1],bounds:[1,-1,1,-1,1,-1],userMatrix:null,userMatrixMTime:null,cachedProp3D:null,isIdentity:!0,matrixMTime:null};function ol(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Bv,n),ia.extend(t,e,n),e.matrixMTime={},_.obj(e.matrixMTime),_.get(t,e,["bounds","isIdentity"]),_.getArray(t,e,["orientation"]),_.setGetArray(t,e,["origin","position","scale"],3),e.matrix=le(new Float64Array(16)),e.rotation=le(new Float64Array(16)),e.userMatrix=le(new Float64Array(16)),e.transform=null,Lv(t,e)}const kv=_.newInstance(ol,"vtkProp3D");var Fv={newInstance:kv,extend:ol};const cl={FLAT:0,GOURAUD:1,PHONG:2},ut={POINTS:0,WIREFRAME:1,SURFACE:2},Uv=cl;var ul={Shading:cl,Representation:ut,Interpolation:Uv};const{Representation:Gr,Interpolation:$r}=ul;function xc(t){return()=>_.vtkErrorMacro(`vtkProperty::${t} - NOT IMPLEMENTED`)}function bv(t,e){e.classHierarchy.push("vtkProperty"),t.setColor=(n,r,a)=>{Array.isArray(n)?(e.color[0]!==n[0]||e.color[1]!==n[1]||e.color[2]!==n[2])&&(e.color[0]=n[0],e.color[1]=n[1],e.color[2]=n[2],t.modified()):(e.color[0]!==n||e.color[1]!==r||e.color[2]!==a)&&(e.color[0]=n,e.color[1]=r,e.color[2]=a,t.modified()),t.setDiffuseColor(e.color),t.setAmbientColor(e.color),t.setSpecularColor(e.color)},t.computeCompositeColor=xc("ComputeCompositeColor"),t.getColor=()=>{let n=0;e.ambient+e.diffuse+e.specular>0&&(n=1/(e.ambient+e.diffuse+e.specular));for(let r=0;r<3;r++)e.color[r]=n*(e.ambient*e.ambientColor[r]+e.diffuse*e.diffuseColor[r]+e.specular*e.specularColor[r]);return[].concat(e.color)},t.setSpecularPower=n=>{const r=1/Math.max(1,n);(e.roughness!==r||e.specularPower!==n)&&(e.specularPower=n,e.roughness=r,t.modified())},t.addShaderVariable=xc("AddShaderVariable"),t.setInterpolationToFlat=()=>t.setInterpolation($r.FLAT),t.setInterpolationToGouraud=()=>t.setInterpolation($r.GOURAUD),t.setInterpolationToPhong=()=>t.setInterpolation($r.PHONG),t.getInterpolationAsString=()=>_.enumToString($r,e.interpolation),t.setRepresentationToWireframe=()=>t.setRepresentation(Gr.WIREFRAME),t.setRepresentationToSurface=()=>t.setRepresentation(Gr.SURFACE),t.setRepresentationToPoints=()=>t.setRepresentation(Gr.POINTS),t.getRepresentationAsString=()=>_.enumToString(Gr,e.representation)}const Nv={color:[1,1,1],ambientColor:[1,1,1],diffuseColor:[1,1,1],specularColor:[1,1,1],edgeColor:[0,0,0],ambient:0,diffuse:1,metallic:0,roughness:.6,normalStrength:1,emission:1,baseIOR:1.45,specular:0,specularPower:1,opacity:1,interpolation:$r.GOURAUD,representation:Gr.SURFACE,edgeVisibility:!1,backfaceCulling:!1,frontfaceCulling:!1,pointSize:1,lineWidth:1,lighting:!0,shading:!1,materialName:null};function fl(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Nv,n),_.obj(t,e),_.setGet(t,e,["lighting","interpolation","ambient","diffuse","metallic","roughness","normalStrength","emission","baseIOR","specular","specularPower","opacity","edgeVisibility","lineWidth","pointSize","backfaceCulling","frontfaceCulling","representation","diffuseTexture","metallicTexture","roughnessTexture","normalTexture","ambientOcclusionTexture","emissionTexture"]),_.setGetArray(t,e,["ambientColor","specularColor","diffuseColor","edgeColor"],3),bv(t,e)}const Gv=_.newInstance(fl,"vtkProperty");var mr={newInstance:Gv,extend:fl,...ul};const{vtkDebugMacro:$v}=_;function Wv(t,e){e.classHierarchy.push("vtkActor");const n={...t};t.getActors=()=>[t],t.getIsOpaque=()=>{if(e.forceOpaque)return!0;if(e.forceTranslucent)return!1;e.property||t.getProperty();let r=e.property.getOpacity()>=1;return r=r&&(!e.texture||!e.texture.isTranslucent()),r=r&&(!e.mapper||e.mapper.getIsOpaque()),r},t.hasTranslucentPolygonalGeometry=()=>e.mapper===null?!1:(e.property===null&&t.setProperty(t.makeProperty()),!t.getIsOpaque()),t.makeProperty=mr.newInstance,t.getProperty=()=>(e.property===null&&(e.property=t.makeProperty()),e.property),t.getBounds=()=>{if(e.mapper===null)return e.bounds;const r=e.mapper.getBounds();if(!r||r.length!==6)return r;if(r[0]>r[1])return e.mapperBounds=r.concat(),e.bounds=[1,-1,1,-1,1,-1],e.boundsMTime.modified(),r;if(!e.mapperBounds||r[0]!==e.mapperBounds[0]||r[1]!==e.mapperBounds[1]||r[2]!==e.mapperBounds[2]||r[3]!==e.mapperBounds[3]||r[4]!==e.mapperBounds[4]||r[5]!==e.mapperBounds[5]||t.getMTime()>e.boundsMTime.getMTime()){$v("Recomputing bounds..."),e.mapperBounds=r.concat();const a=[];Me.getCorners(r,a),t.computeMatrix();const s=new Float64Array(16);Ve(s,e.matrix),a.forEach(i=>Se(i,i,s)),e.bounds[0]=e.bounds[2]=e.bounds[4]=Number.MAX_VALUE,e.bounds[1]=e.bounds[3]=e.bounds[5]=-Number.MAX_VALUE,e.bounds=e.bounds.map((i,o)=>o%2===0?a.reduce((u,c)=>u>c[o/2]?c[o/2]:u,i):a.reduce((u,c)=>u<c[(o-1)/2]?c[(o-1)/2]:u,i)),e.boundsMTime.modified()}return e.bounds},t.getMTime=()=>{let r=n.getMTime();if(e.property!==null){const a=e.property.getMTime();r=a>r?a:r}if(e.backfaceProperty!==null){const a=e.backfaceProperty.getMTime();r=a>r?a:r}return r},t.getRedrawMTime=()=>{let r=e.mtime;if(e.mapper!==null){let a=e.mapper.getMTime();r=a>r?a:r,e.mapper.getInput()!==null&&(e.mapper.getInputAlgorithm().update(),a=e.mapper.getInput().getMTime(),r=a>r?a:r)}return r},t.getSupportsSelection=()=>e.mapper?e.mapper.getSupportsSelection():!1,t.processSelectorPixelBuffers=(r,a)=>{e.mapper&&e.mapper.processSelectorPixelBuffers&&e.mapper.processSelectorPixelBuffers(r,a)}}const zv={mapper:null,property:null,backfaceProperty:null,forceOpaque:!1,forceTranslucent:!1,bounds:[1,-1,1,-1,1,-1]};function ll(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,zv,n),Fv.extend(t,e,n),e.boundsMTime={},_.obj(e.boundsMTime),_.set(t,e,["property"]),_.setGet(t,e,["backfaceProperty","forceOpaque","forceTranslucent","mapper"]),Wv(t,e)}const Av=_.newInstance(ll,"vtkActor");var Nt={newInstance:Av,extend:ll};const gl={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},Ke={VOID:"",CHAR:"Int8Array",SIGNED_CHAR:"Int8Array",UNSIGNED_CHAR:"Uint8Array",SHORT:"Int16Array",UNSIGNED_SHORT:"Uint16Array",INT:"Int32Array",UNSIGNED_INT:"Uint32Array",FLOAT:"Float32Array",DOUBLE:"Float64Array"},Hv=Ke.FLOAT;var pl={DefaultDataType:Hv,DataTypeByteSize:gl,VtkDataTypes:Ke};const{vtkErrorMacro:jv}=Jt,{DefaultDataType:Kv}=pl,Pv=1e-6;function Si(t,e,n){const r=t.length;let a=Number.MAX_VALUE,s=-Number.MAX_VALUE,i,o;for(o=e;o<r;o+=n)if(!Number.isNaN(t[o])){a=t[o],s=a;break}for(;o<r;o+=n)i=t[o],i<a?a=i:i>s&&(s=i);return{min:a,max:s}}function Xv(){let t=Number.MAX_VALUE,e=-Number.MAX_VALUE,n=0,r=0;return{add(a){t>a&&(t=a),e<a&&(e=a),n++,r+=a},get(){return{min:t,max:e,count:n,sum:r,mean:r/n}},getRange(){return{min:t,max:e}}}}function hl(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1;if(e<0&&n>1){const a=t.length/n,s=new Float64Array(a);for(let i=0,o=0;i<a;++i){for(let u=o+n;o<u;++o)s[i]+=t[o]*t[o];s[i]**=.5}return Si(s,0,1)}return Si(t,e<0?0:e,n)}function Sc(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;const n=t||[];for(;n.length<=e;)n.push(null);return n}function po(t){return Object.prototype.toString.call(t).slice(8,-1)}function Iv(t){const e=t.getNumberOfComponents();let n=0;const r=new Array(e);for(let a=0;a<t.getNumberOfTuples();++a){t.getTuple(a,r);const s=no(r,e);s>n&&(n=s)}return n}const Yv={computeRange:hl,createRangeHelper:Xv,fastComputeRange:Si,getDataType:po,getMaxNorm:Iv};function qv(t,e){e.classHierarchy.push("vtkDataArray");function n(r){if(r<0)return!1;const a=t.getNumberOfComponents(),s=e.values.length/(a>0?a:1);if(r===s)return!0;if(r>s){const i=e.values;return e.values=Rr(e.dataType,(r+s)*a),e.values.set(i),!0}return e.size>r*a&&(e.size=r*a,t.dataChange()),!0}t.dataChange=()=>{e.ranges=null,t.modified()},t.resize=r=>{n(r);const a=r*t.getNumberOfComponents();return e.size!==a?(e.size=a,t.dataChange(),!0):!1},t.initialize=()=>{t.resize(0)},t.getElementComponentSize=()=>e.values.BYTES_PER_ELEMENT,t.getComponent=function(r){let a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return e.values[r*e.numberOfComponents+a]},t.setComponent=(r,a,s)=>{s!==e.values[r*e.numberOfComponents+a]&&(e.values[r*e.numberOfComponents+a]=s,t.dataChange())},t.getValue=r=>{const a=r/e.numberOfComponents,s=r%e.numberOfComponents;return t.getComponent(a,s)},t.setValue=(r,a)=>{const s=r/e.numberOfComponents,i=r%e.numberOfComponents;t.setComponent(s,i,a)},t.getData=()=>e.size===e.values.length?e.values:e.values.subarray(0,e.size),t.getRange=function(){let r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:-1,a=r;a<0&&(a=e.numberOfComponents===1?0:e.numberOfComponents);let s=null;return e.ranges||(e.ranges=Sc(e.ranges,e.numberOfComponents)),s=e.ranges[a],s?(e.rangeTuple[0]=s.min,e.rangeTuple[1]=s.max,e.rangeTuple):(s=hl(t.getData(),r,e.numberOfComponents),e.ranges[a]=s,e.rangeTuple[0]=s.min,e.rangeTuple[1]=s.max,e.rangeTuple)},t.setRange=(r,a)=>{e.ranges||(e.ranges=Sc(e.ranges,e.numberOfComponents));const s={min:r.min,max:r.max};return e.ranges[a]=s,e.rangeTuple[0]=s.min,e.rangeTuple[1]=s.max,e.rangeTuple},t.setTuple=(r,a)=>{const s=r*e.numberOfComponents;for(let i=0;i<e.numberOfComponents;i++)e.values[s+i]=a[i]},t.setTuples=(r,a)=>{let s=r*e.numberOfComponents;const i=Math.min(a.length,e.size-s);for(let o=0;o<i;)e.values[s++]=a[o++]},t.insertTuple=(r,a)=>(e.size<=r*e.numberOfComponents&&(e.size=(r+1)*e.numberOfComponents,n(r+1)),t.setTuple(r,a),r),t.insertTuples=(r,a)=>{const s=r+a.length/e.numberOfComponents;return e.size<s*e.numberOfComponents&&(e.size=s*e.numberOfComponents,n(s)),t.setTuples(r,a),s},t.insertNextTuple=r=>{const a=e.size/e.numberOfComponents;return t.insertTuple(a,r)},t.insertNextTuples=r=>{const a=e.size/e.numberOfComponents;return t.insertTuples(a,r)},t.findTuple=function(r){let a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Pv;for(let s=0;s<e.size;s+=e.numberOfComponents)if(Math.abs(r[0]-e.values[s])<=a){let i=!0;for(let o=1;o<e.numberOfComponents;++o)if(Math.abs(r[o]-e.values[s+o])>a){i=!1;break}if(i)return s/e.numberOfComponents}return-1},t.getTuple=function(r){let a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];const s=e.numberOfComponents||1,i=r*s;switch(s){case 4:a[3]=e.values[i+3];case 3:a[2]=e.values[i+2];case 2:a[1]=e.values[i+1];case 1:a[0]=e.values[i];break;default:for(let o=s-1;o>=0;--o)a[o]=e.values[i+o]}return a},t.getTuples=(r,a)=>{const s=(r??0)*e.numberOfComponents,i=(a??t.getNumberOfTuples())*e.numberOfComponents,o=t.getData().subarray(s,i);return o.length>0?o:null},t.getTupleLocation=function(){return(arguments.length>0&&arguments[0]!==void 0?arguments[0]:1)*e.numberOfComponents},t.getNumberOfComponents=()=>e.numberOfComponents,t.getNumberOfValues=()=>e.size,t.getNumberOfTuples=()=>e.size/e.numberOfComponents,t.getDataType=()=>e.dataType,t.newClone=()=>vl({empty:!0,name:e.name,dataType:e.dataType,numberOfComponents:e.numberOfComponents}),t.getName=()=>(e.name||(t.modified(),e.name=`vtkDataArray${t.getMTime()}`),e.name),t.setData=(r,a)=>{e.values=r,e.size=r.length,e.dataType=po(r),a&&(e.numberOfComponents=a),e.size%e.numberOfComponents!==0&&(e.numberOfComponents=1),t.dataChange()},t.getState=()=>{if(e.deleted)return null;const r={...e,vtkClass:t.getClassName()};r.values=Array.from(r.values),delete r.buffer,Object.keys(r).forEach(s=>{r[s]||delete r[s]});const a={};return Object.keys(r).sort().forEach(s=>{a[s]=r[s]}),a.mtime&&delete a.mtime,a},t.deepCopy=r=>{const a=t.getDataType(),s=e.values;t.shallowCopy(r),(s==null?void 0:s.length)>=r.getNumberOfValues()&&a===r.getDataType()?(s.set(r.getData()),e.values=s,t.dataChange()):t.setData(r.getData().slice())},t.interpolateTuple=(r,a,s,i,o,u)=>{const c=e.numberOfComponents||1;(c!==a.getNumberOfComponents()||c!==i.getNumberOfComponents())&&jv("numberOfComponents must match");const f=a.getTuple(s),l=i.getTuple(o),g=[];switch(g.length=c,c){case 4:g[3]=f[3]+(l[3]-f[3])*u;case 3:g[2]=f[2]+(l[2]-f[2])*u;case 2:g[1]=f[1]+(l[1]-f[1])*u;case 1:g[0]=f[0]+(l[0]-f[0])*u;break;default:for(let p=0;p<c;p++)g[p]=f[p]+(l[p]-f[p])*u}return t.insertTuple(r,g)}}const Qv={name:"",numberOfComponents:1,dataType:Kv,rangeTuple:[0,0]};function dl(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(Object.assign(e,Qv,n),!e.empty&&!e.values&&!e.size)throw new TypeError("Cannot create vtkDataArray object without: size > 0, values");if(e.values?Array.isArray(e.values)&&(e.values=Ai(e.dataType,e.values)):e.values=Rr(e.dataType,e.size),e.values&&(e.size=e.size??e.values.length,e.dataType=po(e.values)),qe(t,e),aa(t,e,["name","numberOfComponents"]),e.size%e.numberOfComponents!==0)throw new RangeError("model.size is not a multiple of model.numberOfComponents");qv(t,e)}const vl=De(dl,"vtkDataArray");var _e={newInstance:vl,extend:dl,...Yv,...pl};function Zv(t,e){e.classHierarchy.push("vtkAbstractMapper"),t.update=()=>{t.getInputData()},t.addClippingPlane=n=>n.isA("vtkPlane")?e.clippingPlanes.includes(n)?!1:(e.clippingPlanes.push(n),t.modified(),!0):!1,t.getNumberOfClippingPlanes=()=>e.clippingPlanes.length,t.removeAllClippingPlanes=()=>e.clippingPlanes.length===0?!1:(e.clippingPlanes.length=0,t.modified(),!0),t.removeClippingPlane=n=>{const r=e.clippingPlanes.indexOf(n);return r===-1?!1:(e.clippingPlanes.splice(r,1),t.modified(),!0)},t.getClippingPlanes=()=>e.clippingPlanes,t.setClippingPlanes=n=>{if(n)if(!Array.isArray(n))t.addClippingPlane(n);else{const r=n.length;for(let a=0;a<r&&a<6;a++)t.addClippingPlane(n[a])}},t.getClippingPlaneInDataCoords=(n,r,a)=>{const s=e.clippingPlanes,i=n;if(s){const o=s.length;if(r>=0&&r<o){const u=s[r],c=u.getNormal(),f=u.getOrigin(),l=c[0],g=c[1],p=c[2],y=-(l*f[0]+g*f[1]+p*f[2]);a[0]=l*i[0]+g*i[4]+p*i[8]+y*i[12],a[1]=l*i[1]+g*i[5]+p*i[9]+y*i[13],a[2]=l*i[2]+g*i[6]+p*i[10]+y*i[14],a[3]=l*i[3]+g*i[7]+p*i[11]+y*i[15];return}}_.vtkErrorMacro(`Clipping plane index ${r} is out of range.`)}}const Jv={clippingPlanes:[]};function ey(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Jv,n),_.obj(t,e),_.algo(t,e,1,0),e.clippingPlanes||(e.clippingPlanes=[]),Zv(t,e)}var yl={extend:ey};function ty(t,e){t.getBounds=()=>(_.vtkErrorMacro("vtkAbstractMapper3D.getBounds - NOT IMPLEMENTED"),ao()),t.getCenter=()=>{var r;const n=t.getBounds();return e.center=Me.isValid(n)?Me.getCenter(n):null,(r=e.center)==null?void 0:r.slice()},t.getLength=()=>{const n=t.getBounds();return Me.getDiagonalLength(n)}}const ny=t=>({bounds:[...Me.INIT_BOUNDS],center:[0,0,0],viewSpecificProperties:{},...t});function ry(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,ny(n)),yl.extend(t,e,n),_.setGet(t,e,["viewSpecificProperties"]),ty(t,e)}var ay={extend:ry};const{vtkErrorMacro:Cc,vtkWarningMacro:sy}=_;function iy(t,e){e.classHierarchy.push("vtkFieldData");const n=t.getState;e.arrays&&(e.arrays=e.arrays.map(r=>({data:$t(r.data)}))),t.initialize=()=>{t.initializeFields(),t.copyAllOn(),t.clearFieldFlags()},t.initializeFields=()=>{e.arrays=[],e.copyFieldFlags={},t.modified()},t.copyStructure=r=>{t.initializeFields(),e.copyFieldFlags=r.getCopyFieldFlags().map(a=>a),e.arrays=r.arrays().map(a=>({array:a}))},t.getNumberOfArrays=()=>e.arrays.length,t.getNumberOfActiveArrays=()=>e.arrays.length,t.addArray=r=>{const a=r.getName(),{array:s,index:i}=t.getArrayWithIndex(a);return s!=null?(e.arrays[i]={data:r},i):(e.arrays=[].concat(e.arrays,{data:r}),e.arrays.length-1)},t.removeAllArrays=()=>{e.arrays=[]},t.removeArray=r=>{const a=e.arrays.findIndex(s=>s.data.getName()===r);return t.removeArrayByIndex(a)},t.removeArrayByIndex=r=>r!==-1&&r<e.arrays.length?(e.arrays.splice(r,1),!0):!1,t.getArrays=()=>e.arrays.map(r=>r.data),t.getArray=r=>typeof r=="number"?t.getArrayByIndex(r):t.getArrayByName(r),t.getArrayByName=r=>e.arrays.reduce((a,s,i)=>s.data.getName()===r?s.data:a,null),t.getArrayWithIndex=r=>{const a=e.arrays.findIndex(s=>s.data.getName()===r);return{array:a!==-1?e.arrays[a].data:null,index:a}},t.getArrayByIndex=r=>r>=0&&r<e.arrays.length?e.arrays[r].data:null,t.hasArray=r=>t.getArrayWithIndex(r).index>=0,t.getArrayName=r=>{const a=e.arrays[r];return a?a.data.getName():""},t.getCopyFieldFlags=()=>e.copyFieldFlags,t.getFlag=r=>e.copyFieldFlags[r],t.passData=function(r){let a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:-1,s=arguments.length>2&&arguments[2]!==void 0?arguments[2]:-1;r.getArrays().forEach(i=>{const o=t.getFlag(i.getName());if(o!==!1&&!(e.doCopyAllOff&&o!==!0)&&i){let u=t.getArrayByName(i.getName());if(u)if(i.getNumberOfComponents()===u.getNumberOfComponents())if(a>-1&&a<i.getNumberOfTuples()){const c=s>-1?s:a;u.insertTuple(c,i.getTuple(a))}else u.insertTuples(0,i.getTuples());else Cc("Unhandled case in passData");else if(a<0||a>i.getNumberOfTuples())t.addArray(i),r.getAttributes(i).forEach(c=>{t.setAttribute(i,c)});else{const c=i.getNumberOfComponents();let f=i.getNumberOfValues();const l=s>-1?s:a;f<=l*c&&(f=(l+1)*c),u=_e.newInstance({name:i.getName(),dataType:i.getDataType(),numberOfComponents:c,values:_.newTypedArray(i.getDataType(),f),size:0}),u.insertTuple(l,i.getTuple(a)),t.addArray(u),r.getAttributes(i).forEach(g=>{t.setAttribute(u,g)})}}})},t.interpolateData=function(r){let a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:-1,s=arguments.length>2&&arguments[2]!==void 0?arguments[2]:-1,i=arguments.length>3&&arguments[3]!==void 0?arguments[3]:-1,o=arguments.length>4&&arguments[4]!==void 0?arguments[4]:.5;r.getArrays().forEach(u=>{const c=t.getFlag(u.getName());if(c!==!1&&!(e.doCopyAllOff&&c!==!0)&&u){let f=t.getArrayByName(u.getName());if(f)if(u.getNumberOfComponents()===f.getNumberOfComponents())if(a>-1&&a<u.getNumberOfTuples()){const l=i>-1?i:a;f.interpolateTuple(l,u,a,u,s,o),sy("Unexpected case in interpolateData")}else f.insertTuples(u.getTuples());else Cc("Unhandled case in interpolateData");else if(a<0||s<0||a>u.getNumberOfTuples())t.addArray(u),r.getAttributes(u).forEach(l=>{t.setAttribute(u,l)});else{const l=u.getNumberOfComponents();let g=u.getNumberOfValues();const p=i>-1?i:a;g<=p*l&&(g=(p+1)*l),f=_e.newInstance({name:u.getName(),dataType:u.getDataType(),numberOfComponents:l,values:_.newTypedArray(u.getDataType(),g),size:0}),f.interpolateTuple(p,u,a,u,s,o),t.addArray(f),r.getAttributes(u).forEach(y=>{t.setAttribute(f,y)})}}})},t.copyFieldOn=r=>{e.copyFieldFlags[r]=!0},t.copyFieldOff=r=>{e.copyFieldFlags[r]=!1},t.copyAllOn=()=>{(!e.doCopyAllOn||e.doCopyAllOff)&&(e.doCopyAllOn=!0,e.doCopyAllOff=!1,t.modified())},t.copyAllOff=()=>{(e.doCopyAllOn||!e.doCopyAllOff)&&(e.doCopyAllOn=!1,e.doCopyAllOff=!0,t.modified())},t.clearFieldFlags=()=>{e.copyFieldFlags={}},t.deepCopy=r=>{e.arrays=r.getArrays().map(a=>{const s=a.newClone();return s.deepCopy(a),{data:s}})},t.copyFlags=r=>r.getCopyFieldFlags().map(a=>a),t.reset=()=>e.arrays.forEach(r=>r.data.reset()),t.getMTime=()=>e.arrays.reduce((r,a)=>a.data.getMTime()>r?a.data.getMTime():r,e.mtime),t.getNumberOfComponents=()=>e.arrays.reduce((r,a)=>r+a.data.getNumberOfComponents(),0),t.getNumberOfTuples=()=>e.arrays.length>0?e.arrays[0].getNumberOfTuples():0,t.getState=()=>{const r=n();return r&&(r.arrays=e.arrays.map(a=>({data:a.data.getState()}))),r}}const oy={arrays:[],copyFieldFlags:[],doCopyAllOn:!0,doCopyAllOff:!1};function Tl(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,oy,n),_.obj(t,e),iy(t,e)}const cy=_.newInstance(Tl,"vtkFieldData");var uy={newInstance:cy,extend:Tl};const fy={SCALARS:0,VECTORS:1,NORMALS:2,TCOORDS:3,TENSORS:4,GLOBALIDS:5,PEDIGREEIDS:6,EDGEFLAG:7,NUM_ATTRIBUTES:8},ly={MAX:0,EXACT:1,NOLIMIT:2},gy={DUPLICATECELL:1,HIGHCONNECTIVITYCELL:2,LOWCONNECTIVITYCELL:4,REFINEDCELL:8,EXTERIORCELL:16,HIDDENCELL:32},py={DUPLICATEPOINT:1,HIDDENPOINT:2},hy={COPYTUPLE:0,INTERPOLATE:1,PASSDATA:2,ALLCOPY:3},dy="vtkGhostType",vy={DEFAULT:0,SINGLE:1,DOUBLE:2};var xl={AttributeCopyOperations:hy,AttributeLimitTypes:ly,AttributeTypes:fy,CellGhostTypes:gy,DesiredOutputPrecision:vy,PointGhostTypes:py,ghostArrayName:dy};const{AttributeTypes:dn,AttributeCopyOperations:Ln}=xl,{vtkWarningMacro:ya}=_;function yy(t,e){const n=["Scalars","Vectors","Normals","TCoords","Tensors","GlobalIds","PedigreeIds"];function r(i){let o=n.find(u=>dn[u.toUpperCase()]===i||typeof i!="number"&&u.toLowerCase()===i.toLowerCase());return typeof o>"u"&&(o=null),o}e.classHierarchy.push("vtkDataSetAttributes");const a={...t};t.checkNumberOfComponents=i=>!0,t.setAttribute=(i,o)=>{const u=r(o);if(i&&u.toUpperCase()==="PEDIGREEIDS"&&!i.isA("vtkDataArray"))return ya(`Cannot set attribute ${u}. The attribute must be a vtkDataArray.`),-1;if(i&&!t.checkNumberOfComponents(i,u))return ya(`Cannot set attribute ${u}. Incorrect number of components.`),-1;let c=e[`active${u}`];if(c>=0&&c<e.arrays.length){if(e.arrays[c]===i)return c;t.removeArrayByIndex(c)}return i?(c=t.addArray(i),e[`active${u}`]=c):e[`active${u}`]=-1,t.modified(),e[`active${u}`]},t.getAttributes=i=>n.filter(o=>t[`get${o}`]()===i),t.setActiveAttributeByName=(i,o)=>t.setActiveAttributeByIndex(t.getArrayWithIndex(i).index,o),t.setActiveAttributeByIndex=(i,o)=>{const u=r(o);if(i>=0&&i<e.arrays.length){if(u.toUpperCase()!=="PEDIGREEIDS"){const c=t.getArrayByIndex(i);if(!c.isA("vtkDataArray"))return ya(`Cannot set attribute ${u}. Only vtkDataArray subclasses can be set as active attributes.`),-1;if(!t.checkNumberOfComponents(c,u))return ya(`Cannot set attribute ${u}. Incorrect number of components.`),-1}return e[`active${u}`]=i,t.modified(),i}return i===-1&&(e[`active${u}`]=i,t.modified()),-1},t.getActiveAttribute=i=>{const o=r(i);return t[`get${o}`]()},t.removeAllArrays=()=>{n.forEach(i=>{e[`active${i}`]=-1}),a.removeAllArrays()},t.removeArrayByIndex=i=>(i!==-1&&n.forEach(o=>{i===e[`active${o}`]?e[`active${o}`]=-1:i<e[`active${o}`]&&(e[`active${o}`]-=1)}),a.removeArrayByIndex(i)),n.forEach(i=>{const o=`active${i}`;t[`get${i}`]=()=>t.getArrayByIndex(e[o]),t[`set${i}`]=u=>t.setAttribute(u,i),t[`setActive${i}`]=u=>t.setActiveAttributeByIndex(t.getArrayWithIndex(u).index,i),t[`copy${i}Off`]=()=>{const u=i.toUpperCase();e.copyAttributeFlags[Ln.PASSDATA][dn[u]]=!1},t[`copy${i}On`]=()=>{const u=i.toUpperCase();e.copyAttributeFlags[Ln.PASSDATA][dn[u]]=!0}}),t.initializeAttributeCopyFlags=()=>{e.copyAttributeFlags=[],Object.keys(Ln).filter(i=>i!=="ALLCOPY").forEach(i=>{e.copyAttributeFlags[Ln[i]]=Object.keys(dn).filter(o=>o!=="NUM_ATTRIBUTES").reduce((o,u)=>(o[dn[u]]=!0,o),[])}),e.copyAttributeFlags[Ln.COPYTUPLE][dn.GLOBALIDS]=!1,e.copyAttributeFlags[Ln.INTERPOLATE][dn.GLOBALIDS]=!1,e.copyAttributeFlags[Ln.COPYTUPLE][dn.PEDIGREEIDS]=!1},t.initialize=_.chain(t.initialize,t.initializeAttributeCopyFlags),e.dataArrays&&Object.keys(e.dataArrays).length&&Object.keys(e.dataArrays).forEach(i=>{!e.dataArrays[i].ref&&e.dataArrays[i].type==="vtkDataArray"&&t.addArray(_e.newInstance(e.dataArrays[i]))});const s=t.shallowCopy;t.shallowCopy=(i,o)=>{s(i,o),e.arrays=i.getArrays().map(u=>{const c=u.newClone();return c.shallowCopy(u,o),{data:c}})},t.initializeAttributeCopyFlags()}const Ty={activeScalars:-1,activeVectors:-1,activeTensors:-1,activeNormals:-1,activeTCoords:-1,activeGlobalIds:-1,activePedigreeIds:-1};function Sl(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Ty,n),uy.extend(t,e,n),_.setGet(t,e,["activeScalars","activeNormals","activeTCoords","activeVectors","activeTensors","activeGlobalIds","activePedigreeIds"]),e.arrays||(e.arrays={}),yy(t,e)}const xy=_.newInstance(Sl,"vtkDataSetAttributes");var wc={newInstance:xy,extend:Sl,...xl};const Sy={UNIFORM:0,DATA_OBJECT_FIELD:0,COORDINATE:1,POINT_DATA:1,POINT:2,POINT_FIELD_DATA:2,CELL:3,CELL_FIELD_DATA:3,VERTEX:4,VERTEX_FIELD_DATA:4,EDGE:5,EDGE_FIELD_DATA:5,ROW:6,ROW_DATA:6},Cl={FIELD_ASSOCIATION_POINTS:0,FIELD_ASSOCIATION_CELLS:1,FIELD_ASSOCIATION_NONE:2,FIELD_ASSOCIATION_POINTS_THEN_CELLS:3,FIELD_ASSOCIATION_VERTICES:4,FIELD_ASSOCIATION_EDGES:5,FIELD_ASSOCIATION_ROWS:6,NUMBER_OF_ASSOCIATIONS:7};var Cy={FieldDataTypes:Sy,FieldAssociations:Cl};const Ci=["pointData","cellData","fieldData"];function wy(t,e){e.classHierarchy.push("vtkDataSet"),Ci.forEach(r=>{e[r]?e[r]=$t(e[r]):e[r]=wc.newInstance()});const n=t.shallowCopy;t.shallowCopy=function(r){let a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;n(r,a),Ci.forEach(s=>{e[s]=wc.newInstance(),e[s].shallowCopy(r.getReferenceByName(s))})}}const _y={};function wl(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,_y,n),_.obj(t,e),_.setGet(t,e,Ci),wy(t,e)}const Ey=_.newInstance(wl,"vtkDataSet");var Zn={newInstance:Ey,extend:wl,...Cy};const Bt={UNCHANGED:0,SINGLE_POINT:1,X_LINE:2,Y_LINE:3,Z_LINE:4,XY_PLANE:5,YZ_PLANE:6,XZ_PLANE:7,XYZ_GRID:8,EMPTY:9};var _l={StructuredType:Bt};const{StructuredType:nn}=_l;function Ry(t){let e=0;for(let n=0;n<3;++n)t[n*2]<t[n*2+1]&&e++;return t[0]>t[1]||t[2]>t[3]||t[4]>t[5]?nn.EMPTY:e===3?nn.XYZ_GRID:e===2?t[0]===t[1]?nn.YZ_PLANE:t[2]===t[3]?nn.XZ_PLANE:nn.XY_PLANE:e===1?t[0]<t[1]?nn.X_LINE:t[2]<t[3]?nn.Y_LINE:nn.Z_LINE:nn.SINGLE_POINT}var Oy={getDataDescriptionFromExtent:Ry,..._l};const{vtkErrorMacro:Bn}=_;function Dy(t,e){e.classHierarchy.push("vtkImageData"),t.setExtent=function(){if(e.deleted)return Bn("instance deleted - cannot call any method"),!1;for(var n=arguments.length,r=new Array(n),a=0;a<n;a++)r[a]=arguments[a];const s=r.length===1?r[0]:r;if(s.length!==6)return!1;const i=e.extent.some((o,u)=>o!==s[u]);return i&&(e.extent=s.slice(),e.dataDescription=Oy.getDataDescriptionFromExtent(e.extent),t.modified()),i},t.setDimensions=function(){let n,r,a;if(e.deleted){Bn("instance deleted - cannot call any method");return}if(arguments.length===1){const s=arguments.length<=0?void 0:arguments[0];n=s[0],r=s[1],a=s[2]}else if(arguments.length===3)n=arguments.length<=0?void 0:arguments[0],r=arguments.length<=1?void 0:arguments[1],a=arguments.length<=2?void 0:arguments[2];else{Bn("Bad dimension specification");return}t.setExtent(0,n-1,0,r-1,0,a-1)},t.getDimensions=()=>[e.extent[1]-e.extent[0]+1,e.extent[3]-e.extent[2]+1,e.extent[5]-e.extent[4]+1],t.getNumberOfCells=()=>{const n=t.getDimensions();let r=1;for(let a=0;a<3;a++){if(n[a]===0)return 0;n[a]>1&&(r*=n[a]-1)}return r},t.getNumberOfPoints=()=>{const n=t.getDimensions();return n[0]*n[1]*n[2]},t.getPoint=n=>{const r=t.getDimensions();if(r[0]===0||r[1]===0||r[2]===0)return Bn("Requesting a point from an empty image."),null;const a=new Float64Array(3);switch(e.dataDescription){case Bt.EMPTY:return null;case Bt.SINGLE_POINT:break;case Bt.X_LINE:a[0]=n;break;case Bt.Y_LINE:a[1]=n;break;case Bt.Z_LINE:a[2]=n;break;case Bt.XY_PLANE:a[0]=n%r[0],a[1]=n/r[0];break;case Bt.YZ_PLANE:a[1]=n%r[1],a[2]=n/r[1];break;case Bt.XZ_PLANE:a[0]=n%r[0],a[2]=n/r[0];break;case Bt.XYZ_GRID:a[0]=n%r[0],a[1]=n/r[0]%r[1],a[2]=n/(r[0]*r[1]);break;default:Bn("Invalid dataDescription");break}const s=[0,0,0];return t.indexToWorld(a,s),s},t.getBounds=()=>t.extentToBounds(t.getSpatialExtent()),t.extentToBounds=n=>Me.transformBounds(n,e.indexToWorld),t.getSpatialExtent=()=>Me.inflate([...e.extent],.5),t.computeTransforms=()=>{Bu(e.indexToWorld,e.origin),e.indexToWorld[0]=e.direction[0],e.indexToWorld[1]=e.direction[1],e.indexToWorld[2]=e.direction[2],e.indexToWorld[4]=e.direction[3],e.indexToWorld[5]=e.direction[4],e.indexToWorld[6]=e.direction[5],e.indexToWorld[8]=e.direction[6],e.indexToWorld[9]=e.direction[7],e.indexToWorld[10]=e.direction[8],xr(e.indexToWorld,e.indexToWorld,e.spacing),dt(e.worldToIndex,e.indexToWorld)},t.indexToWorld=function(n){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];return Se(r,n,e.indexToWorld),r},t.indexToWorldVec3=t.indexToWorld,t.worldToIndex=function(n){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];return Se(r,n,e.worldToIndex),r},t.worldToIndexVec3=t.worldToIndex,t.indexToWorldBounds=function(n){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];return Me.transformBounds(n,e.indexToWorld,r)},t.worldToIndexBounds=function(n){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];return Me.transformBounds(n,e.worldToIndex,r)},t.onModified(t.computeTransforms),t.computeTransforms(),t.getCenter=()=>Me.getCenter(t.getBounds()),t.computeHistogram=function(n){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;const a=[0,0,0,0,0,0];t.worldToIndexBounds(n,a);const s=[0,0,0],i=[0,0,0];Me.computeCornerPoints(a,s,i),vc(s,s),vc(i,i);const o=t.getDimensions();yc(s,[0,0,0],[o[0]-1,o[1]-1,o[2]-1],s),yc(i,[0,0,0],[o[0]-1,o[1]-1,o[2]-1],i);const u=o[0],c=o[0]*o[1],f=t.getPointData().getScalars().getData();let l=-1/0,g=1/0,p=0,y=0,h=0;for(let v=s[2];v<=i[2];v++)for(let T=s[1];T<=i[1];T++){let w=s[0]+T*u+v*c;for(let C=s[0];C<=i[0];C++){if(!r||r([C,T,v],a)){const R=f[w];R>l&&(l=R),R<g&&(g=R),p+=R*R,y+=R,h+=1}++w}}const d=h>0?y/h:0,x=h?Math.abs(p/h-d*d):0,S=Math.sqrt(x);return{minimum:g,maximum:l,average:d,variance:x,sigma:S,count:h}},t.computeIncrements=function(n){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1;const a=[];let s=r;for(let i=0;i<3;++i)a[i]=s,s*=n[i*2+1]-n[i*2]+1;return a},t.computeOffsetIndex=n=>{let[r,a,s]=n;const i=t.getExtent(),o=t.getPointData().getScalars().getNumberOfComponents(),u=t.computeIncrements(i,o);return Math.floor((Math.round(r)-i[0])*u[0]+(Math.round(a)-i[2])*u[1]+(Math.round(s)-i[4])*u[2])},t.getOffsetIndexFromWorld=n=>{const r=t.getExtent(),a=t.worldToIndex(n);for(let s=0;s<3;++s)if(a[s]<r[s*2]||a[s]>r[s*2+1])return Bn(`GetScalarPointer: Pixel ${a} is not in memory. Current extent = ${r}`),NaN;return t.computeOffsetIndex(a)},t.getScalarValueFromWorld=function(n){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;const a=t.getPointData().getScalars().getNumberOfComponents();if(r<0||r>=a)return Bn(`GetScalarPointer: Scalar Component ${r} is not within bounds. Current Scalar numberOfComponents: ${a}`),NaN;const s=t.getOffsetIndexFromWorld(n);return Number.isNaN(s)?s:t.getPointData().getScalars().getComponent(s,r)}}const my={direction:null,indexToWorld:null,worldToIndex:null,spacing:[1,1,1],origin:[0,0,0],extent:[0,-1,0,-1,0,-1],dataDescription:Bt.EMPTY};function El(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,my,n),Zn.extend(t,e,n),e.direction?Array.isArray(e.direction)&&(e.direction=new Float64Array(e.direction.slice(0,9))):e.direction=Qn(new Float64Array(9)),e.indexToWorld=new Float64Array(16),e.worldToIndex=new Float64Array(16),_.get(t,e,["indexToWorld","worldToIndex"]),_.setGetArray(t,e,["origin","spacing"],3),_.setGetArray(t,e,["direction"],9),_.getArray(t,e,["extent"],6),Dy(t,e)}const My=_.newInstance(El,"vtkImageData");var Vy={newInstance:My,extend:El};const Ly={MAGNITUDE:0,COMPONENT:1,RGBCOLORS:2},wi={LUMINANCE:1,LUMINANCE_ALPHA:2,RGB:3,RGBA:4};var ho={VectorMode:Ly,ScalarMappingTarget:wi};const By={DEFAULT:0,MAP_SCALARS:1,DIRECT_SCALARS:2},ky={DEFAULT:0,USE_POINT_DATA:1,USE_CELL_DATA:2,USE_POINT_FIELD_DATA:3,USE_CELL_FIELD_DATA:4,USE_FIELD_DATA:5},Fy={BY_ID:0,BY_NAME:1};var ys={ColorMode:By,GetArray:Fy,ScalarMode:ky};const{ScalarMappingTarget:_c,VectorMode:It}=ho,{VtkDataTypes:kn}=_e,{ColorMode:Ta}=ys,{vtkErrorMacro:Ec}=_;function Uy(t){return t}function Rc(t){return Math.floor(t*255+.5)}function by(t,e){e.classHierarchy.push("vtkScalarsToColors"),t.setVectorModeToMagnitude=()=>t.setVectorMode(It.MAGNITUDE),t.setVectorModeToComponent=()=>t.setVectorMode(It.COMPONENT),t.setVectorModeToRGBColors=()=>t.setVectorMode(It.RGBCOLORS),t.build=()=>{},t.isOpaque=()=>!0,t.setAnnotations=(n,r)=>{if(!(n&&!r||!n&&r)){if(n&&r&&n.length!==r.length){Ec("Values and annotations do not have the same number of tuples so ignoring");return}if(e.annotationArray=[],r&&n){const a=r.length;for(let s=0;s<a;s++)e.annotationArray.push({value:n[s],annotation:String(r[s])})}t.updateAnnotatedValueMap(),t.modified()}},t.setAnnotation=(n,r)=>{let a=t.checkForAnnotatedValue(n),s=!1;return a>=0?e.annotationArray[a].annotation!==r&&(e.annotationArray[a].annotation=r,s=!0):(e.annotationArray.push({value:n,annotation:r}),a=e.annotationArray.length-1,s=!0),s&&(t.updateAnnotatedValueMap(),t.modified()),a},t.getNumberOfAnnotatedValues=()=>e.annotationArray.length,t.getAnnotatedValue=n=>n<0||n>=e.annotationArray.length?null:e.annotationArray[n].value,t.getAnnotation=n=>e.annotationArray[n]===void 0?null:e.annotationArray[n].annotation,t.getAnnotatedValueIndex=n=>e.annotationArray.length?t.checkForAnnotatedValue(n):-1,t.removeAnnotation=n=>{const r=t.checkForAnnotatedValue(n),a=r>=0;return a&&(e.annotationArray.splice(r,1),t.updateAnnotatedValueMap(),t.modified()),a},t.resetAnnotations=()=>{e.annotationArray=[],e.annotatedValueMap=[],t.modified()},t.getAnnotationColor=(n,r)=>{if(e.indexedLookup){const a=t.getAnnotatedValueIndex(n);t.getIndexedColor(a,r)}else t.getColor(parseFloat(n),r),r[3]=1},t.checkForAnnotatedValue=n=>t.getAnnotatedValueIndexInternal(n),t.getAnnotatedValueIndexInternal=n=>{if(e.annotatedValueMap[n]!==void 0){const r=e.annotationArray.length;return e.annotatedValueMap[n]%r}return-1},t.getIndexedColor=(n,r)=>{r[0]=0,r[1]=0,r[2]=0,r[3]=0},t.updateAnnotatedValueMap=()=>{e.annotatedValueMap=[];const n=e.annotationArray.length;for(let r=0;r<n;r++)e.annotatedValueMap[e.annotationArray[r].value]=r},t.mapScalars=(n,r,a)=>{const s=n.getNumberOfComponents();let i=null;if(r===Ta.DEFAULT&&n.getDataType()===kn.UNSIGNED_CHAR||r===Ta.DIRECT_SCALARS&&n)i=t.convertToRGBA(n,s,n.getNumberOfTuples());else{const o={type:"vtkDataArray",name:"temp",numberOfComponents:4,dataType:kn.UNSIGNED_CHAR},u=_.newTypedArray(o.dataType,4*n.getNumberOfTuples());o.values=u,o.size=u.length,i=_e.newInstance(o);let c=a;c<0&&s>1?t.mapVectorsThroughTable(n,i,_c.RGBA,-1,-1):(c<0&&(c=0),c>=s&&(c=s-1),t.mapScalarsThroughTable(n,i,_c.RGBA,c))}return i},t.mapVectorsToMagnitude=(n,r,a)=>{const s=n.getNumberOfTuples(),i=n.getNumberOfComponents(),o=r.getData(),u=n.getData();for(let c=0;c<s;c++){let f=0;for(let l=0;l<a;l++)f+=u[c*i+l]*u[c*i+l];o[c]=Math.sqrt(f)}},t.mapVectorsThroughTable=(n,r,a,s,i)=>{let o=t.getVectorMode(),u=i,c=s;const f=n.getNumberOfComponents();o===It.COMPONENT?(c===-1&&(c=t.getVectorComponent()),c<0&&(c=0),c>=f&&(c=f-1)):(u===-1&&(u=t.getVectorSize()),u<=0?(c=0,u=f):(c<0&&(c=0),c>=f&&(c=f-1),c+u>f&&(u=f-c)),o===It.MAGNITUDE&&(f===1||u===1)&&(o=It.COMPONENT));let l=0;switch(c>0&&(l=c),o){case It.COMPONENT:{t.mapScalarsThroughTable(n,r,a,l);break}case It.RGBCOLORS:break;case It.MAGNITUDE:default:{const g=_e.newInstance({numberOfComponents:1,values:new Float32Array(n.getNumberOfTuples())});t.mapVectorsToMagnitude(n,g,u),t.mapScalarsThroughTable(g,r,a,0);break}}},t.luminanceToRGBA=(n,r,a,s)=>{const i=s(a),o=r.getData(),u=n.getData(),c=o.length,f=0,l=1;let g=0;for(let p=f;p<c;p+=l){const y=s(o[p]);u[g*4]=y,u[g*4+1]=y,u[g*4+2]=y,u[g*4+3]=i,g++}},t.luminanceAlphaToRGBA=(n,r,a,s)=>{const i=r.getData(),o=n.getData(),u=i.length,c=0,f=2;let l=0;for(let g=c;g<u;g+=f){const p=s(i[g]);o[l]=p,o[l+1]=p,o[l+2]=p,o[l+3]=s(i[g+1])*a,l+=4}},t.rGBToRGBA=(n,r,a,s)=>{const i=Rc(a),o=r.getData(),u=n.getData(),c=o.length,f=0,l=3;let g=0;for(let p=f;p<c;p+=l)u[g*4]=s(o[p]),u[g*4+1]=s(o[p+1]),u[g*4+2]=s(o[p+2]),u[g*4+3]=i,g++},t.rGBAToRGBA=(n,r,a,s)=>{const i=r.getData(),o=n.getData(),u=i.length,c=0,f=4;let l=0;for(let g=c;g<u;g+=f)o[l*4]=s(i[g]),o[l*4+1]=s(i[g+1]),o[l*4+2]=s(i[g+2]),o[l*4+3]=s(i[g+3])*a,l++},t.convertToRGBA=(n,r,a)=>{let{alpha:s}=e;if(r===4&&s>=1&&n.getDataType()===kn.UNSIGNED_CHAR)return n;const i=_e.newInstance({numberOfComponents:4,empty:!0,size:4*a,dataType:kn.UNSIGNED_CHAR});if(a<=0)return i;s=s>0?s:0,s=s<1?s:1;let o=Uy;switch((n.getDataType()===kn.FLOAT||n.getDataType()===kn.DOUBLE)&&(o=Rc),r){case 1:t.luminanceToRGBA(i,n,s,o);break;case 2:t.luminanceAlphaToRGBA(i,n,o);break;case 3:t.rGBToRGBA(i,n,s,o);break;case 4:t.rGBAToRGBA(i,n,s,o);break;default:return Ec("Cannot convert colors"),null}return i},t.usingLogScale=()=>!1,t.getNumberOfAvailableColors=()=>256*256*256,t.setRange=(n,r)=>t.setMappingRange(n,r),t.getRange=()=>t.getMappingRange(),t.areScalarsOpaque=(n,r,a)=>{if(!n)return t.isOpaque();const s=n.getNumberOfComponents();return r===Ta.DEFAULT&&n.getDataType()===kn.UNSIGNED_CHAR||r===Ta.DIRECT_SCALARS?s===3||s===1?e.alpha>=1:n.getRange(s-1)[0]===255:!0}}const Ny={alpha:1,vectorComponent:0,vectorSize:-1,vectorMode:It.COMPONENT,mappingRange:null,annotationArray:null,annotatedValueMap:null,indexedLookup:!1};function Rl(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Ny,n),_.obj(t,e),e.mappingRange=[0,255],e.annotationArray=[],e.annotatedValueMap=[],_.setGet(t,e,["vectorSize","vectorComponent","vectorMode","alpha","indexedLookup"]),_.setArray(t,e,["mappingRange"],2),_.getArray(t,e,["mappingRange"]),by(t,e)}const Gy=_.newInstance(Rl,"vtkScalarsToColors");var Ts={newInstance:Gy,extend:Rl,...ho};const{vtkErrorMacro:Oc}=_,Dc=0,mc=1,Gs=2;function $y(t,e){e.classHierarchy.push("vtkLookupTable"),t.isOpaque=()=>{if(e.opaqueFlagBuildTime.getMTime()<t.getMTime()){let n=!0;e.nanColor[3]<1&&(n=0),e.useBelowRangeColor&&e.belowRangeColor[3]<1&&(n=0),e.useAboveRangeColor&&e.aboveRangeColor[3]<1&&(n=0);for(let r=3;r<e.table.length&&n;r+=4)e.table[r]<255&&(n=!1);e.opaqueFlag=n,e.opaqueFlagBuildTime.modified()}return e.opaqueFlag},t.usingLogScale=()=>!1,t.getNumberOfAvailableColors=()=>e.table.length/4,t.linearIndexLookup=(n,r)=>{let a=0;const s=Number(n);return s<r.range[0]?a=r.maxIndex+Dc+1.5:s>r.range[1]?a=r.maxIndex+mc+1.5:(a=(s+r.shift)*r.scale,a=a<r.maxIndex?a:r.maxIndex),Math.floor(a)},t.linearLookup=(n,r,a)=>{let s=0;ns(n)?s=Math.floor(a.maxIndex+1.5+Gs):s=t.linearIndexLookup(n,a);const i=4*s;return r.slice(i,i+4)},t.indexedLookupFunction=(n,r,a)=>{let s=t.getAnnotatedValueIndexInternal(n);s===-1&&(s=e.numberOfColors+Gs);const i=4*s;return[r[i],r[i+1],r[i+2],r[i+3]]},t.lookupShiftAndScale=(n,r)=>{r.shift=-n[0],r.scale=Number.MAX_VALUE,n[1]>n[0]&&(r.scale=(r.maxIndex+1)/(n[1]-n[0]))},t.mapScalarsThroughTable=(n,r,a,s)=>{let i=t.linearLookup;e.indexedLookup&&(i=t.indexedLookupFunction);const o=t.getMappingRange(),u={maxIndex:t.getNumberOfColors()-1,range:o,shift:0,scale:0};t.lookupShiftAndScale(o,u);const c=t.getAlpha(),f=n.getNumberOfTuples(),l=n.getNumberOfComponents(),g=r.getData(),p=n.getData();if(c>=1){if(a===wi.RGBA)for(let y=0;y<f;y++){const h=i(p[y*l+s],e.table,u);g[y*4]=h[0],g[y*4+1]=h[1],g[y*4+2]=h[2],g[y*4+3]=h[3]}}else if(a===wi.RGBA)for(let y=0;y<f;y++){const h=i(p[y*l+s],e.table,u);g[y*4]=h[0],g[y*4+1]=h[1],g[y*4+2]=h[2],g[y*4+3]=Math.floor(h[3]*c+.5)}},t.forceBuild=()=>{let n=0,r=0,a=0,s=0;const i=e.numberOfColors-1;i&&(n=(e.hueRange[1]-e.hueRange[0])/i,r=(e.saturationRange[1]-e.saturationRange[0])/i,a=(e.valueRange[1]-e.valueRange[0])/i,s=(e.alphaRange[1]-e.alphaRange[0])/i),e.table.length=4*i+16;const o=[],u=[];for(let c=0;c<=i;c++)o[0]=e.hueRange[0]+c*n,o[1]=e.saturationRange[0]+c*r,o[2]=e.valueRange[0]+c*a,cr(o,u),u[3]=e.alphaRange[0]+c*s,e.table[c*4]=u[0]*255+.5,e.table[c*4+1]=u[1]*255+.5,e.table[c*4+2]=u[2]*255+.5,e.table[c*4+3]=u[3]*255+.5;t.buildSpecialColors(),e.buildTime.modified()},t.setTable=n=>{if(Array.isArray(n)){const a=n[0].length;e.numberOfColors=n.length;const s=4-a;let i=0;for(let o=0;o<e.numberOfColors;o++)e.table[o*4]=255,e.table[o*4+1]=255,e.table[o*4+2]=255,e.table[o*4+3]=255;for(let o=0;o<n.length;o++){const u=n[o];for(let c=0;c<a;c++)e.table[i++]=u[c];i+=s}return t.buildSpecialColors(),e.insertTime.modified(),t.modified(),!0}if(n.getNumberOfComponents()!==4)return Oc("Expected 4 components for RGBA colors"),!1;if(n.getDataType()!==Ke.UNSIGNED_CHAR)return Oc("Expected unsigned char values for RGBA colors"),!1;e.numberOfColors=n.getNumberOfTuples();const r=n.getData();e.table.length=r.length;for(let a=0;a<r.length;a++)e.table[a]=r[a];return t.buildSpecialColors(),e.insertTime.modified(),t.modified(),!0},t.buildSpecialColors=()=>{const{numberOfColors:n}=e,r=e.table;let a=(n+Dc)*4;e.useBelowRangeColor||n===0?(r[a]=e.belowRangeColor[0]*255+.5,r[a+1]=e.belowRangeColor[1]*255+.5,r[a+2]=e.belowRangeColor[2]*255+.5,r[a+3]=e.belowRangeColor[3]*255+.5):(r[a]=r[0],r[a+1]=r[1],r[a+2]=r[2],r[a+3]=r[3]),a=(n+mc)*4,e.useAboveRangeColor||n===0?(r[a]=e.aboveRangeColor[0]*255+.5,r[a+1]=e.aboveRangeColor[1]*255+.5,r[a+2]=e.aboveRangeColor[2]*255+.5,r[a+3]=e.aboveRangeColor[3]*255+.5):(r[a]=r[4*(n-1)+0],r[a+1]=r[4*(n-1)+1],r[a+2]=r[4*(n-1)+2],r[a+3]=r[4*(n-1)+3]),a=(n+Gs)*4,r[a]=e.nanColor[0]*255+.5,r[a+1]=e.nanColor[1]*255+.5,r[a+2]=e.nanColor[2]*255+.5,r[a+3]=e.nanColor[3]*255+.5},t.build=()=>{(e.table.length<1||t.getMTime()>e.buildTime.getMTime()&&e.insertTime.getMTime()<=e.buildTime.getMTime())&&t.forceBuild()},e.table.length>0&&(t.buildSpecialColors(),e.insertTime.modified())}const Wy={numberOfColors:256,hueRange:[0,.66667],saturationRange:[1,1],valueRange:[1,1],alphaRange:[1,1],nanColor:[.5,0,0,1],belowRangeColor:[0,0,0,1],aboveRangeColor:[1,1,1,1],useAboveRangeColor:!1,useBelowRangeColor:!1,alpha:1};function Ol(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Wy,n),Ts.extend(t,e,n),e.table||(e.table=[]),e.buildTime={},_.obj(e.buildTime),e.opaqueFlagBuildTime={},_.obj(e.opaqueFlagBuildTime,{mtime:0}),e.insertTime={},_.obj(e.insertTime,{mtime:0}),_.get(t,e,["buildTime"]),_.setGet(t,e,["numberOfColors","useAboveRangeColor","useBelowRangeColor"]),_.setArray(t,e,["alphaRange","hueRange","saturationRange","valueRange"],2),_.setArray(t,e,["nanColor","belowRangeColor","aboveRangeColor"],4),_.getArray(t,e,["hueRange","saturationRange","valueRange","alphaRange","nanColor","belowRangeColor","aboveRangeColor"]),$y(t,e)}const zy=_.newInstance(Ol,"vtkLookupTable");var Wr={newInstance:zy,extend:Ol};let Dl=1,vo=0;const Ay=["VTK_RESOLVE_OFF","VTK_RESOLVE_POLYGON_OFFSET"];function Hy(){return Dl}function jy(t){Dl=t}function Ky(){return vo}function xs(){vo=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0}function Py(){xs(0)}function Xy(){xs(0)}function Iy(){xs(1)}function Yy(){return Ay[vo]}var _i={getResolveCoincidentTopologyAsString:Yy,getResolveCoincidentTopologyPolygonOffsetFaces:Hy,getResolveCoincidentTopology:Ky,setResolveCoincidentTopology:xs,setResolveCoincidentTopologyPolygonOffsetFaces:jy,setResolveCoincidentTopologyToDefault:Py,setResolveCoincidentTopologyToOff:Xy,setResolveCoincidentTopologyToPolygonOffset:Iy};function ml(t,e,n){n.forEach(r=>{t[`get${r.method}`]=()=>e[r.key],t[`set${r.method}`]=(a,s)=>{e[r.key]={factor:a,offset:s}}})}const yo=["Polygon","Line","Point"],qy={Polygon:{factor:2,offset:0},Line:{factor:1,offset:-1},Point:{factor:0,offset:-2}},An={};ml(An,qy,yo.map(t=>({key:t,method:`ResolveCoincidentTopology${t}OffsetParameters`})));function Qy(t,e){e.resolveCoincidentTopology===void 0&&(e.resolveCoincidentTopology=!1),_.setGet(t,e,["resolveCoincidentTopology"]),e.topologyOffset={Polygon:{factor:0,offset:0},Line:{factor:0,offset:0},Point:{factor:0,offset:0}},Object.keys(_i).forEach(n=>{t[n]=_i[n]}),Object.keys(An).forEach(n=>{t[n]=An[n]}),ml(t,e.topologyOffset,yo.map(n=>({key:n,method:`RelativeCoincidentTopology${n}OffsetParameters`}))),t.getCoincidentTopologyPolygonOffsetParameters=()=>{const n=An.getResolveCoincidentTopologyPolygonOffsetParameters(),r=t.getRelativeCoincidentTopologyPolygonOffsetParameters();return{factor:n.factor+r.factor,offset:n.offset+r.offset}},t.getCoincidentTopologyLineOffsetParameters=()=>{const n=An.getResolveCoincidentTopologyLineOffsetParameters(),r=t.getRelativeCoincidentTopologyLineOffsetParameters();return{factor:n.factor+r.factor,offset:n.offset+r.offset}},t.getCoincidentTopologyPointOffsetParameter=()=>{const n=An.getResolveCoincidentTopologyPointOffsetParameters(),r=t.getRelativeCoincidentTopologyPointOffsetParameters();return{factor:n.factor+r.factor,offset:n.offset+r.offset}}}var Ml={implementCoincidentTopologyMethods:Qy,staticOffsetAPI:An,otherStaticMethods:_i,CATEGORIES:yo};const ct={MIN_KNOWN_PASS:0,ACTOR_PASS:0,COMPOSITE_INDEX_PASS:1,ID_LOW24:2,ID_HIGH24:3,MAX_KNOWN_PASS:3};var Vl={PassTypes:ct};const{FieldAssociations:Mc}=Zn,{staticOffsetAPI:Zy,otherStaticMethods:Jy}=Ml,{ColorMode:$s,ScalarMode:Fn,GetArray:Ws}=ys,{VectorMode:eT}=ho,{VtkDataTypes:tT}=_e;function Fr(t){return()=>_.vtkErrorMacro(`vtkMapper::${t} - NOT IMPLEMENTED`)}function nT(t,e){e.classHierarchy.push("vtkMapper"),t.getBounds=()=>{const n=t.getInputData();return n?(e.static||t.update(),e.bounds=n.getBounds()):e.bounds=ao(),e.bounds},t.setForceCompileOnly=n=>{e.forceCompileOnly=n},t.setSelectionWebGLIdsToVTKIds=n=>{e.selectionWebGLIdsToVTKIds=n},t.createDefaultLookupTable=()=>{e.lookupTable=Wr.newInstance()},t.getColorModeAsString=()=>_.enumToString($s,e.colorMode),t.setColorModeToDefault=()=>t.setColorMode(0),t.setColorModeToMapScalars=()=>t.setColorMode(1),t.setColorModeToDirectScalars=()=>t.setColorMode(2),t.getScalarModeAsString=()=>_.enumToString(Fn,e.scalarMode),t.setScalarModeToDefault=()=>t.setScalarMode(0),t.setScalarModeToUsePointData=()=>t.setScalarMode(1),t.setScalarModeToUseCellData=()=>t.setScalarMode(2),t.setScalarModeToUsePointFieldData=()=>t.setScalarMode(3),t.setScalarModeToUseCellFieldData=()=>t.setScalarMode(4),t.setScalarModeToUseFieldData=()=>t.setScalarMode(5),t.getAbstractScalars=(n,r,a,s,i)=>{if(!n||!e.scalarVisibility)return{scalars:null,cellFLag:!1};let o=null,u=!1;if(r===Fn.DEFAULT)o=n.getPointData().getScalars(),o||(o=n.getCellData().getScalars(),u=!0);else if(r===Fn.USE_POINT_DATA)o=n.getPointData().getScalars();else if(r===Fn.USE_CELL_DATA)o=n.getCellData().getScalars(),u=!0;else if(r===Fn.USE_POINT_FIELD_DATA){const c=n.getPointData();a===Ws.BY_ID?o=c.getArrayByIndex(s):o=c.getArrayByName(i)}else if(r===Fn.USE_CELL_FIELD_DATA){const c=n.getCellData();u=!0,a===Ws.BY_ID?o=c.getArrayByIndex(s):o=c.getArrayByName(i)}else if(r===Fn.USE_FIELD_DATA){const c=n.getFieldData();a===Ws.BY_ID?o=c.getArrayByIndex(s):o=c.getArrayByName(i)}return{scalars:o,cellFlag:u}},t.mapScalars=(n,r)=>{const a=t.getAbstractScalars(n,e.scalarMode,e.arrayAccessMode,e.arrayId,e.colorByArrayName).scalars;if(!a){e.colorCoordinates=null,e.colorTextureMap=null,e.colorMapColors=null;return}const s=`${t.getMTime()}${a.getMTime()}${r}`;if(e.colorBuildString!==s){if(e.useLookupTableScalarRange||t.getLookupTable().setRange(e.scalarRange[0],e.scalarRange[1]),t.canUseTextureMapForColoring(n))t.mapScalarsToTexture(a,r);else{e.colorCoordinates=null,e.colorTextureMap=null;const i=t.getLookupTable();i&&(i.build(),e.colorMapColors=i.mapScalars(a,e.colorMode,e.fieldDataTupleId))}e.colorBuildString=`${t.getMTime()}${a.getMTime()}${r}`}},t.scalarToTextureCoordinate=(n,r,a)=>{let s=.5,i=1;return ns(n)||(i=.49,s=(n-r)*a,s>1e3?s=1e3:s<-1e3&&(s=-1e3)),{texCoordS:s,texCoordT:i}},t.createColorTextureCoordinates=(n,r,a,s,i,o,u,c,f)=>{const l=(o[1]-o[0])/c,g=[];g[0]=o[0]-l,g[1]=o[1]+l;const p=1/(g[1]-g[0]),y=r.getData(),h=n.getData();let d=0,x=0;if(i<0||i>=s)for(let S=0;S<a;++S){let v=0;for(let C=0;C<s;++C)v+=h[d]*h[d],d++;let T=Math.sqrt(v);f&&(T=Wr.applyLogScale(T,u,o));const w=t.scalarToTextureCoordinate(T,g[0],p);y[x]=w.texCoordS,y[x+1]=w.texCoordT,x+=2}else{d+=i;for(let S=0;S<a;++S){let v=h[d];f&&(v=Wr.applyLogScale(v,u,o));const T=t.scalarToTextureCoordinate(v,g[0],p);y[x]=T.texCoordS,y[x+1]=T.texCoordT,x+=2,d+=s}}},t.mapScalarsToTexture=(n,r)=>{const a=e.lookupTable.getRange(),s=e.lookupTable.usingLogScale();s&&Wr.getLogRange(a,a);const i=e.lookupTable.getAlpha();if(e.colorMapColors=null,e.colorTextureMap==null||t.getMTime()>e.colorTextureMap.getMTime()||e.lookupTable.getMTime()>e.colorTextureMap.getMTime()||e.lookupTable.getAlpha()!==r){e.lookupTable.setAlpha(r),e.colorTextureMap=null,e.lookupTable.build();let o=e.lookupTable.getNumberOfAvailableColors();o>4094&&(o=4094),o<64&&(o=64),o+=2;const u=(a[1]-a[0])/(o-2),c=new Float64Array(o*2);for(let l=0;l<o;++l)c[l]=a[0]+l*u-u/2,s&&(c[l]=10**c[l]);for(let l=0;l<o;++l)c[l+o]=NaN;e.colorTextureMap=Vy.newInstance(),e.colorTextureMap.setExtent(0,o-1,0,1,0,0);const f=_e.newInstance({numberOfComponents:1,values:c});e.colorTextureMap.getPointData().setScalars(e.lookupTable.mapScalars(f,e.colorMode,0)),e.lookupTable.setAlpha(i)}if(!e.colorCoordinates||t.getMTime()>e.colorCoordinates.getMTime()||t.getInputData(0).getMTime()>e.colorCoordinates.getMTime()||e.lookupTable.getMTime()>e.colorCoordinates.getMTime()){e.colorCoordinates=null;const o=n.getNumberOfComponents(),u=n.getNumberOfTuples();e.colorCoordinates=_e.newInstance({numberOfComponents:2,values:new Float32Array(u*2)});let c=e.lookupTable.getVectorComponent();e.lookupTable.getVectorMode()===eT.MAGNITUDE&&n.getNumberOfComponents()>1&&(c=-1),t.createColorTextureCoordinates(n,e.colorCoordinates,u,o,c,a,e.lookupTable.getRange(),e.colorTextureMap.getPointData().getScalars().getNumberOfTuples()/2-2,s)}},t.getIsOpaque=()=>{const n=t.getInputData(),a=t.getAbstractScalars(n,e.scalarMode,e.arrayAccessMode,e.arrayId,e.colorByArrayName).scalars;if(!e.scalarVisibility||a==null)return!0;const s=t.getLookupTable();return s?(s.build(),s.areScalarsOpaque(a,e.colorMode,-1)):!0},t.canUseTextureMapForColoring=n=>{if(!e.interpolateScalarsBeforeMapping||e.lookupTable&&e.lookupTable.getIndexedLookup())return!1;const r=t.getAbstractScalars(n,e.scalarMode,e.arrayAccessMode,e.arrayId,e.colorByArrayName),a=r.scalars;return!(!a||r.cellFlag||e.colorMode===$s.DEFAULT&&a.getDataType()===tT.UNSIGNED_CHAR||e.colorMode===$s.DIRECT_SCALARS)},t.clearColorArrays=()=>{e.colorMapColors=null,e.colorCoordinates=null,e.colorTextureMap=null},t.getLookupTable=()=>(e.lookupTable||t.createDefaultLookupTable(),e.lookupTable),t.getMTime=()=>{let n=e.mtime;if(e.lookupTable!==null){const r=e.lookupTable.getMTime();n=r>n?r:n}return n},t.getPrimitiveCount=()=>{const n=t.getInputData();return{points:n.getPoints().getNumberOfValues()/3,verts:n.getVerts().getNumberOfValues()-n.getVerts().getNumberOfCells(),lines:n.getLines().getNumberOfValues()-2*n.getLines().getNumberOfCells(),triangles:n.getPolys().getNumberOfValues()-3*n.getPolys().getNumberOfCells()}},t.acquireInvertibleLookupTable=Fr("AcquireInvertibleLookupTable"),t.valueToColor=Fr("ValueToColor"),t.colorToValue=Fr("ColorToValue"),t.useInvertibleColorFor=Fr("UseInvertibleColorFor"),t.clearInvertibleColor=Fr("ClearInvertibleColor"),t.processSelectorPixelBuffers=(n,r)=>{if(!n||!e.selectionWebGLIdsToVTKIds||!e.populateSelectionSettings)return;const a=n.getRawPixelBuffer(ct.ID_LOW24),s=n.getRawPixelBuffer(ct.ID_HIGH24),i=n.getCurrentPass(),o=n.getFieldAssociation();let u=null;o===Mc.FIELD_ASSOCIATION_POINTS?u=e.selectionWebGLIdsToVTKIds.points:o===Mc.FIELD_ASSOCIATION_CELLS&&(u=e.selectionWebGLIdsToVTKIds.cells),u&&r.forEach(c=>{if(i===ct.ID_LOW24){let f=0;s&&(f+=s[c],f*=256),f+=a[c+2],f*=256,f+=a[c+1],f*=256,f+=a[c];const l=u[f],g=n.getPixelBuffer(ct.ID_LOW24);g[c]=l&255,g[c+1]=(l&65280)>>8,g[c+2]=(l&16711680)>>16}else if(i===ct.ID_HIGH24&&s){let f=0;f+=s[c],f*=256,f+=a[c],f*=256,f+=a[c+1],f*=256,f+=a[c+2];const l=u[f],g=n.getPixelBuffer(ct.ID_HIGH24);g[c]=(l&4278190080)>>24}})}}const rT={colorMapColors:null,static:!1,lookupTable:null,scalarVisibility:!0,scalarRange:[0,1],useLookupTableScalarRange:!1,colorMode:0,scalarMode:0,arrayAccessMode:1,renderTime:0,colorByArrayName:null,fieldDataTupleId:-1,populateSelectionSettings:!0,selectionWebGLIdsToVTKIds:null,interpolateScalarsBeforeMapping:!1,colorCoordinates:null,colorTextureMap:null,forceCompileOnly:0,useInvertibleColors:!1,invertibleScalars:null,customShaderAttributes:[]};function Ll(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,rT,n),ay.extend(t,e,n),_.get(t,e,["colorCoordinates","colorMapColors","colorTextureMap","selectionWebGLIdsToVTKIds"]),_.setGet(t,e,["colorByArrayName","arrayAccessMode","colorMode","fieldDataTupleId","interpolateScalarsBeforeMapping","lookupTable","populateSelectionSettings","renderTime","scalarMode","scalarVisibility","static","useLookupTableScalarRange","customShaderAttributes"]),_.setGetArray(t,e,["scalarRange"],2),Ml.implementCoincidentTopologyMethods(t,e),nT(t,e)}const aT=_.newInstance(Ll,"vtkMapper");var Wt={newInstance:aT,extend:Ll,...Zy,...Jy,...ys};function Bl(t){let e=0;return t.filter((n,r)=>r===e?(e+=n+1,!0):!1)}function kl(t){let e=0;for(let n=0;n<t.length;)n+=t[n]+1,e++;return e}const sT={extractCellSizes:Bl,getNumberOfCells:kl};function iT(t,e){e.classHierarchy.push("vtkCellArray");const n={...t};t.getNumberOfCells=r=>(e.numberOfCells!==void 0&&!r||(e.cellSizes?e.numberOfCells=e.cellSizes.length:e.numberOfCells=kl(t.getData())),e.numberOfCells),t.getCellSizes=r=>(e.cellSizes!==void 0&&!r||(e.cellSizes=Bl(t.getData())),e.cellSizes),t.resize=r=>{const a=t.getNumberOfTuples();n.resize(r);const s=t.getNumberOfTuples();s<a&&(s===0?(e.numberOfCells=0,e.cellSizes=[]):(e.numberOfCells=void 0,e.cellSizes=void 0))},t.setData=r=>{n.setData(r,1),e.numberOfCells=void 0,e.cellSizes=void 0},t.getCell=r=>{let a=r;const s=e.values[a++];return e.values.subarray(a,a+s)},t.insertNextCell=r=>{const a=t.getNumberOfCells();return t.insertNextTuples([r.length,...r]),++e.numberOfCells,e.cellSizes!=null&&e.cellSizes.push(r.length),a}}function oT(t){return{empty:!0,numberOfComponents:1,dataType:Ke.UNSIGNED_INT,...t}}function Fl(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};_e.extend(t,e,oT(n)),iT(t,e)}const cT=_.newInstance(Fl,"vtkCellArray");var Vc={newInstance:cT,extend:Fl,...sT};const{vtkErrorMacro:uT}=_,fT=[1,-1,1,-1,1,-1];function lT(t,e){e.classHierarchy.push("vtkPoints"),t.getNumberOfPoints=t.getNumberOfTuples,t.setNumberOfPoints=function(n){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:3;t.getNumberOfPoints()!==n&&(e.size=n*r,e.values=_.newTypedArray(e.dataType,e.size),t.setNumberOfComponents(r),t.modified())},t.setPoint=function(n){for(var r=arguments.length,a=new Array(r>1?r-1:0),s=1;s<r;s++)a[s-1]=arguments[s];t.setTuple(n,a)},t.getPoint=t.getTuple,t.findPoint=t.findTuple,t.insertNextPoint=(n,r,a)=>t.insertNextTuple([n,r,a]),t.getBounds=()=>{if(t.getNumberOfComponents()===3){const a=t.getRange(0);e.bounds[0]=a[0],e.bounds[1]=a[1];const s=t.getRange(1);e.bounds[2]=s[0],e.bounds[3]=s[1];const i=t.getRange(2);return e.bounds[4]=i[0],e.bounds[5]=i[1],e.bounds}if(t.getNumberOfComponents()!==2)return uT(`getBounds called on an array with components of
- ${t.getNumberOfComponents()}`),fT;const n=t.getRange(0);e.bounds[0]=n[0],e.bounds[1]=n[1];const r=t.getRange(1);return e.bounds[2]=r[0],e.bounds[3]=r[1],e.bounds[4]=0,e.bounds[5]=0,e.bounds},t.computeBounds=t.getBounds,t.setNumberOfComponents(e.numberOfComponents<2?3:e.numberOfComponents)}const gT={empty:!0,numberOfComponents:3,dataType:Ke.FLOAT,bounds:[1,-1,1,-1,1,-1]};function Ul(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,gT,n),_e.extend(t,e,n),lT(t,e)}const pT=_.newInstance(Ul,"vtkPoints");var is={newInstance:pT,extend:Ul};function hT(t,e){e.classHierarchy.push("vtkCell"),t.initialize=function(n){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;if(r){e.pointsIds=r;let a=e.points.getData();a.length!==3*e.pointsIds.length&&(a=_.newTypedArray(n.getDataType(),3*e.pointsIds.length));const s=n.getData();e.pointsIds.forEach((i,o)=>{let u=3*i,c=3*o;a[c]=s[u],a[++c]=s[++u],a[++c]=s[++u]}),e.points.setData(a)}else{e.points=n,e.pointsIds=new Array(n.getNumberOfPoints());for(let a=n.getNumberOfPoints()-1;a>=0;--a)e.pointsIds[a]=a}},t.getBounds=()=>{const n=e.points.getNumberOfPoints(),r=[];if(n){e.points.getPoint(0,r),e.bounds[0]=r[0],e.bounds[1]=r[0],e.bounds[2]=r[1],e.bounds[3]=r[1],e.bounds[4]=r[2],e.bounds[5]=r[2];for(let a=1;a<n;a++)e.points.getPoint(a,r),e.bounds[0]=r[0]<e.bounds[0]?r[0]:e.bounds[0],e.bounds[1]=r[0]>e.bounds[1]?r[0]:e.bounds[1],e.bounds[2]=r[1]<e.bounds[2]?r[1]:e.bounds[2],e.bounds[3]=r[1]>e.bounds[3]?r[1]:e.bounds[3],e.bounds[4]=r[2]<e.bounds[4]?r[2]:e.bounds[4],e.bounds[5]=r[2]>e.bounds[5]?r[2]:e.bounds[5]}else ro(e.bounds);return e.bounds},t.getLength2=()=>{t.getBounds();let n=0,r=0;for(let a=0;a<3;a++)r=e.bounds[2*a+1]-e.bounds[2*a],n+=r*r;return n},t.getParametricDistance=n=>{let r,a=0;for(let s=0;s<3;s++)n[s]<0?r=-n[s]:n[s]>1?r=n[s]-1:r=0,r>a&&(a=r);return a},t.getNumberOfPoints=()=>e.points.getNumberOfPoints(),t.deepCopy=n=>{n.initialize(e.points,e.pointsIds)},t.getCellDimension=()=>{},t.intersectWithLine=(n,r,a,s,i,o,u)=>{},t.evaluatePosition=(n,r,a,s,i,o)=>{_.vtkErrorMacro("vtkCell.evaluatePosition is not implemented.")}}const dT={bounds:[-1,-1,-1,-1,-1,-1],pointsIds:[]};function bl(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,dT,n),_.obj(t,e),e.points||(e.points=is.newInstance()),_.get(t,e,["points","pointsIds"]),hT(t,e)}const vT=_.newInstance(bl,"vtkCell");var os={newInstance:vT,extend:bl};function yT(t,e){let n=e;for(e>=t.array.length&&(n+=t.array.length);n>t.array.length;)t.array.push({ncells:0,cells:null});t.array.length=n}function TT(t,e){e.classHierarchy.push("vtkCellLinks"),t.buildLinks=n=>{const r=n.getPoints().getNumberOfPoints(),a=n.getNumberOfCells(),s=new Uint32Array(r);if(n.isA("vtkPolyData")){for(let i=0;i<a;++i){const{cellPointIds:o}=n.getCellPoints(i);o.forEach(u=>{t.incrementLinkCount(u)})}t.allocateLinks(r),e.maxId=r-1;for(let i=0;i<a;++i){const{cellPointIds:o}=n.getCellPoints(i);o.forEach(u=>{t.insertCellReference(u,s[u]++,i)})}}else{for(let i=0;i<a;i++)os.newInstance().getPointsIds().forEach(u=>{t.incrementLinkCount(u)});t.allocateLinks(r),e.maxId=r-1;for(let i=0;i<a;++i)os.newInstance().getPointsIds().forEach(u=>{t.insertCellReference(u,s[u]++,i)})}},t.allocate=function(n){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1e3;e.array=Array(n).fill().map(()=>({ncells:0,cells:null})),e.extend=r,e.maxId=-1},t.initialize=()=>{e.array=null},t.getLink=n=>e.array[n],t.getNcells=n=>e.array[n].ncells,t.getCells=n=>e.array[n].cells,t.insertNextPoint=n=>{e.array.push({ncells:n,cells:Array(n)}),++e.maxId},t.insertNextCellReference=(n,r)=>{e.array[n].cells[e.array[n].ncells++]=r},t.deletePoint=n=>{e.array[n].ncells=0,e.array[n].cells=null},t.removeCellReference=(n,r)=>{e.array[r].cells=e.array[r].cells.filter(a=>a!==n),e.array[r].ncells=e.array[r].cells.length},t.addCellReference=(n,r)=>{e.array[r].cells[e.array[r].ncells++]=n},t.resizeCellList=(n,r)=>{e.array[n].cells.length=r},t.squeeze=()=>{yT(e,e.maxId+1)},t.reset=()=>{e.maxId=-1},t.deepCopy=n=>{e.array=[...n.array],e.extend=n.extend,e.maxId=n.maxId},t.incrementLinkCount=n=>{++e.array[n].ncells},t.allocateLinks=n=>{for(let r=0;r<n;++r)e.array[r].cells=new Array(e.array[r].ncells)},t.insertCellReference=(n,r,a)=>{e.array[n].cells[r]=a}}const xT={array:null,maxId:0,extend:0};function Nl(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,xT,n),_.obj(t,e),TT(t,e)}const ST=_.newInstance(Nl,"vtkCellLinks");var CT={newInstance:ST,extend:Nl};const me={VTK_EMPTY_CELL:0,VTK_VERTEX:1,VTK_POLY_VERTEX:2,VTK_LINE:3,VTK_POLY_LINE:4,VTK_TRIANGLE:5,VTK_TRIANGLE_STRIP:6,VTK_POLYGON:7,VTK_PIXEL:8,VTK_QUAD:9,VTK_TETRA:10,VTK_VOXEL:11,VTK_HEXAHEDRON:12,VTK_WEDGE:13,VTK_PYRAMID:14,VTK_PENTAGONAL_PRISM:15,VTK_HEXAGONAL_PRISM:16,VTK_QUADRATIC_EDGE:21,VTK_QUADRATIC_TRIANGLE:22,VTK_QUADRATIC_QUAD:23,VTK_QUADRATIC_POLYGON:36,VTK_QUADRATIC_TETRA:24,VTK_QUADRATIC_HEXAHEDRON:25,VTK_QUADRATIC_WEDGE:26,VTK_QUADRATIC_PYRAMID:27,VTK_BIQUADRATIC_QUAD:28,VTK_TRIQUADRATIC_HEXAHEDRON:29,VTK_QUADRATIC_LINEAR_QUAD:30,VTK_QUADRATIC_LINEAR_WEDGE:31,VTK_BIQUADRATIC_QUADRATIC_WEDGE:32,VTK_BIQUADRATIC_QUADRATIC_HEXAHEDRON:33,VTK_BIQUADRATIC_TRIANGLE:34,VTK_CUBIC_LINE:35,VTK_CONVEX_POINT_SET:41,VTK_POLYHEDRON:42,VTK_PARAMETRIC_CURVE:51,VTK_PARAMETRIC_SURFACE:52,VTK_PARAMETRIC_TRI_SURFACE:53,VTK_PARAMETRIC_QUAD_SURFACE:54,VTK_PARAMETRIC_TETRA_REGION:55,VTK_PARAMETRIC_HEX_REGION:56,VTK_HIGHER_ORDER_EDGE:60,VTK_HIGHER_ORDER_TRIANGLE:61,VTK_HIGHER_ORDER_QUAD:62,VTK_HIGHER_ORDER_POLYGON:63,VTK_HIGHER_ORDER_TETRAHEDRON:64,VTK_HIGHER_ORDER_WEDGE:65,VTK_HIGHER_ORDER_PYRAMID:66,VTK_HIGHER_ORDER_HEXAHEDRON:67,VTK_LAGRANGE_CURVE:68,VTK_LAGRANGE_TRIANGLE:69,VTK_LAGRANGE_QUADRILATERAL:70,VTK_LAGRANGE_TETRAHEDRON:71,VTK_LAGRANGE_HEXAHEDRON:72,VTK_LAGRANGE_WEDGE:73,VTK_LAGRANGE_PYRAMID:74,VTK_NUMBER_OF_CELL_TYPES:75},Ei=["vtkEmptyCell","vtkVertex","vtkPolyVertex","vtkLine","vtkPolyLine","vtkTriangle","vtkTriangleStrip","vtkPolygon","vtkPixel","vtkQuad","vtkTetra","vtkVoxel","vtkHexahedron","vtkWedge","vtkPyramid","vtkPentagonalPrism","vtkHexagonalPrism","UnknownClass","UnknownClass","UnknownClass","UnknownClass","vtkQuadraticEdge","vtkQuadraticTriangle","vtkQuadraticQuad","vtkQuadraticTetra","vtkQuadraticHexahedron","vtkQuadraticWedge","vtkQuadraticPyramid","vtkBiQuadraticQuad","vtkTriQuadraticHexahedron","vtkQuadraticLinearQuad","vtkQuadraticLinearWedge","vtkBiQuadraticQuadraticWedge","vtkBiQuadraticQuadraticHexahedron","vtkBiQuadraticTriangle","vtkCubicLine","vtkQuadraticPolygon","UnknownClass","UnknownClass","UnknownClass","UnknownClass","vtkConvexPointSet","UnknownClass","UnknownClass","UnknownClass","UnknownClass","UnknownClass","UnknownClass","UnknownClass","UnknownClass","UnknownClass","vtkParametricCurve","vtkParametricSurface","vtkParametricTriSurface","vtkParametricQuadSurface","vtkParametricTetraRegion","vtkParametricHexRegion","UnknownClass","UnknownClass","UnknownClass","vtkHigherOrderEdge","vtkHigherOrderTriangle","vtkHigherOrderQuad","vtkHigherOrderPolygon","vtkHigherOrderTetrahedron","vtkHigherOrderWedge","vtkHigherOrderPyramid","vtkHigherOrderHexahedron"];function wT(t){return t<Ei.length?Ei[t]:"UnknownClass"}function _T(t){return Ei.findIndex(t)}function ET(t){return t<me.VTK_QUADRATIC_EDGE||t===me.VTK_CONVEX_POINT_SET||t===me.VTK_POLYHEDRON}function RT(t){return t===me.VTK_TRIANGLE_STRIP||t===me.VTK_POLY_LINE||t===me.VTK_POLY_VERTEX}const OT={getClassNameFromTypeId:wT,getTypeIdFromClassName:_T,isLinear:ET,hasSubCells:RT};function DT(t,e){e.classHierarchy.push("vtkCellTypes"),t.allocate=function(){let n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:512,r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1e3;e.size=n>0?n:1,e.extend=r>0?r:1,e.maxId=-1,e.typeArray=new Uint8Array(n),e.locationArray=new Uint32Array(n)},t.insertCell=(n,r,a)=>{e.typeArray[n]=r,e.locationArray[n]=a,n>e.maxId&&(e.maxId=n)},t.insertNextCell=(n,r)=>(t.insertCell(++e.maxId,n,r),e.maxId),t.setCellTypes=(n,r,a)=>{e.size=n,e.typeArray=r,e.locationArray=a,e.maxId=n-1},t.getCellLocation=n=>e.locationArray[n],t.deleteCell=n=>{e.typeArray[n]=me.VTK_EMPTY_CELL},t.getNumberOfTypes=()=>e.maxId+1,t.isType=n=>{const r=t.getNumberOfTypes();for(let a=0;a<r;++a)if(n===t.getCellType(a))return!0;return!1},t.insertNextType=n=>t.insertNextCell(n,-1),t.getCellType=n=>e.typeArray[n],t.reset=()=>{e.maxId=-1},t.deepCopy=n=>{t.allocate(n.getSize(),n.getExtend()),e.typeArray.set(n.getTypeArray()),e.locationArray.set(n.getLocationArray()),e.maxId=n.getMaxId()}}const mT={size:0,maxId:-1,extend:1e3};function Gl(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,mT,n),_.obj(t,e),_.get(t,e,["size","maxId","extend"]),_.getArray(t,e,["typeArray","locationArray"]),DT(t,e)}const MT=_.newInstance(Gl,"vtkCellTypes");var VT={newInstance:MT,extend:Gl,...OT};const LT={NO_INTERSECTION:0,YES_INTERSECTION:1,ON_LINE:2};var $l={IntersectionState:LT};const{IntersectionState:za}=$l;function pr(t,e,n){let r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:null;const a={t:Number.MIN_VALUE,distance:0},s=[];let i;s[0]=n[0]-e[0],s[1]=n[1]-e[1],s[2]=n[2]-e[2];const o=s[0]*(t[0]-e[0])+s[1]*(t[1]-e[1])+s[2]*(t[2]-e[2]),u=ge(s,s);let c=1e-5*o;return u!==0&&(a.t=o/u),c<0&&(c=-c),-c<u&&u<c||u<=0||a.t<0?i=e:a.t>1?i=n:(i=s,s[0]=e[0]+a.t*s[0],s[1]=e[1]+a.t*s[1],s[2]=e[2]+a.t*s[2]),r&&(r[0]=i[0],r[1]=i[1],r[2]=i[2]),a.distance=Yt(i,t),a}function Wl(t,e,n,r,a,s){const i=[],o=[],u=[];a[0]=0,s[0]=0,un(e,t,i),un(r,n,o),un(n,t,u);const c=[ge(i,i),-ge(i,o),-ge(i,o),ge(o,o)],f=[];if(f[0]=ge(i,u),f[1]=-ge(o,u),fv(c,f,2)===0){let l=Number.MAX_VALUE;const g=[t,e,n,r],p=[n,n,t,t],y=[r,r,e,e];s[0],s[0],a[0],a[0],a[0],a[0],s[0],s[0];let h;for(let d=0;d<4;d++)h=pr(g[d],p[d],y[d]),h.distance<l&&(l=h.distance);return za.ON_LINE}return a[0]=f[0],s[0]=f[1],a[0]>=0&&a[0]<=1&&s[0]>=0&&s[0]<=1?za.YES_INTERSECTION:za.NO_INTERSECTION}const BT={distanceToLine:pr,intersection:Wl};function kT(t,e){e.classHierarchy.push("vtkLine");function n(r){return r>=0&&r<=1}t.getCellDimension=()=>1,t.intersectWithLine=(r,a,s,i,o)=>{const u={intersect:0,t:Number.MAX_VALUE,subId:0,betweenPoints:null};o[1]=0,o[2]=0;const c=[],f=[],l=[];e.points.getPoint(0,f),e.points.getPoint(1,l);const g=[],p=[],y=Wl(r,a,f,l,g,p);if(u.t=g[0],u.betweenPoints=n(u.t),o[0]=p[0],y===za.YES_INTERSECTION){for(let h=0;h<3;h++)i[h]=f[h]+o[0]*(l[h]-f[h]),c[h]=r[h]+u.t*(a[h]-r[h]);if(Yt(i,c)<=s*s)return u.intersect=1,u}else{let h;if(u.t<0)return h=pr(r,f,l,i),h.distance<=s*s&&(u.t=0,u.intersect=1,u.betweenPoints=!0),u;if(u.t>1)return h=pr(a,f,l,i),h.distance<=s*s&&(u.t=1,u.intersect=1,u.betweenPoints=!0),u;if(o[0]<0)return o[0]=0,h=pr(f,r,a,i),u.t=h.t,h.distance<=s*s&&(u.intersect=1),u;if(o[0]>1)return o[0]=1,h=pr(l,r,a,i),u.t=h.t,h.distance<=s*s&&(u.intersect=1),u}return u},t.evaluateLocation=(r,a,s)=>{const i=[],o=[];e.points.getPoint(0,i),e.points.getPoint(1,o);for(let u=0;u<3;u++)a[u]=i[u]+r[0]*(o[u]-i[u]);s[0]=1-r[0],s[1]=r[0]},t.evaluateOrientation=(r,a,s)=>e.orientations?(Na(a,e.orientations[0],e.orientations[1],r[0]),s[0]=1-r[0],s[1]=r[0],!0):!1}const FT={orientations:null};function zl(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,FT,n),os.extend(t,e,n),_.setGet(t,e,["orientations"]),kT(t,e)}const UT=_.newInstance(zl,"vtkLine");var Rt={newInstance:UT,extend:zl,...BT,...$l};function bT(t,e){e.classHierarchy.push("vtkPointSet"),e.points?e.points=$t(e.points):e.points=is.newInstance(),t.getNumberOfPoints=()=>e.points.getNumberOfPoints(),t.getBounds=()=>e.points.getBounds(),t.computeBounds=()=>{t.getBounds()};const n=t.shallowCopy;t.shallowCopy=function(r){let a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;n(r,a),e.points=is.newInstance(),e.points.shallowCopy(r.getPoints())}}const NT={};function Al(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,NT,n),Zn.extend(t,e,n),_.setGet(t,e,["points"]),bT(t,e)}const GT=_.newInstance(Al,"vtkPointSet");var $T={newInstance:GT,extend:Al};function To(t,e,n,r){const a=n[0]-e[0],s=n[1]-e[1],i=n[2]-e[2],o=t[0]-e[0],u=t[1]-e[1],c=t[2]-e[2];r[0]=s*c-i*u,r[1]=i*o-a*c,r[2]=a*u-s*o}function cs(t,e,n,r){To(t,e,n,r);const a=Math.sqrt(r[0]*r[0]+r[1]*r[1]+r[2]*r[2]);a!==0&&(r[0]/=a,r[1]/=a,r[2]/=a)}function WT(t,e,n,r,a,s){let i=arguments.length>6&&arguments[6]!==void 0?arguments[6]:1e-6,o=!1;const u=[],c=[],f=[],l=[],g=[];cs(t,e,n,l),cs(r,a,s,g);const p=-ge(l,t),y=-ge(g,r),h=[ge(g,t)+y,ge(g,e)+y,ge(g,n)+y];if(h[0]*h[1]>i&&h[0]*h[2]>i)return{intersect:!1,coplanar:o,pt1:u,pt2:c,surfaceId:f};const d=[ge(l,r)+p,ge(l,a)+p,ge(l,s)+p];if(d[0]*d[1]>i&&d[0]*d[2]>i)return{intersect:!1,coplanar:o,pt1:u,pt2:c,surfaceId:f};if(Math.abs(l[0]-g[0])<1e-9&&Math.abs(l[1]-g[1])<1e-9&&Math.abs(l[2]-g[2])<1e-9&&Math.abs(p-y)<1e-9)return o=!0,{intersect:!1,coplanar:o,pt1:u,pt2:c,surfaceId:f};const x=[t,e,n],S=[r,a,s],v=ge(l,g),T=(p-y*v)/(v*v-1),w=(y-p*v)/(v*v-1),C=[T*l[0]+w*g[0],T*l[1]+w*g[1],T*l[2]+w*g[2]],R=Zr(l,g,[]);Jr(R);let m=0,B=0;const M=[],D=[];let L=50,b=50;for(let Y=0;Y<3;Y++){const Z=Y,se=(Y+1)%3,W=Cr.intersectWithLine(x[Z],x[se],r,g);W.intersection&&W.t>0-i&&W.t<1+i&&(W.t<1+i&&W.t>1-i&&(L=m),M[m++]=ge(W.x,R)-ge(C,R));const F=Cr.intersectWithLine(S[Z],S[se],t,l);F.intersection&&F.t>0-i&&F.t<1+i&&(F.t<1+i&&F.t>1-i&&(b=B),D[B++]=ge(F.x,R)-ge(C,R))}if(m>2){m--;const Y=M[2];M[2]=M[L],M[L]=Y}if(B>2){B--;const Y=D[2];D[2]=D[b],D[b]=Y}if(m!==2||B!==2)return{intersect:!1,coplanar:o,pt1:u,pt2:c,surfaceId:f};if(Number.isNaN(M[0])||Number.isNaN(M[1])||Number.isNaN(D[0])||Number.isNaN(D[1]))return{intersect:!1,coplanar:o,pt1:u,pt2:c,surfaceId:f};if(M[0]>M[1]){const Y=M[1];M[1]=M[0],M[0]=Y}if(D[0]>D[1]){const Y=D[1];D[1]=D[0],D[0]=Y}let $,Q;return M[1]<D[0]||D[1]<M[0]?{intersect:!1,coplanar:o,pt1:u,pt2:c,surfaceId:f}:(M[0]<D[0]?M[1]<D[1]?(f[0]=2,f[1]=1,$=D[0],Q=M[1]):(f[0]=2,f[1]=2,$=D[0],Q=D[1]):M[1]<D[1]?(f[0]=1,f[1]=1,$=M[0],Q=M[1]):(f[0]=1,f[1]=2,$=M[0],Q=D[1]),dc(C,R,$,u),dc(C,R,Q,c),{intersect:!0,coplanar:o,pt1:u,pt2:c,surfaceId:f})}const zT={computeNormalDirection:To,computeNormal:cs,intersectWithTriangle:WT};function AT(t,e){e.classHierarchy.push("vtkTriangle"),t.getCellDimension=()=>2,t.intersectWithLine=(n,r,a,s,i)=>{const o={subId:0,t:Number.MAX_VALUE,intersect:0,betweenPoints:!1};i[2]=0;const u=[],c=a*a,f=[],l=[],g=[];e.points.getPoint(0,f),e.points.getPoint(1,l),e.points.getPoint(2,g);const p=[],y=[];if(cs(f,l,g,p),p[0]!==0||p[1]!==0||p[2]!==0){const v=Cr.intersectWithLine(n,r,f,p);if(o.betweenPoints=v.betweenPoints,o.t=v.t,s[0]=v.x[0],s[1]=v.x[1],s[2]=v.x[2],!v.intersection)return i[0]=0,i[1]=0,o.intersect=0,o;const T=t.evaluatePosition(s,u,i,y);if(T.evaluation>=0)return T.dist2<=c?(o.intersect=1,o):(o.intersect=T.evaluation,o)}const h=Yt(f,l),d=Yt(l,g),x=Yt(g,f);e.line||(e.line=Rt.newInstance()),h>d&&h>x?(e.line.getPoints().setPoint(0,f),e.line.getPoints().setPoint(1,l)):d>x&&d>h?(e.line.getPoints().setPoint(0,l),e.line.getPoints().setPoint(1,g)):(e.line.getPoints().setPoint(0,g),e.line.getPoints().setPoint(1,f));const S=e.line.intersectWithLine(n,r,a,s,i);if(o.betweenPoints=S.betweenPoints,o.t=S.t,S.intersect){const v=[],T=[],w=[];for(let C=0;C<3;C++)v[C]=f[C]-g[C],T[C]=l[C]-g[C],w[C]=s[C]-g[C];return i[0]=ge(w,v)/x,i[1]=ge(w,T)/d,o.intersect=1,o}return i[0]=0,i[1]=0,o.intersect=0,o},t.evaluatePosition=(n,r,a,s)=>{const i={subId:0,dist2:0,evaluation:-1};let o,u;const c=[],f=[],l=[],g=[];let p;const y=[],h=[],d=[];let x=0,S=0;const v=[];let T,w,C,R=[];const m=[],B=[],M=[];i.subId=0,a[2]=0,e.points.getPoint(1,c),e.points.getPoint(2,f),e.points.getPoint(0,l),To(c,f,l,g),Cr.generalizedProjectPoint(n,c,g,M);let D=0;for(o=0;o<3;o++)g[o]<0?p=-g[o]:p=g[o],p>D&&(D=p,S=o);for(u=0,o=0;o<3;o++)o!==S&&(v[u++]=o);for(o=0;o<2;o++)y[o]=M[v[o]]-l[v[o]],h[o]=c[v[o]]-l[v[o]],d[o]=f[v[o]]-l[v[o]];if(x=Wa(h,d),x===0)return a[0]=0,a[1]=0,i.evaluation=-1,i;if(a[0]=Wa(y,d)/x,a[1]=Wa(h,y)/x,s[0]=1-(a[0]+a[1]),s[1]=a[0],s[2]=a[1],s[0]>=0&&s[0]<=1&&s[1]>=0&&s[1]<=1&&s[2]>=0&&s[2]<=1)r&&(i.dist2=Yt(M,n),r[0]=M[0],r[1]=M[1],r[2]=M[2]),i.evaluation=1;else{let L;if(r){if(s[1]<0&&s[2]<0)for(T=Yt(n,l),w=Rt.distanceToLine(n,c,l,L,m),C=Rt.distanceToLine(n,l,f,L,B),T<w?(i.dist2=T,R=l):(i.dist2=w,R=m),C<i.dist2&&(i.dist2=C,R=B),o=0;o<3;o++)r[o]=R[o];else if(s[2]<0&&s[0]<0)for(T=Yt(n,c),w=Rt.distanceToLine(n,c,l,L,m),C=Rt.distanceToLine(n,c,f,L,B),T<w?(i.dist2=T,R=c):(i.dist2=w,R=m),C<i.dist2&&(i.dist2=C,R=B),o=0;o<3;o++)r[o]=R[o];else if(s[1]<0&&s[0]<0)for(T=Yt(n,f),w=Rt.distanceToLine(n,f,l,L,m),C=Rt.distanceToLine(n,c,f,L,B),T<w?(i.dist2=T,R=f):(i.dist2=w,R=m),C<i.dist2&&(i.dist2=C,R=B),o=0;o<3;o++)r[o]=R[o];else if(s[0]<0){const b=Rt.distanceToLine(n,c,f,r);i.dist2=b.distance}else if(s[1]<0){const b=Rt.distanceToLine(n,f,l,r);i.dist2=b.distance}else if(s[2]<0){const b=Rt.distanceToLine(n,c,l,r);i.dist2=b.distance}}i.evaluation=0}return i},t.evaluateLocation=(n,r,a)=>{const s=[],i=[],o=[];e.points.getPoint(0,s),e.points.getPoint(1,i),e.points.getPoint(2,o);const u=1-n[0]-n[1];for(let c=0;c<3;c++)r[c]=s[c]*u+i[c]*n[0]+o[c]*n[1];a[0]=u,a[1]=n[0],a[2]=n[1]},t.getParametricDistance=n=>{let r,a=0;const s=[];s[0]=n[0],s[1]=n[1],s[2]=1-n[0]-n[1];for(let i=0;i<3;i++)s[i]<0?r=-s[i]:s[i]>1?r=s[i]-1:r=0,r>a&&(a=r);return a}}const HT={};function Hl(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,HT,n),os.extend(t,e,n),AT(t,e)}const jT=_.newInstance(Hl,"vtkTriangle");var KT={newInstance:jT,extend:Hl,...zT};const zs=["verts","lines","polys","strips"],{vtkWarningMacro:Lc}=_,PT={[me.VTK_LINE]:Rt,[me.VTK_POLY_LINE]:Rt,[me.VTK_TRIANGLE]:KT};function XT(t,e){e.classHierarchy.push("vtkPolyData");function n(a){return a.replace(/(?:^\w|[A-Z]|\b\w)/g,s=>s.toUpperCase()).replace(/\s+/g,"")}zs.forEach(a=>{t[`getNumberOf${n(a)}`]=()=>e[a].getNumberOfCells(),e[a]?e[a]=$t(e[a]):e[a]=Vc.newInstance()}),t.getNumberOfCells=()=>zs.reduce((a,s)=>a+e[s].getNumberOfCells(),0);const r=t.shallowCopy;t.shallowCopy=function(a){let s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;r(a,s),zs.forEach(i=>{e[i]=Vc.newInstance(),e[i].shallowCopy(a.getReferenceByName(i))})},t.buildCells=()=>{const a=t.getNumberOfVerts(),s=t.getNumberOfLines(),i=t.getNumberOfPolys(),o=t.getNumberOfStrips(),u=a+s+i+o,c=new Uint8Array(u);let f=c;const l=new Uint32Array(u);let g=l;if(a){let p=0;e.verts.getCellSizes().forEach((y,h)=>{g[h]=p,f[h]=y>1?me.VTK_POLY_VERTEX:me.VTK_VERTEX,p+=y+1}),g=g.subarray(a),f=f.subarray(a)}if(s){let p=0;e.lines.getCellSizes().forEach((y,h)=>{g[h]=p,f[h]=y>2?me.VTK_POLY_LINE:me.VTK_LINE,y===1&&Lc("Building VTK_LINE ",h," with only one point, but VTK_LINE needs at least two points. Check the input."),p+=y+1}),g=g.subarray(s),f=f.subarray(s)}if(i){let p=0;e.polys.getCellSizes().forEach((y,h)=>{switch(g[h]=p,y){case 3:f[h]=me.VTK_TRIANGLE;break;case 4:f[h]=me.VTK_QUAD;break;default:f[h]=me.VTK_POLYGON;break}y<3&&Lc("Building VTK_TRIANGLE ",h," with less than three points, but VTK_TRIANGLE needs at least three points. Check the input."),p+=y+1}),g+=g.subarray(i),f+=f.subarray(i)}if(o){let p=0;f.fill(me.VTK_TRIANGLE_STRIP,0,o),e.strips.getCellSizes().forEach((y,h)=>{g[h]=p,p+=y+1})}e.cells=VT.newInstance(),e.cells.setCellTypes(u,c,l)},t.buildLinks=function(){let a=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;e.cells===void 0&&t.buildCells(),e.links=CT.newInstance(),a>0?e.links.allocate(a):e.links.allocate(t.getPoints().getNumberOfPoints()),e.links.buildLinks(t)},t.getCellType=a=>e.cells.getCellType(a),t.getCellPoints=a=>{const s=t.getCellType(a);let i=null;switch(s){case me.VTK_VERTEX:case me.VTK_POLY_VERTEX:i=e.verts;break;case me.VTK_LINE:case me.VTK_POLY_LINE:i=e.lines;break;case me.VTK_TRIANGLE:case me.VTK_QUAD:case me.VTK_POLYGON:i=e.polys;break;case me.VTK_TRIANGLE_STRIP:i=e.strips;break;default:return i=null,{type:0,cellPointIds:null}}const o=e.cells.getCellLocation(a),u=i.getCell(o);return{cellType:s,cellPointIds:u}},t.getPointCells=a=>e.links.getCells(a),t.getCellEdgeNeighbors=(a,s,i)=>{const o=e.links.getLink(s),u=e.links.getLink(i);return o.cells.filter(c=>c!==a&&u.cells.indexOf(c)!==-1)},t.getCell=function(a){let s=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;const i=t.getCellPoints(a),o=s||PT[i.cellType].newInstance();return o.initialize(t.getPoints(),i.cellPointIds),o}}const IT={};function jl(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,IT,n),$T.extend(t,e,n),_.get(t,e,["cells","links"]),_.setGet(t,e,["verts","lines","polys","strips"]),XT(t,e)}const YT=_.newInstance(jl,"vtkPolyData");var zt={newInstance:YT,extend:jl};function qT(t,e){e.classHierarchy.push("vtkTexture"),t.imageLoaded=()=>{e.image.removeEventListener("load",t.imageLoaded),e.imageLoaded=!0,t.modified()},t.setJsImageData=n=>{e.jsImageData!==n&&(n!==null&&(t.setInputData(null),t.setInputConnection(null),e.image=null,e.canvas=null),e.jsImageData=n,e.imageLoaded=!0,t.modified())},t.setCanvas=n=>{e.canvas!==n&&(n!==null&&(t.setInputData(null),t.setInputConnection(null),e.image=null,e.jsImageData=null),e.canvas=n,t.modified())},t.setImage=n=>{e.image!==n&&(n!==null&&(t.setInputData(null),t.setInputConnection(null),e.canvas=null,e.jsImageData=null),e.image=n,e.imageLoaded=!1,n.complete?t.imageLoaded():n.addEventListener("load",t.imageLoaded),t.modified())},t.getDimensionality=()=>{let n=0,r=0,a=1;if(t.getInputData()){const i=t.getInputData();n=i.getDimensions()[0],r=i.getDimensions()[1],a=i.getDimensions()[2]}return e.jsImageData&&(n=e.jsImageData.width,r=e.jsImageData.height),e.canvas&&(n=e.canvas.width,r=e.canvas.height),e.image&&(n=e.image.width,r=e.image.height),(n>1)+(r>1)+(a>1)},t.getInputAsJsImageData=()=>{if(!e.imageLoaded||t.getInputData())return null;if(e.jsImageData)return e.jsImageData();if(e.canvas)return e.canvas.getContext("2d").getImageData(0,0,e.canvas.width,e.canvas.height);if(e.image){const n=document.createElement("canvas");n.width=e.image.width,n.height=e.image.height;const r=n.getContext("2d");return r.translate(0,n.height),r.scale(1,-1),r.drawImage(e.image,0,0,e.image.width,e.image.height),r.getImageData(0,0,n.width,n.height)}return null}}const QT=(t,e,n,r)=>{const a=[1,2,1],s=4,i=a,o=s,u=t.length/(e*n);let c=e,f=n,l=t;const g=[l];for(let p=0;p<r;p++){const y=[...l];c/=2,f/=2,l=new Uint8ClampedArray(c*f*u);const h=u*c;let d=0;for(let S=0;S<l.length;S+=u){S%h===0&&(d+=2*u*c);for(let v=0;v<u;v++){let T=y[d+v];T+=y[d+u+v],T+=y[d-2*h+v],T+=y[d-2*h+u+v],T/=4,l[S+v]=T}d+=2*u}let x=[...l];for(let S=0;S<l.length;S+=u)for(let v=0;v<u;v++){let T=-(i.length-1)/2,w=o,C=0;for(let R=0;R<i.length;R++){let m=S+v+T*u;const B=m%h-(S+v)%h;B>u&&(m+=h),B<-u&&(m-=h),x[m]?C+=x[m]*i[R]:w-=i[R],T+=1}l[S+v]=C/w}x=[...l];for(let S=0;S<l.length;S+=u)for(let v=0;v<u;v++){let T=-(i.length-1)/2,w=o,C=0;for(let R=0;R<i.length;R++){const m=S+v+T*h;x[m]?C+=x[m]*i[R]:w-=i[R],T+=1}l[S+v]=C/w}g.push(l)}return g},ZT={image:null,canvas:null,jsImageData:null,imageLoaded:!1,repeat:!1,interpolate:!1,edgeClamp:!1,mipLevel:0,resizable:!1};function Kl(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,ZT,n),_.obj(t,e),_.algo(t,e,6,0),_.get(t,e,["canvas","image","jsImageData","imageLoaded","resizable"]),_.setGet(t,e,["repeat","edgeClamp","interpolate","mipLevel"]),qT(t,e)}const JT=_.newInstance(Kl,"vtkTexture"),ex={generateMipmaps:QT};var Ss={newInstance:JT,extend:Kl,...ex};const tx=[[-1,0,0],[1,0,0],[0,-1,0],[0,1,0],[0,0,-1],[0,0,1]],Bc=[[8,7,11,3],[9,1,10,5],[4,9,0,8],[2,11,6,10],[0,3,2,1],[4,5,6,7]],xa=[[0,1],[1,3],[2,3],[0,2],[4,5],[5,7],[6,7],[4,6],[0,4],[1,5],[3,7],[2,6]],kc=[0,1,0,1,0,1,0,1,2,2,2,2],Le=[[1,2],[1,2],[0,2],[0,2],[0,1],[0,1]],ie=new Float64Array(3),Sa=new Float64Array(3),Te=new Float64Array(3),Hn=new Float64Array(3),Un=new Float64Array(3),Ca=new Float64Array(3),As=new Float64Array(16);function Hs(t,e){t.strokeStyle=e.strokeColor,t.lineWidth=e.strokeSize,t.fillStyle=e.fontColor,t.font=`${e.fontStyle} ${e.fontSize}px ${e.fontFamily}`}function nx(t,e){e.classHierarchy.push("vtkCubeAxesActorHelper"),t.setRenderable=n=>{e.renderable!==n&&(e.renderable=n,e.tmActor.addTexture(e.renderable.getTmTexture()),e.tmActor.setProperty(n.getProperty()),e.tmActor.setParentProp(n),t.modified())},t.createPolyDataForOneLabel=(n,r,a,s,i,o,u)=>{const c=e.renderable.get_tmAtlas().get(n);if(!c)return;const f=e.renderable.getTextPolyData().getPoints().getData(),l=e.lastSize;ie[0]=f[r*3],ie[1]=f[r*3+1],ie[2]=f[r*3+2],Se(Te,ie,a),Te[0]+=.1,Se(Sa,Te,s),En(Un,Sa,ie),Te[0]-=.1,Te[1]+=.1,Se(Sa,Te,s),En(Ca,Sa,ie);for(let y=0;y<3;y++)Un[y]/=.5*.1*l[0],Ca[y]/=.5*.1*l[1];let g=u.ptIdx,p=u.cellIdx;ie[0]=f[r*3],ie[1]=f[r*3+1],ie[2]=f[r*3+2],i[0]<-.5?xn(Te,Un,i[0]*o-c.width):i[0]>.5?xn(Te,Un,i[0]*o):xn(Te,Un,i[0]*o-c.width/2),Nr(ie,ie,Te),xn(Te,Ca,i[1]*o-c.height/2),Nr(ie,ie,Te),u.points[g*3]=ie[0],u.points[g*3+1]=ie[1],u.points[g*3+2]=ie[2],u.tcoords[g*2]=c.tcoords[0],u.tcoords[g*2+1]=c.tcoords[1],g++,xn(Te,Un,c.width),Nr(ie,ie,Te),u.points[g*3]=ie[0],u.points[g*3+1]=ie[1],u.points[g*3+2]=ie[2],u.tcoords[g*2]=c.tcoords[2],u.tcoords[g*2+1]=c.tcoords[3],g++,xn(Te,Ca,c.height),Nr(ie,ie,Te),u.points[g*3]=ie[0],u.points[g*3+1]=ie[1],u.points[g*3+2]=ie[2],u.tcoords[g*2]=c.tcoords[4],u.tcoords[g*2+1]=c.tcoords[5],g++,xn(Te,Un,c.width),En(ie,ie,Te),u.points[g*3]=ie[0],u.points[g*3+1]=ie[1],u.points[g*3+2]=ie[2],u.tcoords[g*2]=c.tcoords[6],u.tcoords[g*2+1]=c.tcoords[7],g++,u.polys[p*4]=3,u.polys[p*4+1]=g-4,u.polys[p*4+2]=g-3,u.polys[p*4+3]=g-2,p++,u.polys[p*4]=3,u.polys[p*4+1]=g-4,u.polys[p*4+2]=g-2,u.polys[p*4+3]=g-1,u.ptIdx+=4,u.cellIdx+=2},t.updateTexturePolyData=()=>{const n=e.camera.getCompositeProjectionMatrix(e.lastAspectRatio,-1,1);Ve(n,n);const r=e.renderable.getTextValues().length,a=r*4,s=r*2,i=new Float64Array(a*3),o=new Uint16Array(s*4),u=new Float32Array(a*2);dt(As,n);const c={ptIdx:0,cellIdx:0,polys:o,points:i,tcoords:u};let f=0,l=0,g=0;const p=e.renderable.getTextPolyData().getPoints().getData(),y=e.renderable.getTextValues();for(;f<p.length/3;){ie[0]=p[f*3],ie[1]=p[f*3+1],ie[2]=p[f*3+2],Se(Te,ie,n),ie[0]=p[f*3+3],ie[1]=p[f*3+4],ie[2]=p[f*3+5],Se(Hn,ie,n),En(Te,Te,Hn);const d=[Te[0],Te[1]];sv(d),t.createPolyDataForOneLabel(y[l],f,n,As,d,e.renderable.getAxisTitlePixelOffset(),c),f+=2,l++;for(let x=0;x<e.renderable.getTickCounts()[g];x++)t.createPolyDataForOneLabel(y[l],f,n,As,d,e.renderable.getTickLabelPixelOffset(),c),f++,l++;g++}const h=_e.newInstance({numberOfComponents:2,values:u,name:"TextureCoordinates"});e.tmPolyData.getPointData().setTCoords(h),e.tmPolyData.getPoints().setData(i,3),e.tmPolyData.getPoints().modified(),e.tmPolyData.getPolys().setData(o,1),e.tmPolyData.getPolys().modified(),e.tmPolyData.modified()},t.updateAPISpecificData=(n,r,a)=>{(e.lastSize[0]!==n[0]||e.lastSize[1]!==n[1])&&(e.lastSize[0]=n[0],e.lastSize[1]=n[1],e.lastAspectRatio=n[0]/n[1],e.forceUpdate=!0),e.camera=r,t.updateTexturePolyData()}}const rx=_.newInstance(function(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{renderable:null};Object.assign(e,{},n),_.obj(t,e),e.tmPolyData=zt.newInstance(),e.tmMapper=Wt.newInstance(),e.tmMapper.setInputData(e.tmPolyData),e.tmActor=Nt.newInstance({parentProp:t}),e.tmActor.setMapper(e.tmMapper),_.setGet(t,e,["renderable"]),_.get(t,e,["lastSize","lastAspectRatio","axisTextStyle","tickTextStyle","tmActor","ticks"]),e.forceUpdate=!1,e.lastRedrawTime={},_.obj(e.lastRedrawTime,{mtime:0}),e.lastRebuildTime={},_.obj(e.lastRebuildTime,{mtime:0}),e.lastSize=[-1,-1],e.lastTickBounds=[],nx(t,e)},"vtkCubeAxesActorHelper");function ax(t,e){e.classHierarchy.push("vtkCubeAxesActor"),t.setCamera=r=>{e.camera!==r&&(e.cameraModifiedSub&&(e.cameraModifiedSub.unsubscribe(),e.cameraModifiedSub=null),e.camera=r,r&&(e.cameraModifiedSub=r.onModified(t.update)),t.update(),t.modified())},t.computeFacesToDraw=()=>{const r=e.camera.getViewMatrix();Ve(r,r);let a=!1;const s=Me.getDiagonalLength(e.dataBounds),i=Math.sin(e.faceVisibilityAngle*Math.PI/180);for(let o=0;o<6;o++){let u=!1;const c=Math.floor(o/2),f=(c+1)%3,l=(c+2)%3;e.dataBounds[f*2]!==e.dataBounds[f*2+1]&&e.dataBounds[l*2]!==e.dataBounds[l*2+1]&&(ie[c]=e.dataBounds[o]-.1*s*tx[o][c],ie[f]=.5*(e.dataBounds[f*2]+e.dataBounds[f*2+1]),ie[l]=.5*(e.dataBounds[l*2]+e.dataBounds[l*2+1]),Se(Te,ie,r),ie[c]=e.dataBounds[o],Se(Hn,ie,r),En(Te,Hn,Te),qr(Te,Te),u=Te[2]>i,e.camera.getParallelProjection()||(qr(Hn,Hn),u=ju(Hn,Te)>i)),u!==e.lastFacesToDraw[o]&&(e.lastFacesToDraw[o]=u,a=!0)}return a},t.updatePolyData=(r,a,s)=>{let i=0,o=0;i+=8;let u=0;for(let p=0;p<12;p++)a[p]>0&&u++;if(o+=u,e.gridLines)for(let p=0;p<6;p++)r[p]&&(i+=s[Le[p][0]].length*2+s[Le[p][1]].length*2,o+=s[Le[p][0]].length+s[Le[p][1]].length);const c=new Float64Array(i*3),f=new Uint32Array(o*3);let l=0,g=0;for(let p=0;p<2;p++)for(let y=0;y<2;y++)for(let h=0;h<2;h++)c[l*3]=e.dataBounds[h],c[l*3+1]=e.dataBounds[2+y],c[l*3+2]=e.dataBounds[4+p],l++;for(let p=0;p<12;p++)a[p]>0&&(f[g*3]=2,f[g*3+1]=xa[p][0],f[g*3+2]=xa[p][1],g++);if(e.gridLines){for(let p=0;p<6;p++)if(r[p]){const y=Math.floor(p/2);let h=s[Le[p][0]];for(let d=0;d<h.length;d++)c[l*3+y]=e.dataBounds[p],c[l*3+Le[p][0]]=h[d],c[l*3+Le[p][1]]=e.dataBounds[Le[p][1]*2],l++,c[l*3+y]=e.dataBounds[p],c[l*3+Le[p][0]]=h[d],c[l*3+Le[p][1]]=e.dataBounds[Le[p][1]*2+1],l++,f[g*3]=2,f[g*3+1]=l-2,f[g*3+2]=l-1,g++;h=s[Le[p][1]];for(let d=0;d<h.length;d++)c[l*3+y]=e.dataBounds[p],c[l*3+Le[p][1]]=h[d],c[l*3+Le[p][0]]=e.dataBounds[Le[p][0]*2],l++,c[l*3+y]=e.dataBounds[p],c[l*3+Le[p][1]]=h[d],c[l*3+Le[p][0]]=e.dataBounds[Le[p][0]*2+1],l++,f[g*3]=2,f[g*3+1]=l-2,f[g*3+2]=l-1,g++}}e.polyData.getPoints().setData(c,3),e.polyData.getPoints().modified(),e.polyData.getLines().setData(f,1),e.polyData.getLines().modified(),e.polyData.modified()},t.updateTextData=(r,a,s,i)=>{let o=0;for(let p=0;p<12;p++)a[p]===1&&(o+=2,o+=s[kc[p]].length);const u=e.polyData.getPoints().getData(),c=new Float64Array(o*3);let f=0,l=0,g=0;for(let p=0;p<6;p++)if(r[p])for(let y=0;y<4;y++){const h=Bc[p][y];if(a[h]===1){const d=kc[h],x=xa[h][0]*3,S=xa[h][1]*3;c[f*3]=.5*(u[x]+u[S]),c[f*3+1]=.5*(u[x+1]+u[S+1]),c[f*3+2]=.5*(u[x+2]+u[S+2]),f++;const v=Math.floor(p/2);c[f*3+v]=e.dataBounds[p],c[f*3+Le[p][0]]=.5*(e.dataBounds[Le[p][0]*2]+e.dataBounds[Le[p][0]*2+1]),c[f*3+Le[p][1]]=.5*(e.dataBounds[Le[p][1]*2]+e.dataBounds[Le[p][1]*2+1]),f++,e.textValues[l]=e.axisLabels[d],l++;const T=(d+1)%3,w=(d+2)%3,C=s[d],R=i[d];e.tickCounts[g]=C.length;for(let m=0;m<C.length;m++)c[f*3+d]=C[m],c[f*3+T]=u[x+T],c[f*3+w]=u[x+w],f++,e.textValues[l]=R[m],l++;g++}}e.textPolyData.getPoints().setData(c,3),e.textPolyData.modified()},t.update=()=>{if(!e.camera)return;const r=t.computeFacesToDraw(),a=e.lastFacesToDraw;let s=!1;for(let i=0;i<6;i++)e.dataBounds[i]!==e.lastTickBounds[i]&&(s=!0,e.lastTickBounds[i]=e.dataBounds[i]);if(r||s||e.forceUpdate){const i=new Array(12).fill(0);for(let c=0;c<6;c++)if(a[c])for(let f=0;f<4;f++)i[Bc[c][f]]++;const o=[],u=[];for(let c=0;c<3;c++){const f=ps().domain([e.dataBounds[c*2],e.dataBounds[c*2+1]]);o[c]=f.ticks(5);const l=f.tickFormat(5);u[c]=o[c].map(l)}t.updatePolyData(a,i,o),t.updateTextData(a,i,o,u),(s||e.forceUpdate)&&t.updateTextureAtlas(u)}e.forceUpdate=!1},t.updateTextureAtlas=r=>{e.tmContext.textBaseline="bottom",e.tmContext.textAlign="left",e._tmAtlas.clear();let a=0,s=1;for(let i=0;i<3;i++){if(!e._tmAtlas.has(e.axisLabels[i])){Hs(e.tmContext,e.axisTextStyle);const o=e.tmContext.measureText(e.axisLabels[i]),u={height:o.actualBoundingBoxAscent+2,startingHeight:s,width:o.width+2,textStyle:e.axisTextStyle};e._tmAtlas.set(e.axisLabels[i],u),s+=u.height,a<u.width&&(a=u.width)}Hs(e.tmContext,e.tickTextStyle);for(let o=0;o<r[i].length;o++)if(!e._tmAtlas.has(r[i][o])){const u=e.tmContext.measureText(r[i][o]),c={height:u.actualBoundingBoxAscent+2,startingHeight:s,width:u.width+2,textStyle:e.tickTextStyle};e._tmAtlas.set(r[i][o],c),s+=c.height,a<c.width&&(a=c.width)}}a=Ut(a),s=Ut(s),e._tmAtlas.forEach(i=>{i.tcoords=[0,(s-i.startingHeight-i.height)/s,i.width/a,(s-i.startingHeight-i.height)/s,i.width/a,(s-i.startingHeight)/s,0,(s-i.startingHeight)/s]}),e.tmCanvas.width=a,e.tmCanvas.height=s,e.tmContext.textBaseline="bottom",e.tmContext.textAlign="left",e.tmContext.clearRect(0,0,a,s),e._tmAtlas.forEach((i,o)=>{Hs(e.tmContext,i.textStyle),e.tmContext.fillText(o,1,i.startingHeight+i.height-1)}),e.tmTexture.setCanvas(e.tmCanvas),e.tmTexture.modified()},t.onModified(()=>{e.forceUpdate=!0,t.update()}),t.setTickTextStyle=r=>{e.tickTextStyle={...e.tickTextStyle,...r},t.modified()},t.setAxisTextStyle=r=>{e.axisTextStyle={...e.axisTextStyle,...r},t.modified()},t.get_tmAtlas=()=>e._tmAtlas,t.getBounds=()=>(t.update(),Me.setBounds(e.bounds,e.gridActor.getBounds()),Me.scaleAboutCenter(e.bounds,e.boundsScaleFactor,e.boundsScaleFactor,e.boundsScaleFactor),e.bounds);const n=_.chain(t.setProperty,e.gridActor.setProperty);t.setProperty=r=>n(r)[0]}function sx(t){return{boundsScaleFactor:1.3,camera:null,dataBounds:[...Me.INIT_BOUNDS],faceVisibilityAngle:8,gridLines:!0,axisLabels:null,axisTitlePixelOffset:35,axisTextStyle:{fontColor:"white",fontStyle:"normal",fontSize:18,fontFamily:"serif"},tickLabelPixelOffset:12,tickTextStyle:{fontColor:"white",fontStyle:"normal",fontSize:14,fontFamily:"serif"},...t}}function Pl(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,sx(n)),Nt.extend(t,e,n),e.lastFacesToDraw=[!1,!1,!1,!1,!1,!1],e.axisLabels=["X-Axis","Y-Axis","Z-Axis"],e.tickCounts=[],e.textValues=[],e.lastTickBounds=[],e.tmCanvas=document.createElement("canvas"),e.tmContext=e.tmCanvas.getContext("2d"),e._tmAtlas=new Map,e.tmTexture=Ss.newInstance(),e.tmTexture.setInterpolate(!1),t.getProperty().setDiffuse(0),t.getProperty().setAmbient(1),e.gridMapper=Wt.newInstance(),e.polyData=zt.newInstance(),e.gridMapper.setInputData(e.polyData),e.gridActor=Nt.newInstance(),e.gridActor.setMapper(e.gridMapper),e.gridActor.setProperty(t.getProperty()),e.gridActor.setParentProp(t),e.textPolyData=zt.newInstance(),_.setGet(t,e,["axisTitlePixelOffset","boundsScaleFactor","faceVisibilityAngle","gridLines","tickLabelPixelOffset"]),_.setGetArray(t,e,["dataBounds"],6),_.setGetArray(t,e,["axisLabels"],3),_.get(t,e,["axisTextStyle","tickTextStyle","camera","tmTexture","textValues","textPolyData","tickCounts","gridActor"]),ax(t,e)}const ix=_.newInstance(Pl,"vtkCubeAxesActor");var Xl={newInstance:ix,extend:Pl,newCubeAxesActorHelper:rx};function ox(t,e){e.classHierarchy.push("vtkOpenGLCubeAxesActor"),t.buildPass=n=>{n&&(e._openGLRenderer=t.getFirstAncestorOfType("vtkOpenGLRenderer"),e._openGLRenderWindow=e._openGLRenderer.getParent(),e.CubeAxesActorHelper.getRenderable()||e.CubeAxesActorHelper.setRenderable(e.renderable),t.prepareNodes(),t.addMissingNode(e.CubeAxesActorHelper.getTmActor()),t.addMissingNode(e.renderable.getGridActor()),t.removeUnusedNodes())},t.opaquePass=(n,r)=>{if(n){const a=e._openGLRenderer?e._openGLRenderer.getRenderable().getActiveCamera():null,s=e._openGLRenderer.getTiledSizeAndOrigin();e.CubeAxesActorHelper.updateAPISpecificData([s.usize,s.vsize],a,e._openGLRenderWindow.getRenderable())}}}const cx={};function ux(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,cx,n),be.extend(t,e,n),e.CubeAxesActorHelper=Xl.newCubeAxesActorHelper(),ox(t,e)}const fx=De(ux,"vtkOpenGLCubeAxesActor");At("vtkCubeAxesActor",fx);const Kr={ARRAY_BUFFER:0,ELEMENT_ARRAY_BUFFER:1,TEXTURE_BUFFER:2};var Il={ObjectType:Kr};const{ObjectType:Aa}=Il,lx={};function gx(t,e){e.classHierarchy.push("vtkOpenGLBufferObject");function n(o){switch(o){case Aa.ELEMENT_ARRAY_BUFFER:return e.context.ELEMENT_ARRAY_BUFFER;case Aa.TEXTURE_BUFFER:if("TEXTURE_BUFFER"in e.context)return e.context.TEXTURE_BUFFER;case Aa.ARRAY_BUFFER:default:return e.context.ARRAY_BUFFER}}let r=null,a=null,s=!0,i="";t.getType=()=>r,t.setType=o=>{r=o},t.getHandle=()=>a,t.isReady=()=>s===!1,t.generateBuffer=o=>{const u=n(o);return a===null&&(a=e.context.createBuffer(),r=o),n(r)===u},t.upload=(o,u)=>t.generateBuffer(u)?(e.context.bindBuffer(n(r),a),e.context.bufferData(n(r),o,e.context.STATIC_DRAW),e.allocatedGPUMemoryInBytes=o.length*o.BYTES_PER_ELEMENT,s=!1,!0):(i="Trying to upload array buffer to incompatible buffer.",!1),t.bind=()=>a?(e.context.bindBuffer(n(r),a),!0):!1,t.release=()=>a?(e.context.bindBuffer(n(r),null),!0):!1,t.releaseGraphicsResources=()=>{a!==null&&(e.context.bindBuffer(n(r),null),e.context.deleteBuffer(a),a=null,e.allocatedGPUMemoryInBytes=0)},t.setOpenGLRenderWindow=o=>{e._openGLRenderWindow!==o&&(t.releaseGraphicsResources(),e._openGLRenderWindow=o,e.context=null,o&&(e.context=e._openGLRenderWindow.getContext()))},t.getError=()=>i}const px={objectType:Aa.ARRAY_BUFFER,context:null,allocatedGPUMemoryInBytes:0};function Yl(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,px,n),_.obj(t,e),_.get(t,e,["_openGLRenderWindow","allocatedGPUMemoryInBytes"]),_.moveToProtected(t,e,["openGLRenderWindow"]),gx(t,e)}const hx=_.newInstance(Yl);var ql={newInstance:hx,extend:Yl,...lx,...Il};const{vtkErrorMacro:Fc}=_;function dx(t,e){const n=new Float64Array(3);Qh(n,e);const r=new Float64Array(16);return Nu(r,qn(),t,n),r}function vx(t,e){return t===null||e===null?!1:!(Xo(t,[0,0,0])&&Xo(e,[1,1,1]))}function yx(t,e){e.classHierarchy.push("vtkOpenGLCellArrayBufferObject"),t.setType(Kr.ARRAY_BUFFER),t.createVBO=function(n,r,a,s){let i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:null;if(!n.getData()||!n.getData().length)return e.elementCount=0,0;e.blockSize=3,e.vertexOffset=0,e.normalOffset=0,e.tCoordOffset=0,e.tCoordComponents=0,e.colorComponents=0,e.colorOffset=0,e.customData=[];const o=s.points.getData();let u=null,c=null,f=null;const l=s.colors?s.colors.getNumberOfComponents():0,g=s.tcoords?s.tcoords.getNumberOfComponents():0;s.normals&&(e.normalOffset=4*e.blockSize,e.blockSize+=3,u=s.normals.getData()),s.customAttributes&&s.customAttributes.forEach(W=>{W&&(e.customData.push({data:W.getData(),offset:4*e.blockSize,components:W.getNumberOfComponents(),name:W.getName()}),e.blockSize+=W.getNumberOfComponents())}),s.tcoords&&(e.tCoordOffset=4*e.blockSize,e.tCoordComponents=g,e.blockSize+=g,c=s.tcoords.getData()),s.colors?(e.colorComponents=s.colors.getNumberOfComponents(),e.colorOffset=0,f=s.colors.getData(),e.colorBO||(e.colorBO=ql.newInstance()),e.colorBO.setOpenGLRenderWindow(e._openGLRenderWindow)):e.colorBO=null,e.stride=4*e.blockSize;let p=0,y=0,h=0,d=0,x=0,S=0,v;const T={anythingToPoints(W,F,j){for(let K=0;K<W;++K)v(F[j+K])},linesToWireframe(W,F,j){for(let K=0;K<W-1;++K)v(F[j+K]),v(F[j+K+1])},polysToWireframe(W,F,j){if(W>2)for(let K=0;K<W;++K)v(F[j+K]),v(F[j+(K+1)%W])},stripsToWireframe(W,F,j){if(W>2){for(let K=0;K<W-1;++K)v(F[j+K]),v(F[j+K+1]);for(let K=0;K<W-2;K++)v(F[j+K]),v(F[j+K+2])}},polysToSurface(W,F,j){for(let K=0;K<W-2;K++)v(F[j+0]),v(F[j+K+1]),v(F[j+K+2])},stripsToSurface(W,F,j){for(let K=0;K<W-2;K++)v(F[j+K]),v(F[j+K+1+K%2]),v(F[j+K+1+(K+1)%2])}},w={anythingToPoints(W,F){return W},linesToWireframe(W,F){return W>1?(W-1)*2:0},polysToWireframe(W,F){return W>2?W*2:0},stripsToWireframe(W,F){return W>2?W*4-6:0},polysToSurface(W,F){return W>2?(W-2)*3:0},stripsToSurface(W,F,j){return W>2?(W-2)*3:0}};let C=null,R=null;a===ut.POINTS||r==="verts"?(C=T.anythingToPoints,R=w.anythingToPoints):a===ut.WIREFRAME||r==="lines"?(C=T[`${r}ToWireframe`],R=w[`${r}ToWireframe`]):(C=T[`${r}ToSurface`],R=w[`${r}ToSurface`]);const m=n.getData(),B=m.length;let M=0;for(let W=0;W<B;)M+=R(m[W],m),W+=m[W]+1;let D=null;const L=new Float32Array(M*e.blockSize);f&&(D=new Uint8Array(M*4));let b=0,$=0,Q=0,Y=0;for(let W=0;W<3;++W){const F=s.points.getRange(W),j=F[1]-F[0];Q+=j*j;const K=.5*(F[1]+F[0]);Y+=K*K}if(Q>0&&(Math.abs(Y)/Q>1e6||Math.abs(Math.log10(Q))>3||Q===0&&Y>1e6)){const W=new Float64Array(3),F=new Float64Array(3);for(let j=0;j<3;++j){const K=s.points.getRange(j),P=K[1]-K[0];W[j]=.5*(K[1]+K[0]),F[j]=P>0?1/P:1}t.setCoordShiftAndScale(W,F)}else e.coordShiftAndScaleEnabled===!0&&t.setCoordShiftAndScale(null,null);if(i)if(!i.points&&!i.cells)i.points=new Int32Array(M),i.cells=new Int32Array(M);else{const W=new Int32Array(M+i.points.length);W.set(i.points),i.points=W;const F=new Int32Array(M+i.cells.length);F.set(i.cells),i.cells=F}let se=s.vertexOffset;v=function(F){if(i&&(i.points[se]=F,i.cells[se]=S+s.cellOffset),++se,p=F*3,e.coordShiftAndScaleEnabled?(L[b++]=(o[p++]-e.coordShift[0])*e.coordScale[0],L[b++]=(o[p++]-e.coordShift[1])*e.coordScale[1],L[b++]=(o[p++]-e.coordShift[2])*e.coordScale[2]):(L[b++]=o[p++],L[b++]=o[p++],L[b++]=o[p++]),u!==null&&(s.haveCellNormals?y=(S+s.cellOffset)*3:y=F*3,L[b++]=u[y++],L[b++]=u[y++],L[b++]=u[y++]),e.customData.forEach(j=>{x=F*j.components;for(let K=0;K<j.components;++K)L[b++]=j.data[x++]}),c!==null){h=F*g;for(let j=0;j<g;++j)L[b++]=c[h++]}f!==null&&(s.haveCellScalars?d=(S+s.cellOffset)*l:d=F*l,D[$++]=f[d++],D[$++]=f[d++],D[$++]=f[d++],D[$++]=l===4?f[d++]:255)};for(let W=0;W<B;)C(m[W],m,W+1),W+=m[W]+1,S++;return e.elementCount=M,t.upload(L,Kr.ARRAY_BUFFER),e.colorBO&&(e.colorBOStride=4,e.colorBO.upload(D,Kr.ARRAY_BUFFER)),S},t.setCoordShiftAndScale=(n,r)=>{if(n!==null&&(n.constructor!==Float64Array||n.length!==3)){Fc("Wrong type for coordShift, expected vec3 or null");return}if(r!==null&&(r.constructor!==Float64Array||r.length!==3)){Fc("Wrong type for coordScale, expected vec3 or null");return}(e.coordShift===null||n===null||!Io(n,e.coordShift))&&(e.coordShift=n),(e.coordScale===null||r===null||!Io(r,e.coordScale))&&(e.coordScale=r),e.coordShiftAndScaleEnabled=vx(e.coordShift,e.coordScale),e.coordShiftAndScaleEnabled?e.inverseShiftAndScaleMatrix=dx(e.coordShift,e.coordScale):e.inverseShiftAndScaleMatrix=null}}const Tx={elementCount:0,stride:0,colorBOStride:0,vertexOffset:0,normalOffset:0,tCoordOffset:0,tCoordComponents:0,colorOffset:0,colorComponents:0,tcoordBO:null,customData:[],coordShift:null,coordScale:null,coordShiftAndScaleEnabled:!1,inverseShiftAndScaleMatrix:null};function Ql(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Tx,n),ql.extend(t,e,n),_.setGet(t,e,["colorBO","elementCount","stride","colorBOStride","vertexOffset","normalOffset","tCoordOffset","tCoordComponents","colorOffset","colorComponents","customData"]),_.get(t,e,["coordShift","coordScale","coordShiftAndScaleEnabled","inverseShiftAndScaleMatrix"]),yx(t,e)}const xx=_.newInstance(Ql);var Sx={newInstance:xx,extend:Ql};const{vtkErrorMacro:Cx}=_;function wx(t,e){e.classHierarchy.push("vtkShader"),t.compile=()=>{let n=e.context.VERTEX_SHADER;if(!e.source||!e.source.length||e.shaderType==="Unknown")return!1;switch(e.handle!==0&&(e.context.deleteShader(e.handle),e.handle=0),e.shaderType){case"Fragment":n=e.context.FRAGMENT_SHADER;break;case"Vertex":default:n=e.context.VERTEX_SHADER;break}if(e.handle=e.context.createShader(n),e.context.shaderSource(e.handle,e.source),e.context.compileShader(e.handle),!e.context.getShaderParameter(e.handle,e.context.COMPILE_STATUS)){const a=e.context.getShaderInfoLog(e.handle);return Cx(`Error compiling shader '${e.source}': ${a}`),e.context.deleteShader(e.handle),e.handle=0,!1}return!0},t.cleanup=()=>{e.shaderType==="Unknown"||e.handle===0||(e.context.deleteShader(e.handle),e.handle=0,e.dirty=!0)}}const _x={shaderType:"Unknown",source:"",error:"",handle:0,dirty:!1,context:null};function Zl(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,_x,n),_.obj(t,e),_.setGet(t,e,["shaderType","source","error","handle","context"]),wx(t,e)}const Ex=_.newInstance(Zl,"vtkShader");var js={newInstance:Ex,extend:Zl};const{vtkErrorMacro:Kt}=_;function Rx(t,e,n,r){const a=typeof n=="string"?n:n.join(`
- `),s=r===!1?e:new RegExp(e,"g"),i=t.replace(s,a);return{replace:i!==a,result:i}}function Ox(t,e){e.classHierarchy.push("vtkShaderProgram"),t.compileShader=()=>e.vertexShader.compile()?e.fragmentShader.compile()?!t.attachShader(e.vertexShader)||!t.attachShader(e.fragmentShader)?(Kt(e.error),0):t.link()?(t.setCompiled(!0),1):(Kt(`Links failed: ${e.error}`),0):(Kt(e.fragmentShader.getSource().split(`
- `).map((n,r)=>`${r}: ${n}`).join(`
- `)),Kt(e.fragmentShader.getError()),0):(Kt(e.vertexShader.getSource().split(`
- `).map((n,r)=>`${r}: ${n}`).join(`
- `)),Kt(e.vertexShader.getError()),0),t.cleanup=()=>{e.shaderType==="Unknown"||e.handle===0||(t.release(),e.vertexShaderHandle!==0&&(e.context.detachShader(e.handle,e.vertexShaderHandle),e.vertexShaderHandle=0),e.fragmentShaderHandle!==0&&(e.context.detachShader(e.handle,e.fragmentShaderHandle),e.fragmentShaderHandle=0),e.context.deleteProgram(e.handle),e.handle=0,t.setCompiled(!1))},t.bind=()=>!e.linked&&!t.link()?!1:(e.context.useProgram(e.handle),t.setBound(!0),!0),t.isBound=()=>!!e.bound,t.release=()=>{e.context.useProgram(null),t.setBound(!1)},t.setContext=n=>{e.vertexShader.setContext(n),e.fragmentShader.setContext(n),e.geometryShader.setContext(n)},t.link=()=>{if(e.linked)return!0;if(e.handle===0)return e.error="Program has not been initialized, and/or does not have shaders.",!1;if(e.uniformLocs={},e.context.linkProgram(e.handle),!e.context.getProgramParameter(e.handle,e.context.LINK_STATUS)){const r=e.context.getProgramInfoLog(e.handle);return Kt(`Error linking shader ${r}`),e.handle=0,!1}return t.setLinked(!0),e.attributeLocs={},!0},t.setUniformMatrix=(n,r)=>{const a=t.findUniform(n);if(a===-1)return e.error=`Could not set uniform ${n} . No such uniform.`,!1;const s=new Float32Array(r);return e.context.uniformMatrix4fv(a,!1,s),!0},t.setUniformMatrix3x3=(n,r)=>{const a=t.findUniform(n);if(a===-1)return e.error=`Could not set uniform ${n} . No such uniform.`,!1;const s=new Float32Array(r);return e.context.uniformMatrix3fv(a,!1,s),!0},t.setUniformf=(n,r)=>{const a=t.findUniform(n);return a===-1?(e.error=`Could not set uniform ${n} . No such uniform.`,!1):(e.context.uniform1f(a,r),!0)},t.setUniformfv=(n,r)=>{const a=t.findUniform(n);return a===-1?(e.error=`Could not set uniform ${n} . No such uniform.`,!1):(e.context.uniform1fv(a,r),!0)},t.setUniformi=(n,r)=>{const a=t.findUniform(n);return a===-1?(e.error=`Could not set uniform ${n} . No such uniform.`,!1):(e.context.uniform1i(a,r),!0)},t.setUniformiv=(n,r)=>{const a=t.findUniform(n);return a===-1?(e.error=`Could not set uniform ${n} . No such uniform.`,!1):(e.context.uniform1iv(a,r),!0)},t.setUniform2f=(n,r,a)=>{const s=t.findUniform(n);if(s===-1)return e.error=`Could not set uniform ${n} . No such uniform.`,!1;if(a===void 0)throw new RangeError("Invalid number of values for array");return e.context.uniform2f(s,r,a),!0},t.setUniform2fv=(n,r)=>{const a=t.findUniform(n);return a===-1?(e.error=`Could not set uniform ${n} . No such uniform.`,!1):(e.context.uniform2fv(a,r),!0)},t.setUniform2i=(n,r,a)=>{const s=t.findUniform(n);if(s===-1)return e.error=`Could not set uniform ${n} . No such uniform.`,!1;if(a===void 0)throw new RangeError("Invalid number of values for array");return e.context.uniform2i(s,r,a),!0},t.setUniform2iv=(n,r)=>{const a=t.findUniform(n);return a===-1?(e.error=`Could not set uniform ${n} . No such uniform.`,!1):(e.context.uniform2iv(a,r),!0)},t.setUniform3f=(n,r,a,s)=>{const i=t.findUniform(n);if(i===-1)return e.error=`Could not set uniform ${n} . No such uniform.`,!1;if(s===void 0)throw new RangeError("Invalid number of values for array");return e.context.uniform3f(i,r,a,s),!0},t.setUniform3fArray=(n,r)=>{const a=t.findUniform(n);if(a===-1)return e.error=`Could not set uniform ${n} . No such uniform.`,!1;if(!Array.isArray(r)||r.length!==3)throw new RangeError("Invalid number of values for array");return e.context.uniform3f(a,r[0],r[1],r[2]),!0},t.setUniform3fv=(n,r)=>{const a=t.findUniform(n);return a===-1?(e.error=`Could not set uniform ${n} . No such uniform.`,!1):(e.context.uniform3fv(a,r),!0)},t.setUniform3i=function(n){const r=t.findUniform(n);if(r===-1)return e.error=`Could not set uniform ${n} . No such uniform.`,!1;for(var a=arguments.length,s=new Array(a>1?a-1:0),i=1;i<a;i++)s[i-1]=arguments[i];let o=s;if(o.length===1&&Array.isArray(o[0])&&(o=o[0]),o.length!==3)throw new RangeError("Invalid number of values for array");return e.context.uniform3i(r,o[0],o[1],o[2]),!0},t.setUniform3iv=(n,r)=>{const a=t.findUniform(n);return a===-1?(e.error=`Could not set uniform ${n} . No such uniform.`,!1):(e.context.uniform3iv(a,r),!0)},t.setUniform4f=function(n){const r=t.findUniform(n);if(r===-1)return e.error=`Could not set uniform ${n} . No such uniform.`,!1;for(var a=arguments.length,s=new Array(a>1?a-1:0),i=1;i<a;i++)s[i-1]=arguments[i];let o=s;if(o.length===1&&Array.isArray(o[0])&&(o=o[0]),o.length!==4)throw new RangeError("Invalid number of values for array");return e.context.uniform4f(r,o[0],o[1],o[2],o[3]),!0},t.setUniform4fv=(n,r)=>{const a=t.findUniform(n);return a===-1?(e.error=`Could not set uniform ${n} . No such uniform.`,!1):(e.context.uniform4fv(a,r),!0)},t.setUniform4i=function(n){const r=t.findUniform(n);if(r===-1)return e.error=`Could not set uniform ${n} . No such uniform.`,!1;for(var a=arguments.length,s=new Array(a>1?a-1:0),i=1;i<a;i++)s[i-1]=arguments[i];let o=s;if(o.length===1&&Array.isArray(o[0])&&(o=o[0]),o.length!==4)throw new RangeError("Invalid number of values for array");return e.context.uniform4i(r,o[0],o[1],o[2],o[3]),!0},t.setUniform4iv=(n,r)=>{const a=t.findUniform(n);return a===-1?(e.error=`Could not set uniform ${n} . No such uniform.`,!1):(e.context.uniform4iv(a,r),!0)},t.findUniform=n=>{if(!n||!e.linked)return-1;let r=e.uniformLocs[n];return r!==void 0?r:(r=e.context.getUniformLocation(e.handle,n),r===null?(e.error=`Uniform ${n} not found in current shader program.`,e.uniformLocs[n]=-1,-1):(e.uniformLocs[n]=r,r))},t.isUniformUsed=n=>{if(!n)return!1;let r=e.uniformLocs[n];return r!==void 0?r!==null:e.linked?(r=e.context.getUniformLocation(e.handle,n),e.uniformLocs[n]=r,r!==null):(Kt("attempt to find uniform when the shader program is not linked"),!1)},t.isAttributeUsed=n=>{if(!n)return!1;if(n in e.attributeLocs)return!0;if(!e.linked)return Kt("attempt to find uniform when the shader program is not linked"),!1;const r=e.context.getAttribLocation(e.handle,n);return r===-1?!1:(e.attributeLocs[n]=r,!0)},t.attachShader=n=>{if(n.getHandle()===0)return e.error="Shader object was not initialized, cannot attach it.",!1;if(n.getShaderType()==="Unknown")return e.error="Shader object is of type Unknown and cannot be used.",!1;if(e.handle===0){const r=e.context.createProgram();if(r===0)return e.error="Could not create shader program.",!1;e.handle=r,e.linked=!1}return n.getShaderType()==="Vertex"&&(e.vertexShaderHandle!==0&&e.context.detachShader(e.handle,e.vertexShaderHandle),e.vertexShaderHandle=n.getHandle()),n.getShaderType()==="Fragment"&&(e.fragmentShaderHandle!==0&&e.context.detachShader(e.handle,e.fragmentShaderHandle),e.fragmentShaderHandle=n.getHandle()),e.context.attachShader(e.handle,n.getHandle()),t.setLinked(!1),!0},t.detachShader=n=>{if(n.getHandle()===0)return e.error="shader object was not initialized, cannot attach it.",!1;if(n.getShaderType()==="Unknown")return e.error="Shader object is of type Unknown and cannot be used.",!1;switch(e.handle===0&&(e.error="This shader program has not been initialized yet."),n.getShaderType()){case"Vertex":return e.vertexShaderHandle!==n.getHandle()?(e.error="The supplied shader was not attached to this program.",!1):(e.context.detachShader(e.handle,n.getHandle()),e.vertexShaderHandle=0,e.linked=!1,!0);case"Fragment":return e.fragmentShaderHandle!==n.getHandle()?(e.error="The supplied shader was not attached to this program.",!1):(e.context.detachShader(e.handle,n.getHandle()),e.fragmentShaderHandle=0,e.linked=!1,!0);default:return!1}},t.setContext=n=>{e.context=n,e.vertexShader.setContext(n),e.fragmentShader.setContext(n),e.geometryShader.setContext(n)},t.setLastCameraMTime=n=>{e.lastCameraMTime=n}}const Dx={vertexShaderHandle:0,fragmentShaderHandle:0,geometryShaderHandle:0,vertexShader:null,fragmentShader:null,geometryShader:null,linked:!1,bound:!1,compiled:!1,error:"",handle:0,numberOfOutputs:0,attributesLocs:null,uniformLocs:null,md5Hash:0,context:null,lastCameraMTime:null};function Jl(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Dx,n),e.attributesLocs={},e.uniformLocs={},e.vertexShader=js.newInstance(),e.vertexShader.setShaderType("Vertex"),e.fragmentShader=js.newInstance(),e.fragmentShader.setShaderType("Fragment"),e.geometryShader=js.newInstance(),e.geometryShader.setShaderType("Geometry"),_.obj(t,e),_.get(t,e,["lastCameraMTime"]),_.setGet(t,e,["error","handle","compiled","bound","md5Hash","vertexShader","fragmentShader","geometryShader","linked"]),Ox(t,e)}const mx=_.newInstance(Jl,"vtkShaderProgram");var z={newInstance:mx,extend:Jl,substitute:Rx};function Mx(t,e){e.classHierarchy.push("vtkOpenGLVertexArrayObject"),t.exposedMethod=()=>{},t.initialize=()=>{e.instancingExtension=null,e._openGLRenderWindow.getWebgl2()||(e.instancingExtension=e.context.getExtension("ANGLE_instanced_arrays")),!e.forceEmulation&&e._openGLRenderWindow&&e._openGLRenderWindow.getWebgl2()?(e.extension=null,e.supported=!0,e.handleVAO=e.context.createVertexArray()):(e.extension=e.context.getExtension("OES_vertex_array_object"),!e.forceEmulation&&e.extension?(e.supported=!0,e.handleVAO=e.extension.createVertexArrayOES()):e.supported=!1)},t.isReady=()=>e.handleVAO!==0||e.supported===!1,t.bind=()=>{if(t.isReady()||t.initialize(),t.isReady()&&e.supported)e.extension?e.extension.bindVertexArrayOES(e.handleVAO):e.context.bindVertexArray(e.handleVAO);else if(t.isReady()){const n=e.context;for(let r=0;r<e.buffers.length;++r){const a=e.buffers[r];e.context.bindBuffer(n.ARRAY_BUFFER,a.buffer);for(let s=0;s<a.attributes.length;++s){const i=a.attributes[s],o=i.isMatrix?i.size:1;for(let u=0;u<o;++u)n.enableVertexAttribArray(i.index+u),n.vertexAttribPointer(i.index+u,i.size,i.type,i.normalize,i.stride,i.offset+i.stride*u/i.size),i.divisor>0&&(e.instancingExtension?e.instancingExtension.vertexAttribDivisorANGLE(i.index+u,1):n.vertexAttribDivisor(i.index+u,1))}}}},t.release=()=>{if(t.isReady()&&e.supported)e.extension?e.extension.bindVertexArrayOES(null):e.context.bindVertexArray(null);else if(t.isReady()){const n=e.context;for(let r=0;r<e.buffers.length;++r){const a=e.buffers[r];e.context.bindBuffer(n.ARRAY_BUFFER,a.buffer);for(let s=0;s<a.attributes.length;++s){const i=a.attributes[s],o=i.isMatrix?i.size:1;for(let u=0;u<o;++u)n.enableVertexAttribArray(i.index+u),n.vertexAttribPointer(i.index+u,i.size,i.type,i.normalize,i.stride,i.offset+i.stride*u/i.size),i.divisor>0&&(e.instancingExtension?e.instancingExtension.vertexAttribDivisorANGLE(i.index+u,0):n.vertexAttribDivisor(i.index+u,0)),n.disableVertexAttribArray(i.index+u)}}}},t.shaderProgramChanged=()=>{t.release(),e.handleVAO&&(e.extension?e.extension.deleteVertexArrayOES(e.handleVAO):e.context.deleteVertexArray(e.handleVAO)),e.handleVAO=0,e.handleProgram=0},t.releaseGraphicsResources=()=>{t.shaderProgramChanged(),e.handleVAO&&(e.extension?e.extension.deleteVertexArrayOES(e.handleVAO):e.context.deleteVertexArray(e.handleVAO)),e.handleVAO=0,e.supported=!0,e.handleProgram=0},t.addAttributeArray=(n,r,a,s,i,o,u,c)=>t.addAttributeArrayWithDivisor(n,r,a,s,i,o,u,c,0,!1),t.addAttributeArrayWithDivisor=(n,r,a,s,i,o,u,c,f,l)=>{if(!n||!n.isBound()||r.getHandle()===0||r.getType()!==Kr.ARRAY_BUFFER||(e.handleProgram===0&&(e.handleProgram=n.getHandle()),t.isReady()||t.initialize(),!t.isReady()||e.handleProgram!==n.getHandle()))return!1;const g=e.context,p={};if(p.name=a,p.index=g.getAttribLocation(e.handleProgram,a),p.offset=s,p.stride=i,p.type=o,p.size=u,p.normalize=c,p.isMatrix=l,p.divisor=f,p.Index===-1)return!1;if(r.bind(),g.enableVertexAttribArray(p.index),g.vertexAttribPointer(p.index,p.size,p.type,p.normalize,p.stride,p.offset),f>0&&(e.instancingExtension?e.instancingExtension.vertexAttribDivisorANGLE(p.index,1):g.vertexAttribDivisor(p.index,1)),p.buffer=r.getHandle(),!e.supported){let y=!1;for(let h=0;h<e.buffers.length;++h){const d=e.buffers[h];if(d.buffer===p.buffer){y=!0;let x=!1;for(let S=0;S<d.attributes.length;++S)d.attributes[S].name===a&&(x=!0,d.attributes[S]=p);x||d.attributes.push(p)}}y||e.buffers.push({buffer:p.buffer,attributes:[p]})}return!0},t.addAttributeMatrixWithDivisor=(n,r,a,s,i,o,u,c,f)=>{const l=t.addAttributeArrayWithDivisor(n,r,a,s,i,o,u,c,f,!0);if(!l)return l;const g=e.context,p=g.getAttribLocation(e.handleProgram,a);for(let y=1;y<u;y++)g.enableVertexAttribArray(p+y),g.vertexAttribPointer(p+y,u,o,c,i,s+i*y/u),f>0&&(e.instancingExtension?e.instancingExtension.vertexAttribDivisorANGLE(p+y,1):g.vertexAttribDivisor(p+y,1));return!0},t.removeAttributeArray=n=>{if(!t.isReady()||e.handleProgram===0)return!1;if(!e.supported)for(let r=0;r<e.buffers.length;++r){const a=e.buffers[r];for(let s=0;s<a.attributes.length;++s)if(a.attributes[s].name===n)return a.attributes.splice(s,1),a.attributes.length||e.buffers.splice(r,1),!0}return!0},t.setOpenGLRenderWindow=n=>{e._openGLRenderWindow!==n&&(t.releaseGraphicsResources(),e._openGLRenderWindow=n,e.context=null,n&&(e.context=e._openGLRenderWindow.getContext()))}}const Vx={forceEmulation:!1,handleVAO:0,handleProgram:0,supported:!0,buffers:null,context:null};function eg(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Vx,n),e.buffers=[],_.obj(t,e),_.get(t,e,["supported"]),_.setGet(t,e,["forceEmulation"]),Mx(t,e)}const Lx=_.newInstance(eg,"vtkOpenGLVertexArrayObject");var tg={newInstance:Lx,extend:eg};const Sn={Start:0,Points:0,Lines:1,Tris:2,TriStrips:3,TrisEdges:4,TriStripsEdges:5,End:6};function Bx(t,e){e.classHierarchy.push("vtkOpenGLHelper"),t.setOpenGLRenderWindow=n=>{e.context=n.getContext(),e.program.setContext(e.context),e.VAO.setOpenGLRenderWindow(n),e.CABO.setOpenGLRenderWindow(n)},t.releaseGraphicsResources=n=>{e.VAO.releaseGraphicsResources(),e.CABO.releaseGraphicsResources(),e.CABO.setElementCount(0)},t.drawArrays=(n,r,a,s)=>{if(e.CABO.getElementCount()){const i=t.getOpenGLMode(a),o=t.haveWideLines(n,r),u=e.context,c=u.getParameter(u.DEPTH_WRITEMASK);e.pointPicking&&u.depthMask(!1),i===u.LINES&&o?(t.updateShaders(n,r,s),u.drawArraysInstanced(i,0,e.CABO.getElementCount(),2*Math.ceil(r.getProperty().getLineWidth()))):(u.lineWidth(r.getProperty().getLineWidth()),t.updateShaders(n,r,s),u.drawArrays(i,0,e.CABO.getElementCount()),u.lineWidth(1));const l=(i===u.POINTS?1:0)||(i===u.LINES?2:3);return e.pointPicking&&u.depthMask(c),e.CABO.getElementCount()/l}return 0},t.getOpenGLMode=n=>{if(e.pointPicking)return e.context.POINTS;const r=e.primitiveType;return n===ut.POINTS||r===Sn.Points?e.context.POINTS:n===ut.WIREFRAME||r===Sn.Lines||r===Sn.TrisEdges||r===Sn.TriStripsEdges?e.context.LINES:e.context.TRIANGLES},t.haveWideLines=(n,r)=>r.getProperty().getLineWidth()>1?!(e.CABO.getOpenGLRenderWindow()&&e.CABO.getOpenGLRenderWindow().getHardwareMaximumLineWidth()>=r.getProperty().getLineWidth()):!1,t.getNeedToRebuildShaders=(n,r,a)=>!!(a.getNeedToRebuildShaders(t,n,r)||t.getProgram()===0||t.getShaderSourceTime().getMTime()<a.getMTime()||t.getShaderSourceTime().getMTime()<r.getMTime()),t.updateShaders=(n,r,a)=>{if(t.getNeedToRebuildShaders(n,r,a)){const s={Vertex:null,Fragment:null,Geometry:null};a.buildShaders(s,n,r);const i=e.CABO.getOpenGLRenderWindow().getShaderCache().readyShaderProgramArray(s.Vertex,s.Fragment,s.Geometry);i!==t.getProgram()&&(t.setProgram(i),t.getVAO().releaseGraphicsResources()),t.getShaderSourceTime().modified()}else e.CABO.getOpenGLRenderWindow().getShaderCache().readyShaderProgram(t.getProgram());t.getVAO().bind(),a.setMapperShaderParameters(t,n,r),a.setPropertyShaderParameters(t,n,r),a.setCameraShaderParameters(t,n,r),a.setLightingShaderParameters(t,n,r),a.invokeShaderCallbacks(t,n,r)},t.setMapperShaderParameters=(n,r,a)=>{if(t.haveWideLines(n,r)){t.getProgram().setUniform2f("viewportSize",a.usize,a.vsize);const s=parseFloat(r.getProperty().getLineWidth()),i=s/2;t.getProgram().setUniformf("lineWidthStepSize",s/Math.ceil(s)),t.getProgram().setUniformf("halfLineWidth",i)}e.primitiveType===Sn.Points||r.getProperty().getRepresentation()===ut.POINTS?t.getProgram().setUniformf("pointSize",r.getProperty().getPointSize()):e.pointPicking&&t.getProgram().setUniformf("pointSize",t.getPointPickingPrimitiveSize())},t.replaceShaderPositionVC=(n,r,a)=>{let s=n.Vertex;s=z.substitute(s,"//VTK::PositionVC::Dec",["//VTK::PositionVC::Dec","uniform float pointSize;"]).result,s=z.substitute(s,"//VTK::PositionVC::Impl",["//VTK::PositionVC::Impl"," gl_PointSize = pointSize;"],!1).result,t.getOpenGLMode(a.getProperty().getRepresentation())===e.context.LINES&&t.haveWideLines(r,a)&&(s=z.substitute(s,"//VTK::PositionVC::Dec",["//VTK::PositionVC::Dec","uniform vec2 viewportSize;","uniform float lineWidthStepSize;","uniform float halfLineWidth;"]).result,s=z.substitute(s,"//VTK::PositionVC::Impl",["//VTK::PositionVC::Impl"," if (halfLineWidth > 0.0)"," {"," float offset = float(gl_InstanceID / 2) * lineWidthStepSize - halfLineWidth;"," vec4 tmpPos = gl_Position;"," vec3 tmpPos2 = tmpPos.xyz / tmpPos.w;"," tmpPos2.x = tmpPos2.x + 2.0 * mod(float(gl_InstanceID), 2.0) * offset / viewportSize[0];"," tmpPos2.y = tmpPos2.y + 2.0 * mod(float(gl_InstanceID + 1), 2.0) * offset / viewportSize[1];"," gl_Position = vec4(tmpPos2.xyz * tmpPos.w, tmpPos.w);"," }"]).result),n.Vertex=s},t.getPointPickingPrimitiveSize=()=>e.primitiveType===Sn.Points?2:e.primitiveType===Sn.Lines?4:6,t.getAllocatedGPUMemoryInBytes=()=>t.getCABO().getAllocatedGPUMemoryInBytes()}const kx={context:null,program:null,shaderSourceTime:null,VAO:null,attributeUpdateTime:null,CABO:null,primitiveType:0,pointPicking:!1};function ng(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,kx,n),_.obj(t,e),e.shaderSourceTime={},_.obj(e.shaderSourceTime),e.attributeUpdateTime={},_.obj(e.attributeUpdateTime),_.setGet(t,e,["program","shaderSourceTime","VAO","attributeUpdateTime","CABO","primitiveType","pointPicking"]),e.program=z.newInstance(),e.VAO=tg.newInstance(),e.CABO=Sx.newInstance(),Bx(t,e)}const Fx=_.newInstance(ng);var Mr={newInstance:Fx,extend:ng,primTypes:Sn};const Ux={CLAMP_TO_EDGE:0,REPEAT:1,MIRRORED_REPEAT:2},Ri={NEAREST:0,LINEAR:1,NEAREST_MIPMAP_NEAREST:2,NEAREST_MIPMAP_LINEAR:3,LINEAR_MIPMAP_NEAREST:4,LINEAR_MIPMAP_LINEAR:5};var rg={Wrap:Ux,Filter:Ri};const ag=new Float32Array(1),bx=new Int32Array(ag.buffer);function Nx(t){ag[0]=t;const e=bx[0];let n=e>>16&32768,r=e>>12&2047;const a=e>>23&255;return a<103?n:a>142?(n|=31744,n|=(a===255?0:1)&&e&8388607,n):a<113?(r|=2048,n|=(r>>114-a)+(r>>113-a&1),n):(n|=a-112<<10|r>>1,n+=r&1,n)}function Gx(t){const e=(t&32768)>>15,n=(t&31744)>>10,r=t&1023;return n===0?(e?-1:1)*2**-14*(r/2**10):n===31?r?NaN:(e?-1:1)*(1/0):(e?-1:1)*2**(n-15)*(1+r/2**10)}var Gt={fromHalf:Gx,toHalf:Nx};const{Wrap:sn,Filter:Qe}=rg,{VtkDataTypes:pe}=_e,{vtkDebugMacro:Ks,vtkErrorMacro:nr,vtkWarningMacro:Uc}=Jt,{toHalf:$x}=Gt;function Wx(t,e){e.classHierarchy.push("vtkOpenGLTexture"),t.render=function(){let c=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null;if(c?e._openGLRenderWindow=c:(e._openGLRenderer=t.getFirstAncestorOfType("vtkOpenGLRenderer"),e._openGLRenderWindow=e._openGLRenderer.getParent()),e.context=e._openGLRenderWindow.getContext(),e.renderable.getInterpolate()?(e.generateMipmap?t.setMinificationFilter(Qe.LINEAR_MIPMAP_LINEAR):t.setMinificationFilter(Qe.LINEAR),t.setMagnificationFilter(Qe.LINEAR)):(t.setMinificationFilter(Qe.NEAREST),t.setMagnificationFilter(Qe.NEAREST)),e.renderable.getRepeat()&&(t.setWrapR(sn.REPEAT),t.setWrapS(sn.REPEAT),t.setWrapT(sn.REPEAT)),e.renderable.getInputData()&&e.renderable.setImage(null),!e.handle||e.renderable.getMTime()>e.textureBuildTime.getMTime()){if(e.renderable.getImage()!==null&&(e.renderable.getInterpolate()&&(e.generateMipmap=!0,t.setMinificationFilter(Qe.LINEAR_MIPMAP_LINEAR)),e.renderable.getImage()&&e.renderable.getImageLoaded()&&(t.create2DFromImage(e.renderable.getImage()),t.activate(),t.sendParameters(),e.textureBuildTime.modified())),e.renderable.getCanvas()!==null){e.renderable.getInterpolate()&&(e.generateMipmap=!0,t.setMinificationFilter(Qe.LINEAR_MIPMAP_LINEAR));const l=e.renderable.getCanvas();t.create2DFromRaw(l.width,l.height,4,pe.UNSIGNED_CHAR,l,!0),t.activate(),t.sendParameters(),e.textureBuildTime.modified()}if(e.renderable.getJsImageData()!==null){const l=e.renderable.getJsImageData();e.renderable.getInterpolate()&&(e.generateMipmap=!0,t.setMinificationFilter(Qe.LINEAR_MIPMAP_LINEAR)),t.create2DFromRaw(l.width,l.height,4,pe.UNSIGNED_CHAR,l.data,!0),t.activate(),t.sendParameters(),e.textureBuildTime.modified()}const f=e.renderable.getInputData(0);if(f&&f.getPointData().getScalars()){const l=f.getExtent(),g=f.getPointData().getScalars(),p=[];for(let y=0;y<e.renderable.getNumberOfInputPorts();++y){const h=e.renderable.getInputData(y),d=h?h.getPointData().getScalars().getData():null;d&&p.push(d)}e.renderable.getInterpolate()&&g.getNumberOfComponents()===4&&(e.generateMipmap=!0,t.setMinificationFilter(Qe.LINEAR_MIPMAP_LINEAR)),p.length%6===0?t.createCubeFromRaw(l[1]-l[0]+1,l[3]-l[2]+1,g.getNumberOfComponents(),g.getDataType(),p):t.create2DFromRaw(l[1]-l[0]+1,l[3]-l[2]+1,g.getNumberOfComponents(),g.getDataType(),g.getData()),t.activate(),t.sendParameters(),e.textureBuildTime.modified()}}e.handle&&t.activate()},t.destroyTexture=()=>{t.deactivate(),e.context&&e.handle&&e.context.deleteTexture(e.handle),e.handle=0,e.numberOfDimensions=0,e.target=0,e.components=0,e.width=0,e.height=0,e.depth=0,t.resetFormatAndType()},t.createTexture=()=>{e.handle||(e.handle=e.context.createTexture(),e.target&&(e.context.bindTexture(e.target,e.handle),e.context.texParameteri(e.target,e.context.TEXTURE_MIN_FILTER,t.getOpenGLFilterMode(e.minificationFilter)),e.context.texParameteri(e.target,e.context.TEXTURE_MAG_FILTER,t.getOpenGLFilterMode(e.magnificationFilter)),e.context.texParameteri(e.target,e.context.TEXTURE_WRAP_S,t.getOpenGLWrapMode(e.wrapS)),e.context.texParameteri(e.target,e.context.TEXTURE_WRAP_T,t.getOpenGLWrapMode(e.wrapT)),e._openGLRenderWindow.getWebgl2()&&e.context.texParameteri(e.target,e.context.TEXTURE_WRAP_R,t.getOpenGLWrapMode(e.wrapR)),e.context.bindTexture(e.target,null)))},t.getTextureUnit=()=>e._openGLRenderWindow?e._openGLRenderWindow.getTextureUnitForTexture(t):-1,t.activate=()=>{e._openGLRenderWindow.activateTexture(t),t.bind()},t.deactivate=()=>{e._openGLRenderWindow&&e._openGLRenderWindow.deactivateTexture(t)},t.releaseGraphicsResources=c=>{c&&e.handle&&(c.activateTexture(t),c.deactivateTexture(t),e.context.deleteTexture(e.handle),e.handle=0,e.numberOfDimensions=0,e.target=0,e.internalFormat=0,e.format=0,e.openGLDataType=0,e.components=0,e.width=0,e.height=0,e.depth=0,e.allocatedGPUMemoryInBytes=0),e.shaderProgram&&(e.shaderProgram.releaseGraphicsResources(c),e.shaderProgram=null)},t.bind=()=>{e.context.bindTexture(e.target,e.handle),e.autoParameters&&t.getMTime()>e.sendParametersTime.getMTime()&&t.sendParameters()},t.isBound=()=>{let c=!1;if(e.context&&e.handle){let f=0;switch(e.target){case e.context.TEXTURE_2D:f=e.context.TEXTURE_BINDING_2D;break;default:Uc("impossible case");break}c=e.context.getIntegerv(f)===e.handle}return c},t.sendParameters=()=>{e.context.texParameteri(e.target,e.context.TEXTURE_WRAP_S,t.getOpenGLWrapMode(e.wrapS)),e.context.texParameteri(e.target,e.context.TEXTURE_WRAP_T,t.getOpenGLWrapMode(e.wrapT)),e._openGLRenderWindow.getWebgl2()&&e.context.texParameteri(e.target,e.context.TEXTURE_WRAP_R,t.getOpenGLWrapMode(e.wrapR)),e.context.texParameteri(e.target,e.context.TEXTURE_MIN_FILTER,t.getOpenGLFilterMode(e.minificationFilter)),e.context.texParameteri(e.target,e.context.TEXTURE_MAG_FILTER,t.getOpenGLFilterMode(e.magnificationFilter)),e._openGLRenderWindow.getWebgl2()&&(e.context.texParameteri(e.target,e.context.TEXTURE_BASE_LEVEL,e.baseLevel),e.context.texParameteri(e.target,e.context.TEXTURE_MAX_LEVEL,e.maxLevel)),e.sendParametersTime.modified()},t.getInternalFormat=(c,f)=>(e._forceInternalFormat||(e.internalFormat=t.getDefaultInternalFormat(c,f)),e.internalFormat||Ks(`Unable to find suitable internal format for T=${c} NC= ${f}`),[e.context.R32F,e.context.RG32F,e.context.RGB32F,e.context.RGBA32F].includes(e.internalFormat)&&!e.context.getExtension("OES_texture_float_linear")&&Uc("Failed to load OES_texture_float_linear. Texture filtering is not available for *32F internal formats."),e.internalFormat),t.getDefaultInternalFormat=(c,f)=>{let l=0;return l=e._openGLRenderWindow.getDefaultTextureInternalFormat(c,f,e.oglNorm16Ext,e.useHalfFloat),l||(l||(Ks("Unsupported internal texture type!"),Ks(`Unable to find suitable internal format for T=${c} NC= ${f}`)),l)},t.setInternalFormat=c=>{e._forceInternalFormat=!0,c!==e.internalFormat&&(e.internalFormat=c,t.modified())},t.getFormat=(c,f)=>(e.format=t.getDefaultFormat(c,f),e.format),t.getDefaultFormat=(c,f)=>{if(e._openGLRenderWindow.getWebgl2())switch(f){case 1:return e.context.RED;case 2:return e.context.RG;case 3:return e.context.RGB;case 4:return e.context.RGBA;default:return e.context.RGB}else switch(f){case 1:return e.context.LUMINANCE;case 2:return e.context.LUMINANCE_ALPHA;case 3:return e.context.RGB;case 4:return e.context.RGBA;default:return e.context.RGB}},t.resetFormatAndType=()=>{e.format=0,e.internalFormat=0,e._forceInternalFormat=!1,e.openGLDataType=0},t.getDefaultDataType=c=>{if(e._openGLRenderWindow.getWebgl2())switch(c){case pe.UNSIGNED_CHAR:return e.context.UNSIGNED_BYTE;case(e.oglNorm16Ext&&!e.useHalfFloat&&pe.SHORT):return e.context.SHORT;case(e.oglNorm16Ext&&!e.useHalfFloat&&pe.UNSIGNED_SHORT):return e.context.UNSIGNED_SHORT;case(e.useHalfFloat&&pe.SHORT):return e.context.HALF_FLOAT;case(e.useHalfFloat&&pe.UNSIGNED_SHORT):return e.context.HALF_FLOAT;case pe.FLOAT:case pe.VOID:default:return e.context.FLOAT}switch(c){case pe.UNSIGNED_CHAR:return e.context.UNSIGNED_BYTE;case pe.FLOAT:case pe.VOID:default:if(e.context.getExtension("OES_texture_float")&&e.context.getExtension("OES_texture_float_linear"))return e.context.FLOAT;{const f=e.context.getExtension("OES_texture_half_float");if(f&&e.context.getExtension("OES_texture_half_float_linear"))return f.HALF_FLOAT_OES}return e.context.UNSIGNED_BYTE}},t.getOpenGLDataType=function(c){let f=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;return(!e.openGLDataType||f)&&(e.openGLDataType=t.getDefaultDataType(c)),e.openGLDataType},t.getShiftAndScale=()=>{let c=0,f=1;switch(e.openGLDataType){case e.context.BYTE:f=127.5,c=f-128;break;case e.context.UNSIGNED_BYTE:f=255,c=0;break;case e.context.SHORT:f=32767.5,c=f-32768;break;case e.context.UNSIGNED_SHORT:f=65536,c=0;break;case e.context.INT:f=21474836475e-1,c=f-2147483648;break;case e.context.UNSIGNED_INT:f=4294967295,c=0;break;case e.context.FLOAT:}return{shift:c,scale:f}},t.getOpenGLFilterMode=c=>{switch(c){case Qe.NEAREST:return e.context.NEAREST;case Qe.LINEAR:return e.context.LINEAR;case Qe.NEAREST_MIPMAP_NEAREST:return e.context.NEAREST_MIPMAP_NEAREST;case Qe.NEAREST_MIPMAP_LINEAR:return e.context.NEAREST_MIPMAP_LINEAR;case Qe.LINEAR_MIPMAP_NEAREST:return e.context.LINEAR_MIPMAP_NEAREST;case Qe.LINEAR_MIPMAP_LINEAR:return e.context.LINEAR_MIPMAP_LINEAR;default:return e.context.NEAREST}},t.getOpenGLWrapMode=c=>{switch(c){case sn.CLAMP_TO_EDGE:return e.context.CLAMP_TO_EDGE;case sn.REPEAT:return e.context.REPEAT;case sn.MIRRORED_REPEAT:return e.context.MIRRORED_REPEAT;default:return e.context.CLAMP_TO_EDGE}};function n(c,f){let l=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;const g=[];let p=e.width*e.height*e.components;if(l&&(p*=e.depth),c!==pe.FLOAT&&e.openGLDataType===e.context.FLOAT)for(let h=0;h<f.length;h++)if(f[h]){const d=f[h].length>p?f[h].subarray(0,p):f[h];g.push(new Float32Array(d))}else g.push(null);if(c!==pe.UNSIGNED_CHAR&&e.openGLDataType===e.context.UNSIGNED_BYTE)for(let h=0;h<f.length;h++)if(f[h]){const d=f[h].length>p?f[h].subarray(0,p):f[h];g.push(new Uint8Array(d))}else g.push(null);let y=!1;if(e._openGLRenderWindow.getWebgl2())y=e.openGLDataType===e.context.HALF_FLOAT;else{const h=e.context.getExtension("OES_texture_half_float");y=h&&e.openGLDataType===h.HALF_FLOAT_OES}if(y)for(let h=0;h<f.length;h++)if(f[h]){const d=new Uint16Array(p),x=f[h];for(let S=0;S<p;S++)d[S]=$x(x[S]);g.push(d)}else g.push(null);if(g.length===0)for(let h=0;h<f.length;h++)g.push(f[h]);return g}function r(c){if(e._openGLRenderWindow.getWebgl2())return c;const f=[],l=e.width,g=e.height,p=e.components;if(c&&(!ha(l)||!ha(g))){const y=e.context.getExtension("OES_texture_half_float"),h=Ut(l),d=Ut(g),x=h*d*e.components;for(let S=0;S<c.length;S++)if(c[S]!==null){let v=null;const T=g/d,w=l/h;let C=!1;e.openGLDataType===e.context.FLOAT?v=new Float32Array(x):y&&e.openGLDataType===y.HALF_FLOAT_OES?(v=new Uint16Array(x),C=!0):v=new Uint8Array(x);for(let R=0;R<d;R++){const m=R*h*p,B=R*T;let M=Math.floor(B),D=Math.ceil(B);D>=g&&(D=g-1);const L=B-M,b=1-L;M=M*l*p,D=D*l*p;for(let $=0;$<h;$++){const Q=$*p,Y=$*w;let Z=Math.floor(Y),se=Math.ceil(Y);se>=l&&(se=l-1);const W=Y-Z;Z*=p,se*=p;for(let F=0;F<p;F++)C?v[m+Q+F]=Gt.toHalf(Gt.fromHalf(c[S][M+Z+F])*b*(1-W)+Gt.fromHalf(c[S][M+se+F])*b*W+Gt.fromHalf(c[S][D+Z+F])*L*(1-W)+Gt.fromHalf(c[S][D+se+F])*L*W):v[m+Q+F]=c[S][M+Z+F]*b*(1-W)+c[S][M+se+F]*b*W+c[S][D+Z+F]*L*(1-W)+c[S][D+se+F]*L*W}}f.push(v),e.width=h,e.height=d}else f.push(null)}if(f.length===0)for(let y=0;y<c.length;y++)f.push(c[y]);return f}function a(c){var f;return e._openGLRenderWindow?e.resizable||(f=e.renderable)!=null&&f.getResizable()?!1:e._openGLRenderWindow.getWebgl2()?!(e._openGLRenderWindow.getGLInformations().RENDERER.value.match(/WebKit/gi)&&navigator.platform.match(/Mac/gi)&&e.oglNorm16Ext&&(c===pe.UNSIGNED_SHORT||c===pe.SHORT)):!1:!1}t.create2DFromRaw=function(c,f,l,g,p){let y=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!1;if(t.getOpenGLDataType(g,!0),t.getInternalFormat(g,l),t.getFormat(g,l),!e.internalFormat||!e.format||!e.openGLDataType)return nr("Failed to determine texture parameters."),!1;e.target=e.context.TEXTURE_2D,e.components=l,e.width=c,e.height=f,e.depth=1,e.numberOfDimensions=2,e._openGLRenderWindow.activateTexture(t),t.createTexture(),t.bind();const d=n(g,[p]),x=r(d);return e.context.pixelStorei(e.context.UNPACK_FLIP_Y_WEBGL,y),e.context.pixelStorei(e.context.UNPACK_ALIGNMENT,1),a(g)?(e.context.texStorage2D(e.target,1,e.internalFormat,e.width,e.height),x[0]!=null&&e.context.texSubImage2D(e.target,0,0,0,e.width,e.height,e.format,e.openGLDataType,x[0])):e.context.texImage2D(e.target,0,e.internalFormat,e.width,e.height,0,e.format,e.openGLDataType,x[0]),e.generateMipmap&&e.context.generateMipmap(e.target),y&&e.context.pixelStorei(e.context.UNPACK_FLIP_Y_WEBGL,!1),e.allocatedGPUMemoryInBytes=e.width*e.height*e.depth*l*e._openGLRenderWindow.getDefaultTextureByteSize(g,e.oglNorm16Ext,e.useHalfFloat),t.deactivate(),!0},t.createCubeFromRaw=(c,f,l,g,p)=>{if(t.getOpenGLDataType(g),t.getInternalFormat(g,l),t.getFormat(g,l),!e.internalFormat||!e.format||!e.openGLDataType)return nr("Failed to determine texture parameters."),!1;e.target=e.context.TEXTURE_CUBE_MAP,e.components=l,e.width=c,e.height=f,e.depth=1,e.numberOfDimensions=2,e._openGLRenderWindow.activateTexture(t),e.maxLevel=p.length/6-1,t.createTexture(),t.bind();const y=n(g,p),h=r(y),d=[];let x=e.width,S=e.height;for(let v=0;v<h.length;v++){v%6===0&&v!==0&&(x/=2,S/=2),d[v]=Rr(g,S*x*e.components);for(let T=0;T<S;++T){const w=T*x*e.components,C=(S-T-1)*x*e.components;d[v].set(h[v].slice(C,C+x*e.components),w)}}e.context.pixelStorei(e.context.UNPACK_ALIGNMENT,1),a(g)&&e.context.texStorage2D(e.target,6,e.internalFormat,e.width,e.height);for(let v=0;v<6;v++){let T=0,w=e.width,C=e.height;for(;w>=1&&C>=1;){let R=null;T<=e.maxLevel&&(R=d[6*T+v]),a(g)?R!=null&&e.context.texSubImage2D(e.context.TEXTURE_CUBE_MAP_POSITIVE_X+v,T,0,0,w,C,e.format,e.openGLDataType,R):e.context.texImage2D(e.context.TEXTURE_CUBE_MAP_POSITIVE_X+v,T,e.internalFormat,w,C,0,e.format,e.openGLDataType,R),T++,w/=2,C/=2}}return e.allocatedGPUMemoryInBytes=e.width*e.height*e.depth*l*e._openGLRenderWindow.getDefaultTextureByteSize(g,e.oglNorm16Ext,e.useHalfFloat),t.deactivate(),!0},t.createDepthFromRaw=(c,f,l,g)=>(t.getOpenGLDataType(l),e.format=e.context.DEPTH_COMPONENT,e._openGLRenderWindow.getWebgl2()?l===pe.FLOAT?e.internalFormat=e.context.DEPTH_COMPONENT32F:e.internalFormat=e.context.DEPTH_COMPONENT16:e.internalFormat=e.context.DEPTH_COMPONENT,!e.internalFormat||!e.format||!e.openGLDataType?(nr("Failed to determine texture parameters."),!1):(e.target=e.context.TEXTURE_2D,e.components=1,e.width=c,e.height=f,e.depth=1,e.numberOfDimensions=2,e._openGLRenderWindow.activateTexture(t),t.createTexture(),t.bind(),e.context.pixelStorei(e.context.UNPACK_ALIGNMENT,1),a(l)?(e.context.texStorage2D(e.target,1,e.internalFormat,e.width,e.height),g!=null&&e.context.texSubImage2D(e.target,0,0,0,e.width,e.height,e.format,e.openGLDataType,g)):e.context.texImage2D(e.target,0,e.internalFormat,e.width,e.height,0,e.format,e.openGLDataType,g),e.generateMipmap&&e.context.generateMipmap(e.target),e.allocatedGPUMemoryInBytes=e.width*e.height*e.depth*e.components*e._openGLRenderWindow.getDefaultTextureByteSize(l,e.oglNorm16Ext,e.useHalfFloat),t.deactivate(),!0)),t.create2DFromImage=c=>{if(t.getOpenGLDataType(pe.UNSIGNED_CHAR),t.getInternalFormat(pe.UNSIGNED_CHAR,4),t.getFormat(pe.UNSIGNED_CHAR,4),!e.internalFormat||!e.format||!e.openGLDataType)return nr("Failed to determine texture parameters."),!1;e.target=e.context.TEXTURE_2D,e.components=4,e.depth=1,e.numberOfDimensions=2,e._openGLRenderWindow.activateTexture(t),t.createTexture(),t.bind(),e.context.pixelStorei(e.context.UNPACK_ALIGNMENT,1);const f=!e._openGLRenderWindow.getWebgl2()&&(!ha(c.width)||!ha(c.height)),l=document.createElement("canvas");l.width=f?Ut(c.width):c.width,l.height=f?Ut(c.height):c.height,e.width=l.width,e.height=l.height;const g=l.getContext("2d");g.translate(0,l.height),g.scale(1,-1),g.drawImage(c,0,0,c.width,c.height,0,0,l.width,l.height);const p=l;return a(pe.UNSIGNED_CHAR)?(e.context.texStorage2D(e.target,1,e.internalFormat,e.width,e.height),p!=null&&e.context.texSubImage2D(e.target,0,0,0,e.width,e.height,e.format,e.openGLDataType,p)):e.context.texImage2D(e.target,0,e.internalFormat,e.width,e.height,0,e.format,e.openGLDataType,p),e.generateMipmap&&e.context.generateMipmap(e.target),e.allocatedGPUMemoryInBytes=e.width*e.height*e.depth*e.components*e._openGLRenderWindow.getDefaultTextureByteSize(pe.UNSIGNED_CHAR,e.oglNorm16Ext,e.useHalfFloat),t.deactivate(),!0};function s(c,f,l){const g=new Array(l),p=new Array(l);for(let y=0;y<l;++y)g[y]=c[y],p[y]=f[y]-c[y]||1;return{scale:p,offset:g}}function i(c,f){for(let l=0;l<c.length;l++){const g=c[l],p=f[l]+g;if(g<-2048||g>2048||p<-2048||p>2048)return!1}return!0}function o(c,f,l,g){t.getOpenGLDataType(c);let p=!1;if(e._openGLRenderWindow.getWebgl2())p=e.openGLDataType===e.context.HALF_FLOAT;else{const h=e.context.getExtension("OES_texture_half_float");p=h&&e.openGLDataType===h.HALF_FLOAT_OES}const y=p&&(i(f,l)||g);e.useHalfFloat=y}function u(c,f){const l=c.getNumberOfComponents(),g=c.getDataType(),p=c.getData(),y=new Array(l),h=new Array(l);for(let x=0;x<l;++x){const[S,v]=c.getRange(x);y[x]=S,h[x]=v}const d=s(y,h,l);return o(g,d.offset,d.scale,f),e.useHalfFloat||t.getOpenGLDataType(g,!0),{numComps:l,dataType:g,data:p,scaleOffsets:d}}t.create2DFilterableFromRaw=function(c,f,l,g,p){let y=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!1;return t.create2DFilterableFromDataArray(c,f,_e.newInstance({numberOfComponents:l,dataType:g,values:p}),y)},t.create2DFilterableFromDataArray=function(c,f,l){let g=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;const{numComps:p,dataType:y,data:h}=u(l,g);t.create2DFromRaw(c,f,p,y,h)},t.create3DFromRaw=(c,f,l,g,p,y)=>{if(t.getOpenGLDataType(p),t.getInternalFormat(p,g),t.getFormat(p,g),!e.internalFormat||!e.format||!e.openGLDataType)return nr("Failed to determine texture parameters."),!1;e.target=e.context.TEXTURE_3D,e.components=g,e.width=c,e.height=f,e.depth=l,e.numberOfDimensions=3,e._openGLRenderWindow.activateTexture(t),t.createTexture(),t.bind();const x=n(p,[y],!0),S=r(x);return e.context.pixelStorei(e.context.UNPACK_ALIGNMENT,1),a(p)?(e.context.texStorage3D(e.target,1,e.internalFormat,e.width,e.height,e.depth),S[0]!=null&&e.context.texSubImage3D(e.target,0,0,0,0,e.width,e.height,e.depth,e.format,e.openGLDataType,S[0])):e.context.texImage3D(e.target,0,e.internalFormat,e.width,e.height,e.depth,0,e.format,e.openGLDataType,S[0]),e.generateMipmap&&e.context.generateMipmap(e.target),e.allocatedGPUMemoryInBytes=e.width*e.height*e.depth*e.components*e._openGLRenderWindow.getDefaultTextureByteSize(p,e.oglNorm16Ext,e.useHalfFloat),t.deactivate(),!0},t.create3DFilterableFromRaw=function(c,f,l,g,p,y){let h=arguments.length>6&&arguments[6]!==void 0?arguments[6]:!1;return t.create3DFilterableFromDataArray(c,f,l,_e.newInstance({numberOfComponents:g,dataType:p,values:y}),h)},t.create3DFilterableFromDataArray=function(c,f,l,g){let p=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!1;const{numComps:y,dataType:h,data:d,scaleOffsets:x}=u(g,p),S=c*f*l,v=[],T=[];for(let F=0;F<y;++F)v[F]=0,T[F]=1;e.volumeInfo={scale:T,offset:v,dataComputedScale:x.scale,dataComputedOffset:x.offset,width:c,height:f,depth:l};const w=structuredClone(x);if(e._openGLRenderWindow.getWebgl2()){if(e.oglNorm16Ext&&!e.useHalfFloat&&h===pe.SHORT){for(let P=0;P<y;++P)e.volumeInfo.scale[P]=32767;return t.create3DFromRaw(c,f,l,y,h,d)}if(e.oglNorm16Ext&&!e.useHalfFloat&&h===pe.UNSIGNED_SHORT){for(let P=0;P<y;++P)e.volumeInfo.scale[P]=65535;return t.create3DFromRaw(c,f,l,y,h,d)}if(h===pe.FLOAT||e.useHalfFloat&&(h===pe.SHORT||h===pe.UNSIGNED_SHORT))return t.create3DFromRaw(c,f,l,y,h,d);if(h===pe.UNSIGNED_CHAR){for(let P=0;P<y;++P)e.volumeInfo.scale[P]=255;return t.create3DFromRaw(c,f,l,y,h,d)}const F=new Float32Array(S*y);e.volumeInfo.offset=w.offset,e.volumeInfo.scale=w.scale;let j=0;const K=w.scale.map(P=>1/P);for(let P=0;P<S;P++)for(let Ee=0;Ee<y;Ee++)F[j]=(d[j]-w.offset[Ee])*K[Ee],j++;return t.create3DFromRaw(c,f,l,y,pe.FLOAT,F)}let C=(F,j,K,P,Ee)=>{F[j]=K},R=pe.UNSIGNED_CHAR;if(h===pe.UNSIGNED_CHAR)for(let F=0;F<y;++F)w.offset[F]=0,w.scale[F]=255;else e.context.getExtension("OES_texture_float")&&e.context.getExtension("OES_texture_float_linear")?(R=pe.FLOAT,C=(F,j,K,P,Ee)=>{F[j]=(K-P)/Ee}):(R=pe.UNSIGNED_CHAR,C=(F,j,K,P,Ee)=>{F[j]=255*(K-P)/Ee});if(t.getOpenGLDataType(R),t.getInternalFormat(R,y),t.getFormat(R,y),!e.internalFormat||!e.format||!e.openGLDataType)return nr("Failed to determine texture parameters."),!1;e.target=e.context.TEXTURE_2D,e.components=y,e.depth=1,e.numberOfDimensions=2;let m=e.context.getParameter(e.context.MAX_TEXTURE_SIZE);m>4096&&(R===pe.FLOAT||y>=3)&&(m=4096);let B=1,M=1;S>m*m&&(B=Math.ceil(Math.sqrt(S/(m*m))),M=B);let D=Math.sqrt(S)/B;D=Ut(D);const L=Math.floor(D*B/c),b=Math.ceil(l/L),$=Ut(f*b/M);e.width=D,e.height=$,e._openGLRenderWindow.activateTexture(t),t.createTexture(),t.bind(),e.volumeInfo.xreps=L,e.volumeInfo.yreps=b,e.volumeInfo.xstride=B,e.volumeInfo.ystride=M,e.volumeInfo.offset=w.offset,e.volumeInfo.scale=w.scale;let Q;const Y=D*$*y;R===pe.FLOAT?Q=new Float32Array(Y):Q=new Uint8Array(Y);let Z=0;const se=Math.floor(c/B),W=Math.floor(f/M);for(let F=0;F<b;F++){const j=Math.min(L,l-F*L),K=y*(e.width-j*Math.floor(c/B));for(let P=0;P<W;P++){for(let Ee=0;Ee<j;Ee++){const gt=y*((F*L+Ee)*c*f+M*P*c);for(let xt=0;xt<se;xt++)for(let ae=0;ae<y;ae++)C(Q,Z,d[gt+B*xt*y+ae],w.offset[ae],w.scale[ae]),Z++}Z+=K}}return e.context.pixelStorei(e.context.UNPACK_ALIGNMENT,1),a(R)?(e.context.texStorage2D(e.target,1,e.internalFormat,e.width,e.height),Q!=null&&e.context.texSubImage2D(e.target,0,0,0,e.width,e.height,e.format,e.openGLDataType,Q)):e.context.texImage2D(e.target,0,e.internalFormat,e.width,e.height,0,e.format,e.openGLDataType,Q),t.deactivate(),!0},t.setOpenGLRenderWindow=c=>{e._openGLRenderWindow!==c&&(t.releaseGraphicsResources(),e._openGLRenderWindow=c,e.context=null,c&&(e.context=e._openGLRenderWindow.getContext()))},t.getMaximumTextureSize=c=>c&&c.isCurrent()?c.getIntegerv(c.MAX_TEXTURE_SIZE):-1}const zx={_openGLRenderWindow:null,_forceInternalFormat:!1,context:null,handle:0,sendParametersTime:null,textureBuildTime:null,numberOfDimensions:0,target:0,format:0,openGLDataType:0,components:0,width:0,height:0,depth:0,autoParameters:!0,wrapS:sn.CLAMP_TO_EDGE,wrapT:sn.CLAMP_TO_EDGE,wrapR:sn.CLAMP_TO_EDGE,minificationFilter:Qe.NEAREST,magnificationFilter:Qe.NEAREST,minLOD:-1e3,maxLOD:1e3,baseLevel:0,maxLevel:1e3,generateMipmap:!1,useHalfFloat:!0,oglNorm16Ext:null,allocatedGPUMemoryInBytes:0};function sg(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,zx,n),be.extend(t,e,n),e.sendParametersTime={},qe(e.sendParametersTime,{mtime:0}),e.textureBuildTime={},qe(e.textureBuildTime,{mtime:0}),aa(t,e,["format","openGLDataType"]),He(t,e,["keyMatrixTime","minificationFilter","magnificationFilter","wrapS","wrapT","wrapR","generateMipmap","oglNorm16Ext"]),lt(t,e,["width","height","volumeInfo","components","handle","target","allocatedGPUMemoryInBytes"]),sa(t,e,["openGLRenderWindow"]),Wx(t,e)}const ig=De(sg,"vtkOpenGLTexture");var In={newInstance:ig,extend:sg,...rg};At("vtkTexture",ig);var Ax=`//VTK::System::Dec
- /*=========================================================================
- Program: Visualization Toolkit
- Module: vtkPolyDataVS.glsl
- Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
- All rights reserved.
- See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
- This software is distributed WITHOUT ANY WARRANTY; without even
- the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- PURPOSE. See the above copyright notice for more information.
- =========================================================================*/
- attribute vec4 vertexMC;
- // frag position in VC
- //VTK::PositionVC::Dec
- // optional normal declaration
- //VTK::Normal::Dec
- // extra lighting parameters
- //VTK::Light::Dec
- // Texture coordinates
- //VTK::TCoord::Dec
- // material property values
- //VTK::Color::Dec
- // clipping plane vars
- //VTK::Clip::Dec
- // camera and actor matrix values
- //VTK::Camera::Dec
- // Apple Bug
- //VTK::PrimID::Dec
- // picking support
- //VTK::Picking::Dec
- void main()
- {
- //VTK::Color::Impl
- //VTK::Normal::Impl
- //VTK::TCoord::Impl
- //VTK::Clip::Impl
- //VTK::PrimID::Impl
- //VTK::PositionVC::Impl
- //VTK::Light::Impl
- //VTK::Picking::Impl
- }
- `,Hx=`//VTK::System::Dec
- /*=========================================================================
- Program: Visualization Toolkit
- Module: vtkPolyDataFS.glsl
- Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
- All rights reserved.
- See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
- This software is distributed WITHOUT ANY WARRANTY; without even
- the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- PURPOSE. See the above copyright notice for more information.
- =========================================================================*/
- // Template for the polydata mappers fragment shader
- uniform int PrimitiveIDOffset;
- // VC position of this fragment
- //VTK::PositionVC::Dec
- // optional color passed in from the vertex shader, vertexColor
- //VTK::Color::Dec
- // optional surface normal declaration
- //VTK::Normal::Dec
- // extra lighting parameters
- //VTK::Light::Dec
- // define vtkImageLabelOutlineOn
- //VTK::ImageLabelOutlineOn
- // Texture coordinates
- //VTK::TCoord::Dec
- // picking support
- //VTK::Picking::Dec
- // Depth Peeling Support
- //VTK::DepthPeeling::Dec
- // clipping plane vars
- //VTK::Clip::Dec
- // label outline
- //VTK::LabelOutline::Dec
- // the output of this shader
- //VTK::Output::Dec
- // Apple Bug
- //VTK::PrimID::Dec
- // handle coincident offsets
- //VTK::Coincident::Dec
- //VTK::ZBuffer::Dec
- //VTK::LabelOutlineHelperFunction
- void main()
- {
- // VC position of this fragment. This should not branch/return/discard.
- //VTK::PositionVC::Impl
- // Place any calls that require uniform flow (e.g. dFdx) here.
- //VTK::UniformFlow::Impl
- // Set gl_FragDepth here (gl_FragCoord.z by default)
- //VTK::Depth::Impl
- // Early depth peeling abort:
- //VTK::DepthPeeling::PreColor
- // Apple Bug
- //VTK::PrimID::Impl
- //VTK::Clip::Impl
- //VTK::Color::Impl
- // Generate the normal if we are not passed in one
- //VTK::Normal::Impl
- //VTK::TCoord::Impl
- //VTK::Light::Impl
- if (gl_FragData[0].a <= 0.0)
- {
- discard;
- }
- //VTK::DepthPeeling::Impl
- //VTK::Picking::Impl
- // handle coincident offsets
- //VTK::Coincident::Impl
- //VTK::ZBuffer::Impl
- //VTK::RenderPassFragmentShader::Impl
- }
- `;function jx(t,e){t.replaceShaderCoincidentOffset=(n,r,a)=>{const s=t.getCoincidentParameters(r,a);if(s&&(s.factor!==0||s.offset!==0)){let i=n.Fragment;i=z.substitute(i,"//VTK::Coincident::Dec",["uniform float cfactor;","uniform float coffset;"]).result,e.context.getExtension("EXT_frag_depth")&&(s.factor!==0?(i=z.substitute(i,"//VTK::UniformFlow::Impl",["float cscale = length(vec2(dFdx(gl_FragCoord.z),dFdy(gl_FragCoord.z)));","//VTK::UniformFlow::Impl"],!1).result,i=z.substitute(i,"//VTK::Depth::Impl","gl_FragDepthEXT = gl_FragCoord.z + cfactor*cscale + 0.000016*coffset;").result):i=z.substitute(i,"//VTK::Depth::Impl","gl_FragDepthEXT = gl_FragCoord.z + 0.000016*coffset;").result),e._openGLRenderWindow.getWebgl2()&&(s.factor!==0?(i=z.substitute(i,"//VTK::UniformFlow::Impl",["float cscale = length(vec2(dFdx(gl_FragCoord.z),dFdy(gl_FragCoord.z)));","//VTK::UniformFlow::Impl"],!1).result,i=z.substitute(i,"//VTK::Depth::Impl","gl_FragDepth = gl_FragCoord.z + cfactor*cscale + 0.000016*coffset;").result):i=z.substitute(i,"//VTK::Depth::Impl","gl_FragDepth = gl_FragCoord.z + 0.000016*coffset;").result),n.Fragment=i}}}function Kx(t,e){t.applyShaderReplacements=(n,r,a)=>{let s=null;if(r&&(s=r.ShaderReplacements),s)for(let i=0;i<s.length;i++){const o=s[i];if(a&&o.replaceFirst||!a&&!o.replaceFirst){const u=o.shaderType,c=n[u],f=z.substitute(c,o.originalValue,o.replacementValue,o.replaceAll);n[u]=f.result}}},t.buildShaders=(n,r,a)=>{t.getReplacedShaderTemplate(n,r,a),e.lastRenderPassShaderReplacement=e.currentRenderPass?e.currentRenderPass.getShaderReplacement():null,e.lastRenderPassShaderReplacement&&e.lastRenderPassShaderReplacement(n);const s=e.renderable.getViewSpecificProperties().OpenGL;t.applyShaderReplacements(n,s,!0),t.replaceShaderValues(n,r,a),t.applyShaderReplacements(n,s)},t.getReplacedShaderTemplate=(n,r,a)=>{const s=e.renderable.getViewSpecificProperties().OpenGL;t.getShaderTemplate(n,r,a);let i=n.Vertex;if(s){const c=s.VertexShaderCode;c!==void 0&&c!==""&&(i=c)}n.Vertex=i;let o=n.Fragment;if(s){const c=s.FragmentShaderCode;c!==void 0&&c!==""&&(o=c)}n.Fragment=o;let u=n.Geometry;if(s){const c=s.GeometryShaderCode;c!==void 0&&(u=c)}n.Geometry=u}}var us={implementReplaceShaderCoincidentOffset:jx,implementBuildShadersWithReplacements:Kx};const{FieldAssociations:Ps}=Zn,{primTypes:Ae}=Mr,{Representation:rr,Shading:bc}=mr,{ScalarMode:wa}=Wt,{Filter:Nc,Wrap:Gc}=In,{vtkErrorMacro:bn}=Jt,Px={type:"StartEvent"},Xx={type:"EndEvent"},{CoordinateSystem:Ix}=ia;function Yx(t){const e=t.getSelector();return e?e.getCurrentPass():ct.MIN_KNOWN_PASS-1}function qx(t,e){e.classHierarchy.push("vtkOpenGLPolyDataMapper"),t.buildPass=r=>{r&&(e.currentRenderPass=null,e.openGLActor=t.getFirstAncestorOfType("vtkOpenGLActor"),e._openGLRenderer=e.openGLActor.getFirstAncestorOfType("vtkOpenGLRenderer"),e._openGLRenderWindow=e._openGLRenderer.getParent(),e.openGLCamera=e._openGLRenderer.getViewNodeFor(e._openGLRenderer.getRenderable().getActiveCamera()))},t.translucentPass=(r,a)=>{r&&(e.currentRenderPass=a,t.render())},t.zBufferPass=r=>{r&&(e.haveSeenDepthRequest=!0,e.renderDepth=!0,t.render(),e.renderDepth=!1)},t.opaqueZBufferPass=r=>t.zBufferPass(r),t.opaquePass=r=>{r&&t.render()},t.render=()=>{const r=e._openGLRenderWindow.getContext();if(e.context!==r){e.context=r;for(let i=Ae.Start;i<Ae.End;i++)e.primitives[i].setOpenGLRenderWindow(e._openGLRenderWindow)}const a=e.openGLActor.getRenderable(),s=e._openGLRenderer.getRenderable();t.renderPiece(s,a)},t.getShaderTemplate=(r,a,s)=>{r.Vertex=Ax,r.Fragment=Hx,r.Geometry=""},t.replaceShaderColor=(r,a,s)=>{let i=r.Vertex,o=r.Geometry,u=r.Fragment;const c=e.lastBoundBO.getReferenceByName("lastLightComplexity");let f=["uniform float ambient;","uniform float diffuse;","uniform float specular;","uniform float opacityUniform; // the fragment opacity","uniform vec3 ambientColorUniform;","uniform vec3 diffuseColorUniform;"];c&&(f=f.concat(["uniform vec3 specularColorUniform;","uniform float specularPowerUniform;"]));let l=["vec3 ambientColor;"," vec3 diffuseColor;"," float opacity;"];c&&(l=l.concat([" vec3 specularColor;"," float specularPower;"])),l=l.concat([" ambientColor = ambientColorUniform;"," diffuseColor = diffuseColorUniform;"," opacity = opacityUniform;"]),c&&(l=l.concat([" specularColor = specularColorUniform;"," specularPower = specularPowerUniform;"])),e.lastBoundBO.getCABO().getColorComponents()!==0&&!e.drawingEdges&&(f=f.concat(["varying vec4 vertexColorVSOutput;"]),i=z.substitute(i,"//VTK::Color::Dec",["attribute vec4 scalarColor;","varying vec4 vertexColorVSOutput;"]).result,i=z.substitute(i,"//VTK::Color::Impl",["vertexColorVSOutput = scalarColor;"]).result,o=z.substitute(o,"//VTK::Color::Dec",["in vec4 vertexColorVSOutput[];","out vec4 vertexColorGSOutput;"]).result,o=z.substitute(o,"//VTK::Color::Impl",["vertexColorGSOutput = vertexColorVSOutput[i];"]).result),e.lastBoundBO.getCABO().getColorComponents()!==0&&!e.drawingEdges?u=z.substitute(u,"//VTK::Color::Impl",l.concat([" diffuseColor = vertexColorVSOutput.rgb;"," ambientColor = vertexColorVSOutput.rgb;"," opacity = opacity*vertexColorVSOutput.a;"])).result:e.renderable.getInterpolateScalarsBeforeMapping()&&e.renderable.getColorCoordinates()&&!e.drawingEdges?u=z.substitute(u,"//VTK::Color::Impl",l.concat([" vec4 texColor = texture2D(texture1, tcoordVCVSOutput.st);"," diffuseColor = texColor.rgb;"," ambientColor = texColor.rgb;"," opacity = opacity*texColor.a;"])).result:(s.getBackfaceProperty()&&!e.drawingEdges&&(f=f.concat(["uniform float opacityUniformBF; // the fragment opacity","uniform float ambientIntensityBF; // the material ambient","uniform float diffuseIntensityBF; // the material diffuse","uniform vec3 ambientColorUniformBF; // ambient material color","uniform vec3 diffuseColorUniformBF; // diffuse material color"]),c?(f=f.concat(["uniform float specularIntensityBF; // the material specular intensity","uniform vec3 specularColorUniformBF; // intensity weighted color","uniform float specularPowerUniformBF;"]),l=l.concat(["if (gl_FrontFacing == false) {"," ambientColor = ambientIntensityBF * ambientColorUniformBF;"," diffuseColor = diffuseIntensityBF * diffuseColorUniformBF;"," specularColor = specularIntensityBF * specularColorUniformBF;"," specularPower = specularPowerUniformBF;"," opacity = opacityUniformBF; }"])):l=l.concat(["if (gl_FrontFacing == false) {"," ambientColor = ambientIntensityBF * ambientColorUniformBF;"," diffuseColor = diffuseIntensityBF * diffuseColorUniformBF;"," opacity = opacityUniformBF; }"])),e.haveCellScalars&&!e.drawingEdges&&(f=f.concat(["uniform samplerBuffer texture1;"])),u=z.substitute(u,"//VTK::Color::Impl",l).result),u=z.substitute(u,"//VTK::Color::Dec",f).result,r.Vertex=i,r.Geometry=o,r.Fragment=u},t.replaceShaderLight=(r,a,s)=>{let i=r.Fragment;const o="",u=e.lastBoundBO.getReferenceByName("lastLightComplexity"),c=e.lastBoundBO.getReferenceByName("lastLightCount");let f=[];switch(u){case 0:i=z.substitute(i,"//VTK::Light::Impl",[" gl_FragData[0] = vec4(ambientColor * ambient + diffuseColor * diffuse, opacity);"," //VTK::Light::Impl"],!1).result;break;case 1:i=z.substitute(i,"//VTK::Light::Impl",[" float df = max(0.0, normalVCVSOutput.z);"," float sf = pow(df, specularPower);"," vec3 diffuseL = df * diffuseColor;"," vec3 specularL = sf * specularColor;"," gl_FragData[0] = vec4(ambientColor * ambient + diffuseL * diffuse + specularL * specular, opacity);"," //VTK::Light::Impl"],!1).result;break;case 2:for(let l=0;l<c;++l)f=f.concat([`uniform vec3 lightColor${l};`,`uniform vec3 lightDirectionVC${l}; // normalized`,`uniform vec3 lightHalfAngleVC${l}; // normalized`]);i=z.substitute(i,"//VTK::Light::Dec",f).result,f=["vec3 diffuseL = vec3(0,0,0);"," vec3 specularL = vec3(0,0,0);"," float df;"];for(let l=0;l<c;++l)f=f.concat([` df = max(0.0, dot(normalVCVSOutput, -lightDirectionVC${l}));`,` diffuseL += ((df${o}) * lightColor${l});`,` if (dot(normalVCVSOutput, lightDirectionVC${l}) < 0.0)`," {",` float sf = sign(df)*pow(max(1e-5,
- dot(reflect(lightDirectionVC${l},normalVCVSOutput),
- normalize(-vertexVC.xyz))),
- specularPower);`,` specularL += (sf${o} * lightColor${l});`," }"]);f=f.concat([" diffuseL = diffuseL * diffuseColor;"," specularL = specularL * specularColor;"," gl_FragData[0] = vec4(ambientColor * ambient + diffuseL * diffuse + specularL * specular, opacity);"," //VTK::Light::Impl"]),i=z.substitute(i,"//VTK::Light::Impl",f,!1).result;break;case 3:for(let l=0;l<c;++l)f=f.concat([`uniform vec3 lightColor${l};`,`uniform vec3 lightDirectionVC${l}; // normalized`,`uniform vec3 lightHalfAngleVC${l}; // normalized`,`uniform vec3 lightPositionVC${l};`,`uniform vec3 lightAttenuation${l};`,`uniform float lightConeAngle${l};`,`uniform float lightExponent${l};`,`uniform int lightPositional${l};`]);i=z.substitute(i,"//VTK::Light::Dec",f).result,f=["vec3 diffuseL = vec3(0,0,0);"," vec3 specularL = vec3(0,0,0);"," vec3 vertLightDirectionVC;"," float attenuation;"," float df;"];for(let l=0;l<c;++l)f=f.concat([" attenuation = 1.0;",` if (lightPositional${l} == 0)`," {",` vertLightDirectionVC = lightDirectionVC${l};`," }"," else"," {",` vertLightDirectionVC = vertexVC.xyz - lightPositionVC${l};`," float distanceVC = length(vertLightDirectionVC);"," vertLightDirectionVC = normalize(vertLightDirectionVC);"," attenuation = 1.0 /",` (lightAttenuation${l}.x`,` + lightAttenuation${l}.y * distanceVC`,` + lightAttenuation${l}.z * distanceVC * distanceVC);`," // per OpenGL standard cone angle is 90 or less for a spot light",` if (lightConeAngle${l} <= 90.0)`," {",` float coneDot = dot(vertLightDirectionVC, lightDirectionVC${l});`," // if inside the cone",` if (coneDot >= cos(radians(lightConeAngle${l})))`," {",` attenuation = attenuation * pow(coneDot, lightExponent${l});`," }"," else"," {"," attenuation = 0.0;"," }"," }"," }"," df = max(0.0, attenuation*dot(normalVCVSOutput, -vertLightDirectionVC));",` diffuseL += ((df${o}) * lightColor${l});`," if (dot(normalVCVSOutput, vertLightDirectionVC) < 0.0)"," {",` float sf = sign(df)*attenuation*pow(max(1e-5,
- dot(reflect(lightDirectionVC${l},
- normalVCVSOutput),
- normalize(-vertexVC.xyz))),
- specularPower);`,` specularL += ((sf${o}) * lightColor${l});`," }"]);f=f.concat([" diffuseL = diffuseL * diffuseColor;"," specularL = specularL * specularColor;"," gl_FragData[0] = vec4(ambientColor * ambient + diffuseL * diffuse + specularL * specular, opacity);"," //VTK::Light::Impl"]),i=z.substitute(i,"//VTK::Light::Impl",f,!1).result;break;default:bn("bad light complexity")}r.Fragment=i},t.replaceShaderNormal=(r,a,s)=>{if(e.lastBoundBO.getReferenceByName("lastLightComplexity")>0){let o=r.Vertex,u=r.Geometry,c=r.Fragment;e.lastBoundBO.getCABO().getNormalOffset()?(o=z.substitute(o,"//VTK::Normal::Dec",["attribute vec3 normalMC;","uniform mat3 normalMatrix;","varying vec3 normalVCVSOutput;"]).result,o=z.substitute(o,"//VTK::Normal::Impl",["normalVCVSOutput = normalMatrix * normalMC;"]).result,u=z.substitute(u,"//VTK::Normal::Dec",["in vec3 normalVCVSOutput[];","out vec3 normalVCGSOutput;"]).result,u=z.substitute(u,"//VTK::Normal::Impl",["normalVCGSOutput = normalVCVSOutput[i];"]).result,c=z.substitute(c,"//VTK::Normal::Dec",["varying vec3 normalVCVSOutput;"]).result,c=z.substitute(c,"//VTK::Normal::Impl",["vec3 normalVCVSOutput = normalize(normalVCVSOutput);"," if (gl_FrontFacing == false) { normalVCVSOutput = -normalVCVSOutput; }"]).result):e.haveCellNormals?(c=z.substitute(c,"//VTK::Normal::Dec",["uniform mat3 normalMatrix;","uniform samplerBuffer textureN;"]).result,c=z.substitute(c,"//VTK::Normal::Impl",["vec3 normalVCVSOutput = normalize(normalMatrix *"," texelFetchBuffer(textureN, gl_PrimitiveID + PrimitiveIDOffset).xyz);"," if (gl_FrontFacing == false) { normalVCVSOutput = -normalVCVSOutput; }"]).result):e.lastBoundBO.getOpenGLMode(s.getProperty().getRepresentation())===e.context.LINES?(c=z.substitute(c,"//VTK::UniformFlow::Impl",[" vec3 fdx = dFdx(vertexVC.xyz);"," vec3 fdy = dFdy(vertexVC.xyz);"," //VTK::UniformFlow::Impl"]).result,c=z.substitute(c,"//VTK::Normal::Impl",["vec3 normalVCVSOutput;"," if (abs(fdx.x) > 0.0)"," { fdx = normalize(fdx); normalVCVSOutput = normalize(cross(vec3(fdx.y, -fdx.x, 0.0), fdx)); }"," else { fdy = normalize(fdy); normalVCVSOutput = normalize(cross(vec3(fdy.y, -fdy.x, 0.0), fdy));}"]).result):(c=z.substitute(c,"//VTK::Normal::Dec",["uniform int cameraParallel;"]).result,c=z.substitute(c,"//VTK::UniformFlow::Impl",[" vec3 fdx = dFdx(vertexVC.xyz);"," vec3 fdy = dFdy(vertexVC.xyz);"," //VTK::UniformFlow::Impl"]).result,c=z.substitute(c,"//VTK::Normal::Impl",[" fdx = normalize(fdx);"," fdy = normalize(fdy);"," vec3 normalVCVSOutput = normalize(cross(fdx,fdy));"," if (cameraParallel == 1 && normalVCVSOutput.z < 0.0) { normalVCVSOutput = -1.0*normalVCVSOutput; }"," if (cameraParallel == 0 && dot(normalVCVSOutput,vertexVC.xyz) > 0.0) { normalVCVSOutput = -1.0*normalVCVSOutput; }"]).result),r.Vertex=o,r.Geometry=u,r.Fragment=c}},t.replaceShaderPositionVC=(r,a,s)=>{e.lastBoundBO.replaceShaderPositionVC(r,a,s);let i=r.Vertex,o=r.Geometry,u=r.Fragment;e.lastBoundBO.getReferenceByName("lastLightComplexity")>0?(i=z.substitute(i,"//VTK::PositionVC::Dec",["varying vec4 vertexVCVSOutput;"]).result,i=z.substitute(i,"//VTK::PositionVC::Impl",["vertexVCVSOutput = MCVCMatrix * vertexMC;"," gl_Position = MCPCMatrix * vertexMC;"]).result,i=z.substitute(i,"//VTK::Camera::Dec",["uniform mat4 MCPCMatrix;","uniform mat4 MCVCMatrix;"]).result,o=z.substitute(o,"//VTK::PositionVC::Dec",["in vec4 vertexVCVSOutput[];","out vec4 vertexVCGSOutput;"]).result,o=z.substitute(o,"//VTK::PositionVC::Impl",["vertexVCGSOutput = vertexVCVSOutput[i];"]).result,u=z.substitute(u,"//VTK::PositionVC::Dec",["varying vec4 vertexVCVSOutput;"]).result,u=z.substitute(u,"//VTK::PositionVC::Impl",["vec4 vertexVC = vertexVCVSOutput;"]).result):(i=z.substitute(i,"//VTK::Camera::Dec",["uniform mat4 MCPCMatrix;"]).result,i=z.substitute(i,"//VTK::PositionVC::Impl",[" gl_Position = MCPCMatrix * vertexMC;"]).result),r.Vertex=i,r.Geometry=o,r.Fragment=u},t.replaceShaderTCoord=(r,a,s)=>{if(e.lastBoundBO.getCABO().getTCoordOffset()){let i=r.Vertex,o=r.Geometry,u=r.Fragment;if(e.drawingEdges)return;i=z.substitute(i,"//VTK::TCoord::Impl","tcoordVCVSOutput = tcoordMC;").result;const c=e.openGLActor.getActiveTextures();let f=2,l=2;if(c&&c.length>0&&(f=c[0].getComponents(),c[0].getTarget()===e.context.TEXTURE_CUBE_MAP&&(l=3)),e.renderable.getColorTextureMap()&&(f=e.renderable.getColorTextureMap().getPointData().getScalars().getNumberOfComponents(),l=2),l===2){if(i=z.substitute(i,"//VTK::TCoord::Dec","attribute vec2 tcoordMC; varying vec2 tcoordVCVSOutput;").result,o=z.substitute(o,"//VTK::TCoord::Dec",["in vec2 tcoordVCVSOutput[];","out vec2 tcoordVCGSOutput;"]).result,o=z.substitute(o,"//VTK::TCoord::Impl","tcoordVCGSOutput = tcoordVCVSOutput[i];").result,u=z.substitute(u,"//VTK::TCoord::Dec",["varying vec2 tcoordVCVSOutput;","uniform sampler2D texture1;"]).result,c&&c.length>=1)switch(f){case 1:u=z.substitute(u,"//VTK::TCoord::Impl",[" vec4 tcolor = texture2D(texture1, tcoordVCVSOutput);"," ambientColor = ambientColor*tcolor.r;"," diffuseColor = diffuseColor*tcolor.r;"]).result;break;case 2:u=z.substitute(u,"//VTK::TCoord::Impl",[" vec4 tcolor = texture2D(texture1, tcoordVCVSOutput);"," ambientColor = ambientColor*tcolor.r;"," diffuseColor = diffuseColor*tcolor.r;"," opacity = opacity * tcolor.g;"]).result;break;default:u=z.substitute(u,"//VTK::TCoord::Impl",[" vec4 tcolor = texture2D(texture1, tcoordVCVSOutput);"," ambientColor = ambientColor*tcolor.rgb;"," diffuseColor = diffuseColor*tcolor.rgb;"," opacity = opacity * tcolor.a;"]).result}}else switch(i=z.substitute(i,"//VTK::TCoord::Dec","attribute vec3 tcoordMC; varying vec3 tcoordVCVSOutput;").result,o=z.substitute(o,"//VTK::TCoord::Dec",["in vec3 tcoordVCVSOutput[];","out vec3 tcoordVCGSOutput;"]).result,o=z.substitute(o,"//VTK::TCoord::Impl","tcoordVCGSOutput = tcoordVCVSOutput[i];").result,u=z.substitute(u,"//VTK::TCoord::Dec",["varying vec3 tcoordVCVSOutput;","uniform samplerCube texture1;"]).result,f){case 1:u=z.substitute(u,"//VTK::TCoord::Impl",[" vec4 tcolor = textureCube(texture1, tcoordVCVSOutput);"," ambientColor = ambientColor*tcolor.r;"," diffuseColor = diffuseColor*tcolor.r;"]).result;break;case 2:u=z.substitute(u,"//VTK::TCoord::Impl",[" vec4 tcolor = textureCube(texture1, tcoordVCVSOutput);"," ambientColor = ambientColor*tcolor.r;"," diffuseColor = diffuseColor*tcolor.r;"," opacity = opacity * tcolor.g;"]).result;break;default:u=z.substitute(u,"//VTK::TCoord::Impl",[" vec4 tcolor = textureCube(texture1, tcoordVCVSOutput);"," ambientColor = ambientColor*tcolor.rgb;"," diffuseColor = diffuseColor*tcolor.rgb;"," opacity = opacity * tcolor.a;"]).result}r.Vertex=i,r.Geometry=o,r.Fragment=u}},t.replaceShaderClip=(r,a,s)=>{let i=r.Vertex,o=r.Fragment;if(e.renderable.getNumberOfClippingPlanes()){const u=e.renderable.getNumberOfClippingPlanes();i=z.substitute(i,"//VTK::Clip::Dec",["uniform int numClipPlanes;",`uniform vec4 clipPlanes[${u}];`,`varying float clipDistancesVSOutput[${u}];`]).result,i=z.substitute(i,"//VTK::Clip::Impl",[`for (int planeNum = 0; planeNum < ${u}; planeNum++)`," {"," if (planeNum >= numClipPlanes)"," {"," break;"," }"," clipDistancesVSOutput[planeNum] = dot(clipPlanes[planeNum], vertexMC);"," }"]).result,o=z.substitute(o,"//VTK::Clip::Dec",["uniform int numClipPlanes;",`varying float clipDistancesVSOutput[${u}];`]).result,o=z.substitute(o,"//VTK::Clip::Impl",[`for (int planeNum = 0; planeNum < ${u}; planeNum++)`," {"," if (planeNum >= numClipPlanes)"," {"," break;"," }"," if (clipDistancesVSOutput[planeNum] < 0.0) discard;"," }"]).result}r.Vertex=i,r.Fragment=o},t.getCoincidentParameters=(r,a)=>{let s={factor:0,offset:0};const i=a.getProperty();if(e.renderable.getResolveCoincidentTopology()||i.getEdgeVisibility()&&i.getRepresentation()===rr.SURFACE){const u=e.lastBoundBO.getPrimitiveType();u===Ae.Points||i.getRepresentation()===rr.POINTS?s=e.renderable.getCoincidentTopologyPointOffsetParameter():u===Ae.Lines||i.getRepresentation()===rr.WIREFRAME?s=e.renderable.getCoincidentTopologyLineOffsetParameters():(u===Ae.Tris||u===Ae.TriStrips)&&(s=e.renderable.getCoincidentTopologyPolygonOffsetParameters()),(u===Ae.TrisEdges||u===Ae.TriStripsEdges)&&(s=e.renderable.getCoincidentTopologyPolygonOffsetParameters(),s.factor/=2,s.offset/=2)}const o=e._openGLRenderer.getSelector();return o&&o.getFieldAssociation()===Ps.FIELD_ASSOCIATION_POINTS&&(s.offset-=2),s},t.replaceShaderPicking=(r,a,s)=>{let i=r.Fragment,o=r.Vertex;if(i=z.substitute(i,"//VTK::Picking::Dec",["uniform int picking;","//VTK::Picking::Dec"]).result,!!e._openGLRenderer.getSelector()){switch((e.lastSelectionState===ct.ID_LOW24||e.lastSelectionState===ct.ID_HIGH24)&&(o=z.substitute(o,"//VTK::Picking::Dec",[`flat out int vertexIDVSOutput;
- `,`uniform int VertexIDOffset;
- `]).result,o=z.substitute(o,"//VTK::Picking::Impl",` vertexIDVSOutput = gl_VertexID + VertexIDOffset;
- `).result,i=z.substitute(i,"//VTK::Picking::Dec",`flat in int vertexIDVSOutput;
- `).result,i=z.substitute(i,"//VTK::Picking::Impl",[" int idx = vertexIDVSOutput;","//VTK::Picking::Impl"]).result),e.lastSelectionState){case ct.ID_LOW24:i=z.substitute(i,"//VTK::Picking::Impl"," gl_FragData[0] = vec4(float(idx%256)/255.0, float((idx/256)%256)/255.0, float((idx/65536)%256)/255.0, 1.0);").result;break;case ct.ID_HIGH24:i=z.substitute(i,"//VTK::Picking::Impl"," gl_FragData[0] = vec4(float(idx)/255.0, 0.0, 0.0, 1.0);").result;break;default:i=z.substitute(i,"//VTK::Picking::Dec","uniform vec3 mapperIndex;").result,i=z.substitute(i,"//VTK::Picking::Impl"," gl_FragData[0] = picking != 0 ? vec4(mapperIndex,1.0) : gl_FragData[0];").result}r.Fragment=i,r.Vertex=o}},t.replaceShaderValues=(r,a,s)=>{if(t.replaceShaderColor(r,a,s),t.replaceShaderNormal(r,a,s),t.replaceShaderLight(r,a,s),t.replaceShaderTCoord(r,a,s),t.replaceShaderPicking(r,a,s),t.replaceShaderClip(r,a,s),t.replaceShaderCoincidentOffset(r,a,s),t.replaceShaderPositionVC(r,a,s),e.haveSeenDepthRequest){let i=r.Fragment;i=z.substitute(i,"//VTK::ZBuffer::Dec","uniform int depthRequest;").result,i=z.substitute(i,"//VTK::ZBuffer::Impl",["if (depthRequest == 1) {","float iz = floor(gl_FragCoord.z*65535.0 + 0.1);","float rf = floor(iz/256.0)/255.0;","float gf = mod(iz,256.0)/255.0;","gl_FragData[0] = vec4(rf, gf, 0.0, 1.0); }"]).result,r.Fragment=i}},t.getNeedToRebuildShaders=(r,a,s)=>{let i=0,o=0;const u=r.getPrimitiveType(),c=e.currentInput;let f=!1;const l=c.getPointData().getNormals(),g=c.getCellData().getNormals(),p=s.getProperty().getInterpolation()===bc.FLAT,y=s.getProperty().getRepresentation(),h=r.getOpenGLMode(y,u);if((h===e.context.TRIANGLES||g&&!l||!p&&l||!p&&h===e.context.LINES)&&(f=!0),s.getProperty().getLighting()&&f){i=0;const v=a.getLightsByReference();for(let T=0;T<v.length;++T){const w=v[T];w.getSwitch()>0&&(o++,i===0&&(i=1)),i===1&&(o>1||w.getIntensity()!==1||!w.lightTypeIsHeadLight())&&(i=2),i<3&&w.getPositional()&&(i=3)}}let d=!1;const x=e.lastBoundBO.getReferenceByName("lastLightComplexity"),S=e.lastBoundBO.getReferenceByName("lastLightCount");return(x!==i||S!==o)&&(e.lastBoundBO.set({lastLightComplexity:i},!0),e.lastBoundBO.set({lastLightCount:o},!0),d=!0),(!e.currentRenderPass&&e.lastRenderPassShaderReplacement||e.currentRenderPass&&e.currentRenderPass.getShaderReplacement()!==e.lastRenderPassShaderReplacement)&&(d=!0),e.lastHaveSeenDepthRequest!==e.haveSeenDepthRequest||r.getShaderSourceTime().getMTime()<e.renderable.getMTime()||r.getShaderSourceTime().getMTime()<e.currentInput.getMTime()||r.getShaderSourceTime().getMTime()<e.selectionStateChanged.getMTime()||d?(e.lastHaveSeenDepthRequest=e.haveSeenDepthRequest,!0):!1},t.invokeShaderCallbacks=(r,a,s)=>{const i=e.renderable.getViewSpecificProperties().ShadersCallbacks;i&&i.forEach(o=>{o.callback(o.userData,r,a,s)})},t.setMapperShaderParameters=(r,a,s)=>{if(r.getProgram().isUniformUsed("PrimitiveIDOffset")&&r.getProgram().setUniformi("PrimitiveIDOffset",e.primitiveIDOffset),r.getProgram().isUniformUsed("VertexIDOffset")&&r.getProgram().setUniformi("VertexIDOffset",e.vertexIDOffset),r.getCABO().getElementCount()&&(e.VBOBuildTime.getMTime()>r.getAttributeUpdateTime().getMTime()||r.getShaderSourceTime().getMTime()>r.getAttributeUpdateTime().getMTime())){const u=e.lastBoundBO.getReferenceByName("lastLightComplexity");r.getProgram().isAttributeUsed("vertexMC")&&(r.getVAO().addAttributeArray(r.getProgram(),r.getCABO(),"vertexMC",r.getCABO().getVertexOffset(),r.getCABO().getStride(),e.context.FLOAT,3,!1)||bn("Error setting vertexMC in shader VAO.")),r.getProgram().isAttributeUsed("normalMC")&&r.getCABO().getNormalOffset()&&u>0?r.getVAO().addAttributeArray(r.getProgram(),r.getCABO(),"normalMC",r.getCABO().getNormalOffset(),r.getCABO().getStride(),e.context.FLOAT,3,!1)||bn("Error setting normalMC in shader VAO."):r.getVAO().removeAttributeArray("normalMC"),e.renderable.getCustomShaderAttributes().forEach((c,f)=>{r.getProgram().isAttributeUsed(`${c}MC`)&&(r.getVAO().addAttributeArray(r.getProgram(),r.getCABO(),`${c}MC`,r.getCABO().getCustomData()[f].offset,r.getCABO().getStride(),e.context.FLOAT,r.getCABO().getCustomData()[f].components,!1)||bn(`Error setting ${c}MC in shader VAO.`))}),r.getProgram().isAttributeUsed("tcoordMC")&&r.getCABO().getTCoordOffset()?r.getVAO().addAttributeArray(r.getProgram(),r.getCABO(),"tcoordMC",r.getCABO().getTCoordOffset(),r.getCABO().getStride(),e.context.FLOAT,r.getCABO().getTCoordComponents(),!1)||bn("Error setting tcoordMC in shader VAO."):r.getVAO().removeAttributeArray("tcoordMC"),r.getProgram().isAttributeUsed("scalarColor")&&r.getCABO().getColorComponents()?r.getVAO().addAttributeArray(r.getProgram(),r.getCABO().getColorBO(),"scalarColor",r.getCABO().getColorOffset(),r.getCABO().getColorBOStride(),e.context.UNSIGNED_BYTE,4,!0)||bn("Error setting scalarColor in shader VAO."):r.getVAO().removeAttributeArray("scalarColor"),r.getAttributeUpdateTime().modified()}if(e.renderable.getNumberOfClippingPlanes()){const u=e.renderable.getNumberOfClippingPlanes(),c=[],l=r.getCABO().getCoordShiftAndScaleEnabled()?r.getCABO().getInverseShiftAndScaleMatrix():null,g=l?nt(e.tmpMat4,s.getMatrix()):s.getMatrix();l&&(Ve(g,g),ft(g,g,l),Ve(g,g));for(let p=0;p<u;p++){const y=[];e.renderable.getClippingPlaneInDataCoords(g,p,y);for(let h=0;h<4;h++)c.push(y[h])}r.getProgram().setUniformi("numClipPlanes",u),r.getProgram().setUniform4fv("clipPlanes",c)}e.internalColorTexture&&r.getProgram().isUniformUsed("texture1")&&r.getProgram().setUniformi("texture1",e.internalColorTexture.getTextureUnit());const i=e.openGLActor.getActiveTextures();if(i)for(let u=0;u<i.length;++u){const f=i[u].getTextureUnit(),l=`texture${f+1}`;r.getProgram().isUniformUsed(l)&&r.getProgram().setUniformi(l,f)}if(e.haveSeenDepthRequest&&r.getProgram().setUniformi("depthRequest",e.renderDepth?1:0),r.getProgram().isUniformUsed("coffset")){const u=t.getCoincidentParameters(a,s);r.getProgram().setUniformf("coffset",u.offset),r.getProgram().isUniformUsed("cfactor")&&r.getProgram().setUniformf("cfactor",u.factor)}r.setMapperShaderParameters(a,s,e._openGLRenderer.getTiledSizeAndOrigin());const o=e._openGLRenderer.getSelector();r.getProgram().setUniform3fArray("mapperIndex",o?o.getPropColorValue():[0,0,0]),r.getProgram().setUniformi("picking",o?o.getCurrentPass()+1:0)},t.setLightingShaderParameters=(r,a,s)=>{const i=e.lastBoundBO.getReferenceByName("lastLightComplexity");if(i<2)return;const o=r.getProgram();let u=0;const c=a.getLightsByReference();for(let g=0;g<c.length;++g){const p=c[g];if(p.getSwitch()>0){const h=p.getColorByReference(),d=p.getIntensity();e.lightColor[0]=h[0]*d,e.lightColor[1]=h[1]*d,e.lightColor[2]=h[2]*d;const x=p.getDirection(),S=a.getActiveCamera().getViewMatrix(),v=[...x];p.lightTypeIsSceneLight()&&(v[0]=S[0]*x[0]+S[1]*x[1]+S[2]*x[2],v[1]=S[4]*x[0]+S[5]*x[1]+S[6]*x[2],v[2]=S[8]*x[0]+S[9]*x[1]+S[10]*x[2],Jr(v)),e.lightDirection[0]=v[0],e.lightDirection[1]=v[1],e.lightDirection[2]=v[2],Jr(e.lightDirection),o.setUniform3fArray(`lightColor${u}`,e.lightColor),o.setUniform3fArray(`lightDirectionVC${u}`,e.lightDirection),u++}}if(i<3)return;const l=a.getActiveCamera().getViewMatrix();Ve(l,l),u=0;for(let g=0;g<c.length;++g){const p=c[g];if(p.getSwitch()>0){const h=p.getTransformedPosition(),d=new Float64Array(3);Se(d,h,l),o.setUniform3fArray(`lightAttenuation${u}`,p.getAttenuationValuesByReference()),o.setUniformi(`lightPositional${u}`,p.getPositional()),o.setUniformf(`lightExponent${u}`,p.getExponent()),o.setUniformf(`lightConeAngle${u}`,p.getConeAngle()),o.setUniform3fArray(`lightPositionVC${u}`,[d[0],d[1],d[2]]),u++}}};function n(r,a,s){return a.identity(s),r.reduce((i,o,u)=>u===0?o?a.copy(i,o):a.identity(i):o?a.multiply(i,i,o):i,s)}t.setCameraShaderParameters=(r,a,s)=>{const i=r.getProgram(),o=e.openGLCamera.getKeyMatrices(a),u=a.getActiveCamera(),c=e.openGLCamera.getKeyMatrixTime().getMTime(),f=i.getLastCameraMTime(),g=r.getCABO().getCoordShiftAndScaleEnabled()?r.getCABO().getInverseShiftAndScaleMatrix():null,p=s.getIsIdentity(),y=p?{mcwc:null,normalMatrix:null}:e.openGLActor.getKeyMatrices();if(s.getCoordinateSystem()===Ix.DISPLAY){const h=e._openGLRenderer.getTiledSizeAndOrigin();le(e.tmpMat4),e.tmpMat4[0]=2/h.usize,e.tmpMat4[12]=-1,e.tmpMat4[5]=2/h.vsize,e.tmpMat4[13]=-1,ft(e.tmpMat4,e.tmpMat4,g),i.setUniformMatrix("MCPCMatrix",e.tmpMat4)}else i.setUniformMatrix("MCPCMatrix",n([o.wcpc,y.mcwc,g],fi,e.tmpMat4));i.isUniformUsed("MCVCMatrix")&&i.setUniformMatrix("MCVCMatrix",n([o.wcvc,y.mcwc,g],fi,e.tmpMat4)),i.isUniformUsed("normalMatrix")&&i.setUniformMatrix3x3("normalMatrix",n([o.normalMatrix,y.normalMatrix],_h,e.tmpMat3)),f!==c&&(i.isUniformUsed("cameraParallel")&&i.setUniformi("cameraParallel",u.getParallelProjection()),i.setLastCameraMTime(c)),p||i.setLastCameraMTime(0)},t.setPropertyShaderParameters=(r,a,s)=>{const i=r.getProgram();let o=s.getProperty(),u=o.getOpacity(),c=e.drawingEdges?o.getEdgeColorByReference():o.getAmbientColorByReference(),f=e.drawingEdges?o.getEdgeColorByReference():o.getDiffuseColorByReference(),l=e.drawingEdges?1:o.getAmbient(),g=e.drawingEdges?0:o.getDiffuse(),p=e.drawingEdges?0:o.getSpecular();const y=o.getSpecularPower();i.setUniformf("opacityUniform",u),i.setUniform3fArray("ambientColorUniform",c),i.setUniform3fArray("diffuseColorUniform",f),i.setUniformf("ambient",l),i.setUniformf("diffuse",g);const h=e.lastBoundBO.getReferenceByName("lastLightComplexity");if(h<1)return;let d=o.getSpecularColorByReference();if(i.setUniform3fArray("specularColorUniform",d),i.setUniformf("specularPowerUniform",y),i.setUniformf("specular",p),i.isUniformUsed("ambientIntensityBF")){if(o=s.getBackfaceProperty(),u=o.getOpacity(),c=o.getAmbientColor(),l=o.getAmbient(),f=o.getDiffuseColor(),g=o.getDiffuse(),d=o.getSpecularColor(),p=o.getSpecular(),i.setUniformf("ambientIntensityBF",l),i.setUniformf("diffuseIntensityBF",g),i.setUniformf("opacityUniformBF",u),i.setUniform3fArray("ambientColorUniformBF",c),i.setUniform3fArray("diffuseColorUniformBF",f),h<1)return;i.setUniformf("specularIntensityBF",p),i.setUniform3fArray("specularColorUniformBF",d),i.setUniformf("specularPowerUniformBF",y)}},t.updateMaximumPointCellIds=(r,a)=>{var o,u,c,f;const s=e._openGLRenderer.getSelector();if(!s)return;if((u=(o=e.selectionWebGLIdsToVTKIds)==null?void 0:o.points)!=null&&u.length){const l=e.selectionWebGLIdsToVTKIds.points.length;s.setMaximumPointId(l-1)}if((f=(c=e.selectionWebGLIdsToVTKIds)==null?void 0:c.cells)!=null&&f.length){const l=e.selectionWebGLIdsToVTKIds.cells.length;s.setMaximumCellId(l-1)}s.getFieldAssociation()===Ps.FIELD_ASSOCIATION_POINTS&&(e.pointPicking=!0)},t.renderPieceStart=(r,a)=>{e.primitiveIDOffset=0,e.vertexIDOffset=0;const s=Yx(e._openGLRenderer);if(e.lastSelectionState!==s&&(e.selectionStateChanged.modified(),e.lastSelectionState=s),e._openGLRenderer.getSelector())switch(s){default:e._openGLRenderer.getSelector().renderProp(a)}t.updateBufferObjects(r,a),e.renderable.getColorTextureMap()&&e.internalColorTexture.activate(),e.lastBoundBO=null},t.renderPieceDraw=(r,a)=>{const s=a.getProperty().getRepresentation(),i=a.getProperty().getEdgeVisibility()&&s===rr.SURFACE,o=e._openGLRenderer.getSelector(),u=o&&o.getFieldAssociation()===Ps.FIELD_ASSOCIATION_POINTS&&(e.lastSelectionState===ct.ID_LOW24||e.lastSelectionState===ct.ID_HIGH24);for(let c=Ae.Start;c<Ae.End;c++)e.primitives[c].setPointPicking(u),e.primitives[c].getCABO().getElementCount()&&(e.drawingEdges=i&&(c===Ae.TrisEdges||c===Ae.TriStripsEdges),(!e.drawingEdges||!(e.renderDepth||e.lastSelectionState>=0))&&(e.lastBoundBO=e.primitives[c],e.primitiveIDOffset+=e.primitives[c].drawArrays(r,a,s,t),e.vertexIDOffset+=e.primitives[c].getCABO().getElementCount()))},t.renderPieceFinish=(r,a)=>{e.LastBoundBO&&e.LastBoundBO.getVAO().release(),e.renderable.getColorTextureMap()&&e.internalColorTexture.deactivate()},t.renderPiece=(r,a)=>{if(t.invokeEvent(Px),e.renderable.getStatic()||e.renderable.update(),e.currentInput=e.renderable.getInputData(),t.invokeEvent(Xx),!e.currentInput){bn("No input!");return}if(!e.currentInput.getPoints||!e.currentInput.getPoints().getNumberOfValues())return;const s=e.context,i=a.getProperty().getBackfaceCulling(),o=a.getProperty().getFrontfaceCulling();!i&&!o?e._openGLRenderWindow.disableCullFace():o?(e._openGLRenderWindow.enableCullFace(),s.cullFace(s.FRONT)):(e._openGLRenderWindow.enableCullFace(),s.cullFace(s.BACK)),t.renderPieceStart(r,a),t.renderPieceDraw(r,a),t.renderPieceFinish(r,a)},t.computeBounds=(r,a)=>{if(!t.getInput()){ro(e.bounds);return}e.bounds=t.getInput().getBounds()},t.updateBufferObjects=(r,a)=>{t.getNeedToRebuildBufferObjects(r,a)&&t.buildBufferObjects(r,a)},t.getNeedToRebuildBufferObjects=(r,a)=>{const s=e.VBOBuildTime.getMTime();return s<t.getMTime()||s<e.renderable.getMTime()||s<a.getMTime()||s<e.currentInput.getMTime()},t.buildBufferObjects=(r,a)=>{const s=e.currentInput;if(s===null)return;e.renderable.mapScalars(s,1);const i=e.renderable.getColorMapColors();e.haveCellScalars=!1;const o=e.renderable.getScalarMode();e.renderable.getScalarVisibility()&&(o===wa.USE_CELL_DATA||o===wa.USE_CELL_FIELD_DATA||o===wa.USE_FIELD_DATA||!s.getPointData().getScalars())&&o!==wa.USE_POINT_FIELD_DATA&&i&&(e.haveCellScalars=!0);let u=a.getProperty().getInterpolation()!==bc.FLAT?s.getPointData().getNormals():null;u===null&&s.getCellData().getNormals()&&(e.haveCellNormals=!0,u=s.getCellData().getNormals());const c=a.getProperty().getRepresentation();let f=s.getPointData().getTCoords();if(e.openGLActor.getActiveTextures()||(f=null),e.renderable.getColorCoordinates()){f=e.renderable.getColorCoordinates(),e.internalColorTexture||(e.internalColorTexture=In.newInstance({resizable:!0}));const g=e.internalColorTexture;g.setMinificationFilter(Nc.NEAREST),g.setMagnificationFilter(Nc.NEAREST),g.setWrapS(Gc.CLAMP_TO_EDGE),g.setWrapT(Gc.CLAMP_TO_EDGE),g.setOpenGLRenderWindow(e._openGLRenderWindow);const p=e.renderable.getColorTextureMap(),y=p.getExtent(),h=p.getPointData().getScalars();g.create2DFromRaw(y[1]-y[0]+1,y[3]-y[2]+1,h.getNumberOfComponents(),h.getDataType(),h.getData()),g.activate(),g.sendParameters(),g.deactivate()}const l=`${s.getMTime()}A${c}B${s.getMTime()}C${u?u.getMTime():1}D${i?i.getMTime():1}E${a.getProperty().getEdgeVisibility()}F${f?f.getMTime():1}`;if(e.VBOBuildString!==l){const p={points:s.getPoints(),normals:u,tcoords:f,colors:i,cellOffset:0,vertexOffset:0,haveCellScalars:e.haveCellScalars,haveCellNormals:e.haveCellNormals,customAttributes:e.renderable.getCustomShaderAttributes().map(d=>s.getPointData().getArrayByName(d))};e.renderable.getPopulateSelectionSettings()&&(e.selectionWebGLIdsToVTKIds={points:null,cells:null});const y=[{inRep:"verts",cells:s.getVerts()},{inRep:"lines",cells:s.getLines()},{inRep:"polys",cells:s.getPolys()},{inRep:"strips",cells:s.getStrips()},{inRep:"polys",cells:s.getPolys()},{inRep:"strips",cells:s.getStrips()}],h=a.getProperty().getEdgeVisibility()&&c===rr.SURFACE;for(let d=Ae.Start;d<Ae.End;d++)d!==Ae.TrisEdges&&d!==Ae.TriStripsEdges?(p.cellOffset+=e.primitives[d].getCABO().createVBO(y[d].cells,y[d].inRep,c,p,e.selectionWebGLIdsToVTKIds),p.vertexOffset+=e.primitives[d].getCABO().getElementCount()):h?e.primitives[d].getCABO().createVBO(y[d].cells,y[d].inRep,rr.WIREFRAME,{...p,tcoords:null,colors:null,haveCellScalars:!1,haveCellNormals:!1}):e.primitives[d].releaseGraphicsResources();e.renderable.getPopulateSelectionSettings()&&(e.renderable.setSelectionWebGLIdsToVTKIds(e.selectionWebGLIdsToVTKIds),t.updateMaximumPointCellIds()),e.VBOBuildTime.modified(),e.VBOBuildString=l}},t.getAllocatedGPUMemoryInBytes=()=>{let r=0;return e.primitives.forEach(a=>{r+=a.getAllocatedGPUMemoryInBytes()}),r}}const Qx={context:null,VBOBuildTime:0,VBOBuildString:null,primitives:null,primTypes:null,shaderRebuildString:null,tmpMat4:null,ambientColor:[],diffuseColor:[],specularColor:[],lightColor:[],lightDirection:[],lastHaveSeenDepthRequest:!1,haveSeenDepthRequest:!1,lastSelectionState:ct.MIN_KNOWN_PASS-1,selectionStateChanged:null,selectionWebGLIdsToVTKIds:null,pointPicking:!1};function Zx(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Qx,n),be.extend(t,e,n),us.implementReplaceShaderCoincidentOffset(t,e,n),us.implementBuildShadersWithReplacements(t,e,n),e.primitives=[],e.primTypes=Ae,e.tmpMat3=Qn(new Float64Array(9)),e.tmpMat4=le(new Float64Array(16));for(let r=Ae.Start;r<Ae.End;r++)e.primitives[r]=Mr.newInstance(),e.primitives[r].setPrimitiveType(r),e.primitives[r].set({lastLightComplexity:0,lastLightCount:0,lastSelectionPass:!1},!0);He(t,e,["context"]),e.VBOBuildTime={},qe(e.VBOBuildTime,{mtime:0}),e.selectionStateChanged={},qe(e.selectionStateChanged,{mtime:0}),qx(t,e)}const Jx=De(Zx,"vtkOpenGLPolyDataMapper");At("vtkMapper",Jx);const{ColorMode:e2,ScalarMode:Nn,GetArray:Xs}=ys;function t2(t,e){e.classHierarchy.push("vtkMapper2D"),t.createDefaultLookupTable=()=>{e.lookupTable=Wr.newInstance()},t.getColorModeAsString=()=>_.enumToString(e2,e.colorMode),t.setColorModeToDefault=()=>t.setColorMode(0),t.setColorModeToMapScalars=()=>t.setColorMode(1),t.setColorModeToDirectScalars=()=>t.setColorMode(2),t.getScalarModeAsString=()=>_.enumToString(Nn,e.scalarMode),t.setScalarModeToDefault=()=>t.setScalarMode(0),t.setScalarModeToUsePointData=()=>t.setScalarMode(1),t.setScalarModeToUseCellData=()=>t.setScalarMode(2),t.setScalarModeToUsePointFieldData=()=>t.setScalarMode(3),t.setScalarModeToUseCellFieldData=()=>t.setScalarMode(4),t.setScalarModeToUseFieldData=()=>t.setScalarMode(5),t.getAbstractScalars=(n,r,a,s,i)=>{if(!n||!e.scalarVisibility)return{scalars:null,cellFLag:!1};let o=null,u=!1;if(r===Nn.DEFAULT)o=n.getPointData().getScalars(),o||(o=n.getCellData().getScalars(),u=!0);else if(r===Nn.USE_POINT_DATA)o=n.getPointData().getScalars();else if(r===Nn.USE_CELL_DATA)o=n.getCellData().getScalars(),u=!0;else if(r===Nn.USE_POINT_FIELD_DATA){const c=n.getPointData();a===Xs.BY_ID?o=c.getArrayByIndex(s):o=c.getArrayByName(i)}else if(r===Nn.USE_CELL_FIELD_DATA){const c=n.getCellData();u=!0,a===Xs.BY_ID?o=c.getArrayByIndex(s):o=c.getArrayByName(i)}else if(r===Nn.USE_FIELD_DATA){const c=n.getFieldData();a===Xs.BY_ID?o=c.getArrayByIndex(s):o=c.getArrayByName(i)}return{scalars:o,cellFlag:u}},t.getLookupTable=()=>(e.lookupTable||t.createDefaultLookupTable(),e.lookupTable),t.getMTime=()=>{let n=e.mtime;if(e.lookupTable!==null){const r=e.lookupTable.getMTime();n=r>n?r:n}return n},t.mapScalars=(n,r)=>{const a=t.getAbstractScalars(n,e.scalarMode,e.arrayAccessMode,e.arrayId,e.colorByArrayName).scalars;if(!a){e.colorMapColors=null;return}const s=`${t.getMTime()}${a.getMTime()}${r}`;if(e.colorBuildString===s)return;e.useLookupTableScalarRange||t.getLookupTable().setRange(e.scalarRange[0],e.scalarRange[1]);const i=t.getLookupTable();i&&(i.build(),e.colorMapColors=i.mapScalars(a,e.colorMode,e.fieldDataTupleId)),e.colorBuildString=`${t.getMTime()}${a.getMTime()}${r}`},t.getPrimitiveCount=()=>{const n=t.getInputData();return{points:n.getPoints().getNumberOfValues()/3,verts:n.getVerts().getNumberOfValues()-n.getVerts().getNumberOfCells(),lines:n.getLines().getNumberOfValues()-2*n.getLines().getNumberOfCells(),triangles:n.getPolys().getNumberOfValues()-3*n.getPolys().getNumberOfCells()}}}const n2={static:!1,lookupTable:null,scalarVisibility:!1,scalarRange:[0,1],useLookupTableScalarRange:!1,colorMode:0,scalarMode:0,arrayAccessMode:1,renderTime:0,colorByArrayName:null,transformCoordinate:null,viewSpecificProperties:null,customShaderAttributes:[]};function og(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,n2,n),yl.extend(t,e,n),_.get(t,e,["colorMapColors"]),_.setGet(t,e,["arrayAccessMode","colorByArrayName","colorMode","lookupTable","renderTime","scalarMode","scalarVisibility","static","transformCoordinate","useLookupTableScalarRange","viewSpecificProperties","customShaderAttributes"]),_.setGetArray(t,e,["scalarRange"],2),e.viewSpecificProperties||(e.viewSpecificProperties={}),t2(t,e)}const r2=_.newInstance(og,"vtkMapper2D");var a2={newInstance:r2,extend:og},s2=`//VTK::System::Dec
- /*=========================================================================
- Program: Visualization Toolkit
- Module: vtkPolyData2DFS.glsl
- Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
- All rights reserved.
- See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
- This software is distributed WITHOUT ANY WARRANTY; without even
- the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- PURPOSE. See the above copyright notice for more information.
- =========================================================================*/
- uniform int PrimitiveIDOffset;
- // Texture coordinates
- //VTK::TCoord::Dec
- // Scalar coloring
- //VTK::Color::Dec
- // Depth Peeling
- //VTK::DepthPeeling::Dec
- // picking support
- //VTK::Picking::Dec
- // the output of this shader
- //VTK::Output::Dec
- // Apple Bug
- //VTK::PrimID::Dec
- void main()
- {
- // Apple Bug
- //VTK::PrimID::Impl
- //VTK::Color::Impl
- //VTK::TCoord::Impl
- //VTK::DepthPeeling::Impl
- //VTK::Picking::Impl
- if (gl_FragData[0].a <= 0.0)
- {
- discard;
- }
- }
- `,i2=`//VTK::System::Dec
- /*=========================================================================
- Program: Visualization Toolkit
- Module: vtkPolyData2DVS.glsl
- Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
- All rights reserved.
- See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
- This software is distributed WITHOUT ANY WARRANTY; without even
- the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- PURPOSE. See the above copyright notice for more information.
- =========================================================================*/
- // all variables that represent positions or directions have a suffix
- // indicating the coordinate system they are in. The possible values are
- // MC - Model Coordinates
- // WC - WC world coordinates
- // VC - View Coordinates
- // DC - Display Coordinates
- in vec4 vertexWC;
- // frag position in VC
- //VTK::PositionVC::Dec
- // material property values
- //VTK::Color::Dec
- // Texture coordinates
- //VTK::TCoord::Dec
- // Apple Bug
- //VTK::PrimID::Dec
- uniform mat4 WCVCMatrix; // World to view matrix
- void main()
- {
- // Apple Bug
- //VTK::PrimID::Impl
- gl_Position = WCVCMatrix*vertexWC;
- //VTK::TCoord::Impl
- //VTK::Color::Impl
- //VTK::PositionVC::Impl
- }
- `;const cg={BACKGROUND:0,FOREGROUND:1};var ug={DisplayLocation:cg};const{primTypes:kt}=Mr,{ScalarMode:_a}=a2,{vtkErrorMacro:Ea}=Jt,o2={type:"StartEvent"},c2={type:"EndEvent"};function u2(t,e){e.classHierarchy.push("vtkOpenGLPolyDataMapper2D"),t.buildPass=r=>{r&&(e.openGLActor2D=t.getFirstAncestorOfType("vtkOpenGLActor2D"),e._openGLRenderer=e.openGLActor2D.getFirstAncestorOfType("vtkOpenGLRenderer"),e._openGLRenderWindow=e._openGLRenderer.getParent(),e.openGLCamera=e._openGLRenderer.getViewNodeFor(e._openGLRenderer.getRenderable().getActiveCamera()))},t.overlayPass=r=>{r&&t.render()},t.getShaderTemplate=(r,a,s)=>{r.Vertex=i2,r.Fragment=s2,r.Geometry=""},t.render=()=>{const r=e._openGLRenderWindow.getContext();if(e.context!==r){e.context=r;for(let i=kt.Start;i<kt.End;i++)e.primitives[i].setOpenGLRenderWindow(e._openGLRenderWindow)}const a=e.openGLActor2D.getRenderable(),s=e._openGLRenderer.getRenderable();t.renderPiece(s,a)},t.renderPiece=(r,a)=>{if(t.invokeEvent(o2),e.renderable.getStatic()||e.renderable.update(),e.currentInput=e.renderable.getInputData(),t.invokeEvent(c2),!e.currentInput){Ea("No input!");return}!e.currentInput.getPoints||!e.currentInput.getPoints().getNumberOfValues()||(t.renderPieceStart(r,a),t.renderPieceDraw(r,a),t.renderPieceFinish(r,a))},t.renderPieceStart=(r,a)=>{if(e.primitiveIDOffset=0,e._openGLRenderer.getSelector())switch(e._openGLRenderer.getSelector().getCurrentPass()){default:e._openGLRenderer.getSelector().renderProp(a)}t.updateBufferObjects(r,a),e.lastBoundBO=null},t.getNeedToRebuildShaders=(r,a,s)=>r.getShaderSourceTime().getMTime()<e.renderable.getMTime()||r.getShaderSourceTime().getMTime()<e.currentInput.getMTime(),t.updateBufferObjects=(r,a)=>{t.getNeedToRebuildBufferObjects(r,a)&&t.buildBufferObjects(r,a)},t.getNeedToRebuildBufferObjects=(r,a)=>{const s=e.VBOBuildTime.getMTime();return!!(s<t.getMTime()||s<e._openGLRenderWindow.getMTime()||s<e.renderable.getMTime()||s<a.getMTime()||s<e.currentInput.getMTime()||e.renderable.getTransformCoordinate()&&s<r.getMTime())},t.buildBufferObjects=(r,a)=>{const s=e.currentInput;if(s===null)return;e.renderable.mapScalars(s,a.getProperty().getOpacity());const i=e.renderable.getColorMapColors();e.haveCellScalars=!1;const o=e.renderable.getScalarMode();e.renderable.getScalarVisibility()&&(o===_a.USE_CELL_DATA||o===_a.USE_CELL_FIELD_DATA||o===_a.USE_FIELD_DATA||!s.getPointData().getScalars())&&o!==_a.USE_POINT_FIELD_DATA&&i&&(e.haveCellScalars=!0);const u=a.getProperty().getRepresentation();let c=s.getPointData().getTCoords();e.openGLActor2D.getActiveTextures()||(c=null);const f=e.renderable.getTransformCoordinate(),g=r.getRenderWindow().getViews()[0].getViewportSize(r),p=`${s.getMTime()}A${u}B${s.getMTime()}C${i?i.getMTime():1}D${c?c.getMTime():1}E${f?r.getMTime():1}F${g}`;if(e.VBOBuildString!==p){let y=s.getPoints();if(f){const d=is.newInstance(),x=y.getNumberOfPoints();d.setNumberOfPoints(x);const S=[];for(let v=0;v<x;++v){y.getPoint(v,S),f.setValue(S);const T=f.getComputedDoubleViewportValue(r);d.setPoint(v,T[0],T[1],0)}y=d}const h={points:y,tcoords:c,colors:i,cellOffset:0,haveCellScalars:e.haveCellSCalars,customAttributes:e.renderable.getCustomShaderAttributes().map(d=>s.getPointData().getArrayByName(d))};h.cellOffset+=e.primitives[kt.Points].getCABO().createVBO(s.getVerts(),"verts",u,h),h.cellOffset+=e.primitives[kt.Lines].getCABO().createVBO(s.getLines(),"lines",u,h),h.cellOffset+=e.primitives[kt.Tris].getCABO().createVBO(s.getPolys(),"polys",u,h),h.cellOffset+=e.primitives[kt.TriStrips].getCABO().createVBO(s.getStrips(),"strips",u,h),e.VBOBuildTime.modified(),e.VBOBuildString=p}},t.renderPieceDraw=(r,a)=>{const s=a.getProperty().getRepresentation();e.context.depthMask(!0);for(let o=kt.Start;o<kt.End;o++)e.primitives[o].getCABO().getElementCount()&&(e.lastBoundBO=e.primitives[o],e.primitiveIDOffset+=e.primitives[o].drawArrays(r,a,s,t))},t.renderPieceFinish=(r,a)=>{e.lastBoundBO&&e.lastBoundBO.getVAO().release()},t.replaceShaderValues=(r,a,s)=>{t.replaceShaderColor(r,a,s),t.replaceShaderTCoord(r,a,s),t.replaceShaderPicking(r,a,s),t.replaceShaderPositionVC(r,a,s)},t.replaceShaderColor=(r,a,s)=>{let i=r.Vertex,o=r.Geometry,u=r.Fragment;e.haveCellScalars&&(u=z.substitute(u,"//VTK::Color::Dec",["uniform samplerBuffer texture1;"]).result,u=z.substitute(u,"//VTK::Color::Impl",["gl_FragData[0] = texelFetchBuffer(texture1, gl_PrimitiveID + PrimitiveIDOffset);"]).result),e.lastBoundBO.getCABO().getColorComponents()!==0?(i=z.substitute(i,"//VTK::Color::Dec",["in vec4 diffuseColor;","out vec4 fcolorVSOutput;"]).result,i=z.substitute(i,"//VTK::Color::Impl",["fcolorVSOutput = diffuseColor;"]).result,o=z.substitute(o,"//VTK::Color::Dec",[`in vec4 fcolorVSOutput[];
- `,"out vec4 fcolorGSOutput;"]).result,o=z.substitute(o,"//VTK::Color::Impl",["fcolorGSOutput = fcolorVSOutput[i];"]).result,u=z.substitute(u,"//VTK::Color::Dec",["in vec4 fcolorVSOutput;"]).result,u=z.substitute(u,"//VTK::Color::Impl",["gl_FragData[0] = fcolorVSOutput;"]).result):(u=z.substitute(u,"//VTK::Color::Dec",["uniform vec4 diffuseColor;"]).result,u=z.substitute(u,"//VTK::Color::Impl",["gl_FragData[0] = diffuseColor;"]).result),r.Vertex=i,r.Geometry=o,r.Fragment=u},t.replaceShaderTCoord=(r,a,s)=>{if(e.lastBoundBO.getCABO().getTCoordOffset()){let i=r.Vertex,o=r.Geometry,u=r.Fragment;const c=e.lastBoundBO.getCABO().getTCoordComponents();c===1?(i=z.substitute(i,"//VTK::TCoord::Dec",["in float tcoordMC;","out float tcoordVCVSOutput;"]).result,i=z.substitute(i,"//VTK::TCoord::Impl",["tcoordVCVSOutput = tcoordMC;"]).result,o=z.substitute(o,"//VTK::TCoord::Dec",[`in float tcoordVCVSOutput[];
- `,"out float tcoordVCGSOutput;"]).result,o=z.substitute(o,["//VTK::TCoord::Impl","tcoordVCGSOutput = tcoordVCVSOutput[i];"]).result,u=z.substitute(u,"//VTK::TCoord::Dec",["in float tcoordVCVSOutput;","uniform sampler2D texture1;"]).result,u=z.substitute(u,"//VTK::TCoord::Impl",["gl_FragData[0] = gl_FragData[0]*texture2D(texture1, vec2(tcoordVCVSOutput,0));"]).result):c===2&&(i=z.substitute(i,"//VTK::TCoord::Dec",["in vec2 tcoordMC;","out vec2 tcoordVCVSOutput;"]).result,i=z.substitute(i,"//VTK::TCoord::Impl",["tcoordVCVSOutput = tcoordMC;"]).result,o=z.substitute(o,"//VTK::TCoord::Dec",[`in vec2 tcoordVCVSOutput[];
- `,"out vec2 tcoordVCGSOutput;"]).result,o=z.substitute(o,"//VTK::TCoord::Impl",["tcoordVCGSOutput = tcoordVCVSOutput[i];"]).result,u=z.substitute(u,"//VTK::TCoord::Dec",["in vec2 tcoordVCVSOutput;","uniform sampler2D texture1;"]).result,u=z.substitute(u,"//VTK::TCoord::Impl",["gl_FragData[0] = gl_FragData[0]*texture2D(texture1, tcoordVCVSOutput.st);"]).result),e.haveCellScalars&&(o=z.substitute(o,"//VTK::PrimID::Impl",["gl_PrimitiveID = gl_PrimitiveIDIn;"]).result),r.Vertex=i,r.Geometry=o,r.Fragment=u}},t.replaceShaderPicking=(r,a,s)=>{let i=r.Fragment;i=z.substitute(i,"//VTK::Picking::Dec",["uniform vec3 mapperIndex;","uniform int picking;"]).result,i=z.substitute(i,"//VTK::Picking::Impl"," gl_FragData[0] = picking != 0 ? vec4(mapperIndex,1.0) : gl_FragData[0];").result,r.Fragment=i},t.replaceShaderPositionVC=(r,a,s)=>{e.lastBoundBO.replaceShaderPositionVC(r,a,s)},t.invokeShaderCallbacks=(r,a,s)=>{const i=e.renderable.getViewSpecificProperties().ShadersCallbacks;i&&i.forEach(o=>{o.callback(o.userData,r,a,s)})},t.setMapperShaderParameters=(r,a,s)=>{if(r.getProgram().isUniformUsed("PrimitiveIDOffset")&&r.getProgram().setUniformi("PrimitiveIDOffset",e.primitiveIDOffset),r.getProgram().isAttributeUsed("vertexWC")&&(r.getVAO().addAttributeArray(r.getProgram(),r.getCABO(),"vertexWC",r.getCABO().getVertexOffset(),r.getCABO().getStride(),e.context.FLOAT,3,!1)||Ea("Error setting vertexWC in shader VAO.")),r.getCABO().getElementCount()&&(e.VBOBuildTime.getMTime()>r.getAttributeUpdateTime().getMTime()||r.getShaderSourceTime().getMTime()>r.getAttributeUpdateTime().getMTime())){e.renderable.getCustomShaderAttributes().forEach((u,c)=>{r.getProgram().isAttributeUsed(`${u}MC`)&&(r.getVAO().addAttributeArray(r.getProgram(),r.getCABO(),`${u}MC`,r.getCABO().getCustomData()[c].offset,r.getCABO().getStride(),e.context.FLOAT,r.getCABO().getCustomData()[c].components,!1)||Ea(`Error setting ${u}MC in shader VAO.`))}),r.getProgram().isAttributeUsed("tcoordMC")&&r.getCABO().getTCoordOffset()?r.getVAO().addAttributeArray(r.getProgram(),r.getCABO(),"tcoordMC",r.getCABO().getTCoordOffset(),r.getCABO().getStride(),e.context.FLOAT,r.getCABO().getTCoordComponents(),!1)||Ea("Error setting tcoordMC in shader VAO."):r.getVAO().removeAttributeArray("tcoordMC"),e.internalColorTexture&&r.getProgram().isUniformUsed("texture1")&&r.getProgram().setUniformi("texture1",e.internalColorTexture.getTextureUnit());const i=e.openGLActor2D.getActiveTextures();if(i)for(let u=0;u<i.length;++u){const f=i[u].getTextureUnit(),l=`texture${f+1}`;r.getProgram().isUniformUsed(l)&&r.getProgram().setUniformi(l,f)}r.setMapperShaderParameters(a,s,e._openGLRenderer.getTiledSizeAndOrigin());const o=e._openGLRenderer.getSelector();r.getProgram().setUniform3fArray("mapperIndex",o?o.getPropColorValue():[0,0,0]),r.getProgram().setUniformi("picking",o?o.getCurrentPass()+1:0)}},t.setPropertyShaderParameters=(r,a,s)=>{const i=e.renderable.getColorMapColors();if(!i||i.getNumberOfComponents()===0){const o=r.getProgram(),u=s.getProperty(),c=u.getOpacity(),f=u.getColor(),l=[f[0],f[1],f[2],c];o.setUniform4f("diffuseColor",l)}},t.setLightingShaderParameters=(r,a,s)=>{};function n(r,a,s){return a.identity(s),r.reduce((i,o,u)=>u===0?o?a.copy(i,o):a.identity(i):o?a.multiply(i,i,o):i,s)}t.setCameraShaderParameters=(r,a,s)=>{const i=r.getProgram(),u=r.getCABO().getCoordShiftAndScaleEnabled()?r.getCABO().getInverseShiftAndScaleMatrix():null,f=a.getRenderWindow().getViews()[0].getViewportSize(a),l=a.getViewport(),g=s.getActualPositionCoordinate().getComputedDoubleViewportValue(a),p=[0,0,1,1],y=[0,0,1,1];if(y[0]=l[0]>=p[0]?l[0]:p[0],y[1]=l[1]>=p[1]?l[1]:p[1],y[2]=l[2]<=p[2]?l[2]:p[2],y[3]=l[3]<=p[3]?l[3]:p[3],y[0]>=y[2]||y[1]>=y[3])return;f[0]=pa(f[0]*(y[2]-y[0])/(l[2]-l[0])),f[1]=pa(f[1]*(y[3]-y[1])/(l[3]-l[1]));const h=e._openGLRenderer.getParent().getSize(),d=pa(g[0]-(y[0]-l[0])*h[0]),x=pa(g[1]-(y[1]-l[1])*h[1]),S=-d;let v=-d+f[0];const T=-x;let w=-x+f[1];S===v&&(v=S+1),T===w&&(w=T+1);const C=le(new Float64Array(16));C[0]=2/(v-S),C[1*4+1]=2/(w-T),C[0*4+3]=-1*(v+S)/(v-S),C[1*4+3]=-1*(w+T)/(w-T),C[2*4+2]=0,C[2*4+3]=s.getProperty().getDisplayLocation()===cg.FOREGROUND?-1:1,C[3*4+3]=1,Ve(C,C),i.setUniformMatrix("WCVCMatrix",n([C,u],fi,e.tmpMat4))},t.getAllocatedGPUMemoryInBytes=()=>{let r=0;return e.primitives.forEach(a=>{r+=a.getAllocatedGPUMemoryInBytes()}),r}}const f2={context:null,VBOBuildTime:0,VBOBuildString:null,primitives:null,primTypes:null,shaderRebuildString:null};function l2(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,f2,n),be.extend(t,e,n),us.implementReplaceShaderCoincidentOffset(t,e,n),us.implementBuildShadersWithReplacements(t,e,n),e.primitives=[],e.primTypes=kt,e.tmpMat4=le(new Float64Array(16));for(let r=kt.Start;r<kt.End;r++)e.primitives[r]=Mr.newInstance(),e.primitives[r].setPrimitiveType(r),e.primitives[r].set({lastLightComplexity:0,lastLightCount:0,lastSelectionPass:!1},!0);He(t,e,["context"]),e.VBOBuildTime={},qe(e.VBOBuildTime,{mtime:0}),u2(t,e)}const g2=De(l2,"vtkOpenGLPolyDataMapper2D");At("vtkMapper2D",g2);const{VectorMode:p2}=Ts;function Is(t,e){t.strokeStyle=e.strokeColor,t.lineWidth=e.strokeSize,t.fillStyle=e.fontColor,t.font=`${e.fontStyle} ${e.fontSize}px ${e.fontFamily}`}function fg(t,e){return n=>{const r=n.getLastSize(),a=(r[0]/700)**.8,s=(r[1]/700)**.8,i=Math.min(a,s),o=n.getAxisTextStyle(),u=n.getTickTextStyle();Object.assign(o,e.axisTextStyle),Object.assign(u,e.tickTextStyle),o.fontSize=Math.max(24*i,12),n.getLastAspectRatio()>1?u.fontSize=Math.max(20*i,10):u.fontSize=Math.max(16*i,10);const c=n.updateTextureAtlas();n.setTopTitle(!1);const f=n.getBoxSizeByReference();if(n.getLastAspectRatio()>1)n.setTickLabelPixelOffset(.3*u.fontSize),c.titleWidth<=c.tickWidth+n.getTickLabelPixelOffset()+.8*u.fontSize?(n.setTopTitle(!0),n.setAxisTitlePixelOffset(.2*u.fontSize),f[0]=2*(c.tickWidth+n.getTickLabelPixelOffset()+.8*u.fontSize)/r[0],n.setBoxPosition([.98-f[0],-.92])):(n.setAxisTitlePixelOffset(.2*u.fontSize),f[0]=2*(c.titleHeight+n.getAxisTitlePixelOffset()+c.tickWidth+n.getTickLabelPixelOffset()+.8*u.fontSize)/r[0],n.setBoxPosition([.99-f[0],-.92])),f[1]=Math.max(1.2,Math.min(1.84/s,1.84));else{n.setAxisTitlePixelOffset(1.2*u.fontSize),n.setTickLabelPixelOffset(.1*u.fontSize);const l=2*(.8*u.fontSize+c.titleHeight+n.getAxisTitlePixelOffset())/r[1],g=2*c.tickWidth/r[0];f[0]=Math.min(1.9,Math.max(1.4,1.4*g*(n.getTicks().length+3))),f[1]=l,n.setBoxPosition([-.5*f[0],-.97])}n.recomputeBarSegments(c)}}function lg(t,e){return n=>{const r=n.getLastTickBounds(),a=ps().domain([r[0],r[1]]),s=a.ticks(5),i=a.tickFormat(5);n.setTicks(s),n.setTickStrings(s.map(i))}}function h2(t,e){e.classHierarchy.push("vtkScalarBarActorHelper"),t.setRenderable=a=>{e.renderable!==a&&(e.renderable=a,e.barActor.setProperty(a.getProperty()),e.barActor.setParentProp(a),e.barActor.setCoordinateSystemToDisplay(),e.tmActor.setProperty(a.getProperty()),e.tmActor.setParentProp(a),e.tmActor.setCoordinateSystemToDisplay(),e.generateTicks=a.generateTicks,e.axisTextStyle={...a.getAxisTextStyle()},e.tickTextStyle={...a.getTickTextStyle()},t.modified())},t.updateAPISpecificData=(a,s,i)=>{(e.lastSize[0]!==a[0]||e.lastSize[1]!==a[1])&&(e.lastSize[0]=a[0],e.lastSize[1]=a[1],e.lastAspectRatio=a[0]/a[1],e.forceUpdate=!0);const o=e.renderable.getScalarsToColors();if(!(!o||!e.renderable.getVisibility())&&(e.barMapper.setLookupTable(o),e.camera=s,e.renderWindow=i,e.forceUpdate||Math.max(o.getMTime(),t.getMTime(),e.renderable.getMTime())>e.lastRebuildTime.getMTime())){const u=o.getMappingRange();if(e.lastTickBounds=[...u],e.renderable.getGenerateTicks()(t),e.renderable.getAutomated())e.renderable.getAutoLayout()(t);else{e.axisTextStyle={...e.renderable.getAxisTextStyle()},e.tickTextStyle={...e.renderable.getTickTextStyle()},e.barPosition=[...e.renderable.getBarPosition()],e.barSize=[...e.renderable.getBarSize()],e.boxPosition=[...e.renderable.getBoxPosition()],e.boxSize=[...e.renderable.getBoxSize()],e.axisTitlePixelOffset=e.renderable.getAxisTitlePixelOffset(),e.tickLabelPixelOffset=e.renderable.getTickLabelPixelOffset();const c=t.updateTextureAtlas();t.recomputeBarSegments(c)}t.updatePolyDataForLabels(),t.updatePolyDataForBarSegments(),e.lastRebuildTime.modified(),e.forceUpdate=!1}},t.updateTextureAtlas=()=>{e.tmContext.textBaseline="bottom",e.tmContext.textAlign="left";const a={},s=new Map;let i=0,o=1;Is(e.tmContext,e.axisTextStyle);let u=e.tmContext.measureText(e.renderable.getAxisLabel()),c={height:u.actualBoundingBoxAscent+2,startingHeight:o,width:u.width+2,textStyle:e.axisTextStyle};s.set(e.renderable.getAxisLabel(),c),o+=c.height,i=c.width,a.titleWidth=c.width,a.titleHeight=c.height,a.tickWidth=0,a.tickHeight=0,Is(e.tmContext,e.tickTextStyle);const f=[...t.getTickStrings(),"NaN","Below","Above"];for(let l=0;l<f.length;l++)s.has(f[l])||(u=e.tmContext.measureText(f[l]),c={height:u.actualBoundingBoxAscent+2,startingHeight:o,width:u.width+2,textStyle:e.tickTextStyle},s.set(f[l],c),o+=c.height,i<c.width&&(i=c.width),a.tickWidth<c.width&&(a.tickWidth=c.width),a.tickHeight<c.height&&(a.tickHeight=c.height));return i=Ut(i),o=Ut(o),s.forEach(l=>{l.tcoords=[0,(o-l.startingHeight-l.height)/o,l.width/i,(o-l.startingHeight-l.height)/o,l.width/i,(o-l.startingHeight)/o,0,(o-l.startingHeight)/o]}),e.tmCanvas.width=i,e.tmCanvas.height=o,e.tmContext.textBaseline="bottom",e.tmContext.textAlign="left",e.tmContext.clearRect(0,0,i,o),s.forEach((l,g)=>{Is(e.tmContext,l.textStyle),e.tmContext.fillText(g,1,l.startingHeight+l.height-1)}),e.tmTexture.setCanvas(e.tmCanvas),e.tmTexture.modified(),e._tmAtlas=s,a},t.computeBarSize=a=>{e.vertical=e.boxSize[1]>e.boxSize[0];const s=2*a.tickHeight/e.lastSize[1],i=[1,1];if(e.vertical){const o=2*(a.tickWidth+e.tickLabelPixelOffset)/e.lastSize[0];if(e.topTitle){const u=2*(a.titleHeight+e.axisTitlePixelOffset)/e.lastSize[1];e.barSize[0]=e.boxSize[0]-o,e.barSize[1]=e.boxSize[1]-u}else{const u=2*(a.titleHeight+e.axisTitlePixelOffset)/e.lastSize[0];e.barSize[0]=e.boxSize[0]-u-o,e.barSize[1]=e.boxSize[1]}e.barPosition[0]=e.boxPosition[0]+o,e.barPosition[1]=e.boxPosition[1],i[1]=s}else{const o=(2*a.tickWidth-8)/e.lastSize[0],u=2*(a.titleHeight+e.axisTitlePixelOffset)/e.lastSize[1];e.barSize[0]=e.boxSize[0],e.barPosition[0]=e.boxPosition[0],e.barSize[1]=e.boxSize[1]-u,e.barPosition[1]=e.boxPosition[1],i[0]=o}return i},t.recomputeBarSegments=a=>{var g,p,y,h;const s=t.computeBarSize(a);e.barSegments=[];const i=[0,0],o=e.vertical?1:0,u=e.vertical?.01:.02;function c(d,x){e.barSegments.push({corners:[[...i],[i[0]+s[0],i[1]],[i[0]+s[0],i[1]+s[1]],[i[0],i[1]+s[1]]],scalars:x,title:d}),i[o]+=s[o]+u}e.renderable.getDrawNanAnnotation()&&e.renderable.getScalarsToColors().getNanColor()&&c("NaN",[NaN,NaN,NaN,NaN]),e.renderable.getDrawBelowRangeSwatch()&&((p=(g=e.renderable.getScalarsToColors()).getUseBelowRangeColor)!=null&&p.call(g))&&c("Below",[-.1,-.1,-.1,-.1]);const f=(h=(y=e.renderable.getScalarsToColors()).getUseAboveRangeColor)==null?void 0:h.call(y);i[o]+=u;const l=s[o];s[o]=f?1-2*u-s[o]-i[o]:1-u-i[o],c("ticks",e.vertical?[0,0,.995,.995]:[0,.995,.995,0]),e.renderable.getDrawAboveRangeSwatch()&&f&&(s[o]=l,i[o]+=u,c("Above",[1.1,1.1,1.1,1.1]))};const n=new Float64Array(3);t.createPolyDataForOneLabel=(a,s,i,o,u,c)=>{const f=e._tmAtlas.get(a);if(!f)return;let l=c.ptIdx,g=c.cellIdx;n[0]=(.5*s[0]+.5)*e.lastSize[0],n[1]=(.5*s[1]+.5)*e.lastSize[1],n[2]=s[2],n[0]+=u[0],n[1]+=u[1];const p=[],y=o==="vertical"?[1,0]:[0,1];o==="vertical"?(p[0]=f.width,p[1]=-f.height,i[0]==="middle"?n[1]-=f.width/2:i[0]==="right"&&(n[1]-=f.width),i[1]==="middle"?n[0]+=f.height/2:i[1]==="top"&&(n[0]+=f.height)):(p[0]=f.width,p[1]=f.height,i[0]==="middle"?n[0]-=f.width/2:i[0]==="right"&&(n[0]-=f.width),i[1]==="middle"?n[1]-=f.height/2:i[1]==="top"&&(n[1]-=f.height)),c.points[l*3]=n[0],c.points[l*3+1]=n[1],c.points[l*3+2]=n[2],c.tcoords[l*2]=f.tcoords[0],c.tcoords[l*2+1]=f.tcoords[1],l++,n[y[0]]+=p[0],c.points[l*3]=n[0],c.points[l*3+1]=n[1],c.points[l*3+2]=n[2],c.tcoords[l*2]=f.tcoords[2],c.tcoords[l*2+1]=f.tcoords[3],l++,n[y[1]]+=p[1],c.points[l*3]=n[0],c.points[l*3+1]=n[1],c.points[l*3+2]=n[2],c.tcoords[l*2]=f.tcoords[4],c.tcoords[l*2+1]=f.tcoords[5],l++,n[y[0]]-=p[0],c.points[l*3]=n[0],c.points[l*3+1]=n[1],c.points[l*3+2]=n[2],c.tcoords[l*2]=f.tcoords[6],c.tcoords[l*2+1]=f.tcoords[7],l++,c.polys[g*4]=3,c.polys[g*4+1]=l-4,c.polys[g*4+2]=l-3,c.polys[g*4+3]=l-2,g++,c.polys[g*4]=3,c.polys[g*4+1]=l-4,c.polys[g*4+2]=l-2,c.polys[g*4+3]=l-1,c.ptIdx+=4,c.cellIdx+=2};const r=new Float64Array(3);t.updatePolyDataForLabels=()=>{const a=t.getTickStrings().length+e.barSegments.length,s=a*4,i=a*2,o=new Float64Array(s*3),u=new Uint16Array(i*4),c=new Float32Array(s*2),f={ptIdx:0,cellIdx:0,polys:u,points:o,tcoords:c},l=e.vertical?0:1,g=e.vertical?1:0;r[2]=-.99;const p=e.vertical?["right","middle"]:["middle","bottom"];let y=[0,1];const h=[0,0];e.vertical?(h[0]=-e.tickLabelPixelOffset,e.topTitle?(r[0]=e.boxPosition[0]+.5*e.boxSize[0],r[1]=e.barPosition[1]+e.barSize[1],t.createPolyDataForOneLabel(e.renderable.getAxisLabel(),r,["middle","bottom"],"horizontal",[0,e.axisTitlePixelOffset],f)):(r[0]=e.barPosition[0]+e.barSize[0],r[1]=e.barPosition[1]+.5*e.barSize[1],t.createPolyDataForOneLabel(e.renderable.getAxisLabel(),r,["middle","top"],"vertical",[e.axisTitlePixelOffset,0],f)),y=[-1,0]):(h[1]=e.tickLabelPixelOffset,r[0]=e.barPosition[0]+.5*e.barSize[0],r[1]=e.barPosition[1]+e.barSize[1],t.createPolyDataForOneLabel(e.renderable.getAxisLabel(),r,["middle","bottom"],"horizontal",[0,e.axisTitlePixelOffset],f)),r[l]=e.barPosition[l]+(.5*y[l]+.5)*e.barSize[l],r[g]=e.barPosition[g]+e.barSize[g]*.5;let d=null;for(let C=0;C<e.barSegments.length;C++){const R=e.barSegments[C];R.title==="ticks"?d=R:(r[g]=e.barPosition[g]+.5*e.barSize[g]*(R.corners[2][g]+R.corners[0][g]),t.createPolyDataForOneLabel(R.title,r,p,"horizontal",h,f))}const x=e.barPosition[g]+e.barSize[g]*d.corners[0][g],S=e.barSize[g]*(d.corners[2][g]-d.corners[0][g]),v=t.getTicks(),T=t.getTickStrings();for(let C=0;C<v.length;C++){const R=(v[C]-e.lastTickBounds[0])/(e.lastTickBounds[1]-e.lastTickBounds[0]);r[g]=x+S*R,t.createPolyDataForOneLabel(T[C],r,p,"horizontal",h,f)}const w=_e.newInstance({numberOfComponents:2,values:c,name:"TextureCoordinates"});e.tmPolyData.getPointData().setTCoords(w),e.tmPolyData.getPoints().setData(o,3),e.tmPolyData.getPoints().modified(),e.tmPolyData.getPolys().setData(u,1),e.tmPolyData.getPolys().modified(),e.tmPolyData.modified()},t.updatePolyDataForBarSegments=()=>{var h,d;const a=e.renderable.getScalarsToColors();let s=0;e.renderable.getDrawNanAnnotation()&&a.getNanColor()&&(s+=1),e.renderable.getDrawBelowRangeSwatch()&&((h=a.getUseBelowRangeColor)!=null&&h.call(a))&&(s+=1),e.renderable.getDrawAboveRangeSwatch()&&((d=a.getUseAboveRangeColor)!=null&&d.call(a))&&(s+=1);const i=4*(1+s),o=i;let u=1;a.getVectorMode()===p2.COMPONENT&&(u=a.getVectorComponent()+1);const c=new Float64Array(i*3),f=new Uint16Array(o*5),l=new Float32Array(i*u);let g=0,p=0;for(let x=0;x<e.barSegments.length;x++){const S=e.barSegments[x];for(let v=0;v<4;v++){r[0]=e.barPosition[0]+S.corners[v][0]*e.barSize[0],r[1]=e.barPosition[1]+S.corners[v][1]*e.barSize[1],c[g*3]=(.5*r[0]+.5)*e.lastSize[0],c[g*3+1]=(.5*r[1]+.5)*e.lastSize[1],c[g*3+2]=r[2];for(let T=0;T<u;T++)l[g*u+T]=e.lastTickBounds[0]+S.scalars[v]*(e.lastTickBounds[1]-e.lastTickBounds[0]);g++}f[p*5]=4,f[p*5+1]=g-4,f[p*5+2]=g-3,f[p*5+3]=g-2,f[p*5+4]=g-1,p++}const y=_e.newInstance({numberOfComponents:u,values:l,name:"Scalars"});e.polyData.getPointData().setScalars(y),e.polyData.getPoints().setData(c,3),e.polyData.getPoints().modified(),e.polyData.getPolys().setData(f,1),e.polyData.getPolys().modified(),e.polyData.modified()}}const d2=_.newInstance(function(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{renderable:null};Object.assign(e,{},n),_.obj(t,e),_.setGet(t,e,["axisTitlePixelOffset","tickLabelPixelOffset","renderable","topTitle","ticks","tickStrings"]),_.get(t,e,["lastSize","lastAspectRatio","lastTickBounds","axisTextStyle","tickTextStyle","barActor","tmActor"]),_.getArray(t,e,["boxPosition","boxSize"]),_.setArray(t,e,["boxPosition","boxSize"],2),e.forceUpdate=!1,e.lastRebuildTime={},_.obj(e.lastRebuildTime,{mtime:0}),e.lastSize=[-1,-1],e.tmCanvas=document.createElement("canvas"),e.tmContext=e.tmCanvas.getContext("2d"),e._tmAtlas=new Map,e.barMapper=Wt.newInstance(),e.barMapper.setInterpolateScalarsBeforeMapping(!0),e.barMapper.setUseLookupTableScalarRange(!0),e.polyData=zt.newInstance(),e.barMapper.setInputData(e.polyData),e.barActor=Nt.newInstance(),e.barActor.setMapper(e.barMapper),e.tmPolyData=zt.newInstance(),e.tmMapper=Wt.newInstance(),e.tmMapper.setInputData(e.tmPolyData),e.tmTexture=Ss.newInstance({resizable:!0}),e.tmTexture.setInterpolate(!1),e.tmActor=Nt.newInstance({parentProp:t}),e.tmActor.setMapper(e.tmMapper),e.tmActor.addTexture(e.tmTexture),e.barPosition=[0,0],e.barSize=[0,0],e.boxPosition=[.88,-.92],e.boxSize=[.1,1.1],e.lastTickBounds=[],h2(t,e)},"vtkScalarBarActorHelper");function v2(t,e){e.classHierarchy.push("vtkScalarBarActor"),t.setTickTextStyle=n=>{e.tickTextStyle={...e.tickTextStyle,...n},t.modified()},t.setAxisTextStyle=n=>{e.axisTextStyle={...e.axisTextStyle,...n},t.modified()},t.resetAutoLayoutToDefault=()=>{t.setAutoLayout(fg(t,e))},t.resetGenerateTicksToDefault=()=>{t.setGenerateTicks(lg())}}function y2(t){return{automated:!0,autoLayout:null,axisLabel:"Scalar Value",barPosition:[0,0],barSize:[0,0],boxPosition:[.88,-.92],boxSize:[.1,1.1],scalarToColors:null,axisTitlePixelOffset:36,axisTextStyle:{fontColor:"white",fontStyle:"normal",fontSize:18,fontFamily:"serif"},tickLabelPixelOffset:14,tickTextStyle:{fontColor:"white",fontStyle:"normal",fontSize:14,fontFamily:"serif"},generateTicks:null,drawNanAnnotation:!0,drawBelowRangeSwatch:!0,drawAboveRangeSwatch:!0,...t}}function gg(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,y2(n)),e.autoLayout||(e.autoLayout=fg(t,e)),e.generateTicks||(e.generateTicks=lg()),Nt.extend(t,e,n),t.getProperty().setDiffuse(0),t.getProperty().setAmbient(1),_.setGet(t,e,["automated","autoLayout","axisTitlePixelOffset","axisLabel","scalarsToColors","tickLabelPixelOffset","generateTicks","drawNanAnnotation","drawBelowRangeSwatch","drawAboveRangeSwatch"]),_.get(t,e,["axisTextStyle","tickTextStyle"]),_.getArray(t,e,["barPosition","barSize","boxPosition","boxSize"]),_.setArray(t,e,["barPosition","barSize","boxPosition","boxSize"],2),v2(t,e)}const T2=_.newInstance(gg,"vtkScalarBarActor");var xo={newInstance:T2,extend:gg,newScalarBarActorHelper:d2};function x2(t,e){e.classHierarchy.push("vtkOpenGLScalarBarActor"),t.buildPass=n=>{n&&(e._openGLRenderer=t.getFirstAncestorOfType("vtkOpenGLRenderer"),e._openGLRenderWindow=e._openGLRenderer.getParent(),e.scalarBarActorHelper.getRenderable()||e.scalarBarActorHelper.setRenderable(e.renderable),t.prepareNodes(),t.addMissingNode(e.scalarBarActorHelper.getBarActor()),t.addMissingNode(e.scalarBarActorHelper.getTmActor()),t.removeUnusedNodes())},t.opaquePass=(n,r)=>{if(n){const a=e._openGLRenderer?e._openGLRenderer.getRenderable().getActiveCamera():null,s=e._openGLRenderer.getTiledSizeAndOrigin();e.scalarBarActorHelper.updateAPISpecificData([s.usize,s.vsize],a,e._openGLRenderWindow.getRenderable())}}}const S2={};function C2(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,S2,n),be.extend(t,e,n),e.scalarBarActorHelper=xo.newScalarBarActorHelper(),x2(t,e)}const w2=De(C2,"vtkOpenGLScalarBarActor");At("vtkScalarBarActor",w2);const{vtkErrorMacro:$c}=Jt;function _2(t,e){e.classHierarchy.push("vtkOpenGLSkybox"),t.buildPass=n=>{if(n){e._openGLRenderer=t.getFirstAncestorOfType("vtkOpenGLRenderer"),e._openGLRenderWindow=e._openGLRenderer.getParent(),e.context=e._openGLRenderWindow.getContext(),e.tris.setOpenGLRenderWindow(e._openGLRenderWindow),e.openGLTexture.setOpenGLRenderWindow(e._openGLRenderWindow);const r=e._openGLRenderer.getRenderable();e.openGLCamera=e._openGLRenderer.getViewNodeFor(r.getActiveCamera())}},t.queryPass=(n,r)=>{if(n){if(!e.renderable||!e.renderable.getVisibility())return;r.incrementOpaqueActorCount()}},t.opaquePass=(n,r)=>{if(n&&!e._openGLRenderer.getSelector()){t.updateBufferObjects(),e.context.depthMask(!0),e._openGLRenderWindow.getShaderCache().readyShaderProgram(e.tris.getProgram()),e.openGLTexture.render(e._openGLRenderWindow);const a=e.openGLTexture.getTextureUnit();e.tris.getProgram().setUniformi("sbtexture",a);const s=e._openGLRenderer.getRenderable(),i=e.openGLCamera.getKeyMatrices(s),o=new Float64Array(16);if(dt(o,i.wcpc),e.tris.getProgram().setUniformMatrix("IMCPCMatrix",o),e.lastFormat==="box"){const u=s.getActiveCamera().getPosition();e.tris.getProgram().setUniform3f("camPos",u[0],u[1],u[2])}e.tris.getVAO().bind(),e.context.drawArrays(e.context.TRIANGLES,0,e.tris.getCABO().getElementCount()),e.tris.getVAO().release(),e.openGLTexture.deactivate()}},t.updateBufferObjects=()=>{if(!e.tris.getCABO().getElementCount()){const r=new Float32Array(12);for(let o=0;o<4;o++)r[o*3]=o%2*2-1,r[o*3+1]=o>1?1:-1,r[o*3+2]=1;const a=_e.newInstance({numberOfComponents:3,values:r});a.setName("points");const s=new Uint16Array(8);s[0]=3,s[1]=0,s[2]=1,s[3]=3,s[4]=3,s[5]=0,s[6]=3,s[7]=2;const i=_e.newInstance({numberOfComponents:1,values:s});e.tris.getCABO().createVBO(i,"polys",ut.SURFACE,{points:a,cellOffset:0})}e.renderable.getFormat()!==e.lastFormat&&(e.lastFormat=e.renderable.getFormat(),e.lastFormat==="box"&&e.tris.setProgram(e._openGLRenderWindow.getShaderCache().readyShaderProgramArray(`//VTK::System::Dec
- attribute vec3 vertexMC;
- uniform mat4 IMCPCMatrix;
- varying vec3 TexCoords;
- void main () {
- gl_Position = vec4(vertexMC.xyz, 1.0);
- vec4 wpos = IMCPCMatrix * gl_Position;
- TexCoords = wpos.xyz/wpos.w;
- }`,`//VTK::System::Dec
- //VTK::Output::Dec
- varying vec3 TexCoords;
- uniform samplerCube sbtexture;
- uniform vec3 camPos;
- void main () {
- // skybox looks from inside out
- // which means we have to adjust
- // our tcoords. Otherwise text would
- // be flipped
- vec3 tc = normalize(TexCoords - camPos);
- if (abs(tc.z) < max(abs(tc.x),abs(tc.y)))
- {
- tc = vec3(1.0, 1.0, -1.0) * tc;
- }
- else
- {
- tc = vec3(-1.0, 1.0, 1.0) * tc;
- }
- gl_FragData[0] = textureCube(sbtexture, tc);
- }`,"")),e.lastFormat==="background"&&e.tris.setProgram(e._openGLRenderWindow.getShaderCache().readyShaderProgramArray(`//VTK::System::Dec
- attribute vec3 vertexMC;
- uniform mat4 IMCPCMatrix;
- varying vec2 TexCoords;
- void main () {
- gl_Position = vec4(vertexMC.xyz, 1.0);
- vec4 wpos = IMCPCMatrix * gl_Position;
- TexCoords = vec2(vertexMC.x, vertexMC.y)*0.5 + 0.5;
- }`,`//VTK::System::Dec
- //VTK::Output::Dec
- varying vec2 TexCoords;
- uniform sampler2D sbtexture;
- void main () {
- gl_FragData[0] = texture2D(sbtexture, TexCoords);
- }`,"")),e.tris.getShaderSourceTime().modified(),e.tris.getVAO().bind(),e.tris.getVAO().addAttributeArray(e.tris.getProgram(),e.tris.getCABO(),"vertexMC",e.tris.getCABO().getVertexOffset(),e.tris.getCABO().getStride(),e.context.FLOAT,3,e.context.FALSE)||$c("Error setting vertexMC in shader VAO."));const n=e.renderable.getTextures();n.length||$c("vtkSkybox requires a texture map"),e.openGLTexture.getRenderable()!==n[0]&&(e.openGLTexture.releaseGraphicsResources(e._openGLRenderWindow),e.openGLTexture.setRenderable(n[0]))}}const E2={context:null};function R2(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,E2,n),be.extend(t,e,n),e.openGLTexture=In.newInstance(),e.tris=Mr.newInstance(),e.keyMatrixTime={},qe(e.keyMatrixTime,{mtime:0}),e.keyMatrices={normalMatrix:Qn(new Float64Array(9)),mcwc:le(new Float64Array(16))},He(t,e,["context"]),lt(t,e,["activeTextures"]),_2(t,e)}const O2=De(R2);At("vtkSkybox",O2);const{vtkDebugMacro:D2}=Jt;function m2(t,e){e.classHierarchy.push("vtkOpenGLPixelSpaceCallbackMapper"),t.opaquePass=(n,r)=>{e._openGLRenderer=t.getFirstAncestorOfType("vtkOpenGLRenderer"),e._openGLRenderWindow=e._openGLRenderer.getParent();const a=e._openGLRenderer.getAspectRatio(),s=e._openGLRenderer?e._openGLRenderer.getRenderable().getActiveCamera():null,i=e._openGLRenderer.getTiledSizeAndOrigin();let o=null;if(e.renderable.getUseZValues()){const u=r.getZBufferTexture(),c=Math.floor(u.getWidth()),f=Math.floor(u.getHeight()),l=e._openGLRenderWindow.getContext();u.bind();const g=r.getFramebuffer();g?g.saveCurrentBindingsAndBuffers():D2("No framebuffer to save/restore");const p=l.createFramebuffer();l.bindFramebuffer(l.FRAMEBUFFER,p),l.framebufferTexture2D(l.FRAMEBUFFER,l.COLOR_ATTACHMENT0,l.TEXTURE_2D,u.getHandle(),0),l.checkFramebufferStatus(l.FRAMEBUFFER)===l.FRAMEBUFFER_COMPLETE&&(o=new Uint8Array(c*f*4),l.viewport(0,0,c,f),l.readPixels(0,0,c,f,l.RGBA,l.UNSIGNED_BYTE,o)),g&&g.restorePreviousBindingsAndBuffers(),l.deleteFramebuffer(p)}e.renderable.invokeCallback(e.renderable.getInputData(),s,a,i,o)},t.queryPass=(n,r)=>{n&&e.renderable.getUseZValues()&&r.requestDepth()}}const M2={};function V2(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,M2,n),be.extend(t,e,n),m2(t,e)}const L2=De(V2,"vtkOpenGLPixelSpaceCallbackMapper");At("vtkPixelSpaceCallbackMapper",L2);const pg=Object.create(null);function ln(t,e){pg[t]=e}function B2(t,e){e.classHierarchy.push("vtkWebGPUViewNodeFactory")}const k2={};function hg(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,k2,n),e.overrides=pg,mf.extend(t,e,n),B2(t,e)}const F2=_.newInstance(hg,"vtkWebGPUViewNodeFactory");var U2={newInstance:F2,extend:hg};function b2(t,e){e.classHierarchy.push("vtkWebGPUCamera"),t.getProjectionMatrix=(n,r,a,s)=>{if(le(n),e.renderable.getParallelProjection()){const i=e.renderable.getParallelScale(),o=i*r,u=i,c=(s[0]-1)*o,f=(s[0]+1)*o,l=(s[1]-1)*u,g=(s[1]+1)*u,p=1/(f-c),y=1/(g-l);n[0]=2*p,n[5]=2*y,n[10]=1/(a[1]-a[0]),n[12]=(f+c)*p,n[13]=(g+l)*y,n[14]=a[1]/(a[1]-a[0])}else{const i=Math.tan(Math.PI*e.renderable.getViewAngle()/360);let o,u;e.renderable.getUseHorizontalViewAngle()===!0?(o=a[0]*i,u=a[0]*i/r):(o=a[0]*i*r,u=a[0]*i);const c=(s[0]-1)*o,f=(s[0]+1)*o,l=(s[1]-1)*u,g=(s[1]+1)*u;n[0]=2*a[0]/(f-c),n[5]=2*a[0]/(g-l),n[12]=(c+f)/(f-c),n[13]=(l+g)/(g-l),n[10]=0,n[14]=a[0],n[11]=-1,n[15]=0}},t.convertToOpenGLDepth=n=>{if(e.renderable.getParallelProjection())return 1-n;const r=e.renderable.getClippingRangeByReference();let a=-r[0]/n;return a=(r[0]+r[1])/(r[1]-r[0])+2*r[0]*r[1]/(a*(r[1]-r[0])),.5*a+.5},t.getKeyMatrices=n=>{const r=n.getRenderable(),a=n.getParent();if(Math.max(a.getMTime(),t.getMTime(),r.getMTime(),e.renderable.getMTime(),n.getStabilizedTime())>e.keyMatrixTime.getMTime()){const s=e.renderable.getViewMatrix();nt(e.keyMatrices.normalMatrix,s),e.keyMatrices.normalMatrix[3]=0,e.keyMatrices.normalMatrix[7]=0,e.keyMatrices.normalMatrix[11]=0,dt(e.keyMatrices.normalMatrix,e.keyMatrices.normalMatrix),Ve(e.keyMatrices.wcvc,s);const i=n.getStabilizedCenterByReference();We(e.keyMatrices.scvc,e.keyMatrices.wcvc,i);const o=n.getAspectRatio(),u=e.renderable.getClippingRangeByReference();t.getProjectionMatrix(e.keyMatrices.vcpc,o,u,e.renderable.getWindowCenterByReference()),ft(e.keyMatrices.scpc,e.keyMatrices.vcpc,e.keyMatrices.scvc),dt(e.keyMatrices.pcsc,e.keyMatrices.scpc),e.keyMatrixTime.modified()}return e.keyMatrices}}const N2={keyMatrixTime:null,keyMatrices:null};function G2(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,N2,n),be.extend(t,e,n),e.keyMatrixTime={},_.obj(e.keyMatrixTime),e.keyMatrices={normalMatrix:new Float64Array(16),vcpc:new Float64Array(16),pcsc:new Float64Array(16),wcvc:new Float64Array(16),scpc:new Float64Array(16),scvc:new Float64Array(16)},_.setGet(t,e,["keyMatrixTime"]),b2(t,e)}const $2=_.newInstance(G2);ln("vtkCamera",$2);function W2(t,e){e.classHierarchy.push("vtkWebGPUBindGroup"),t.setBindables=n=>{if(e.bindables.length===n.length){let r=!0;for(let a=0;a<e.bindables.length;a++)e.bindables[a]!==n[a]&&(r=!1);if(r)return}e.bindables=n,t.modified()},t.getBindGroupLayout=n=>{const r=[];for(let a=0;a<e.bindables.length;a++){const s=e.bindables[a].getBindGroupLayoutEntry();s.binding=a,r.push(s)}return n.getBindGroupLayout({entries:r})},t.getBindGroup=n=>{let r=t.getMTime();for(let s=0;s<e.bindables.length;s++){const i=e.bindables[s].getBindGroupTime().getMTime();r=i>r?i:r}if(r<e.bindGroupTime.getMTime())return e.bindGroup;const a=[];for(let s=0;s<e.bindables.length;s++){const i=e.bindables[s].getBindGroupEntry();i.binding=s,a.push(i)}return e.bindGroup=n.getHandle().createBindGroup({layout:t.getBindGroupLayout(n),entries:a,label:e.label}),e.bindGroupTime.modified(),e.bindGroup},t.getShaderCode=n=>{const r=[],a=n.getBindGroupLayoutCount(e.label);for(let s=0;s<e.bindables.length;s++)r.push(e.bindables[s].getShaderCode(s,a));return r.join(`
- `)}}const z2={device:null,handle:null,label:null};function dg(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,z2,n),_.obj(t,e),e.bindables=[],e.bindGroupTime={},_.obj(e.bindGroupTime,{mtime:0}),_.get(t,e,["bindGroupTime","handle","sizeInBytes","usage"]),_.setGet(t,e,["label","device","arrayInformation"]),W2(t,e)}const A2=_.newInstance(dg);var vg={newInstance:A2,extend:dg};function H2(t,e){e.classHierarchy.push("vtkWebGPUShaderModule"),t.initialize=(n,r)=>{e.device=n,e.handle=e.device.getHandle().createShaderModule({code:r.getCode()})}}const j2={device:null,handle:null};function yg(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,j2,n),_.obj(t,e),_.get(t,e,["lastCameraMTime"]),_.setGet(t,e,["device","handle"]),H2(t,e)}const K2=_.newInstance(yg,"vtkWebGPUShaderModule");var P2={newInstance:K2,extend:yg};function X2(t,e,n){let r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!0;const a=Array.isArray(n)?n.join(`
- `):n;let s=!1;t.search(e)!==-1&&(s=!0);let i="";r&&(i="g");const o=new RegExp(e,i),u=t.replace(o,a);return{replace:s,result:u}}function I2(t,e){e.classHierarchy.push("vtkWebGPUShaderCache"),t.getShaderModule=n=>{const r=n.getType(),a=n.getHash(),s=e._shaderModules.keys();for(let o=0;o<s.length;o++){const u=s[o];if(u.getHash()===a&&u.getType()===r)return e._shaderModules.get(u)}const i=P2.newInstance();return i.initialize(e.device,n),e._shaderModules.set(n,i),i}}const Y2={shaderModules:null,device:null,window:null};function Tg(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Y2,n),e._shaderModules=new Map,_.obj(t,e),_.setGet(t,e,["device","window"]),I2(t,e)}const q2=_.newInstance(Tg,"vtkWebGPUShaderCache");var oe={newInstance:q2,extend:Tg,substitute:X2};function Q2(t,e){e.classHierarchy.push("vtkWebGPUPipeline"),t.getShaderDescriptions=()=>e.shaderDescriptions,t.initialize=(n,r)=>{e.pipelineDescription=e.renderEncoder.getPipelineSettings(),e.pipelineDescription.primitive.topology=e.topology,e.pipelineDescription.vertex=e.vertexState,e.pipelineDescription.label=r;const a=[];for(let s=0;s<e.layouts.length;s++)a.push(e.layouts[s].layout);e.pipelineLayout=n.getHandle().createPipelineLayout({bindGroupLayouts:a}),e.pipelineDescription.layout=e.pipelineLayout;for(let s=0;s<e.shaderDescriptions.length;s++){const i=e.shaderDescriptions[s],o=n.getShaderModule(i);i.getType()==="vertex"&&(e.pipelineDescription.vertex.module=o.getHandle(),e.pipelineDescription.vertex.entryPoint="main"),i.getType()==="fragment"&&(e.pipelineDescription.fragment.module=o.getHandle(),e.pipelineDescription.fragment.entryPoint="main")}e.handle=n.getHandle().createRenderPipeline(e.pipelineDescription)},t.getShaderDescription=n=>{for(let r=0;r<e.shaderDescriptions.length;r++)if(e.shaderDescriptions[r].getType()===n)return e.shaderDescriptions[r];return null},t.addBindGroupLayout=n=>{n&&e.layouts.push({layout:n.getBindGroupLayout(e.device),label:n.getLabel()})},t.getBindGroupLayout=n=>e.layouts[n].layout,t.getBindGroupLayoutCount=n=>{for(let r=0;r<e.layouts.length;r++)if(e.layouts[r].label===n)return r;return 0},t.bindVertexInput=(n,r)=>{r.bindBuffers(n)}}const Z2={handle:null,layouts:null,renderEncoder:null,shaderDescriptions:null,vertexState:null,topology:null,pipelineDescription:null};function xg(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Z2,n),qe(t,e),e.layouts=[],e.shaderDescriptions=[],lt(t,e,["handle","pipelineDescription"]),He(t,e,["device","renderEncoder","topology","vertexState"]),Q2(t,e)}const J2=De(xg,"vtkWebGPUPipeline");var eS={newInstance:J2,extend:xg};function tS(t,e){e.classHierarchy.push("vtkWebGPUShaderDescription"),t.hasOutput=n=>e.outputNames.includes(n),t.addOutput=function(n,r){let a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:void 0;e.outputTypes.push(n),e.outputNames.push(r),e.outputInterpolations.push(a)},t.addBuiltinOutput=(n,r)=>{e.builtinOutputTypes.push(n),e.builtinOutputNames.push(r)},t.addBuiltinInput=(n,r)=>{e.builtinInputTypes.push(n),e.builtinInputNames.push(r)},t.replaceShaderCode=(n,r)=>{const a=[];let s=[];if(r&&a.push(r.getShaderCode()),n||e.builtinInputNames.length){const i=[];if(i.push(`struct ${e.type}Input
- {`),n){const o=n.getOutputNamesByReference(),u=n.getOutputTypesByReference(),c=n.getOutputInterpolationsByReference();for(let f=0;f<o.length;f++)c[f]!==void 0?i.push(` @location(${f}) @interpolate(${c[f]}) ${o[f]} : ${u[f]},`):i.push(` @location(${f}) ${o[f]} : ${u[f]},`)}for(let o=0;o<e.builtinInputNames.length;o++)i.push(` ${e.builtinInputNames[o]} : ${e.builtinInputTypes[o]},`);i.length>1&&(i.push("};"),s=i,a[a.length-1]+=",",a.push(`input: ${e.type}Input`))}if(a.length&&(e.code=oe.substitute(e.code,"//VTK::IOStructs::Input",a).result),e.outputNames.length+e.builtinOutputNames.length){const i=[`struct ${e.type}Output
- {`];for(let o=0;o<e.outputNames.length;o++)e.outputInterpolations[o]!==void 0?i.push(` @location(${o}) @interpolate(${e.outputInterpolations[o]}) ${e.outputNames[o]} : ${e.outputTypes[o]},`):i.push(` @location(${o}) ${e.outputNames[o]} : ${e.outputTypes[o]},`);for(let o=0;o<e.builtinOutputNames.length;o++)i.push(` ${e.builtinOutputNames[o]} : ${e.builtinOutputTypes[o]},`);i.push("};"),s=s.concat(i),e.code=oe.substitute(e.code,"//VTK::IOStructs::Output",[`-> ${e.type}Output`]).result}e.code=oe.substitute(e.code,"//VTK::IOStructs::Dec",s).result}}const nS={type:null,hash:null,code:null,outputNames:null,outputTypes:null};function Sg(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,nS,n),e.outputNames=[],e.outputTypes=[],e.outputInterpolations=[],e.builtinOutputNames=[],e.builtinOutputTypes=[],e.builtinInputNames=[],e.builtinInputTypes=[],_.obj(t,e),_.setGet(t,e,["type","hash","code"]),_.getArray(t,e,["outputTypes","outputNames","outputInterpolations"]),tS(t,e)}const rS=_.newInstance(Sg,"vtkWebGPUShaderDescription");var Wc={newInstance:rS,extend:Sg};const zc={r8unorm:{numComponents:1,nativeType:Uint8Array,stride:1,elementSize:1,sampleType:"float"},r8snorm:{numComponents:1,nativeType:Int8Array,stride:1,elementSize:1,sampleType:"float"},r8uint:{numComponents:1,nativeType:Uint8Array,stride:1,elementSize:1,sampleType:"uint"},r8sint:{numComponents:1,nativeType:Int8Array,stride:1,elementSize:1,sampleType:"sint"},r16uint:{numComponents:1,nativeType:Uint16Array,stride:2,elementSize:2,sampleType:"uint"},r16sint:{numComponents:1,nativeType:Int16Array,stride:2,elementSize:2,sampleType:"sint"},r16float:{numComponents:1,nativeType:Float32Array,stride:2,elementSize:2,sampleType:"float"},rg8unorm:{numComponents:2,nativeType:Uint8Array,stride:2,elementSize:1,sampleType:"float"},rg8snorm:{numComponents:2,nativeType:Int8Array,stride:2,elementSize:1,sampleType:"float"},rg8uint:{numComponents:2,nativeType:Uint8Array,stride:2,elementSize:1,sampleType:"uint"},rg8sint:{numComponents:2,nativeType:Int8Array,stride:2,elementSize:1,sampleType:"sint"},r32uint:{numComponents:1,nativeType:Uint32Array,stride:4,elementSize:4,sampleType:"uint"},r32sint:{numComponents:1,nativeType:Int32Array,stride:4,elementSize:4,sampleType:"sint"},r32float:{numComponents:1,nativeType:Float32Array,stride:4,elementSize:4,sampleType:"unfilterable-float"},rg16uint:{numComponents:2,nativeType:Uint16Array,stride:4,elementSize:2,sampleType:"uint"},rg16sint:{numComponents:2,nativeType:Int16Array,stride:4,elementSize:2,sampleType:"sint"},rg16float:{numComponents:2,nativeType:Float32Array,stride:4,elementSize:2,sampleType:"float"},rgba8unorm:{numComponents:4,nativeType:Uint8Array,stride:4,elementSize:1,sampleType:"float"},"rgba8unorm-srgb":{numComponents:4,nativeType:Uint8Array,stride:4,elementSize:1,sampleType:"float"},rgba8snorm:{numComponents:4,nativeType:Int8Array,stride:4,elementSize:1,sampleType:"float"},rgba8uint:{numComponents:4,nativeType:Uint8Array,stride:4,elementSize:1,sampleType:"uint"},rgba8sint:{numComponents:4,nativeType:Int8Array,stride:4,elementSize:1,sampleType:"sint"},bgra8unorm:{numComponents:4,nativeType:Uint8Array,stride:4,elementSize:1,sampleType:"float"},"bgra8unorm-srgb":{numComponents:4,nativeType:Uint8Array,stride:4,elementSize:1,sampleType:"float"},rgb9e5ufloat:{numComponents:4,nativeType:Uint32Array,stride:4,sampleType:"float"},rgb10a2unorm:{numComponents:4,nativeType:Uint32Array,stride:4,sampleType:"float"},rg11b10ufloat:{numComponents:4,nativeType:Float32Array,stride:4,sampleType:"float"},rg32uint:{numComponents:2,nativeType:Uint32Array,stride:8,elementSize:4,sampleType:"uint"},rg32sint:{numComponents:2,nativeType:Int32Array,stride:8,elementSize:4,sampleType:"sint"},rg32float:{numComponents:2,nativeType:Float32Array,stride:8,elementSize:4,sampleType:"unfilterable-float"},rgba16uint:{numComponents:4,nativeType:Uint16Array,stride:8,elementSize:2,sampleType:"uint"},rgba16sint:{numComponents:4,nativeType:Int16Array,stride:8,elementSize:2,sampleType:"sint"},rgba16float:{numComponents:4,nativeType:Float32Array,stride:8,elementSize:2,sampleType:"float"},rgba32uint:{numComponents:4,nativeType:Uint32Array,stride:16,elementSize:4,sampleType:"uint"},rgba32sint:{numComponents:4,nativeType:Int32Array,stride:16,elementSize:4,sampleType:"sint"},rgba32float:{numComponents:4,nativeType:Float32Array,stride:16,elementSize:4,sampleType:"unfilterable-float"},stencil8:{numComponents:1,nativeType:Uint8Array,stride:1,elementSize:1,sampleType:"uint"},depth16unorm:{numComponents:1,nativeType:Uint16Array,stride:2,elementSize:2,sampleType:"depth"},depth24plus:{numComponents:1,nativeType:Uint32Array,stride:4,elementSize:3,sampleType:"depth"},"depth24plus-stencil8":{numComponents:2,nativeType:Uint32Array,stride:4,sampleType:"mixed"},depth32float:{numComponents:1,nativeType:Float32Array,stride:4,elementSize:4,sampleType:"depth"}};function aS(t){return!t||t.length<6?0:t in zc?zc[t]:(ce(`unknown format ${t}`),null)}function sS(t){if(!t||t.length<5)return 0;let e=1;t[t.length-2]==="x"&&(e=Number(t[t.length-1]));const n=e===1?t.length-1:t.length-3,r=Number(t[n]);if(Number.isNaN(r))return ce(`unknown format ${t}`),0;const a=5-r/2;return e*a}function iS(t){if(!t||t.length<5)return 0;let e=1;return t[t.length-2]==="x"&&(e=Number(t[t.length-1])),e}function oS(t){if(!t||t.length<5)return 0;let e;if(t[0]==="f")e="Float";else if(t[0]==="s")e="Int";else if(t[0]==="u")e="Uint";else{ce(`unknown format ${t}`);return}const n=t.split("x")[0],r=Number(n[n.length-1]);if(Number.isNaN(r)){ce(`unknown format ${t}`);return}return e+=8*(5-r/2),e+="Array",e}function cS(t){let e;if(t[0]==="f"||t[1]==="n")e="f32";else if(t[0]==="s"&&t[1]==="i")e="i32";else if(t[0]==="u"&&t[1]==="i")e="u32";else{ce(`unknown format ${t}`);return}let n=1;return t[t.length-2]==="x"&&(n=Number(t[t.length-1])),n===4?`vec4<${e}>`:n===3?`vec3<${e}>`:n===2?`vec2<${e}>`:e}function uS(t){if(!t)return 0;let e=1;return t.substring(0,3)==="vec"?e=Number(t[3]):t.substring(0,3)==="mat"&&(e=t[3]*t[5]),e*4}function fS(t){if(t){if(t.includes("f32"))return"Float32Array";if(t.includes("i32"))return"Int32Array";if(t.includes("u32"))return"Uint32Array";ce(`unknown format ${t}`)}}var Ie={getDetailsFromTextureFormat:aS,getByteStrideFromBufferFormat:sS,getNumberOfComponentsFromBufferFormat:iS,getNativeTypeFromBufferFormat:oS,getShaderTypeFromBufferFormat:cS,getByteStrideFromShaderFormat:uS,getNativeTypeFromShaderFormat:fS};function lS(t,e){if(t===e)return!0;if(t==null||e==null||t.length!==e.length)return!1;for(let n=0;n<t.length;++n)if(!e.includes(t[n]))return!1;return!0}function gS(t,e){e.classHierarchy.push("vtkWebGPUVertexInput"),t.addBuffer=function(n,r){let a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:"vertex",s=r;Array.isArray(s)||(s=[s]);for(let i=0;i<e.inputs.length;i++)if(lS(e.inputs[i].names,s)){if(e.inputs[i].buffer===n)return;e.inputs[i].buffer=n;return}e.inputs.push({buffer:n,stepMode:a,names:s}),e.inputs=e.inputs.sort((i,o)=>i.names[0]<o.names[0]?-1:i.names[0]>o.names[0]?1:0)},t.removeBufferIfPresent=n=>{for(let r=0;r<e.inputs.length;r++)e.inputs[r].names.includes(n)&&e.inputs.splice(r,1)},t.getBuffer=n=>{for(let r=0;r<e.inputs.length;r++)if(e.inputs[r].names.includes(n))return e.inputs[r].buffer;return null},t.hasAttribute=n=>{for(let r=0;r<e.inputs.length;r++)if(e.inputs[r].names.includes(n))return!0;return!1},t.getAttributeTime=n=>{for(let r=0;r<e.inputs.length;r++)if(e.inputs[r].names.includes(n))return e.inputs[r].buffer.getSourceTime();return 0},t.getShaderCode=()=>{let n="",r=0;for(let a=0;a<e.inputs.length;a++)for(let s=0;s<e.inputs[a].names.length;s++){const i=e.inputs[a].buffer.getArrayInformation()[s],o=Ie.getShaderTypeFromBufferFormat(i.format);r>0&&(n+=`,
- `),n=`${n} @location(${r}) ${e.inputs[a].names[s]} : ${o}`,r++}return n},t.getVertexInputInformation=()=>{const n={};if(e.inputs.length){const r=[];let a=0;for(let s=0;s<e.inputs.length;s++){const i=e.inputs[s].buffer,o={arrayStride:i.getStrideInBytes(),stepMode:e.inputs[s].stepMode,attributes:[]},u=i.getArrayInformation();for(let c=0;c<e.inputs[s].names.length;c++)o.attributes.push({shaderLocation:a,offset:u[c].offset,format:u[c].format}),a++;r.push(o)}n.buffers=r}return n},t.bindBuffers=n=>{for(let r=0;r<e.inputs.length;r++)n.setVertexBuffer(r,e.inputs[r].buffer.getHandle());e.indexBuffer&&n.setIndexBuffer(e.indexBuffer.getHandle(),e.indexBuffer.getArrayInformation()[0].format)},t.getReady=()=>{},t.releaseGraphicsResources=()=>{e.created&&(e.inputs=[],e.bindingDescriptions=[],e.attributeDescriptions=[])}}const pS={inputs:null,bindingDescriptions:!1,attributeDescriptions:null,indexBuffer:null};function Cg(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,pS,n),qe(t,e),e.bindingDescriptions=[],e.attributeDescriptions=[],e.inputs=[],He(t,e,["created","device","handle","indexBuffer"]),gS(t,e)}const hS=De(Cg,"vtkWebGPUVertexInput");var dS={newInstance:hS,extend:Cg};const vS=`
- //VTK::Renderer::Dec
- //VTK::Color::Dec
- //VTK::Normal::Dec
- //VTK::TCoord::Dec
- //VTK::Select::Dec
- //VTK::Mapper::Dec
- //VTK::IOStructs::Dec
- @vertex
- fn main(
- //VTK::IOStructs::Input
- )
- //VTK::IOStructs::Output
- {
- var output : vertexOutput;
- // var vertex: vec4<f32> = vertexBC;
- //VTK::Color::Impl
- //VTK::Normal::Impl
- //VTK::TCoord::Impl
- //VTK::Select::Impl
- //VTK::Position::Impl
- return output;
- }
- `,yS=`
- //VTK::Renderer::Dec
- //VTK::Color::Dec
- //VTK::Normal::Dec
- //VTK::TCoord::Dec
- //VTK::Select::Dec
- //VTK::RenderEncoder::Dec
- //VTK::Mapper::Dec
- //VTK::IOStructs::Dec
- @fragment
- fn main(
- //VTK::IOStructs::Input
- )
- //VTK::IOStructs::Output
- {
- var output : fragmentOutput;
- //VTK::Color::Impl
- //VTK::Normal::Impl
- //VTK::Light::Impl
- //VTK::TCoord::Impl
- //VTK::Select::Impl
- // var computedColor:vec4<f32> = vec4<f32>(1.0,0.5,0.5,1.0);
- //VTK::RenderEncoder::Impl
- return output;
- }
- `;function TS(t,e){e.classHierarchy.push("vtkWebGPUSimpleMapper"),t.generateShaderDescriptions=(n,r,a)=>{const s=Wc.newInstance({type:"vertex",hash:n,code:e.vertexShaderTemplate}),i=Wc.newInstance({type:"fragment",hash:n,code:e.fragmentShaderTemplate}),o=r.getShaderDescriptions();o.push(s),o.push(i);const u=e.vertexShaderTemplate+e.fragmentShaderTemplate,c=new RegExp("//VTK::[^:]*::","g"),l=u.match(c).filter((g,p,y)=>y.indexOf(g)===p).map(g=>`replaceShader${g.substring(7,g.length-2)}`);for(let g=0;g<l.length;g++){const p=l[g];p!=="replaceShaderIOStructs"&&e.shaderReplacements.has(p)&&e.shaderReplacements.get(p)(n,r,a)}t.replaceShaderIOStructs(n,r,a)},t.replaceShaderIOStructs=(n,r,a)=>{const s=r.getShaderDescription("vertex");s.replaceShaderCode(null,a),r.getShaderDescription("fragment").replaceShaderCode(s)},t.replaceShaderRenderEncoder=(n,r,a)=>{e.renderEncoder.replaceShaderCode(r)},e.shaderReplacements.set("replaceShaderRenderEncoder",t.replaceShaderRenderEncoder),t.replaceShaderRenderer=(n,r,a)=>{if(!e.WebGPURenderer)return;const s=e.WebGPURenderer.getBindGroup().getShaderCode(r),i=r.getShaderDescription("vertex");let o=i.getCode();o=oe.substitute(o,"//VTK::Renderer::Dec",[s]).result,i.setCode(o);const u=r.getShaderDescription("fragment");o=u.getCode(),o=oe.substitute(o,"//VTK::Renderer::Dec",[s]).result,u.setCode(o)},e.shaderReplacements.set("replaceShaderRenderer",t.replaceShaderRenderer),t.replaceShaderMapper=(n,r,a)=>{const s=e.bindGroup.getShaderCode(r),i=r.getShaderDescription("vertex");let o=i.getCode();o=oe.substitute(o,"//VTK::Mapper::Dec",[s]).result,i.setCode(o);const u=r.getShaderDescription("fragment");u.addBuiltinInput("bool","@builtin(front_facing) frontFacing"),o=u.getCode(),o=oe.substitute(o,"//VTK::Mapper::Dec",[s]).result,u.setCode(o)},e.shaderReplacements.set("replaceShaderMapper",t.replaceShaderMapper),t.replaceShaderPosition=(n,r,a)=>{const s=r.getShaderDescription("vertex");s.addBuiltinOutput("vec4<f32>","@builtin(position) Position");let i=s.getCode();i=oe.substitute(i,"//VTK::Position::Impl",[" output.Position = rendererUBO.SCPCMatrix*vertexBC;"]).result,s.setCode(i)},e.shaderReplacements.set("replaceShaderPosition",t.replaceShaderPosition),t.replaceShaderTCoord=(n,r,a)=>{r.getShaderDescription("vertex").addOutput("vec2<f32>","tcoordVS")},e.shaderReplacements.set("replaceShaderTCoord",t.replaceShaderTCoord),t.addTextureView=n=>{e.textureViews.includes(n)||e.textureViews.push(n)},t.prepareToDraw=n=>{e.renderEncoder=n,t.updateInput(),t.updateBuffers(),t.updateBindings(),t.updatePipeline()},t.updateInput=()=>{},t.updateBuffers=()=>{},t.updateBindings=()=>{e.bindGroup.setBindables(t.getBindables())},t.computePipelineHash=()=>{},t.registerDrawCallback=n=>{n.registerDrawCallback(e.pipeline,t.draw)},t.prepareAndDraw=n=>{t.prepareToDraw(n),n.setPipeline(e.pipeline),t.draw(n)},t.draw=n=>{const r=n.getBoundPipeline();n.activateBindGroup(e.bindGroup),e.WebGPURenderer&&e.WebGPURenderer.bindUBO(n),r.bindVertexInput(n,e.vertexInput);const a=e.vertexInput.getIndexBuffer();a?n.drawIndexed(a.getIndexCount(),e.numberOfInstances,0,0,0):n.draw(e.numberOfVertices,e.numberOfInstances,0,0)},t.getBindables=()=>{const n=[...e.additionalBindables];e.UBO&&n.push(e.UBO),e.SSBO&&n.push(e.SSBO);for(let r=0;r<e.textureViews.length;r++){n.push(e.textureViews[r]);const a=e.textureViews[r].getSampler();a&&n.push(a)}return n},t.updatePipeline=()=>{t.computePipelineHash(),e.pipeline=e.device.getPipeline(e.pipelineHash),e.pipeline||(e.pipeline=eS.newInstance(),e.pipeline.setDevice(e.device),e.WebGPURenderer&&e.pipeline.addBindGroupLayout(e.WebGPURenderer.getBindGroup()),e.pipeline.addBindGroupLayout(e.bindGroup),t.generateShaderDescriptions(e.pipelineHash,e.pipeline,e.vertexInput),e.pipeline.setTopology(e.topology),e.pipeline.setRenderEncoder(e.renderEncoder),e.pipeline.setVertexState(e.vertexInput.getVertexInputInformation()),e.device.createPipeline(e.pipelineHash,e.pipeline))}}const xS={additionalBindables:void 0,bindGroup:null,device:null,fragmentShaderTemplate:null,numberOfInstances:1,numberOfVertices:0,pipelineHash:null,shaderReplacements:null,SSBO:null,textureViews:null,topology:"triangle-list",UBO:null,vertexShaderTemplate:null,WebGPURenderer:null};function wg(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,xS,n),be.extend(t,e,n),e.textureViews=[],e.vertexInput=dS.newInstance(),e.bindGroup=vg.newInstance({label:"mapperBG"}),e.additionalBindables=[],e.fragmentShaderTemplate=e.fragmentShaderTemplate||yS,e.vertexShaderTemplate=e.vertexShaderTemplate||vS,e.shaderReplacements=new Map,_.get(t,e,["pipeline","vertexInput"]),_.setGet(t,e,["additionalBindables","device","fragmentShaderTemplate","interpolate","numberOfInstances","numberOfVertices","pipelineHash","shaderReplacements","SSBO","textureViews","topology","UBO","vertexShaderTemplate","WebGPURenderer"]),TS(t,e)}const SS=_.newInstance(wg,"vtkWebGPUSimpleMapper");var So={newInstance:SS,extend:wg};function CS(t,e){e.classHierarchy.push("vtkWebGPUFullScreenQuad"),t.replaceShaderPosition=(n,r,a)=>{const s=r.getShaderDescription("vertex");s.addBuiltinOutput("vec4<f32>","@builtin(position) Position"),s.addOutput("vec4<f32>","vertexVC");let i=s.getCode();i=oe.substitute(i,"//VTK::Position::Impl",["output.tcoordVS = vec2<f32>(vertexBC.x * 0.5 + 0.5, 1.0 - vertexBC.y * 0.5 - 0.5);","output.Position = vec4<f32>(vertexBC, 1.0);","output.vertexVC = vec4<f32>(vertexBC, 1);"]).result,s.setCode(i)},e.shaderReplacements.set("replaceShaderPosition",t.replaceShaderPosition),t.updateBuffers=()=>{const n=e.device.getBufferManager().getFullScreenQuadBuffer();e.vertexInput.addBuffer(n,["vertexBC"]),e.numberOfVertices=6}}const wS={};function _g(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,wS,n),So.extend(t,e,n),CS(t,e)}const _S=_.newInstance(_g,"vtkWebGPUFullScreenQuad");var wr={newInstance:_S,extend:_g};const ES={Verts:0,Lines:1,Triangles:2,Strips:3,LinesFromStrips:4,LinesFromTriangles:5,Points:6,UniformArray:7,PointArray:8,NormalsFromPoints:9,Texture:10,RawVertex:11,Storage:12,Index:13},RS={Start:0,Points:0,Lines:1,Triangles:2,TriangleStrips:3,TriangleEdges:4,TriangleStripEdges:5,End:6};var oa={BufferUsage:ES,PrimitiveTypes:RS};const Ys=["getMappedRange","mapAsync","unmap"];function OS(t,e,n,r){const a=r.byteLength,s=t.createBuffer({size:a,usage:GPUBufferUsage.COPY_SRC,mappedAtCreation:!0}),i=s.getMappedRange(0,a);new Uint8Array(i).set(new Uint8Array(r)),s.unmap();const o=t.createCommandEncoder();o.copyBufferToBuffer(s,0,e,n,a);const u=o.finish();t.queue.submit([u]),s.destroy()}function DS(t,e){e.classHierarchy.push("vtkWebGPUBuffer"),t.create=(n,r)=>{e.handle=e.device.getHandle().createBuffer({size:n,usage:r,label:e.label}),e.sizeInBytes=n,e.usage=r},t.write=n=>{OS(e.device.getHandle(),e.handle,0,n.buffer)},t.createAndWrite=(n,r)=>{e.handle=e.device.getHandle().createBuffer({size:n.byteLength,usage:r,mappedAtCreation:!0,label:e.label}),e.sizeInBytes=n.byteLength,e.usage=r,new Uint8Array(e.handle.getMappedRange()).set(new Uint8Array(n.buffer)),e.handle.unmap()};for(let n=0;n<Ys.length;n++)t[Ys[n]]=function(){return e.handle[Ys[n]](...arguments)}}const mS={device:null,handle:null,sizeInBytes:0,strideInBytes:0,arrayInformation:null,usage:null,label:null,sourceTime:null};function Eg(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,mS,n),_.obj(t,e),_.get(t,e,["handle","sizeInBytes","usage"]),_.setGet(t,e,["strideInBytes","device","arrayInformation","label","sourceTime"]),DS(t,e)}const MS=_.newInstance(Eg);var _r={newInstance:MS,extend:Eg,...oa};const{Representation:Ac}=mr,{PrimitiveTypes:wn}=oa;class VS{constructor(){this.keys=new Uint32Array(10),this.values=new Uint32Array(10),this.count=0}clear(){this.count=0}has(e){for(let n=0;n<this.count;n++)if(this.keys[n]===e)return!0}get(e){for(let n=0;n<this.count;n++)if(this.keys[n]===e)return this.values[n]}set(e,n){this.count<9&&(this.keys[this.count]=e,this.values[this.count++]=n)}}function LS(t){switch(t){case wn.Points:return"points";case wn.Lines:return"lines";case wn.Triangles:case wn.TriangleEdges:return"polys";case wn.TriangleStripEdges:case wn.TriangleStrips:return"strips";default:return""}}function Ra(t,e,n){let r=t.pointIdToFlatId[e];return r<0&&(r=t.flatId,t.pointIdToFlatId[e]=r,t.flatIdToPointId[t.flatId]=e,t.flatIdToCellId[t.flatId]=n,t.flatId++),r}function BS(t,e,n){const r=t.length;for(let i=0;i<r;i++){let o=t[i];if(n.cellProvokedMap.has(o)){n.ibo[n.iboId++]=n.cellProvokedMap.get(o);for(let u=i+1;u<i+r;u++){o=t[u%r];const c=Ra(n,o,e);n.ibo[n.iboId++]=c}return}}for(let i=0;i<r;i++){let o=t[i];if(!n.provokedPointIds[o]){let u=Ra(n,o,e);n.provokedPointIds[o]=1,n.cellProvokedMap.set(o,u),n.flatIdToCellId[u]=e,n.ibo[n.iboId++]=u;for(let c=i+1;c<i+r;c++)o=t[c%r],u=Ra(n,o,e),n.ibo[n.iboId++]=u;return}}let a=t[0],s=n.flatId;n.cellProvokedMap.set(a,s),n.flatIdToPointId[n.flatId]=a,n.flatIdToCellId[n.flatId]=e,n.flatId++,n.ibo[n.iboId++]=s;for(let i=1;i<r;i++)a=t[i],s=Ra(n,a,e),n.ibo[n.iboId++]=s}function kS(t,e,n){const r=t.length;n.iboSize+=r;for(let a=0;a<r;a++){const s=t[a];if(n.cellProvokedMap.has(s))return}for(let a=0;a<r;a++){const s=t[a];if(!n.provokedPointIds[s]){n.provokedPointIds[s]=1,n.cellProvokedMap.set(s,1);return}}n.cellProvokedMap.set(t[0],1),n.extraPoints++}let an;const Hc=new Uint32Array(1),Et=new Uint32Array(2),vn=new Uint32Array(3),qs={anythingToPoints(t,e,n,r,a){for(let s=0;s<t;++s)Hc[0]=e[n+s],an(Hc,r,a)},linesToWireframe(t,e,n,r,a){for(let s=0;s<t-1;++s)Et[0]=e[n+s],Et[1]=e[n+s+1],an(Et,r,a)},polysToWireframe(t,e,n,r,a){if(t>2)for(let s=0;s<t;++s)Et[0]=e[n+s],Et[1]=e[n+(s+1)%t],an(Et,r,a)},stripsToWireframe(t,e,n,r,a){if(t>2){for(let s=0;s<t-1;++s)Et[0]=e[n+s],Et[1]=e[n+s+1],an(Et,r,a);for(let s=0;s<t-2;s++)Et[0]=e[n+s],Et[1]=e[n+s+2],an(Et,r,a)}},polysToSurface(t,e,n,r,a){for(let s=0;s<t-2;s++)vn[0]=e[n],vn[1]=e[n+s+1],vn[2]=e[n+s+2],an(vn,r,a)},stripsToSurface(t,e,n,r,a){for(let s=0;s<t-2;s++)vn[0]=e[n+s],vn[1]=e[n+s+1+s%2],vn[2]=e[n+s+1+(s+1)%2],an(vn,r,a)}};function FS(t,e){e.classHierarchy.push("vtkWebGPUIndexBuffer"),t.buildIndexBuffer=n=>{const r=n.cells,a=n.primitiveType,s=n.representation,i=n.cellOffset,o=r.getData(),u=o.length,c=LS(a),f=n.numberOfPoints,l={provokedPointIds:new Uint8Array(f),extraPoints:0,iboSize:0,flatId:0,iboId:0,cellProvokedMap:new VS};let g=null;s===Ac.POINTS||a===wn.Points?g=qs.anythingToPoints:s===Ac.WIREFRAME||a===wn.Lines?g=qs[`${c}ToWireframe`]:g=qs[`${c}ToSurface`],an=kS;let p=i||0;for(let y=0;y<u;)l.cellProvokedMap.clear(),g(o[y],o,y+1,p,l),y+=o[y]+1,p++;f<=65535?l.flatIdToPointId=new Uint16Array(f+l.extraPoints):l.flatIdToPointId=new Uint32Array(f+l.extraPoints),f+l.extraPoints<36863?l.pointIdToFlatId=new Int16Array(f):l.pointIdToFlatId=new Int32Array(f),f+l.extraPoints<=65535?(l.ibo=new Uint16Array(l.iboSize),n.format="uint16"):(l.ibo=new Uint32Array(l.iboSize),n.format="uint32"),p<=65535?l.flatIdToCellId=new Uint16Array(f+l.extraPoints):l.flatIdToCellId=new Uint32Array(f+l.extraPoints),l.pointIdToFlatId.fill(-1),l.provokedPointIds.fill(0),an=BS,p=i||0;for(let y=0;y<u;)l.cellProvokedMap.clear(),g(o[y],o,y+1,p,l),y+=o[y]+1,p++;delete l.provokedPointIds,delete l.pointIdToFlatId,n.nativeArray=l.ibo,e.flatIdToPointId=l.flatIdToPointId,e.flatIdToCellId=l.flatIdToCellId,e.flatSize=l.flatId,e.indexCount=l.iboId}}const US={flatIdToPointId:null,flatIdToCellId:null,flatSize:0,indexCount:0};function Rg(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,US,n),_r.extend(t,e,n),_.setGet(t,e,["flatIdToPointId","flatIdToCellId","flatSize","indexCount"]),FS(t,e)}const bS=_.newInstance(Rg);var NS={newInstance:bS,extend:Rg,...oa};const{BufferUsage:yn}=oa,{vtkErrorMacro:GS}=Jt,{VtkDataTypes:Gn}=_e,$S={};function WS(t){let e;switch(t.getDataType()){case Gn.UNSIGNED_CHAR:e="uint8";break;case Gn.FLOAT:e="float32";break;case Gn.UNSIGNED_INT:e="uint32";break;case Gn.INT:e="sint32";break;case Gn.DOUBLE:e="float32";break;case Gn.UNSIGNED_SHORT:e="uint16";break;case Gn.SHORT:e="sin16";break;default:e="float32";break}switch(t.getNumberOfComponents()){case 2:e+="x2";break;case 3:e.includes("32")||GS(`unsupported x3 type for ${e}`),e+="x3";break;case 4:e+="x4";break}return e}function jc(t,e,n,r,a){const s={},i=t.getFlatSize();if(!i)return s;let o=[0,0,0,0];a.shift&&(a.shift.length?o=a.shift:o.fill(a.shift));let u=[1,1,1,1];a.scale&&(a.scale.length?u=a.scale:u.fill(a.scale));const c=Object.prototype.hasOwnProperty.call(a,"packExtra")?a.packExtra:!1;let f,l=0;const g=n+(c?1:0),p=Rr(r,i*g);let y=t.getFlatIdToPointId();a.cellData&&(y=t.getFlatIdToCellId()),n===1?f=function(d){p[l++]=u[0]*e[d]+o[0]}:n===2?f=function(d){p[l++]=u[0]*e[d]+o[0],p[l++]=u[1]*e[d+1]+o[1]}:n===3&&!c?f=function(d){p[l++]=u[0]*e[d]+o[0],p[l++]=u[1]*e[d+1]+o[1],p[l++]=u[2]*e[d+2]+o[2]}:n===3&&c?f=function(d){p[l++]=u[0]*e[d]+o[0],p[l++]=u[1]*e[d+1]+o[1],p[l++]=u[2]*e[d+2]+o[2],p[l++]=u[3]*1+o[3]}:n===4&&(f=function(d){p[l++]=u[0]*e[d]+o[0],p[l++]=u[1]*e[d+1]+o[1],p[l++]=u[2]*e[d+2]+o[2],p[l++]=u[3]*e[d+3]+o[3]});for(let h=0;h<i;h++){const d=n*y[h];f(d)}return s.nativeArray=p,s}function zS(t,e,n,r){const a=[t[r*3]-t[n*3],t[r*3+1]-t[n*3+1],t[r*3+2]-t[n*3+2]],s=[t[e*3]-t[n*3],t[e*3+1]-t[n*3+1],t[e*3+2]-t[n*3+2]],i=[];return Zr(a,s,i),Jr(i),i}function AS(t,e){const n=e.getData(),r=t.getData();if(!r||!n)return null;const a=new Int8Array(t.getNumberOfCells()*4),s=r.length;let i=0;for(let o=0;o<s;){const u=zS(n,r[o+1],r[o+2],r[o+3]);a[i++]=127*u[0],a[i++]=127*u[1],a[i++]=127*u[2],a[i++]=127,o+=r[o]+1}return a}function HS(t,e){e.classHierarchy.push("vtkWebGPUBufferManager");function n(r){r.dataArray&&!r.nativeArray&&(r.nativeArray=r.dataArray.getData());let a,s;if(r.usage===yn.Index&&(a=NS.newInstance({label:r.label}),a.setDevice(e.device),s=GPUBufferUsage.INDEX|GPUBufferUsage.COPY_DST,a.buildIndexBuffer(r),a.createAndWrite(r.nativeArray,s),a.setArrayInformation([{format:r.format}])),a||(a=_r.newInstance({label:r.label}),a.setDevice(e.device)),r.usage===yn.UniformArray&&(s=GPUBufferUsage.UNIFORM|GPUBufferUsage.COPY_DST,a.createAndWrite(r.nativeArray,s)),r.usage===yn.Storage&&(s=GPUBufferUsage.STORAGE|GPUBufferUsage.COPY_DST,a.createAndWrite(r.nativeArray,s)),r.usage===yn.Texture&&(s=GPUBufferUsage.COPY_SRC,a.createAndWrite(r.nativeArray,s)),r.usage===yn.PointArray){s=GPUBufferUsage.VERTEX;const i=Ie.getNativeTypeFromBufferFormat(r.format),o=jc(r.indexBuffer,r.dataArray.getData(),r.dataArray.getNumberOfComponents(),i,{packExtra:r.packExtra,shift:r.shift,scale:r.scale,cellData:r.cellData,cellOffset:r.cellOffset});a.createAndWrite(o.nativeArray,s),a.setStrideInBytes(Ie.getByteStrideFromBufferFormat(r.format)),a.setArrayInformation([{offset:0,format:r.format,interpolation:r.cellData?"flat":"perspective"}])}if(r.usage===yn.NormalsFromPoints){s=GPUBufferUsage.VERTEX;const i=Ie.getNativeTypeFromBufferFormat(r.format),o=AS(r.cells,r.dataArray),u=jc(r.indexBuffer,o,4,i,{cellData:!0});a.createAndWrite(u.nativeArray,s),a.setStrideInBytes(Ie.getByteStrideFromBufferFormat(r.format)),a.setArrayInformation([{offset:0,format:r.format,interpolation:"flat"}])}return r.usage===yn.RawVertex&&(s=GPUBufferUsage.VERTEX,a.createAndWrite(r.nativeArray,s),a.setStrideInBytes(Ie.getByteStrideFromBufferFormat(r.format)),a.setArrayInformation([{offset:0,format:r.format}])),a.setSourceTime(r.time),a}t.hasBuffer=r=>e.device.hasCachedObject(r),t.getBuffer=r=>r.hash?e.device.getCachedObject(r.hash,n,r):n(r),t.getBufferForPointArray=(r,a)=>{const s=WS(r),i={hash:`${r.getMTime()}I${a.getMTime()}${s}`,usage:yn.PointArray,format:s,dataArray:r,indexBuffer:a};return t.getBuffer(i)},t.getFullScreenQuadBuffer=()=>{if(e.fullScreenQuadBuffer)return e.fullScreenQuadBuffer;e.fullScreenQuadBuffer=_r.newInstance(),e.fullScreenQuadBuffer.setDevice(e.device);const r=new Float32Array([-1,-1,0,1,-1,0,1,1,0,-1,-1,0,1,1,0,-1,1,0]);return e.fullScreenQuadBuffer.createAndWrite(r,GPUBufferUsage.VERTEX),e.fullScreenQuadBuffer.setStrideInBytes(12),e.fullScreenQuadBuffer.setArrayInformation([{offset:0,format:"float32x3"}]),e.fullScreenQuadBuffer}}const jS={device:null,fullScreenQuadBuffer:null};function Og(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,jS,n),qe(t,e),He(t,e,["device"]),HS(t,e)}const KS=De(Og);var mn={newInstance:KS,extend:Og,...$S,...oa};const{BufferUsage:PS}=mn,{vtkErrorMacro:ar}=_;function XS(t,e){e.classHierarchy.push("vtkWebGPUStorageBuffer"),t.addEntry=(n,r)=>{if(e._bufferEntryNames.has(n)){ar(`entry named ${n} already exists`);return}e._bufferEntryNames.set(n,e.bufferEntries.length);const a=Ie.getByteStrideFromShaderFormat(r);e.bufferEntries.push({name:n,type:r,sizeInBytes:a,offset:e.sizeInBytes,nativeType:Ie.getNativeTypeFromShaderFormat(r)}),e.sizeInBytes+=a},t.send=n=>{if(!e._buffer){const r={nativeArray:e.Float32Array,usage:PS.Storage,label:e.label};e._buffer=n.getBufferManager().getBuffer(r),e.bindGroupTime.modified(),e._sendTime.modified();return}n.getHandle().queue.writeBuffer(e._buffer.getHandle(),0,e.arrayBuffer,0,e.sizeInBytes*e.numberOfInstances),e._sendTime.modified()},t.createView=n=>{n in e||(e.arrayBuffer||(e.arrayBuffer=new ArrayBuffer(e.sizeInBytes*e.numberOfInstances)),e[n]=_.newTypedArray(n,e.arrayBuffer))},t.setValue=(n,r,a)=>{const s=e._bufferEntryNames.get(n);if(s===void 0){ar(`entry named ${n} not found in UBO`);return}const i=e.bufferEntries[s];t.createView(i.nativeType);const o=e[i.nativeType];o[(i.offset+r*e.sizeInBytes)/o.BYTES_PER_ELEMENT]=a},t.setArray=(n,r,a)=>{const s=e._bufferEntryNames.get(n);if(s===void 0){ar(`entry named ${n} not found in UBO`);return}const i=e.bufferEntries[s];t.createView(i.nativeType);const o=e[i.nativeType],u=(i.offset+r*e.sizeInBytes)/o.BYTES_PER_ELEMENT;for(let c=0;c<a.length;c++)o[u+c]=a[c]},t.setAllInstancesFromArray=(n,r)=>{const a=e._bufferEntryNames.get(n);if(a===void 0){ar(`entry named ${n} not found in UBO`);return}const s=e.bufferEntries[a];t.createView(s.nativeType);const i=e[s.nativeType],o=r.length/e.numberOfInstances;for(let u=0;u<e.numberOfInstances;u++){const c=(s.offset+u*e.sizeInBytes)/i.BYTES_PER_ELEMENT;for(let f=0;f<o;f++)i[c+f]=r[u*o+f]}},t.setAllInstancesFromArrayColorToFloat=(n,r)=>{const a=e._bufferEntryNames.get(n);if(a===void 0){ar(`entry named ${n} not found in UBO`);return}const s=e.bufferEntries[a];t.createView(s.nativeType);const i=e[s.nativeType],o=r.length/e.numberOfInstances;for(let u=0;u<e.numberOfInstances;u++){const c=(s.offset+u*e.sizeInBytes)/i.BYTES_PER_ELEMENT;for(let f=0;f<o;f++)i[c+f]=r[u*o+f]/255}},t.setAllInstancesFromArray3x3To4x4=(n,r)=>{const a=e._bufferEntryNames.get(n);if(a===void 0){ar(`entry named ${n} not found in UBO`);return}const s=e.bufferEntries[a];t.createView(s.nativeType);const i=e[s.nativeType],o=9;for(let u=0;u<e.numberOfInstances;u++){const c=(s.offset+u*e.sizeInBytes)/i.BYTES_PER_ELEMENT;for(let f=0;f<3;f++)for(let l=0;l<3;l++)i[c+f*4+l]=r[u*o+f*3+l]}},t.getSendTime=()=>e._sendTime.getMTime(),t.getShaderCode=(n,r)=>{const a=[`struct ${e.label}StructEntry
- {`];for(let s=0;s<e.bufferEntries.length;s++){const i=e.bufferEntries[s];a.push(` ${i.name}: ${i.type},`)}return a.push(`
- };
- struct ${e.label}Struct
- {
- values: array<${e.label}StructEntry>,
- };
- @binding(${n}) @group(${r}) var<storage, read> ${e.label}: ${e.label}Struct;
- `),a.join(`
- `)},t.getBindGroupEntry=()=>({resource:{buffer:e._buffer.getHandle()}}),t.clearData=()=>{e.numberOfInstances=0,e.sizeInBytes=0,e.bufferEntries=[],e._bufferEntryNames=new Map,e._buffer=null,delete e.arrayBuffer,delete e.Float32Array}}const IS={bufferEntries:null,bufferEntryNames:null,sizeInBytes:0,label:null,numberOfInstances:1};function Dg(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,IS,n),_.obj(t,e),e._bufferEntryNames=new Map,e.bufferEntries=[],e._sendTime={},_.obj(e._sendTime,{mtime:0}),e.bindGroupTime={},_.obj(e.bindGroupTime,{mtime:0}),e.bindGroupLayoutEntry=e.bindGroupLayoutEntry||{buffer:{type:"read-only-storage"}},_.get(t,e,["bindGroupTime"]),_.setGet(t,e,["device","bindGroupLayoutEntry","label","numberOfInstances","sizeInBytes"]),XS(t,e)}const YS=_.newInstance(Dg,"vtkWebGPUStorageBuffer");var Oi={newInstance:YS,extend:Dg};const{BufferUsage:qS}=mn,{vtkErrorMacro:Qs}=_;function QS(t,e){e.classHierarchy.push("vtkWebGPUUniformBuffer"),t.addEntry=(n,r)=>{if(e._bufferEntryNames.has(n)){Qs(`entry named ${n} already exists`);return}e.sortDirty=!0,e._bufferEntryNames.set(n,e.bufferEntries.length),e.bufferEntries.push({name:n,type:r,sizeInBytes:Ie.getByteStrideFromShaderFormat(r),offset:-1,nativeType:Ie.getNativeTypeFromShaderFormat(r),packed:!1})},t.sortBufferEntries=()=>{if(!e.sortDirty)return;let n=0;const r=[];let a=4;for(let s=0;s<e.bufferEntries.length;s++){const i=e.bufferEntries[s];i.sizeInBytes%16===0&&(a=Math.max(16,a)),i.sizeInBytes%8===0&&(a=Math.max(8,a))}for(let s=0;s<e.bufferEntries.length;s++){const i=e.bufferEntries[s];i.packed===!1&&i.sizeInBytes%16===0&&(i.packed=!0,i.offset=n,r.push(i),n+=i.sizeInBytes)}for(let s=0;s<e.bufferEntries.length;s++){const i=e.bufferEntries[s];if(i.packed===!1&&i.sizeInBytes===12)for(let o=0;o<e.bufferEntries.length;o++){const u=e.bufferEntries[o];if(u.packed===!1&&u.sizeInBytes===4){i.packed=!0,i.offset=n,r.push(i),n+=i.sizeInBytes,u.packed=!0,u.offset=n,r.push(u),n+=u.sizeInBytes;break}}}for(let s=0;s<e.bufferEntries.length;s++){const i=e.bufferEntries[s];if(!i.packed&&i.sizeInBytes%8===0)for(let o=s+1;o<e.bufferEntries.length;o++){const u=e.bufferEntries[o];if(!u.packed&&u.sizeInBytes%8===0){i.packed=!0,i.offset=n,r.push(i),n+=i.sizeInBytes,u.packed=!0,u.offset=n,r.push(u),n+=u.sizeInBytes;break}}}for(let s=0;s<e.bufferEntries.length;s++){const i=e.bufferEntries[s];if(!i.packed&&i.sizeInBytes%8===0){let o=!1;for(let u=0;!o&&u<e.bufferEntries.length;u++){const c=e.bufferEntries[u];if(!c.packed&&c.sizeInBytes===4)for(let f=u+1;f<e.bufferEntries.length;f++){const l=e.bufferEntries[f];if(!l.packed&&l.sizeInBytes===4){i.packed=!0,i.offset=n,r.push(i),n+=i.sizeInBytes,c.packed=!0,c.offset=n,r.push(c),n+=c.sizeInBytes,l.packed=!0,l.offset=n,r.push(l),n+=l.sizeInBytes,o=!0;break}}}}}for(let s=0;s<e.bufferEntries.length;s++){const i=e.bufferEntries[s];!i.packed&&i.sizeInBytes>4&&(i.packed=!0,i.offset=n,r.push(i),n+=i.sizeInBytes)}for(let s=0;s<e.bufferEntries.length;s++){const i=e.bufferEntries[s];i.packed||(i.packed=!0,i.offset=n,r.push(i),n+=i.sizeInBytes)}e.bufferEntries=r,e._bufferEntryNames.clear();for(let s=0;s<e.bufferEntries.length;s++)e._bufferEntryNames.set(e.bufferEntries[s].name,s);e.sizeInBytes=n,e.sizeInBytes=a*Math.ceil(e.sizeInBytes/a),e.sortDirty=!1},t.sendIfNeeded=n=>{if(!e.UBO){const r={nativeArray:e.Float32Array,usage:qS.UniformArray,label:e.label};e.UBO=n.getBufferManager().getBuffer(r),e.bindGroupTime.modified(),e.sendDirty=!1}e.sendDirty&&(n.getHandle().queue.writeBuffer(e.UBO.getHandle(),0,e.arrayBuffer,0,e.sizeInBytes),e.sendDirty=!1),e.sendTime.modified()},t.createView=n=>{n in e||(e.arrayBuffer||(e.arrayBuffer=new ArrayBuffer(e.sizeInBytes)),e[n]=_.newTypedArray(n,e.arrayBuffer))},t.setValue=(n,r)=>{t.sortBufferEntries();const a=e._bufferEntryNames.get(n);if(a===void 0){Qs(`entry named ${n} not found in UBO`);return}const s=e.bufferEntries[a];t.createView(s.nativeType);const i=e[s.nativeType];s.lastValue!==r&&(i[s.offset/i.BYTES_PER_ELEMENT]=r,e.sendDirty=!0),s.lastValue=r},t.setArray=(n,r)=>{t.sortBufferEntries();const a=e._bufferEntryNames.get(n);if(a===void 0){Qs(`entry named ${n} not found in UBO`);return}const s=e.bufferEntries[a];t.createView(s.nativeType);const i=e[s.nativeType];let o=!1;for(let u=0;u<r.length;u++)(!s.lastValue||s.lastValue[u]!==r[u])&&(i[s.offset/i.BYTES_PER_ELEMENT+u]=r[u],o=!0);o&&(e.sendDirty=!0,s.lastValue=[...r])},t.getBindGroupEntry=()=>({resource:{buffer:e.UBO.getHandle()}}),t.getSendTime=()=>e.sendTime.getMTime(),t.getShaderCode=(n,r)=>{t.sortBufferEntries();const a=[`struct ${e.label}Struct
- {`];for(let s=0;s<e.bufferEntries.length;s++){const i=e.bufferEntries[s];a.push(` ${i.name}: ${i.type},`)}return a.push(`};
- @binding(${n}) @group(${r}) var<uniform> ${e.label}: ${e.label}Struct;`),a.join(`
- `)}}const ZS={bufferEntries:null,bufferEntryNames:null,sizeInBytes:0,label:null,bindGroupLayoutEntry:null,bindGroupEntry:null};function mg(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,ZS,n),_.obj(t,e),e._bufferEntryNames=new Map,e.bufferEntries=[],e.bindGroupLayoutEntry=e.bindGroupLayoutEntry||{buffer:{type:"uniform"}},e.sendTime={},_.obj(e.sendTime,{mtime:0}),e.bindGroupTime={},_.obj(e.bindGroupTime,{mtime:0}),e.sendDirty=!0,e.sortDirty=!0,_.get(t,e,["binding","bindGroupTime"]),_.setGet(t,e,["bindGroupLayoutEntry","device","label","sizeInBytes"]),QS(t,e)}const JS=_.newInstance(mg,"vtkWebGPUUniformBuffer");var Yn={newInstance:JS,extend:mg};const{vtkDebugMacro:eC}=Jt,Kc=`
- //VTK::Renderer::Dec
- //VTK::Mapper::Dec
- //VTK::TCoord::Dec
- //VTK::RenderEncoder::Dec
- //VTK::IOStructs::Dec
- @fragment
- fn main(
- //VTK::IOStructs::Input
- )
- //VTK::IOStructs::Output
- {
- var output: fragmentOutput;
- var computedColor: vec4<f32> = mapperUBO.BackgroundColor;
- //VTK::RenderEncoder::Impl
- return output;
- }
- `,tC=`
- fn vecToRectCoord(dir: vec3<f32>) -> vec2<f32> {
- var tau: f32 = 6.28318530718;
- var pi: f32 = 3.14159265359;
- var out: vec2<f32> = vec2<f32>(0.0);
- out.x = atan2(dir.z, dir.x) / tau;
- out.x += 0.5;
- var phix: f32 = length(vec2(dir.x, dir.z));
- out.y = atan2(dir.y, phix) / pi + 0.5;
- return out;
- }
- //VTK::Renderer::Dec
- //VTK::Mapper::Dec
- //VTK::TCoord::Dec
- //VTK::RenderEncoder::Dec
- //VTK::IOStructs::Dec
- @fragment
- fn main(
- //VTK::IOStructs::Input
- )
- //VTK::IOStructs::Output
- {
- var output: fragmentOutput;
- var tcoord: vec4<f32> = vec4<f32>(input.vertexVC.xy, -1, 1);
- var V: vec4<f32> = normalize(mapperUBO.FSQMatrix * tcoord); // vec2<f32>((input.tcoordVS.x - 0.5) * 2, -(input.tcoordVS.y - 0.5) * 2);
- // textureSampleLevel gets rid of some ugly artifacts
- var background = textureSampleLevel(EnvironmentTexture, EnvironmentTextureSampler, vecToRectCoord(V.xyz), 0.0);
- var computedColor: vec4<f32> = vec4<f32>(background.rgb, 1);
- //VTK::RenderEncoder::Impl
- return output;
- }
- `,Oa=new Float64Array(16),Pc=new Float64Array(16);function nC(t){return t.getPositional()?t.getConeAngle()>=90?0:2:1}function rC(t,e){e.classHierarchy.push("vtkWebGPURenderer"),t.buildPass=n=>{if(n){if(!e.renderable)return;e.camera=e.renderable.getActiveCamera(),t.updateLights(),t.prepareNodes(),t.addMissingNode(e.camera),t.addMissingNodes(e.renderable.getViewPropsWithNestedProps()),t.removeUnusedNodes(),e.webgpuCamera=t.getViewNodeFor(e.camera),t.updateStabilizedMatrix()}},t.updateStabilizedMatrix=()=>{const n=e.camera.getClippingRange(),r=e.camera.getPositionByReference(),a=e.camera.getDirectionOfProjectionByReference(),s=[],i=[];xn(i,a,.5*(n[0]+n[1])),Nr(s,r,i),li(i,s,e.stabilizedCenter),Ku(i)/(n[1]-n[0])>e.recenterThreshold&&(e.stabilizedCenter=s,e.stabilizedTime.modified())},t.updateLights=()=>{let n=0;const r=e.renderable.getLightsByReference();for(let a=0;a<r.length;++a)r[a].getSwitch()>0&&n++;return n||(eC("No lights are on, creating one."),e.renderable.createLight()),n},t.updateUBO=()=>{var r;const n=e.UBO.getSendTime();if(e._parent.getMTime()>n||t.getMTime()>n||e.camera.getMTime()>n||e.renderable.getMTime()>n){const a=e.webgpuCamera.getKeyMatrices(t);e.UBO.setArray("WCVCMatrix",a.wcvc),e.UBO.setArray("SCPCMatrix",a.scpc),e.UBO.setArray("PCSCMatrix",a.pcsc),e.UBO.setArray("SCVCMatrix",a.scvc),e.UBO.setArray("VCPCMatrix",a.vcpc),e.UBO.setArray("WCVCNormals",a.normalMatrix),e.UBO.setValue("LightCount",e.renderable.getLights().length),e.UBO.setValue("MaxEnvironmentMipLevel",(r=e.renderable.getEnvironmentTexture())==null?void 0:r.getMipLevel()),e.UBO.setValue("BackgroundDiffuseStrength",e.renderable.getEnvironmentTextureDiffuseStrength()),e.UBO.setValue("BackgroundSpecularStrength",e.renderable.getEnvironmentTextureSpecularStrength());const s=t.getYInvertedTiledSizeAndOrigin();e.UBO.setArray("viewportSize",[s.usize,s.vsize]),e.UBO.setValue("cameraParallel",e.camera.getParallelProjection());const i=e._parent.getDevice();e.UBO.sendIfNeeded(i)}},t.updateSSBO=()=>{const n=e.renderable.getLights(),r=e.webgpuCamera.getKeyMatrices(t);let a=`${e.renderable.getMTime()}`;for(let s=0;s<n.length;s++)a+=n[s].getMTime();if(a!==e.lightTimeString){const s=new Float32Array(n.length*4),i=new Float32Array(n.length*4),o=new Float32Array(n.length*4),u=new Float32Array(n.length*4);for(let f=0;f<n.length;f++){const l=f*4,g=n[f].getPosition();Se(g,g,r.wcvc),s[l]=g[0],s[l+1]=g[1],s[l+2]=g[2],s[l+3]=0,i[l]=-n[f].getDirection()[0],i[l+1]=-n[f].getDirection()[1],i[l+2]=-n[f].getDirection()[2],i[l+3]=0,o[l]=n[f].getColor()[0],o[l+1]=n[f].getColor()[1],o[l+2]=n[f].getColor()[2],o[l+3]=n[f].getIntensity()*5,u[l]=nC(n[f]),u[l+1]=Math.cos(Ge(n[f].getConeAngle())),u[l+2]=Math.cos(Ge(n[f].getConeAngle()+n[f].getConeFalloff())),u[l+3]=0}e.SSBO.clearData(),e.SSBO.setNumberOfInstances(n.length),e.SSBO.addEntry("LightPos","vec4<f32>"),e.SSBO.addEntry("LightDir","vec4<f32>"),e.SSBO.addEntry("LightColor","vec4<f32>"),e.SSBO.addEntry("LightData","vec4<f32>"),e.SSBO.setAllInstancesFromArray("LightPos",s),e.SSBO.setAllInstancesFromArray("LightDir",i),e.SSBO.setAllInstancesFromArray("LightColor",o),e.SSBO.setAllInstancesFromArray("LightData",u);const c=e._parent.getDevice();e.SSBO.send(c)}e.lightTimeString=a},t.scissorAndViewport=n=>{const r=t.getYInvertedTiledSizeAndOrigin();n.getHandle().setViewport(r.lowerLeftU,r.lowerLeftV,r.usize,r.vsize,0,1),n.getHandle().setScissorRect(r.lowerLeftU,r.lowerLeftV,r.usize,r.vsize)},t.bindUBO=n=>{n.activateBindGroup(e.bindGroup)},t.opaquePass=n=>{n?(e.renderEncoder.begin(e._parent.getCommandEncoder()),t.updateUBO(),t.updateSSBO()):(t.scissorAndViewport(e.renderEncoder),t.clear(),e.renderEncoder.end())},t.clear=()=>{var s;if(e.renderable.getTransparent()||e.suppressClear)return;const n=e._parent.getDevice();if(!e.clearFSQ){e.clearFSQ=wr.newInstance(),e.clearFSQ.setDevice(n),e.clearFSQ.setPipelineHash("clearfsq"),e.clearFSQ.setFragmentShaderTemplate(Kc);const i=Yn.newInstance({label:"mapperUBO"});i.addEntry("FSQMatrix","mat4x4<f32>"),i.addEntry("BackgroundColor","vec4<f32>"),e.clearFSQ.setUBO(i),e.backgroundTex=e.renderable.getEnvironmentTexture()}if(e.clearFSQ.getPipelineHash()!=="clearfsqwithtexture"&&e.renderable.getUseEnvironmentTextureAsBackground()&&((s=e.backgroundTex)!=null&&s.getImageLoaded())){e.clearFSQ.setFragmentShaderTemplate(tC);const i=Yn.newInstance({label:"mapperUBO"});i.addEntry("FSQMatrix","mat4x4<f32>"),i.addEntry("BackgroundColor","vec4<f32>"),e.clearFSQ.setUBO(i);const o=n.getTextureManager().getTextureForVTKTexture(e.backgroundTex);if(o.getReady()){const u=o.createView("EnvironmentTexture");e.clearFSQ.setTextureViews([u]),e.backgroundTexLoaded=!0;const c=e.backgroundTex.getInterpolate()?"linear":"nearest";u.addSampler(n,{addressModeU:"repeat",addressModeV:"clamp-to-edge",addressModeW:"repeat",minFilter:c,magFilter:c,mipmapFilter:"linear"})}e.clearFSQ.setPipelineHash("clearfsqwithtexture")}else if(e.clearFSQ.getPipelineHash()==="clearfsqwithtexture"&&!e.renderable.getUseEnvironmentTextureAsBackground()){e.clearFSQ=wr.newInstance(),e.clearFSQ.setDevice(n),e.clearFSQ.setPipelineHash("clearfsq"),e.clearFSQ.setFragmentShaderTemplate(Kc);const i=Yn.newInstance({label:"mapperUBO"});i.addEntry("FSQMatrix","mat4x4<f32>"),i.addEntry("BackgroundColor","vec4<f32>"),e.clearFSQ.setUBO(i)}const r=e.webgpuCamera.getKeyMatrices(t),a=e.renderable.getBackgroundByReference();e.clearFSQ.getUBO().setArray("BackgroundColor",a),Ve(Pc,r.normalMatrix),ui(Oa,r.scvc,r.pcsc),ui(Oa,Pc,Oa),e.clearFSQ.getUBO().setArray("FSQMatrix",Oa),e.clearFSQ.getUBO().sendIfNeeded(n),e.clearFSQ.prepareAndDraw(e.renderEncoder)},t.translucentPass=n=>{n?e.renderEncoder.begin(e._parent.getCommandEncoder()):(t.scissorAndViewport(e.renderEncoder),e.renderEncoder.end())},t.volumeDepthRangePass=n=>{n?e.renderEncoder.begin(e._parent.getCommandEncoder()):(t.scissorAndViewport(e.renderEncoder),e.renderEncoder.end())},t.getAspectRatio=()=>{const n=e._parent.getSizeByReference(),r=e.renderable.getViewportByReference();return n[0]*(r[2]-r[0])/((r[3]-r[1])*n[1])},t.convertToOpenGLDepth=n=>e.webgpuCamera.convertToOpenGLDepth(n),t.getYInvertedTiledSizeAndOrigin=()=>{const n=t.getTiledSizeAndOrigin(),r=e._parent.getSizeByReference();return n.lowerLeftV=r[1]-n.vsize-n.lowerLeftV,n},t.getTiledSizeAndOrigin=()=>{const n=e.renderable.getViewportByReference(),r=[0,0,1,1],a=n[0]-r[0],s=n[1]-r[1],i=e._parent.normalizedDisplayToDisplay(a,s),o=Math.round(i[0]),u=Math.round(i[1]),c=n[2]-r[0],f=n[3]-r[1],l=e._parent.normalizedDisplayToDisplay(c,f);let g=Math.round(l[0])-o,p=Math.round(l[1])-u;return g<0&&(g=0),p<0&&(p=0),{usize:g,vsize:p,lowerLeftU:o,lowerLeftV:u}},t.getPropFromID=n=>{for(let r=0;r<e.children.length;r++)if((e.children[r].getPropID?e.children[r].getPropID():-1)===n)return e.children[r];return null},t.getStabilizedTime=()=>e.stabilizedTime.getMTime(),t.releaseGraphicsResources=()=>{e.selector!==null&&e.selector.releaseGraphicsResources()}}const aC={bindGroup:null,selector:null,renderEncoder:null,recenterThreshold:20,suppressClear:!1,stabilizedCenter:[0,0,0]};function sC(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,aC,n),be.extend(t,e,n),e.UBO=Yn.newInstance({label:"rendererUBO"}),e.UBO.addEntry("WCVCMatrix","mat4x4<f32>"),e.UBO.addEntry("SCPCMatrix","mat4x4<f32>"),e.UBO.addEntry("PCSCMatrix","mat4x4<f32>"),e.UBO.addEntry("SCVCMatrix","mat4x4<f32>"),e.UBO.addEntry("VCPCMatrix","mat4x4<f32>"),e.UBO.addEntry("WCVCNormals","mat4x4<f32>"),e.UBO.addEntry("viewportSize","vec2<f32>"),e.UBO.addEntry("LightCount","i32"),e.UBO.addEntry("MaxEnvironmentMipLevel","f32"),e.UBO.addEntry("BackgroundDiffuseStrength","f32"),e.UBO.addEntry("BackgroundSpecularStrength","f32"),e.UBO.addEntry("cameraParallel","u32"),e.SSBO=Oi.newInstance({label:"rendererLightSSBO"}),e.lightTimeString="",e.bindGroup=vg.newInstance({label:"rendererBG"}),e.bindGroup.setBindables([e.UBO,e.SSBO]),e.tmpMat4=le(new Float64Array(16)),e.stabilizedTime={},qe(e.stabilizedTime,{mtime:0}),lt(t,e,["bindGroup","stabilizedTime"]),Or(t,e,["stabilizedCenter"]),He(t,e,["renderEncoder","selector","suppressClear","UBO"]),rC(t,e)}const iC=De(sC,"vtkWebGPURenderer");ln("vtkRenderer",iC);const{CoordinateSystem:Xc}=ia;function oC(t,e){e.classHierarchy.push("vtkWebGPUActor"),t.buildPass=n=>{n&&(e.WebGPURenderer=t.getFirstAncestorOfType("vtkWebGPURenderer"),e.WebGPURenderWindow=e.WebGPURenderer.getFirstAncestorOfType("vtkWebGPURenderWindow"),e.propID===void 0&&(e.propID=e.WebGPURenderWindow.getUniquePropID()),t.prepareNodes(),t.addMissingNode(e.renderable.getMapper()),t.removeUnusedNodes())},t.traverseOpaquePass=n=>{!e.renderable||!e.renderable.getNestedVisibility()||!e.renderable.getIsOpaque()||e.WebGPURenderer.getSelector()&&!e.renderable.getNestedPickable()||(t.apply(n,!0),e.children[0]&&e.children[0].traverse(n),t.apply(n,!1))},t.traverseTranslucentPass=n=>{!e.renderable||!e.renderable.getNestedVisibility()||e.renderable.getIsOpaque()||e.WebGPURenderer.getSelector()&&!e.renderable.getNestedPickable()||(t.apply(n,!0),e.children[0]&&e.children[0].traverse(n),t.apply(n,!1))},t.queryPass=(n,r)=>{if(n){if(!e.renderable||!e.renderable.getVisibility())return;e.renderable.getIsOpaque()?r.incrementOpaqueActorCount():r.incrementTranslucentActorCount()}},t.getBufferShift=n=>(t.getKeyMatrices(n),e.bufferShift),t.getKeyMatrices=n=>{if(Math.max(e.renderable.getMTime(),n.getStabilizedTime())>e.keyMatricesTime.getMTime()){e.renderable.computeMatrix();const r=e.renderable.getMatrix();e.bufferShift[0]=r[3],e.bufferShift[1]=r[7],e.bufferShift[2]=r[11];const a=n.getStabilizedCenterByReference();e.renderable.getCoordinateSystem()===Xc.WORLD&&(e.bufferShift[0]-=a[0],e.bufferShift[1]-=a[1],e.bufferShift[2]-=a[2]),Ve(e.keyMatrices.bcwc,r),e.renderable.getIsIdentity()?le(e.keyMatrices.normalMatrix):(nt(e.keyMatrices.normalMatrix,e.keyMatrices.bcwc),e.keyMatrices.normalMatrix[3]=0,e.keyMatrices.normalMatrix[7]=0,e.keyMatrices.normalMatrix[11]=0,dt(e.keyMatrices.normalMatrix,e.keyMatrices.normalMatrix),Ve(e.keyMatrices.normalMatrix,e.keyMatrices.normalMatrix)),We(e.keyMatrices.bcwc,e.keyMatrices.bcwc,[-e.bufferShift[0],-e.bufferShift[1],-e.bufferShift[2]]),e.renderable.getCoordinateSystem()===Xc.WORLD?We(e.keyMatrices.bcsc,e.keyMatrices.bcwc,[-a[0],-a[1],-a[2]]):nt(e.keyMatrices.bcsc,e.keyMatrices.bcwc),e.keyMatricesTime.modified()}return e.keyMatrices}}const cC={keyMatricesTime:null,keyMatrices:null,propID:void 0,bufferShift:void 0};function uC(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,cC,n),be.extend(t,e,n),e.keyMatricesTime={},_.obj(e.keyMatricesTime,{mtime:0}),e.keyMatrices={normalMatrix:new Float64Array(16),bcwc:new Float64Array(16),bcsc:new Float64Array(16)},_.get(t,e,["propID","keyMatricesTime"]),e.bufferShift=[0,0,0,0],oC(t,e)}const fC=_.newInstance(uC);ln("vtkActor",fC);const{CoordinateSystem:Ic}=ia;function lC(t,e){e.classHierarchy.push("vtkWebGPUActor2D"),t.buildPass=n=>{n&&(e.WebGPURenderer=t.getFirstAncestorOfType("vtkWebGPURenderer"),e.WebGPURenderWindow=e.WebGPURenderer.getFirstAncestorOfType("vtkWebGPURenderWindow"),e.propID===void 0&&(e.propID=e.WebGPURenderWindow.getUniquePropID()),t.prepareNodes(),t.addMissingNode(e.renderable.getMapper()),t.removeUnusedNodes())},t.traverseOpaquePass=n=>{!e.renderable||!e.renderable.getNestedVisibility()||!e.renderable.getIsOpaque()||e.WebGPURenderer.getSelector()&&!e.renderable.getNestedPickable()||(t.apply(n,!0),e.children[0]&&e.children[0].traverse(n),t.apply(n,!1))},t.traverseTranslucentPass=n=>{!e.renderable||!e.renderable.getNestedVisibility()||e.renderable.getIsOpaque()||e.WebGPURenderer.getSelector()&&!e.renderable.getNestedPickable()||(t.apply(n,!0),e.children[0]&&e.children[0].traverse(n),t.apply(n,!1))},t.queryPass=(n,r)=>{if(n){if(!e.renderable||!e.renderable.getVisibility())return;e.renderable.getIsOpaque()?r.incrementOpaqueActorCount():r.incrementTranslucentActorCount()}},t.getBufferShift=n=>(t.getKeyMatrices(n),e.bufferShift),t.getKeyMatrices=n=>{if(Math.max(e.renderable.getMTime(),n.getStabilizedTime())>e.keyMatricesTime.getMTime()){e.bufferShift[0]=0,e.bufferShift[1]=0,e.bufferShift[2]=0;const r=n.getStabilizedCenterByReference();e.renderable.getCoordinateSystem()===Ic.WORLD&&(e.bufferShift[0]-=r[0],e.bufferShift[1]-=r[1],e.bufferShift[2]-=r[2]),le(e.keyMatrices.bcwc),le(e.keyMatrices.normalMatrix),We(e.keyMatrices.bcwc,e.keyMatrices.bcwc,[-e.bufferShift[0],-e.bufferShift[1],-e.bufferShift[2]]),e.renderable.getCoordinateSystem()===Ic.WORLD?We(e.keyMatrices.bcsc,e.keyMatrices.bcwc,[-r[0],-r[1],-r[2]]):nt(e.keyMatrices.bcsc,e.keyMatrices.bcwc),e.keyMatricesTime.modified()}return e.keyMatrices}}const gC={keyMatricesTime:null,keyMatrices:null,propID:void 0,bufferShift:void 0};function pC(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,gC,n),be.extend(t,e,n),e.keyMatricesTime={},_.obj(e.keyMatricesTime,{mtime:0}),e.keyMatrices={normalMatrix:new Float64Array(16),bcwc:new Float64Array(16),bcsc:new Float64Array(16)},_.get(t,e,["propID","keyMatricesTime"]),e.bufferShift=[0,0,0,0],lC(t,e)}const hC=_.newInstance(pC);ln("vtkActor2D",hC);function dC(t,e){e.classHierarchy.push("vtkWebGPUCubeAxesActor"),t.buildPass=n=>{n&&(e.WebGPURenderer=t.getFirstAncestorOfType("vtkWebGPURenderer"),e.WebGPURenderWindow=e.WebGPURenderer.getParent(),e.CubeAxesActorHelper.getRenderable()||e.CubeAxesActorHelper.setRenderable(e.renderable),t.prepareNodes(),t.addMissingNode(e.CubeAxesActorHelper.getTmActor()),t.addMissingNode(e.renderable.getGridActor()),t.removeUnusedNodes())},t.opaquePass=(n,r)=>{if(n){const a=e.WebGPURenderer?e.WebGPURenderer.getRenderable().getActiveCamera():null,s=e.WebGPURenderer.getTiledSizeAndOrigin();e.CubeAxesActorHelper.updateAPISpecificData([s.usize,s.vsize],a,e.WebGPURenderWindow.getRenderable())}}}const vC={};function yC(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,vC,n),be.extend(t,e,n),e.CubeAxesActorHelper=Xl.newCubeAxesActorHelper(),dC(t,e)}const TC=De(yC,"vtkWebGPUCubeAxesActor");ln("vtkCubeAxesActor",TC);const{DisplayLocation:Di}=ug;function xC(t,e){e.classHierarchy.push("vtkProperty2D"),t.setDisplayLocationToBackground=()=>t.setDisplayLocation(Di.BACKGROUND),t.setDisplayLocationToForeground=()=>t.setDisplayLocation(Di.FOREGROUND),t.setRepresentationToWireframe=()=>t.setRepresentation(ut.WIREFRAME),t.setRepresentationToSurface=()=>t.setRepresentation(ut.SURFACE),t.setRepresentationToPoints=()=>t.setRepresentation(ut.POINTS),t.getRepresentationAsString=()=>_.enumToString(ut,e.representation)}const SC={color:[1,1,1],opacity:1,pointSize:1,lineWidth:1,representation:ut.SURFACE,displayLocation:Di.FOREGROUND};function Mg(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,SC,n),_.obj(t,e),_.setGet(t,e,["opacity","lineWidth","pointSize","displayLocation","representation"]),_.setGetArray(t,e,["color"],3),xC(t,e)}const CC=_.newInstance(Mg,"vtkProperty2D");var wC={newInstance:CC,extend:Mg,...ug};const{BufferUsage:je,PrimitiveTypes:st}=mn,{Representation:Da}=mr,{ScalarMode:ma}=Wt,{CoordinateSystem:_C}=ia,{DisplayLocation:EC}=wC,RC=`
- //VTK::Renderer::Dec
- //VTK::Color::Dec
- //VTK::Normal::Dec
- //VTK::TCoord::Dec
- //VTK::Select::Dec
- //VTK::Mapper::Dec
- //VTK::IOStructs::Dec
- @vertex
- fn main(
- //VTK::IOStructs::Input
- )
- //VTK::IOStructs::Output
- {
- var output : vertexOutput;
- var vertex: vec4<f32> = vertexBC;
- //VTK::Color::Impl
- //VTK::Normal::Impl
- //VTK::TCoord::Impl
- //VTK::Select::Impl
- //VTK::Position::Impl
- return output;
- }
- `,OC=`
- struct PBRData {
- diffuse: vec3<f32>,
- specular: vec3<f32>,
- }
- // Dot product with the max already in it
- fn mdot(a: vec3<f32>, b: vec3<f32>) -> f32 {
- return max(0.0, dot(a, b));
- }
- // Dot product with a max in it that does not allow for negative values
- // Physically based rendering is accurate as long as normals are accurate,
- // however this is pretty often not the case. In order to prevent negative
- // values from ruining light calculations and creating zones of zero light,
- // this remapping is used, which smoothly clamps the dot product between
- // zero and one while still maintaining a good amount of accuracy.
- fn cdot(a: vec3<f32>, b: vec3<f32>) -> f32 {
- var d: f32 = max(0.0, dot(a, b));
- d = pow((d + 1.0) / 2.0, 2.6);
- return d;
- }
- // Lambertian diffuse model
- fn lambertDiffuse(base: vec3<f32>, N: vec3<f32>, L: vec3<f32>) -> vec3<f32> {
- var pi: f32 = 3.14159265359;
- var NdotL: f32 = mdot(N, L);
- NdotL = pow(NdotL, 1.5);
- return (base/pi)*NdotL;
- }
- // Yasuhiro Fujii improvement on the Oren-Nayar model
- // https://mimosa-pudica.net/improved-oren-nayar.html
- // p is surface color, o is roughness
- fn fujiiOrenNayar(p: vec3<f32>, o: f32, N: vec3<f32>, L: vec3<f32>, V: vec3<f32>) -> vec3<f32> {
- var invpi: f32 = 0.31830988618; // 1/pi
- var o2 = o*o;
- var NdotL: f32 = mdot(N, L);
- NdotL = pow(NdotL, 1.5); // Less physically accurate, but hides the "seams" between lights better
- var NdotV: f32 = mdot(N, V);
- var LdotV: f32 = mdot(L, V);
- var s: f32 = LdotV - NdotL*NdotV;
- var t: f32 = mix(1.0, max(NdotL, NdotV), step(0.0, s)); // Mix with step is the equivalent of an if statement
- var A: vec3<f32> = 0.5*(o2 / (o2 + 0.33)) + 0.17*p*(o2 / (o2 + 0.13));
- A = invpi*(1 - A);
- var B: f32 = 0.45*(o2 / (o2 + 0.09));
- B = invpi*B;
- return p*NdotL*(A + B*(s/t));
- }
- // Fresnel portion of BRDF (IOR only, simplified)
- fn schlickFresnelIOR(V: vec3<f32>, N: vec3<f32>, ior: f32, k: f32) -> f32 {
- var NdotV: f32 = mdot(V, N);
- var F0: f32 = (pow((ior - 1.0), 2.0) + k*k) / (pow((ior + 1.0), 2.0) + k*k); // This takes into account the roughness, which the other one does not
- return F0 + (1.0 - F0) * pow((1.0-NdotV), 5.0);
- }
- // Fresnel portion of BRDF (Color ior, better)
- fn schlickFresnelRGB(V: vec3<f32>, N: vec3<f32>, F0: vec3<f32>) -> vec3<f32> {
- var NdotV: f32 = mdot(V, N);
- return F0 + (1.0 - F0) * pow((1-NdotV), 5.0);
- }
- // Normal portion of BRDF
- // https://learnopengl.com/PBR/Theory
- // Trowbridge-Reitz GGX functions: normal, halfway, roughness^2
- fn trGGX(N: vec3<f32>, H: vec3<f32>, a: f32) -> f32 {
- var pi: f32 = 3.14159265359;
- var a2: f32 = a*a;
- var NdotH = mdot(N, H);
- var NdotH2 = NdotH*NdotH;
-
- var denom: f32 = NdotH2 * (a2 - 1.0) + 1.0;
- return a2 / max((pi*denom*denom), 0.000001);
- }
- // A VERY bad approximation of anisotropy. Real anisotropic calculations require tangent and bitangent
- fn anisotrophicTrGGX(N: vec3<f32>, H: vec3<f32>, O: vec3<f32>, s: f32, a: f32) -> f32 {
- var Op: vec3<f32> = (rendererUBO.WCVCNormals * vec4<f32>(normalize(O) * s, 0.)).xyz;
- var ggx1: f32 = trGGX(N + Op*s, H, a);
- var ggx2: f32 = trGGX(N - Op*s, H, a);
- return (0.5 * ggx1 + 0.5 * ggx2);
- }
- // Geometry portion of BRDF
- fn schlickGGX(N: vec3<f32>, X: vec3<f32>, k: f32) -> f32 {
- var NdotX = cdot(N, X);
- return NdotX / max(0.000001, (NdotX*(1.0-k) + k));
- }
- fn smithSurfaceRoughness(N: vec3<f32>, V: vec3<f32>, L: vec3<f32>, k: f32) -> f32 {
- var ggx1: f32 = min(1.0, schlickGGX(N, V, k));
- var ggx2: f32 = min(1.0, schlickGGX(N, L, k));
- return ggx1*ggx2;
- }
- // BRDF Combination
- fn cookTorrance(D: f32, F: f32, G: f32, N: vec3<f32>, V: vec3<f32>, L: vec3<f32>) -> f32 {
- var num: f32 = D*F*G;
- var denom: f32 = 4*cdot(V, N)*cdot(L, N);
- return num / max(denom, 0.000001);
- }
- // Different lighting calculations for different light sources
- fn calcDirectionalLight(N: vec3<f32>, V: vec3<f32>, ior: f32, roughness: f32, metallic: f32, direction: vec3<f32>, color: vec3<f32>, base: vec3<f32>) -> PBRData {
- var L: vec3<f32> = normalize(direction); // Light Vector
- var H: vec3<f32> = normalize(L + V); // Halfway Vector
- var alpha = roughness*roughness;
- var k: f32 = alpha*alpha / 2;
- var D: f32 = trGGX(N, H, alpha); // Distribution
- // var F: f32 = schlickFresnelIOR(V, N, ior, k); // Fresnel
- var G: f32 = smithSurfaceRoughness(N, V, L, k); // Geometry
- var brdf: f32 = cookTorrance(D, 1.0, G, N, V, L); // Fresnel term is replaced with 1 because it is added later
- var incoming: vec3<f32> = color;
- var angle: f32 = mdot(L, N);
- angle = pow(angle, 1.5);
- var specular: vec3<f32> = brdf*incoming*angle;
- // Oren-Nayar gives a clay-like effect when fully rough which some people may not want, so it might be better to give a separate
- // control property for the diffuse vs specular roughness
- var diffuse: vec3<f32> = incoming*fujiiOrenNayar(base, roughness, N, L, V);
- // Stores the specular and diffuse separately to allow for finer post processing
- var out = PBRData(diffuse, specular);
-
- return out; // Returns angle along with color of light so the final color can be multiplied by angle as well (creates black areas)
- }
- // TODO: find some way to reduce the number of arguments going in here
- fn calcPointLight(N: vec3<f32>, V: vec3<f32>, fragPos: vec3<f32>, ior: f32, roughness: f32, metallic: f32, position: vec3<f32>, color: vec3<f32>, base: vec3<f32>) -> PBRData {
- var L: vec3<f32> = normalize(position - fragPos); // Light Vector
- var H: vec3<f32> = normalize(L + V); // Halfway Vector
- var dist = distance(position, fragPos);
- var alpha = roughness*roughness;
- var k: f32 = alpha*alpha / 2.0; // could also be pow(alpha + 1.0, 2) / 8
- var D: f32 = trGGX(N, H, alpha); // Distribution
- // var F: f32 = schlickFresnelIOR(V, N, ior, k); // Fresnel
- var G: f32 = smithSurfaceRoughness(N, V, L, k); // Geometry
- var brdf: f32 = cookTorrance(D, 1.0, G, N, V, L);
- var incoming: vec3<f32> = color * (1.0 / (dist*dist));
- var angle: f32 = mdot(L, N);
- angle = pow(angle, 1.5); // Smoothing factor makes it less accurate, but reduces ugly "seams" bewteen light sources
- var specular: vec3<f32> = brdf*incoming*angle;
- var diffuse: vec3<f32> = incoming*fujiiOrenNayar(base, roughness, N, L, V);
- // Stores the specular and diffuse separately to allow for finer post processing
- // Could also be done (propably more properly) with a struct
- var out = PBRData(diffuse, specular);
-
- return out; // Returns angle along with color of light so the final color can be multiplied by angle as well (creates black areas)
- }
- // For a reason unknown to me, spheres dont seem to behave propperly with head-on spot lights
- fn calcSpotLight(N: vec3<f32>, V: vec3<f32>, fragPos: vec3<f32>, ior: f32, roughness: f32, metallic: f32, position: vec3<f32>, direction: vec3<f32>, cones: vec2<f32>, color: vec3<f32>, base: vec3<f32>) -> PBRData {
- var L: vec3<f32> = normalize(position - fragPos);
- var H: vec3<f32> = normalize(L + V); // Halfway Vector
- var dist = distance(position, fragPos);
- var alpha = roughness*roughness;
- var k: f32 = alpha*alpha / 2.0; // could also be pow(alpha + 1.0, 2) / 8
- var D: f32 = trGGX(N, H, alpha); // Distribution
- // var F: f32 = schlickFresnelIOR(V, N, ior, k); // Fresnel
- var G: f32 = smithSurfaceRoughness(N, V, L, k); // Geometry
- var brdf: f32 = cookTorrance(D, 1.0, G, N, V, L);
-
- // Cones.x is the inner phi and cones.y is the outer phi
- var theta: f32 = mdot(normalize(direction), L);
- var epsilon: f32 = cones.x - cones.y;
- var intensity: f32 = (theta - cones.y) / epsilon;
- intensity = clamp(intensity, 0.0, 1.0);
- intensity /= dist*dist;
- var incoming: vec3<f32> = color * intensity;
- var angle: f32 = mdot(L, N);
- angle = pow(angle, 1.5); // Smoothing factor makes it less accurate, but reduces ugly "seams" bewteen light sources
- var specular: vec3<f32> = brdf*incoming*angle;
- var diffuse: vec3<f32> = incoming*fujiiOrenNayar(base, roughness, N, L, V);
- // Stores the specular and diffuse separately to allow for finer post processing
- // Could also be done (propably more properly) with a struct
- var out = PBRData(diffuse, specular);
-
- return out; // Returns angle along with color of light so the final color can be multiplied by angle as well (creates black areas)
- }
- // Environment mapping stuff
- // Takes in a vector and converts it to an equivalent coordinate in a rectilinear texture. Should be replaced with cubemaps at some point
- fn vecToRectCoord(dir: vec3<f32>) -> vec2<f32> {
- var tau: f32 = 6.28318530718;
- var pi: f32 = 3.14159265359;
- var out: vec2<f32> = vec2<f32>(0.0);
- out.x = atan2(dir.z, dir.x) / tau;
- out.x += 0.5;
- var phix: f32 = length(vec2(dir.x, dir.z));
- out.y = atan2(dir.y, phix) / pi + 0.5;
- return out;
- }
- //VTK::Renderer::Dec
- //VTK::Color::Dec
- //VTK::TCoord::Dec
- // optional surface normal declaration
- //VTK::Normal::Dec
- //VTK::Select::Dec
- //VTK::RenderEncoder::Dec
- //VTK::Mapper::Dec
- //VTK::IOStructs::Dec
- @fragment
- fn main(
- //VTK::IOStructs::Input
- )
- //VTK::IOStructs::Output
- {
- var output : fragmentOutput;
- // Temporary ambient, diffuse, and opacity
- var ambientColor: vec4<f32> = mapperUBO.AmbientColor;
- var diffuseColor: vec4<f32> = mapperUBO.DiffuseColor;
- var opacity: f32 = mapperUBO.Opacity;
- // This should be declared somewhere else
- var _diffuseMap: vec4<f32> = vec4<f32>(1.0);
- var _roughnessMap: vec4<f32> = vec4<f32>(1.0);
- var _metallicMap: vec4<f32> = vec4<f32>(1.0);
- var _normalMap: vec4<f32> = vec4<f32>(0.0, 0.0, 1.0, 0.0); // normal map was setting off the normal vector detection in fragment
- var _ambientOcclusionMap: vec4<f32> = vec4<f32>(1.);
- var _emissionMap: vec4<f32> = vec4<f32>(0.);
- //VTK::Color::Impl
- //VTK::TCoord::Impl
- //VTK::Normal::Impl
- var computedColor: vec4<f32> = vec4<f32>(diffuseColor.rgb, 1.0);
- //VTK::Light::Impl
- //VTK::Select::Impl
- if (computedColor.a == 0.0) { discard; };
- //VTK::Position::Impl
- //VTK::RenderEncoder::Impl
- return output;
- }
- `;function Yc(t){return t.indexOf("edge")>=0}function DC(t,e){e.classHierarchy.push("vtkWebGPUCellArrayMapper"),t.buildPass=n=>{n&&(e.is2D?(e.WebGPUActor=t.getFirstAncestorOfType("vtkWebGPUActor2D"),e.forceZValue=!0):(e.WebGPUActor=t.getFirstAncestorOfType("vtkWebGPUActor"),e.forceZValue=!1),e.coordinateSystem=e.WebGPUActor.getRenderable().getCoordinateSystem(),e.useRendererMatrix=e.coordinateSystem!==_C.DISPLAY,e.WebGPURenderer=e.WebGPUActor.getFirstAncestorOfType("vtkWebGPURenderer"),e.WebGPURenderWindow=e.WebGPURenderer.getParent(),e.device=e.WebGPURenderWindow.getDevice())},t.translucentPass=n=>{n&&(t.prepareToDraw(e.WebGPURenderer.getRenderEncoder()),e.renderEncoder.registerDrawCallback(e.pipeline,t.draw))},t.opaquePass=n=>{n&&(t.prepareToDraw(e.WebGPURenderer.getRenderEncoder()),e.renderEncoder.registerDrawCallback(e.pipeline,t.draw))},t.updateUBO=()=>{var s;const r=e.WebGPUActor.getRenderable().getProperty(),a=e.UBO.getSendTime();if(t.getMTime()>a||r.getMTime()>a||e.renderable.getMTime()>a){const i=e.WebGPUActor.getKeyMatrices(e.WebGPURenderer);if(e.UBO.setArray("BCWCMatrix",i.bcwc),e.UBO.setArray("BCSCMatrix",i.bcsc),e.UBO.setArray("MCWCNormals",i.normalMatrix),e.is2D){e.UBO.setValue("ZValue",e.WebGPUActor.getRenderable().getProperty().getDisplayLocation()===EC.FOREGROUND?1:0);const c=r.getColorByReference();e.UBO.setValue("AmbientIntensity",1),e.UBO.setArray("DiffuseColor",[c[0],c[1],c[2],1]),e.UBO.setValue("DiffuseIntensity",0),e.UBO.setValue("SpecularIntensity",0)}else{let c=r.getAmbientColorByReference();e.UBO.setValue("AmbientIntensity",r.getAmbient()),e.UBO.setArray("AmbientColor",[c[0],c[1],c[2],1]),e.UBO.setValue("DiffuseIntensity",r.getDiffuse()),c=r.getDiffuseColorByReference(),e.UBO.setArray("DiffuseColor",[c[0],c[1],c[2],1]),e.UBO.setValue("Roughness",r.getRoughness()),e.UBO.setValue("BaseIOR",r.getBaseIOR()),e.UBO.setValue("Metallic",r.getMetallic()),e.UBO.setValue("NormalStrength",r.getNormalStrength()),e.UBO.setValue("Emission",r.getEmission()),e.UBO.setValue("SpecularIntensity",r.getSpecular()),c=r.getSpecularColorByReference(),e.UBO.setArray("SpecularColor",[c[0],c[1],c[2],1])}const o=(s=r.getEdgeColorByReference)==null?void 0:s.call(r);o&&e.UBO.setArray("EdgeColor",[o[0],o[1],o[2],1]),e.UBO.setValue("LineWidth",r.getLineWidth()),e.UBO.setValue("Opacity",r.getOpacity()),e.UBO.setValue("PropID",e.WebGPUActor.getPropID());const u=e.WebGPURenderWindow.getDevice();e.UBO.sendIfNeeded(u)}},t.haveWideLines=()=>{const n=e.WebGPUActor.getRenderable(),r=n.getProperty().getRepresentation();return n.getProperty().getLineWidth()<=1||e.primitiveType===st.Verts?!1:e.primitiveType===st.Triangles||e.primitiveType===st.TriangleStrips?r===Da.WIREFRAME:!0},t.replaceShaderPosition=(n,r,a)=>{const s=r.getShaderDescription("vertex");s.addBuiltinOutput("vec4<f32>","@builtin(position) Position"),s.hasOutput("vertexVC")||s.addOutput("vec4<f32>","vertexVC");let i=s.getCode();e.useRendererMatrix?(i=oe.substitute(i,"//VTK::Position::Impl",[" var pCoord: vec4<f32> = rendererUBO.SCPCMatrix*mapperUBO.BCSCMatrix*vertexBC;"," output.vertexVC = rendererUBO.SCVCMatrix * mapperUBO.BCSCMatrix * vec4<f32>(vertexBC.xyz, 1.0);","//VTK::Position::Impl"]).result,e.forceZValue&&(i=oe.substitute(i,"//VTK::Position::Impl",["pCoord = vec4<f32>(pCoord.xyz/pCoord.w, 1.0);","pCoord.z = mapperUBO.ZValue;","//VTK::Position::Impl"]).result)):(i=oe.substitute(i,"//VTK::Position::Impl",[" var pCoord: vec4<f32> = mapperUBO.BCSCMatrix*vertexBC;"," pCoord.x = 2.0* pCoord.x / rendererUBO.viewportSize.x - 1.0;"," pCoord.y = 2.0* pCoord.y / rendererUBO.viewportSize.y - 1.0;"," pCoord.z = 0.5 - 0.5 * pCoord.z;","//VTK::Position::Impl"]).result,e.forceZValue&&(i=oe.substitute(i,"//VTK::Position::Impl",[" pCoord.z = mapperUBO.ZValue;","//VTK::Position::Impl"]).result)),t.haveWideLines()&&(s.addBuiltinInput("u32","@builtin(instance_index) instanceIndex"),i=oe.substitute(i,"//VTK::Position::Impl",[" var tmpPos: vec4<f32> = pCoord;"," var numSteps: f32 = ceil(mapperUBO.LineWidth - 1.0);"," var offset: f32 = (mapperUBO.LineWidth - 1.0) * (f32(input.instanceIndex / 2u) - numSteps/2.0) / numSteps;"," var tmpPos2: vec3<f32> = tmpPos.xyz / tmpPos.w;"," tmpPos2.x = tmpPos2.x + 2.0 * (f32(input.instanceIndex) % 2.0) * offset / rendererUBO.viewportSize.x;"," tmpPos2.y = tmpPos2.y + 2.0 * (f32(input.instanceIndex + 1u) % 2.0) * offset / rendererUBO.viewportSize.y;"," tmpPos2.z = min(1.0, tmpPos2.z + 0.00001);"," pCoord = vec4<f32>(tmpPos2.xyz * tmpPos.w, tmpPos.w);","//VTK::Position::Impl"]).result),i=oe.substitute(i,"//VTK::Position::Impl",[" output.Position = pCoord;"]).result,s.setCode(i)},e.shaderReplacements.set("replaceShaderPosition",t.replaceShaderPosition),t.replaceShaderNormal=(n,r,a)=>{const s=a.getBuffer("normalMC"),i=e.WebGPUActor.getRenderable();if(s){const o=r.getShaderDescription("vertex");o.hasOutput("normalVC")||o.addOutput("vec3<f32>","normalVC",s.getArrayInformation()[0].interpolation),o.hasOutput("tangentVC")||o.addOutput("vec3<f32>","tangentVC",s.getArrayInformation()[0].interpolation),o.hasOutput("bitangentVC")||o.addOutput("vec3<f32>","bitangentVC",s.getArrayInformation()[0].interpolation);let u=o.getCode();u=oe.substitute(u,"//VTK::Normal::Impl",[" output.normalVC = normalize((rendererUBO.WCVCNormals * mapperUBO.MCWCNormals * normalMC).xyz);"," var c1: vec3<f32> = cross(output.normalVC, vec3<f32>(0, 0, 1));"," var c2: vec3<f32> = cross(output.normalVC, vec3<f32>(0, 1, 0));"," var tangent: vec3<f32> = mix(c1, c2, distance(c1, c2));"," output.tangentVC = normalize(tangent);"," output.bitangentVC = normalize(cross(output.normalVC, tangent));"]).result,o.setCode(u);const c=r.getShaderDescription("fragment");u=c.getCode(),i.getProperty().getNormalTexture()?u=oe.substitute(u,"//VTK::Normal::Impl",[" var normal: vec3<f32> = input.normalVC;"," if (!input.frontFacing) { normal = -normal; }"," var tangent: vec3<f32> = input.tangentVC;"," var bitangent: vec3<f32> = input.bitangentVC;"," var TCVCMatrix: mat3x3<f32> = mat3x3<f32>("," tangent.x, bitangent.x, normal.x,"," tangent.y, bitangent.y, normal.y,"," tangent.z, bitangent.z, normal.z,"," );"," var mappedNormal: vec3<f32> = TCVCMatrix * (_normalMap.xyz * 2 - 1);"," normal = mix(normal, mappedNormal, mapperUBO.NormalStrength);"," normal = normalize(normal);"]).result:u=oe.substitute(u,"//VTK::Normal::Impl",[" var normal: vec3<f32> = input.normalVC;"," if (!input.frontFacing) { normal = -normal; }"," normal = normalize(normal);"]).result,c.setCode(u)}},e.shaderReplacements.set("replaceShaderNormal",t.replaceShaderNormal),t.replaceShaderLight=(n,r,a)=>{var c;if(n.includes("sel"))return;const s=r.getShaderDescription("vertex");s.hasOutput("vertexVC")||s.addOutput("vec4<f32>","vertexVC");const i=e.WebGPURenderer.getRenderable(),o=r.getShaderDescription("fragment");let u=o.getCode();if(u.includes("var normal:")&&e.useRendererMatrix&&!Yc(n)&&!e.is2D&&!n.includes("sel")){const f=[" var pi: f32 = 3.14159265359;"," var fragPos: vec3<f32> = vec3<f32>(input.vertexVC.xyz);"," var V: vec3<f32> = mix(normalize(-fragPos), vec3<f32>(0, 0, 1), f32(rendererUBO.cameraParallel)); // View Vector"," var baseColor: vec3<f32> = _diffuseMap.rgb * diffuseColor.rgb;"," var roughness: f32 = max(0.000001, mapperUBO.Roughness * _roughnessMap.r);"," var metallic: f32 = mapperUBO.Metallic * _metallicMap.r;"," var alpha: f32 = roughness*roughness;"," var ior: f32 = mapperUBO.BaseIOR;"," var k: f32 = alpha*alpha / 2;"," var diffuse: vec3<f32> = vec3<f32>(0.);"," var specular: vec3<f32> = vec3<f32>(0.);"," var emission: vec3<f32> = _emissionMap.rgb * mapperUBO.Emission;"," {"," var i: i32 = 0;"," loop {"," if !(i < rendererUBO.LightCount) { break; }"," switch (i32(rendererLightSSBO.values[i].LightData.x)) {"," // Point Light"," case 0 {"," var color: vec3<f32> = rendererLightSSBO.values[i].LightColor.rgb * rendererLightSSBO.values[i].LightColor.w;"," var pos: vec3<f32> = (rendererLightSSBO.values[i].LightPos).xyz;"," var calculated: PBRData = calcPointLight(normal, V, fragPos, ior, roughness, metallic, pos, color, baseColor);"," diffuse += max(vec3<f32>(0), calculated.diffuse);"," specular += max(vec3<f32>(0), calculated.specular);"," }"," // Directional light"," case 1 {"," var dir: vec3<f32> = (rendererUBO.WCVCNormals * vec4<f32>(normalize(rendererLightSSBO.values[i].LightDir.xyz), 0.)).xyz;"," dir = normalize(dir);"," var color: vec3<f32> = rendererLightSSBO.values[i].LightColor.rgb * rendererLightSSBO.values[i].LightColor.w;"," var calculated: PBRData = calcDirectionalLight(normal, V, ior, roughness, metallic, dir, color, baseColor); // diffuseColor.rgb needs to be fixed with a more dynamic diffuse color"," diffuse += max(vec3<f32>(0), calculated.diffuse);"," specular += max(vec3<f32>(0), calculated.specular);"," }"," // Spot Light"," case 2 {"," var color: vec3<f32> = rendererLightSSBO.values[i].LightColor.rgb * rendererLightSSBO.values[i].LightColor.w;"," var pos: vec3<f32> = (rendererLightSSBO.values[i].LightPos).xyz;"," var dir: vec3<f32> = (rendererUBO.WCVCNormals * vec4<f32>(normalize(rendererLightSSBO.values[i].LightDir.xyz), 0.)).xyz;"," dir = normalize(dir);"," var cones: vec2<f32> = vec2<f32>(rendererLightSSBO.values[i].LightData.y, rendererLightSSBO.values[i].LightData.z);"," var calculated: PBRData = calcSpotLight(normal, V, fragPos, ior, roughness, metallic, pos, dir, cones, color, baseColor);"," diffuse += max(vec3<f32>(0), calculated.diffuse);"," specular += max(vec3<f32>(0), calculated.specular);"," }"," default { continue; }"," }"," continuing { i++; }"," }"," }"," var fresnel: f32 = schlickFresnelIOR(V, normal, ior, k); // Fresnel"," fresnel = min(1.0, fresnel);"," // This could be controlled with its own variable (that isnt base color) for better artistic control"," var fresnelMetallic: vec3<f32> = schlickFresnelRGB(V, normal, baseColor); // Fresnel for metal, takes color into account"," var kS: vec3<f32> = mix(vec3<f32>(fresnel), fresnelMetallic, metallic);"," kS = min(vec3<f32>(1.0), kS);"," var kD: vec3<f32> = (1.0 - kS) * (1.0 - metallic);"," var PBR: vec3<f32> = mapperUBO.DiffuseIntensity*kD*diffuse + kS*specular;"," PBR += emission;"," computedColor = vec4<f32>(PBR, mapperUBO.Opacity);"];(c=i.getEnvironmentTexture())!=null&&c.getImageLoaded()&&f.push(" // To get diffuse IBL, the texture is sampled with normals in worldspace"," var diffuseIBLCoords: vec3<f32> = (transpose(rendererUBO.WCVCNormals) * vec4<f32>(normal, 1.)).xyz;"," var diffuseCoords: vec2<f32> = vecToRectCoord(diffuseIBLCoords);"," // To get specular IBL, the texture is sampled as the worldspace reflection between the normal and view vectors"," // Reflections are first calculated in viewspace, then converted to worldspace to sample the environment"," var VreflN: vec3<f32> = normalize(reflect(-V, normal));"," var reflectionIBLCoords = (transpose(rendererUBO.WCVCNormals) * vec4<f32>(VreflN, 1.)).xyz;"," var specularCoords: vec2<f32> = vecToRectCoord(reflectionIBLCoords);"," var diffuseIBL = textureSampleLevel(EnvironmentTexture, EnvironmentTextureSampler, diffuseCoords, rendererUBO.MaxEnvironmentMipLevel);"," var level = roughness * rendererUBO.MaxEnvironmentMipLevel;"," var specularIBL = textureSampleLevel(EnvironmentTexture, EnvironmentTextureSampler, specularCoords, level);"," var specularIBLContribution: vec3<f32> = specularIBL.rgb*rendererUBO.BackgroundSpecularStrength;"," computedColor += vec4<f32>(specularIBLContribution*kS, 0);"," var diffuseIBLContribution: vec3<f32> = diffuseIBL.rgb*rendererUBO.BackgroundDiffuseStrength;"," diffuseIBLContribution *= baseColor * _ambientOcclusionMap.rgb;"," computedColor += vec4<f32>(diffuseIBLContribution*kD, 0);"),u=oe.substitute(u,"//VTK::Light::Impl",f).result,o.setCode(u)}else u=oe.substitute(u,"//VTK::Light::Impl",[" var diffuse: vec3<f32> = diffuseColor.rgb;"," var specular: vec3<f32> = mapperUBO.SpecularColor.rgb * mapperUBO.SpecularColor.a;"," computedColor = vec4<f32>(diffuse * _diffuseMap.rgb, mapperUBO.Opacity);"]).result,o.setCode(u)},e.shaderReplacements.set("replaceShaderLight",t.replaceShaderLight),t.replaceShaderColor=(n,r,a)=>{if(Yc(n)){const c=r.getShaderDescription("fragment");let f=c.getCode();f=oe.substitute(f,"//VTK::Color::Impl",["ambientColor = mapperUBO.EdgeColor;","diffuseColor = mapperUBO.EdgeColor;"]).result,c.setCode(f);return}const s=a.getBuffer("colorVI");if(!s)return;const i=r.getShaderDescription("vertex");i.addOutput("vec4<f32>","color",s.getArrayInformation()[0].interpolation);let o=i.getCode();o=oe.substitute(o,"//VTK::Color::Impl",[" output.color = colorVI;"]).result,i.setCode(o);const u=r.getShaderDescription("fragment");o=u.getCode(),o=oe.substitute(o,"//VTK::Color::Impl",["ambientColor = input.color;","diffuseColor = input.color;","opacity = mapperUBO.Opacity * input.color.a;"]).result,u.setCode(o)},e.shaderReplacements.set("replaceShaderColor",t.replaceShaderColor),t.replaceShaderTCoord=(n,r,a)=>{var p,y,h,d,x,S,v,T,w,C,R,m,B,M,D,L,b,$,Q,Y;if(!a.hasAttribute("tcoord"))return;const s=r.getShaderDescription("vertex"),i=a.getBuffer("tcoord"),o=Ie.getNumberOfComponentsFromBufferFormat(i.getArrayInformation()[0].format);let u=s.getCode();s.addOutput(`vec${o}<f32>`,"tcoordVS"),u=oe.substitute(u,"//VTK::TCoord::Impl",[" output.tcoordVS = tcoord;"]).result,s.setCode(u);const c=r.getShaderDescription("fragment");u=c.getCode();const f=e.WebGPUActor.getRenderable(),l=Z=>Z?Z.getDimensionality()===o:!1,g=[];((h=(y=(p=f.getProperty()).getDiffuseTexture)==null?void 0:y.call(p))!=null&&h.getImageLoaded()||f.getTextures()[0]||e.colorTexture)&&(l((x=(d=f.getProperty()).getDiffuseTexture)==null?void 0:x.call(d))||l(f.getTextures()[0])||l(e.colorTexture))&&g.push("_diffuseMap = textureSample(DiffuseTexture, DiffuseTextureSampler, input.tcoordVS);"),(T=(v=(S=f.getProperty()).getRoughnessTexture)==null?void 0:v.call(S))!=null&&T.getImageLoaded()&&l(f.getProperty().getRoughnessTexture())&&g.push("_roughnessMap = textureSample(RoughnessTexture, RoughnessTextureSampler, input.tcoordVS);"),(R=(C=(w=f.getProperty()).getMetallicTexture)==null?void 0:C.call(w))!=null&&R.getImageLoaded()&&l(f.getProperty().getMetallicTexture())&&g.push("_metallicMap = textureSample(MetallicTexture, MetallicTextureSampler, input.tcoordVS);"),(M=(B=(m=f.getProperty()).getNormalTexture)==null?void 0:B.call(m))!=null&&M.getImageLoaded()&&l(f.getProperty().getNormalTexture())&&g.push("_normalMap = textureSample(NormalTexture, NormalTextureSampler, input.tcoordVS);"),(b=(L=(D=f.getProperty()).getAmbientOcclusionTexture)==null?void 0:L.call(D))!=null&&b.getImageLoaded()&&l(f.getProperty().getAmbientOcclusionTexture())&&g.push("_ambientOcclusionMap = textureSample(AmbientOcclusionTexture, AmbientOcclusionTextureSampler, input.tcoordVS);"),(Y=(Q=($=f.getProperty()).getEmissionTexture)==null?void 0:Q.call($))!=null&&Y.getImageLoaded()&&l(f.getProperty().getEmissionTexture())&&g.push("_emissionMap = textureSample(EmissionTexture, EmissionTextureSampler, input.tcoordVS);"),u=oe.substitute(u,"//VTK::TCoord::Impl",g).result,c.setCode(u)},e.shaderReplacements.set("replaceShaderTCoord",t.replaceShaderTCoord),t.replaceShaderSelect=(n,r,a)=>{if(n.includes("sel")){const s=r.getShaderDescription("fragment");let i=s.getCode();i=oe.substitute(i,"//VTK::Select::Impl",[" var compositeID: u32 = 0u;"]).result,s.setCode(i)}},e.shaderReplacements.set("replaceShaderSelect",t.replaceShaderSelect),t.getUsage=(n,r)=>n===Da.POINTS||r===st.Points?je.Verts:r===st.Lines?je.Lines:n===Da.WIREFRAME?r===st.Triangles?je.LinesFromTriangles:je.LinesFromStrips:r===st.Triangles?je.Triangles:r===st.TriangleStrips?je.Strips:r===st.TriangleEdges?je.LinesFromTriangles:je.LinesFromStrips,t.getHashFromUsage=n=>`pt${n}`,t.getTopologyFromUsage=n=>{switch(n){case je.Triangles:return"triangle-list";case je.Verts:return"point-list";case je.Lines:default:return"line-list"}},t.buildVertexInput=()=>{var h,d;const n=e.currentInput,r=e.cellArray,a=e.primitiveType;let i=e.WebGPUActor.getRenderable().getProperty().getRepresentation();const o=e.WebGPURenderWindow.getDevice();let u=!1;a===st.TriangleEdges&&(u=!0,i=Da.WIREFRAME);const c=e.vertexInput,f=n.getPoints();let l;if(r){const x={hash:`R${i}P${a}${r.getMTime()}`,usage:je.Index,cells:r,numberOfPoints:f.getNumberOfPoints(),primitiveType:a,representation:i};l=o.getBufferManager().getBuffer(x),c.setIndexBuffer(l)}else c.setIndexBuffer(null);if(f){const x=e.WebGPUActor.getBufferShift(e.WebGPURenderer),S={hash:`${f.getMTime()}I${l.getMTime()}${x.join()}float32x4`,usage:je.PointArray,format:"float32x4",dataArray:f,indexBuffer:l,shift:x,packExtra:!0},v=o.getBufferManager().getBuffer(S);c.addBuffer(v,["vertexBC"])}else c.removeBufferIfPresent("vertexBC");const g=t.getUsage(i,a);if(e._usesCellNormals=!1,!e.is2D&&(g===je.Triangles||g===je.Strips)){const x=n.getPointData().getNormals(),S={format:"snorm8x4",indexBuffer:l,packExtra:!0,shift:0,scale:127};if(x){S.hash=`${x.getMTime()}I${l.getMTime()}snorm8x4`,S.dataArray=x,S.usage=je.PointArray;const v=o.getBufferManager().getBuffer(S);c.addBuffer(v,["normalMC"])}else if(a===st.Triangles){e._usesCellNormals=!0,S.hash=`PFN${f.getMTime()}I${l.getMTime()}snorm8x4`,S.dataArray=f,S.cells=r,S.usage=je.NormalsFromPoints;const v=o.getBufferManager().getBuffer(S);c.addBuffer(v,["normalMC"])}else c.removeBufferIfPresent("normalMC")}else c.removeBufferIfPresent("normalMC");let p=!1;if(e.renderable.getScalarVisibility()){const x=e.renderable.getColorMapColors();if(x&&!u){const S=e.renderable.getScalarMode();let v=!1;(S===ma.USE_CELL_DATA||S===ma.USE_CELL_FIELD_DATA||S===ma.USE_FIELD_DATA||!n.getPointData().getScalars())&&S!==ma.USE_POINT_FIELD_DATA&&x&&(v=!0);const T={usage:je.PointArray,format:"unorm8x4",hash:`${v}${x.getMTime()}I${l.getMTime()}unorm8x4`,dataArray:x,indexBuffer:l,cellData:v,cellOffset:0},w=o.getBufferManager().getBuffer(T);c.addBuffer(w,["colorVI"]),p=!0}}p||c.removeBufferIfPresent("colorVI");let y=null;if((d=(h=e.renderable).getInterpolateScalarsBeforeMapping)!=null&&d.call(h)&&e.renderable.getColorCoordinates()?y=e.renderable.getColorCoordinates():y=n.getPointData().getTCoords(),y&&!u){const x=o.getBufferManager().getBufferForPointArray(y,c.getIndexBuffer());c.addBuffer(x,["tcoord"])}else c.removeBufferIfPresent("tcoord")},t.updateTextures=()=>{var u,c,f,l,g,p,y,h,d,x,S,v,T,w,C;const n=[],r=[],a=(c=(u=e.renderable).getColorTextureMap)==null?void 0:c.call(u);a&&(e.colorTexture||(e.colorTexture=Ss.newInstance({label:"polyDataColor"})),e.colorTexture.setInputData(a),r.push(["Diffuse",e.colorTexture]));const s=e.WebGPUActor.getRenderable(),i=e.WebGPURenderer.getRenderable(),o=[];if((l=(f=s.getProperty()).getDiffuseTexture)!=null&&l.call(f)){const R=["Diffuse",s.getProperty().getDiffuseTexture()];o.push(R)}if(s.getTextures()[0]){const R=["Diffuse",s.getTextures()[0]];o.push(R)}if(e.colorTexture){const R=["Diffuse",e.colorTexture];o.push(R)}if((p=(g=s.getProperty()).getRoughnessTexture)!=null&&p.call(g)){const R=["Roughness",s.getProperty().getRoughnessTexture()];o.push(R)}if((h=(y=s.getProperty()).getMetallicTexture)!=null&&h.call(y)){const R=["Metallic",s.getProperty().getMetallicTexture()];o.push(R)}if((x=(d=s.getProperty()).getNormalTexture)!=null&&x.call(d)){const R=["Normal",s.getProperty().getNormalTexture()];o.push(R)}if((v=(S=s.getProperty()).getAmbientOcclusionTexture)!=null&&v.call(S)){const R=["AmbientOcclusion",s.getProperty().getAmbientOcclusionTexture()];o.push(R)}if((w=(T=s.getProperty()).getEmissionTexture)!=null&&w.call(T)){const R=["Emission",s.getProperty().getEmissionTexture()];o.push(R)}if((C=i.getEnvironmentTexture)!=null&&C.call(i)){const R=["Environment",i.getEnvironmentTexture()];o.push(R)}for(let R=0;R<o.length;R++)(o[R][1].getInputData()||o[R][1].getJsImageData()||o[R][1].getCanvas())&&r.push(o[R]),o[R][1].getImage()&&o[R][1].getImageLoaded()&&r.push(o[R]);for(let R=0;R<r.length;R++){const m=r[R][1],B=r[R][0],M=e.device.getTextureManager().getTextureForVTKTexture(m);if(M.getReady()){let D=!1;for(let L=0;L<e.textures.length;L++)e.textures[L]===M&&(D=!0,n[L]=!0);if(!D){n[e.textures.length]=!0;const L=M.createView(`${B}Texture`);e.textures.push(M),e.textureViews.push(L);const b=m.getInterpolate()?"linear":"nearest";let $=null;!$&&m.getEdgeClamp()&&m.getRepeat()&&($="mirror-repeat"),!$&&m.getEdgeClamp()&&($="clamp-to-edge"),!$&&m.getRepeat()&&($="repeat"),B!=="Environment"?L.addSampler(e.device,{addressModeU:$,addressModeV:$,addressModeW:$,minFilter:b,magFilter:b}):L.addSampler(e.device,{addressModeU:"repeat",addressModeV:"clamp-to-edge",addressModeW:"repeat",minFilter:b,magFilter:b,mipmapFilter:"linear"})}}}for(let R=e.textures.length-1;R>=0;R--)n[R]||(e.textures.splice(R,1),e.textureViews.splice(R,1))},t.computePipelineHash=()=>{let n=`pd${e.useRendererMatrix?"r":""}${e.forceZValue?"z":""}`;if(e.primitiveType===st.TriangleEdges||e.primitiveType===st.TriangleStripEdges)n+="edge";else{if(e.vertexInput.hasAttribute("normalMC")&&(n+="n"),e.vertexInput.hasAttribute("colorVI")&&(n+="c"),e.vertexInput.hasAttribute("tcoord")){const a=e.vertexInput.getBuffer("tcoord"),s=Ie.getNumberOfComponentsFromBufferFormat(a.getArrayInformation()[0].format);n+=`t${s}`}e.textures.length&&(n+=`tx${e.textures.length}`)}e._usesCellNormals&&(n+="cn"),e.SSBO&&(n+="ssbo");const r=t.getHashFromUsage(e.usage);n+=r,n+=e.renderEncoder.getPipelineHash(),e.pipelineHash=n},t.updateBuffers=()=>{e.primitiveType!==st.TriangleEdges&&e.primitiveType!==st.TriangleStripEdges&&t.updateTextures();const n=e.WebGPUActor.getRenderable(),r=n.getProperty().getRepresentation();e.usage=t.getUsage(r,e.primitiveType),t.buildVertexInput();const a=e.vertexInput.getBuffer("vertexBC");if(t.setNumberOfVertices(a.getSizeInBytes()/a.getStrideInBytes()),t.setTopology(t.getTopologyFromUsage(e.usage)),t.updateUBO(),t.haveWideLines()){const s=n.getProperty();t.setNumberOfInstances(Math.ceil(s.getLineWidth()*2))}else t.setNumberOfInstances(1)}}const mC={is2D:!1,cellArray:null,currentInput:null,cellOffset:0,primitiveType:0,colorTexture:null,renderEncoder:null,textures:null};function Vg(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,mC,n),So.extend(t,e,n),e.fragmentShaderTemplate=OC,e.vertexShaderTemplate=RC,e._tmpMat3=Qn(new Float64Array(9)),e._tmpMat4=le(new Float64Array(16)),e.UBO=Yn.newInstance({label:"mapperUBO"}),e.UBO.addEntry("BCWCMatrix","mat4x4<f32>"),e.UBO.addEntry("BCSCMatrix","mat4x4<f32>"),e.UBO.addEntry("MCWCNormals","mat4x4<f32>"),e.UBO.addEntry("AmbientColor","vec4<f32>"),e.UBO.addEntry("DiffuseColor","vec4<f32>"),e.UBO.addEntry("EdgeColor","vec4<f32>"),e.UBO.addEntry("SpecularColor","vec4<f32>"),e.UBO.addEntry("AmbientIntensity","f32"),e.UBO.addEntry("DiffuseIntensity","f32"),e.UBO.addEntry("Roughness","f32"),e.UBO.addEntry("Metallic","f32"),e.UBO.addEntry("Ambient","f32"),e.UBO.addEntry("Normal","f32"),e.UBO.addEntry("Emission","f32"),e.UBO.addEntry("NormalStrength","f32"),e.UBO.addEntry("BaseIOR","f32"),e.UBO.addEntry("SpecularIntensity","f32"),e.UBO.addEntry("LineWidth","f32"),e.UBO.addEntry("Opacity","f32"),e.UBO.addEntry("ZValue","f32"),e.UBO.addEntry("PropID","u32"),e.UBO.addEntry("ClipNear","f32"),e.UBO.addEntry("ClipFar","f32"),e.UBO.addEntry("Time","u32"),He(t,e,["cellArray","currentInput","cellOffset","is2D","primitiveType","renderEncoder"]),e.textures=[],DC(t,e)}const MC=De(Vg,"vtkWebGPUCellArrayMapper");var Lg={newInstance:MC,extend:Vg};const{PrimitiveTypes:Ma}=mn;function VC(t,e){e.classHierarchy.push("vtkWebGPUPolyDataMapper"),t.createCellArrayMapper=()=>Lg.newInstance(),t.buildPass=n=>{if(n){e.WebGPUActor=t.getFirstAncestorOfType("vtkWebGPUActor"),e.renderable.getStatic()||e.renderable.update();const r=e.renderable.getInputData();e.renderable.mapScalars(r,1),t.updateCellArrayMappers(r)}},t.updateCellArrayMappers=n=>{const r=[n.getVerts(),n.getLines(),n.getPolys(),n.getStrips()],a=[];let s=0;for(let i=Ma.Points;i<=Ma.Triangles;i++)if(r[i].getNumberOfValues()>0){e.primitives[i]||(e.primitives[i]=t.createCellArrayMapper());const o=e.primitives[i];o.setCellArray(r[i]),o.setCurrentInput(n),o.setCellOffset(s),o.setPrimitiveType(i),o.setRenderable(e.renderable),s+=r[i].getNumberOfCells(),a.push(o)}else e.primitives[i]=null;if(e.WebGPUActor.getRenderable().getProperty().getEdgeVisibility())for(let i=Ma.TriangleEdges;i<=Ma.TriangleStripEdges;i++)if(r[i-2].getNumberOfValues()>0){e.primitives[i]||(e.primitives[i]=t.createCellArrayMapper());const o=e.primitives[i];o.setCellArray(r[i-2]),o.setCurrentInput(n),o.setCellOffset(e.primitives[i-2].getCellOffset()),o.setPrimitiveType(i),o.setRenderable(e.renderable),a.push(o)}else e.primitives[i]=null;t.prepareNodes(),t.addMissingChildren(a),t.removeUnusedNodes()}}const LC={primitives:null};function BC(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,LC,n),be.extend(t,e,n),e.primitives=[],VC(t,e)}const kC=De(BC,"vtkWebGPUPolyDataMapper");ln("vtkMapper",kC);const{PrimitiveTypes:qc}=mn;function FC(t,e){e.classHierarchy.push("vtkWebGPUPolyDataMapper2D"),t.createCellArrayMapper=()=>Lg.newInstance(),t.buildPass=n=>{if(n){e.WebGPUActor=t.getFirstAncestorOfType("vtkWebGPUActor2D"),e.renderable.getStatic()||e.renderable.update();const r=e.renderable.getInputData();e.renderable.mapScalars(r,1),t.updateCellArrayMappers(r)}},t.updateCellArrayMappers=n=>{const r=[n.getVerts(),n.getLines(),n.getPolys(),n.getStrips()],a=[];let s=0;for(let i=qc.Points;i<=qc.Triangles;i++)if(r[i].getNumberOfValues()>0){e.primitives[i]||(e.primitives[i]=t.createCellArrayMapper());const o=e.primitives[i];o.setCellArray(r[i]),o.setCurrentInput(n),o.setCellOffset(s),o.setPrimitiveType(i),o.setRenderable(e.renderable),o.setIs2D(!0),s+=r[i].getNumberOfCells(),a.push(o)}else e.primitives[i]=null;t.prepareNodes(),t.addMissingChildren(a),t.removeUnusedNodes()}}function UC(t){return{primitives:[],...t}}function bC(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,UC(n)),be.extend(t,e,n),e.primitives=[],FC(t,e)}const NC=De(bC,"vtkWebGPUPolyDataMapper2D");ln("vtkMapper2D",NC);function GC(t,e){e.classHierarchy.push("vtkWebGPUScalarBarActor"),t.buildPass=n=>{n&&(e.WebGPURenderer=t.getFirstAncestorOfType("vtkWebGPURenderer"),e.WebGPURenderWindow=e.WebGPURenderer.getParent(),e.scalarBarActorHelper.getRenderable()||e.scalarBarActorHelper.setRenderable(e.renderable),t.prepareNodes(),t.addMissingNode(e.scalarBarActorHelper.getBarActor()),t.addMissingNode(e.scalarBarActorHelper.getTmActor()),t.removeUnusedNodes())},t.opaquePass=(n,r)=>{if(n){const a=e.WebGPURenderer?e.WebGPURenderer.getRenderable().getActiveCamera():null,s=e.WebGPURenderer.getTiledSizeAndOrigin();e.scalarBarActorHelper.updateAPISpecificData([s.usize,s.vsize],a,e.WebGPURenderWindow.getRenderable())}}}const $C={};function WC(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,$C,n),be.extend(t,e,n),e.scalarBarActorHelper=xo.newScalarBarActorHelper(),GC(t,e)}const zC=De(WC,"vtkWebGPUScalarBarActor");ln("vtkScalarBarActor",zC);function AC(t,e){e.classHierarchy.push("vtkWebGPUSampler"),t.create=function(n){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};e.device=n,e.options.addressModeU=r.addressModeU?r.addressModeU:"clamp-to-edge",e.options.addressModeV=r.addressModeV?r.addressModeV:"clamp-to-edge",e.options.addressModeW=r.addressModeW?r.addressModeW:"clamp-to-edge",e.options.magFilter=r.magFilter?r.magFilter:"nearest",e.options.minFilter=r.minFilter?r.minFilter:"nearest",e.options.mipmapFilter=r.mipmapFilter?r.mipmapFilter:"nearest",e.options.label=e.label,e.handle=e.device.getHandle().createSampler(e.options),e.bindGroupTime.modified()},t.getShaderCode=(n,r)=>`@binding(${n}) @group(${r}) var ${e.label}: sampler;`,t.getBindGroupEntry=()=>({resource:e.handle})}const HC={device:null,handle:null,label:null,options:null};function Bg(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,HC,n),_.obj(t,e),e.options={},e.bindGroupLayoutEntry={visibility:GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,sampler:{}},e.bindGroupTime={},_.obj(e.bindGroupTime,{mtime:0}),_.get(t,e,["bindGroupTime","handle","options"]),_.setGet(t,e,["bindGroupLayoutEntry","device","label"]),AC(t,e)}const jC=_.newInstance(Bg);var Co={newInstance:jC,extend:Bg};function KC(t,e){e.classHierarchy.push("vtkWebGPUTextureView"),t.create=(n,r)=>{e.texture=n,e.options=r,e.options.dimension=e.options.dimension||"2d",e.options.label=e.label,e.textureHandle=n.getHandle(),e.handle=e.textureHandle.createView(e.options),e.bindGroupLayoutEntry.texture.viewDimension=e.options.dimension;const a=Ie.getDetailsFromTextureFormat(e.texture.getFormat());e.bindGroupLayoutEntry.texture.sampleType=a.sampleType},t.createFromTextureHandle=(n,r)=>{e.texture=null,e.options=r,e.options.dimension=e.options.dimension||"2d",e.options.label=e.label,e.textureHandle=n,e.handle=e.textureHandle.createView(e.options),e.bindGroupLayoutEntry.texture.viewDimension=e.options.dimension;const a=Ie.getDetailsFromTextureFormat(r.format);e.bindGroupLayoutEntry.texture.sampleType=a.sampleType,e.bindGroupTime.modified()},t.getBindGroupEntry=()=>({resource:t.getHandle()}),t.getShaderCode=(n,r)=>{let a="f32";e.bindGroupLayoutEntry.texture.sampleType==="sint"?a="i32":e.bindGroupLayoutEntry.texture.sampleType==="uint"&&(a="u32");let s=`@binding(${n}) @group(${r}) var ${e.label}: texture_${e.options.dimension}<${a}>;`;return e.bindGroupLayoutEntry.texture.sampleType==="depth"&&(s=`@binding(${n}) @group(${r}) var ${e.label}: texture_depth_${e.options.dimension};`),s},t.addSampler=(n,r)=>{const a=Co.newInstance({label:`${e.label}Sampler`});a.create(n,r),t.setSampler(a)},t.getBindGroupTime=()=>(e.texture&&e.texture.getHandle()!==e.textureHandle&&(e.textureHandle=e.texture.getHandle(),e.handle=e.textureHandle.createView(e.options),e.bindGroupTime.modified()),e.bindGroupTime),t.getHandle=()=>(e.texture&&e.texture.getHandle()!==e.textureHandle&&(e.textureHandle=e.texture.getHandle(),e.handle=e.textureHandle.createView(e.options),e.bindGroupTime.modified()),e.handle)}const PC={texture:null,handle:null,sampler:null,label:null};function kg(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,PC,n),_.obj(t,e),e.bindGroupLayoutEntry={visibility:GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT,texture:{sampleType:"float",viewDimension:"2d"}},e.bindGroupTime={},_.obj(e.bindGroupTime,{mtime:0}),_.get(t,e,["bindGroupTime","texture"]),_.setGet(t,e,["bindGroupLayoutEntry","label","sampler"]),KC(t,e)}const XC=_.newInstance(kg);var Fg={newInstance:XC,extend:kg};const{BufferUsage:Qc}=mn;function IC(t,e){e.classHierarchy.push("vtkWebGPUTexture"),t.create=(n,r)=>{e.device=n,e.width=r.width,e.height=r.height,e.depth=r.depth?r.depth:1;const a=e.depth===1?"2d":"3d";e.format=r.format?r.format:"rgba8unorm",e.mipLevel=r.mipLevel?r.mipLevel:0,e.usage=r.usage?r.usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST,e.handle=e.device.getHandle().createTexture({size:[e.width,e.height,e.depth],format:e.format,usage:e.usage,label:e.label,dimension:a,mipLevelCount:e.mipLevel+1})},t.assignFromHandle=(n,r,a)=>{e.device=n,e.handle=r,e.width=a.width,e.height=a.height,e.depth=a.depth?a.depth:1,e.format=a.format?a.format:"rgba8unorm",e.usage=a.usage?a.usage:GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST},t.writeImageData=n=>{let r=[];if(n.canvas){e.device.getHandle().queue.copyExternalImageToTexture({source:n.canvas,flipY:n.flip},{texture:e.handle,premultipliedAlpha:!0},[e.width,e.height,e.depth]),e.ready=!0;return}n.jsImageData&&!n.nativeArray&&(n.width=n.jsImageData.width,n.height=n.jsImageData.height,n.depth=1,n.format="rgba8unorm",n.flip=!0,n.nativeArray=n.jsImageData.data);const a=Ie.getDetailsFromTextureFormat(e.format);let s=e.width*a.stride;const i=(u,c,f)=>{const l=u.length/(c*f)*u.BYTES_PER_ELEMENT,g=a.elementSize===2&&a.sampleType==="float";if(g||l%256){const p=u,y=l/p.BYTES_PER_ELEMENT,h=a.elementSize,d=256*Math.floor((y*h+255)/256),x=d/h,S=_.newTypedArray(g?"Uint16Array":p.constructor.name,x*c*f);for(let v=0;v<c*f;v++)if(g)for(let T=0;T<y;T++)S[v*x+T]=Gt.toHalf(p[v*y+T]);else S.set(p.subarray(v*y,(v+1)*y),v*x);return[S,d]}return[u,l]};if(n.nativeArray&&(r=n.nativeArray),n.image){const u=document.createElement("canvas");u.width=n.image.width,u.height=n.image.height;const c=u.getContext("2d");c.translate(0,u.height),c.scale(1,-1),c.drawImage(n.image,0,0,n.image.width,n.image.height,0,0,u.width,u.height),r=c.getImageData(0,0,n.image.width,n.image.height).data}const o=e.device.createCommandEncoder();if(t.getDimensionality()!==3){const u=Ss.generateMipmaps(r,e.width,e.height,e.mipLevel);let c=e.width,f=e.height;for(let l=0;l<=e.mipLevel;l++){const g=i(u[l],f,1);s=g[1];const p={dataArray:n.dataArray?n.dataArray:null,nativeArray:g[0],usage:Qc.Texture},y=e.device.getBufferManager().getBuffer(p);o.copyBufferToTexture({buffer:y.getHandle(),offset:0,bytesPerRow:s,rowsPerImage:f},{texture:e.handle,mipLevel:l},[c,f,1]),c/=2,f/=2}e.device.submitCommandEncoder(o),e.ready=!0}else{const u=i(r,e.height,e.depth);s=u[1];const c={dataArray:n.dataArray?n.dataArray:null,usage:Qc.Texture};c.nativeArray=u[0];const f=e.device.getBufferManager().getBuffer(c);o.copyBufferToTexture({buffer:f.getHandle(),offset:0,bytesPerRow:s,rowsPerImage:e.height},{texture:e.handle},[e.width,e.height,e.depth]),e.device.submitCommandEncoder(o),e.ready=!0}},t.getScale=()=>{const n=Ie.getDetailsFromTextureFormat(e.format);return n.elementSize===2&&n.sampleType==="float"?1:255},t.getNumberOfComponents=()=>Ie.getDetailsFromTextureFormat(e.format).numComponents,t.getDimensionality=()=>{let n=0;return e.width>1&&n++,e.height>1&&n++,e.depth>1&&n++,n},t.resizeToMatch=n=>{(n.getWidth()!==e.width||n.getHeight()!==e.height||n.getDepth()!==e.depth)&&(e.width=n.getWidth(),e.height=n.getHeight(),e.depth=n.getDepth(),e.handle=e.device.getHandle().createTexture({size:[e.width,e.height,e.depth],format:e.format,usage:e.usage,label:e.label}))},t.resize=function(n,r){let a=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1;(n!==e.width||r!==e.height||a!==e.depth)&&(e.width=n,e.height=r,e.depth=a,e.handle=e.device.getHandle().createTexture({size:[e.width,e.height,e.depth],format:e.format,usage:e.usage,label:e.label}))},t.createView=function(n){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};r.dimension||(r.dimension=e.depth===1?"2d":"3d");const a=Fg.newInstance({label:n});return a.create(t,r),a}}const YC={device:null,handle:null,buffer:null,ready:!1,label:null};function Ug(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,YC,n),_.obj(t,e),_.get(t,e,["handle","ready","width","height","depth","format","usage"]),_.setGet(t,e,["device","label"]),IC(t,e)}const qC=_.newInstance(Ug);var Zt={newInstance:qC,extend:Ug};function QC(t,e){e.classHierarchy.push("vtkWebGPUPixelSpaceCallbackMapper"),t.opaquePass=(n,r)=>{e.WebGPURenderer=t.getFirstAncestorOfType("vtkWebGPURenderer"),e.WebGPURenderWindow=e.WebGPURenderer.getParent();const a=e.WebGPURenderer.getAspectRatio(),s=e.WebGPURenderer?e.WebGPURenderer.getRenderable().getActiveCamera():null,i=e.WebGPURenderer.getTiledSizeAndOrigin(),o=null;e.renderable.getUseZValues(),e.renderable.invokeCallback(e.renderable.getInputData(),s,a,i,o)}}const ZC={};function JC(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,ZC,n),be.extend(t,e,n),QC(t,e)}const ew=_.newInstance(JC,"vtkWebGPUPixelSpaceCallbackMapper");ln("vtkPixelSpaceCallbackMapper",ew);const{vtkDebugMacro:Va}=_;function tw(t,e){e.classHierarchy.push("vtkCamera");const n=new Float64Array(3),r=new Float64Array([0,0,-1]),a=new Float64Array([0,1,0]),s=le(new Float64Array(16)),i=le(new Float64Array(16)),o=new Float64Array(3),u=new Float64Array(3),c=new Float64Array(3),f=le(new Float64Array(16)),l=le(new Float64Array(16)),g=new Float64Array(3),p=new Float64Array(3);function y(){e.viewPlaneNormal[0]=-e.directionOfProjection[0],e.viewPlaneNormal[1]=-e.directionOfProjection[1],e.viewPlaneNormal[2]=-e.directionOfProjection[2]}t.orthogonalizeViewUp=()=>{const h=t.getViewMatrix();e.viewUp[0]=h[4],e.viewUp[1]=h[5],e.viewUp[2]=h[6],t.modified()},t.setPosition=(h,d,x)=>{h===e.position[0]&&d===e.position[1]&&x===e.position[2]||(e.position[0]=h,e.position[1]=d,e.position[2]=x,t.computeDistance(),t.modified())},t.setFocalPoint=(h,d,x)=>{h===e.focalPoint[0]&&d===e.focalPoint[1]&&x===e.focalPoint[2]||(e.focalPoint[0]=h,e.focalPoint[1]=d,e.focalPoint[2]=x,t.computeDistance(),t.modified())},t.setDistance=h=>{if(e.distance===h)return;e.distance=h,e.distance<1e-20&&(e.distance=1e-20,Va("Distance is set to minimum."));const d=e.directionOfProjection;e.focalPoint[0]=e.position[0]+d[0]*e.distance,e.focalPoint[1]=e.position[1]+d[1]*e.distance,e.focalPoint[2]=e.position[2]+d[2]*e.distance,t.modified()},t.computeDistance=()=>{const h=e.focalPoint[0]-e.position[0],d=e.focalPoint[1]-e.position[1],x=e.focalPoint[2]-e.position[2];if(e.distance=Math.sqrt(h*h+d*d+x*x),e.distance<1e-20){e.distance=1e-20,Va("Distance is set to minimum.");const S=e.directionOfProjection;e.focalPoint[0]=e.position[0]+S[0]*e.distance,e.focalPoint[1]=e.position[1]+S[1]*e.distance,e.focalPoint[2]=e.position[2]+S[2]*e.distance}e.directionOfProjection[0]=h/e.distance,e.directionOfProjection[1]=d/e.distance,e.directionOfProjection[2]=x/e.distance,y()},t.dolly=h=>{if(h<=0)return;const d=e.distance/h;t.setPosition(e.focalPoint[0]-d*e.directionOfProjection[0],e.focalPoint[1]-d*e.directionOfProjection[1],e.focalPoint[2]-d*e.directionOfProjection[2])},t.roll=h=>{const d=e.position,x=e.focalPoint,S=e.viewUp,v=new Float64Array([S[0],S[1],S[2],0]);le(f);const T=new Float64Array([x[0]-d[0],x[1]-d[1],x[2]-d[2]]);Xt(f,f,Ge(h),T),la(v,v,f),e.viewUp[0]=v[0],e.viewUp[1]=v[1],e.viewUp[2]=v[2],t.modified()},t.azimuth=h=>{const d=e.focalPoint;le(l),We(l,l,d),Xt(l,l,Ge(h),e.viewUp),We(l,l,[-d[0],-d[1],-d[2]]),Se(g,e.position,l),t.setPosition(g[0],g[1],g[2])},t.yaw=h=>{const d=e.position;le(l),We(l,l,d),Xt(l,l,Ge(h),e.viewUp),We(l,l,[-d[0],-d[1],-d[2]]),Se(p,e.focalPoint,l),t.setFocalPoint(p[0],p[1],p[2])},t.elevation=h=>{const d=e.focalPoint,x=t.getViewMatrix(),S=[-x[0],-x[1],-x[2]];le(l),We(l,l,d),Xt(l,l,Ge(h),S),We(l,l,[-d[0],-d[1],-d[2]]),Se(g,e.position,l),t.setPosition(g[0],g[1],g[2])},t.pitch=h=>{const d=e.position,x=t.getViewMatrix(),S=[x[0],x[1],x[2]];le(l),We(l,l,d),Xt(l,l,Ge(h),S),We(l,l,[-d[0],-d[1],-d[2]]),Se(p,e.focalPoint,l),t.setFocalPoint(...p)},t.zoom=h=>{h<=0||(e.parallelProjection?e.parallelScale/=h:e.viewAngle/=h,t.modified())},t.translate=(h,d,x)=>{const S=[h,d,x];vi(e.position,S,e.position),vi(e.focalPoint,S,e.focalPoint),t.computeDistance(),t.modified()},t.applyTransform=h=>{const d=[...e.viewUp,1],x=[],S=[],v=[];d[0]+=e.position[0],d[1]+=e.position[1],d[2]+=e.position[2],la(x,[...e.position,1],h),la(S,[...e.focalPoint,1],h),la(v,d,h),v[0]-=x[0],v[1]-=x[1],v[2]-=x[2],t.setPosition(...x.slice(0,3)),t.setFocalPoint(...S.slice(0,3)),t.setViewUp(...v.slice(0,3))},t.getThickness=()=>e.clippingRange[1]-e.clippingRange[0],t.setThickness=h=>{let d=h;d<1e-20&&(d=1e-20,Va("Thickness is set to minimum.")),t.setClippingRange(e.clippingRange[0],e.clippingRange[0]+d)},t.setThicknessFromFocalPoint=h=>{let d=h;d<1e-20&&(d=1e-20,Va("Thickness is set to minimum.")),t.setClippingRange(e.distance-d/2,e.distance+d/2)},t.setRoll=h=>{},t.getRoll=()=>{},t.setObliqueAngles=(h,d)=>{},t.getOrientation=()=>{},t.getOrientationWXYZ=()=>{},t.getFrustumPlanes=h=>{},t.getCameraLightTransformMatrix=h=>(nt(h,e.cameraLightTransform),h),t.computeCameraLightTransform=()=>{nt(s,t.getViewMatrix()),dt(s,s),ku(i,[e.distance,e.distance,e.distance]),ft(s,s,i),le(e.cameraLightTransform),We(e.cameraLightTransform,s,[0,0,-1])},t.deepCopy=h=>{},t.physicalOrientationToWorldDirection=h=>{const d=qo(h[0],h[1],h[2],h[3]),x=qn(),S=qo(0,0,1,0);return nd(x,d),Yo(S,d,S),Yo(S,S,x),[S[0],S[1],S[2]]},t.getPhysicalToWorldMatrix=h=>{t.getWorldToPhysicalMatrix(h),dt(h,h)},t.getWorldToPhysicalMatrix=h=>{le(h);const d=[3];Zr(e.physicalViewNorth,e.physicalViewUp,d),h[0]=d[0],h[1]=d[1],h[2]=d[2],h[4]=e.physicalViewUp[0],h[5]=e.physicalViewUp[1],h[6]=e.physicalViewUp[2],h[8]=-e.physicalViewNorth[0],h[9]=-e.physicalViewNorth[1],h[10]=-e.physicalViewNorth[2],Ve(h,h),Qa(o,1/e.physicalScale,1/e.physicalScale,1/e.physicalScale),xr(h,h,o),We(h,h,e.physicalTranslation)},t.computeViewParametersFromViewMatrix=h=>{dt(s,h),Se(o,n,s),t.computeDistance();const d=e.distance;t.setPosition(o[0],o[1],o[2]),Se(u,r,s),En(u,u,o),qr(u,u),t.setDirectionOfProjection(u[0],u[1],u[2]),Se(c,a,s),En(c,c,o),qr(c,c),t.setViewUp(c[0],c[1],c[2]),t.setDistance(d)},t.computeViewParametersFromPhysicalMatrix=h=>{t.getWorldToPhysicalMatrix(s),ft(s,h,s),t.computeViewParametersFromViewMatrix(s)},t.setViewMatrix=h=>{e.viewMatrix=h,e.viewMatrix&&(nt(s,e.viewMatrix),t.computeViewParametersFromViewMatrix(s),Ve(e.viewMatrix,e.viewMatrix))},t.getViewMatrix=()=>{if(e.viewMatrix)return e.viewMatrix;zu(s,e.position,e.focalPoint,e.viewUp),Ve(s,s);const h=new Float64Array(16);return nt(h,s),h},t.setProjectionMatrix=h=>{e.projectionMatrix=h},t.getProjectionMatrix=(h,d,x)=>{const S=new Float64Array(16);if(le(S),e.projectionMatrix){const w=1/e.physicalScale;return Qa(o,w,w,w),nt(S,e.projectionMatrix),xr(S,S,o),Ve(S,S),S}le(s);const v=e.clippingRange[1]-e.clippingRange[0],T=[e.clippingRange[0]+(d+1)*v/2,e.clippingRange[0]+(x+1)*v/2];if(e.parallelProjection){const w=e.parallelScale*h,C=e.parallelScale,R=(e.windowCenter[0]-1)*w,m=(e.windowCenter[0]+1)*w,B=(e.windowCenter[1]-1)*C,M=(e.windowCenter[1]+1)*C;Wu(s,R,m,B,M,T[0],T[1]),Ve(s,s)}else{if(e.useOffAxisProjection)throw new Error("Off-Axis projection is not supported at this time");{const w=Math.tan(Ge(e.viewAngle)/2);let C,R;e.useHorizontalViewAngle===!0?(C=e.clippingRange[0]*w,R=e.clippingRange[0]*w/h):(C=e.clippingRange[0]*w*h,R=e.clippingRange[0]*w);const m=(e.windowCenter[0]-1)*C,B=(e.windowCenter[0]+1)*C,M=(e.windowCenter[1]-1)*R,D=(e.windowCenter[1]+1)*R,L=T[0],b=T[1];s[0]=2*L/(B-m),s[5]=2*L/(D-M),s[2]=(m+B)/(B-m),s[6]=(M+D)/(D-M),s[10]=-(L+b)/(b-L),s[14]=-1,s[11]=-2*L*b/(b-L),s[15]=0}}return nt(S,s),S},t.getCompositeProjectionMatrix=(h,d,x)=>{const S=t.getViewMatrix(),v=t.getProjectionMatrix(h,d,x);return ft(v,S,v),v},t.setDirectionOfProjection=(h,d,x)=>{if(e.directionOfProjection[0]===h&&e.directionOfProjection[1]===d&&e.directionOfProjection[2]===x)return;e.directionOfProjection[0]=h,e.directionOfProjection[1]=d,e.directionOfProjection[2]=x;const S=e.directionOfProjection;e.focalPoint[0]=e.position[0]+S[0]*e.distance,e.focalPoint[1]=e.position[1]+S[1]*e.distance,e.focalPoint[2]=e.position[2]+S[2]*e.distance,y()},t.setDeviceAngles=(h,d,x,S)=>{const v=[3];Zr(e.physicalViewNorth,e.physicalViewUp,v);const T=le(new Float64Array(16));Xt(T,T,Ge(h),e.physicalViewUp),Xt(T,T,Ge(d),v),Xt(T,T,Ge(x),e.physicalViewNorth),Xt(T,T,Ge(-S),e.physicalViewUp);const w=new Float64Array([-e.physicalViewUp[0],-e.physicalViewUp[1],-e.physicalViewUp[2]]),C=new Float64Array(e.physicalViewNorth);Se(w,w,T),Se(C,C,T),t.setDirectionOfProjection(w[0],w[1],w[2]),t.setViewUp(C[0],C[1],C[2]),t.modified()},t.setOrientationWXYZ=(h,d,x,S)=>{const v=le(new Float64Array(16));if(h!==0&&(d!==0||x!==0||S!==0)){const C=Ge(h),R=qn();Gi(R,[d,x,S],C),Ni(v,R)}const T=new Float64Array(3);Se(T,[0,0,-1],v);const w=new Float64Array(3);Se(w,[0,1,0],v),t.setDirectionOfProjection(...T),t.setViewUp(...w),t.modified()},t.computeClippingRange=h=>{let d=null,x=null;d=e.viewPlaneNormal,x=e.position;const S=-d[0],v=-d[1],T=-d[2],w=-(S*x[0]+v*x[1]+T*x[2]),C=[S*h[0]+v*h[2]+T*h[4]+w,1e-18];for(let R=0;R<2;R++)for(let m=0;m<2;m++)for(let B=0;B<2;B++){const M=S*h[B]+v*h[2+m]+T*h[4+R]+w;C[0]=M<C[0]?M:C[0],C[1]=M>C[1]?M:C[1]}return C}}const nw={position:[0,0,1],focalPoint:[0,0,0],viewUp:[0,1,0],directionOfProjection:[0,0,-1],parallelProjection:!1,useHorizontalViewAngle:!1,viewAngle:30,parallelScale:1,clippingRange:[.01,1000.01],windowCenter:[0,0],viewPlaneNormal:[0,0,1],useOffAxisProjection:!1,screenBottomLeft:[-.5,-.5,-.5],screenBottomRight:[.5,-.5,-.5],screenTopRight:[.5,.5,-.5],freezeFocalPoint:!1,projectionMatrix:null,viewMatrix:null,cameraLightTransform:bi(),physicalTranslation:[0,0,0],physicalScale:1,physicalViewUp:[0,1,0],physicalViewNorth:[0,0,-1]};function bg(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,nw,n),_.obj(t,e),_.get(t,e,["distance"]),_.setGet(t,e,["parallelProjection","useHorizontalViewAngle","viewAngle","parallelScale","useOffAxisProjection","freezeFocalPoint","physicalScale"]),_.getArray(t,e,["directionOfProjection","viewPlaneNormal","position","focalPoint"]),_.setGetArray(t,e,["clippingRange","windowCenter"],2),_.setGetArray(t,e,["viewUp","screenBottomLeft","screenBottomRight","screenTopRight","physicalTranslation","physicalViewUp","physicalViewNorth"],3),tw(t,e)}const rw=_.newInstance(bg,"vtkCamera");var aw={newInstance:rw,extend:bg};const sw=["HeadLight","CameraLight","SceneLight"];function iw(t,e){e.classHierarchy.push("vtkLight");const n=new Float64Array(3);t.getTransformedPosition=()=>(e.transformMatrix?Se(n,e.position,e.transformMatrix):Qa(n,e.position[0],e.position[1],e.position[2]),n),t.getTransformedFocalPoint=()=>(e.transformMatrix?Se(n,e.focalPoint,e.transformMatrix):Qa(n,e.focalPoint[0],e.focalPoint[1],e.focalPoint[2]),n),t.getDirection=()=>(e.directionMTime<e.mtime&&(li(e.direction,e.focalPoint,e.position),Jr(e.direction),e.directionMTime=e.mtime),e.direction),t.setDirection=r=>{const a=new Float64Array(3);li(a,e.position,r),e.focalPoint=a},t.setDirectionAngle=(r,a)=>{const s=Ge(r),i=Ge(a);t.setPosition(Math.cos(s)*Math.sin(i),Math.sin(s),Math.cos(s)*Math.cos(i)),t.setFocalPoint(0,0,0),t.setPositional(0)},t.setLightTypeToHeadLight=()=>{t.setLightType("HeadLight")},t.setLightTypeToCameraLight=()=>{t.setLightType("CameraLight")},t.setLightTypeToSceneLight=()=>{t.setTransformMatrix(null),t.setLightType("SceneLight")},t.lightTypeIsHeadLight=()=>e.lightType==="HeadLight",t.lightTypeIsSceneLight=()=>e.lightType==="SceneLight",t.lightTypeIsCameraLight=()=>e.lightType==="CameraLight"}const ow={switch:!0,intensity:1,color:[1,1,1],position:[0,0,1],focalPoint:[0,0,0],positional:!1,exponent:1,coneAngle:30,coneFalloff:5,attenuationValues:[1,0,0],transformMatrix:null,lightType:"SceneLight",shadowAttenuation:1,direction:[0,0,0],directionMTime:0};function Ng(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,ow,n),_.obj(t,e),_.setGet(t,e,["intensity","switch","positional","exponent","coneAngle","coneFalloff","transformMatrix","lightType","shadowAttenuation","attenuationValues"]),_.setGetArray(t,e,["color","position","focalPoint","attenuationValues"],3),iw(t,e)}const cw=_.newInstance(Ng,"vtkLight");var uw={newInstance:cw,extend:Ng,LIGHT_TYPES:sw};const{vtkErrorMacro:Ha}=_;function fw(t){return()=>Ha(`vtkViewport::${t} - NOT IMPLEMENTED`)}function lw(t,e){e.classHierarchy.push("vtkViewport"),t.getViewProps=()=>e.props,t.hasViewProp=r=>e.props.includes(r),t.addViewProp=r=>{r&&!t.hasViewProp(r)&&e.props.push(r)},t.removeViewProp=r=>{const a=e.props.filter(s=>s!==r);e.props.length!==a.length&&(e.props=a)},t.removeAllViewProps=()=>{e.props=[]};function n(r){let a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[];a.push(r);const s=r.getNestedProps();if(s&&s.length)for(let i=0;i<s.length;i++)n(s[i],a);return a}t.getViewPropsWithNestedProps=()=>{const r=[];for(let a=0;a<e.props.length;a++)n(e.props[a],r);return r},t.addActor2D=t.addViewProp,t.removeActor2D=r=>{t.removeViewProp(r)},t.getActors2D=()=>(e.actors2D=[],e.props.forEach(r=>{e.actors2D=e.actors2D.concat(r.getActors2D())}),e.actors2D),t.displayToView=()=>Ha("call displayToView on your view instead"),t.viewToDisplay=()=>Ha("callviewtodisplay on your view instead"),t.getSize=()=>Ha("call getSize on your View instead"),t.normalizedDisplayToProjection=(r,a,s)=>{const i=t.normalizedDisplayToNormalizedViewport(r,a,s);return t.normalizedViewportToProjection(i[0],i[1],i[2])},t.normalizedDisplayToNormalizedViewport=(r,a,s)=>{const i=[e.viewport[2]-e.viewport[0],e.viewport[3]-e.viewport[1]];return[(r-e.viewport[0])/i[0],(a-e.viewport[1])/i[1],s]},t.normalizedViewportToProjection=(r,a,s)=>[r*2-1,a*2-1,s*2-1],t.projectionToNormalizedDisplay=(r,a,s)=>{const i=t.projectionToNormalizedViewport(r,a,s);return t.normalizedViewportToNormalizedDisplay(i[0],i[1],i[2])},t.normalizedViewportToNormalizedDisplay=(r,a,s)=>{const i=[e.viewport[2]-e.viewport[0],e.viewport[3]-e.viewport[1]];return[r*i[0]+e.viewport[0],a*i[1]+e.viewport[1],s]},t.projectionToNormalizedViewport=(r,a,s)=>[(r+1)*.5,(a+1)*.5,(s+1)*.5],t.PickPropFrom=fw("PickPropFrom")}const gw={background:[0,0,0],background2:[.2,.2,.2],gradientBackground:!1,viewport:[0,0,1,1],aspect:[1,1],pixelAspect:[1,1],props:[],actors2D:[]};function Gg(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,gw,n),_.obj(t,e),_.event(t,e,"event"),_.setGetArray(t,e,["viewport"],4),_.setGetArray(t,e,["background","background2"],3),lw(t,e)}const pw=_.newInstance(Gg,"vtkViewport");var hw={newInstance:pw,extend:Gg};const{vtkDebugMacro:Ur,vtkErrorMacro:Cn,vtkWarningMacro:dw}=Jt;function Zc(t){return()=>Cn(`vtkRenderer::${t} - NOT IMPLEMENTED`)}function vw(t,e){e.classHierarchy.push("vtkRenderer");const n={type:"ComputeVisiblePropBoundsEvent",renderer:t},r={type:"ResetCameraClippingRangeEvent",renderer:t},a={type:"ResetCameraEvent",renderer:t};t.updateCamera=()=>(e.activeCamera||(Ur("No cameras are on, creating one."),t.getActiveCameraAndResetIfCreated()),e.activeCamera.render(t),!0),t.updateLightsGeometryToFollowCamera=()=>{const s=t.getActiveCameraAndResetIfCreated();e.lights.forEach(i=>{i.lightTypeIsSceneLight()||(i.lightTypeIsHeadLight()?(i.setPositionFrom(s.getPositionByReference()),i.setFocalPointFrom(s.getFocalPointByReference()),i.modified(s.getMTime())):i.lightTypeIsCameraLight()?i.setTransformMatrix(s.getCameraLightTransformMatrix(bi())):Cn("light has unknown light type",i.get()))})},t.updateLightGeometry=()=>e.lightFollowCamera?t.updateLightsGeometryToFollowCamera():!0,t.allocateTime=Zc("allocateTime"),t.updateGeometry=Zc("updateGeometry"),t.getVTKWindow=()=>e._renderWindow,t.setLayer=s=>{Ur(t.getClassName(),t,"setting Layer to ",s),e.layer!==s&&(e.layer=s,t.modified()),t.setPreserveColorBuffer(!!s)},t.setActiveCamera=s=>e.activeCamera===s?!1:(e.activeCamera=s,t.modified(),t.invokeEvent({type:"ActiveCameraEvent",camera:s}),!0),t.makeCamera=()=>{const s=aw.newInstance();return t.invokeEvent({type:"CreateCameraEvent",camera:s}),s},t.getActiveCamera=()=>(e.activeCamera||(e.activeCamera=t.makeCamera()),e.activeCamera),t.getActiveCameraAndResetIfCreated=()=>(e.activeCamera||(t.getActiveCamera(),t.resetCamera()),e.activeCamera),t.getActors=()=>(e.actors=[],e.props.forEach(s=>{e.actors=e.actors.concat(s.getActors())}),e.actors),t.addActor=t.addViewProp,t.removeActor=s=>{e.actors=e.actors.filter(i=>i!==s),t.removeViewProp(s),t.modified()},t.removeAllActors=()=>{t.getActors().forEach(i=>{t.removeViewProp(i)}),e.actors=[],t.modified()},t.getVolumes=()=>(e.volumes=[],e.props.forEach(s=>{e.volumes=e.volumes.concat(s.getVolumes())}),e.volumes),t.addVolume=t.addViewProp,t.removeVolume=s=>{e.volumes=e.volumes.filter(i=>i!==s),t.removeViewProp(s),t.modified()},t.removeAllVolumes=()=>{t.getVolumes().forEach(i=>{t.removeViewProp(i)}),e.volumes=[],t.modified()},t.hasLight=s=>e.lights.includes(s),t.addLight=s=>{s&&!t.hasLight(s)&&(e.lights.push(s),t.modified())},t.removeLight=s=>{e.lights=e.lights.filter(i=>i!==s),t.modified()},t.removeAllLights=()=>{e.lights=[],t.modified()},t.setLightCollection=s=>{e.lights=s,t.modified()},t.makeLight=uw.newInstance,t.createLight=()=>{e.automaticLightCreation&&(e._createdLight&&(t.removeLight(e._createdLight),e._createdLight.delete(),e._createdLight=null),e._createdLight=t.makeLight(),t.addLight(e._createdLight),e._createdLight.setLightTypeToHeadLight(),e._createdLight.setPosition(t.getActiveCamera().getPosition()),e._createdLight.setFocalPoint(t.getActiveCamera().getFocalPoint()))},t.normalizedDisplayToWorld=(s,i,o,u)=>{let c=t.normalizedDisplayToProjection(s,i,o);return c=t.projectionToView(c[0],c[1],c[2],u),t.viewToWorld(c[0],c[1],c[2])},t.worldToNormalizedDisplay=(s,i,o,u)=>{let c=t.worldToView(s,i,o);return c=t.viewToProjection(c[0],c[1],c[2],u),t.projectionToNormalizedDisplay(c[0],c[1],c[2])},t.viewToWorld=(s,i,o)=>{if(e.activeCamera===null)return Cn("ViewToWorld: no active camera, cannot compute view to world, returning 0,0,0"),[0,0,0];const u=e.activeCamera.getViewMatrix();dt(u,u),Ve(u,u);const c=new Float64Array([s,i,o]);return Se(c,c,u),c},t.projectionToView=(s,i,o,u)=>{if(e.activeCamera===null)return Cn("ProjectionToView: no active camera, cannot compute projection to view, returning 0,0,0"),[0,0,0];const c=e.activeCamera.getProjectionMatrix(u,-1,1);dt(c,c),Ve(c,c);const f=new Float64Array([s,i,o]);return Se(f,f,c),f},t.worldToView=(s,i,o)=>{if(e.activeCamera===null)return Cn("WorldToView: no active camera, cannot compute view to world, returning 0,0,0"),[0,0,0];const u=e.activeCamera.getViewMatrix();Ve(u,u);const c=new Float64Array([s,i,o]);return Se(c,c,u),c},t.viewToProjection=(s,i,o,u)=>{if(e.activeCamera===null)return Cn("ViewToProjection: no active camera, cannot compute view to projection, returning 0,0,0"),[0,0,0];const c=e.activeCamera.getProjectionMatrix(u,-1,1);Ve(c,c);const f=new Float64Array([s,i,o]);return Se(f,f,c),f},t.computeVisiblePropBounds=()=>{e.allBounds[0]=Me.INIT_BOUNDS[0],e.allBounds[1]=Me.INIT_BOUNDS[1],e.allBounds[2]=Me.INIT_BOUNDS[2],e.allBounds[3]=Me.INIT_BOUNDS[3],e.allBounds[4]=Me.INIT_BOUNDS[4],e.allBounds[5]=Me.INIT_BOUNDS[5];let s=!0;t.invokeEvent(n);for(let i=0;i<e.props.length;++i){const o=e.props[i];if(o.getVisibility()&&o.getUseBounds()){const u=o.getBounds();u&&bs(u)&&(s=!1,u[0]<e.allBounds[0]&&(e.allBounds[0]=u[0]),u[1]>e.allBounds[1]&&(e.allBounds[1]=u[1]),u[2]<e.allBounds[2]&&(e.allBounds[2]=u[2]),u[3]>e.allBounds[3]&&(e.allBounds[3]=u[3]),u[4]<e.allBounds[4]&&(e.allBounds[4]=u[4]),u[5]>e.allBounds[5]&&(e.allBounds[5]=u[5]))}}return s&&(ro(e.allBounds),Ur("Can't compute bounds, no 3D props are visible")),e.allBounds},t.resetCamera=function(){const i=(arguments.length>0&&arguments[0]!==void 0?arguments[0]:null)||t.computeVisiblePropBounds(),o=[0,0,0];if(!bs(i))return Ur("Cannot reset camera!"),!1;let u=null;if(t.getActiveCamera())u=e.activeCamera.getViewPlaneNormal();else return Cn("Trying to reset non-existent camera"),!1;e.activeCamera.setViewAngle(30),o[0]=(i[0]+i[1])/2,o[1]=(i[2]+i[3])/2,o[2]=(i[4]+i[5])/2;let c=i[1]-i[0],f=i[3]-i[2],l=i[5]-i[4];c*=c,f*=f,l*=l;let g=c+f+l;g=g===0?1:g,g=Math.sqrt(g)*.5;const p=Ge(e.activeCamera.getViewAngle()),y=g,h=g/Math.sin(p*.5),d=e.activeCamera.getViewUp();return Math.abs(ge(d,u))>.999&&(dw("Resetting view-up since view plane normal is parallel"),e.activeCamera.setViewUp(-d[2],d[0],d[1])),e.activeCamera.setFocalPoint(o[0],o[1],o[2]),e.activeCamera.setPosition(o[0]+h*u[0],o[1]+h*u[1],o[2]+h*u[2]),t.resetCameraClippingRange(i),e.activeCamera.setParallelScale(y),e.activeCamera.setPhysicalScale(g),e.activeCamera.setPhysicalTranslation(-o[0],-o[1],-o[2]),t.invokeEvent(a),!0},t.resetCameraClippingRange=function(){const i=(arguments.length>0&&arguments[0]!==void 0?arguments[0]:null)||t.computeVisiblePropBounds();if(!bs(i))return Ur("Cannot reset camera clipping range!"),!1;if(t.getActiveCameraAndResetIfCreated(),!e.activeCamera)return Cn("Trying to reset clipping range of non-existent camera"),!1;const o=e.activeCamera.computeClippingRange(i);let u=0;if(e.activeCamera.getParallelProjection())u=.2*e.activeCamera.getParallelScale();else{const c=Ge(e.activeCamera.getViewAngle());u=.2*Math.tan(c/2)*o[1]}return o[1]-o[0]<u&&(u=u-o[1]+o[0],o[1]+=u/2,o[0]-=u/2),o[0]<0&&(o[0]=0),o[0]=.99*o[0]-(o[1]-o[0])*e.clippingRangeExpansion,o[1]=1.01*o[1]+(o[1]-o[0])*e.clippingRangeExpansion,o[0]=o[0]>=o[1]?.01*o[1]:o[0],e.nearClippingPlaneTolerance||(e.nearClippingPlaneTolerance=.01),o[0]<e.nearClippingPlaneTolerance*o[1]&&(o[0]=e.nearClippingPlaneTolerance*o[1]),e.activeCamera.setClippingRange(o[0],o[1]),t.invokeEvent(r),!1},t.setRenderWindow=s=>{s!==e._renderWindow&&(e._vtkWindow=s,e._renderWindow=s)},t.visibleActorCount=()=>e.props.filter(s=>s.getVisibility()).length,t.visibleVolumeCount=t.visibleActorCount,t.getMTime=()=>{let s=e.mtime;const i=e.activeCamera?e.activeCamera.getMTime():0;i>s&&(s=i);const o=e._createdLight?e._createdLight.getMTime():0;return o>s&&(s=o),s},t.getTransparent=()=>!!e.preserveColorBuffer,t.isActiveCameraCreated=()=>!!e.activeCamera}const yw={pickedProp:null,activeCamera:null,allBounds:[],ambient:[1,1,1],allocatedRenderTime:100,timeFactor:1,automaticLightCreation:!0,twoSidedLighting:!0,lastRenderTimeInSeconds:-1,renderWindow:null,lights:[],actors:[],volumes:[],lightFollowCamera:!0,numberOfPropsRendered:0,propArray:null,pathArray:null,layer:0,preserveColorBuffer:!1,preserveDepthBuffer:!1,computeVisiblePropBounds:ao(),interactive:!0,nearClippingPlaneTolerance:0,clippingRangeExpansion:.05,erase:!0,draw:!0,useShadows:!1,useDepthPeeling:!1,occlusionRatio:0,maximumNumberOfPeels:4,selector:null,delegate:null,texturedBackground:!1,backgroundTexture:null,environmentTexture:null,environmentTextureDiffuseStrength:1,environmentTextureSpecularStrength:1,useEnvironmentTextureAsBackground:!1,pass:0};function $g(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};for(Object.assign(e,yw,n),hw.extend(t,e,n),e.background||(e.background=[0,0,0,1]);e.background.length<3;)e.background.push(0);e.background.length===3&&e.background.push(1),lt(t,e,["_renderWindow","allocatedRenderTime","timeFactor","lastRenderTimeInSeconds","numberOfPropsRendered","lastRenderingUsedDepthPeeling","selector"]),He(t,e,["twoSidedLighting","lightFollowCamera","automaticLightCreation","erase","draw","nearClippingPlaneTolerance","clippingRangeExpansion","backingStore","interactive","layer","preserveColorBuffer","preserveDepthBuffer","useDepthPeeling","occlusionRatio","maximumNumberOfPeels","delegate","backgroundTexture","texturedBackground","environmentTexture","environmentTextureDiffuseStrength","environmentTextureSpecularStrength","useEnvironmentTextureAsBackground","useShadows","pass"]),Or(t,e,["actors","volumes","lights"]),Ki(t,e,["background"],4,1),sa(t,e,["renderWindow"]),vw(t,e)}const Tw=De($g,"vtkRenderer");var xw={newInstance:Tw,extend:$g};const Sw="WebGL",fs=Object.create(null);function wo(t,e){fs[t]=e}function Cw(){return Object.keys(fs)}function Wg(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return fs[t]&&fs[t](e)}function ww(t,e){e.classHierarchy.push("vtkRenderWindow"),t.addRenderer=n=>{t.hasRenderer(n)||(n.setRenderWindow(t),e.renderers.push(n),t.modified())},t.removeRenderer=n=>{e.renderers=e.renderers.filter(r=>r!==n),t.modified()},t.hasRenderer=n=>e.renderers.indexOf(n)!==-1,t.newAPISpecificView=function(n){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return Wg(n||e.defaultViewAPI,r)},t.addView=n=>{t.hasView(n)||(n.setRenderable(t),e._views.push(n),t.modified())},t.removeView=n=>{e._views=e._views.filter(r=>r!==n),t.modified()},t.hasView=n=>e._views.indexOf(n)!==-1,t.preRender=()=>{e.renderers.forEach(n=>{n.isActiveCameraCreated()||n.resetCamera()})},t.render=()=>{t.preRender(),e.interactor?e.interactor.render():e._views.forEach(n=>n.traverseAllPasses())},t.getStatistics=()=>{const n={propCount:0,invisiblePropCount:0,gpuMemoryMB:0};return e._views.forEach(r=>{r.getGraphicsMemoryInfo&&(n.gpuMemoryMB+=r.getGraphicsMemoryInfo()/1e6)}),e.renderers.forEach(r=>{const a=r.getViewProps(),s=e._views[0].getViewNodeFor(r);a.forEach(i=>{if(i.getVisibility()){n.propCount+=1;const o=i.getMapper&&i.getMapper();if(o&&o.getPrimitiveCount){const u=s.getViewNodeFor(o);if(u){u.getAllocatedGPUMemoryInBytes&&(n.gpuMemoryMB+=u.getAllocatedGPUMemoryInBytes()/1e6);const c=o.getPrimitiveCount();Object.keys(c).forEach(f=>{n[f]||(n[f]=0),n[f]+=c[f]})}}}else n.invisiblePropCount+=1})}),n.str=Object.keys(n).map(r=>`${r}: ${n[r]}`).join(`
- `),n},t.captureImages=function(){let n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"image/png",r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return _.setImmediate(t.render),e._views.map(a=>a.captureNextImage?a.captureNextImage(n,r):void 0).filter(a=>!!a)}}const _w={defaultViewAPI:Sw,renderers:[],views:[],interactor:null,neverRendered:!0,numberOfLayers:1};function zg(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,_w,n),_.obj(t,e),_.setGet(t,e,["interactor","numberOfLayers","_views","defaultViewAPI"]),_.get(t,e,["neverRendered"]),_.getArray(t,e,["renderers"]),_.moveToProtected(t,e,["views"]),_.event(t,e,"completion"),ww(t,e)}const Ew=_.newInstance(zg,"vtkRenderWindow");var Rw={newInstance:Ew,extend:zg,registerViewConstructor:wo,listViewAPIs:Cw,newAPISpecificView:Wg};const mi={Unknown:0,LeftController:1,RightController:2},zr={Unknown:0,Trigger:1,TrackPad:2,Grip:3,Thumbstick:4,A:5,B:6,ApplicationMenu:7},Ow={Unknown:0,TouchpadX:1,TouchpadY:2,ThumbstickX:3,ThumbstickY:4};var Ag={Device:mi,Input:zr,Axis:Ow};const{Device:La,Input:Wn}=Ag,{vtkWarningMacro:Ba,vtkErrorMacro:ka,normalizeWheel:Dw,vtkOnceErrorMacro:mw}=_,sr={ctrlKey:!1,altKey:!1,shiftKey:!1},Zs={"xr-standard":[Wn.Trigger,Wn.Grip,Wn.TrackPad,Wn.Thumbstick,Wn.A,Wn.B]},_o=["StartAnimation","Animation","EndAnimation","PointerEnter","PointerLeave","MouseEnter","MouseLeave","StartMouseMove","MouseMove","EndMouseMove","LeftButtonPress","LeftButtonRelease","MiddleButtonPress","MiddleButtonRelease","RightButtonPress","RightButtonRelease","KeyPress","KeyDown","KeyUp","StartMouseWheel","MouseWheel","EndMouseWheel","StartPinch","Pinch","EndPinch","StartPan","Pan","EndPan","StartRotate","Rotate","EndRotate","Button3D","Move3D","StartPointerLock","EndPointerLock","StartInteraction","Interaction","EndInteraction","AnimationFrameRateUpdate"];function br(t){t.cancelable&&t.preventDefault()}function Fa(t){const e=Object.create(null);return t.forEach(n=>{let{pointerId:r,position:a}=n;e[r]=a}),e}function Mw(t,e){e.classHierarchy.push("vtkRenderWindowInteractor");const n={...t},r=new Set,a=new Map;let s=1;t.start=()=>{!e.initialized&&(t.initialize(),!e.initialized)||t.startEventLoop()},t.setRenderWindow=h=>{ka("you want to call setView(view) instead of setRenderWindow on a vtk.js interactor")},t.setInteractorStyle=h=>{e.interactorStyle!==h&&(e.interactorStyle!=null&&e.interactorStyle.setInteractor(null),e.interactorStyle=h,e.interactorStyle!=null&&e.interactorStyle.getInteractor()!==t&&e.interactorStyle.setInteractor(t))},t.initialize=()=>{e.initialized=!0,t.enable(),t.render()},t.enable=()=>t.setEnabled(!0),t.disable=()=>t.setEnabled(!1),t.startEventLoop=()=>Ba("empty event loop");function i(h,d){e._forcedRenderer||(e.currentRenderer=t.findPokedRenderer(h,d))}t.getCurrentRenderer=()=>(e.currentRenderer||i(0,0),e.currentRenderer);function o(h){const d=e._view.getCanvas(),x=d.getBoundingClientRect(),S=d.width/x.width,v=d.height/x.height,T={x:S*(h.clientX-x.left),y:v*(x.height-h.clientY+x.top),z:0};return(a.size<=1||!e.currentRenderer)&&i(T.x,T.y),T}const u=e._getScreenEventPositionFor||o;function c(h){return{controlKey:h.ctrlKey,altKey:h.altKey,shiftKey:h.shiftKey}}function f(h){const d=c(h);return{key:h.key,keyCode:h.charCode,...d}}function l(h){return h.pointerType||""}const g=()=>{if(e.container===null)return;const{container:h}=e;h.addEventListener("contextmenu",br),h.addEventListener("wheel",t.handleWheel),h.addEventListener("DOMMouseScroll",t.handleWheel),h.addEventListener("pointerenter",t.handlePointerEnter),h.addEventListener("pointerleave",t.handlePointerLeave),h.addEventListener("pointermove",t.handlePointerMove,{passive:!1}),h.addEventListener("pointerdown",t.handlePointerDown,{passive:!1}),h.addEventListener("pointerup",t.handlePointerUp),h.addEventListener("pointercancel",t.handlePointerCancel),document.addEventListener("keypress",t.handleKeyPress),document.addEventListener("keydown",t.handleKeyDown),document.addEventListener("keyup",t.handleKeyUp),document.addEventListener("pointerlockchange",t.handlePointerLockChange),h.style.touchAction="none",h.style.userSelect="none",h.style.webkitTapHighlightColor="rgba(0,0,0,0)"};t.bindEvents=h=>{if(h===null)return;n.setContainer(h)&&g()};const p=()=>{clearTimeout(e.moveTimeoutID),clearTimeout(e.wheelTimeoutID),e.moveTimeoutID=0,e.wheelTimeoutID=0,s=1;const{container:h}=e;h&&(h.removeEventListener("contextmenu",br),h.removeEventListener("wheel",t.handleWheel),h.removeEventListener("DOMMouseScroll",t.handleWheel),h.removeEventListener("pointerenter",t.handlePointerEnter),h.removeEventListener("pointerleave",t.handlePointerLeave),h.removeEventListener("pointermove",t.handlePointerMove,{passive:!1}),h.removeEventListener("pointerdown",t.handlePointerDown,{passive:!1}),h.removeEventListener("pointerup",t.handlePointerUp),h.removeEventListener("pointercancel",t.handlePointerCancel)),document.removeEventListener("keypress",t.handleKeyPress),document.removeEventListener("keydown",t.handleKeyDown),document.removeEventListener("keyup",t.handleKeyUp),document.removeEventListener("pointerlockchange",t.handlePointerLockChange),a.clear()};t.unbindEvents=()=>{p(),n.setContainer(null)},t.handleKeyPress=h=>{const d=f(h);t.keyPressEvent(d)},t.handleKeyDown=h=>{const d=f(h);t.keyDownEvent(d)},t.handleKeyUp=h=>{const d=f(h);t.keyUpEvent(d)},t.handlePointerEnter=h=>{const d={...c(h),position:u(h),deviceType:l(h)};t.pointerEnterEvent(d),d.deviceType==="mouse"&&t.mouseEnterEvent(d)},t.handlePointerLeave=h=>{const d={...c(h),position:u(h),deviceType:l(h)};t.pointerLeaveEvent(d),d.deviceType==="mouse"&&t.mouseLeaveEvent(d)},t.handlePointerDown=h=>{if(!(h.button>2||t.isPointerLocked()))switch(e.preventDefaultOnPointerDown&&br(h),h.target.hasPointerCapture(h.pointerId)&&h.target.releasePointerCapture(h.pointerId),e.container.setPointerCapture(h.pointerId),a.has(h.pointerId)&&Ba("[RenderWindowInteractor] duplicate pointerId detected"),a.set(h.pointerId,{pointerId:h.pointerId,position:u(h)}),h.pointerType){case"pen":case"touch":t.handleTouchStart(h);break;case"mouse":default:t.handleMouseDown(h);break}},t.handlePointerUp=h=>{if(a.has(h.pointerId))switch(e.preventDefaultOnPointerUp&&br(h),a.delete(h.pointerId),e.container.releasePointerCapture(h.pointerId),h.pointerType){case"pen":case"touch":t.handleTouchEnd(h);break;case"mouse":default:t.handleMouseUp(h);break}},t.handlePointerCancel=h=>{if(a.has(h.pointerId))switch(a.delete(h.pointerId),h.pointerType){case"pen":case"touch":t.handleTouchEnd(h);break;case"mouse":default:t.handleMouseUp(h);break}},t.handlePointerMove=h=>{if(a.has(h.pointerId)){const d=a.get(h.pointerId);d.position=u(h)}switch(h.pointerType){case"pen":case"touch":t.handleTouchMove(h);break;case"mouse":default:t.handleMouseMove(h);break}},t.handleMouseDown=h=>{const d={...c(h),position:u(h),deviceType:l(h)};switch(h.button){case 0:t.leftButtonPressEvent(d);break;case 1:t.middleButtonPressEvent(d);break;case 2:t.rightButtonPressEvent(d);break;default:ka(`Unknown mouse button pressed: ${h.button}`);break}},t.requestPointerLock=()=>{e.container&&e.container.requestPointerLock()},t.exitPointerLock=()=>{var h;return(h=document.exitPointerLock)==null?void 0:h.call(document)},t.isPointerLocked=()=>!!e.container&&document.pointerLockElement===e.container,t.handlePointerLockChange=()=>{t.isPointerLocked()?t.startPointerLockEvent():t.endPointerLockEvent()};function y(){e._view&&e.enabled&&e.enableRender&&(e.inRender=!0,e._view.traverseAllPasses(),e.inRender=!1),t.invokeRenderEvent()}t.requestAnimation=h=>{if(h===void 0){ka("undefined requester, can not start animating");return}if(r.has(h)){Ba("requester is already registered for animating");return}r.add(h),!e.animationRequest&&r.size===1&&!e.xrAnimation&&(e._animationStartTime=Date.now(),e._animationFrameCount=0,e.animationRequest=requestAnimationFrame(t.handleAnimation),t.startAnimationEvent())},t.extendAnimation=h=>{const d=Date.now()+h;e._animationExtendedEnd=Math.max(e._animationExtendedEnd,d),!e.animationRequest&&r.size===0&&!e.xrAnimation&&(e._animationStartTime=Date.now(),e._animationFrameCount=0,e.animationRequest=requestAnimationFrame(t.handleAnimation),t.startAnimationEvent())},t.isAnimating=()=>e.xrAnimation||e.animationRequest!==null,t.cancelAnimation=function(h){let d=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;if(!r.has(h)){if(!d){const x=h&&h.getClassName?h.getClassName():h;Ba(`${x} did not request an animation`)}return}r.delete(h),e.animationRequest&&r.size===0&&Date.now()>e._animationExtendedEnd&&(cancelAnimationFrame(e.animationRequest),e.animationRequest=null,t.endAnimationEvent(),t.render())},t.switchToXRAnimation=()=>{e.animationRequest&&(cancelAnimationFrame(e.animationRequest),e.animationRequest=null),e.xrAnimation=!0},t.returnFromXRAnimation=()=>{e.xrAnimation=!1,r.size!==0&&(e.recentAnimationFrameRate=10,e.animationRequest=requestAnimationFrame(t.handleAnimation))},t.updateXRGamepads=(h,d,x)=>{h.inputSources.forEach(S=>{const v=S.gripSpace==null?null:d.getPose(S.gripSpace,x),T=S.gamepad,w=S.handedness;if(T){T.index in e.lastGamepadValues||(e.lastGamepadValues[T.index]={left:{buttons:{}},right:{buttons:{}},none:{buttons:{}}});for(let C=0;C<T.buttons.length;++C)C in e.lastGamepadValues[T.index][w].buttons||(e.lastGamepadValues[T.index][w].buttons[C]=!1),e.lastGamepadValues[T.index][w].buttons[C]!==T.buttons[C].pressed&&v!=null&&(t.button3DEvent({gamepad:T,position:v.transform.position,orientation:v.transform.orientation,pressed:T.buttons[C].pressed,device:S.handedness==="left"?La.LeftController:La.RightController,input:Zs[T.mapping]&&Zs[T.mapping][C]?Zs[T.mapping][C]:Wn.Trigger}),e.lastGamepadValues[T.index][w].buttons[C]=T.buttons[C].pressed),e.lastGamepadValues[T.index][w].buttons[C]&&v!=null&&t.move3DEvent({gamepad:T,position:v.transform.position,orientation:v.transform.orientation,device:S.handedness==="left"?La.LeftController:La.RightController})}})},t.handleMouseMove=h=>{const d={...c(h),position:u(h),deviceType:l(h)};e.moveTimeoutID===0?t.startMouseMoveEvent(d):(t.mouseMoveEvent(d),clearTimeout(e.moveTimeoutID)),e.moveTimeoutID=setTimeout(()=>{t.endMouseMoveEvent(),e.moveTimeoutID=0},200)},t.handleAnimation=()=>{const h=Date.now();e._animationFrameCount++,h-e._animationStartTime>1e3&&e._animationFrameCount>1&&(e.recentAnimationFrameRate=1e3*(e._animationFrameCount-1)/(h-e._animationStartTime),e.lastFrameTime=1/e.recentAnimationFrameRate,t.animationFrameRateUpdateEvent(),e._animationStartTime=h,e._animationFrameCount=1),t.animationEvent(),y(),r.size>0||Date.now()<e._animationExtendedEnd?e.animationRequest=requestAnimationFrame(t.handleAnimation):(cancelAnimationFrame(e.animationRequest),e.animationRequest=null,t.endAnimationEvent(),t.render())},t.handleWheel=h=>{br(h);const d={...Dw(h),...c(h),position:u(h),deviceType:l(h)};e.wheelTimeoutID===0&&(Math.abs(d.spinY)>=.3?s=Math.abs(d.spinY):s=1),d.spinY/=s,e.wheelTimeoutID===0?(t.startMouseWheelEvent(d),t.mouseWheelEvent(d)):(t.mouseWheelEvent(d),clearTimeout(e.wheelTimeoutID)),e.mouseScrollDebounceByPass?(t.extendAnimation(600),t.endMouseWheelEvent(),e.wheelTimeoutID=0):e.wheelTimeoutID=setTimeout(()=>{t.extendAnimation(600),t.endMouseWheelEvent(),e.wheelTimeoutID=0},200)},t.handleMouseUp=h=>{const d={...c(h),position:u(h),deviceType:l(h)};switch(h.button){case 0:t.leftButtonReleaseEvent(d);break;case 1:t.middleButtonReleaseEvent(d);break;case 2:t.rightButtonReleaseEvent(d);break;default:ka(`Unknown mouse button released: ${h.button}`);break}},t.handleTouchStart=h=>{const d=[...a.values()];if(e.recognizeGestures&&d.length>1){const x=Fa(a);if(d.length===2){const S={...c(sr),position:d[0].position,deviceType:l(h)};t.leftButtonReleaseEvent(S)}t.recognizeGesture("TouchStart",x)}else if(d.length===1){const x={...c(sr),position:u(h),deviceType:l(h)};t.leftButtonPressEvent(x)}},t.handleTouchMove=h=>{const d=[...a.values()];if(e.recognizeGestures&&d.length>1){const x=Fa(a);t.recognizeGesture("TouchMove",x)}else if(d.length===1){const x={...c(sr),position:d[0].position,deviceType:l(h)};t.mouseMoveEvent(x)}},t.handleTouchEnd=h=>{const d=[...a.values()];if(e.recognizeGestures)if(d.length===0){const x={...c(sr),position:u(h),deviceType:l(h)};t.leftButtonReleaseEvent(x)}else if(d.length===1){const x=Fa(a);t.recognizeGesture("TouchEnd",x);const S={...c(sr),position:d[0].position,deviceType:l(h)};t.leftButtonPressEvent(S)}else{const x=Fa(a);t.recognizeGesture("TouchMove",x)}else if(d.length===1){const x={...c(sr),position:d[0].position,deviceType:l(h)};t.leftButtonReleaseEvent(x)}},t.setView=h=>{e._view!==h&&(e._view=h,e._view.getRenderable().setInteractor(t),t.modified())},t.getFirstRenderer=()=>{var h,d,x;return(x=(d=(h=e._view)==null?void 0:h.getRenderable())==null?void 0:d.getRenderersByReference())==null?void 0:x[0]},t.findPokedRenderer=function(){var C,R;let h=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0,d=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;if(!e._view)return null;const x=(R=(C=e._view)==null?void 0:C.getRenderable())==null?void 0:R.getRenderers();if(!x||x.length===0)return null;x.sort((m,B)=>m.getLayer()-B.getLayer());let S=null,v=null,T=null,w=x.length;for(;w--;){const m=x[w];if(e._view.isInViewport(h,d,m)&&m.getInteractive()){T=m;break}S===null&&m.getInteractive()&&(S=m),v===null&&e._view.isInViewport(h,d,m)&&(v=m)}return T===null&&(T=S),T===null&&(T=v),T==null&&(T=x[0]),T},t.render=()=>{!t.isAnimating()&&!e.inRender&&y()},_o.forEach(h=>{const d=h.charAt(0).toLowerCase()+h.slice(1);t[`${d}Event`]=x=>{if(!e.enabled)return;if(!t.getCurrentRenderer()){mw(`
- Can not forward events without a current renderer on the interactor.
- `);return}const v={type:h,pokedRenderer:e.currentRenderer,firstRenderer:t.getFirstRenderer(),...x};t[`invoke${h}`](v)}}),t.recognizeGesture=(h,d)=>{if(Object.keys(d).length>2)return;if(e.startingEventPositions||(e.startingEventPositions={}),h==="TouchStart"){Object.keys(d).forEach(M=>{e.startingEventPositions[M]=d[M]}),e.currentGesture="Start";return}if(h==="TouchEnd"){e.currentGesture==="Pinch"&&(t.render(),t.endPinchEvent()),e.currentGesture==="Rotate"&&(t.render(),t.endRotateEvent()),e.currentGesture==="Pan"&&(t.render(),t.endPanEvent()),e.currentGesture="Start",e.startingEventPositions={};return}let x=0;const S=[],v=[];Object.keys(d).forEach(M=>{S[x]=d[M],v[x]=e.startingEventPositions[M],x++});const T=Math.sqrt((v[0].x-v[1].x)*(v[0].x-v[1].x)+(v[0].y-v[1].y)*(v[0].y-v[1].y)),w=Math.sqrt((S[0].x-S[1].x)*(S[0].x-S[1].x)+(S[0].y-S[1].y)*(S[0].y-S[1].y));let C=Qr(Math.atan2(v[1].y-v[0].y,v[1].x-v[0].x)),R=Qr(Math.atan2(S[1].y-S[0].y,S[1].x-S[0].x)),m=R-C;R=R+180>=360?R-180:R+180,C=C+180>=360?C-180:C+180,Math.abs(R-C)<Math.abs(m)&&(m=R-C);const B=[];if(B[0]=(S[0].x-v[0].x+S[1].x-v[1].x)/2,B[1]=(S[0].y-v[0].y+S[1].y-v[1].y)/2,h==="TouchMove")if(e.currentGesture==="Start"){let M=.01*Math.sqrt(e.container.clientWidth*e.container.clientWidth+e.container.clientHeight*e.container.clientHeight);M<15&&(M=15);const D=Math.abs(w-T),L=w*3.1415926*Math.abs(m)/360,b=Math.sqrt(B[0]*B[0]+B[1]*B[1]);if(D>M&&D>L&&D>b){e.currentGesture="Pinch";const $={scale:1,touches:d};t.startPinchEvent($)}else if(L>M&&L>b){e.currentGesture="Rotate";const $={rotation:0,touches:d};t.startRotateEvent($)}else if(b>M){e.currentGesture="Pan";const $={translation:[0,0],touches:d};t.startPanEvent($)}}else{if(e.currentGesture==="Rotate"){const M={rotation:m,touches:d};t.rotateEvent(M)}if(e.currentGesture==="Pinch"){const M={scale:w/T,touches:d};t.pinchEvent(M)}if(e.currentGesture==="Pan"){const M={translation:B,touches:d};t.panEvent(M)}}},t.handleVisibilityChange=()=>{e._animationStartTime=Date.now(),e._animationFrameCount=0},t.setCurrentRenderer=h=>{e._forcedRenderer=!!h,e.currentRenderer=h},t.setContainer=h=>{p();const d=n.setContainer(h??null);return d&&g(),d},t.delete=()=>{for(;r.size;)t.cancelAnimation(r.values().next().value);typeof document.hidden<"u"&&document.removeEventListener("visibilitychange",t.handleVisibilityChange),e.container&&t.setContainer(null),n.delete()},typeof document.hidden<"u"&&document.addEventListener("visibilitychange",t.handleVisibilityChange,!1)}const Vw={renderWindow:null,interactorStyle:null,picker:null,pickingManager:null,initialized:!1,enabled:!1,enableRender:!0,currentRenderer:null,lightFollowCamera:!0,desiredUpdateRate:30,stillUpdateRate:2,container:null,recognizeGestures:!0,currentGesture:"Start",animationRequest:null,lastFrameTime:.1,recentAnimationFrameRate:10,wheelTimeoutID:0,moveTimeoutID:0,lastGamepadValues:{},preventDefaultOnPointerDown:!1,preventDefaultOnPointerUp:!1,mouseScrollDebounceByPass:!1};function Hg(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Vw,n),_.obj(t,e),e._animationExtendedEnd=0,_.event(t,e,"RenderEvent"),_o.forEach(r=>_.event(t,e,r)),_.get(t,e,["initialized","interactorStyle","lastFrameTime","recentAnimationFrameRate","_view"]),_.setGet(t,e,["container","lightFollowCamera","enabled","enableRender","recognizeGestures","desiredUpdateRate","stillUpdateRate","picker","preventDefaultOnPointerDown","preventDefaultOnPointerUp","mouseScrollDebounceByPass"]),_.moveToProtected(t,e,["view"]),Mw(t,e)}const Lw=_.newInstance(Hg,"vtkRenderWindowInteractor");var jg={newInstance:Lw,extend:Hg,handledEvents:_o,...Ag};const{vtkErrorMacro:Bw,VOID:kw}=_;function Fw(t,e,n,r){return t.getRenderWindow().getViews()[0].worldToDisplay(e,n,r,t)}function Uw(t,e,n,r){return t.getRenderWindow().getViews()[0].displayToWorld(e,n,r,t)}const bw={computeWorldToDisplay:Fw,computeDisplayToWorld:Uw};function Nw(t,e){e.classHierarchy.push("vtkInteractorObserver");const n={...t};function r(){for(;e.subscribedEvents.length;)e.subscribedEvents.pop().unsubscribe()}function a(){jg.handledEvents.forEach(s=>{t[`handle${s}`]&&e.subscribedEvents.push(e._interactor[`on${s}`](i=>e.processEvents?t[`handle${s}`](i):kw,e.priority))})}t.setInteractor=s=>{s!==e._interactor&&(r(),e._interactor=s,s&&e.enabled&&a(),t.modified())},t.setEnabled=s=>{s!==e.enabled&&(r(),s&&(e._interactor?a():Bw(`
- The interactor must be set before subscribing to events
- `)),e.enabled=s,t.modified())},t.computeDisplayToWorld=(s,i,o,u)=>s?e._interactor.getView().displayToWorld(i,o,u,s):null,t.computeWorldToDisplay=(s,i,o,u)=>s?e._interactor.getView().worldToDisplay(i,o,u,s):null,t.setPriority=s=>{n.setPriority(s)&&e._interactor&&(r(),a())}}const Gw={enabled:!0,priority:0,processEvents:!0,subscribedEvents:[]};function Kg(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Gw,n),_.obj(t,e),_.event(t,e,"InteractionEvent"),_.event(t,e,"StartInteractionEvent"),_.event(t,e,"EndInteractionEvent"),_.get(t,e,["_interactor","enabled"]),_.setGet(t,e,["priority","processEvents"]),_.moveToProtected(t,e,["interactor"]),Nw(t,e)}const $w=_.newInstance(Kg,"vtkInteractorObserver");var Ww={newInstance:$w,extend:Kg,...bw};const zw={IS_START:0,IS_NONE:0,IS_ROTATE:1,IS_PAN:2,IS_SPIN:3,IS_DOLLY:4,IS_CAMERA_POSE:11,IS_WINDOW_LEVEL:1024,IS_SLICE:1025};var Eo={States:zw};const{States:qt}=Eo,Js={Rotate:qt.IS_ROTATE,Pan:qt.IS_PAN,Spin:qt.IS_SPIN,Dolly:qt.IS_DOLLY,CameraPose:qt.IS_CAMERA_POSE,WindowLevel:qt.IS_WINDOW_LEVEL,Slice:qt.IS_SLICE};function Aw(t,e){e.classHierarchy.push("vtkInteractorStyle"),Object.keys(Js).forEach(n=>{_.event(t,e,`Start${n}Event`),t[`start${n}`]=()=>{e.state===qt.IS_NONE&&(e.state=Js[n],e._interactor.requestAnimation(t),t.invokeStartInteractionEvent({type:"StartInteractionEvent"}),t[`invokeStart${n}Event`]({type:`Start${n}Event`}))},_.event(t,e,`End${n}Event`),t[`end${n}`]=()=>{e.state===Js[n]&&(e.state=qt.IS_NONE,e._interactor.cancelAnimation(t),t.invokeEndInteractionEvent({type:"EndInteractionEvent"}),t[`invokeEnd${n}Event`]({type:`End${n}Event`}),e._interactor.render())}}),t.handleKeyPress=n=>{const r=e._interactor;let a=null;switch(n.key){case"r":case"R":n.pokedRenderer.resetCamera(),r.render();break;case"w":case"W":a=n.pokedRenderer.getActors(),a.forEach(s=>{const i=s.getProperty();i.setRepresentationToWireframe&&i.setRepresentationToWireframe()}),r.render();break;case"s":case"S":a=n.pokedRenderer.getActors(),a.forEach(s=>{const i=s.getProperty();i.setRepresentationToSurface&&i.setRepresentationToSurface()}),r.render();break;case"v":case"V":a=n.pokedRenderer.getActors(),a.forEach(s=>{const i=s.getProperty();i.setRepresentationToPoints&&i.setRepresentationToPoints()}),r.render();break}}}const Hw={state:qt.IS_NONE,handleObservers:1,autoAdjustCameraClippingRange:1};function Pg(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Hw,n),Ww.extend(t,e,n),Aw(t,e)}const jw=_.newInstance(Pg,"vtkInteractorStyle");var Kw={newInstance:jw,extend:Pg,...Eo};const{States:Pt}=Eo;function Pw(t,e){e.classHierarchy.push("vtkInteractorStyleTrackballCamera"),t.handleMouseMove=n=>{const r=n.position,a=n.pokedRenderer;switch(e.state){case Pt.IS_ROTATE:t.handleMouseRotate(a,r),t.invokeInteractionEvent({type:"InteractionEvent"});break;case Pt.IS_PAN:t.handleMousePan(a,r),t.invokeInteractionEvent({type:"InteractionEvent"});break;case Pt.IS_DOLLY:t.handleMouseDolly(a,r),t.invokeInteractionEvent({type:"InteractionEvent"});break;case Pt.IS_SPIN:t.handleMouseSpin(a,r),t.invokeInteractionEvent({type:"InteractionEvent"});break}e.previousPosition=r},t.handleButton3D=n=>{if(n&&n.pressed&&n.device===mi.RightController&&(n.input===zr.Trigger||n.input===zr.TrackPad)){t.startCameraPose();return}n&&!n.pressed&&n.device===mi.RightController&&(n.input===zr.Trigger||n.input===zr.TrackPad)&&e.state===Pt.IS_CAMERA_POSE&&t.endCameraPose()},t.handleMove3D=n=>{switch(e.state){case Pt.IS_CAMERA_POSE:t.updateCameraPose(n);break}},t.updateCameraPose=n=>{const r=n.pokedRenderer.getActiveCamera(),a=r.getPhysicalTranslation(),i=.5*.05*r.getPhysicalScale(),o=r.physicalOrientationToWorldDirection([n.orientation.x,n.orientation.y,n.orientation.z,n.orientation.w]);r.setPhysicalTranslation(a[0]+o[0]*i,a[1]+o[1]*i,a[2]+o[2]*i)},t.handleLeftButtonPress=n=>{const r=n.position;e.previousPosition=r,n.shiftKey?n.controlKey||n.altKey?t.startDolly():t.startPan():n.controlKey||n.altKey?t.startSpin():t.startRotate()},t.handleLeftButtonRelease=()=>{switch(e.state){case Pt.IS_DOLLY:t.endDolly();break;case Pt.IS_PAN:t.endPan();break;case Pt.IS_SPIN:t.endSpin();break;case Pt.IS_ROTATE:t.endRotate();break}},t.handleStartMouseWheel=()=>{t.startDolly()},t.handleEndMouseWheel=()=>{t.endDolly()},t.handleStartPinch=n=>{e.previousScale=n.scale,t.startDolly()},t.handleEndPinch=()=>{t.endDolly()},t.handleStartRotate=n=>{e.previousRotation=n.rotation,t.startRotate()},t.handleEndRotate=()=>{t.endRotate()},t.handleStartPan=n=>{e.previousTranslation=n.translation,t.startPan()},t.handleEndPan=()=>{t.endPan()},t.handlePinch=n=>{t.dollyByFactor(n.pokedRenderer,n.scale/e.previousScale),e.previousScale=n.scale},t.handlePan=n=>{const r=n.pokedRenderer.getActiveCamera();let a=r.getFocalPoint();a=t.computeWorldToDisplay(n.pokedRenderer,a[0],a[1],a[2]);const s=a[2],i=n.translation,o=e.previousTranslation,u=t.computeDisplayToWorld(n.pokedRenderer,a[0]+i[0]-o[0],a[1]+i[1]-o[1],s),c=t.computeDisplayToWorld(n.pokedRenderer,a[0],a[1],s),f=[];f[0]=c[0]-u[0],f[1]=c[1]-u[1],f[2]=c[2]-u[2],a=r.getFocalPoint();const l=r.getPosition();r.setFocalPoint(f[0]+a[0],f[1]+a[1],f[2]+a[2]),r.setPosition(f[0]+l[0],f[1]+l[1],f[2]+l[2]),e._interactor.getLightFollowCamera()&&n.pokedRenderer.updateLightsGeometryToFollowCamera(),r.orthogonalizeViewUp(),e.previousTranslation=n.translation},t.handleRotate=n=>{const r=n.pokedRenderer.getActiveCamera();r.roll(n.rotation-e.previousRotation),r.orthogonalizeViewUp(),e.previousRotation=n.rotation},t.handleMouseRotate=(n,r)=>{if(!e.previousPosition)return;const a=e._interactor,s=r.x-e.previousPosition.x,i=r.y-e.previousPosition.y,o=a.getView().getViewportSize(n);let u=-.1,c=-.1;o[0]&&o[1]&&(u=-20/o[1],c=-20/o[0]);const f=s*c*e.motionFactor,l=i*u*e.motionFactor,g=n.getActiveCamera();!Number.isNaN(f)&&!Number.isNaN(l)&&(g.azimuth(f),g.elevation(l),g.orthogonalizeViewUp()),e.autoAdjustCameraClippingRange&&n.resetCameraClippingRange(),a.getLightFollowCamera()&&n.updateLightsGeometryToFollowCamera()},t.handleMouseSpin=(n,r)=>{if(!e.previousPosition)return;const a=e._interactor,s=n.getActiveCamera(),i=a.getView().getViewportCenter(n),o=Qr(Math.atan2(e.previousPosition.y-i[1],e.previousPosition.x-i[0])),u=Qr(Math.atan2(r.y-i[1],r.x-i[0]))-o;Number.isNaN(u)||(s.roll(u),s.orthogonalizeViewUp())},t.handleMousePan=(n,r)=>{if(!e.previousPosition)return;const a=n.getActiveCamera();let s=a.getFocalPoint();s=t.computeWorldToDisplay(n,s[0],s[1],s[2]);const i=s[2],o=t.computeDisplayToWorld(n,r.x,r.y,i),u=t.computeDisplayToWorld(n,e.previousPosition.x,e.previousPosition.y,i),c=[];c[0]=u[0]-o[0],c[1]=u[1]-o[1],c[2]=u[2]-o[2],s=a.getFocalPoint();const f=a.getPosition();a.setFocalPoint(c[0]+s[0],c[1]+s[1],c[2]+s[2]),a.setPosition(c[0]+f[0],c[1]+f[1],c[2]+f[2]),e._interactor.getLightFollowCamera()&&n.updateLightsGeometryToFollowCamera()},t.handleMouseDolly=(n,r)=>{if(!e.previousPosition)return;const a=r.y-e.previousPosition.y,i=e._interactor.getView().getViewportCenter(n),o=e.motionFactor*a/i[1];t.dollyByFactor(n,1.1**o)},t.handleMouseWheel=n=>{const r=1-n.spinY/e.zoomFactor;t.dollyByFactor(n.pokedRenderer,r)},t.dollyByFactor=(n,r)=>{if(Number.isNaN(r))return;const a=n.getActiveCamera();a.getParallelProjection()?a.setParallelScale(a.getParallelScale()/r):(a.dolly(r),e.autoAdjustCameraClippingRange&&n.resetCameraClippingRange()),e._interactor.getLightFollowCamera()&&n.updateLightsGeometryToFollowCamera()}}const Xw={motionFactor:10,zoomFactor:10};function Xg(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Xw,n),Kw.extend(t,e,n),_.setGet(t,e,["motionFactor","zoomFactor"]),Pw(t,e)}const Iw=_.newInstance(Xg,"vtkInteractorStyleTrackballCamera");var Yw={newInstance:Iw,extend:Xg};function qw(t){return t}function Ro(t){if(t===null||t==="null")return null;if(t==="true")return!0;if(t==="false")return!1;if(!(t===void 0||t==="undefined"))return t[0]==="["&&t[t.length-1]==="]"?t.substring(1,t.length-1).split(",").map(e=>Ro(e.trim())):t===""||Number.isNaN(Number(t))?t:Number(t)}function Qw(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0,e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:window.location.search;const n={},r=t?Ro:qw;return(e||"").replace(/#.*/,"").replace("?","").split("&").forEach(s=>{const[i,o]=s.split("=").map(u=>decodeURIComponent(u));i&&(n[i]=o?r(o):!0)}),n}var Zw={toNativeType:Ro,extractURLParameters:Qw};function Jw(t,e){e.classHierarchy.push("vtkFramebuffer"),t.getBothMode=()=>e.context.FRAMEBUFFER,t.saveCurrentBindingsAndBuffers=n=>{const r=typeof n<"u"?n:t.getBothMode();t.saveCurrentBindings(r),t.saveCurrentBuffers(r)},t.saveCurrentBindings=n=>{if(!e.context){ce("you must set the OpenGLRenderWindow before calling saveCurrentBindings");return}const r=e.context;e.previousDrawBinding=r.getParameter(e.context.FRAMEBUFFER_BINDING),e.previousActiveFramebuffer=e._openGLRenderWindow.getActiveFramebuffer()},t.saveCurrentBuffers=n=>{},t.restorePreviousBindingsAndBuffers=n=>{const r=typeof n<"u"?n:t.getBothMode();t.restorePreviousBindings(r),t.restorePreviousBuffers(r)},t.restorePreviousBindings=n=>{if(!e.context){ce("you must set the OpenGLRenderWindow before calling restorePreviousBindings");return}const r=e.context;r.bindFramebuffer(r.FRAMEBUFFER,e.previousDrawBinding),e._openGLRenderWindow.setActiveFramebuffer(e.previousActiveFramebuffer)},t.restorePreviousBuffers=n=>{},t.bind=function(){let r=arguments.length>0&&arguments[0]!==void 0?arguments[0]:null;r===null&&(r=e.context.FRAMEBUFFER),e.context.bindFramebuffer(r,e.glFramebuffer);for(let a=0;a<e.colorBuffers.length;a++)e.colorBuffers[a].bind();e._openGLRenderWindow.setActiveFramebuffer(t)},t.create=(n,r)=>{if(!e.context){ce("you must set the OpenGLRenderWindow before calling create");return}e.glFramebuffer=e.context.createFramebuffer(),e.glFramebuffer.width=n,e.glFramebuffer.height=r},t.setColorBuffer=function(n){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;const a=e.context;if(!a){ce("you must set the OpenGLRenderWindow before calling setColorBuffer");return}let s=a.COLOR_ATTACHMENT0;if(r>0)if(e._openGLRenderWindow.getWebgl2())s+=r;else{ce("Using multiple framebuffer attachments requires WebGL 2");return}e.colorBuffers[r]=n,a.framebufferTexture2D(a.FRAMEBUFFER,s,a.TEXTURE_2D,n.getHandle(),0)},t.removeColorBuffer=function(){let n=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;const r=e.context;if(!r){ce("you must set the OpenGLRenderWindow before calling removeColorBuffer");return}let a=r.COLOR_ATTACHMENT0;if(n>0)if(e._openGLRenderWindow.getWebgl2())a+=n;else{ce("Using multiple framebuffer attachments requires WebGL 2");return}r.framebufferTexture2D(r.FRAMEBUFFER,a,r.TEXTURE_2D,null,0),e.colorBuffers=e.colorBuffers.splice(n,1)},t.setDepthBuffer=n=>{if(!e.context){ce("you must set the OpenGLRenderWindow before calling setDepthBuffer");return}if(e._openGLRenderWindow.getWebgl2()){const r=e.context;r.framebufferTexture2D(r.FRAMEBUFFER,r.DEPTH_ATTACHMENT,r.TEXTURE_2D,n.getHandle(),0)}else ce("Attaching depth buffer textures to fbo requires WebGL 2")},t.removeDepthBuffer=()=>{if(!e.context){ce("you must set the OpenGLRenderWindow before calling removeDepthBuffer");return}if(e._openGLRenderWindow.getWebgl2()){const n=e.context;n.framebufferTexture2D(n.FRAMEBUFFER,n.DEPTH_ATTACHMENT,n.TEXTURE_2D,null,0)}else ce("Attaching depth buffer textures to framebuffers requires WebGL 2")},t.getGLFramebuffer=()=>e.glFramebuffer,t.setOpenGLRenderWindow=n=>{e._openGLRenderWindow!==n&&(t.releaseGraphicsResources(),e._openGLRenderWindow=n,e.context=null,n&&(e.context=e._openGLRenderWindow.getContext()))},t.releaseGraphicsResources=()=>{e.glFramebuffer&&e.context.deleteFramebuffer(e.glFramebuffer)},t.getSize=()=>e.glFramebuffer==null?null:[e.glFramebuffer.width,e.glFramebuffer.height],t.populateFramebuffer=()=>{if(!e.context){ce("you must set the OpenGLRenderWindow before calling populateFrameBuffer");return}t.bind();const n=e.context,r=In.newInstance();r.setOpenGLRenderWindow(e._openGLRenderWindow),r.setMinificationFilter(Ri.LINEAR),r.setMagnificationFilter(Ri.LINEAR),r.create2DFromRaw(e.glFramebuffer.width,e.glFramebuffer.height,4,Ke.UNSIGNED_CHAR,null),t.setColorBuffer(r),e.depthTexture=n.createRenderbuffer(),n.bindRenderbuffer(n.RENDERBUFFER,e.depthTexture),n.renderbufferStorage(n.RENDERBUFFER,n.DEPTH_COMPONENT16,e.glFramebuffer.width,e.glFramebuffer.height),n.framebufferRenderbuffer(n.FRAMEBUFFER,n.DEPTH_ATTACHMENT,n.RENDERBUFFER,e.depthTexture)},t.getColorTexture=()=>e.colorBuffers[0]}const e_={glFramebuffer:null,colorBuffers:null,depthTexture:null,previousDrawBinding:0,previousReadBinding:0,previousDrawBuffer:0,previousReadBuffer:0,previousActiveFramebuffer:null};function Ig(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,e_,n),qe(t,e),e.colorBuffers&&ce("you cannot initialize colorBuffers through the constructor. You should call setColorBuffer() instead."),e.colorBuffers=[],Or(t,e,["colorBuffers"]),Jw(t,e)}const t_=De(Ig,"vtkFramebuffer");var Oo={newInstance:t_,extend:Ig};function n_(t,e){e.classHierarchy.push("vtkRenderPass"),t.getOperation=()=>e.currentOperation,t.setCurrentOperation=n=>{e.currentOperation=n,e.currentTraverseOperation=`traverse${_.capitalize(e.currentOperation)}`},t.getTraverseOperation=()=>e.currentTraverseOperation,t.traverse=function(n){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;e.deleted||(e._currentParent=r,e.preDelegateOperations.forEach(a=>{t.setCurrentOperation(a),n.traverse(t)}),e.delegates.forEach(a=>{a.traverse(n,t)}),e.postDelegateOperations.forEach(a=>{t.setCurrentOperation(a),n.traverse(t)}))}}const r_={delegates:[],currentOperation:null,preDelegateOperations:[],postDelegateOperations:[],currentParent:null};function Yg(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,r_,n),_.obj(t,e),_.get(t,e,["currentOperation"]),_.setGet(t,e,["delegates","_currentParent","preDelegateOperations","postDelegateOperations"]),_.moveToProtected(t,e,["currentParent"]),n_(t,e)}const a_=_.newInstance(Yg,"vtkRenderPass");var gn={newInstance:a_,extend:Yg};const{Representation:s_}=mr,{vtkErrorMacro:Jc}=_;function i_(t){const e=z.substitute(t.Fragment,"//VTK::RenderPassFragmentShader::Impl",`
- float weight = gl_FragData[0].a * pow(max(1.1 - gl_FragCoord.z, 0.0), 2.0);
- gl_FragData[0] = vec4(gl_FragData[0].rgb*weight, gl_FragData[0].a);
- gl_FragData[1].r = weight;
- `,!1);t.Fragment=e.result}const o_=`//VTK::System::Dec
- in vec2 tcoord;
- uniform sampler2D translucentRTexture;
- uniform sampler2D translucentRGBATexture;
- // the output of this shader
- //VTK::Output::Dec
- void main()
- {
- vec4 t1Color = texture(translucentRGBATexture, tcoord);
- float t2Color = texture(translucentRTexture, tcoord).r;
- gl_FragData[0] = vec4(t1Color.rgb/max(t2Color,0.01), 1.0 - t1Color.a);
- }
- `;function c_(t,e){e.classHierarchy.push("vtkOpenGLOrderIndependentTranslucentPass"),t.createVertexBuffer=()=>{const n=new Float32Array([-1,-1,-1,1,-1,-1,-1,1,-1,1,1,-1]),r=new Float32Array([0,0,1,0,0,1,1,1]),a=new Uint16Array([4,0,1,3,2]),s=_e.newInstance({numberOfComponents:3,values:n});s.setName("points");const i=_e.newInstance({numberOfComponents:2,values:r});i.setName("tcoords");const o=_e.newInstance({numberOfComponents:1,values:a});e.tris.getCABO().createVBO(o,"polys",s_.SURFACE,{points:s,tcoords:i,cellOffset:0}),e.VBOBuildTime.modified()},t.createFramebuffer=n=>{const r=n.getSize(),a=n.getContext();e.framebuffer=Oo.newInstance(),e.framebuffer.setOpenGLRenderWindow(n),e.framebuffer.create(...r),e.framebuffer.saveCurrentBindingsAndBuffers(),e.framebuffer.bind(),e.translucentRGBATexture=In.newInstance(),e.translucentRGBATexture.setInternalFormat(a.RGBA16F),e.translucentRGBATexture.setFormat(a.RGBA),e.translucentRGBATexture.setOpenGLDataType(a.HALF_FLOAT),e.translucentRGBATexture.setOpenGLRenderWindow(n),e.translucentRGBATexture.create2DFromRaw(r[0],r[1],4,"Float32Array",null),e.translucentRTexture=In.newInstance(),e.translucentRTexture.setInternalFormat(a.R16F),e.translucentRTexture.setFormat(a.RED),e.translucentRTexture.setOpenGLDataType(a.HALF_FLOAT),e.translucentRTexture.setOpenGLRenderWindow(n),e.translucentRTexture.create2DFromRaw(r[0],r[1],1,"Float32Array",null),e.translucentZTexture=In.newInstance(),e.translucentZTexture.setOpenGLRenderWindow(n),e.translucentZTexture.createDepthFromRaw(r[0],r[1],"Float32Array",null),e.framebuffer.setColorBuffer(e.translucentRGBATexture,0),e.framebuffer.setColorBuffer(e.translucentRTexture,1),e.framebuffer.setDepthBuffer(e.translucentZTexture)},t.createCopyShader=n=>{e.copyShader=n.getShaderCache().readyShaderProgramArray(["//VTK::System::Dec","attribute vec4 vertexDC;","attribute vec2 tcoordTC;","varying vec2 tcoord;","void main() { tcoord = tcoordTC; gl_Position = vertexDC; }"].join(`
- `),o_,"")},t.createVBO=n=>{const r=n.getContext();e.tris.setOpenGLRenderWindow(n),t.createVertexBuffer();const a=e.copyShader;e.tris.getCABO().bind(),e.copyVAO.addAttributeArray(a,e.tris.getCABO(),"vertexDC",e.tris.getCABO().getVertexOffset(),e.tris.getCABO().getStride(),r.FLOAT,3,r.FALSE)||Jc("Error setting vertexDC in copy shader VAO."),e.copyVAO.addAttributeArray(a,e.tris.getCABO(),"tcoordTC",e.tris.getCABO().getTCoordOffset(),e.tris.getCABO().getStride(),r.FLOAT,2,r.FALSE)||Jc("Error setting vertexDC in copy shader VAO.")},t.traverse=(n,r,a)=>{if(e.deleted)return;const s=n.getSize(),i=n.getContext();if(e._supported=!1,r.getSelector()||!i||!n.getWebgl2()||!i.getExtension("EXT_color_buffer_half_float")&&!i.getExtension("EXT_color_buffer_float")){t.setCurrentOperation("translucentPass"),r.traverse(t);return}if(e._supported=!0,e.framebuffer===null)t.createFramebuffer(n);else{const o=e.framebuffer.getSize();o===null||o[0]!==s[0]||o[1]!==s[1]?(e.framebuffer.releaseGraphicsResources(),e.translucentRGBATexture.releaseGraphicsResources(n),e.translucentRTexture.releaseGraphicsResources(n),e.translucentZTexture.releaseGraphicsResources(n),t.createFramebuffer(n)):(e.framebuffer.saveCurrentBindingsAndBuffers(),e.framebuffer.bind())}i.drawBuffers([i.COLOR_ATTACHMENT0]),i.clearBufferfv(i.COLOR,0,[0,0,0,0]),i.clearBufferfv(i.DEPTH,0,[1]),i.colorMask(!1,!1,!1,!1),a.getOpaqueActorCount()>0&&(a.setCurrentOperation("opaqueZBufferPass"),r.traverse(a)),i.colorMask(!0,!0,!0,!0),i.drawBuffers([i.COLOR_ATTACHMENT0,i.COLOR_ATTACHMENT1]),i.viewport(0,0,s[0],s[1]),i.scissor(0,0,s[0],s[1]),i.clearBufferfv(i.COLOR,0,[0,0,0,1]),i.clearBufferfv(i.COLOR,1,[0,0,0,0]),i.enable(i.DEPTH_TEST),i.enable(i.BLEND),i.blendFuncSeparate(i.ONE,i.ONE,i.ZERO,i.ONE_MINUS_SRC_ALPHA),t.setCurrentOperation("translucentPass"),r.traverse(t),i.drawBuffers([i.NONE]),e.framebuffer.restorePreviousBindingsAndBuffers(),e.copyShader===null?t.createCopyShader(n):n.getShaderCache().readyShaderProgram(e.copyShader),e.copyVAO||(e.copyVAO=tg.newInstance(),e.copyVAO.setOpenGLRenderWindow(n)),e.copyVAO.bind(),e.VBOBuildTime.getMTime()<t.getMTime()&&t.createVBO(n),i.blendFuncSeparate(i.SRC_ALPHA,i.ONE_MINUS_SRC_ALPHA,i.ONE,i.ONE_MINUS_SRC_ALPHA),i.depthMask(!1),i.depthFunc(i.ALWAYS),i.viewport(0,0,s[0],s[1]),i.scissor(0,0,s[0],s[1]),e.translucentRGBATexture.activate(),e.copyShader.setUniformi("translucentRGBATexture",e.translucentRGBATexture.getTextureUnit()),e.translucentRTexture.activate(),e.copyShader.setUniformi("translucentRTexture",e.translucentRTexture.getTextureUnit()),i.drawArrays(i.TRIANGLES,0,e.tris.getCABO().getElementCount()),i.depthMask(!0),i.depthFunc(i.LEQUAL),e.translucentRGBATexture.deactivate(),e.translucentRTexture.deactivate()},t.getShaderReplacement=()=>e._supported?i_:null,t.releaseGraphicsResources=n=>{e.framebuffer&&(e.framebuffer.releaseGraphicsResources(n),e.framebuffer=null),e.translucentRGBATexture&&(e.translucentRGBATexture.releaseGraphicsResources(n),e.translucentRGBATexture=null),e.translucentRTexture&&(e.translucentRTexture.releaseGraphicsResources(n),e.translucentRTexture=null),e.translucentZTexture&&(e.translucentZTexture.releaseGraphicsResources(n),e.translucentZTexture=null),e.copyVAO&&(e.copyVAO.releaseGraphicsResources(n),e.copyVAO=null),e.copyShader&&(e.copyShader.releaseGraphicsResources(n),e.copyShader=null),e.tris&&(e.tris.releaseGraphicsResources(n),e.tris=null),t.modified()}}const u_={framebuffer:null,copyShader:null,tris:null};function qg(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,u_,n),gn.extend(t,e,n),e.VBOBuildTime={},_.obj(e.VBOBuildTime,{mtime:0}),e.tris=Mr.newInstance(),_.get(t,e,["framebuffer"]),c_(t,e)}const f_=_.newInstance(qg,"vtkOpenGLOrderIndependentTranslucentPass");var l_={newInstance:f_,extend:qg};function g_(t,e){e.classHierarchy.push("vtkForwardPass"),t.traverse=function(n){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;if(e.deleted)return;e._currentParent=r,t.setCurrentOperation("buildPass"),n.traverse(t);const a=n.getRenderable().getNumberOfLayers(),s=n.getChildren();for(let i=0;i<a;i++)for(let o=0;o<s.length;o++){const u=s[o],c=n.getRenderable().getRenderers()[o];if(c.getDraw()&&c.getLayer()===i){if(e.opaqueActorCount=0,e.translucentActorCount=0,e.volumeCount=0,e.overlayActorCount=0,t.setCurrentOperation("queryPass"),u.traverse(t),(e.opaqueActorCount>0||e.translucentActorCount>0)&&e.volumeCount>0||e.depthRequested){const f=n.getFramebufferSize();e.framebuffer===null&&(e.framebuffer=Oo.newInstance()),e.framebuffer.setOpenGLRenderWindow(n),e.framebuffer.saveCurrentBindingsAndBuffers();const l=e.framebuffer.getSize();(l===null||l[0]!==f[0]||l[1]!==f[1])&&(e.framebuffer.create(f[0],f[1]),e.framebuffer.populateFramebuffer()),e.framebuffer.bind(),t.setCurrentOperation("zBufferPass"),u.traverse(t),e.framebuffer.restorePreviousBindingsAndBuffers(),e.depthRequested=!1}t.setCurrentOperation("cameraPass"),u.traverse(t),e.opaqueActorCount>0&&(t.setCurrentOperation("opaquePass"),u.traverse(t)),e.translucentActorCount>0&&(e.translucentPass||(e.translucentPass=l_.newInstance()),e.translucentPass.traverse(n,u,t)),e.volumeCount>0&&(t.setCurrentOperation("volumePass"),u.traverse(t)),e.overlayActorCount>0&&(t.setCurrentOperation("overlayPass"),u.traverse(t))}}},t.getZBufferTexture=()=>e.framebuffer?e.framebuffer.getColorTexture():null,t.requestDepth=()=>{e.depthRequested=!0},t.incrementOpaqueActorCount=()=>e.opaqueActorCount++,t.incrementTranslucentActorCount=()=>e.translucentActorCount++,t.incrementVolumeCount=()=>e.volumeCount++,t.incrementOverlayActorCount=()=>e.overlayActorCount++}const p_={opaqueActorCount:0,translucentActorCount:0,volumeCount:0,overlayActorCount:0,framebuffer:null,depthRequested:!1};function Qg(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,p_,n),gn.extend(t,e,n),_.get(t,e,["framebuffer","opaqueActorCount","translucentActorCount","volumeCount"]),g_(t,e)}const h_=_.newInstance(Qg,"vtkForwardPass");var d_={newInstance:h_,extend:Qg};const{FieldAssociations:v_}=Zn;function y_(t,e){e.classHierarchy.push("vtkHardwareSelector"),t.getSourceDataAsync=async(n,r,a,s,i)=>{},t.selectAsync=async(n,r,a,s,i)=>{const o=await t.getSourceDataAsync(n,r,a,s,i);return o?o.generateSelection(r,a,s,i):[]}}const T_={fieldAssociation:v_.FIELD_ASSOCIATION_CELLS,captureZValues:!1};function Zg(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,T_,n),_.obj(t,e),_.setGet(t,e,["fieldAssociation","captureZValues"]),y_(t,e)}const x_=_.newInstance(Zg,"vtkHardwareSelector");var Jg={newInstance:x_,extend:Zg};const S_={GLOBALIDS:0,PEDIGREEIDS:1,VALUES:2,INDICES:3,FRUSTUM:4,LOCATIONS:5,THRESHOLDS:6,BLOCKS:7,QUERY:8},C_={CELL:0,POINT:1,FIELD:2,VERTEX:3,EDGE:4,ROW:5};var w_={SelectionContent:S_,SelectionField:C_};function __(t,e){e.classHierarchy.push("vtkSelectionNode"),t.getBounds=()=>e.points.getBounds()}const E_={contentType:-1,fieldType:-1,properties:null,selectionList:[]};function e0(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,E_,n),_.obj(t,e),e.properties={},_.setGet(t,e,["contentType","fieldType","properties","selectionList"]),__(t,e)}const R_=_.newInstance(e0,"vtkSelectionNode");var Cs={newInstance:R_,extend:e0,...w_};const{PassTypes:$e}=Vl,{SelectionContent:O_,SelectionField:eu}=Cs,{FieldAssociations:Pr}=Zn,{vtkErrorMacro:t0}=_,_n=1;function n0(t){return`${t.propID} ${t.compositeID}`}function r0(t,e,n,r){if(!n)return 0;const a=(e*(r[2]-r[0]+1)+t)*4;return n[a+3]}function on(t,e,n,r){if(!n)return 0;const a=(e*(r[2]-r[0]+1)+t)*4,s=n[a],i=n[a+1];return(n[a+2]*256+i)*256+s}function a0(t,e){let n=e;return n<<=24,n|=t,n}function ur(t,e,n,r){const a=n<0?0:n;if(a===0){if(r[0]=e[0],r[1]=e[1],e[0]<t.area[0]||e[0]>t.area[2]||e[1]<t.area[1]||e[1]>t.area[3])return null;const u=[e[0]-t.area[0],e[1]-t.area[1]],c=on(u[0],u[1],t.pixBuffer[$e.ACTOR_PASS],t.area);if(c<=0||c-_n>=t.props.length)return null;const f={};f.valid=!0,f.propID=c-_n,f.prop=t.props[f.propID];let l=on(u[0],u[1],t.pixBuffer[$e.COMPOSITE_INDEX_PASS],t.area);if((l<0||l>16777215)&&(l=0),f.compositeID=l-_n,t.captureZValues){const y=(u[1]*(t.area[2]-t.area[0]+1)+u[0])*4;f.zValue=(256*t.zBuffer[y]+t.zBuffer[y+1])/65535,f.displayPosition=e}if(t.pixBuffer[$e.ID_LOW24]&&r0(u[0],u[1],t.pixBuffer[$e.ID_LOW24],t.area)===0)return f;const g=on(u[0],u[1],t.pixBuffer[$e.ID_LOW24],t.area),p=on(u[0],u[1],t.pixBuffer[$e.ID_HIGH24],t.area);return f.attributeID=a0(g,p),f}const s=[e[0],e[1]],i=[0,0];let o=ur(t,e,0,r);if(o&&o.valid)return o;for(let u=1;u<a;++u){for(let c=s[1]>u?s[1]-u:0;c<=s[1]+u;++c)if(i[1]=c,s[0]>=u&&(i[0]=s[0]-u,o=ur(t,i,0,r),o&&o.valid)||(i[0]=s[0]+u,o=ur(t,i,0,r),o&&o.valid))return o;for(let c=s[0]>=u?s[0]-(u-1):0;c<=s[0]+(u-1);++c)if(i[0]=c,s[1]>=u&&(i[1]=s[1]-u,o=ur(t,i,0,r),o&&o.valid)||(i[1]=s[1]+u,o=ur(t,i,0,r),o&&o.valid))return o}return r[0]=e[0],r[1]=e[1],null}function s0(t,e,n,r,a){const s=[];let i=0;return e.forEach((o,u)=>{const c=Cs.newInstance();switch(c.setContentType(O_.INDICES),t){case Pr.FIELD_ASSOCIATION_CELLS:c.setFieldType(eu.CELL);break;case Pr.FIELD_ASSOCIATION_POINTS:c.setFieldType(eu.POINT);break;default:t0("Unknown field association")}c.getProperties().propID=o.info.propID,c.getProperties().prop=o.info.prop,c.getProperties().compositeID=o.info.compositeID,c.getProperties().attributeID=o.info.attributeID,c.getProperties().pixelCount=o.pixelCount,n&&(c.getProperties().displayPosition=[o.info.displayPosition[0],o.info.displayPosition[1],o.info.zValue],c.getProperties().worldPosition=a.displayToWorld(o.info.displayPosition[0],o.info.displayPosition[1],o.info.zValue,r)),c.setSelectionList(o.attributeIDs),s[i]=c,i++}),s}function D_(t,e,n,r,a){const s=Math.floor(e),i=Math.floor(n),o=Math.floor(r),u=Math.floor(a),c=new Map,f=[0,0];for(let l=i;l<=u;l++)for(let g=s;g<=o;g++){const y=ur(t,[g,l],0,f);if(y&&y.valid){const h=n0(y);if(!c.has(h))c.set(h,{info:y,pixelCount:1,attributeIDs:[y.attributeID]});else{const d=c.get(h);d.pixelCount++,t.captureZValues&&y.zValue<d.info.zValue&&(d.info=y),d.attributeIDs.indexOf(y.attributeID)===-1&&d.attributeIDs.push(y.attributeID)}}}return s0(t.fieldAssociation,c,t.captureZValues,t.renderer,t.openGLRenderWindow)}function m_(t,e){e.classHierarchy.push("vtkOpenGLHardwareSelector"),t.releasePixBuffers=()=>{e.rawPixBuffer=[],e.pixBuffer=[],e.zBuffer=null},t.beginSelection=()=>{e._openGLRenderer=e._openGLRenderWindow.getViewNodeFor(e._renderer),e.maxAttributeId=0;const r=e._openGLRenderWindow.getSize();if(!e.framebuffer)e.framebuffer=Oo.newInstance(),e.framebuffer.setOpenGLRenderWindow(e._openGLRenderWindow),e.framebuffer.saveCurrentBindingsAndBuffers(),e.framebuffer.create(r[0],r[1]),e.framebuffer.populateFramebuffer();else{e.framebuffer.setOpenGLRenderWindow(e._openGLRenderWindow),e.framebuffer.saveCurrentBindingsAndBuffers();const a=e.framebuffer.getSize();!a||a[0]!==r[0]||a[1]!==r[1]?(e.framebuffer.create(r[0],r[1]),e.framebuffer.populateFramebuffer()):e.framebuffer.bind()}if(e._openGLRenderer.clear(),e._openGLRenderer.setSelector(t),e.hitProps={},e.propPixels={},e.props=[],t.releasePixBuffers(),e.fieldAssociation===Pr.FIELD_ASSOCIATION_POINTS){const a=e._openGLRenderWindow.getContext(),s=a.isEnabled(a.BLEND);a.disable(a.BLEND),e._openGLRenderWindow.traverseAllPasses(),s&&a.enable(a.BLEND)}},t.endSelection=()=>{e.hitProps={},e._openGLRenderer.setSelector(null),e.framebuffer.restorePreviousBindingsAndBuffers()},t.preCapturePass=()=>{const r=e._openGLRenderWindow.getContext();e.originalBlending=r.isEnabled(r.BLEND),r.disable(r.BLEND)},t.postCapturePass=()=>{const r=e._openGLRenderWindow.getContext();e.originalBlending&&r.enable(r.BLEND)},t.select=()=>{let r=null;return t.captureBuffers()&&(r=t.generateSelection(e.area[0],e.area[1],e.area[2],e.area[3]),t.releasePixBuffers()),r},t.getSourceDataAsync=async(r,a,s,i,o)=>{if(e._renderer=r,a===void 0){const c=e._openGLRenderWindow.getSize();t.setArea(0,0,c[0]-1,c[1]-1)}else t.setArea(a,s,i,o);if(!t.captureBuffers())return!1;const u={area:[...e.area],pixBuffer:[...e.pixBuffer],captureZValues:e.captureZValues,zBuffer:e.zBuffer,props:[...e.props],fieldAssociation:e.fieldAssociation,renderer:r,openGLRenderWindow:e._openGLRenderWindow};return u.generateSelection=function(){for(var c=arguments.length,f=new Array(c),l=0;l<c;l++)f[l]=arguments[l];return D_(u,...f)},u},t.captureBuffers=()=>{if(!e._renderer||!e._openGLRenderWindow)return t0("Renderer and view must be set before calling Select."),!1;e._openGLRenderer=e._openGLRenderWindow.getViewNodeFor(e._renderer),e._openGLRenderWindow.getRenderable().preRender(),t.invokeEvent({type:"StartEvent"}),e.originalBackground=e._renderer.getBackgroundByReference(),e._renderer.setBackground(0,0,0,0);const r=e._openGLRenderWindow.getRenderPasses();for(t.beginSelection(),e.currentPass=$e.MIN_KNOWN_PASS;e.currentPass<=$e.MAX_KNOWN_PASS;e.currentPass++)t.passRequired(e.currentPass)&&(t.preCapturePass(e.currentPass),e.captureZValues&&e.currentPass===$e.ACTOR_PASS&&typeof r[0].requestDepth=="function"&&typeof r[0].getFramebuffer=="function"&&r[0].requestDepth(),e._openGLRenderWindow.traverseAllPasses(),t.postCapturePass(e.currentPass),t.savePixelBuffer(e.currentPass),t.processPixelBuffers());return t.endSelection(),e._renderer.setBackground(e.originalBackground),t.invokeEvent({type:"EndEvent"}),!0},t.processPixelBuffers=()=>{e.props.forEach((r,a)=>{t.isPropHit(a)&&r.processSelectorPixelBuffers(t,e.propPixels[a])})},t.passRequired=r=>{if(r===$e.ID_HIGH24){if(e.fieldAssociation===Pr.FIELD_ASSOCIATION_POINTS)return e.maximumPointId>16777215;if(e.fieldAssociation===Pr.FIELD_ASSOCIATION_CELLS)return e.maximumCellId>16777215}return!0},t.savePixelBuffer=r=>{if(e.pixBuffer[r]=e._openGLRenderWindow.getPixelData(e.area[0],e.area[1],e.area[2],e.area[3]),!e.rawPixBuffer[r]){const a=(e.area[2]-e.area[0]+1)*(e.area[3]-e.area[1]+1)*4;e.rawPixBuffer[r]=new Uint8Array(a),e.rawPixBuffer[r].set(e.pixBuffer[r])}if(r===$e.ACTOR_PASS){if(e.captureZValues){const a=e._openGLRenderWindow.getRenderPasses();if(typeof a[0].requestDepth=="function"&&typeof a[0].getFramebuffer=="function"){const s=a[0].getFramebuffer();s.saveCurrentBindingsAndBuffers(),s.bind(),e.zBuffer=e._openGLRenderWindow.getPixelData(e.area[0],e.area[1],e.area[2],e.area[3]),s.restorePreviousBindingsAndBuffers()}}t.buildPropHitList(e.rawPixBuffer[r])}},t.buildPropHitList=r=>{let a=0;for(let s=0;s<=e.area[3]-e.area[1];s++)for(let i=0;i<=e.area[2]-e.area[0];i++){let o=on(i,s,r,e.area);o>0&&(o--,o in e.hitProps||(e.hitProps[o]=!0,e.propPixels[o]=[]),e.propPixels[o].push(a*4)),++a}},t.renderProp=r=>{e.currentPass===$e.ACTOR_PASS&&(t.setPropColorValueFromInt(e.props.length+_n),e.props.push(r))},t.renderCompositeIndex=r=>{e.currentPass===$e.COMPOSITE_INDEX_PASS&&t.setPropColorValueFromInt(r+_n)},t.renderAttributeId=r=>{r<0||(e.maxAttributeId=r>e.maxAttributeId?r:e.maxAttributeId)},t.passTypeToString=r=>_.enumToString($e,r),t.isPropHit=r=>!!e.hitProps[r],t.setPropColorValueFromInt=r=>{e.propColorValue[0]=r%256/255,e.propColorValue[1]=Math.floor(r/256)%256/255,e.propColorValue[2]=Math.floor(r/65536)%256/255},t.getPixelInformation=(r,a,s)=>{const i=a<0?0:a;if(i===0){if(s[0]=r[0],s[1]=r[1],r[0]<e.area[0]||r[0]>e.area[2]||r[1]<e.area[1]||r[1]>e.area[3])return null;const f=[r[0]-e.area[0],r[1]-e.area[1]],l=on(f[0],f[1],e.pixBuffer[$e.ACTOR_PASS],e.area);if(l<=0||l-_n>=e.props.length)return null;const g={};g.valid=!0,g.propID=l-_n,g.prop=e.props[g.propID];let p=on(f[0],f[1],e.pixBuffer[$e.COMPOSITE_INDEX_PASS],e.area);if((p<0||p>16777215)&&(p=0),g.compositeID=p-_n,e.captureZValues){const d=(f[1]*(e.area[2]-e.area[0]+1)+f[0])*4;g.zValue=(256*e.zBuffer[d]+e.zBuffer[d+1])/65535,g.displayPosition=r}if(e.pixBuffer[$e.ID_LOW24]&&r0(f[0],f[1],e.pixBuffer[$e.ID_LOW24],e.area)===0)return g;const y=on(f[0],f[1],e.pixBuffer[$e.ID_LOW24],e.area),h=on(f[0],f[1],e.pixBuffer[$e.ID_HIGH24],e.area);return g.attributeID=a0(y,h),g}const o=[r[0],r[1]],u=[0,0];let c=t.getPixelInformation(r,0,s);if(c&&c.valid)return c;for(let f=1;f<i;++f){for(let l=o[1]>f?o[1]-f:0;l<=o[1]+f;++l)if(u[1]=l,o[0]>=f&&(u[0]=o[0]-f,c=t.getPixelInformation(u,0,s),c&&c.valid)||(u[0]=o[0]+f,c=t.getPixelInformation(u,0,s),c&&c.valid))return c;for(let l=o[0]>=f?o[0]-(f-1):0;l<=o[0]+(f-1);++l)if(u[0]=l,o[1]>=f&&(u[1]=o[1]-f,c=t.getPixelInformation(u,0,s),c&&c.valid)||(u[1]=o[1]+f,c=t.getPixelInformation(u,0,s),c&&c.valid))return c}return s[0]=r[0],s[1]=r[1],null},t.generateSelection=(r,a,s,i)=>{const o=Math.floor(r),u=Math.floor(a),c=Math.floor(s),f=Math.floor(i),l=new Map,g=[0,0];for(let p=u;p<=f;p++)for(let y=o;y<=c;y++){const h=[y,p],d=t.getPixelInformation(h,0,g);if(d&&d.valid){const x=n0(d);if(!l.has(x))l.set(x,{info:d,pixelCount:1,attributeIDs:[d.attributeID]});else{const S=l.get(x);S.pixelCount++,e.captureZValues&&d.zValue<S.info.zValue&&(S.info=d),S.attributeIDs.indexOf(d.attributeID)===-1&&S.attributeIDs.push(d.attributeID)}}}return s0(e.fieldAssociation,l,e.captureZValues,e._renderer,e._openGLRenderWindow)},t.getRawPixelBuffer=r=>e.rawPixBuffer[r],t.getPixelBuffer=r=>e.pixBuffer[r],t.attach=(r,a)=>{e._openGLRenderWindow=r,e._renderer=a};const n=t.setArea;t.setArea=function(){return n(...arguments)?(e.area[0]=Math.floor(e.area[0]),e.area[1]=Math.floor(e.area[1]),e.area[2]=Math.floor(e.area[2]),e.area[3]=Math.floor(e.area[3]),!0):!1}}const M_={area:void 0,currentPass:-1,propColorValue:null,props:null,maximumPointId:0,maximumCellId:0,idOffset:1};function i0(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,M_,n),Jg.extend(t,e,n),e.propColorValue=[0,0,0],e.props=[],e.area||(e.area=[0,0,0,0]),_.setGetArray(t,e,["area"],4),_.setGet(t,e,["_renderer","currentPass","_openGLRenderWindow","maximumPointId","maximumCellId"]),_.setGetArray(t,e,["propColorValue"],3),_.moveToProtected(t,e,["renderer","openGLRenderWindow"]),_.event(t,e,"event"),m_(t,e)}const V_=_.newInstance(i0,"vtkOpenGLHardwareSelector");var o0={newInstance:V_,extend:i0,...Vl},c0={exports:{}};(function(t,e){(function(n){t.exports=n()})(function(n){var r=["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"];function a(x,S){var v=x[0],T=x[1],w=x[2],C=x[3];v+=(T&w|~T&C)+S[0]-680876936|0,v=(v<<7|v>>>25)+T|0,C+=(v&T|~v&w)+S[1]-389564586|0,C=(C<<12|C>>>20)+v|0,w+=(C&v|~C&T)+S[2]+606105819|0,w=(w<<17|w>>>15)+C|0,T+=(w&C|~w&v)+S[3]-1044525330|0,T=(T<<22|T>>>10)+w|0,v+=(T&w|~T&C)+S[4]-176418897|0,v=(v<<7|v>>>25)+T|0,C+=(v&T|~v&w)+S[5]+1200080426|0,C=(C<<12|C>>>20)+v|0,w+=(C&v|~C&T)+S[6]-1473231341|0,w=(w<<17|w>>>15)+C|0,T+=(w&C|~w&v)+S[7]-45705983|0,T=(T<<22|T>>>10)+w|0,v+=(T&w|~T&C)+S[8]+1770035416|0,v=(v<<7|v>>>25)+T|0,C+=(v&T|~v&w)+S[9]-1958414417|0,C=(C<<12|C>>>20)+v|0,w+=(C&v|~C&T)+S[10]-42063|0,w=(w<<17|w>>>15)+C|0,T+=(w&C|~w&v)+S[11]-1990404162|0,T=(T<<22|T>>>10)+w|0,v+=(T&w|~T&C)+S[12]+1804603682|0,v=(v<<7|v>>>25)+T|0,C+=(v&T|~v&w)+S[13]-40341101|0,C=(C<<12|C>>>20)+v|0,w+=(C&v|~C&T)+S[14]-1502002290|0,w=(w<<17|w>>>15)+C|0,T+=(w&C|~w&v)+S[15]+1236535329|0,T=(T<<22|T>>>10)+w|0,v+=(T&C|w&~C)+S[1]-165796510|0,v=(v<<5|v>>>27)+T|0,C+=(v&w|T&~w)+S[6]-1069501632|0,C=(C<<9|C>>>23)+v|0,w+=(C&T|v&~T)+S[11]+643717713|0,w=(w<<14|w>>>18)+C|0,T+=(w&v|C&~v)+S[0]-373897302|0,T=(T<<20|T>>>12)+w|0,v+=(T&C|w&~C)+S[5]-701558691|0,v=(v<<5|v>>>27)+T|0,C+=(v&w|T&~w)+S[10]+38016083|0,C=(C<<9|C>>>23)+v|0,w+=(C&T|v&~T)+S[15]-660478335|0,w=(w<<14|w>>>18)+C|0,T+=(w&v|C&~v)+S[4]-405537848|0,T=(T<<20|T>>>12)+w|0,v+=(T&C|w&~C)+S[9]+568446438|0,v=(v<<5|v>>>27)+T|0,C+=(v&w|T&~w)+S[14]-1019803690|0,C=(C<<9|C>>>23)+v|0,w+=(C&T|v&~T)+S[3]-187363961|0,w=(w<<14|w>>>18)+C|0,T+=(w&v|C&~v)+S[8]+1163531501|0,T=(T<<20|T>>>12)+w|0,v+=(T&C|w&~C)+S[13]-1444681467|0,v=(v<<5|v>>>27)+T|0,C+=(v&w|T&~w)+S[2]-51403784|0,C=(C<<9|C>>>23)+v|0,w+=(C&T|v&~T)+S[7]+1735328473|0,w=(w<<14|w>>>18)+C|0,T+=(w&v|C&~v)+S[12]-1926607734|0,T=(T<<20|T>>>12)+w|0,v+=(T^w^C)+S[5]-378558|0,v=(v<<4|v>>>28)+T|0,C+=(v^T^w)+S[8]-2022574463|0,C=(C<<11|C>>>21)+v|0,w+=(C^v^T)+S[11]+1839030562|0,w=(w<<16|w>>>16)+C|0,T+=(w^C^v)+S[14]-35309556|0,T=(T<<23|T>>>9)+w|0,v+=(T^w^C)+S[1]-1530992060|0,v=(v<<4|v>>>28)+T|0,C+=(v^T^w)+S[4]+1272893353|0,C=(C<<11|C>>>21)+v|0,w+=(C^v^T)+S[7]-155497632|0,w=(w<<16|w>>>16)+C|0,T+=(w^C^v)+S[10]-1094730640|0,T=(T<<23|T>>>9)+w|0,v+=(T^w^C)+S[13]+681279174|0,v=(v<<4|v>>>28)+T|0,C+=(v^T^w)+S[0]-358537222|0,C=(C<<11|C>>>21)+v|0,w+=(C^v^T)+S[3]-722521979|0,w=(w<<16|w>>>16)+C|0,T+=(w^C^v)+S[6]+76029189|0,T=(T<<23|T>>>9)+w|0,v+=(T^w^C)+S[9]-640364487|0,v=(v<<4|v>>>28)+T|0,C+=(v^T^w)+S[12]-421815835|0,C=(C<<11|C>>>21)+v|0,w+=(C^v^T)+S[15]+530742520|0,w=(w<<16|w>>>16)+C|0,T+=(w^C^v)+S[2]-995338651|0,T=(T<<23|T>>>9)+w|0,v+=(w^(T|~C))+S[0]-198630844|0,v=(v<<6|v>>>26)+T|0,C+=(T^(v|~w))+S[7]+1126891415|0,C=(C<<10|C>>>22)+v|0,w+=(v^(C|~T))+S[14]-1416354905|0,w=(w<<15|w>>>17)+C|0,T+=(C^(w|~v))+S[5]-57434055|0,T=(T<<21|T>>>11)+w|0,v+=(w^(T|~C))+S[12]+1700485571|0,v=(v<<6|v>>>26)+T|0,C+=(T^(v|~w))+S[3]-1894986606|0,C=(C<<10|C>>>22)+v|0,w+=(v^(C|~T))+S[10]-1051523|0,w=(w<<15|w>>>17)+C|0,T+=(C^(w|~v))+S[1]-2054922799|0,T=(T<<21|T>>>11)+w|0,v+=(w^(T|~C))+S[8]+1873313359|0,v=(v<<6|v>>>26)+T|0,C+=(T^(v|~w))+S[15]-30611744|0,C=(C<<10|C>>>22)+v|0,w+=(v^(C|~T))+S[6]-1560198380|0,w=(w<<15|w>>>17)+C|0,T+=(C^(w|~v))+S[13]+1309151649|0,T=(T<<21|T>>>11)+w|0,v+=(w^(T|~C))+S[4]-145523070|0,v=(v<<6|v>>>26)+T|0,C+=(T^(v|~w))+S[11]-1120210379|0,C=(C<<10|C>>>22)+v|0,w+=(v^(C|~T))+S[2]+718787259|0,w=(w<<15|w>>>17)+C|0,T+=(C^(w|~v))+S[9]-343485551|0,T=(T<<21|T>>>11)+w|0,x[0]=v+x[0]|0,x[1]=T+x[1]|0,x[2]=w+x[2]|0,x[3]=C+x[3]|0}function s(x){var S=[],v;for(v=0;v<64;v+=4)S[v>>2]=x.charCodeAt(v)+(x.charCodeAt(v+1)<<8)+(x.charCodeAt(v+2)<<16)+(x.charCodeAt(v+3)<<24);return S}function i(x){var S=[],v;for(v=0;v<64;v+=4)S[v>>2]=x[v]+(x[v+1]<<8)+(x[v+2]<<16)+(x[v+3]<<24);return S}function o(x){var S=x.length,v=[1732584193,-271733879,-1732584194,271733878],T,w,C,R,m,B;for(T=64;T<=S;T+=64)a(v,s(x.substring(T-64,T)));for(x=x.substring(T-64),w=x.length,C=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],T=0;T<w;T+=1)C[T>>2]|=x.charCodeAt(T)<<(T%4<<3);if(C[T>>2]|=128<<(T%4<<3),T>55)for(a(v,C),T=0;T<16;T+=1)C[T]=0;return R=S*8,R=R.toString(16).match(/(.*?)(.{0,8})$/),m=parseInt(R[2],16),B=parseInt(R[1],16)||0,C[14]=m,C[15]=B,a(v,C),v}function u(x){var S=x.length,v=[1732584193,-271733879,-1732584194,271733878],T,w,C,R,m,B;for(T=64;T<=S;T+=64)a(v,i(x.subarray(T-64,T)));for(x=T-64<S?x.subarray(T-64):new Uint8Array(0),w=x.length,C=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],T=0;T<w;T+=1)C[T>>2]|=x[T]<<(T%4<<3);if(C[T>>2]|=128<<(T%4<<3),T>55)for(a(v,C),T=0;T<16;T+=1)C[T]=0;return R=S*8,R=R.toString(16).match(/(.*?)(.{0,8})$/),m=parseInt(R[2],16),B=parseInt(R[1],16)||0,C[14]=m,C[15]=B,a(v,C),v}function c(x){var S="",v;for(v=0;v<4;v+=1)S+=r[x>>v*8+4&15]+r[x>>v*8&15];return S}function f(x){var S;for(S=0;S<x.length;S+=1)x[S]=c(x[S]);return x.join("")}f(o("hello")),typeof ArrayBuffer<"u"&&!ArrayBuffer.prototype.slice&&function(){function x(S,v){return S=S|0||0,S<0?Math.max(S+v,0):Math.min(S,v)}ArrayBuffer.prototype.slice=function(S,v){var T=this.byteLength,w=x(S,T),C=T,R,m,B,M;return v!==n&&(C=x(v,T)),w>C?new ArrayBuffer(0):(R=C-w,m=new ArrayBuffer(R),B=new Uint8Array(m),M=new Uint8Array(this,w,R),B.set(M),m)}}();function l(x){return/[\u0080-\uFFFF]/.test(x)&&(x=unescape(encodeURIComponent(x))),x}function g(x,S){var v=x.length,T=new ArrayBuffer(v),w=new Uint8Array(T),C;for(C=0;C<v;C+=1)w[C]=x.charCodeAt(C);return S?w:T}function p(x){return String.fromCharCode.apply(null,new Uint8Array(x))}function y(x,S,v){var T=new Uint8Array(x.byteLength+S.byteLength);return T.set(new Uint8Array(x)),T.set(new Uint8Array(S),x.byteLength),v?T:T.buffer}function h(x){var S=[],v=x.length,T;for(T=0;T<v-1;T+=2)S.push(parseInt(x.substr(T,2),16));return String.fromCharCode.apply(String,S)}function d(){this.reset()}return d.prototype.append=function(x){return this.appendBinary(l(x)),this},d.prototype.appendBinary=function(x){this._buff+=x,this._length+=x.length;var S=this._buff.length,v;for(v=64;v<=S;v+=64)a(this._hash,s(this._buff.substring(v-64,v)));return this._buff=this._buff.substring(v-64),this},d.prototype.end=function(x){var S=this._buff,v=S.length,T,w=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],C;for(T=0;T<v;T+=1)w[T>>2]|=S.charCodeAt(T)<<(T%4<<3);return this._finish(w,v),C=f(this._hash),x&&(C=h(C)),this.reset(),C},d.prototype.reset=function(){return this._buff="",this._length=0,this._hash=[1732584193,-271733879,-1732584194,271733878],this},d.prototype.getState=function(){return{buff:this._buff,length:this._length,hash:this._hash.slice()}},d.prototype.setState=function(x){return this._buff=x.buff,this._length=x.length,this._hash=x.hash,this},d.prototype.destroy=function(){delete this._hash,delete this._buff,delete this._length},d.prototype._finish=function(x,S){var v=S,T,w,C;if(x[v>>2]|=128<<(v%4<<3),v>55)for(a(this._hash,x),v=0;v<16;v+=1)x[v]=0;T=this._length*8,T=T.toString(16).match(/(.*?)(.{0,8})$/),w=parseInt(T[2],16),C=parseInt(T[1],16)||0,x[14]=w,x[15]=C,a(this._hash,x)},d.hash=function(x,S){return d.hashBinary(l(x),S)},d.hashBinary=function(x,S){var v=o(x),T=f(v);return S?h(T):T},d.ArrayBuffer=function(){this.reset()},d.ArrayBuffer.prototype.append=function(x){var S=y(this._buff.buffer,x,!0),v=S.length,T;for(this._length+=x.byteLength,T=64;T<=v;T+=64)a(this._hash,i(S.subarray(T-64,T)));return this._buff=T-64<v?new Uint8Array(S.buffer.slice(T-64)):new Uint8Array(0),this},d.ArrayBuffer.prototype.end=function(x){var S=this._buff,v=S.length,T=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],w,C;for(w=0;w<v;w+=1)T[w>>2]|=S[w]<<(w%4<<3);return this._finish(T,v),C=f(this._hash),x&&(C=h(C)),this.reset(),C},d.ArrayBuffer.prototype.reset=function(){return this._buff=new Uint8Array(0),this._length=0,this._hash=[1732584193,-271733879,-1732584194,271733878],this},d.ArrayBuffer.prototype.getState=function(){var x=d.prototype.getState.call(this);return x.buff=p(x.buff),x},d.ArrayBuffer.prototype.setState=function(x){return x.buff=g(x.buff,!0),d.prototype.setState.call(this,x)},d.ArrayBuffer.prototype.destroy=d.prototype.destroy,d.ArrayBuffer.prototype._finish=d.prototype._finish,d.ArrayBuffer.hash=function(x,S){var v=u(new Uint8Array(x)),T=f(v);return S?h(T):T},d})})(c0);var L_=c0.exports;const B_=Mi(L_),k_=["lastShaderProgramBound","context","_openGLRenderWindow"];function F_(t,e){e.classHierarchy.push("vtkShaderCache"),t.replaceShaderValues=(n,r,a)=>{let s=r;a.length>0&&(s=z.substitute(s,"VSOut","GSOut").result);const i=e._openGLRenderWindow.getWebgl2();let o=`
- `,u=`#version 100
- `;i?u=`#version 300 es
- #define attribute in
- #define textureCube texture
- #define texture2D texture
- #define textureCubeLod textureLod
- #define texture2DLod textureLod
- `:(e.context.getExtension("OES_standard_derivatives"),e.context.getExtension("EXT_frag_depth")&&(o=`#extension GL_EXT_frag_depth : enable
- `),e.context.getExtension("EXT_shader_texture_lod")&&(o+=`#extension GL_EXT_shader_texture_lod : enable
- #define textureCubeLod textureCubeLodEXT
- #define texture2DLod texture2DLodEXT`)),s=z.substitute(s,"//VTK::System::Dec",[`${u}
- `,i?"":`#extension GL_OES_standard_derivatives : enable
- `,o,"#ifdef GL_FRAGMENT_PRECISION_HIGH","precision highp float;","precision highp int;","#else","precision mediump float;","precision mediump int;","#endif"]).result;let c=z.substitute(n,"//VTK::System::Dec",[`${u}
- `,"#ifdef GL_FRAGMENT_PRECISION_HIGH","precision highp float;","precision highp int;","#else","precision mediump float;","precision mediump int;","#endif"]).result;if(i){c=z.substitute(c,"varying","out").result,s=z.substitute(s,"varying","in").result;let l="",g=0;for(;s.includes(`gl_FragData[${g}]`);)s=z.substitute(s,`gl_FragData\\[${g}\\]`,`fragOutput${g}`).result,l+=`layout(location = ${g}) out vec4 fragOutput${g};
- `,g++;s=z.substitute(s,"//VTK::Output::Dec",l).result}const f=z.substitute(a,"//VTK::System::Dec",u).result;return{VSSource:c,FSSource:s,GSSource:f}},t.readyShaderProgramArray=(n,r,a)=>{const s=t.replaceShaderValues(n,r,a),i=t.getShaderProgram(s.VSSource,s.FSSource,s.GSSource);return t.readyShaderProgram(i)},t.readyShaderProgram=n=>!n||!n.getCompiled()&&!n.compileShader()||!t.bindShaderProgram(n)?null:n,t.getShaderProgram=(n,r,a)=>{const s=`${n}${r}${a}`,i=B_.hash(s);if(!(i in e.shaderPrograms)){const o=z.newInstance();return o.setContext(e.context),o.getVertexShader().setSource(n),o.getFragmentShader().setSource(r),a&&o.getGeometryShader().setSource(a),o.setMd5Hash(i),e.shaderPrograms[i]=o,o}return e.shaderPrograms[i]},t.releaseGraphicsResources=n=>{t.releaseCurrentShaderProgram(),Object.keys(e.shaderPrograms).map(r=>e.shaderPrograms[r]).forEach(r=>r.cleanup()),e.shaderPrograms={}},t.releaseCurrentShaderProgram=()=>{e.lastShaderProgramBound&&(e.lastShaderProgramBound.cleanup(),e.lastShaderProgramBound=null)},t.bindShaderProgram=n=>(e.lastShaderProgramBound===n||(e.lastShaderProgramBound&&e.lastShaderProgramBound.release(),n.bind(),e.lastShaderProgramBound=n),1)}const U_={lastShaderProgramBound:null,shaderPrograms:null,context:null};function u0(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,U_,n),e.shaderPrograms={},_.obj(t,e),_.setGet(t,e,k_),_.moveToProtected(t,e,["openGLRenderWindow"]),F_(t,e)}const b_=_.newInstance(u0,"vtkShaderCache");var N_={newInstance:b_,extend:u0};const{vtkErrorMacro:G_}=_;function $_(t,e){e.classHierarchy.push("vtkOpenGLTextureUnitManager"),t.deleteTable=()=>{for(let n=0;n<e.numberOfTextureUnits;++n)e.textureUnits[n]===!0&&G_("some texture units were not properly released");e.textureUnits=[],e.numberOfTextureUnits=0},t.setContext=n=>{if(e.context!==n){if(e.context!==0&&t.deleteTable(),e.context=n,e.context){e.numberOfTextureUnits=n.getParameter(n.MAX_TEXTURE_IMAGE_UNITS);for(let r=0;r<e.numberOfTextureUnits;++r)e.textureUnits[r]=!1}t.modified()}},t.allocate=()=>{for(let n=0;n<e.numberOfTextureUnits;n++)if(!t.isAllocated(n))return e.textureUnits[n]=!0,n;return-1},t.allocateUnit=n=>t.isAllocated(n)?-1:(e.textureUnits[n]=!0,n),t.isAllocated=n=>e.textureUnits[n],t.free=n=>{e.textureUnits[n]=!1},t.freeAll=()=>{for(let n=0;n<e.numberOfTextureUnits;++n)e.textureUnits[n]=!1}}const W_={context:null,numberOfTextureUnits:0,textureUnits:0};function f0(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,W_,n),_.obj(t,e),e.textureUnits=[],_.get(t,e,["numberOfTextureUnits"]),_.setGet(t,e,["context"]),$_(t,e)}const z_=_.newInstance(f0,"vtkOpenGLTextureUnitManager");var A_={newInstance:z_,extend:f0};function H_(t,e){e.classHierarchy.push("vtkRenderWindowViewNode"),t.getViewNodeFactory=()=>null,t.getAspectRatio=()=>e.size[0]/e.size[1],t.getAspectRatioForRenderer=n=>{const r=n.getViewportByReference();return e.size[0]*(r[2]-r[0])/((r[3]-r[1])*e.size[1])},t.isInViewport=(n,r,a)=>{const s=a.getViewportByReference(),i=t.getFramebufferSize();return s[0]*i[0]<=n&&s[2]*i[0]>=n&&s[1]*i[1]<=r&&s[3]*i[1]>=r},t.getViewportSize=n=>{const r=n.getViewportByReference(),a=t.getFramebufferSize();return[(r[2]-r[0])*a[0],(r[3]-r[1])*a[1]]},t.getViewportCenter=n=>{const r=t.getViewportSize(n);return[r[0]*.5,r[1]*.5]},t.displayToNormalizedDisplay=(n,r,a)=>{const s=t.getFramebufferSize();return[n/s[0],r/s[1],a]},t.normalizedDisplayToDisplay=(n,r,a)=>{const s=t.getFramebufferSize();return[n*s[0],r*s[1],a]},t.worldToView=(n,r,a,s)=>s.worldToView(n,r,a),t.viewToWorld=(n,r,a,s)=>s.viewToWorld(n,r,a),t.worldToDisplay=(n,r,a,s)=>{const i=s.worldToView(n,r,a),o=t.getViewportSize(s),u=s.viewToProjection(i[0],i[1],i[2],o[0]/o[1]),c=s.projectionToNormalizedDisplay(u[0],u[1],u[2]);return t.normalizedDisplayToDisplay(c[0],c[1],c[2])},t.displayToWorld=(n,r,a,s)=>{const i=t.displayToNormalizedDisplay(n,r,a),o=s.normalizedDisplayToProjection(i[0],i[1],i[2]),u=t.getViewportSize(s),c=s.projectionToView(o[0],o[1],o[2],u[0]/u[1]);return s.viewToWorld(c[0],c[1],c[2])},t.normalizedDisplayToViewport=(n,r,a,s)=>{let i=s.getViewportByReference();i=t.normalizedDisplayToDisplay(i[0],i[1],0);const o=t.normalizedDisplayToDisplay(n,r,a);return[o[0]-i[0]-.5,o[1]-i[1]-.5,a]},t.viewportToNormalizedViewport=(n,r,a,s)=>{const i=t.getViewportSize(s);return i&&i[0]!==0&&i[1]!==0?[n/(i[0]-1),r/(i[1]-1),a]:[n,r,a]},t.normalizedViewportToViewport=(n,r,a,s)=>{const i=t.getViewportSize(s);return[n*(i[0]-1),r*(i[1]-1),a]},t.displayToLocalDisplay=(n,r,a)=>{const s=t.getFramebufferSize();return[n,s[1]-r-1,a]},t.viewportToNormalizedDisplay=(n,r,a,s)=>{let i=s.getViewportByReference();i=t.normalizedDisplayToDisplay(i[0],i[1],0);const o=n+i[0]+.5,u=r+i[1]+.5;return t.displayToNormalizedDisplay(o,u,a)},t.getComputedDevicePixelRatio=()=>e.size[0]/t.getContainerSize()[0],t.getContainerSize=()=>{_.vtkErrorMacro("not implemented")},t.getPixelData=(n,r,a,s)=>{_.vtkErrorMacro("not implemented")},t.createSelector=()=>{_.vtkErrorMacro("not implemented")}}const j_={size:void 0,selector:void 0};function l0(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,j_,n),e.size||(e.size=[300,300]),_.getArray(t,e,["size"],2),_.get(t,e,["selector"]),be.extend(t,e,n),H_(t,e)}const K_=_.newInstance(l0,"vtkRenderWindowViewNode");var g0={newInstance:K_,extend:l0};const P_="__getUnderlyingContext";function X_(){const t=new Map,e={apply(a,s,i){return t.has(i[0])?t.get(i[0]):a.apply(s,i)}};function n(a){return{apply(s,i,o){return t.set(a,o[0]),s.apply(i,o)}}}const r=Object.create(null);return r.getParameter=(a,s,i,o)=>new Proxy(o.bind(a),e),r.depthMask=(a,s,i,o)=>new Proxy(o.bind(a),n(a.DEPTH_WRITEMASK)),{get(a,s,i){if(s===P_)return()=>a;let o=Reflect.get(a,s,a);o instanceof Function&&(o=o.bind(a));const u=r[s];return u?u(a,s,i,o):o}}}const{vtkDebugMacro:tu,vtkErrorMacro:nu}=_,I_={position:"absolute",top:0,left:0,width:"100%",height:"100%"};function it(t,e,n){const r=t.createFramebuffer(),a=t.createTexture();t.bindTexture(t.TEXTURE_2D,a),t.texImage2D(t.TEXTURE_2D,0,e,2,2,0,e,n,null),t.bindFramebuffer(t.FRAMEBUFFER,r),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,a,0);const s=t.checkFramebufferStatus(t.FRAMEBUFFER);return t.bindFramebuffer(t.FRAMEBUFFER,null),t.bindTexture(t.TEXTURE_2D,null),s===t.FRAMEBUFFER_COMPLETE}let ls=0;const p0=[];function Y_(){ls++,p0.forEach(t=>t(ls))}function q_(){ls--,p0.forEach(t=>t(ls))}function ru(t){t.preventDefault()}function Q_(t,e){e.classHierarchy.push("vtkOpenGLRenderWindow");const n=X_();t.getViewNodeFactory=()=>e.myFactory,e.canvas.addEventListener("webglcontextlost",ru,!1),e.canvas.addEventListener("webglcontextrestored",t.restoreContext,!1);const r=[0,0];function a(){e.renderable&&(e.size[0]!==r[0]||e.size[1]!==r[1])&&(r[0]=e.size[0],r[1]=e.size[1],e.canvas.setAttribute("width",e.size[0]),e.canvas.setAttribute("height",e.size[1])),e.viewStream&&e.viewStream.setSize(e.size[0],e.size[1]),e.canvas.style.display=e.useOffScreen?"none":"block",e.el&&(e.el.style.cursor=e.cursorVisibility?e.cursor:"none"),e.containerSize=null}t.onModified(a),t.buildPass=c=>{if(c){if(!e.renderable)return;t.prepareNodes(),t.addMissingNodes(e.renderable.getRenderersByReference()),t.removeUnusedNodes(),t.initialize(),e.children.forEach(f=>{f.setOpenGLRenderWindow(t)})}},t.initialize=()=>{if(!e.initialized){e.context=t.get3DContext(),e.textureUnitManager=A_.newInstance(),e.textureUnitManager.setContext(e.context),e.shaderCache.setContext(e.context);const c=e.context;c.blendFuncSeparate(c.SRC_ALPHA,c.ONE_MINUS_SRC_ALPHA,c.ONE,c.ONE_MINUS_SRC_ALPHA),c.depthFunc(c.LEQUAL),c.enable(c.BLEND),e.initialized=!0}},t.makeCurrent=()=>{e.context.makeCurrent()},t.setContainer=c=>{e.el&&e.el!==c&&(e.canvas.parentNode!==e.el&&nu("Error: canvas parent node does not match container"),e.el.removeChild(e.canvas),e.el.contains(e.bgImage)&&e.el.removeChild(e.bgImage)),e.el!==c&&(e.el=c,e.el&&(e.el.appendChild(e.canvas),e.useBackgroundImage&&e.el.appendChild(e.bgImage)),t.modified())},t.getContainer=()=>e.el,t.getContainerSize=()=>{if(!e.containerSize&&e.el){const{width:c,height:f}=e.el.getBoundingClientRect();e.containerSize=[c,f]}return e.containerSize||e.size},t.getFramebufferSize=()=>{var f;return((f=e.activeFramebuffer)==null?void 0:f.getSize())||e.size},t.getPixelData=(c,f,l,g)=>{const p=new Uint8Array((l-c+1)*(g-f+1)*4);return e.context.readPixels(c,f,l-c+1,g-f+1,e.context.RGBA,e.context.UNSIGNED_BYTE,p),p},t.get3DContext=function(){let c=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{preserveDrawingBuffer:!1,depth:!0,alpha:!0,powerPreference:"high-performance"},f=null;const l=typeof WebGL2RenderingContext<"u";return e.webgl2=!1,e.defaultToWebgl2&&l&&(f=e.canvas.getContext("webgl2",c),f&&(e.webgl2=!0,tu("using webgl2"))),f||(tu("using webgl1"),f=e.canvas.getContext("webgl",c)||e.canvas.getContext("experimental-webgl",c)),new Proxy(f,n)},t.restoreContext=()=>{const c=gn.newInstance();c.setCurrentOperation("Release"),c.traverse(t,null)},t.activateTexture=c=>{const f=e._textureResourceIds.get(c);if(f!==void 0){e.context.activeTexture(e.context.TEXTURE0+f);return}const l=t.getTextureUnitManager().allocate();if(l<0){nu("Hardware does not support the number of textures defined.");return}e._textureResourceIds.set(c,l),e.context.activeTexture(e.context.TEXTURE0+l)},t.deactivateTexture=c=>{const f=e._textureResourceIds.get(c);f!==void 0&&(t.getTextureUnitManager().free(f),e._textureResourceIds.delete(c))},t.getTextureUnitForTexture=c=>{const f=e._textureResourceIds.get(c);return f!==void 0?f:-1},t.getDefaultTextureByteSize=function(c){let f=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null,l=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;if(e.webgl2)switch(c){case Ke.CHAR:case Ke.SIGNED_CHAR:case Ke.UNSIGNED_CHAR:return 1;case f:case l:case Ke.UNSIGNED_SHORT:case Ke.SHORT:case Ke.VOID:return 2;default:return 4}return 1},t.getDefaultTextureInternalFormat=function(c,f){let l=arguments.length>2&&arguments[2]!==void 0?arguments[2]:null,g=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;if(e.webgl2)switch(c){case Ke.UNSIGNED_CHAR:switch(f){case 1:return e.context.R8;case 2:return e.context.RG8;case 3:return e.context.RGB8;case 4:default:return e.context.RGBA8}case(l&&!g&&Ke.UNSIGNED_SHORT):switch(f){case 1:return l.R16_EXT;case 2:return l.RG16_EXT;case 3:return l.RGB16_EXT;case 4:default:return l.RGBA16_EXT}case(l&&!g&&Ke.SHORT):switch(f){case 1:return l.R16_SNORM_EXT;case 2:return l.RG16_SNORM_EXT;case 3:return l.RGB16_SNORM_EXT;case 4:default:return l.RGBA16_SNORM_EXT}case Ke.UNSIGNED_SHORT:case Ke.SHORT:case Ke.FLOAT:default:switch(f){case 1:return g?e.context.R16F:e.context.R32F;case 2:return g?e.context.RG16F:e.context.RG32F;case 3:return g?e.context.RGB16F:e.context.RGB32F;case 4:default:return g?e.context.RGBA16F:e.context.RGBA32F}}switch(f){case 1:return e.context.LUMINANCE;case 2:return e.context.LUMINANCE_ALPHA;case 3:return e.context.RGB;case 4:default:return e.context.RGBA}},t.setBackgroundImage=c=>{e.bgImage.src=c.src},t.setUseBackgroundImage=c=>{e.useBackgroundImage=c,e.useBackgroundImage&&!e.el.contains(e.bgImage)?e.el.appendChild(e.bgImage):!e.useBackgroundImage&&e.el.contains(e.bgImage)&&e.el.removeChild(e.bgImage)};function s(){let c=arguments.length>0&&arguments[0]!==void 0?arguments[0]:e.imageFormat;const f=document.createElement("canvas"),l=f.getContext("2d");f.width=e.canvas.width,f.height=e.canvas.height,l.drawImage(e.canvas,0,0);const g=e.canvas.getBoundingClientRect();e.renderable.getRenderers().forEach(d=>{d.getViewProps().forEach(S=>{if(S.getContainer){const T=S.getContainer().getElementsByTagName("canvas");for(let w=0;w<T.length;w++){const C=T[w],R=C.getBoundingClientRect(),m=R.x-g.x,B=R.y-g.y;l.drawImage(C,m,B)}}})});const h=f.toDataURL(c);f.remove(),t.invokeImageReady(h)}t.captureNextImage=function(){let c=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"image/png",{resetCamera:f=!1,size:l=null,scale:g=1}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(e.deleted)return null;e.imageFormat=c;const p=e.notifyStartCaptureImage;return e.notifyStartCaptureImage=!0,e._screenshot={size:l||g!==1?l||e.size.map(y=>y*g):null},new Promise((y,h)=>{const d=t.onImageReady(x=>{if(e._screenshot.size===null)e.notifyStartCaptureImage=p,d.unsubscribe(),e._screenshot.placeHolder&&(e.size=e._screenshot.originalSize,t.modified(),e._screenshot.cameras&&e._screenshot.cameras.forEach(S=>{let{restoreParamsFn:v,arg:T}=S;return v(T)}),t.traverseAllPasses(),e.el.removeChild(e._screenshot.placeHolder),e._screenshot.placeHolder.remove(),e._screenshot=null),y(x);else{const S=document.createElement("img");if(S.style=I_,S.src=x,e._screenshot.placeHolder=e.el.appendChild(S),e.canvas.style.display="none",e._screenshot.originalSize=e.size,e.size=e._screenshot.size,e._screenshot.size=null,t.modified(),f){const v=f!==!0;e._screenshot.cameras=e.renderable.getRenderers().map(T=>{const w=T.getActiveCamera(),C=w.get("focalPoint","position","parallelScale");return{resetCameraArgs:v?{renderer:T}:void 0,resetCameraFn:v?f:T.resetCamera,restoreParamsFn:w.set,arg:JSON.parse(JSON.stringify(C))}}),e._screenshot.cameras.forEach(T=>{let{resetCameraFn:w,resetCameraArgs:C}=T;return w(C)})}t.traverseAllPasses()}})})};let i;t.getHardwareMaximumLineWidth=()=>{if(i!=null)return i;const c=t.get3DContext(),f=c.getParameter(c.ALIASED_LINE_WIDTH_RANGE);return i=f[1],f[1]},t.getGLInformations=()=>{if(e._glInformation)return e._glInformation;const c=t.get3DContext(),f=c.getExtension("OES_texture_float"),l=c.getExtension("OES_texture_half_float"),g=c.getExtension("WEBGL_debug_renderer_info"),p=c.getExtension("WEBGL_draw_buffers"),y=c.getExtension("EXT_texture_filter_anisotropic")||c.getExtension("WEBKIT_EXT_texture_filter_anisotropic"),h=[["Max Vertex Attributes","MAX_VERTEX_ATTRIBS",c.getParameter(c.MAX_VERTEX_ATTRIBS)],["Max Varying Vectors","MAX_VARYING_VECTORS",c.getParameter(c.MAX_VARYING_VECTORS)],["Max Vertex Uniform Vectors","MAX_VERTEX_UNIFORM_VECTORS",c.getParameter(c.MAX_VERTEX_UNIFORM_VECTORS)],["Max Fragment Uniform Vectors","MAX_FRAGMENT_UNIFORM_VECTORS",c.getParameter(c.MAX_FRAGMENT_UNIFORM_VECTORS)],["Max Fragment Texture Image Units","MAX_TEXTURE_IMAGE_UNITS",c.getParameter(c.MAX_TEXTURE_IMAGE_UNITS)],["Max Vertex Texture Image Units","MAX_VERTEX_TEXTURE_IMAGE_UNITS",c.getParameter(c.MAX_VERTEX_TEXTURE_IMAGE_UNITS)],["Max Combined Texture Image Units","MAX_COMBINED_TEXTURE_IMAGE_UNITS",c.getParameter(c.MAX_COMBINED_TEXTURE_IMAGE_UNITS)],["Max 2D Texture Size","MAX_TEXTURE_SIZE",c.getParameter(c.MAX_TEXTURE_SIZE)],["Max Cube Texture Size","MAX_CUBE_MAP_TEXTURE_SIZE",c.getParameter(c.MAX_CUBE_MAP_TEXTURE_SIZE)],["Max Texture Anisotropy","MAX_TEXTURE_MAX_ANISOTROPY_EXT",y&&c.getParameter(y.MAX_TEXTURE_MAX_ANISOTROPY_EXT)],["Point Size Range","ALIASED_POINT_SIZE_RANGE",c.getParameter(c.ALIASED_POINT_SIZE_RANGE).join(" - ")],["Line Width Range","ALIASED_LINE_WIDTH_RANGE",c.getParameter(c.ALIASED_LINE_WIDTH_RANGE).join(" - ")],["Max Viewport Dimensions","MAX_VIEWPORT_DIMS",c.getParameter(c.MAX_VIEWPORT_DIMS).join(" - ")],["Max Renderbuffer Size","MAX_RENDERBUFFER_SIZE",c.getParameter(c.MAX_RENDERBUFFER_SIZE)],["Framebuffer Red Bits","RED_BITS",c.getParameter(c.RED_BITS)],["Framebuffer Green Bits","GREEN_BITS",c.getParameter(c.GREEN_BITS)],["Framebuffer Blue Bits","BLUE_BITS",c.getParameter(c.BLUE_BITS)],["Framebuffer Alpha Bits","ALPHA_BITS",c.getParameter(c.ALPHA_BITS)],["Framebuffer Depth Bits","DEPTH_BITS",c.getParameter(c.DEPTH_BITS)],["Framebuffer Stencil Bits","STENCIL_BITS",c.getParameter(c.STENCIL_BITS)],["Framebuffer Subpixel Bits","SUBPIXEL_BITS",c.getParameter(c.SUBPIXEL_BITS)],["MSAA Samples","SAMPLES",c.getParameter(c.SAMPLES)],["MSAA Sample Buffers","SAMPLE_BUFFERS",c.getParameter(c.SAMPLE_BUFFERS)],["Supported Formats for UByte Render Targets ","UNSIGNED_BYTE RENDER TARGET FORMATS",[f&&it(c,c.RGBA,c.UNSIGNED_BYTE)?"RGBA":"",f&&it(c,c.RGB,c.UNSIGNED_BYTE)?"RGB":"",f&&it(c,c.LUMINANCE,c.UNSIGNED_BYTE)?"LUMINANCE":"",f&&it(c,c.ALPHA,c.UNSIGNED_BYTE)?"ALPHA":"",f&&it(c,c.LUMINANCE_ALPHA,c.UNSIGNED_BYTE)?"LUMINANCE_ALPHA":""].join(" ")],["Supported Formats for Half Float Render Targets","HALF FLOAT RENDER TARGET FORMATS",[l&&it(c,c.RGBA,l.HALF_FLOAT_OES)?"RGBA":"",l&&it(c,c.RGB,l.HALF_FLOAT_OES)?"RGB":"",l&&it(c,c.LUMINANCE,l.HALF_FLOAT_OES)?"LUMINANCE":"",l&&it(c,c.ALPHA,l.HALF_FLOAT_OES)?"ALPHA":"",l&&it(c,c.LUMINANCE_ALPHA,l.HALF_FLOAT_OES)?"LUMINANCE_ALPHA":""].join(" ")],["Supported Formats for Full Float Render Targets","FLOAT RENDER TARGET FORMATS",[f&&it(c,c.RGBA,c.FLOAT)?"RGBA":"",f&&it(c,c.RGB,c.FLOAT)?"RGB":"",f&&it(c,c.LUMINANCE,c.FLOAT)?"LUMINANCE":"",f&&it(c,c.ALPHA,c.FLOAT)?"ALPHA":"",f&&it(c,c.LUMINANCE_ALPHA,c.FLOAT)?"LUMINANCE_ALPHA":""].join(" ")],["Max Multiple Render Targets Buffers","MAX_DRAW_BUFFERS_WEBGL",p?c.getParameter(p.MAX_DRAW_BUFFERS_WEBGL):0],["High Float Precision in Vertex Shader","HIGH_FLOAT VERTEX_SHADER",[c.getShaderPrecisionFormat(c.VERTEX_SHADER,c.HIGH_FLOAT).precision," (-2<sup>",c.getShaderPrecisionFormat(c.VERTEX_SHADER,c.HIGH_FLOAT).rangeMin,"</sup> - 2<sup>",c.getShaderPrecisionFormat(c.VERTEX_SHADER,c.HIGH_FLOAT).rangeMax,"</sup>)"].join("")],["Medium Float Precision in Vertex Shader","MEDIUM_FLOAT VERTEX_SHADER",[c.getShaderPrecisionFormat(c.VERTEX_SHADER,c.MEDIUM_FLOAT).precision," (-2<sup>",c.getShaderPrecisionFormat(c.VERTEX_SHADER,c.MEDIUM_FLOAT).rangeMin,"</sup> - 2<sup>",c.getShaderPrecisionFormat(c.VERTEX_SHADER,c.MEDIUM_FLOAT).rangeMax,"</sup>)"].join("")],["Low Float Precision in Vertex Shader","LOW_FLOAT VERTEX_SHADER",[c.getShaderPrecisionFormat(c.VERTEX_SHADER,c.LOW_FLOAT).precision," (-2<sup>",c.getShaderPrecisionFormat(c.VERTEX_SHADER,c.LOW_FLOAT).rangeMin,"</sup> - 2<sup>",c.getShaderPrecisionFormat(c.VERTEX_SHADER,c.LOW_FLOAT).rangeMax,"</sup>)"].join("")],["High Float Precision in Fragment Shader","HIGH_FLOAT FRAGMENT_SHADER",[c.getShaderPrecisionFormat(c.FRAGMENT_SHADER,c.HIGH_FLOAT).precision," (-2<sup>",c.getShaderPrecisionFormat(c.FRAGMENT_SHADER,c.HIGH_FLOAT).rangeMin,"</sup> - 2<sup>",c.getShaderPrecisionFormat(c.FRAGMENT_SHADER,c.HIGH_FLOAT).rangeMax,"</sup>)"].join("")],["Medium Float Precision in Fragment Shader","MEDIUM_FLOAT FRAGMENT_SHADER",[c.getShaderPrecisionFormat(c.FRAGMENT_SHADER,c.MEDIUM_FLOAT).precision," (-2<sup>",c.getShaderPrecisionFormat(c.FRAGMENT_SHADER,c.MEDIUM_FLOAT).rangeMin,"</sup> - 2<sup>",c.getShaderPrecisionFormat(c.FRAGMENT_SHADER,c.MEDIUM_FLOAT).rangeMax,"</sup>)"].join("")],["Low Float Precision in Fragment Shader","LOW_FLOAT FRAGMENT_SHADER",[c.getShaderPrecisionFormat(c.FRAGMENT_SHADER,c.LOW_FLOAT).precision," (-2<sup>",c.getShaderPrecisionFormat(c.FRAGMENT_SHADER,c.LOW_FLOAT).rangeMin,"</sup> - 2<sup>",c.getShaderPrecisionFormat(c.FRAGMENT_SHADER,c.LOW_FLOAT).rangeMax,"</sup>)"].join("")],["High Int Precision in Vertex Shader","HIGH_INT VERTEX_SHADER",[c.getShaderPrecisionFormat(c.VERTEX_SHADER,c.HIGH_INT).precision," (-2<sup>",c.getShaderPrecisionFormat(c.VERTEX_SHADER,c.HIGH_INT).rangeMin,"</sup> - 2<sup>",c.getShaderPrecisionFormat(c.VERTEX_SHADER,c.HIGH_INT).rangeMax,"</sup>)"].join("")],["Medium Int Precision in Vertex Shader","MEDIUM_INT VERTEX_SHADER",[c.getShaderPrecisionFormat(c.VERTEX_SHADER,c.MEDIUM_INT).precision," (-2<sup>",c.getShaderPrecisionFormat(c.VERTEX_SHADER,c.MEDIUM_INT).rangeMin,"</sup> - 2<sup>",c.getShaderPrecisionFormat(c.VERTEX_SHADER,c.MEDIUM_INT).rangeMax,"</sup>)"].join("")],["Low Int Precision in Vertex Shader","LOW_INT VERTEX_SHADER",[c.getShaderPrecisionFormat(c.VERTEX_SHADER,c.LOW_INT).precision," (-2<sup>",c.getShaderPrecisionFormat(c.VERTEX_SHADER,c.LOW_INT).rangeMin,"</sup> - 2<sup>",c.getShaderPrecisionFormat(c.VERTEX_SHADER,c.LOW_INT).rangeMax,"</sup>)"].join("")],["High Int Precision in Fragment Shader","HIGH_INT FRAGMENT_SHADER",[c.getShaderPrecisionFormat(c.FRAGMENT_SHADER,c.HIGH_INT).precision," (-2<sup>",c.getShaderPrecisionFormat(c.FRAGMENT_SHADER,c.HIGH_INT).rangeMin,"</sup> - 2<sup>",c.getShaderPrecisionFormat(c.FRAGMENT_SHADER,c.HIGH_INT).rangeMax,"</sup>)"].join("")],["Medium Int Precision in Fragment Shader","MEDIUM_INT FRAGMENT_SHADER",[c.getShaderPrecisionFormat(c.FRAGMENT_SHADER,c.MEDIUM_INT).precision," (-2<sup>",c.getShaderPrecisionFormat(c.FRAGMENT_SHADER,c.MEDIUM_INT).rangeMin,"</sup> - 2<sup>",c.getShaderPrecisionFormat(c.FRAGMENT_SHADER,c.MEDIUM_INT).rangeMax,"</sup>)"].join("")],["Low Int Precision in Fragment Shader","LOW_INT FRAGMENT_SHADER",[c.getShaderPrecisionFormat(c.FRAGMENT_SHADER,c.LOW_INT).precision," (-2<sup>",c.getShaderPrecisionFormat(c.FRAGMENT_SHADER,c.LOW_INT).rangeMin,"</sup> - 2<sup>",c.getShaderPrecisionFormat(c.FRAGMENT_SHADER,c.LOW_INT).rangeMax,"</sup>)"].join("")],["Supported Extensions","EXTENSIONS",c.getSupportedExtensions().join("<br/> ")],["WebGL Renderer","RENDERER",c.getParameter(c.RENDERER)],["WebGL Vendor","VENDOR",c.getParameter(c.VENDOR)],["WebGL Version","VERSION",c.getParameter(c.VERSION)],["Shading Language Version","SHADING_LANGUAGE_VERSION",c.getParameter(c.SHADING_LANGUAGE_VERSION)],["Unmasked Renderer","UNMASKED_RENDERER",g&&c.getParameter(g.UNMASKED_RENDERER_WEBGL)],["Unmasked Vendor","UNMASKED_VENDOR",g&&c.getParameter(g.UNMASKED_VENDOR_WEBGL)],["WebGL Version","WEBGL_VERSION",e.webgl2?2:1]],d={};for(;h.length;){const[x,S,v]=h.pop();S&&(d[S]={label:x,value:v})}return e._glInformation=d,d},t.traverseAllPasses=()=>{if(e.renderPasses)for(let c=0;c<e.renderPasses.length;++c)e.renderPasses[c].traverse(t,null);e.notifyStartCaptureImage&&s()},t.disableCullFace=()=>{e.cullFaceEnabled&&(e.context.disable(e.context.CULL_FACE),e.cullFaceEnabled=!1)},t.enableCullFace=()=>{e.cullFaceEnabled||(e.context.enable(e.context.CULL_FACE),e.cullFaceEnabled=!0)},t.setViewStream=c=>{if(e.viewStream===c)return!1;if(e.subscription&&(e.subscription.unsubscribe(),e.subscription=null),e.viewStream=c,e.viewStream){const f=e.renderable.getRenderers()[0];f.getBackgroundByReference()[3]=0,t.setUseBackgroundImage(!0),e.subscription=e.viewStream.onImageReady(l=>t.setBackgroundImage(l.image)),e.viewStream.setSize(e.size[0],e.size[1]),e.viewStream.invalidateCache(),e.viewStream.render(),t.modified()}return!0},t.createSelector=()=>{const c=o0.newInstance();return c.setOpenGLRenderWindow(t),c};function o(){e.canvas.removeEventListener("webglcontextlost",ru),e.canvas.removeEventListener("webglcontextrestored",t.restoreContext)}t.delete=_.chain(o,t.delete,t.setViewStream,q_),t.setActiveFramebuffer=c=>{e.activeFramebuffer=c};const u=t.setSize;t.setSize=(c,f)=>{const l=u(c,f);return l&&t.invokeWindowResizeEvent({width:c,height:f}),l},t.getGraphicsResourceForObject=c=>{if(!c)return null;const f=e._graphicsResources.get(c),l=e._graphicsResourceHash.get(c);return{vtkObj:f,hash:l}},t.setGraphicsResourceForObject=(c,f,l)=>{c&&(e._graphicsResources.set(c,f),e._graphicsResourceHash.set(c,l))},t.getGraphicsMemoryInfo=()=>{let c=0;return e._graphicsResources.forEach((f,l)=>{c+=f.getAllocatedGPUMemoryInBytes()}),c},t.releaseGraphicsResourcesForObject=c=>{var f;return c?((f=e._graphicsResources.get(c))==null||f.releaseGraphicsResources(t),e._graphicsResources.delete(c)&&e._graphicsResourceHash.delete(c)):!1},t.releaseGraphicsResources=()=>{e.shaderCache!==null&&e.shaderCache.releaseGraphicsResources(t),e._graphicsResources.forEach((c,f)=>{c.releaseGraphicsResources(t)}),e._graphicsResources.clear(),e._graphicsResourceHash.clear(),e.textureUnitManager!==null&&e.textureUnitManager.freeAll(),e.renderable.getRenderersByReference().forEach(c=>{const f=t.getViewNodeFor(c);f==null||f.releaseGraphicsResources()})}}const Z_={cullFaceEnabled:!1,shaderCache:null,initialized:!1,context:null,canvas:null,cursorVisibility:!0,cursor:"pointer",textureUnitManager:null,textureResourceIds:null,containerSize:null,renderPasses:[],notifyStartCaptureImage:!1,webgl2:!1,defaultToWebgl2:!0,activeFramebuffer:null,imageFormat:"image/png",useOffScreen:!1,useBackgroundImage:!1};function J_(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,Z_,n),g0.extend(t,e,n),e.canvas=document.createElement("canvas"),e.canvas.style.width="100%",Y_(),e.selector||(e.selector=o0.newInstance(),e.selector.setOpenGLRenderWindow(t)),e.bgImage=new Image,e.bgImage.style.position="absolute",e.bgImage.style.left="0",e.bgImage.style.top="0",e.bgImage.style.width="100%",e.bgImage.style.height="100%",e.bgImage.style.zIndex="-1",e._textureResourceIds=new Map,e._graphicsResources=new Map,e._graphicsResourceHash=new Map,e._glInformation=null,e.myFactory=C1.newInstance(),e.myFactory.registerOverride("vtkRenderWindow",h0),e.shaderCache=N_.newInstance(),e.shaderCache.setOpenGLRenderWindow(t),e.renderPasses[0]=d_.newInstance(),_.event(t,e,"imageReady"),_.get(t,e,["shaderCache","textureUnitManager","webgl2","useBackgroundImage","activeFramebuffer"]),_.setGet(t,e,["initialized","context","canvas","renderPasses","notifyStartCaptureImage","defaultToWebgl2","cursor","useOffScreen"]),_.setGetArray(t,e,["size"],2),_.event(t,e,"windowResizeEvent"),Q_(t,e)}const h0=_.newInstance(J_,"vtkOpenGLRenderWindow");wo("WebGL",h0);const ei=["setBindGroup","setIndexBuffer","setVertexBuffer","draw","drawIndexed"];function eE(t,e){e.classHierarchy.push("vtkWebGPURenderEncoder"),t.begin=n=>{e.drawCallbacks=[],e.handle=n.beginRenderPass(e.description),e.label&&e.handle.pushDebugGroup(e.label)},t.end=()=>{for(let n=0;n<e.drawCallbacks.length;n++){const r=e.drawCallbacks[n],a=r.pipeline;t.setPipeline(a);for(let s=0;s<r.callbacks.length;s++)r.callbacks[s](t)}e.label&&e.handle.popDebugGroup(),e.handle.end(),e.boundPipeline=null},t.setPipeline=n=>{var a,s;if(e.boundPipeline===n)return;e.handle.setPipeline(n.getHandle());const r=n.getPipelineDescription();if(e.colorTextureViews.length!==r.fragment.targets.length)console.log(`mismatched attachment counts on pipeline ${r.fragment.targets.length} while encoder has ${e.colorTextureViews.length}`),console.trace();else for(let i=0;i<e.colorTextureViews.length;i++){const o=(a=e.colorTextureViews[i].getTexture())==null?void 0:a.getFormat();o&&o!==r.fragment.targets[i].format&&(console.log(`mismatched attachments for attachment ${i} on pipeline ${r.fragment.targets[i].format} while encoder has ${o}`),console.trace())}if(!e.depthTextureView!=!("depthStencil"in r))console.log("mismatched depth attachments"),console.trace();else if(e.depthTextureView){const i=(s=e.depthTextureView.getTexture())==null?void 0:s.getFormat();i&&i!==r.depthStencil.format&&(console.log(`mismatched depth attachments on pipeline ${r.depthStencil.format} while encoder has ${i}`),console.trace())}e.boundPipeline=n},t.replaceShaderCode=n=>{e.replaceShaderCodeFunction(n)},t.setColorTextureView=(n,r)=>{e.colorTextureViews[n]!==r&&(e.colorTextureViews[n]=r)},t.activateBindGroup=n=>{const r=e.boundPipeline.getDevice(),a=e.boundPipeline.getBindGroupLayoutCount(n.getLabel());e.handle.setBindGroup(a,n.getBindGroup(r));const s=r.getBindGroupLayoutDescription(n.getBindGroupLayout(r)),i=r.getBindGroupLayoutDescription(e.boundPipeline.getBindGroupLayout(a));s!==i&&(console.log(`renderEncoder ${e.pipelineHash} mismatched bind group layouts bind group has
- ${s}
- versus pipeline
- ${i}
- `),console.trace())},t.attachTextureViews=()=>{for(let n=0;n<e.colorTextureViews.length;n++)e.description.colorAttachments[n]?e.description.colorAttachments[n].view=e.colorTextureViews[n].getHandle():e.description.colorAttachments[n]={view:e.colorTextureViews[n].getHandle()};e.depthTextureView&&(e.description.depthStencilAttachment.view=e.depthTextureView.getHandle())},t.registerDrawCallback=(n,r)=>{for(let a=0;a<e.drawCallbacks.length;a++)if(e.drawCallbacks[a].pipeline===n){e.drawCallbacks[a].callbacks.push(r);return}e.drawCallbacks.push({pipeline:n,callbacks:[r]})};for(let n=0;n<ei.length;n++)t[ei[n]]=function(){return e.handle[ei[n]](...arguments)}}const tE={description:null,handle:null,boundPipeline:null,pipelineHash:null,pipelineSettings:null,replaceShaderCodeFunction:null,depthTextureView:null,label:null};function d0(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,tE,n),qe(t,e),e.description={colorAttachments:[{view:void 0,loadOp:"load",storeOp:"store"}],depthStencilAttachment:{view:void 0,depthLoadOp:"clear",depthClearValue:0,depthStoreOp:"store"}},e.replaceShaderCodeFunction=r=>{const a=r.getShaderDescription("fragment");a.addOutput("vec4<f32>","outColor");let s=a.getCode();s=oe.substitute(s,"//VTK::RenderEncoder::Impl",["output.outColor = computedColor;"]).result,a.setCode(s)},e.pipelineSettings={primitive:{cullMode:"none"},depthStencil:{depthWriteEnabled:!0,depthCompare:"greater-equal",format:"depth32float"},fragment:{targets:[{format:"rgba16float",blend:{color:{srcFactor:"src-alpha",dstFactor:"one-minus-src-alpha"},alpha:{srcfactor:"one",dstFactor:"one-minus-src-alpha"}}}]}},e.colorTextureViews=[],lt(t,e,["boundPipeline","colorTextureViews"]),He(t,e,["depthTextureView","description","handle","label","pipelineHash","pipelineSettings","replaceShaderCodeFunction"]),eE(t,e)}const nE=De(d0,"vtkWebGPURenderEncoder");var cn={newInstance:nE,extend:d0};function rE(t,e){e.classHierarchy.push("vtkWebGPUOpaquePass"),t.traverse=(n,r)=>{if(e.deleted)return;e._currentParent=r;const a=r.getDevice();if(e.renderEncoder)e.colorTexture.resize(r.getCanvas().width,r.getCanvas().height),e.depthTexture.resize(r.getCanvas().width,r.getCanvas().height);else{t.createRenderEncoder(),e.colorTexture=Zt.newInstance({label:"opaquePassColor"}),e.colorTexture.create(a,{width:r.getCanvas().width,height:r.getCanvas().height,format:"rgba16float",usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_SRC});const s=e.colorTexture.createView("opaquePassColorTexture");e.renderEncoder.setColorTextureView(0,s),e.depthFormat="depth32float",e.depthTexture=Zt.newInstance({label:"opaquePassDepth"}),e.depthTexture.create(a,{width:r.getCanvas().width,height:r.getCanvas().height,format:e.depthFormat,usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_SRC});const i=e.depthTexture.createView("opaquePassDepthTexture");e.renderEncoder.setDepthTextureView(i)}e.renderEncoder.attachTextureViews(),t.setCurrentOperation("opaquePass"),n.setRenderEncoder(e.renderEncoder),n.traverse(t)},t.getColorTextureView=()=>e.renderEncoder.getColorTextureViews()[0],t.getDepthTextureView=()=>e.renderEncoder.getDepthTextureView(),t.createRenderEncoder=()=>{e.renderEncoder=cn.newInstance({label:"OpaquePass"}),e.renderEncoder.setPipelineHash("op")}}const aE={renderEncoder:null,colorTexture:null,depthTexture:null};function v0(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,aE,n),gn.extend(t,e,n),_.get(t,e,["colorTexture","depthTexture"]),rE(t,e)}const sE=_.newInstance(v0,"vtkWebGPUOpaquePass");var iE={newInstance:sE,extend:v0};const oE=`
- //VTK::Mapper::Dec
- //VTK::TCoord::Dec
- //VTK::RenderEncoder::Dec
- //VTK::IOStructs::Dec
- @fragment
- fn main(
- //VTK::IOStructs::Input
- )
- //VTK::IOStructs::Output
- {
- var output: fragmentOutput;
- var tcoord: vec2<i32> = vec2<i32>(i32(input.fragPos.x), i32(input.fragPos.y));
- var reveal: f32 = textureLoad(oitpAccumTexture, tcoord, 0).r;
- if (reveal == 1.0) { discard; }
- var tcolor: vec4<f32> = textureLoad(oitpColorTexture, tcoord, 0);
- var total: f32 = max(tcolor.a, 0.01);
- var computedColor: vec4<f32> = vec4<f32>(tcolor.r/total, tcolor.g/total, tcolor.b/total, 1.0 - reveal);
- //VTK::RenderEncoder::Impl
- return output;
- }
- `;function cE(t,e){e.classHierarchy.push("vtkWebGPUOrderIndependentTranslucentPass"),t.traverse=(n,r)=>{if(e.deleted)return;e._currentParent=r;const a=r.getDevice();if(e.translucentRenderEncoder)e.translucentColorTexture.resizeToMatch(e.colorTextureView.getTexture()),e.translucentAccumulateTexture.resizeToMatch(e.colorTextureView.getTexture());else{t.createRenderEncoder(),t.createFinalEncoder(),e.translucentColorTexture=Zt.newInstance({label:"translucentPassColor"}),e.translucentColorTexture.create(a,{width:r.getCanvas().width,height:r.getCanvas().height,format:"rgba16float",usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING});const s=e.translucentColorTexture.createView("oitpColorTexture");e.translucentRenderEncoder.setColorTextureView(0,s),e.translucentAccumulateTexture=Zt.newInstance({label:"translucentPassAccumulate"}),e.translucentAccumulateTexture.create(a,{width:r.getCanvas().width,height:r.getCanvas().height,format:"r16float",usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING});const i=e.translucentAccumulateTexture.createView("oitpAccumTexture");e.translucentRenderEncoder.setColorTextureView(1,i),e.fullScreenQuad=wr.newInstance(),e.fullScreenQuad.setDevice(r.getDevice()),e.fullScreenQuad.setPipelineHash("oitpfsq"),e.fullScreenQuad.setTextureViews(e.translucentRenderEncoder.getColorTextureViews()),e.fullScreenQuad.setFragmentShaderTemplate(oE)}e.translucentRenderEncoder.setDepthTextureView(e.depthTextureView),e.translucentRenderEncoder.attachTextureViews(),t.setCurrentOperation("translucentPass"),n.setRenderEncoder(e.translucentRenderEncoder),n.traverse(t),t.finalPass(r,n)},t.finalPass=(n,r)=>{e.translucentFinalEncoder.setColorTextureView(0,e.colorTextureView),e.translucentFinalEncoder.attachTextureViews(),e.translucentFinalEncoder.begin(n.getCommandEncoder()),r.scissorAndViewport(e.translucentFinalEncoder),e.fullScreenQuad.prepareAndDraw(e.translucentFinalEncoder),e.translucentFinalEncoder.end()},t.getTextures=()=>[e.translucentColorTexture,e.translucentAccumulateTexture],t.createRenderEncoder=()=>{e.translucentRenderEncoder=cn.newInstance({label:"translucentRender"});const n=e.translucentRenderEncoder.getDescription();n.colorAttachments=[{view:void 0,clearValue:[0,0,0,0],loadOp:"clear",storeOp:"store"},{view:void 0,clearValue:[1,0,0,0],loadOp:"clear",storeOp:"store"}],n.depthStencilAttachment={view:void 0,depthLoadOp:"load",depthStoreOp:"store"},e.translucentRenderEncoder.setReplaceShaderCodeFunction(r=>{const a=r.getShaderDescription("fragment");a.addOutput("vec4<f32>","outColor"),a.addOutput("f32","outAccum"),a.addBuiltinInput("vec4<f32>","@builtin(position) fragPos");let s=a.getCode();s=oe.substitute(s,"//VTK::RenderEncoder::Impl",["var w: f32 = computedColor.a * pow(0.1 + input.fragPos.z, 2.0);","output.outColor = vec4<f32>(computedColor.rgb*w, w);","output.outAccum = computedColor.a;"]).result,a.setCode(s)}),e.translucentRenderEncoder.setPipelineHash("oitpr"),e.translucentRenderEncoder.setPipelineSettings({primitive:{cullMode:"none"},depthStencil:{depthWriteEnabled:!1,depthCompare:"greater",format:"depth32float"},fragment:{targets:[{format:"rgba16float",blend:{color:{srcFactor:"one",dstFactor:"one"},alpha:{srcfactor:"one",dstFactor:"one"}}},{format:"r16float",blend:{color:{srcFactor:"zero",dstFactor:"one-minus-src"},alpha:{srcfactor:"one",dstFactor:"one-minus-src-alpha"}}}]}})},t.createFinalEncoder=()=>{e.translucentFinalEncoder=cn.newInstance({label:"translucentFinal"}),e.translucentFinalEncoder.setDescription({colorAttachments:[{view:null,loadOp:"load",storeOp:"store"}]}),e.translucentFinalEncoder.setReplaceShaderCodeFunction(n=>{const r=n.getShaderDescription("fragment");r.addOutput("vec4<f32>","outColor"),r.addBuiltinInput("vec4<f32>","@builtin(position) fragPos");let a=r.getCode();a=oe.substitute(a,"//VTK::RenderEncoder::Impl",["output.outColor = vec4<f32>(computedColor.rgb, computedColor.a);"]).result,r.setCode(a)}),e.translucentFinalEncoder.setPipelineHash("oitpf"),e.translucentFinalEncoder.setPipelineSettings({primitive:{cullMode:"none"},fragment:{targets:[{format:"rgba16float",blend:{color:{srcFactor:"src-alpha",dstFactor:"one-minus-src-alpha"},alpha:{srcfactor:"one",dstFactor:"one-minus-src-alpha"}}}]}})}}const uE={colorTextureView:null,depthTextureView:null};function y0(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,uE,n),gn.extend(t,e,n),_.setGet(t,e,["colorTextureView","depthTextureView"]),cE(t,e)}const fE=_.newInstance(y0,"vtkWebGPUOrderIndependentTranslucentPass");var lE={newInstance:fE,extend:y0};const ir={COMPOSITE_BLEND:0,MAXIMUM_INTENSITY_BLEND:1,MINIMUM_INTENSITY_BLEND:2,AVERAGE_INTENSITY_BLEND:3,ADDITIVE_INTENSITY_BLEND:4,RADON_TRANSFORM_BLEND:5},gE=`
- //VTK::Renderer::Dec
- //VTK::Mapper::Dec
- //VTK::TCoord::Dec
- //VTK::Volume::TraverseDec
- //VTK::RenderEncoder::Dec
- //VTK::IOStructs::Dec
- fn getTextureValue(vTex: texture_3d<f32>, tpos: vec4<f32>) -> f32
- {
- // todo multicomponent support
- return textureSampleLevel(vTex, clampSampler, tpos.xyz, 0.0).r;
- }
- fn getGradient(vTex: texture_3d<f32>, tpos: vec4<f32>, vNum: i32, scalar: f32) -> vec4<f32>
- {
- var result: vec4<f32>;
- var tstep: vec4<f32> = volumeSSBO.values[vNum].tstep;
- result.x = getTextureValue(vTex, tpos + vec4<f32>(tstep.x, 0.0, 0.0, 1.0)) - scalar;
- result.y = getTextureValue(vTex, tpos + vec4<f32>(0.0, tstep.y, 0.0, 1.0)) - scalar;
- result.z = getTextureValue(vTex, tpos + vec4<f32>(0.0, 0.0, tstep.z, 1.0)) - scalar;
- result.w = 0.0;
- // divide by spacing as that is our delta
- result = result / volumeSSBO.values[vNum].spacing;
- // now we have a gradient in unit tcoords
- var grad: f32 = length(result.xyz);
- if (grad > 0.0)
- {
- // rotate to View Coords, needed for lighting and shading
- var nMat: mat4x4<f32> = rendererUBO.SCVCMatrix * volumeSSBO.values[vNum].planeNormals;
- result = nMat * result;
- result = result / length(result);
- }
- // store gradient magnitude in .w
- result.w = grad;
- return result;
- }
- fn processVolume(vTex: texture_3d<f32>, vNum: i32, cNum: i32, posSC: vec4<f32>, tfunRows: f32) -> vec4<f32>
- {
- var outColor: vec4<f32> = vec4<f32>(0.0, 0.0, 0.0, 0.0);
- // convert to tcoords and reject if outside the volume
- var tpos: vec4<f32> = volumeSSBO.values[vNum].SCTCMatrix*posSC;
- if (tpos.x < 0.0 || tpos.y < 0.0 || tpos.z < 0.0 ||
- tpos.x > 1.0 || tpos.y > 1.0 || tpos.z > 1.0) { return outColor; }
- var scalar: f32 = getTextureValue(vTex, tpos);
- var coord: vec2<f32> =
- vec2<f32>(scalar * componentSSBO.values[cNum].cScale + componentSSBO.values[cNum].cShift,
- (0.5 + 2.0 * f32(vNum)) / tfunRows);
- var color: vec4<f32> = textureSampleLevel(tfunTexture, clampSampler, coord, 0.0);
- var gofactor: f32 = 1.0;
- var normal: vec4<f32> = vec4<f32>(0.0,0.0,0.0,0.0);
- if (componentSSBO.values[cNum].gomin < 1.0 || volumeSSBO.values[vNum].shade[0] > 0.0)
- {
- normal = getGradient(vTex, tpos, vNum, scalar);
- if (componentSSBO.values[cNum].gomin < 1.0)
- {
- gofactor = clamp(normal.a*componentSSBO.values[cNum].goScale + componentSSBO.values[cNum].goShift,
- componentSSBO.values[cNum].gomin, componentSSBO.values[cNum].gomax);
- }
- }
- coord.x = (scalar * componentSSBO.values[cNum].oScale + componentSSBO.values[cNum].oShift);
- var opacity: f32 = textureSampleLevel(ofunTexture, clampSampler, coord, 0.0).r;
- if (volumeSSBO.values[vNum].shade[0] > 0.0)
- {
- color = color*abs(normal.z);
- }
- outColor = vec4<f32>(color.rgb, gofactor * opacity);
- return outColor;
- }
- // adjust the start and end point of a raycast such that it intersects the unit cube.
- // This function is used to take a raycast starting point and step vector
- // and numSteps and return the startijng and ending steps for intersecting the
- // unit cube. Recall for a 3D texture, the unit cube is the range of texture coordsinates
- // that have valid values. So this funtion can be used to take a ray in texture coordinates
- // and bound it to intersecting the texture.
- //
- fn adjustBounds(tpos: vec4<f32>, tstep: vec4<f32>, numSteps: f32) -> vec2<f32>
- {
- var result: vec2<f32> = vec2<f32>(0.0, numSteps);
- var tpos2: vec4<f32> = tpos + tstep*numSteps;
- // move tpos to the start of the volume
- var adjust: f32 =
- min(
- max(tpos.x/tstep.x, (tpos.x - 1.0)/tstep.x),
- min(
- max((tpos.y - 1.0)/tstep.y, tpos.y/tstep.y),
- max((tpos.z - 1.0)/tstep.z, tpos.z/tstep.z)));
- if (adjust < 0.0)
- {
- result.x = result.x - adjust;
- }
- // adjust length to the end
- adjust =
- max(
- min(tpos2.x/tstep.x, (tpos2.x - 1.0)/tstep.x),
- max(
- min((tpos2.y - 1.0)/tstep.y, tpos2.y/tstep.y),
- min((tpos2.z - 1.0)/tstep.z, tpos2.z/tstep.z)));
- if (adjust > 0.0)
- {
- result.y = result.y - adjust;
- }
- return result;
- }
- fn getSimpleColor(scalar: f32, vNum: i32, cNum: i32) -> vec4<f32>
- {
- // how many rows (tfuns) do we have in our tfunTexture
- var tfunRows: f32 = f32(textureDimensions(tfunTexture).y);
- var coord: vec2<f32> =
- vec2<f32>(scalar * componentSSBO.values[cNum].cScale + componentSSBO.values[cNum].cShift,
- (0.5 + 2.0 * f32(vNum)) / tfunRows);
- var color: vec4<f32> = textureSampleLevel(tfunTexture, clampSampler, coord, 0.0);
- coord.x = (scalar * componentSSBO.values[cNum].oScale + componentSSBO.values[cNum].oShift);
- var opacity: f32 = textureSampleLevel(ofunTexture, clampSampler, coord, 0.0).r;
- return vec4<f32>(color.rgb, opacity);
- }
- fn traverseMax(vTex: texture_3d<f32>, vNum: i32, cNum: i32, rayLengthSC: f32, minPosSC: vec4<f32>, rayStepSC: vec4<f32>)
- {
- // convert to tcoords and reject if outside the volume
- var numSteps: f32 = rayLengthSC/mapperUBO.SampleDistance;
- var tpos: vec4<f32> = volumeSSBO.values[vNum].SCTCMatrix*minPosSC;
- var tpos2: vec4<f32> = volumeSSBO.values[vNum].SCTCMatrix*(minPosSC + rayStepSC);
- var tstep: vec4<f32> = tpos2 - tpos;
- var rayBounds: vec2<f32> = adjustBounds(tpos, tstep, numSteps);
- // did we hit anything
- if (rayBounds.x >= rayBounds.y)
- {
- traverseVals[vNum] = vec4<f32>(0.0,0.0,0.0,0.0);
- return;
- }
- tpos = tpos + tstep*rayBounds.x;
- var curDist: f32 = rayBounds.x;
- var maxVal: f32 = -1.0e37;
- loop
- {
- var scalar: f32 = getTextureValue(vTex, tpos);
- if (scalar > maxVal)
- {
- maxVal = scalar;
- }
- // increment position
- curDist = curDist + 1.0;
- tpos = tpos + tstep;
- // check if we have reached a terminating condition
- if (curDist > rayBounds.y) { break; }
- }
- // process to get the color and opacity
- traverseVals[vNum] = getSimpleColor(maxVal, vNum, cNum);
- }
- fn traverseMin(vTex: texture_3d<f32>, vNum: i32, cNum: i32, rayLengthSC: f32, minPosSC: vec4<f32>, rayStepSC: vec4<f32>)
- {
- // convert to tcoords and reject if outside the volume
- var numSteps: f32 = rayLengthSC/mapperUBO.SampleDistance;
- var tpos: vec4<f32> = volumeSSBO.values[vNum].SCTCMatrix*minPosSC;
- var tpos2: vec4<f32> = volumeSSBO.values[vNum].SCTCMatrix*(minPosSC + rayStepSC);
- var tstep: vec4<f32> = tpos2 - tpos;
- var rayBounds: vec2<f32> = adjustBounds(tpos, tstep, numSteps);
- // did we hit anything
- if (rayBounds.x >= rayBounds.y)
- {
- traverseVals[vNum] = vec4<f32>(0.0,0.0,0.0,0.0);
- return;
- }
- tpos = tpos + tstep*rayBounds.x;
- var curDist: f32 = rayBounds.x;
- var minVal: f32 = 1.0e37;
- loop
- {
- var scalar: f32 = getTextureValue(vTex, tpos);
- if (scalar < minVal)
- {
- minVal = scalar;
- }
- // increment position
- curDist = curDist + 1.0;
- tpos = tpos + tstep;
- // check if we have reached a terminating condition
- if (curDist > rayBounds.y) { break; }
- }
- // process to get the color and opacity
- traverseVals[vNum] = getSimpleColor(minVal, vNum, cNum);
- }
- fn traverseAverage(vTex: texture_3d<f32>, vNum: i32, cNum: i32, rayLengthSC: f32, minPosSC: vec4<f32>, rayStepSC: vec4<f32>)
- {
- // convert to tcoords and reject if outside the volume
- var numSteps: f32 = rayLengthSC/mapperUBO.SampleDistance;
- var tpos: vec4<f32> = volumeSSBO.values[vNum].SCTCMatrix*minPosSC;
- var tpos2: vec4<f32> = volumeSSBO.values[vNum].SCTCMatrix*(minPosSC + rayStepSC);
- var tstep: vec4<f32> = tpos2 - tpos;
- var rayBounds: vec2<f32> = adjustBounds(tpos, tstep, numSteps);
- // did we hit anything
- if (rayBounds.x >= rayBounds.y)
- {
- traverseVals[vNum] = vec4<f32>(0.0,0.0,0.0,0.0);
- return;
- }
- let ipRange: vec4<f32> = volumeSSBO.values[vNum].ipScalarRange;
- tpos = tpos + tstep*rayBounds.x;
- var curDist: f32 = rayBounds.x;
- var avgVal: f32 = 0.0;
- var sampleCount: f32 = 0.0;
- loop
- {
- var sample: f32 = getTextureValue(vTex, tpos);
- // right now leave filtering off until WebGL changes get merged
- // if (ipRange.z == 0.0 || sample >= ipRange.x && sample <= ipRange.y)
- // {
- avgVal = avgVal + sample;
- sampleCount = sampleCount + 1.0;
- // }
- // increment position
- curDist = curDist + 1.0;
- tpos = tpos + tstep;
- // check if we have reached a terminating condition
- if (curDist > rayBounds.y) { break; }
- }
- if (sampleCount <= 0.0)
- {
- traverseVals[vNum] = vec4<f32>(0.0,0.0,0.0,0.0);
- }
- // process to get the color and opacity
- traverseVals[vNum] = getSimpleColor(avgVal/sampleCount, vNum, cNum);
- }
- fn traverseAdditive(vTex: texture_3d<f32>, vNum: i32, cNum: i32, rayLengthSC: f32, minPosSC: vec4<f32>, rayStepSC: vec4<f32>)
- {
- // convert to tcoords and reject if outside the volume
- var numSteps: f32 = rayLengthSC/mapperUBO.SampleDistance;
- var tpos: vec4<f32> = volumeSSBO.values[vNum].SCTCMatrix*minPosSC;
- var tpos2: vec4<f32> = volumeSSBO.values[vNum].SCTCMatrix*(minPosSC + rayStepSC);
- var tstep: vec4<f32> = tpos2 - tpos;
- var rayBounds: vec2<f32> = adjustBounds(tpos, tstep, numSteps);
- // did we hit anything
- if (rayBounds.x >= rayBounds.y)
- {
- traverseVals[vNum] = vec4<f32>(0.0,0.0,0.0,0.0);
- return;
- }
- let ipRange: vec4<f32> = volumeSSBO.values[vNum].ipScalarRange;
- tpos = tpos + tstep*rayBounds.x;
- var curDist: f32 = rayBounds.x;
- var sumVal: f32 = 0.0;
- loop
- {
- var sample: f32 = getTextureValue(vTex, tpos);
- // right now leave filtering off until WebGL changes get merged
- // if (ipRange.z == 0.0 || sample >= ipRange.x && sample <= ipRange.y)
- // {
- sumVal = sumVal + sample;
- // }
- // increment position
- curDist = curDist + 1.0;
- tpos = tpos + tstep;
- // check if we have reached a terminating condition
- if (curDist > rayBounds.y) { break; }
- }
- // process to get the color and opacity
- traverseVals[vNum] = getSimpleColor(sumVal, vNum, cNum);
- }
- fn composite(rayLengthSC: f32, minPosSC: vec4<f32>, rayStepSC: vec4<f32>) -> vec4<f32>
- {
- // initial ray position is at the beginning
- var rayPosSC: vec4<f32> = minPosSC;
- // how many rows (tfuns) do we have in our tfunTexture
- var tfunRows: f32 = f32(textureDimensions(tfunTexture).y);
- var curDist: f32 = 0.0;
- var computedColor: vec4<f32> = vec4<f32>(0.0, 0.0, 0.0, 0.0);
- var sampleColor: vec4<f32>;
- //VTK::Volume::TraverseCalls
- loop
- {
- // for each volume, sample and accumulate color
- //VTK::Volume::CompositeCalls
- // increment position
- curDist = curDist + mapperUBO.SampleDistance;
- rayPosSC = rayPosSC + rayStepSC;
- // check if we have reached a terminating condition
- if (curDist > rayLengthSC) { break; }
- if (computedColor.a > 0.98) { break; }
- }
- return computedColor;
- }
- @fragment
- fn main(
- //VTK::IOStructs::Input
- )
- //VTK::IOStructs::Output
- {
- var output: fragmentOutput;
- var rayMax: f32 = textureSampleLevel(maxTexture, clampSampler, input.tcoordVS, 0.0).r;
- var rayMin: f32 = textureSampleLevel(minTexture, clampSampler, input.tcoordVS, 0.0).r;
- // discard empty rays
- if (rayMax <= rayMin) { discard; }
- else
- {
- // compute start and end ray positions in view coordinates
- var minPosSC: vec4<f32> = rendererUBO.PCSCMatrix*vec4<f32>(2.0 * input.tcoordVS.x - 1.0, 1.0 - 2.0 * input.tcoordVS.y, rayMax, 1.0);
- minPosSC = minPosSC * (1.0 / minPosSC.w);
- var maxPosSC: vec4<f32> = rendererUBO.PCSCMatrix*vec4<f32>(2.0 * input.tcoordVS.x - 1.0, 1.0 - 2.0 * input.tcoordVS.y, rayMin, 1.0);
- maxPosSC = maxPosSC * (1.0 / maxPosSC.w);
- var rayLengthSC: f32 = distance(minPosSC.xyz, maxPosSC.xyz);
- var rayStepSC: vec4<f32> = (maxPosSC - minPosSC)*(mapperUBO.SampleDistance/rayLengthSC);
- rayStepSC.w = 0.0;
- var computedColor: vec4<f32>;
- //VTK::Volume::Loop
- //VTK::RenderEncoder::Impl
- }
- return output;
- }
- `,ot=new Float64Array(16),Tn=new Float64Array(16);function pE(t,e){e.classHierarchy.push("vtkWebGPUVolumePassFSQ"),t.replaceShaderPosition=(a,s,i)=>{const o=s.getShaderDescription("vertex");o.addBuiltinOutput("vec4<f32>","@builtin(position) Position");let u=o.getCode();u=oe.substitute(u,"//VTK::Position::Impl",["output.tcoordVS = vec2<f32>(vertexBC.x * 0.5 + 0.5, 1.0 - vertexBC.y * 0.5 - 0.5);","output.Position = vec4<f32>(vertexBC, 1.0);"]).result,o.setCode(u),s.getShaderDescription("fragment").addBuiltinInput("vec4<f32>","@builtin(position) fragPos")},e.shaderReplacements.set("replaceShaderPosition",t.replaceShaderPosition),t.replaceShaderVolume=(a,s,i)=>{const o=s.getShaderDescription("fragment");let u=o.getCode();const c=[],f=[];for(let g=0;g<e.volumes.length;g++)e.volumes[g].getRenderable().getMapper().getBlendMode()===ir.COMPOSITE_BLEND?(c.push(` sampleColor = processVolume(volTexture${g}, ${g}, ${e.rowStarts[g]}, rayPosSC, tfunRows);`),c.push(` computedColor = vec4<f32>(
- sampleColor.a * sampleColor.rgb * (1.0 - computedColor.a) + computedColor.rgb,
- (1.0 - computedColor.a)*sampleColor.a + computedColor.a);`)):(f.push(` sampleColor = traverseVals[${g}];`),f.push(` computedColor = vec4<f32>(
- sampleColor.a * sampleColor.rgb * (1.0 - computedColor.a) + computedColor.rgb,
- (1.0 - computedColor.a)*sampleColor.a + computedColor.a);`));u=oe.substitute(u,"//VTK::Volume::CompositeCalls",c).result,u=oe.substitute(u,"//VTK::Volume::TraverseCalls",f).result,u=oe.substitute(u,"//VTK::Volume::TraverseDec",[`var<private> traverseVals: array<vec4<f32>,${e.volumes.length}>;`]).result;let l=!1;for(let g=0;g<e.volumes.length;g++){const p=e.volumes[g].getRenderable().getMapper().getBlendMode();p===ir.COMPOSITE_BLEND?l=!0:p===ir.MAXIMUM_INTENSITY_BLEND?u=oe.substitute(u,"//VTK::Volume::Loop",[` traverseMax(volTexture${g}, ${g}, ${g}, rayLengthSC, minPosSC, rayStepSC);`,` computedColor = traverseVals[${g}];`,"//VTK::Volume::Loop"]).result:p===ir.MINIMUM_INTENSITY_BLEND?u=oe.substitute(u,"//VTK::Volume::Loop",[` traverseMin(volTexture${g}, ${g}, ${g}, rayLengthSC, minPosSC, rayStepSC);`,` computedColor = traverseVals[${g}];`,"//VTK::Volume::Loop"]).result:p===ir.AVERAGE_INTENSITY_BLEND?u=oe.substitute(u,"//VTK::Volume::Loop",[` traverseAverage(volTexture${g}, ${g}, ${g}, rayLengthSC, minPosSC, rayStepSC);`,` computedColor = traverseVals[${g}];`,"//VTK::Volume::Loop"]).result:p===ir.ADDITIVE_INTENSITY_BLEND&&(u=oe.substitute(u,"//VTK::Volume::Loop",[` traverseAdditive(volTexture${g}, ${g}, ${g}, rayLengthSC, minPosSC, rayStepSC);`,` computedColor = traverseVals[${g}];`,"//VTK::Volume::Loop"]).result)}l&&(u=oe.substitute(u,"//VTK::Volume::Loop",[" computedColor = composite(rayLengthSC, minPosSC, rayStepSC);"]).result),o.setCode(u)},e.shaderReplacements.set("replaceShaderVolume",t.replaceShaderVolume),t.updateLUTImage=a=>{let s=t.getMTime();for(let l=0;l<e.volumes.length;l++){const g=e.volumes[l].getRenderable(),p=g.getMapper().getInputData();s=Math.max(s,g.getMTime(),p.getMTime())}if(s<e.lutBuildTime.getMTime())return;e.numRows=0,e.rowStarts=[];for(let l=0;l<e.volumes.length;l++){e.rowStarts.push(e.numRows);const p=e.volumes[l].getRenderable(),y=p.getMapper(),h=p.getProperty(),d=y.getInputData(),S=(d.getPointData()&&d.getPointData().getScalars()).getNumberOfComponents(),T=h.getIndependentComponents()?S:1;e.numRows+=T}const i=new Uint8ClampedArray(e.numRows*2*e.rowLength*4),o=new Float32Array(e.numRows*2*e.rowLength);let u=0;const c=new Float32Array(e.rowLength*3),f=e.rowLength;for(let l=0;l<e.volumes.length;l++){const p=e.volumes[l].getRenderable(),y=p.getMapper(),h=p.getProperty(),d=y.getInputData(),S=(d.getPointData()&&d.getPointData().getScalars()).getNumberOfComponents(),T=h.getIndependentComponents()?S:1;for(let w=0;w<T;++w){const C=h.getRGBTransferFunction(w),R=C.getRange();C.getTable(R[0],R[1],f,c,1);let m=u*f*4;for(let L=0;L<f;++L){i[m+L*4]=255*c[L*3],i[m+L*4+1]=255*c[L*3+1],i[m+L*4+2]=255*c[L*3+2],i[m+L*4+3]=255;for(let b=0;b<4;b++)i[m+(f+L)*4+b]=i[m+L*4+b]}const B=h.getScalarOpacity(w),M=e.sampleDist/h.getScalarOpacityUnitDistance(w),D=B.getRange();B.getTable(D[0],D[1],f,c,1),m=u*f;for(let L=0;L<f;++L)o[m+L]=1-(1-c[L])**M,o[m+L+f]=o[m+L];u+=2}}{const l={nativeArray:i,width:e.rowLength,height:e.numRows*2,depth:1,format:"rgba8unorm"},p=a.getTextureManager().getTexture(l).createView("tfunTexture");e.textureViews[2]=p}{const l={nativeArray:o,width:e.rowLength,height:e.numRows*2,depth:1,format:"r16float"},p=a.getTextureManager().getTexture(l).createView("ofunTexture");e.textureViews[3]=p}e.lutBuildTime.modified()},t.updateSSBO=a=>{let s=Math.max(t.getMTime(),e.WebGPURenderer.getStabilizedTime());for(let C=0;C<e.volumes.length;C++){const R=e.volumes[C].getRenderable(),m=R.getMapper(),B=m.getInputData();s=Math.max(s,R.getMTime(),B.getMTime(),m.getMTime())}if(s<e.SSBO.getSendTime())return;const i=e.WebGPURenderer.getStabilizedCenterByReference();e.SSBO.clearData(),e.SSBO.setNumberOfInstances(e.volumes.length);const o=new Float64Array(e.volumes.length*16),u=new Float64Array(e.volumes.length*16),c=new Float64Array(e.volumes.length*4),f=new Float64Array(e.volumes.length*4),l=new Float64Array(e.volumes.length*4),g=new Float64Array(e.volumes.length*4);for(let C=0;C<e.volumes.length;C++){const m=e.volumes[C].getRenderable(),B=m.getMapper(),M=B.getInputData();le(ot),We(ot,ot,i);const D=m.getMatrix();Ve(Tn,D),dt(Tn,Tn),ft(ot,Tn,ot);const L=M.getWorldToIndex();ft(ot,L,ot);const b=M.getDimensions();le(Tn),xr(Tn,Tn,[1/b[0],1/b[1],1/b[2]]),ft(ot,Tn,ot);for(let Z=0;Z<16;Z++)o[C*16+Z]=ot[Z];dt(ot,ot);for(let Z=0;Z<4;Z++)u[C*16+Z*4]=ot[Z*4],u[C*16+Z*4+1]=ot[Z*4+1],u[C*16+Z*4+2]=ot[Z*4+2],u[C*16+Z*4+3]=0;c[C*4]=1/b[0],c[C*4+1]=1/b[1],c[C*4+2]=1/b[2],c[C*4+3]=1,f[C*4]=m.getProperty().getShade()?1:0;const $=M.getSpacing();l[C*4]=$[0],l[C*4+1]=$[1],l[C*4+2]=$[2],l[C*4+3]=1;const Q=e.textureViews[C+4].getTexture().getScale(),Y=B.getIpScalarRange();g[C*4]=Y[0]/Q,g[C*4+1]=Y[1]/Q,g[C*4+2]=B.getFilterMode()}e.SSBO.addEntry("SCTCMatrix","mat4x4<f32>"),e.SSBO.addEntry("planeNormals","mat4x4<f32>"),e.SSBO.addEntry("shade","vec4<f32>"),e.SSBO.addEntry("tstep","vec4<f32>"),e.SSBO.addEntry("spacing","vec4<f32>"),e.SSBO.addEntry("ipScalarRange","vec4<f32>"),e.SSBO.setAllInstancesFromArray("SCTCMatrix",o),e.SSBO.setAllInstancesFromArray("planeNormals",u),e.SSBO.setAllInstancesFromArray("shade",f),e.SSBO.setAllInstancesFromArray("tstep",c),e.SSBO.setAllInstancesFromArray("spacing",l),e.SSBO.setAllInstancesFromArray("ipScalarRange",g),e.SSBO.send(a),e.componentSSBO.clearData(),e.componentSSBO.setNumberOfInstances(e.numRows);const p=new Float64Array(e.numRows),y=new Float64Array(e.numRows),h=new Float64Array(e.numRows),d=new Float64Array(e.numRows),x=new Float64Array(e.numRows),S=new Float64Array(e.numRows),v=new Float64Array(e.numRows),T=new Float64Array(e.numRows);let w=0;for(let C=0;C<e.volumes.length;C++){const m=e.volumes[C].getRenderable(),B=m.getMapper(),M=m.getProperty(),D=B.getInputData(),b=(D.getPointData()&&D.getPointData().getScalars()).getNumberOfComponents(),$=M.getIndependentComponents(),Q=e.textureViews[C+4].getTexture().getFormat(),Y=Ie.getDetailsFromTextureFormat(Q),Z=Y.elementSize===2&&Y.sampleType==="float",se={scale:[255],offset:[0]};Z&&(se.scale[0]=1);for(let W=0;W<b;W++){const F=$?W:0,j=se.scale[W],P=M.getScalarOpacity(F).getRange(),Ee=j/(P[1]-P[0]),gt=(se.offset[W]-P[0])/(P[1]-P[0]);d[w]=gt,h[w]=Ee;const ae=M.getRGBTransferFunction(F).getRange();if(y[w]=(se.offset[W]-ae[0])/(ae[1]-ae[0]),p[w]=j/(ae[1]-ae[0]),M.getUseGradientOpacity(F)){const Ce=M.getGradientOpacityMinimumOpacity(F),we=M.getGradientOpacityMaximumOpacity(F);x[w]=Ce,S[w]=we;const Je=[M.getGradientOpacityMinimumValue(F),M.getGradientOpacityMaximumValue(F)];T[w]=j*(we-Ce)/(Je[1]-Je[0]),v[w]=-Je[0]*(we-Ce)/(Je[1]-Je[0])+Ce}else x[w]=1,S[w]=1,T[w]=0,v[w]=1;w++}}e.componentSSBO.addEntry("cScale","f32"),e.componentSSBO.addEntry("cShift","f32"),e.componentSSBO.addEntry("oScale","f32"),e.componentSSBO.addEntry("oShift","f32"),e.componentSSBO.addEntry("goShift","f32"),e.componentSSBO.addEntry("goScale","f32"),e.componentSSBO.addEntry("gomin","f32"),e.componentSSBO.addEntry("gomax","f32"),e.componentSSBO.setAllInstancesFromArray("cScale",p),e.componentSSBO.setAllInstancesFromArray("cShift",y),e.componentSSBO.setAllInstancesFromArray("oScale",h),e.componentSSBO.setAllInstancesFromArray("oShift",d),e.componentSSBO.setAllInstancesFromArray("goScale",T),e.componentSSBO.setAllInstancesFromArray("goShift",v),e.componentSSBO.setAllInstancesFromArray("gomin",x),e.componentSSBO.setAllInstancesFromArray("gomax",S),e.componentSSBO.send(a)};const n=t.updateBuffers;t.updateBuffers=()=>{n();let a=e.volumes[0].getRenderable().getMapper().getSampleDistance();for(let s=0;s<e.volumes.length;s++){const u=e.volumes[s].getRenderable().getMapper().getSampleDistance();u<a&&(a=u)}e.sampleDist!==a&&(e.sampleDist=a,e.UBO.setValue("SampleDistance",a),e.UBO.sendIfNeeded(e.device));for(let s=0;s<e.volumes.length;s++){const c=e.volumes[s].getRenderable().getMapper().getInputData(),f=e.device.getTextureManager().getTextureForImageData(c);if(!e.textureViews[s+4]||e.textureViews[s+4].getTexture()!==f){const l=f.createView(`volTexture${s}`);e.textureViews[s+4]=l}}if(e.volumes.length<e.lastVolumeLength)for(let s=e.volumes.length;s<e.lastVolumeLength;s++)e.textureViews.pop();e.lastVolumeLength=e.volumes.length,t.updateLUTImage(e.device),t.updateSSBO(e.device),e.clampSampler||(e.clampSampler=Co.newInstance({label:"clampSampler"}),e.clampSampler.create(e.device,{minFilter:"linear",magFilter:"linear"}))},t.computePipelineHash=()=>{e.pipelineHash="volfsq";for(let a=0;a<e.volumes.length;a++){const s=e.volumes[a].getRenderable().getMapper().getBlendMode();e.pipelineHash+=`${s}`}},t.setVolumes=a=>{if(!e.volumes||e.volumes.length!==a.length){e.volumes=[...a],t.modified();return}for(let s=0;s<a.length;s++)if(a[s]!==e.volumes[s]){e.volumes=[...a],t.modified();return}};const r=t.getBindables;t.getBindables=()=>{const a=r();return a.push(e.componentSSBO),a.push(e.clampSampler),a}}const hE={volumes:null,rowLength:1024,lastVolumeLength:0};function T0(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,hE,n),wr.extend(t,e,n),e.fragmentShaderTemplate=gE,e.UBO=Yn.newInstance({label:"mapperUBO"}),e.UBO.addEntry("SampleDistance","f32"),e.SSBO=Oi.newInstance({label:"volumeSSBO"}),e.componentSSBO=Oi.newInstance({label:"componentSSBO"}),e.lutBuildTime={},_.obj(e.lutBuildTime,{mtime:0}),pE(t,e)}const dE=_.newInstance(T0,"vtkWebGPUVolumePassFSQ");var vE={newInstance:dE,extend:T0};const{Representation:yE}=mr,{BufferUsage:au,PrimitiveTypes:TE}=mn,ti=[[0,4,6],[0,6,2],[1,3,7],[1,7,5],[0,5,4],[0,1,5],[2,6,7],[2,7,3],[0,3,1],[0,2,3],[4,5,7],[4,7,6]],xE=`
- //VTK::Renderer::Dec
- //VTK::Select::Dec
- //VTK::VolumePass::Dec
- //VTK::TCoord::Dec
- //VTK::RenderEncoder::Dec
- //VTK::Mapper::Dec
- //VTK::IOStructs::Dec
- @fragment
- fn main(
- //VTK::IOStructs::Input
- )
- //VTK::IOStructs::Output
- {
- var output : fragmentOutput;
- //VTK::Select::Impl
- //VTK::TCoord::Impl
- //VTK::VolumePass::Impl
- // use the maximum (closest) of the current value and the zbuffer
- // the blend func will then take the min to find the farthest stop value
- var stopval: f32 = max(input.fragPos.z, textureLoad(opaquePassDepthTexture, vec2<i32>(i32(input.fragPos.x), i32(input.fragPos.y)), 0));
- //VTK::RenderEncoder::Impl
- return output;
- }
- `,SE=`
- //VTK::Renderer::Dec
- //VTK::Mapper::Dec
- //VTK::TCoord::Dec
- //VTK::RenderEncoder::Dec
- //VTK::IOStructs::Dec
- @fragment
- fn main(
- //VTK::IOStructs::Input
- )
- //VTK::IOStructs::Output
- {
- var output: fragmentOutput;
- var computedColor: vec4<f32> = textureSample(volumePassColorTexture,
- volumePassColorTextureSampler, mapperUBO.tscale*input.tcoordVS);
- //VTK::RenderEncoder::Impl
- return output;
- }
- `;function CE(t,e){e.classHierarchy.push("vtkWebGPUVolumePass"),t.initialize=n=>{e._clearEncoder||t.createClearEncoder(n),e._mergeEncoder||t.createMergeEncoder(n),e._copyEncoder||t.createCopyEncoder(n),e._depthRangeEncoder||t.createDepthRangeEncoder(n),e.fullScreenQuad||(e.fullScreenQuad=vE.newInstance(),e.fullScreenQuad.setDevice(n.getDevice()),e.fullScreenQuad.setTextureViews([...e._depthRangeEncoder.getColorTextureViews()])),e._volumeCopyQuad||(e._volumeCopyQuad=wr.newInstance(),e._volumeCopyQuad.setPipelineHash("volpassfsq"),e._volumeCopyQuad.setDevice(n.getDevice()),e._volumeCopyQuad.setFragmentShaderTemplate(SE),e._copyUBO=Yn.newInstance({label:"mapperUBO"}),e._copyUBO.addEntry("tscale","vec2<f32>"),e._volumeCopyQuad.setUBO(e._copyUBO),e._volumeCopyQuad.setTextureViews([e._colorTextureView]))},t.traverse=(n,r)=>{if(e.deleted)return;e._currentParent=r,t.initialize(r),t.computeTiming(r),t.renderDepthBounds(n,r),e._firstGroup=!0;const a=r.getDevice(),s=a.getHandle().limits.maxSampledTexturesPerShaderStage-4;if(e.volumes.length>s){const i=n.getRenderable().getActiveCamera().getPosition(),o=[];for(let l=0;l<e.volumes.length;l++){const g=e.volumes[l].getRenderable().getBounds(),p=[.5*(g[1]+g[0]),.5*(g[3]+g[2]),.5*(g[5]+g[4])];o[l]=Yt(p,i)}const u=[...Array(e.volumes.length).keys()];u.sort((l,g)=>o[g]-o[l]);let c=[],f=u.length%s;for(let l=0;l<u.length;l++)c.push(e.volumes[u[l]]),c.length>=f&&(t.rayCastPass(r,n,c),c=[],f=s,e._firstGroup=!1)}else t.rayCastPass(r,n,e.volumes);if(e._volumeCopyQuad.setWebGPURenderer(n),e._useSmallViewport){const i=e._colorTextureView.getTexture().getWidth(),o=e._colorTextureView.getTexture().getHeight();e._copyUBO.setArray("tscale",[e._smallViewportWidth/i,e._smallViewportHeight/o])}else e._copyUBO.setArray("tscale",[1,1]);e._copyUBO.sendIfNeeded(a),e._copyEncoder.setColorTextureView(0,e.colorTextureView),e._copyEncoder.attachTextureViews(),e._copyEncoder.begin(r.getCommandEncoder()),n.scissorAndViewport(e._copyEncoder),e._volumeCopyQuad.prepareAndDraw(e._copyEncoder),e._copyEncoder.end()},t.delete=_.chain(()=>{e._animationRateSubscription&&(e._animationRateSubscription.unsubscribe(),e._animationRateSubscription=null)},t.delete),t.computeTiming=n=>{const r=n.getRenderable().getInteractor();if(e._lastScale==null){const a=e.volumes[0].getRenderable().getMapper();e._lastScale=a.getInitialInteractionScale()||1}e._useSmallViewport=!1,r.isAnimating()&&e._lastScale>1.5&&(e._useSmallViewport=!0),e._colorTexture.resize(n.getCanvas().width,n.getCanvas().height),e._animationRateSubscription||(e._animationRateSubscription=r.onAnimationFrameRateUpdate(()=>{const a=e.volumes[0].getRenderable().getMapper();if(a.getAutoAdjustSampleDistances()){const s=r.getRecentAnimationFrameRate(),i=e._lastScale*r.getDesiredUpdateRate()/s;e._lastScale=i,e._lastScale>400&&(e._lastScale=400)}else e._lastScale=a.getImageSampleDistance()*a.getImageSampleDistance();e._lastScale<1.5&&(e._lastScale=1.5)}))},t.rayCastPass=(n,r,a)=>{const s=e._firstGroup?e._clearEncoder:e._mergeEncoder;s.attachTextureViews(),s.begin(n.getCommandEncoder());let i=e._colorTextureView.getTexture().getWidth(),o=e._colorTextureView.getTexture().getHeight();if(e._useSmallViewport){const u=n.getCanvas(),c=1/Math.sqrt(e._lastScale);e._smallViewportWidth=Math.ceil(c*u.width),e._smallViewportHeight=Math.ceil(c*u.height),i=e._smallViewportWidth,o=e._smallViewportHeight}s.getHandle().setViewport(0,0,i,o,0,1),s.getHandle().setScissorRect(0,0,i,o),e.fullScreenQuad.setWebGPURenderer(r),e.fullScreenQuad.setVolumes(a),e.fullScreenQuad.prepareAndDraw(s),s.end()},t.renderDepthBounds=(n,r)=>{t.updateDepthPolyData(n);const a=e._boundsPoly,s=a.getPoints(),i=a.getPolys();let o={hash:`vp${i.getMTime()}`,usage:au.Index,cells:i,numberOfPoints:s.getNumberOfPoints(),primitiveType:TE.Triangles,representation:yE.SURFACE};const u=r.getDevice().getBufferManager().getBuffer(o);e._mapper.getVertexInput().setIndexBuffer(u),o={usage:au.PointArray,format:"float32x4",hash:`vp${s.getMTime()}${i.getMTime()}`,dataArray:s,indexBuffer:u,packExtra:!0};const c=r.getDevice().getBufferManager().getBuffer(o);e._mapper.getVertexInput().addBuffer(c,["vertexBC"]),e._mapper.setNumberOfVertices(c.getSizeInBytes()/c.getStrideInBytes()),t.drawDepthRange(n,r)},t.updateDepthPolyData=n=>{let r=!1;for(let f=0;f<e.volumes.length;f++){const l=e.volumes[f].getMTime();(!e._lastMTimes[f]||l!==e._lastMTimes[f])&&(r=!0,e._lastMTimes[f]=l)}const a=n.getStabilizedTime();if((e._lastMTimes.length<=e.volumes.length||a!==e._lastMTimes[e.volumes.length])&&(r=!0,e._lastMTimes[e.volumes.length]=a),!r)return;const s=n.getStabilizedCenterByReference(),i=e.volumes.length*8,o=new Float64Array(i*3),u=e.volumes.length*12,c=new Uint16Array(u*4);for(let f=0;f<e.volumes.length;f++){e.volumes[f].getBoundingCubePoints(o,f*24);let l=f*12*4;const g=f*8;for(let p=0;p<12;p++)c[l++]=3,c[l++]=g+ti[p][0],c[l++]=g+ti[p][1],c[l++]=g+ti[p][2]}for(let f=0;f<o.length;f+=3)o[f]-=s[0],o[f+1]-=s[1],o[f+2]-=s[2];e._boundsPoly.getPoints().setData(o,3),e._boundsPoly.getPoints().modified(),e._boundsPoly.getPolys().setData(c,1),e._boundsPoly.getPolys().modified(),e._boundsPoly.modified()},t.drawDepthRange=(n,r)=>{e._depthRangeTexture.resizeToMatch(e.colorTextureView.getTexture()),e._depthRangeTexture2.resizeToMatch(e.colorTextureView.getTexture()),e._depthRangeEncoder.attachTextureViews(),t.setCurrentOperation("volumeDepthRangePass"),n.setRenderEncoder(e._depthRangeEncoder),n.volumeDepthRangePass(!0),e._mapper.setWebGPURenderer(n),e._mapper.prepareToDraw(e._depthRangeEncoder),e._mapper.registerDrawCallback(e._depthRangeEncoder),n.volumeDepthRangePass(!1)},t.createDepthRangeEncoder=n=>{const r=n.getDevice();e._depthRangeEncoder=cn.newInstance({label:"VolumePass DepthRange"}),e._depthRangeEncoder.setPipelineHash("volr"),e._depthRangeEncoder.setReplaceShaderCodeFunction(i=>{const o=i.getShaderDescription("fragment");o.addOutput("vec4<f32>","outColor1"),o.addOutput("vec4<f32>","outColor2");let u=o.getCode();u=oe.substitute(u,"//VTK::RenderEncoder::Impl",["output.outColor1 = vec4<f32>(input.fragPos.z, 0.0, 0.0, 0.0);","output.outColor2 = vec4<f32>(stopval, 0.0, 0.0, 0.0);"]).result,o.setCode(u)}),e._depthRangeEncoder.setDescription({colorAttachments:[{view:null,clearValue:[0,0,0,0],loadOp:"clear",storeOp:"store"},{view:null,clearValue:[1,1,1,1],loadOp:"clear",storeOp:"store"}]}),e._depthRangeEncoder.setPipelineSettings({primitive:{cullMode:"none"},fragment:{targets:[{format:"r16float",blend:{color:{srcFactor:"one",dstFactor:"one",operation:"max"},alpha:{srcfactor:"one",dstFactor:"one",operation:"max"}}},{format:"r16float",blend:{color:{srcFactor:"one",dstFactor:"one",operation:"min"},alpha:{srcfactor:"one",dstFactor:"one",operation:"min"}}}]}}),e._depthRangeTexture=Zt.newInstance({label:"volumePassMaxDepth"}),e._depthRangeTexture.create(r,{width:n.getCanvas().width,height:n.getCanvas().height,format:"r16float",usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING});const a=e._depthRangeTexture.createView("maxTexture");e._depthRangeEncoder.setColorTextureView(0,a),e._depthRangeTexture2=Zt.newInstance({label:"volumePassDepthMin"}),e._depthRangeTexture2.create(r,{width:n.getCanvas().width,height:n.getCanvas().height,format:"r16float",usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING});const s=e._depthRangeTexture2.createView("minTexture");e._depthRangeEncoder.setColorTextureView(1,s),e._mapper.setDevice(n.getDevice()),e._mapper.setTextureViews([e.depthTextureView])},t.createClearEncoder=n=>{e._colorTexture=Zt.newInstance({label:"volumePassColor"}),e._colorTexture.create(n.getDevice(),{width:n.getCanvas().width,height:n.getCanvas().height,format:"bgra8unorm",usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_SRC}),e._colorTextureView=e._colorTexture.createView("volumePassColorTexture"),e._colorTextureView.addSampler(n.getDevice(),{minFilter:"linear",magFilter:"linear"}),e._clearEncoder=cn.newInstance({label:"VolumePass Clear"}),e._clearEncoder.setColorTextureView(0,e._colorTextureView),e._clearEncoder.setDescription({colorAttachments:[{view:null,clearValue:[0,0,0,0],loadOp:"clear",storeOp:"store"}]}),e._clearEncoder.setPipelineHash("volpf"),e._clearEncoder.setPipelineSettings({primitive:{cullMode:"none"},fragment:{targets:[{format:"bgra8unorm",blend:{color:{srcFactor:"src-alpha",dstFactor:"one-minus-src-alpha"},alpha:{srcfactor:"one",dstFactor:"one-minus-src-alpha"}}}]}})},t.createCopyEncoder=n=>{e._copyEncoder=cn.newInstance({label:"volumePassCopy"}),e._copyEncoder.setDescription({colorAttachments:[{view:null,loadOp:"load",storeOp:"store"}]}),e._copyEncoder.setPipelineHash("volcopypf"),e._copyEncoder.setPipelineSettings({primitive:{cullMode:"none"},fragment:{targets:[{format:"rgba16float",blend:{color:{srcFactor:"one",dstFactor:"one-minus-src-alpha"},alpha:{srcfactor:"one",dstFactor:"one-minus-src-alpha"}}}]}})},t.createMergeEncoder=n=>{e._mergeEncoder=cn.newInstance({label:"volumePassMerge"}),e._mergeEncoder.setColorTextureView(0,e._colorTextureView),e._mergeEncoder.setDescription({colorAttachments:[{view:null,loadOp:"load",storeOp:"store"}]}),e._mergeEncoder.setReplaceShaderCodeFunction(r=>{const a=r.getShaderDescription("fragment");a.addOutput("vec4<f32>","outColor");let s=a.getCode();s=oe.substitute(s,"//VTK::RenderEncoder::Impl",["output.outColor = vec4<f32>(computedColor.rgb, computedColor.a);"]).result,a.setCode(s)}),e._mergeEncoder.setPipelineHash("volpf"),e._mergeEncoder.setPipelineSettings({primitive:{cullMode:"none"},fragment:{targets:[{format:"bgra8unorm",blend:{color:{srcFactor:"src-alpha",dstFactor:"one-minus-src-alpha"},alpha:{srcfactor:"one",dstFactor:"one-minus-src-alpha"}}}]}})},t.setVolumes=n=>{if(!e.volumes||e.volumes.length!==n.length){e.volumes=[...n],t.modified();return}for(let r=0;r<n.length;r++)if(n[r]!==e.volumes[r]){e.volumes=[...n],t.modified();return}}}const wE={colorTextureView:null,depthTextureView:null,volumes:null};function x0(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,wE,n),gn.extend(t,e,n),e._mapper=So.newInstance(),e._mapper.setFragmentShaderTemplate(xE),e._mapper.getShaderReplacements().set("replaceShaderVolumePass",(r,a,s)=>{a.getShaderDescription("fragment").addBuiltinInput("vec4<f32>","@builtin(position) fragPos")}),e._boundsPoly=zt.newInstance(),e._lastMTimes=[],_.setGet(t,e,["colorTextureView","depthTextureView"]),CE(t,e)}const _E=_.newInstance(x0,"vtkWebGPUVolumePass");var EE={newInstance:_E,extend:x0};const RE=`
- //VTK::Mapper::Dec
- //VTK::TCoord::Dec
- //VTK::RenderEncoder::Dec
- //VTK::IOStructs::Dec
- @fragment
- fn main(
- //VTK::IOStructs::Input
- )
- //VTK::IOStructs::Output
- {
- var output: fragmentOutput;
- var computedColor: vec4<f32> = clamp(textureSampleLevel(opaquePassColorTexture, finalPassSampler, input.tcoordVS, 0.0),vec4<f32>(0.0),vec4<f32>(1.0));
- //VTK::RenderEncoder::Impl
- return output;
- }
- `;function OE(t,e){e.classHierarchy.push("vtkForwardPass"),t.traverse=function(n){let r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;if(e.deleted)return;e._currentParent=r,t.setCurrentOperation("buildPass"),n.traverse(t),e.opaquePass||(e.opaquePass=iE.newInstance());const a=n.getRenderable().getNumberOfLayers(),s=n.getChildren();for(let i=0;i<a;i++)for(let o=0;o<s.length;o++){const u=s[o],c=n.getRenderable().getRenderers()[o];c.getDraw()&&c.getLayer()===i&&(e.opaqueActorCount=0,e.translucentActorCount=0,e.volumes=[],t.setCurrentOperation("queryPass"),u.traverse(t),t.setCurrentOperation("cameraPass"),u.traverse(t),e.opaquePass.traverse(u,n),e.translucentActorCount>0&&(e.translucentPass||(e.translucentPass=lE.newInstance()),e.translucentPass.setColorTextureView(e.opaquePass.getColorTextureView()),e.translucentPass.setDepthTextureView(e.opaquePass.getDepthTextureView()),e.translucentPass.traverse(u,n)),e.volumes.length>0&&(e.volumePass||(e.volumePass=EE.newInstance()),e.volumePass.setColorTextureView(e.opaquePass.getColorTextureView()),e.volumePass.setDepthTextureView(e.opaquePass.getDepthTextureView()),e.volumePass.setVolumes(e.volumes),e.volumePass.traverse(u,n)),t.finalPass(n,u))}},t.finalPass=(n,r)=>{e._finalBlitEncoder||t.createFinalBlitEncoder(n),e._finalBlitOutputTextureView.createFromTextureHandle(n.getCurrentTexture(),{depth:1,format:n.getPresentationFormat()}),e._finalBlitEncoder.attachTextureViews(),e._finalBlitEncoder.begin(n.getCommandEncoder()),r.scissorAndViewport(e._finalBlitEncoder),e._fullScreenQuad.prepareAndDraw(e._finalBlitEncoder),e._finalBlitEncoder.end()},t.createFinalBlitEncoder=n=>{e._finalBlitEncoder=cn.newInstance({label:"forwardPassBlit"}),e._finalBlitEncoder.setDescription({colorAttachments:[{view:null,loadOp:"load",storeOp:"store"}]}),e._finalBlitEncoder.setPipelineHash("fpf"),e._finalBlitEncoder.setPipelineSettings({primitive:{cullMode:"none"},fragment:{targets:[{format:n.getPresentationFormat(),blend:{color:{srcFactor:"src-alpha",dstFactor:"one-minus-src-alpha"},alpha:{srcfactor:"one",dstFactor:"one-minus-src-alpha"}}}]}}),e._fsqSampler=Co.newInstance({label:"finalPassSampler"}),e._fsqSampler.create(n.getDevice(),{minFilter:"linear",magFilter:"linear"}),e._fullScreenQuad=wr.newInstance(),e._fullScreenQuad.setDevice(n.getDevice()),e._fullScreenQuad.setPipelineHash("fpfsq"),e._fullScreenQuad.setTextureViews([e.opaquePass.getColorTextureView()]),e._fullScreenQuad.setAdditionalBindables([e._fsqSampler]),e._fullScreenQuad.setFragmentShaderTemplate(RE),e._finalBlitOutputTextureView=Fg.newInstance(),e._finalBlitEncoder.setColorTextureView(0,e._finalBlitOutputTextureView)},t.incrementOpaqueActorCount=()=>e.opaqueActorCount++,t.incrementTranslucentActorCount=()=>e.translucentActorCount++,t.addVolume=n=>{e.volumes.push(n)}}const DE={opaqueActorCount:0,translucentActorCount:0,volumes:null,opaqueRenderEncoder:null,translucentPass:null,volumePass:null};function S0(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,DE,n),gn.extend(t,e,n),_.setGet(t,e,["opaquePass","translucentPass","volumePass"]),OE(t,e)}const mE=_.newInstance(S0,"vtkForwardPass");var ME={newInstance:mE,extend:S0};const{VtkDataTypes:$n}=_e;function VE(t,e){e.classHierarchy.push("vtkWebGPUTextureManager");function n(a){if(a.imageData){a.dataArray=a.imageData.getPointData().getScalars(),a.time=a.dataArray.getMTime(),a.nativeArray=a.dataArray.getData();const s=a.imageData.getDimensions();switch(a.width=s[0],a.height=s[1],a.depth=s[2],a.dataArray.getNumberOfComponents()){case 1:a.format="r";break;case 2:a.format="rg";break;case 3:case 4:default:a.format="rgba";break}switch(a.dataArray.getDataType()){case $n.UNSIGNED_CHAR:a.format+="8unorm";break;case $n.FLOAT:case $n.UNSIGNED_INT:case $n.INT:case $n.DOUBLE:case $n.UNSIGNED_SHORT:case $n.SHORT:default:a.format+="16float";break}}a.image&&(a.width=a.image.width,a.height=a.image.height,a.depth=1,a.format="rgba8unorm"),a.jsImageData&&(a.width=a.jsImageData.width,a.height=a.jsImageData.height,a.depth=1,a.format="rgba8unorm",a.flip=!0,a.nativeArray=a.jsImageData.data),a.canvas&&(a.width=a.canvas.width,a.height=a.canvas.height,a.depth=1,a.format="rgba8unorm",a.flip=!0,a.usage=GPUTextureUsage.TEXTURE_BINDING|GPUTextureUsage.COPY_DST|GPUTextureUsage.RENDER_ATTACHMENT)}function r(a){const s=Zt.newInstance();return s.create(e.device,{width:a.width,height:a.height,depth:a.depth,format:a.format,usage:a.usage,mipLevel:a.mipLevel}),(a.nativeArray||a.image||a.canvas)&&s.writeImageData(a),s}t.getTexture=a=>a.hash?e.device.getCachedObject(a.hash,r,a):r(a),t.getTextureForImageData=a=>{const s={time:a.getMTime()};return s.imageData=a,n(s),s.hash=s.time+s.format+s.mipLevel,e.device.getTextureManager().getTexture(s)},t.getTextureForVTKTexture=a=>{const s={time:a.getMTime()};return a.getInputData()?s.imageData=a.getInputData():a.getImage()?s.image=a.getImage():a.getJsImageData()?s.jsImageData=a.getJsImageData():a.getCanvas()&&(s.canvas=a.getCanvas()),n(s),s.mipLevel=a.getMipLevel(),s.hash=s.time+s.format+s.mipLevel,e.device.getTextureManager().getTexture(s)}}const LE={handle:null,device:null};function C0(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,LE,n),_.obj(t,e),_.setGet(t,e,["device"]),VE(t,e)}const BE=_.newInstance(C0);var kE={newInstance:BE,extend:C0};class FE extends Map{constructor(){super(),this.registry=new FinalizationRegistry(e=>{const n=super.get(e);n&&n.deref&&n.deref()===void 0&&super.delete(e)})}getValue(e){const n=super.get(e);if(n){const r=n.deref();if(r!==void 0)return r;super.delete(e)}}setValue(e,n){let r;return n&&typeof n=="object"&&(r=new WeakRef(n),this.registry.register(n,e),super.set(e,r)),r}}function UE(t,e){e.classHierarchy.push("vtkWebGPUDevice"),t.initialize=n=>{e.handle=n},t.createCommandEncoder=()=>e.handle.createCommandEncoder(),t.submitCommandEncoder=n=>{e.handle.queue.submit([n.finish()])},t.getShaderModule=n=>e.shaderCache.getShaderModule(n),t.getBindGroupLayout=n=>{if(!n.entries)return null;for(let s=0;s<n.entries.length;s++){const i=n.entries[s];i.binding=i.binding||0,i.visibility=i.visibility||GPUShaderStage.VERTEX|GPUShaderStage.FRAGMENT}const r=JSON.stringify(n);for(let s=0;s<e.bindGroupLayouts.length;s++)if(e.bindGroupLayouts[s].sval===r)return e.bindGroupLayouts[s].layout;const a=e.handle.createBindGroupLayout(n);return e.bindGroupLayouts.push({sval:r,layout:a}),a},t.getBindGroupLayoutDescription=n=>{for(let r=0;r<e.bindGroupLayouts.length;r++)if(e.bindGroupLayouts[r].layout===n)return e.bindGroupLayouts[r].sval;return vtkErrorMacro("layout not found"),console.trace(),null},t.getPipeline=n=>n in e.pipelines?e.pipelines[n]:null,t.createPipeline=(n,r)=>{r.initialize(t,n),e.pipelines[n]=r},t.onSubmittedWorkDone=()=>e.handle.queue.onSubmittedWorkDone(),t.hasCachedObject=n=>e.objectCache.getValue(n),t.getCachedObject=function(n,r){if(!n)return vtkErrorMacro("attempt to cache an object without a hash"),null;const a=e.objectCache.getValue(n);if(a)return a;for(var s=arguments.length,i=new Array(s>2?s-2:0),o=2;o<s;o++)i[o-2]=arguments[o];const u=r(...i);return e.objectCache.setValue(n,u),u}}const bE={handle:null,pipelines:null,shaderCache:null,bindGroupLayouts:null,bufferManager:null,textureManager:null};function w0(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,bE,n),qe(t,e),He(t,e,["handle"]),lt(t,e,["bufferManager","shaderCache","textureManager"]),e.objectCache=new FE,e.shaderCache=oe.newInstance(),e.shaderCache.setDevice(t),e.bindGroupLayouts=[],e.bufferManager=mn.newInstance(),e.bufferManager.setDevice(t),e.textureManager=kE.newInstance(),e.textureManager.setDevice(t),e.pipelines={},UE(t,e)}const NE=De(w0,"vtkWebGPUDevice");var GE={newInstance:NE,extend:w0};function $E(t,e){e.classHierarchy.push("vtkWebGPUHardwareSelectionPass"),t.traverse=(n,r)=>{if(e.deleted)return;e._currentParent=null,t.setCurrentOperation("buildPass"),n.traverse(t);const a=n.getDevice();if(e.selectionRenderEncoder)e.colorTexture.resize(n.getCanvas().width,n.getCanvas().height),e.depthTexture.resizeToMatch(e.colorTexture);else{t.createRenderEncoder(),e.colorTexture=Zt.newInstance({label:"hardwareSelectorColor"}),e.colorTexture.create(a,{width:n.getCanvas().width,height:n.getCanvas().height,format:"rgba32uint",usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.COPY_SRC});const s=e.colorTexture.createView("hardwareSelectColorTexture");e.selectionRenderEncoder.setColorTextureView(0,s),e.depthTexture=Zt.newInstance({label:"hardwareSelectorDepth"}),e.depthTexture.create(a,{width:n.getCanvas().width,height:n.getCanvas().height,format:"depth32float",usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.COPY_SRC});const i=e.depthTexture.createView("hardwareSelectDepthTexture");e.selectionRenderEncoder.setDepthTextureView(i)}e.selectionRenderEncoder.attachTextureViews(),r.setRenderEncoder(e.selectionRenderEncoder),t.setCurrentOperation("cameraPass"),r.traverse(t),t.setCurrentOperation("opaquePass"),r.traverse(t)},t.createRenderEncoder=()=>{e.selectionRenderEncoder=cn.newInstance({label:"HardwareSelectionPass"}),e.selectionRenderEncoder.setPipelineHash("sel"),e.selectionRenderEncoder.setReplaceShaderCodeFunction(r=>{const a=r.getShaderDescription("fragment");a.addOutput("vec4<u32>","outColor");let s=a.getCode();s=oe.substitute(s,"//VTK::RenderEncoder::Impl",["output.outColor = vec4<u32>(mapperUBO.PropID, compositeID, 0u, 0u);"]).result,a.setCode(s)});const n=e.selectionRenderEncoder.getDescription();n.colorAttachments[0].clearValue=[0,0,0,0],e.selectionRenderEncoder.setPipelineSettings({primitive:{cullMode:"none"},depthStencil:{depthWriteEnabled:!0,depthCompare:"greater",format:"depth32float"},fragment:{targets:[{format:"rgba32uint",blend:void 0}]}})}}const WE={selectionRenderEncoder:null,colorTexture:null,depthTexture:null};function _0(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,WE,n),gn.extend(t,e,n),_.get(t,e,["colorTexture","depthTexture"]),$E(t,e)}const zE=_.newInstance(_0,"vtkWebGPUHardwareSelectionPass");var AE={newInstance:zE,extend:_0};const{SelectionContent:HE,SelectionField:su}=Cs,{FieldAssociations:iu}=Zn,{vtkErrorMacro:E0}=_;function jE(t){return`${t.propID} ${t.compositeID}`}function ou(t,e,n,r){const a=((n.height-e-1)*n.colorBufferWidth+t)*4+r;return n.colorValues[a]}function fr(t,e,n,r){const a=n<0?0:n;if(a===0){if(r[0]=e[0],r[1]=e[1],e[0]<0||e[0]>=t.width||e[1]<0||e[1]>=t.height)return null;const u=ou(e[0],e[1],t,0);if(u<=0)return null;const c={};c.propID=u;let f=ou(e[0],e[1],t,1);if((f<0||f>16777215)&&(f=0),c.compositeID=f,t.captureZValues){const l=(t.height-e[1]-1)*t.zbufferBufferWidth+e[0];c.zValue=t.depthValues[l],c.zValue=t.webGPURenderer.convertToOpenGLDepth(c.zValue),c.displayPosition=e}return c}const s=[e[0],e[1]],i=[0,0];let o=fr(t,e,0,r);if(o)return o;for(let u=1;u<a;++u){for(let c=s[1]>u?s[1]-u:0;c<=s[1]+u;++c)if(i[1]=c,s[0]>=u&&(i[0]=s[0]-u,o=fr(t,i,0,r),o)||(i[0]=s[0]+u,o=fr(t,i,0,r),o))return o;for(let c=s[0]>=u?s[0]-(u-1):0;c<=s[0]+(u-1);++c)if(i[0]=c,s[1]>=u&&(i[1]=s[1]-u,o=fr(t,i,0,r),o)||(i[1]=s[1]+u,o=fr(t,i,0,r),o))return o}return r[0]=e[0],r[1]=e[1],null}function KE(t,e,n){const r=[];let a=0;return e.forEach((s,i)=>{const o=Cs.newInstance();switch(o.setContentType(HE.INDICES),t){case iu.FIELD_ASSOCIATION_CELLS:o.setFieldType(su.CELL);break;case iu.FIELD_ASSOCIATION_POINTS:o.setFieldType(su.POINT);break;default:E0("Unknown field association")}o.getProperties().propID=s.info.propID;const u=n.webGPURenderer.getPropFromID(s.info.propID);o.getProperties().prop=u.getRenderable(),o.getProperties().compositeID=s.info.compositeID,o.getProperties().pixelCount=s.pixelCount,n.captureZValues&&(o.getProperties().displayPosition=[s.info.displayPosition[0],s.info.displayPosition[1],s.info.zValue],o.getProperties().worldPosition=n.webGPURenderWindow.displayToWorld(s.info.displayPosition[0],s.info.displayPosition[1],s.info.zValue,n.renderer)),o.setSelectionList(s.attributeIDs),r[a]=o,a++}),r}function PE(t,e,n,r,a){const s=Math.floor(e),i=Math.floor(n),o=Math.floor(r),u=Math.floor(a),c=new Map,f=[0,0];for(let l=i;l<=u;l++)for(let g=s;g<=o;g++){const y=fr(t,[g,l],0,f);if(y){const h=jE(y);if(!c.has(h))c.set(h,{info:y,pixelCount:1,attributeIDs:[y.attributeID]});else{const d=c.get(h);d.pixelCount++,t.captureZValues&&y.zValue<d.info.zValue&&(d.info=y),d.attributeIDs.indexOf(y.attributeID)===-1&&d.attributeIDs.push(y.attributeID)}}}return KE(t.fieldAssociation,c,t)}function XE(t,e){e.classHierarchy.push("vtkWebGPUHardwareSelector"),t.endSelection=()=>{e.WebGPURenderer.setSelector(null)},t.getSourceDataAsync=async n=>{if(!n||!e._WebGPURenderWindow)return E0("Renderer and view must be set before calling Select."),!1;e._WebGPURenderWindow.getRenderable().preRender(),e._WebGPURenderWindow.getInitialized()||(e._WebGPURenderWindow.initialize(),await new Promise(p=>{e._WebGPURenderWindow.onInitialized(p)}));const r=e._WebGPURenderWindow.getViewNodeFor(n);if(!r)return!1;const a=r.getSuppressClear();r.setSuppressClear(!0),e._selectionPass.traverse(e._WebGPURenderWindow,r),r.setSuppressClear(a);const s=e._WebGPURenderWindow.getDevice(),i=e._selectionPass.getColorTexture(),o=e._selectionPass.getDepthTexture(),u={area:[0,0,i.getWidth()-1,i.getHeight()-1],captureZValues:e.captureZValues,fieldAssociation:e.fieldAssociation,renderer:n,webGPURenderer:r,webGPURenderWindow:e._WebGPURenderWindow,width:i.getWidth(),height:i.getHeight()};u.colorBufferWidth=16*Math.floor((u.width+15)/16),u.colorBufferSizeInBytes=u.colorBufferWidth*u.height*4*4;const c=_r.newInstance({label:"hardwareSelectColorBuffer"});c.setDevice(s),c.create(u.colorBufferSizeInBytes,GPUBufferUsage.MAP_READ|GPUBufferUsage.COPY_DST);const f=e._WebGPURenderWindow.getCommandEncoder();f.copyTextureToBuffer({texture:i.getHandle()},{buffer:c.getHandle(),bytesPerRow:16*u.colorBufferWidth,rowsPerImage:u.height},{width:u.width,height:u.height,depthOrArrayLayers:1});let l;e.captureZValues&&(u.zbufferBufferWidth=64*Math.floor((u.width+63)/64),l=_r.newInstance({label:"hardwareSelectDepthBuffer"}),l.setDevice(s),u.zbufferSizeInBytes=u.height*u.zbufferBufferWidth*4,l.create(u.zbufferSizeInBytes,GPUBufferUsage.MAP_READ|GPUBufferUsage.COPY_DST),f.copyTextureToBuffer({texture:o.getHandle(),aspect:"depth-only"},{buffer:l.getHandle(),bytesPerRow:4*u.zbufferBufferWidth,rowsPerImage:u.height},{width:u.width,height:u.height,depthOrArrayLayers:1})),s.submitCommandEncoder(f);const g=c.mapAsync(GPUMapMode.READ);if(e.captureZValues){const p=l.mapAsync(GPUMapMode.READ);await Promise.all([g,p]),u.depthValues=new Float32Array(l.getMappedRange().slice()),l.unmap()}else await g;return u.colorValues=new Uint32Array(c.getMappedRange().slice()),c.unmap(),u.generateSelection=(p,y,h,d)=>PE(u,p,y,h,d),u}}const IE={};function R0(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,IE,n),Jg.extend(t,e,n),e._selectionPass=AE.newInstance(),_.setGet(t,e,["_WebGPURenderWindow"]),_.moveToProtected(t,e,["WebGPURenderWindow"]),XE(t,e)}const YE=_.newInstance(R0,"vtkWebGPUHardwareSelector");var O0={newInstance:YE,extend:R0};const{vtkErrorMacro:cu}=_,qE={position:"absolute",top:0,left:0,width:"100%",height:"100%"};function QE(t,e){e.classHierarchy.push("vtkWebGPURenderWindow"),t.getViewNodeFactory=()=>e.myFactory;const n=[0,0];function r(){e.renderable&&(e.size[0]!==n[0]||e.size[1]!==n[1])&&(n[0]=e.size[0],n[1]=e.size[1],e.canvas.setAttribute("width",e.size[0]),e.canvas.setAttribute("height",e.size[1]),t.recreateSwapChain()),e.viewStream&&e.viewStream.setSize(e.size[0],e.size[1]),e.canvas.style.display=e.useOffScreen?"none":"block",e.el&&(e.el.style.cursor=e.cursorVisibility?e.cursor:"none"),e.containerSize=null}t.onModified(r),t.recreateSwapChain=()=>{e.context&&(e.context.unconfigure(),e.presentationFormat=navigator.gpu.getPreferredCanvasFormat(e.adapter),e.context.configure({device:e.device.getHandle(),format:e.presentationFormat,alphaMode:"premultiplied",usage:GPUTextureUsage.RENDER_ATTACHMENT|GPUTextureUsage.COPY_DST,width:e.size[0],height:e.size[1]}),e._configured=!0)},t.getCurrentTexture=()=>e.context.getCurrentTexture(),t.buildPass=i=>{if(i){if(!e.renderable)return;t.prepareNodes(),t.addMissingNodes(e.renderable.getRenderersByReference()),t.removeUnusedNodes(),t.initialize()}else e.initialized&&(e._configured||t.recreateSwapChain(),e.commandEncoder=e.device.createCommandEncoder())},t.initialize=()=>{if(!e.initializing){if(e.initializing=!0,!navigator.gpu){cu("WebGPU is not enabled.");return}t.create3DContextAsync().then(()=>{e.initialized=!0,!e.deleted&&t.invokeInitialized()})}},t.setContainer=i=>{e.el&&e.el!==i&&(e.canvas.parentNode!==e.el&&cu("Error: canvas parent node does not match container"),e.el.removeChild(e.canvas),e.el.contains(e.bgImage)&&e.el.removeChild(e.bgImage)),e.el!==i&&(e.el=i,e.el&&(e.el.appendChild(e.canvas),e.useBackgroundImage&&e.el.appendChild(e.bgImage)),t.modified())},t.getContainer=()=>e.el,t.getContainerSize=()=>{if(!e.containerSize&&e.el){const{width:i,height:o}=e.el.getBoundingClientRect();e.containerSize=[i,o]}return e.containerSize||e.size},t.getFramebufferSize=()=>e.size,t.create3DContextAsync=async()=>{if(e.adapter=await navigator.gpu.requestAdapter({powerPreference:"high-performance"}),!e.deleted){if(e.device=GE.newInstance(),e.device.initialize(await e.adapter.requestDevice()),e.deleted){e.device=null;return}e.context=e.canvas.getContext("webgpu")}},t.releaseGraphicsResources=()=>{const i=gn.newInstance();i.setCurrentOperation("Release"),i.traverse(t,null),e.adapter=null,e.device=null,e.context=null,e.initialized=!1,e.initializing=!1},t.setBackgroundImage=i=>{e.bgImage.src=i.src},t.setUseBackgroundImage=i=>{e.useBackgroundImage=i,e.useBackgroundImage&&!e.el.contains(e.bgImage)?e.el.appendChild(e.bgImage):!e.useBackgroundImage&&e.el.contains(e.bgImage)&&e.el.removeChild(e.bgImage)};async function a(){let i=arguments.length>0&&arguments[0]!==void 0?arguments[0]:e.imageFormat;const o=document.createElement("canvas"),u=o.getContext("2d");o.width=e.canvas.width,o.height=e.canvas.height;const c=await t.getPixelsAsync(),f=new ImageData(c.colorValues,c.width,c.height);u.putImageData(f,0,0);const l=e.canvas.getBoundingClientRect();e.renderable.getRenderers().forEach(h=>{h.getViewProps().forEach(x=>{if(x.getContainer){const v=x.getContainer().getElementsByTagName("canvas");for(let T=0;T<v.length;T++){const w=v[T],C=w.getBoundingClientRect(),R=C.x-l.x,m=C.y-l.y;u.drawImage(w,R,m)}}})});const y=o.toDataURL(i);o.remove(),t.invokeImageReady(y)}t.captureNextImage=function(){let i=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"image/png",{resetCamera:o=!1,size:u=null,scale:c=1}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(e.deleted)return null;e.imageFormat=i;const f=e.notifyStartCaptureImage;return e.notifyStartCaptureImage=!0,e._screenshot={size:u||c!==1?u||e.size.map(l=>l*c):null},new Promise((l,g)=>{const p=t.onImageReady(y=>{if(e._screenshot.size===null)e.notifyStartCaptureImage=f,p.unsubscribe(),e._screenshot.placeHolder&&(e.size=e._screenshot.originalSize,t.modified(),e._screenshot.cameras&&e._screenshot.cameras.forEach(h=>{let{restoreParamsFn:d,arg:x}=h;return d(x)}),t.traverseAllPasses(),e.el.removeChild(e._screenshot.placeHolder),e._screenshot.placeHolder.remove(),e._screenshot=null),l(y);else{const h=document.createElement("img");if(h.style=qE,h.src=y,e._screenshot.placeHolder=e.el.appendChild(h),e.canvas.style.display="none",e._screenshot.originalSize=e.size,e.size=e._screenshot.size,e._screenshot.size=null,t.modified(),o){const d=o!==!0;e._screenshot.cameras=e.renderable.getRenderers().map(x=>{const S=x.getActiveCamera(),v=S.get("focalPoint","position","parallelScale");return{resetCameraArgs:d?{renderer:x}:void 0,resetCameraFn:d?o:x.resetCamera,restoreParamsFn:S.set,arg:JSON.parse(JSON.stringify(v))}}),e._screenshot.cameras.forEach(x=>{let{resetCameraFn:S,resetCameraArgs:v}=x;return S(v)})}t.traverseAllPasses()}})})},t.traverseAllPasses=()=>{if(!e.deleted)if(e.initialized){if(e.renderPasses)for(let i=0;i<e.renderPasses.length;++i)e.renderPasses[i].traverse(t,null);e.commandEncoder&&(e.device.submitCommandEncoder(e.commandEncoder),e.commandEncoder=null,e.notifyStartCaptureImage&&e.device.onSubmittedWorkDone().then(()=>{a()}))}else{t.initialize();const i=t.onInitialized(()=>{i.unsubscribe(),t.traverseAllPasses()})}},t.setViewStream=i=>{if(e.viewStream===i)return!1;if(e.subscription&&(e.subscription.unsubscribe(),e.subscription=null),e.viewStream=i,e.viewStream){const o=e.renderable.getRenderers()[0];o.getBackgroundByReference()[3]=0,t.setUseBackgroundImage(!0),e.subscription=e.viewStream.onImageReady(u=>t.setBackgroundImage(u.image)),e.viewStream.setSize(e.size[0],e.size[1]),e.viewStream.invalidateCache(),e.viewStream.render(),t.modified()}return!0},t.getUniquePropID=()=>e.nextPropID++,t.getPropFromID=i=>{for(let o=0;o<e.children.length;o++){const u=e.children[o].getPropFromID(i);if(u!==null)return u}return null},t.getPixelsAsync=async()=>{const i=e.device,o=e.renderPasses[0].getOpaquePass().getColorTexture(),u={width:o.getWidth(),height:o.getHeight()};u.colorBufferWidth=32*Math.floor((u.width+31)/32),u.colorBufferSizeInBytes=u.colorBufferWidth*u.height*8;const c=_r.newInstance();c.setDevice(i),c.create(u.colorBufferSizeInBytes,GPUBufferUsage.MAP_READ|GPUBufferUsage.COPY_DST);const f=e.device.createCommandEncoder();f.copyTextureToBuffer({texture:o.getHandle()},{buffer:c.getHandle(),bytesPerRow:8*u.colorBufferWidth,rowsPerImage:u.height},{width:u.width,height:u.height,depthOrArrayLayers:1}),i.submitCommandEncoder(f),await c.mapAsync(GPUMapMode.READ),u.colorValues=new Uint16Array(c.getMappedRange().slice()),c.unmap();const g=new Uint8ClampedArray(u.height*u.width*4);for(let p=0;p<u.height;p++)for(let y=0;y<u.width;y++){const h=(p*u.width+y)*4,d=(p*u.colorBufferWidth+y)*4;g[h]=255*Gt.fromHalf(u.colorValues[d]),g[h+1]=255*Gt.fromHalf(u.colorValues[d+1]),g[h+2]=255*Gt.fromHalf(u.colorValues[d+2]),g[h+3]=255*Gt.fromHalf(u.colorValues[d+3])}return u.colorValues=g,u},t.createSelector=()=>{const i=O0.newInstance();return i.setWebGPURenderWindow(t),i};const s=t.setSize;t.setSize=(i,o)=>{const u=s(i,o);return u&&t.invokeWindowResizeEvent({width:i,height:o}),u},t.delete=_.chain(t.delete,t.setViewStream)}const ZE={initialized:!1,context:null,adapter:null,device:null,canvas:null,cursorVisibility:!0,cursor:"pointer",containerSize:null,renderPasses:[],notifyStartCaptureImage:!1,imageFormat:"image/png",useOffScreen:!1,useBackgroundImage:!1,nextPropID:1,xrSupported:!1,presentationFormat:null};function JE(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,ZE,n),e.canvas=document.createElement("canvas"),e.canvas.style.width="100%",e.bgImage=new Image,e.bgImage.style.position="absolute",e.bgImage.style.left="0",e.bgImage.style.top="0",e.bgImage.style.width="100%",e.bgImage.style.height="100%",e.bgImage.style.zIndex="-1",g0.extend(t,e,n),e.myFactory=U2.newInstance(),e.myFactory.registerOverride("vtkRenderWindow",D0),e.renderPasses[0]=ME.newInstance(),e.selector||(e.selector=O0.newInstance(),e.selector.setWebGPURenderWindow(t)),_.event(t,e,"imageReady"),_.event(t,e,"initialized"),_.get(t,e,["commandEncoder","device","presentationFormat","useBackgroundImage","xrSupported"]),_.setGet(t,e,["initialized","context","canvas","device","renderPasses","notifyStartCaptureImage","cursor","useOffScreen"]),_.setGetArray(t,e,["size"],2),_.event(t,e,"windowResizeEvent"),QE(t,e)}const D0=_.newInstance(JE,"vtkWebGPURenderWindow");wo("WebGPU",D0);const eR=Zw.extractURLParameters(),tR={margin:"0",padding:"0",position:"absolute",top:"0",left:"0",width:"100%",height:"100%",overflow:"hidden"},nR={position:"absolute",left:"25px",top:"25px",backgroundColor:"white",borderRadius:"5px",listStyle:"none",padding:"5px 10px",margin:"0",display:"block",border:"solid 1px black",maxWidth:"calc(100% - 70px)",maxHeight:"calc(100% - 60px)",overflow:"auto"};function uu(t,e){Object.keys(e).forEach(n=>{t.style[n]=e[n]})}function rR(t,e){e.classHierarchy.push("vtkFullScreenRenderWindow");const n=document.querySelector("body");e.rootContainer||(e.rootContainer=n),e.container||(e.container=document.createElement("div"),uu(e.container,e.containerStyle||tR),e.rootContainer.appendChild(e.container)),e.rootContainer===n&&(document.documentElement.style.height="100%",n.style.height="100%",n.style.padding="0",n.style.margin="0"),e.renderWindow=Rw.newInstance(),e.renderer=xw.newInstance(),e.renderWindow.addRenderer(e.renderer),e.apiSpecificRenderWindow=e.renderWindow.newAPISpecificView(eR.viewAPI??e.defaultViewAPI),e.apiSpecificRenderWindow.setContainer(e.container),e.renderWindow.addView(e.apiSpecificRenderWindow),e.interactor=jg.newInstance(),e.interactor.setInteractorStyle(Yw.newInstance()),e.interactor.setView(e.apiSpecificRenderWindow),e.interactor.initialize(),e.interactor.bindEvents(e.container),t.setBackground=e.renderer.setBackground,t.removeController=()=>{const r=e.controlContainer;r&&r.parentNode.removeChild(r)},t.setControllerVisibility=r=>{e.controllerVisibility=r,e.controlContainer&&(r?e.controlContainer.style.display="block":e.controlContainer.style.display="none")},t.toggleControllerVisibility=()=>{t.setControllerVisibility(!e.controllerVisibility)},t.addController=r=>{e.controlContainer=document.createElement("div"),uu(e.controlContainer,e.controlPanelStyle||nR),e.rootContainer.appendChild(e.controlContainer),e.controlContainer.innerHTML=r,t.setControllerVisibility(e.controllerVisibility),e.rootContainer.addEventListener("keypress",a=>{String.fromCharCode(a.charCode)==="c"&&t.toggleControllerVisibility()})},t.setBackground(...e.background),t.addRepresentation=r=>{r.getActors().forEach(a=>{e.renderer.addActor(a)})},t.removeRepresentation=r=>{r.getActors().forEach(a=>e.renderer.removeActor(a))},t.delete=_.chain(t.setContainer,e.apiSpecificRenderWindow.delete,t.delete),t.resize=()=>{const r=e.container.getBoundingClientRect(),a=window.devicePixelRatio||1;e.apiSpecificRenderWindow.setSize(Math.floor(r.width*a),Math.floor(r.height*a)),e.resizeCallback&&e.resizeCallback(r),e.renderWindow.render()},t.setResizeCallback=r=>{e.resizeCallback=r,t.resize()},e.listenWindowResize&&window.addEventListener("resize",t.resize),t.resize()}const aR={background:[.32,.34,.43],containerStyle:null,controlPanelStyle:null,listenWindowResize:!0,resizeCallback:null,controllerVisibility:!0};function m0(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,aR,n),_.obj(t,e),_.get(t,e,["renderWindow","renderer","apiSpecificRenderWindow","interactor","rootContainer","container","controlContainer"]),rR(t,e)}const sR=_.newInstance(m0);var iR={newInstance:sR,extend:m0};const oR={RGB:0,HSV:1,LAB:2,DIVERGING:3},cR={LINEAR:0,LOG10:1};var M0={ColorSpace:oR,Scale:cR};const{ColorSpace:Lt,Scale:V0}=M0,{ScalarMappingTarget:Ua}=Ts,{vtkDebugMacro:uR,vtkErrorMacro:rn,vtkWarningMacro:fR}=_;function fu(t,e){const n=t[0],r=t[1],a=t[2],s=Math.sqrt(n*n+r*r+a*a),i=s>.001?Math.acos(n/s):0,o=i>.001?Math.atan2(a,r):0;e[0]=s,e[1]=i,e[2]=o}function lR(t,e){const n=t[0],r=t[1],a=t[2];e[0]=n*Math.cos(r),e[1]=n*Math.sin(r)*Math.cos(a),e[2]=n*Math.sin(r)*Math.sin(a)}function lu(t,e){if(t[0]>=e-.1)return t[2];const n=t[1]*Math.sqrt(e*e-t[0]*t[0])/(t[0]*Math.sin(t[1]));return t[2]>-.3*Math.PI?t[2]+n:t[2]-n}function gR(t,e){let n=t-e;for(n<0&&(n=-n);n>=2*Math.PI;)n-=2*Math.PI;return n>Math.PI&&(n=2*Math.PI-n),n}function gu(t,e,n,r){const a=[],s=[];gr(e,a),gr(n,s);const i=[],o=[];fu(a,i),fu(s,o);let u=t;if(i[1]>.05&&o[1]>.05&&gR(i[2],o[2])>.33*Math.PI){let l=Math.max(i[0],o[0]);l=Math.max(88,l),t<.5?(o[0]=l,o[1]=0,o[2]=0,u*=2):(i[0]=l,i[1]=0,i[2]=0,u=2*u-1)}i[1]<.05&&o[1]>.05?i[2]=lu(o,i[0]):o[1]<.05&&i[1]>.05&&(o[2]=lu(i,o[0]));const c=[];c[0]=(1-u)*i[0]+u*o[0],c[1]=(1-u)*i[1]+u*o[1],c[2]=(1-u)*i[2]+u*o[2];const f=[];lR(c,f),yi(f,r)}function pR(t,e){e.classHierarchy.push("vtkColorTransferFunction"),t.getSize=()=>e.nodes.length,t.addRGBPoint=(n,r,a,s)=>t.addRGBPointLong(n,r,a,s,.5,0),t.addRGBPointLong=function(n,r,a,s){let i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:.5,o=arguments.length>5&&arguments[5]!==void 0?arguments[5]:0;if(i<0||i>1)return rn("Midpoint outside range [0.0, 1.0]"),-1;if(o<0||o>1)return rn("Sharpness outside range [0.0, 1.0]"),-1;e.allowDuplicateScalars||t.removePoint(n);const u={x:n,r,g:a,b:s,midpoint:i,sharpness:o};e.nodes.push(u),t.sortAndUpdateRange();let c=0;for(;c<e.nodes.length&&e.nodes[c].x!==n;c++);return c<e.nodes.length?c:-1},t.addHSVPoint=(n,r,a,s)=>t.addHSVPointLong(n,r,a,s,.5,0),t.addHSVPointLong=function(n,r,a,s){let i=arguments.length>4&&arguments[4]!==void 0?arguments[4]:.5,o=arguments.length>5&&arguments[5]!==void 0?arguments[5]:0;const u=[];return cr([r,a,s],u),t.addRGBPoint(n,u[0],u[1],u[2],i,o)},t.setNodes=n=>{if(e.nodes!==n){const r=JSON.stringify(e.nodes);e.nodes=n;const a=JSON.stringify(e.nodes);if(t.sortAndUpdateRange()||r!==a)return t.modified(),!0}return!1},t.sortAndUpdateRange=()=>{const n=JSON.stringify(e.nodes);e.nodes.sort((s,i)=>s.x-i.x);const r=JSON.stringify(e.nodes),a=t.updateRange();return!a&&n!==r?(t.modified(),!0):a},t.updateRange=()=>{const n=[2];n[0]=e.mappingRange[0],n[1]=e.mappingRange[1];const r=e.nodes.length;return r?(e.mappingRange[0]=e.nodes[0].x,e.mappingRange[1]=e.nodes[r-1].x):(e.mappingRange[0]=0,e.mappingRange[1]=0),n[0]===e.mappingRange[0]&&n[1]===e.mappingRange[1]?!1:(t.modified(),!0)},t.removePoint=n=>{let r=0;for(;r<e.nodes.length&&e.nodes[r].x!==n;r++);const a=r;if(r>=e.nodes.length)return-1;let s=!1;return e.nodes.splice(r,1),(r===0||r===e.nodes.length)&&(s=t.updateRange()),s||t.modified(),a},t.movePoint=(n,r)=>{if(n!==r){t.removePoint(r);for(let a=0;a<e.nodes.length;a++)if(e.nodes[a].x===n){e.nodes[a].x=r,t.sortAndUpdateRange();break}}},t.removeAllPoints=()=>{e.nodes=[],t.sortAndUpdateRange()},t.addRGBSegment=(n,r,a,s,i,o,u,c)=>{t.sortAndUpdateRange();for(let f=0;f<e.nodes.length;)e.nodes[f].x>=n&&e.nodes[f].x<=i?e.nodes.splice(f,1):f++;t.addRGBPointLong(n,r,a,s,.5,0),t.addRGBPointLong(i,o,u,c,.5,0),t.modified()},t.addHSVSegment=(n,r,a,s,i,o,u,c)=>{const f=[r,a,s],l=[o,u,c],g=[],p=[];cr(f,g),cr(l,p),t.addRGBSegment(n,g[0],g[1],g[2],i,p[0],p[1],p[2])},t.mapValue=n=>{const r=[];return t.getColor(n,r),[Math.floor(255*r[0]+.5),Math.floor(255*r[1]+.5),Math.floor(255*r[2]+.5),255]},t.getColor=(n,r)=>{if(e.indexedLookup){const a=t.getSize(),s=t.getAnnotatedValueIndexInternal(n);if(s<0||a===0){const i=t.getNanColorByReference();r[0]=i[0],r[1]=i[1],r[2]=i[2]}else{const i=[];t.getNodeValue(s%a,i),r[0]=i[1],r[1]=i[2],r[2]=i[3]}return}t.getTable(n,n,1,r)},t.getRedValue=n=>{const r=[];return t.getColor(n,r),r[0]},t.getGreenValue=n=>{const r=[];return t.getColor(n,r),r[1]},t.getBlueValue=n=>{const r=[];return t.getColor(n,r),r[2]},t.getTable=(n,r,a,s)=>{const i=Number(n),o=Number(r);if(ns(i)||ns(o)){for(let B=0;B<a;B++)s[B*3+0]=e.nanColor[0],s[B*3+1]=e.nanColor[1],s[B*3+2]=e.nanColor[2];return}let u=0;const c=e.nodes.length;let f=0,l=0,g=0;c!==0&&(f=e.nodes[c-1].r,l=e.nodes[c-1].g,g=e.nodes[c-1].b);let p=0,y=0,h=0;const d=[0,0,0],x=[0,0,0];let S=0,v=0;const T=[];let w=e.scale===V0.LOG10;w&&(w=e.mappingRange[0]>0);let C=0,R=0,m=0;w&&(C=Math.log10(i),R=Math.log10(o));for(let B=0;B<a;B++){const M=3*B;if(a>1?w?(m=C+B/(a-1)*(R-C),p=10**m):p=i+B/(a-1)*(o-i):w?(m=.5*(C+R),p=10**m):p=.5*(i+o),e.discretize){const D=e.mappingRange;if(p>=D[0]&&p<=D[1]){const L=e.numberOfValues,b=D[1]-D[0];if(L<=1)p=D[0]+b/2;else{const $=(p-D[0])/b,Q=rv(L*$);p=D[0]+Q/(L-1)*b}}}for(;u<c&&p>e.nodes[u].x;)u++,u<c&&(y=e.nodes[u-1].x,h=e.nodes[u].x,w&&(y=Math.log10(y),h=Math.log10(h)),d[0]=e.nodes[u-1].r,x[0]=e.nodes[u].r,d[1]=e.nodes[u-1].g,x[1]=e.nodes[u].g,d[2]=e.nodes[u-1].b,x[2]=e.nodes[u].b,S=e.nodes[u-1].midpoint,v=e.nodes[u-1].sharpness,S<1e-5&&(S=1e-5),S>.99999&&(S=.99999));if(p>e.mappingRange[1])s[M]=0,s[M+1]=0,s[M+2]=0,e.clamping&&(t.getUseAboveRangeColor()?(s[M]=e.aboveRangeColor[0],s[M+1]=e.aboveRangeColor[1],s[M+2]=e.aboveRangeColor[2]):(s[M]=f,s[M+1]=l,s[M+2]=g));else if(p<e.mappingRange[0]||dv(p)&&p<0)s[M]=0,s[M+1]=0,s[M+2]=0,e.clamping&&(t.getUseBelowRangeColor()?(s[M]=e.belowRangeColor[0],s[M+1]=e.belowRangeColor[1],s[M+2]=e.belowRangeColor[2]):c>0&&(s[M]=e.nodes[0].r,s[M+1]=e.nodes[0].g,s[M+2]=e.nodes[0].b));else if(u===0&&(Math.abs(p-i)<1e-6||e.discretize))c>0?(s[M]=e.nodes[0].r,s[M+1]=e.nodes[0].g,s[M+2]=e.nodes[0].b):(s[M]=0,s[M+1]=0,s[M+2]=0);else{let D=0;if(w?D=(m-y)/(h-y):D=(p-y)/(h-y),D<S?D=.5*D/S:D=.5+.5*(D-S)/(1-S),v>.99)if(D<.5){s[M]=d[0],s[M+1]=d[1],s[M+2]=d[2];continue}else{s[M]=x[0],s[M+1]=x[1],s[M+2]=x[2];continue}if(v<.01){if(e.colorSpace===Lt.RGB)s[M]=(1-D)*d[0]+D*x[0],s[M+1]=(1-D)*d[1]+D*x[1],s[M+2]=(1-D)*d[2]+D*x[2];else if(e.colorSpace===Lt.HSV){const F=[],j=[];da(d,F),da(x,j),e.hSVWrap&&(F[0]-j[0]>.5||j[0]-F[0]>.5)&&(F[0]>j[0]?F[0]-=1:j[0]-=1);const K=[];K[0]=(1-D)*F[0]+D*j[0],K[0]<0&&(K[0]+=1),K[1]=(1-D)*F[1]+D*j[1],K[2]=(1-D)*F[2]+D*j[2],cr(K,T),s[M]=T[0],s[M+1]=T[1],s[M+2]=T[2]}else if(e.colorSpace===Lt.LAB){const F=[],j=[];gr(d,F),gr(x,j);const K=[];K[0]=(1-D)*F[0]+D*j[0],K[1]=(1-D)*F[1]+D*j[1],K[2]=(1-D)*F[2]+D*j[2],yi(K,T),s[M]=T[0],s[M+1]=T[1],s[M+2]=T[2]}else e.colorSpace===Lt.DIVERGING?(gu(D,d,x,T),s[M]=T[0],s[M+1]=T[1],s[M+2]=T[2]):rn("ColorSpace set to invalid value.",e.colorSpace);continue}D<.5?D=.5*(D*2)**(1+10*v):D>.5&&(D=1-.5*((1-D)*2)**(1+10*v));const L=D*D,b=L*D,$=2*b-3*L+1,Q=-2*b+3*L,Y=b-2*L+D,Z=b-L;let se,W;if(e.colorSpace===Lt.RGB)for(let F=0;F<3;F++)se=x[F]-d[F],W=(1-v)*se,s[M+F]=$*d[F]+Q*x[F]+Y*W+Z*W;else if(e.colorSpace===Lt.HSV){const F=[],j=[];da(d,F),da(x,j),e.hSVWrap&&(F[0]-j[0]>.5||j[0]-F[0]>.5)&&(F[0]>j[0]?F[0]-=1:j[0]-=1);const K=[];for(let P=0;P<3;P++)se=j[P]-F[P],W=(1-v)*se,K[P]=$*F[P]+Q*j[P]+Y*W+Z*W,P===0&&K[P]<0&&(K[P]+=1);cr(K,T),s[M]=T[0],s[M+1]=T[1],s[M+2]=T[2]}else if(e.colorSpace===Lt.LAB){const F=[],j=[];gr(d,F),gr(x,j);const K=[];for(let P=0;P<3;P++)se=j[P]-F[P],W=(1-v)*se,K[P]=$*F[P]+Q*j[P]+Y*W+Z*W;yi(K,T),s[M]=T[0],s[M+1]=T[1],s[M+2]=T[2]}else e.colorSpace===Lt.DIVERGING?(gu(D,d,x,T),s[M]=T[0],s[M+1]=T[1],s[M+2]=T[2]):rn("ColorSpace set to invalid value.");for(let F=0;F<3;F++)s[M+F]=s[M+F]<0?0:s[M+F],s[M+F]=s[M+F]>1?1:s[M+F]}}},t.getUint8Table=function(n,r,a){let s=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;if(t.getMTime()<=e.buildTime&&e.tableSize===a&&e.tableWithAlpha!==s)return e.table;if(e.nodes.length===0)return rn("Attempting to lookup a value with no points in the function"),e.table;const i=s?4:3;(e.tableSize!==a||e.tableWithAlpha!==s)&&(e.table=new Uint8Array(a*i),e.tableSize=a,e.tableWithAlpha=s);const o=[];t.getTable(n,r,a,o);for(let u=0;u<a;u++)e.table[u*i+0]=Math.floor(o[u*3+0]*255+.5),e.table[u*i+1]=Math.floor(o[u*3+1]*255+.5),e.table[u*i+2]=Math.floor(o[u*3+2]*255+.5),s&&(e.table[u*i+3]=255);return e.buildTime.modified(),e.table},t.buildFunctionFromArray=n=>{t.removeAllPoints();const r=n.getNumberOfComponents();for(let a=0;a<n.getNumberOfTuples();a++)switch(r){case 3:{e.nodes.push({x:a,r:n.getComponent(a,0),g:n.getComponent(a,1),b:n.getComponent(a,2),midpoint:.5,sharpness:0});break}case 4:{e.nodes.push({x:n.getComponent(a,0),r:n.getComponent(a,1),g:n.getComponent(a,2),b:n.getComponent(a,3),midpoint:.5,sharpness:0});break}case 5:{e.nodes.push({x:a,r:n.getComponent(a,0),g:n.getComponent(a,1),b:n.getComponent(a,2),midpoint:n.getComponent(a,4),sharpness:n.getComponent(a,5)});break}case 6:{e.nodes.push({x:n.getComponent(a,0),r:n.getComponent(a,1),g:n.getComponent(a,2),b:n.getComponent(a,3),midpoint:n.getComponent(a,4),sharpness:n.getComponent(a,5)});break}}t.sortAndUpdateRange()},t.buildFunctionFromTable=(n,r,a,s)=>{let i=0;t.removeAllPoints(),a>1&&(i=(r-n)/(a-1));for(let o=0;o<a;o++){const u={x:n+i*o,r:s[o*3],g:s[o*3+1],b:s[o*3+2],sharpness:0,midpoint:.5};e.nodes.push(u)}t.sortAndUpdateRange()},t.getNodeValue=(n,r)=>n<0||n>=e.nodes.length?(rn("Index out of range!"),-1):(r[0]=e.nodes[n].x,r[1]=e.nodes[n].r,r[2]=e.nodes[n].g,r[3]=e.nodes[n].b,r[4]=e.nodes[n].midpoint,r[5]=e.nodes[n].sharpness,1),t.setNodeValue=(n,r)=>{if(n<0||n>=e.nodes.length)return rn("Index out of range!"),-1;const a=e.nodes[n].x;return e.nodes[n].x=r[0],e.nodes[n].r=r[1],e.nodes[n].g=r[2],e.nodes[n].b=r[3],e.nodes[n].midpoint=r[4],e.nodes[n].sharpness=r[5],a!==r[0]?t.sortAndUpdateRange():t.modified(),1},t.getNumberOfAvailableColors=()=>e.indexedLookup&&t.getSize()?t.getSize():e.tableSize?e.tableSize:16777216,t.getIndexedColor=(n,r)=>{const a=t.getSize();if(a>0&&n>=0){const i=[];t.getNodeValue(n%a,i);for(let o=0;o<3;++o)r[o]=i[o+1];r[3]=1;return}const s=t.getNanColorByReference();r[0]=s[0],r[1]=s[1],r[2]=s[2],r[3]=1},t.fillFromDataPointer=(n,r)=>{if(!(n<=0||!r)){t.removeAllPoints();for(let a=0;a<n;a++)t.addRGBPoint(r[a*4],r[a*4+1],r[a*4+2],r[a*4+3])}},t.setMappingRange=(n,r)=>{const a=[n,r],s=t.getRange();if(s[1]===a[1]&&s[0]===a[0])return;if(a[1]===a[0]){rn("attempt to set zero width color range");return}const i=(a[1]-a[0])/(s[1]-s[0]),o=a[0]-s[0]*i;for(let u=0;u<e.nodes.length;++u)e.nodes[u].x=e.nodes[u].x*i+o;e.mappingRange[0]=a[0],e.mappingRange[1]=a[1],t.modified()},t.adjustRange=n=>{const r=t.getRange(),a=[];r[0]<n[0]?(t.getColor(n[0],a),t.addRGBPoint(n[0],a[0],a[1],a[2])):(t.getColor(r[0],a),t.addRGBPoint(n[0],a[0],a[1],a[2])),r[1]>n[1]?(t.getColor(n[1],a),t.addRGBPoint(n[1],a[0],a[1],a[2])):(t.getColor(r[1],a),t.addRGBPoint(n[1],a[0],a[1],a[2])),t.sortAndUpdateRange();for(let s=0;s<e.nodes.length;)e.nodes[s].x>=n[0]&&e.nodes[s].x<=n[1]?e.nodes.splice(s,1):++s;return 1},t.estimateMinNumberOfSamples=(n,r)=>{const a=t.findMinimumXDistance();return Math.ceil((r-n)/a)},t.findMinimumXDistance=()=>{if(e.nodes.length<2)return-1;let n=Number.MAX_VALUE;for(let r=0;r<e.nodes.length-1;r++){const a=e.nodes[r+1].x-e.nodes[r].x;a<n&&(n=a)}return n},t.mapScalarsThroughTable=(n,r,a,s)=>{if(t.getSize()===0){uR("Transfer Function Has No Points!");return}e.indexedLookup?t.mapDataIndexed(n,r,a,s):t.mapData(n,r,a,s)},t.mapData=(n,r,a,s)=>{if(t.getSize()===0){fR("Transfer Function Has No Points!");return}const i=Math.floor(t.getAlpha()*255+.5),o=n.getNumberOfTuples(),u=n.getNumberOfComponents(),c=r.getData(),f=n.getData(),l=[];if(a===Ua.RGBA)for(let g=0;g<o;g++){const p=f[g*u+s];t.getColor(p,l),c[g*4]=Math.floor(l[0]*255+.5),c[g*4+1]=Math.floor(l[1]*255+.5),c[g*4+2]=Math.floor(l[2]*255+.5),c[g*4+3]=i}if(a===Ua.RGB)for(let g=0;g<o;g++){const p=f[g*u+s];t.getColor(p,l),c[g*3]=Math.floor(l[0]*255+.5),c[g*3+1]=Math.floor(l[1]*255+.5),c[g*3+2]=Math.floor(l[2]*255+.5)}if(a===Ua.LUMINANCE)for(let g=0;g<o;g++){const p=f[g*u+s];t.getColor(p,l),c[g]=Math.floor(l[0]*76.5+l[1]*150.45+l[2]*28.05+.5)}if(a===Ua.LUMINANCE_ALPHA)for(let g=0;g<o;g++){const p=f[g*u+s];t.getColor(p,l),c[g*2]=Math.floor(l[0]*76.5+l[1]*150.45+l[2]*28.05+.5),c[g*2+1]=i}},t.applyColorMap=n=>{const r=JSON.stringify(e.colorSpace);n.ColorSpace&&(e.colorSpace=Lt[n.ColorSpace.toUpperCase()],e.colorSpace===void 0&&(rn(`ColorSpace ${n.ColorSpace} not supported, using RGB instead`),e.colorSpace=Lt.RGB));let a=r!==JSON.stringify(e.colorSpace);const s=a||JSON.stringify(e.nanColor);if(n.NanColor)for(e.nanColor=[].concat(n.NanColor);e.nanColor.length<4;)e.nanColor.push(1);a=a||s!==JSON.stringify(e.nanColor);const i=a||JSON.stringify(e.nodes);if(n.RGBPoints){const c=n.RGBPoints.length;e.nodes=[];const f=.5,l=0;for(let g=0;g<c;g+=4)e.nodes.push({x:n.RGBPoints[g],r:n.RGBPoints[g+1],g:n.RGBPoints[g+2],b:n.RGBPoints[g+3],midpoint:f,sharpness:l})}const o=t.sortAndUpdateRange(),u=!o&&(a||i!==JSON.stringify(e.nodes));return u&&t.modified(),o||u}}const hR={clamping:!0,colorSpace:Lt.RGB,hSVWrap:!0,scale:V0.LINEAR,nanColor:null,belowRangeColor:null,aboveRangeColor:null,useAboveRangeColor:!1,useBelowRangeColor:!1,allowDuplicateScalars:!1,table:null,tableSize:0,buildTime:null,nodes:null,discretize:!1,numberOfValues:256};function L0(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,hR,n),Ts.extend(t,e,n),e.table=[],e.nodes=[],e.nanColor=[.5,0,0,1],e.belowRangeColor=[0,0,0,1],e.aboveRangeColor=[1,1,1,1],e.buildTime={},_.obj(e.buildTime),_.get(t,e,["buildTime","mappingRange"]),_.setGet(t,e,["useAboveRangeColor","useBelowRangeColor","colorSpace","discretize","numberOfValues"]),_.setArray(t,e,["nanColor","belowRangeColor","aboveRangeColor"],4),_.getArray(t,e,["nanColor","belowRangeColor","aboveRangeColor"]),pR(t,e)}const dR=_.newInstance(L0,"vtkColorTransferFunction");var vR={newInstance:dR,extend:L0,...M0};function yR(t,e){e.classHierarchy.push("vtkSphereSource"),t.requestData=(n,r)=>{if(e.deleted)return;let a=r[0];const s=a?a.getPoints().getDataType():e.pointType;a=zt.newInstance();let i=0,{thetaResolution:o}=e,u=e.startTheta<e.endTheta?e.startTheta:e.endTheta;u*=Math.PI/180;let c=e.endTheta>e.startTheta?e.endTheta:e.startTheta;c*=Math.PI/180;let f=e.startPhi<e.endPhi?e.startPhi:e.endPhi;f*=Math.PI/180;let l=e.endPhi>e.startPhi?e.endPhi:e.startPhi;l*=Math.PI/180,Math.abs(u-c)<2*Math.PI&&++o;const g=(c-u)/e.thetaResolution,p=e.startPhi<=0?1:0,y=e.phiResolution+(e.endPhi>=180?-1:0),h=e.phiResolution*o+2,d=e.phiResolution*2*e.thetaResolution;let x=0,S=_.newTypedArray(s,h*3),v=new Float32Array(h*3),T=0,w=new Uint32Array(d*5);e.startPhi<=0&&(S[x*3+0]=e.center[0],S[x*3+1]=e.center[1],S[x*3+2]=e.center[2]+e.radius,v[x*3+0]=0,v[x*3+1]=0,v[x*3+2]=1,x++,i++),e.endPhi>=180&&(S[x*3+0]=e.center[0],S[x*3+1]=e.center[1],S[x*3+2]=e.center[2]-e.radius,v[x*3+0]=0,v[x*3+1]=0,v[x*3+2]=-1,x++,i++);const C=e.phiResolution-i,R=(l-f)/(e.phiResolution-1);for(let M=0;M<o;M++){const D=u+M*g;for(let L=p;L<y;L++){const b=f+L*R,$=e.radius*Math.sin(b);v[x*3+0]=$*Math.cos(D),v[x*3+1]=$*Math.sin(D),v[x*3+2]=e.radius*Math.cos(b),S[x*3+0]=v[x*3+0]+e.center[0],S[x*3+1]=v[x*3+1]+e.center[1],S[x*3+2]=v[x*3+2]+e.center[2];let Q=Math.sqrt(v[x*3+0]*v[x*3+0]+v[x*3+1]*v[x*3+1]+v[x*3+2]*v[x*3+2]);Q=Q===0?1:Q,v[x*3+0]/=Q,v[x*3+1]/=Q,v[x*3+2]/=Q,x++}}const m=C*o;if(Math.abs(u-c)<2*Math.PI&&--o,e.startPhi<=0)for(let M=0;M<o;M++)w[T++]=3,w[T++]=C*M+i,w[T++]=C*(M+1)%m+i,w[T++]=0;if(e.endPhi>=180){const M=C-1+i;for(let D=0;D<o;D++)w[T++]=3,w[T++]=C*D+M,w[T++]=i-1,w[T++]=C*(D+1)%m+M}for(let M=0;M<o;M++)for(let D=0;D<C-1;D++){const L=C*M+D+i,b=L+1,$=(C*(M+1)+D)%m+i+1;e.latLongTessellation?(w[T++]=4,w[T++]=L,w[T++]=b,w[T++]=$,w[T++]=$-1):(w[T++]=3,w[T++]=L,w[T++]=b,w[T++]=$,w[T++]=3,w[T++]=L,w[T++]=$,w[T++]=$-1)}S=S.subarray(0,x*3),a.getPoints().setData(S,3),v=v.subarray(0,x*3);const B=_e.newInstance({name:"Normals",values:v,numberOfComponents:3});a.getPointData().setNormals(B),w=w.subarray(0,T),a.getPolys().setData(w,1),r[0]=a}}const TR={radius:.5,latLongTessellation:!1,thetaResolution:8,startTheta:0,endTheta:360,phiResolution:8,startPhi:0,endPhi:180,center:[0,0,0],pointType:"Float64Array"};function B0(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,TR,n),_.obj(t,e),_.setGet(t,e,["radius","latLongTessellation","thetaResolution","startTheta","endTheta","phiResolution","startPhi","endPhi"]),_.setGetArray(t,e,["center"],3),_.algo(t,e,0,1),yR(t,e)}const xR=_.newInstance(B0,"vtkSphereSource");var SR={newInstance:xR,extend:B0};const{vtkWarningMacro:CR}=_;function wR(t,e){e.classHierarchy.push("vtkLineSource"),t.requestData=(n,r)=>{if(e.deleted)return;const a=r[0],s=a?a.getPoints().getDataType():e.pointType,i=zt.newInstance(),o=[];if(un(e.point2,e.point1,o),no(o)<=0){CR("Zero-length line definition");return}const u=e.resolution,c=u+1,f=_.newTypedArray(s,c*3);i.getPoints().setData(f,3);const l=new Uint32Array(c+1);i.getLines().setData(l,1);let g=0,p=0;for(let y=0;y<u+1;y++)p=y/u,f[g*3]=e.point1[0]+p*o[0],f[g*3+1]=e.point1[1]+p*o[1],f[g*3+2]=e.point1[2]+p*o[2],g++;g=0,l[0]=c;for(let y=0;y<c;y++)l[y+1]=y;r[0]=i}}const _R={resolution:10,point1:[-1,0,0],point2:[1,0,0],pointType:"Float64Array"};function k0(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,_R,n),_.obj(t,e),_.setGet(t,e,["resolution"]),_.setGetArray(t,e,["point1","point2"],3),_.algo(t,e,0,1),wR(t,e)}const ER=_.newInstance(k0,"vtkLineSource");var RR={newInstance:ER,extend:k0};function OR(t,e){e.classHierarchy.push("vtkSphereMapper")}const DR={scaleArray:null,radius:.05,scaleFactor:1};function mR(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,DR,n),Wt.extend(t,e,n),_.setGet(t,e,["radius","scaleArray","scaleFactor"]),OR(t,e)}_.newInstance(mR,"vtkSphereMapper");class MR{constructor(){this.isJg=!1,this.isSelectNode=!1,this.isSelectPipe=!1,this.selectObj=null,this.selectJgPointId=0,this.validNodes=[],this.pipes=[],this.renderWindowWith=iR.newInstance(),this.renderer=this.renderWindowWith.getRenderer(),this.renderWindow=this.renderWindowWith.getRenderWindow(),this.polyData=zt.newInstance(),this.mapper=Wt.newInstance(),this.actor=Nt.newInstance(),this.actor.getProperty().setRepresentation(ut.SURFACE),this.actor.getProperty().setColor(Ar),this.mapper.setInputData(this.polyData),this.actor.setMapper(this.mapper),this.actor2=Nt.newInstance(),this.actor2.getProperty().setRepresentation(ut.POINTS),this.actor2.getProperty().setColor(Ar),this.actor2.getProperty().setPointSize(2),this.actor2.setMapper(this.mapper),this.lastActor=null,this.nodeActors=[],this.pipeActors=[],this.interactor=this.renderer.getRenderWindow().getInteractor(),this.apiSpecificRenderWindow=this.interactor.getView(),this.hardwareSelector=this.apiSpecificRenderWindow.getSelector(),this.hardwareSelector.setCaptureZValues(!0),this.hardwareSelector.setFieldAssociation(Cl.FIELD_ASSOCIATION_POINTS),document.addEventListener("mousemove",kR),this.jgActor=Nt.newInstance(),this.jgMapper=Wt.newInstance(),this.jgActor.getProperty().setRepresentation(ut.SURFACE),this.scalarBarActor=xo.newInstance(),this.scalarBarActor.setGenerateTicks(this.generateTicks(5)),this.scalarBarActor.setDrawAboveRangeSwatch(!0),this.scalarBarActor.setDrawNanAnnotation(!1),this.scalarBarActor.setBoxPosition([1,0]);const e=vR.newInstance();e.addRGBPoint(0,0,0,1),e.addRGBPoint(1,0,1,.5),e.addRGBPoint(2,0,1,0),e.addRGBPoint(3,1,.5,0),e.addRGBPoint(4,1,0,0),this.jgMapper.setLookupTable(e);const n=this.jgMapper.getLookupTable();this.scalarBarActor.setScalarsToColors(n),this.jgActor.setMapper(this.jgMapper)}generateTicks(e){return n=>{const r=n.getLastTickBounds(),a=ps().domain([0,1]).range([r[0],r[1]]),i=a.ticks(e).map(c=>a(c));Eu({minus:"-"});const o=a.tickFormat(i[0],i[i.length-1],e),u=i.map(o).map(c=>Number(parseFloat(c).toPrecision(12)).toPrecision());n.setTicks(i),n.setTickStrings(u)}}modelInit(e,n){this.validNodes=e,this.pipes=n,this.modelCreate()}modelCreate(){console.log("modelInit..");const e=this.polyData.getPoints(),n=this.polyData.getLines();this.validNodes.forEach(s=>{e.insertNextPoint(parseFloat(s.x),parseFloat(s.y),parseFloat(s.z))}),this.pipes.forEach(s=>{let i=this.indexIdByPipeNodeId(s.snId),o=this.indexIdByPipeNodeId(s.enId);n.insertNextCell([i,o])});const r=SR.newInstance({center:[0,0,0],radius:4}),a=Wt.newInstance();a.setInputConnection(r.getOutputPort()),this.validNodes.forEach(s=>{const i=Nt.newInstance();i.setMapper(a),i.setPosition(parseFloat(s.x),parseFloat(s.y),parseFloat(s.z)),i.getProperty().setColor(Ar);const o={};o.node=s,o.actor=i,this.nodeActors.push(o)}),this.pipes.forEach(s=>{const i=RR.newInstance();let o=this.pointByPipeNodeId(s.snId),u=this.pointByPipeNodeId(s.enId);i.setPoint1(o),i.setPoint2(u),i.setResolution(12);const c=Nt.newInstance(),f=Wt.newInstance();c.setMapper(f),c.getProperty().setLineWidth(3),c.getProperty().setColor(Ar),f.setInputConnection(i.getOutputPort());const l={};l.pipe=s,l.actor=c,this.pipeActors.push(l)}),this.modelShow(),this.renderer.resetCamera(),this.renderWindow.render()}modelClearShow(){this.renderer.removeActor(this.actor),this.renderer.removeActor(this.actor2),this.nodeActors.forEach(e=>{this.renderer.removeActor(e.actor)}),this.pipeActors.forEach(e=>{this.renderer.removeActor(e.actor)})}modelShow(){this.modelClearShow(),this.isSelectNode||this.renderer.addActor(this.actor2),this.isSelectPipe||this.renderer.addActor(this.actor),this.isSelectNode&&this.nodeActors.forEach(e=>{this.renderer.addActor(e.actor)}),this.isSelectPipe&&this.pipeActors.forEach(e=>{this.renderer.addActor(e.actor)})}selectNodes(){this.isSelectNode=!0,this.isSelectPipe=!1,this.modelShow(),this.renderWindow.render()}selectPipes(){this.isSelectNode=!1,this.isSelectPipe=!0,this.modelShow(),this.renderWindow.render()}selectNoting(){this.isSelectNode=!1,this.isSelectPipe=!1,this.modelShow(),this.renderWindow.render()}indexIdByPipeNodeId(e){for(let n=0;n<this.validNodes.length;n++)if(this.validNodes[n].id==e)return n;return 0}pointByPipeNodeId(e){for(let n=0;n<this.validNodes.length;n++){const r=this.validNodes[n];if(r.id==e)return[parseFloat(r.x),parseFloat(r.y),parseFloat(r.z)]}return 0}clearModeAddJg(){this.renderer.addActor(this.jgActor),this.renderer.addActor(this.scalarBarActor),this.modelClearShow(),this.isJg=!0}clearJgAddMode(){this.renderer.removeActor(this.scalarBarActor),this.renderer.removeActor(this.jgActor),this.modelShow(),this.isJg=!1}}function VR(t){if(de.interactor.isAnimating())return;const[e,n]=LR(t);de.hardwareSelector.getSourceDataAsync(de.renderer,e,n,e,n).then(r=>{r&&BR(r.generateSelection(e,n,e,n))})}function LR(t){const{clientX:e,clientY:n}=t,[r,a]=de.apiSpecificRenderWindow.getSize(),s=Math.round(r*e/window.innerWidth),i=Math.round(a*(1-n/window.innerHeight));return[s,i]}function BR(t){if(!t||t.length===0){de.lastActor==null;return}const{worldPosition:e,compositeID:n,prop:r,propID:a,attributeID:s}=t[0].getProperties();if(de.lastActor!=null&&(de.lastActor.getProperty().setColor(Ar),de.renderWindow.render()),de.nodeActors.forEach(i=>{r==i.actor&&(de.selectObj=i.node,r.getProperty().setColor(pu),de.lastActor=r)}),de.pipeActors.forEach(i=>{r==i.actor&&(de.selectObj=i.pipe,r.getProperty().setColor(pu),de.lastActor=r)}),de.isJg){const i=r.getMapper().getInputData();i.getCells()||i.buildCells();const o=i.getCellPoints(s);if(o){const u=o.cellPointIds;Array.from(u).map(c=>i.getPoints().getPoint(c)),de.selectJgPointId=u[0]}}de.renderWindow.render()}const kR=Ii(VR,20),Ar=[0,0,1],pu=[.1,.8,.1],de=new MR;const ke=t=>(ea("data-v-b0eb943a"),t=t(),ta(),t),FR={class:"l_Dialog tuiy"},UR={class:"my-header"},bR=["id"],NR={class:"my_content"},GR={class:"dialog-footer class_footer l_btn"},$R={class:"footerbtn"},WR={class:"borderimg"},zR={class:"footerbtn"},AR={class:"borderimg"},HR={class:"my-header"},jR=["id"],KR={class:"my_content1 bgcolor tablefocus scoperadio"},PR={class:"demo-pagination-block pagination"},XR={class:"dialog-footer footer_div l_btn"},IR={class:"footerbtn flex1"},YR={class:"borderimg"},qR={class:"footerbtn flex1"},QR={class:"borderimg"},ZR={class:"footerbtn flex1"},JR={class:"borderimg"},eO={class:"footerbtn flex1"},tO={class:"borderimg"},nO={class:"ddd"},rO={class:"header_l"},aO={class:"tianjia"},sO={class:"ddd_div",style:{display:"flex"}},iO={class:"demo-input-suffix firsttitle magintop"},oO={class:"l_btn class_btn",style:{width:"auto"}},cO={class:"footerbtn"},uO={class:"borderimg"},fO={class:"my-header"},lO=["id"],gO={class:"delecttitle"},pO={class:"spanclad"},hO={class:"dialog-footer footer_div l_btn"},dO={class:"footerbtn flex1"},vO={class:"borderimg"},yO={class:"footerbtn flex1"},TO={class:"borderimg"},xO={class:"common-layout",style:{margin:"0"}},SO={class:"demo-collapse"},CO={class:"asides_content"},wO={class:"l_padding",style:{padding:"20px 20px 20px 24px"}},_O={class:"line selecwidth"},EO={class:"demo-datetime-picker"},RO=ke(()=>E("span",{class:"inputtext_1"},"选择时间",-1)),OO={class:"block"},DO=ke(()=>E("span",{class:"inputtext_1"},"时间步长",-1)),mO={class:"inputkuang"},MO=ke(()=>E("span",{class:"righttext"},"s",-1)),VO=ke(()=>E("span",{class:"inputtext_1"},"空间步长",-1)),LO={class:"inputkuang"},BO=ke(()=>E("span",{class:"righttext"},"m",-1)),kO=ke(()=>E("span",{class:"inputtext_1"},"模拟时长",-1)),FO={class:"inputkuang"},UO=ke(()=>E("span",{class:"righttext"},"s",-1)),bO=ke(()=>E("span",{class:"inputtext_1"},"输出步长",-1)),NO={class:"inputkuang"},GO=ke(()=>E("span",{class:"righttext"},"s",-1)),$O=ke(()=>E("span",{class:"inputtext_1"},"交互步长",-1)),WO={class:"inputkuang"},zO=ke(()=>E("span",{class:"righttext"},"s",-1)),AO={class:"asdis_btn"},HO={class:"btn"},jO={class:"btn"},KO={class:"logs"},PO={class:"logs_pading"},XO=ke(()=>E("h4",null,"模拟日志",-1)),IO={class:"footerTextBox"},YO={class:"common-layout",style:{margin:"0"}},qO={class:"demo-collapse"},QO={class:"asides_content"},ZO={class:"l_padding",style:{padding:"20px 20px 20px 24px"}},JO={class:"demo-datetime-picker"},eD=ke(()=>E("span",{class:"inputtext_1"},"选择时间",-1)),tD={class:"block"},nD=ke(()=>E("span",{class:"inputtext_1"},"时间步长",-1)),rD={class:"inputkuang"},aD=ke(()=>E("span",{class:"righttext"},"s",-1)),sD=ke(()=>E("span",{class:"inputtext_1"},"空间步长",-1)),iD={class:"inputkuang"},oD=ke(()=>E("span",{class:"righttext"},"m",-1)),cD=ke(()=>E("span",{class:"inputtext_1"},"模拟时长",-1)),uD={class:"inputkuang"},fD=ke(()=>E("span",{class:"righttext"},"s",-1)),lD=ke(()=>E("span",{class:"inputtext_1"},"输出步长",-1)),gD={class:"inputkuang"},pD=ke(()=>E("span",{class:"righttext"},"s",-1)),hD=ke(()=>E("span",{class:"inputtext_1"},"交互步长",-1)),dD={class:"inputkuang"},vD=ke(()=>E("span",{class:"righttext"},"s",-1)),yD={class:"asdis_btn"},TD={class:"btn"},xD={class:"btn"},SD={class:"logs"},CD={class:"logs_pading"},wD=ke(()=>E("h4",null,"模拟日志",-1)),_D={class:"footerTextBox"},ED={__name:"InfoDialoges",props:{addselect:{type:Function,required:!0},headerobj:{type:Object}},emits:["headerclick","childfun","moxingclick","handleSelect"],setup(t,{expose:e,emit:n}){const r=t,a=()=>{de.clearJgAddMode(),de.renderWindow.render()};let s=U(""),i=U(null),o=U({lockReconnect:!1,timeout:28*1e3,timeoutObj:null,serverTimeout0bj:null,timeoutnum:null});U({});let u=U({source:"自荐",type:"预演",sid:"-1"}),c=U({}),f=U({source:"",name:""}),l=U({sgaid:"",name:"",time:""});U("");let g=U(!0),p=U("");U(""),U("");const y=U(1),h=U(3);let d=U(1);const x=U(!0),S=U();let v=U("Fire");const T=U({collfire:!1,collwater:!1}),w=U(!1),C=U({dialogVisible_fire:!1,jianced:!0,monitor:!1,dialogForm:!1,dialogsgdelect:!1});let R=U({value:[""],pickertime:"24-03-06 00:00:00",acctime:"2024-03-06 00:00:00",dt:"",dx:"",reportstep:"",interactionstep:"",totaltime:"",coids:"",cocodes:""}),m=U({value:["SO2"],pickertime:"",acctime:"2024-03-06 00:00:00",dt:"0.1",dx:"10",reportstep:"60",interactionstep:"3600",totaltime:"3600",coids:"1",cocodes:"CO2"}),B=U({value:["SO2"],pickertime:"",acctime:"2024-03-06 00:00:00",dt:"5",dx:"5",reportstep:"60",interactionstep:"3600",totaltime:"3600",coids:"1",cocodes:"CO2"}),M=U({}),D=U(["1","2"]),L=U(""),b=U({top:"50px",logs:"",left:"90px"});U("130px"),U({user:"11",region:"shanghai",date:""});const $=U([]),Q=U([]);let Y=U(1);U("#409eff");const Z=({row:te,rowIndex:G})=>G%2!=0?"evenRow":"oddRow",se=U([]),W=()=>{console.log(x.value),C.value.dialogVisible_fire=!0,S.value=v.value,r.addselect(),ae()},F=()=>{l.value.name==""?xe.error("请选择项目"):(n("headerclick",c.value),C.value.dialogVisible_fire=!1,n("childfun"),n("moxingclick",!0),A(),n("handleSelect","1")),Ne()},j=te=>{te=="3"?S.value=="Fire"?T.value.collfire=!0:S.value=="Water"&&(T.value.collwater=!0):(T.value.collfire=!1,T.value.collwater=!1)},K=()=>{const te={transCode:"D00002",source:u.value.source,type:u.value.type,name:f.value.name,stype:S.value,sid:u.value.sid,aid:p.value};Fe(te).then(G=>{C.value.dialogForm=!1,ae(),Y.value=null}).catch(G=>{xe.error(G.returnMsg)})},P=te=>{c.value=te,console.log(M.value),f.value.name=te.name,p.value=te.aid,l.value.name=te.name,l.value.time=te.time};function Ee(te){y.value=te,ae()}const gt=te=>{console.log(te),te=="1"?(s.value="事故添加",p.value=0,f.value.name=""):te=="2"&&(s.value="事故修改",f.value.name=l.value.name),C.value.dialogForm=!0},xt=()=>{const te={transCode:"D000016",aid:p.value};Fe(te).then(G=>{ae(),xe({message:"删除成功",type:"success"})}).catch(G=>{g.value=!1,xe.error(G.returnMsg)})},ae=()=>{const te={transCode:"D00003",count:h.value,page:y.value,aid:p.value,stype:S.value};Fe(te).then(G=>{g.value=!1,se.value=G.rows,d.value=G.total}).catch(G=>{g.value=!1,xe.error(G.returnMsg)})},A=()=>{Fe({transCode:"D10013"}).then(G=>{console.log(G),Q.value=G.rows}).catch(G=>{xe.error(G.returnMsg)})},Ce=()=>{var te=new Date,G=Date.parse(te),St=Hr(G);return St},we=()=>{Je()},Je=()=>{S.value=="Fire"?($.value=[{code:"SO2",coid:1,density:0,diffcoe:.2,name:"二氧化硫",speheat:0}],m.value.pickertime=Ce(),m.value.acctime=Ce(),R.value=m.value,console.log(R.value)):(B.value.pickertime=Ce(),B.value.acctime=Ce(),R.value=B.value)},en=()=>{var te=Date.parse(R.value.pickertime);R.value.acctime=Hr(te)},J=te=>{console.log(te);let G=[],St=[];for(let Ct=0;Ct<=te.length-1;Ct++)console.log(te[Ct]),G.push(te[Ct].coid),St.push(te[Ct].code);R.value.coids=G.join(","),R.value.cocodes=St.join(",")},q=()=>{const te={transCode:"D00008",aid:p.value,acctime:R.value.acctime,dt:R.value.dt,dx:R.value.dx,reportstep:R.value.reportstep,interactionstep:R.value.interactionstep,totaltime:R.value.totaltime,coids:R.value.coids,cocodes:R.value.cocodes};Fe(te).then(G=>{pt()}).catch(G=>{xe.error(G.returnMsg)})},ve=()=>{};function ye(te){te.includes("msg=heartCheck")||(L.value=L.value+`
- `+te,b.value.logs=L.value);let G=document.getElementById("textarea_id");G.scrollTop=G.scrollHeight}async function Ne(){const te={transCode:"D000015",aid:p.value};await Fe(te).then(G=>{G.returnCode=="000000000"?(pt(),ye(G.logs)):xe({message:G.returnMsg,type:"error"})}).catch(G=>{})}function pt(){const te="ws://www.adicn.com/diswebsocket?projectId="+p.value;console.log(te),i=new WebSocket(te),i.onopen=pn,i.onmessage=hn,i.onerror=tn,i.onclose=I}const pn=te=>{console.log("WebSocket连接成功",te),Mn()},hn=te=>{ye(te.data),Ht()},tn=te=>{console.log("连接错误",te),socket.close(),et()},I=te=>{console.log("断开连接",te)},et=()=>{o.value.lockReconnect||(o.value.lockReconnect=!0,o.value.timeoutnum&&clearTimeout(o.value.timeoutnum),o.value.timeoutnum=setTimeout(function(){pt(),o.value.lockReconnect=!1},1e4))},Ht=()=>{clearTimeout(o.value.timeoutObj),clearTimeout(o.value.serverTimeoutObj),Mn()},Mn=()=>{o.value.timeoutObj&&clearTimeout(o.value.timeoutObj),o.value.serverTimeoutObj&&clearTimeout(o.value.serverTimeoutObj),o.value.timeoutObj=setTimeout(function(){i.readyState==1?i.send("heartCheck"):et(),o.value.serverTimeoutObj=setTimeout(function(){i.close()},o.value.timeout)},o.value.timeout)};return gs(()=>{i.value=null,b.logs=""}),Dn(()=>{}),e({monitor:w,accident2:j,leftcoll:T,classradio:S,aid:p,dialogVisible:x,addinitial:Je,changeModel:a}),(te,G)=>{const St=ee("el-image"),Ct=ee("el-radio"),_s=ee("el-radio-group"),Vn=ee("el-table-column"),ne=ee("el-table"),N=ee("el-pagination"),Re=ee("el-input"),Oe=ee("el-form-item"),jt=ee("el-icon"),mt=ee("el-option"),Lr=ee("el-date-picker"),Br=ee("el-form"),kr=ee("el-collapse-item"),Mt=ee("el-collapse"),wt=ee("el-aside"),Es=z0("loading");return Be(),Xe("div",FR,[O(V(yt),{modelValue:x.value,"onUpdate:modelValue":G[3]||(G[3]=X=>x.value=X),width:"482","align-center":"",modal:!1,"close-on-click-modal":!1,draggable:"",class:"dialog_class bgcolor"},{header:k(({titleId:X,titleClass:_t})=>[E("div",UR,[O(St,{src:V(tt),fit:"contain"},null,8,["src"]),E("h4",{id:X,class:vt(_t)},"灾害类型",10,bR)])]),footer:k(()=>[E("div",GR,[E("div",$R,[E("div",WR,[O(V(ue),{onClick:G[1]||(G[1]=X=>x.value=!1)},{default:k(()=>[re("取消")]),_:1})])]),E("div",zR,[E("div",AR,[O(V(ue),{onClick:G[2]||(G[2]=X=>{W(),x.value=!1})},{default:k(()=>[re(" 确定 ")]),_:1})])])])]),default:k(()=>[E("div",NR,[O(_s,{modelValue:V(v),"onUpdate:modelValue":G[0]||(G[0]=X=>Ze(v)?v.value=X:v=X),class:"radio-group"},{default:k(()=>[O(Ct,{label:"Fire"},{default:k(()=>[re("火灾")]),_:1}),O(Ct,{label:"Water"},{default:k(()=>[re("突水")]),_:1}),O(Ct,{label:"9"},{default:k(()=>[re("瓦斯爆炸")]),_:1})]),_:1},8,["modelValue"])])]),_:1},8,["modelValue"]),O(V(yt),{modelValue:C.value.dialogVisible_fire,"onUpdate:modelValue":G[17]||(G[17]=X=>C.value.dialogVisible_fire=X),width:"600",modal:!1,"close-on-click-modal":!1,draggable:"",class:"dialog_class bgcolor tablefocus"},{header:k(({titleId:X,titleClass:_t})=>[E("div",HR,[O(St,{src:V(tt),fit:"contain"},null,8,["src"]),E("h4",{id:X,class:vt(_t)}," 事故列表",10,jR)])]),default:k(()=>[E("div",KR,[Tt((Be(),yr(ne,{data:se.value,style:{width:"100%"},"element-loading-text":"Loading...","element-loading-background":"rgba(0, 10, 0, 0.1)","row-class-name":Z,"header-cell-style":{background:" #375A88"},onSelect:ve},{default:k(()=>[O(Vn,{width:"50"},{default:k(X=>[O(Ct,{modelValue:V(Y),"onUpdate:modelValue":G[4]||(G[4]=_t=>Ze(Y)?Y.value=_t:Y=_t),label:X.row.aid,onChange:_t=>P(X.row)},null,8,["modelValue","label","onChange"])]),_:1}),O(Vn,{type:"index",label:"序号",width:"50"}),O(Vn,{prop:"name",label:"名称"}),O(Vn,{prop:"name",label:"来源",width:"120"}),O(Vn,{prop:"time",label:"时间",width:"180"})]),_:1},8,["data"])),[[Es,V(g)]]),E("div",PR,[O(N,{"current-page":y.value,"onUpdate:currentPage":G[5]||(G[5]=X=>y.value=X),"page-size":h.value,"onUpdate:pageSize":G[6]||(G[6]=X=>h.value=X),small:"",background:"",layout:"prev, total,pager, next, jumpe,",total:parseInt(V(d)),class:"mt-4",onCurrentChange:Ee},null,8,["current-page","page-size","total"])]),E("div",XR,[E("div",IR,[E("div",YR,[O(V(ue),{onClick:G[7]||(G[7]=X=>{gt("1")})},{default:k(()=>[re("添加")]),_:1})])]),E("div",qR,[E("div",QR,[O(V(ue),{onClick:G[8]||(G[8]=X=>gt("2"))},{default:k(()=>[re(" 修改 ")]),_:1})])]),E("div",ZR,[E("div",JR,[O(V(ue),{onClick:G[9]||(G[9]=X=>C.value.dialogsgdelect=!0)},{default:k(()=>[re(" 删除 ")]),_:1})])]),E("div",eO,[E("div",tO,[O(V(ue),{onClick:G[10]||(G[10]=X=>F())},{default:k(()=>[re(" 确定 ")]),_:1})])])])]),Tt(E("div",nO,[E("div",rO,[O(St,{src:V(tt),fit:"contain"},null,8,["src"]),E("h4",aO,rt(V(s)),1),E("div",{class:"closeimg",onClick:G[11]||(G[11]=X=>C.value.dialogForm=!1)},[O(St,{src:V(ai),fit:"contain",style:{"margin-top":"-10px"}},null,8,["src"])]),E("div",sO,[E("div",iO,[O(Oe,{label:"事故名称"},{default:k(()=>[O(Re,{modelValue:V(f).name,"onUpdate:modelValue":G[12]||(G[12]=X=>V(f).name=X),class:"w-50 m-2",placeholder:"某次某事件火灾事故"},null,8,["modelValue"])]),_:1}),E("div",oO,[E("div",cO,[E("div",uO,[O(V(ue),{onClick:G[13]||(G[13]=X=>K())},{default:k(()=>[re(" 确定 ")]),_:1})])])])])])])],512),[[Dt,C.value.dialogForm]]),O(V(yt),{modelValue:C.value.dialogsgdelect,"onUpdate:modelValue":G[16]||(G[16]=X=>C.value.dialogsgdelect=X),width:"400",class:"dialog_class bgcolor tianjia"},{header:k(({titleId:X,titleClass:_t})=>[E("div",fO,[O(St,{src:V(tt),fit:"contain"},null,8,["src"]),E("h4",{id:X,class:vt(_t)},"删除",10,lO)])]),default:k(()=>[E("h4",gO,[re(" 是否确认删除"),E("span",pO,rt(V(l).name),1)]),E("div",hO,[E("div",dO,[E("div",vO,[O(V(ue),{onClick:G[14]||(G[14]=X=>C.value.dialogsgdelect=!1)},{default:k(()=>[re("取消")]),_:1})])]),E("div",yO,[E("div",TO,[O(V(ue),{onClick:G[15]||(G[15]=X=>{xt(),C.value.dialogsgdelect=!1})},{default:k(()=>[re(" 确定 ")]),_:1})])])])]),_:1},8,["modelValue"])]),_:1},8,["modelValue"]),Tt(E("div",xO,[O(wt,{width:"278px",class:"L_aside L_aside1 asideg asidegbg leftbgimg"},{default:k(()=>[E("div",SO,[O(Mt,{modelValue:V(D),"onUpdate:modelValue":G[30]||(G[30]=X=>Ze(D)?D.value=X:D=X),accordion:""},{default:k(()=>[O(kr,{name:"1"},{title:k(()=>[O(jt,{class:"iconimg Frame2",fit:"contain"}),re(" 火灾"),O(jt,{class:"header-icon"})]),default:k(()=>[E("div",CO,[O(Br,{inline:!0,model:V(R),class:"demo-form-inline"},{default:k(()=>[E("div",wO,[E("div",_O,[O(Oe,{label:"污染物选择:"},{default:k(()=>[O(V(hu),{modelValue:$.value,"onUpdate:modelValue":G[18]||(G[18]=X=>$.value=X),multiple:"",filterable:"","allow-create":"","default-first-option":"","reserve-keyword":!1,"value-key":"code",onChange:G[19]||(G[19]=X=>J(X)),placeholder:"请选择"},{default:k(()=>[(Be(!0),Xe(hr,null,ja(Q.value,X=>(Be(),yr(mt,{key:X.coid,label:X.code,value:X},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1})]),E("ul",null,[E("li",null,[E("div",EO,[RO,E("div",OO,[O(Lr,{modelValue:V(R).pickertime,"onUpdate:modelValue":G[20]||(G[20]=X=>V(R).pickertime=X),type:"datetime",placeholder:"Pick a Date",format:"YYYY-MM-DD HH:mm:ss",onChange:G[21]||(G[21]=X=>en())},null,8,["modelValue"])])])]),E("li",null,[DO,E("div",mO,[O(Re,{modelValue:V(R).dt,"onUpdate:modelValue":G[22]||(G[22]=X=>V(R).dt=X)},null,8,["modelValue"]),MO])]),E("li",null,[VO,E("div",LO,[O(Re,{modelValue:V(R).dx,"onUpdate:modelValue":G[23]||(G[23]=X=>V(R).dx=X)},null,8,["modelValue"]),BO])]),E("li",null,[kO,E("div",FO,[O(Re,{modelValue:V(R).totaltime,"onUpdate:modelValue":G[24]||(G[24]=X=>V(R).totaltime=X)},null,8,["modelValue"]),UO])]),E("li",null,[bO,E("div",NO,[O(Re,{modelValue:V(R).reportstep,"onUpdate:modelValue":G[25]||(G[25]=X=>V(R).reportstep=X)},null,8,["modelValue"]),GO])]),E("li",null,[$O,E("div",WO,[O(Re,{modelValue:V(R).interactionstep,"onUpdate:modelValue":G[26]||(G[26]=X=>V(R).interactionstep=X)},null,8,["modelValue"]),zO])])])]),E("div",AO,[E("div",HO,[E("span",{class:"spantext",onClick:G[27]||(G[27]=X=>{we()})},"初始数据")]),E("div",jO,[E("span",{class:"spantext",onClick:G[28]||(G[28]=X=>{q()})},"开始计算")])]),E("div",KO,[E("div",PO,[XO,E("div",IO,[O(Re,{class:"footerText",type:"textarea",id:"textarea_id",modelValue:V(b).logs,"onUpdate:modelValue":G[29]||(G[29]=X=>V(b).logs=X)},null,8,["modelValue"])])])])]),_:1},8,["model"])])]),_:1})]),_:1},8,["modelValue"])])]),_:1})],512),[[Dt,T.value.collfire]]),Tt(E("div",YO,[O(wt,{width:"278px",class:"L_aside L_aside1 asideg asidegbg leftbgimg"},{default:k(()=>[E("div",qO,[O(Mt,{modelValue:V(D),"onUpdate:modelValue":G[41]||(G[41]=X=>Ze(D)?D.value=X:D=X),accordion:""},{default:k(()=>[O(kr,{name:"1"},{title:k(()=>[O(jt,{class:"iconimg Frame3",fit:"contain"}),re(" 突水"),O(jt,{class:"header-icon"})]),default:k(()=>[E("div",QO,[O(Br,{inline:!0,model:V(R),class:"demo-form-inline"},{default:k(()=>[E("div",ZO,[E("ul",null,[E("li",null,[E("div",JO,[eD,E("div",tD,[O(Lr,{modelValue:V(R).pickertime,"onUpdate:modelValue":G[31]||(G[31]=X=>V(R).pickertime=X),type:"datetime",placeholder:"Pick a Date",format:"YYYY-MM-DD HH:mm:ss","value-format":"YYYY-MM-DD HH:mm:ss",onChange:G[32]||(G[32]=X=>en())},null,8,["modelValue"])])])]),E("li",null,[nD,E("div",rD,[O(Re,{modelValue:V(R).dt,"onUpdate:modelValue":G[33]||(G[33]=X=>V(R).dt=X)},null,8,["modelValue"]),aD])]),E("li",null,[sD,E("div",iD,[O(Re,{modelValue:V(R).dx,"onUpdate:modelValue":G[34]||(G[34]=X=>V(R).dx=X)},null,8,["modelValue"]),oD])]),E("li",null,[cD,E("div",uD,[O(Re,{modelValue:V(R).totaltime,"onUpdate:modelValue":G[35]||(G[35]=X=>V(R).totaltime=X)},null,8,["modelValue"]),fD])]),E("li",null,[lD,E("div",gD,[O(Re,{modelValue:V(R).reportstep,"onUpdate:modelValue":G[36]||(G[36]=X=>V(R).reportstep=X)},null,8,["modelValue"]),pD])]),E("li",null,[hD,E("div",dD,[O(Re,{modelValue:V(R).interactionstep,"onUpdate:modelValue":G[37]||(G[37]=X=>V(R).interactionstep=X)},null,8,["modelValue"]),vD])])])]),E("div",yD,[E("div",TD,[E("span",{class:"spantext",onClick:G[38]||(G[38]=X=>{we()})},"初始数据")]),E("div",xD,[E("span",{class:"spantext",onClick:G[39]||(G[39]=X=>{q()})},"开始计算")])]),E("div",SD,[E("div",CD,[wD,E("div",_D,[O(Re,{class:"footerText",type:"textarea",id:"textarea_id",modelValue:V(b).logs,"onUpdate:modelValue":G[40]||(G[40]=X=>V(b).logs=X)},null,8,["modelValue"])])])])]),_:1},8,["model"])])]),_:1})]),_:1},8,["modelValue"])])]),_:1})],512),[[Dt,T.value.collwater]])])}}},RD=On(ED,[["__scopeId","data-v-b0eb943a"]]);const OD={class:"my-header"},DD=["id"],mD={class:"dialog-footer footer_div l_btn"},MD={class:"footerbtn flex1"},VD={class:"borderimg"},LD={class:"footerbtn flex1"},BD={class:"borderimg"},kD={__name:"SetPipe",emits:["Dtext"],setup(t,{expose:e,emit:n}){let r=U(!1),a=U("管道信息"),s=U("内容");e({dialoglog:r});let i=U(null),o=U(null);const u=()=>{n("Dtext",o.value)};gs(()=>{clearInterval(i.value)}),Dn(()=>{c()}),du(()=>{clearInterval(i.value)});function c(){i.value=setInterval(()=>{o.value=de.selectObj,s.value=o.value},200)}return(f,l)=>{const g=ee("el-image");return Be(),Xe("div",null,[O(V(yt),{width:"300px",modelValue:V(r),"onUpdate:modelValue":l[2]||(l[2]=p=>Ze(r)?r.value=p:r=p),modal:!1,"close-on-click-modal":!1,draggable:"",fullscreen:!1,"modal-append-to-body":!1,"modal-class":"summary-dlg",class:"right log_class bgcolor tianjia asideg asidegbg leftbgimg"},{header:k(({titleId:p,titleClass:y})=>[E("div",OD,[O(g,{src:V(tt),fit:"contain"},null,8,["src"]),E("h4",{id:p,class:vt(y)},rt(V(a)),11,DD)])]),default:k(()=>[E("div",null,rt(V(s)),1),E("div",mD,[E("div",MD,[E("div",VD,[O(V(ue),{onClick:l[0]||(l[0]=p=>Ze(r)?r.value=!1:r=!1)},{default:k(()=>[re("取消")]),_:1})])]),E("div",LD,[E("div",BD,[O(V(ue),{onClick:l[1]||(l[1]=p=>{u(),Ze(r)?r.value=!1:r=!1})},{default:k(()=>[re(" 确定 ")]),_:1})])])])]),_:1},8,["modelValue"])])}}},FD=On(kD,[["__scopeId","data-v-61cde00e"]]);const ze=t=>(ea("data-v-aa3397b7"),t=t(),ta(),t),UD={class:"l_Dialog bbb"},bD={class:"common-layout",style:{margin:"0"}},ND={class:"demo-collapse"},GD={class:"asides_content"},$D={class:"jc_content tablecolor"},WD={class:"jc_padding"},zD={class:"xian btncolor tablefocus"},AD={class:"asdis_btn"},HD=ze(()=>E("div",{class:"btns"},[E("span",{class:"spantext"},"添加")],-1)),jD=[HD],KD=ze(()=>E("div",{class:"btns"},[E("span",{class:"spantext"},"修改")],-1)),PD=[KD],XD=ze(()=>E("div",{class:"btns"},[E("span",{class:"spantext"},"删除")],-1)),ID=[XD],YD={class:"xian tablefocus",style:{"margin-top":"20px"}},qD={class:"header_l header_z"},QD=ze(()=>E("h4",{class:"tianjia"},"灾害源表",-1)),ZD={class:"asdis_btn"},JD=ze(()=>E("div",{class:"btns"},[E("span",{class:"spantext"},"添加")],-1)),em=[JD],tm=ze(()=>E("div",{class:"btns"},[E("span",{class:"spantext"}," 修改")],-1)),nm=[tm],rm=ze(()=>E("div",{class:"btns"},[E("span",{class:"spantext"},"删除")],-1)),am=[rm],sm={class:"flex_a"},im=ze(()=>E("span",{class:"spantext"},"确定",-1)),om=[im],cm=ze(()=>E("div",{style:{height:"200px"}},null,-1)),um={class:"common-layout",style:{margin:"0"}},fm={class:"demo-collapse"},lm={class:"asides_content"},gm={class:"jc_content tablecolor"},pm={class:"jc_padding"},hm={class:"xian btncolor tablefocus"},dm={class:"asdis_btn"},vm=ze(()=>E("div",{class:"btns"},[E("span",{class:"spantext"},"添加")],-1)),ym=[vm],Tm=ze(()=>E("div",{class:"btns"},[E("span",{class:"spantext"},"修改")],-1)),xm=[Tm],Sm=ze(()=>E("div",{class:"btns"},[E("span",{class:"spantext"},"删除")],-1)),Cm=[Sm],wm=ze(()=>E("div",{class:"flex_a"},[E("div",{class:"btns"},[E("span",{class:"spantext"},"确定")])],-1)),_m={class:"xian tablefocus",style:{"margin-top":"20px"}},Em={class:"header_l header_z"},Rm=ze(()=>E("h4",{class:"tianjia"},"灾害源表",-1)),Om={class:"asdis_btn"},Dm=ze(()=>E("div",{class:"btns"},[E("span",{class:"spantext"},"添加")],-1)),mm=[Dm],Mm=ze(()=>E("div",{class:"btns"},[E("span",{class:"spantext"}," 修改")],-1)),Vm=[Mm],Lm=ze(()=>E("div",{class:"btns"},[E("span",{class:"spantext"},"删除")],-1)),Bm=[Lm],km=ze(()=>E("div",{class:"btns"},[E("span",{class:"spantext"},"确定")],-1)),Fm=[km],Um=ze(()=>E("div",{style:{height:"200px"}},null,-1)),bm={class:"my-header"},Nm=["id"],Gm={class:"demo-input-suffix firsttitle magintop"},$m={class:"btn2"},Wm={class:"btn2",style:{"padding-left":"10px"}},zm={class:"input"},Am={class:"dialog-footer footer_div l_btn"},Hm={class:"footerbtn flex1"},jm={class:"borderimg"},Km={class:"footerbtn flex1"},Pm={class:"borderimg"},Xm={class:"my-header"},Im=["id"],Ym={class:"demo-input-suffix firsttitle leftbgimg2"},qm={class:"guand_1"},Qm=ze(()=>E("span",{class:"spantext"},"搜索",-1)),Zm=[Qm],Jm={class:"demo-pagination-block",style:{"margin-top":"20px"}},eM={class:"dialog-footer footer_div l_btn"},tM={class:"footerbtn flex1"},nM={class:"borderimg"},rM={class:"footerbtn flex1"},aM={class:"borderimg"},sM={class:"my-header"},iM=["id"],oM={class:"dialog-footer footer_div l_btn"},cM={class:"footerbtn flex1"},uM={class:"borderimg"},fM={class:"footerbtn flex1"},lM={class:"borderimg"},gM={class:"my-header"},pM=["id"],hM={class:"dialog-footer footer_div l_btn"},dM={class:"footerbtn flex1"},vM={class:"borderimg"},yM={class:"footerbtn flex1"},TM={class:"borderimg"},xM={class:"my-header"},SM=["id"],CM={class:"delecttitle"},wM={class:"spanclad"},_M={class:"dialog-footer footer_div l_btn"},EM={class:"footerbtn flex1"},RM={class:"borderimg"},OM={class:"footerbtn flex1"},DM={class:"borderimg"},mM={__name:"InfoDisaster",props:{classradio:{type:String},aid:{type:String}},setup(t,{expose:e}){const n=t,r=()=>{de.clearJgAddMode(),de.renderWindow.render()};let a=U({addEied:""}),s=U(),i=U("");const o=U({adddialog:!1,dialogsgdelect:!1,dianadddialog:!1,dialogVisiblenode:!1,isDisasterfire:!1,isDisasterwter:!1,adddwater:!1});let u=U("");const c=U(1),f=U(5),l=U([]),g=U([]);U(!0);const p=U({collfire:!1,collwater:!1});let y=U({}),h=U(""),d=U(""),x=U(""),S=U(""),v=U(1),T=U("0");U();let w=U(300);const C=U(),R=U([]),m=U(77),B=U(120);let M=vu({pname:"",site:.1}),D=U({svid:0,timeline:"",val1:"",val2:"",val3:"",val4:""}),L=U({});const b=U([]);let $=U(),Q=U(),Y=U(["1","2"]),Z=U("");const se=({row:ne,rowIndex:N})=>N%2!=0?"evenRow":"oddRow";U([]);const W=U([]),F=U([]),j=ne=>{ne=="1"?n.classradio=="Fire"?(p.value.collfire=!0,p.value.collwater=!1):n.classradio=="Water"&&(p.value.collwater=!0,p.value.collfire=!1):(p.value.collwater=!1,p.value.collfire=!1)},K=ne=>{console.log(ne),u.value=ne.name,h.value=ne.id},P=()=>{s.value.dialoglog=!0,de.selectPipes(),console.log(s.value.dialoglog)},Ee=ne=>{$.value=ne;const N={transCode:"D00005",aid:$.value};Fe(N).then(Re=>{n.classradio=="Fire"?W.value=Re.rows:l.value=Re.rows}).catch(Re=>{xe.error(Re.returnMsg)})},gt=()=>{const ne={transCode:"D00004",pid:h.value,aid:$.value,stype:n.classradio,site:M.site};Fe(ne).then(N=>{xe({message:N.returnMsg,type:"success"}),Ee($.value)}).catch(N=>{xe.error(N.returnMsg)})},xt=()=>{T.value=="1"?(gt(),o.value.dianadddialog=!1):T.value=="2"?n.classradio=="Fire"&&(o.value.dianadddialog=!1):(T.value="3")&&ye(),Ee($.value)},ae=ne=>{console.log(ne),L.value=ne,x.value=ne.sid,Z.value=ne.pname},A=ne=>{Q.value=ne},Ce=()=>{Q.value=="1"?we():Vn()},we=()=>{const ne={transCode:"D000011",sid:x.value};console.log(ne),Fe(ne).then(N=>{xe({message:"删除成功",type:"success"}),Ee($.value)}).catch(N=>{xe.error(N.returnMsg)})};function Je(){tn(S.value)}function en(ne){}const J=ne=>{tn(S.value)},q=()=>{u.value="",h.value="",M.site=0,q.value="1",T.value="1",i.value="添加"},ve=()=>{T.value="3",i.value="修改",JSON.stringify(L.value)=="{}"?xe.error("你还没有选中修改的项目"):(o.value.dianadddialog=!0,$.value=L.value.aid,h.value=L.value.pid,M.site=L.value.site,u.value=L.value.pname)},ye=()=>{const ne={transCode:"D000010",pid:h.value,site:M.site,sid:L.value.sid};Fe(ne).then(N=>{xe({message:N.returnMsg,type:"success"})}).catch(N=>{})},Ne=()=>{tn("")},pt=()=>{pn()},pn=()=>{u.value="",c.value=1,console.log(),R.value.length!=0&&(h.value=R.value[0].id,u.value=R.value[0].name)},hn=(ne,N)=>{if(ne.length>1){C.value.clearSelection(),C.value.toggleRowSelection(N,!0),R.value=ne[1];return}ne.length==1?R.value=ne:ne.length==0},tn=ne=>{const N={transCode:"D00001",count:f.value,page:c.value,searchtag:ne};Fe(N).then(Re=>{b.value=Re.rows,v.value=Re.total}).catch(Re=>{})},I=(ne,N)=>{o.value.isDisasterfire=!0,x.value=N.sid,Ht()},et=(ne,N)=>{o.value.disDisasterwter=!0,x.value=N.sid,Ht()},Ht=()=>{const ne={transCode:"D00007",sid:x.value};Fe(ne).then(N=>{console.log(N.rows),n.classradio=="Fire"?g.value=N.rows:F.value=N.rows}).catch(N=>{})},Mn=()=>{if(a.value.addEied=="a"){const ne={transCode:"D00006",sid:x.value,timeline:D.value.timeline,val1:D.value.val1,val2:D.value.val2,val3:D.value.val3,val4:D.value.val4};Fe(ne).then(N=>{xe({message:N.returnMsg,type:"success"}),Ht()}).catch(N=>{xe.error(N.returnMsg)})}else St()},te=()=>{a.value.addEied="a",D.value.timeline="",D.value.val1="",D.value.val2="",D.value.val3="",D.value.val4="",i.value="添加"},G=()=>{a.value.addEied="x",i.value="修改",JSON.stringify(y.value)=="{}"?xe.error("你还没有选中修改的项目"):(n.classradio=="Fire"?o.value.adddialog=!0:o.value.adddwater=!0,D.value.timeline=y.value.timeline,D.value.val1=y.value.val1,D.value.val2=y.value.val2,D.value.val3=y.value.val3,D.value.val4=y.value.val4)},St=()=>{const ne={transCode:"D000012",svid:y.value.svid,timeline:D.value.timeline,val1:D.value.val1,val2:D.value.val2,val3:D.value.val3,val4:D.value.val4};Fe(ne).then(N=>{xe({message:N.returnMsg,type:"success"}),Ht()}).catch(N=>{xe.error(N.returnMsg)})},Ct=ne=>{console.log(ne),y.value=ne,x.value=ne.sid,Z.value="检测表的一条信息",d.value=ne.svid},_s=ne=>{console.log(ne),y.value=ne,x.value=ne.sid,Z.value="检测表的一条信息",d.value=ne.svid},Vn=()=>{const ne={transCode:"D000013",svid:d.value};Fe(ne).then(N=>{xe({message:"删除成功",type:"success"}),Ht()}).catch(N=>{xe.error(N.returnMsg)})};return Dn(()=>{}),e({sour:p,accident3:j,handledisaster:Ee,changeModel:r}),(ne,N)=>{const Re=ee("el-icon"),Oe=ee("el-table-column"),jt=ee("el-table"),mt=ee("el-image"),Lr=ee("el-collapse-item"),Br=ee("el-collapse"),kr=ee("el-aside"),Mt=ee("el-input"),wt=ee("el-form-item"),Es=ee("el-input-number"),X=ee("el-pagination"),_t=ee("el-form");return Be(),Xe(hr,null,[E("div",UD,[Tt(E("div",bD,[O(kr,{width:"354px",class:"L_aside L_aside1 asideg asidegbg leftbgimg1"},{default:k(()=>[E("div",ND,[O(Br,{modelValue:V(Y),"onUpdate:modelValue":N[10]||(N[10]=H=>Ze(Y)?Y.value=H:Y=H),accordion:""},{default:k(()=>[O(Lr,{name:"1"},{title:k(()=>[O(Re,{class:"iconimg Frame2",fit:"contain"}),re(" 火灾"),O(Re,{class:"header-icon"})]),default:k(()=>[E("div",GD,[E("div",$D,[E("div",WD,[E("div",zD,[O(jt,{data:W.value,style:{width:"100%"},onRowClick:N[0]||(N[0]=H=>ae(H)),"row-class-name":se,"max-height":"350px","header-cell-style":{background:"rgba(13, 22, 57, 0.96) "},"highlight-current-row":!0},{default:k(()=>[O(Oe,{prop:"pname",label:"选择巷道",width:"130"}),O(Oe,{prop:"site",label:"位置",width:"70"}),O(Oe,{label:"操作",width:"100"},{default:k(H=>[O(V(ue),{size:"small",type:"success",onClick:Mo(Vt=>I(H.$index,H.row),["stop"])},{default:k(()=>[re("查看")]),_:2},1032,["onClick"])]),_:1})]),_:1},8,["data","header-cell-style"]),E("div",AD,[E("div",{class:"flex_a",onClick:N[1]||(N[1]=H=>{q(),o.value.dianadddialog=!0})},jD),E("div",{class:"flex_a",onClick:N[2]||(N[2]=H=>ve())},PD),E("div",{class:"flex_a",onClick:N[3]||(N[3]=H=>{A("1"),o.value.dialogsgdelect=!0})},ID)])]),Tt(E("div",YD,[E("div",qD,[O(mt,{src:V(tt),fit:"contain"},null,8,["src"]),QD,E("div",{class:"closeimg",onClick:N[4]||(N[4]=H=>o.value.isDisasterfire=!1)},[O(mt,{src:V(ai),fit:"contain"},null,8,["src"])])]),O(jt,{data:g.value,style:{width:"100%"},"row-class-name":se,"header-cell-style":{background:"rgba(13, 22, 57, 0.96) "},"max-height":V(w),onRowClick:N[5]||(N[5]=H=>Ct(H)),"highlight-current-row":!0},{default:k(()=>[O(Oe,{prop:"timeline",label:"时间",width:"70"}),O(Oe,{prop:"val1",label:"温度℃",width:"70"}),O(Oe,{prop:"val2",label:"污染物1浓度",width:"100"}),O(Oe,{prop:"val2",label:"污染物2浓度",width:"100"})]),_:1},8,["data","header-cell-style","max-height"]),E("div",ZD,[E("div",{class:"flex_a",onClick:N[6]||(N[6]=H=>{te(),o.value.adddialog=!0})},em),E("div",{class:"flex_a",onClick:N[7]||(N[7]=H=>G())},nm),E("div",{class:"flex_a",onClick:N[8]||(N[8]=H=>{A("2"),o.value.dialogsgdelect=!0})},am),E("div",sm,[E("div",{class:"btns",onClick:N[9]||(N[9]=H=>o.value.isDisasterfire=!1)},om)])])],512),[[Dt,o.value.isDisasterfire]])]),cm])])]),_:1})]),_:1},8,["modelValue"])])]),_:1})],512),[[Dt,p.value.collfire]]),Tt(E("div",um,[O(kr,{width:"354px",class:"L_aside L_aside1 asideg asidegbg leftbgimg1"},{default:k(()=>[E("div",fm,[O(Br,{modelValue:V(Y),"onUpdate:modelValue":N[21]||(N[21]=H=>Ze(Y)?Y.value=H:Y=H),accordion:""},{default:k(()=>[O(Lr,{name:"1"},{title:k(()=>[O(Re,{class:"iconimg Frame3",fit:"contain"}),re(" 突水"),O(Re,{class:"header-icon"})]),default:k(()=>[E("div",lm,[E("div",gm,[E("div",pm,[E("div",hm,[O(jt,{data:l.value,style:{width:"100%"},"row-class-name":se,"header-cell-style":{background:"rgba(13, 22, 57, 0.96) "},onRowClick:N[11]||(N[11]=H=>ae(H)),"max-height":"350px","highlight-current-row":!0},{default:k(()=>[O(Oe,{prop:"pname",label:"选择巷道",width:"130"}),O(Oe,{prop:"site",label:"位置",width:"70"}),O(Oe,{label:"操作",width:"100"},{default:k(H=>[O(V(ue),{size:"small",type:"success",onClick:Mo(Vt=>et(H.$index,H.row),["stop"])},{default:k(()=>[re("查看")]),_:2},1032,["onClick"])]),_:1})]),_:1},8,["data","header-cell-style"]),E("div",dm,[E("div",{class:"flex_a",onClick:N[12]||(N[12]=H=>{q(),o.value.dianadddialog=!0})},ym),E("div",{class:"flex_a",onClick:N[13]||(N[13]=H=>ve())},xm),E("div",{class:"flex_a",onClick:N[14]||(N[14]=H=>{A("1"),o.value.dialogsgdelect=!0})},Cm),wm])]),Tt(E("div",_m,[E("div",Em,[O(mt,{src:V(tt),fit:"contain"},null,8,["src"]),Rm,E("div",{class:"closeimg",onClick:N[15]||(N[15]=H=>o.value.disDisasterwter=!1)},[O(mt,{src:V(ai),fit:"contain"},null,8,["src"])])]),O(jt,{data:F.value,style:{width:"100%"},"max-height":V(w),"row-class-name":se,"header-cell-style":{background:"rgba(13, 22, 57, 0.96) "},onRowClick:N[16]||(N[16]=H=>_s(H)),"highlight-current-row":!0},{default:k(()=>[O(Oe,{prop:"timeline",label:"时间"}),O(Oe,{prop:"val1",label:"突水量(m³/s)"})]),_:1},8,["data","max-height","header-cell-style"]),E("div",Om,[E("div",{class:"flex_a",onClick:N[17]||(N[17]=H=>{te(),o.value.adddwater=!0})},mm),E("div",{class:"flex_a",onClick:N[18]||(N[18]=H=>G())},Vm),E("div",{class:"flex_a",onClick:N[19]||(N[19]=H=>{A("2"),o.value.dialogsgdelect=!0})},Bm),E("div",{class:"flex_a",onClick:N[20]||(N[20]=H=>o.value.disDisasterwter=!1)},Fm)])],512),[[Dt,o.value.disDisasterwter]])]),Um])])]),_:1})]),_:1},8,["modelValue"])])]),_:1})],512),[[Dt,p.value.collwater]]),O(V(yt),{modelValue:o.value.dianadddialog,"onUpdate:modelValue":N[28]||(N[28]=H=>o.value.dianadddialog=H),width:"400","align-center":"",modal:!1,"close-on-click-modal":!1,draggable:"",fullscreen:!1,"modal-append-to-body":!1,"modal-class":"summary-dlg",class:"dialog_class bgcolor tianjia"},{header:k(({titleId:H,titleClass:Vt})=>[E("div",bm,[O(mt,{src:V(tt),fit:"contain"},null,8,["src"]),E("h4",{id:H,class:vt(Vt)},rt(V(i)),11,Nm)])]),default:k(()=>[E("div",Gm,[O(wt,{label:"管道名称","label-width":m.value},{default:k(()=>[O(Mt,{modelValue:V(u),"onUpdate:modelValue":N[22]||(N[22]=H=>Ze(u)?u.value=H:u=H),class:"w-50 m-2",placeholder:"管道名称","prefix-icon":V(Vo)},null,8,["modelValue","prefix-icon"])]),_:1},8,["label-width"]),E("div",$m,[O(V(ue),{type:"primary",onClick:N[23]||(N[23]=H=>{Ne(),o.value.dialogVisiblenode=!0})},{default:k(()=>[re("选择管道")]),_:1})]),E("div",Wm,[O(V(ue),{type:"primary",onClick:N[24]||(N[24]=H=>P())},{default:k(()=>[re("3D管道选择")]),_:1})])]),E("div",zm,[O(wt,{label:"位置","label-width":m.value},{default:k(()=>[O(Es,{modelValue:V(M).site,"onUpdate:modelValue":N[25]||(N[25]=H=>V(M).site=H),min:0,max:1,precision:2,step:.1,"controls-position":"right",class:"w-50 m-2",placeholder:"位置"},null,8,["modelValue"])]),_:1},8,["label-width"])]),E("div",Am,[E("div",Hm,[E("div",jm,[O(V(ue),{onClick:N[26]||(N[26]=H=>o.value.dianadddialog=!1)},{default:k(()=>[re("取消")]),_:1})])]),E("div",Km,[E("div",Pm,[O(V(ue),{onClick:N[27]||(N[27]=H=>{xt(),o.value.dianadddialog=!1})},{default:k(()=>[re(" 确定 ")]),_:1})])])])]),_:1},8,["modelValue"]),O(V(yt),{modelValue:o.value.dialogVisiblenode,"onUpdate:modelValue":N[34]||(N[34]=H=>o.value.dialogVisiblenode=H),width:"50%",class:"dialog_class bgcolor tianjia asideg asidegbg leftbgimg"},{header:k(({titleId:H,titleClass:Vt})=>[E("div",Xm,[O(mt,{src:V(tt),fit:"contain"},null,8,["src"]),E("h4",{id:H,class:vt(Vt)},"选择管道",10,Im)])]),default:k(()=>[E("div",Ym,[E("div",qm,[O(wt,{label:"节点选择","label-width":m.value},{default:k(()=>[O(Mt,{modelValue:V(S),"onUpdate:modelValue":N[29]||(N[29]=H=>Ze(S)?S.value=H:S=H),class:"w-50 m-2",placeholder:"管道名称","prefix-icon":V(Vo)},null,8,["modelValue","prefix-icon"])]),_:1},8,["label-width"]),E("div",{class:"asdis_btn"},[E("div",{class:"flex_a"},[E("div",{class:"btns",onClick:Je},Zm)])])]),O(jt,{"row-class-name":se,"max-height":V(w),ref_key:"multipleTableRef",ref:C,data:b.value,style:{width:"100%"},onSelect:hn,"header-cell-style":{background:"rgba(13, 22, 57, 0.96) "}},{default:k(()=>[O(Oe,{type:"selection",width:"55"}),O(Oe,{property:"snId",label:"开始节点"}),O(Oe,{property:"enId",label:"结束节点"}),O(Oe,{property:"id",label:"编号",width:"70"}),O(Oe,{property:"name",label:"名称",width:"70"}),O(Oe,{property:"sectionType",label:"截面类型",width:"120"}),O(Oe,{property:"roughCoe",label:"粗糙系数"}),O(Oe,{property:"sectionPara1",label:"截面参数1",width:"90"}),O(Oe,{property:"sectionPara2",label:"截面参数2",width:"90"}),O(Oe,{property:"sectionPara3",label:"截面参数3",width:"90"}),O(Oe,{property:"sectionPara4",label:"截面参数4",width:"90"}),O(Oe,{property:"sectionPara5",label:"截面参数5",width:"90"})]),_:1},8,["max-height","data","header-cell-style"]),E("div",Jm,[O(X,{"current-page":c.value,"onUpdate:currentPage":N[30]||(N[30]=H=>c.value=H),"page-size":f.value,"onUpdate:pageSize":N[31]||(N[31]=H=>f.value=H),small:"",background:"",layout:"prev, total,pager, next, jumpe,",total:parseInt(V(v)),class:"mt-4",onSizeChange:en,onCurrentChange:J},null,8,["current-page","page-size","total"])]),E("div",eM,[E("div",tM,[E("div",nM,[O(V(ue),{onClick:N[32]||(N[32]=H=>o.value.dialogVisiblenode=!1)},{default:k(()=>[re("取消")]),_:1})])]),E("div",rM,[E("div",aM,[O(V(ue),{onClick:N[33]||(N[33]=H=>{pt(),o.value.dialogVisiblenode=!1})},{default:k(()=>[re(" 确定 ")]),_:1})])])])])]),_:1},8,["modelValue"]),O(V(yt),{modelValue:o.value.adddialog,"onUpdate:modelValue":N[41]||(N[41]=H=>o.value.adddialog=H),width:"400","align-center":"",modal:!1,"close-on-click-modal":!1,draggable:"",fullscreen:!1,"modal-append-to-body":!1,"modal-class":"summary-dlg",class:"dialog_class bgcolor tianjia"},{header:k(({titleId:H,titleClass:Vt})=>[E("div",sM,[O(mt,{src:V(tt),fit:"contain"},null,8,["src"]),E("h4",{id:H,class:vt(Vt)},rt(V(i)),11,iM)])]),default:k(()=>[E("div",null,[O(_t,null,{default:k(()=>[O(wt,{label:"时间","label-width":B.value},{default:k(()=>[O(Mt,{modelValue:V(D).timeline,"onUpdate:modelValue":N[35]||(N[35]=H=>V(D).timeline=H),class:"w-50 m-2",placeholder:"请输入"},null,8,["modelValue"])]),_:1},8,["label-width"]),O(wt,{label:"温度℃","label-width":B.value},{default:k(()=>[O(Mt,{modelValue:V(D).val1,"onUpdate:modelValue":N[36]||(N[36]=H=>V(D).val1=H),class:"w-50 m-2",placeholder:"请输入"},null,8,["modelValue"])]),_:1},8,["label-width"]),O(wt,{label:"污染物1浓度","label-width":B.value},{default:k(()=>[O(Mt,{modelValue:V(D).val2,"onUpdate:modelValue":N[37]||(N[37]=H=>V(D).val2=H),class:"w-50 m-2",placeholder:"请输入"},null,8,["modelValue"])]),_:1},8,["label-width"]),O(wt,{label:"污染物2浓度","label-width":B.value},{default:k(()=>[O(Mt,{modelValue:V(D).val3,"onUpdate:modelValue":N[38]||(N[38]=H=>V(D).val3=H),class:"w-50 m-2",placeholder:"请输入"},null,8,["modelValue"])]),_:1},8,["label-width"])]),_:1})]),E("div",oM,[E("div",cM,[E("div",uM,[O(V(ue),{onClick:N[39]||(N[39]=H=>o.value.adddialog=!1)},{default:k(()=>[re("取消")]),_:1})])]),E("div",fM,[E("div",lM,[O(V(ue),{onClick:N[40]||(N[40]=H=>{Mn(),o.value.adddialog=!1})},{default:k(()=>[re(" 确定 ")]),_:1})])])])]),_:1},8,["modelValue"]),O(V(yt),{modelValue:o.value.adddwater,"onUpdate:modelValue":N[46]||(N[46]=H=>o.value.adddwater=H),width:"400",class:"dialog_class bgcolor tianjia"},{header:k(({titleId:H,titleClass:Vt})=>[E("div",gM,[O(mt,{src:V(tt),fit:"contain"},null,8,["src"]),E("h4",{id:H,class:vt(Vt)},"添加",10,pM)])]),default:k(()=>[E("div",null,[O(_t,null,{default:k(()=>[O(wt,{label:"时间","label-width":B.value},{default:k(()=>[O(Mt,{modelValue:V(D).timeline,"onUpdate:modelValue":N[42]||(N[42]=H=>V(D).timeline=H),class:"w-50 m-2",placeholder:"请输入"},null,8,["modelValue"])]),_:1},8,["label-width"]),O(wt,{label:"突水量(m³/s)","label-width":B.value},{default:k(()=>[O(Mt,{modelValue:V(D).val1,"onUpdate:modelValue":N[43]||(N[43]=H=>V(D).val1=H),class:"w-50 m-2",placeholder:"请输入"},null,8,["modelValue"])]),_:1},8,["label-width"])]),_:1})]),E("div",hM,[E("div",dM,[E("div",vM,[O(V(ue),{onClick:N[44]||(N[44]=H=>o.value.adddwater=!1)},{default:k(()=>[re("取消")]),_:1})])]),E("div",yM,[E("div",TM,[O(V(ue),{onClick:N[45]||(N[45]=H=>{Mn(),o.value.adddwater=!1})},{default:k(()=>[re(" 确定 ")]),_:1})])])])]),_:1},8,["modelValue"]),O(V(yt),{modelValue:o.value.dialogsgdelect,"onUpdate:modelValue":N[49]||(N[49]=H=>o.value.dialogsgdelect=H),width:"400",class:"dialog_class bgcolor tianjia"},{header:k(({titleId:H,titleClass:Vt})=>[E("div",xM,[O(mt,{src:V(tt),fit:"contain"},null,8,["src"]),E("h4",{id:H,class:vt(Vt)},"删除框",10,SM)])]),default:k(()=>[E("h4",CM,[re(" 是否确认删除 "),E("span",wM,rt(V(Z)),1)]),E("div",_M,[E("div",EM,[E("div",RM,[O(V(ue),{onClick:N[47]||(N[47]=H=>o.value.dialogsgdelect=!1)},{default:k(()=>[re("取消")]),_:1})])]),E("div",OM,[E("div",DM,[O(V(ue),{onClick:N[48]||(N[48]=H=>{Ce(),o.value.dialogsgdelect=!1})},{default:k(()=>[re(" 确定 ")]),_:1})])])])]),_:1},8,["modelValue"])]),O(FD,{ref_key:"dialogtrue",ref:s,onDtext:K},null,512)],64)}}},MM=On(mM,[["__scopeId","data-v-aa3397b7"]]);const VM={class:"my-header"},LM=["id"],BM={class:"dialog-footer footer_div l_btn"},kM={class:"footerbtn flex1"},FM={class:"borderimg"},UM={class:"footerbtn flex1"},bM={class:"borderimg"},NM={__name:"SetNode",emits:["Dtext"],setup(t,{expose:e,emit:n}){let r=U(!1),a=U("节点信息"),s=U("内容");e({dialoglog:r});let i=U(null),o=U(null);const u=()=>{n("Dtext",o.value)};gs(()=>{clearInterval(i.value)}),Dn(()=>{c()}),du(()=>{clearInterval(i.value)});function c(){i.value=setInterval(()=>{o.value=de.selectObj,s.value=o.value},200)}return(f,l)=>{const g=ee("el-image");return Be(),Xe("div",null,[O(V(yt),{width:"300px",modelValue:V(r),"onUpdate:modelValue":l[2]||(l[2]=p=>Ze(r)?r.value=p:r=p),modal:!1,"close-on-click-modal":!1,draggable:"",fullscreen:!1,"modal-append-to-body":!1,"modal-class":"summary-dlg",class:"right log_class bgcolor tianjia asideg asidegbg leftbgimg"},{header:k(({titleId:p,titleClass:y})=>[E("div",VM,[O(g,{src:V(tt),fit:"contain"},null,8,["src"]),E("h4",{id:p,class:vt(y)},rt(V(a)),11,LM)])]),default:k(()=>[E("div",null,rt(V(s)),1),E("div",BM,[E("div",kM,[E("div",FM,[O(V(ue),{onClick:l[0]||(l[0]=p=>Ze(r)?r.value=!1:r=!1)},{default:k(()=>[re("取消")]),_:1})])]),E("div",UM,[E("div",bM,[O(V(ue),{onClick:l[1]||(l[1]=p=>{u(),Ze(r)?r.value=!1:r=!1})},{default:k(()=>[re(" 确定 ")]),_:1})])])])]),_:1},8,["modelValue"])])}}},GM=On(NM,[["__scopeId","data-v-746a46a2"]]);const Jn=t=>(ea("data-v-3177448b"),t=t(),ta(),t),$M={class:"l_Dialog bou"},WM={class:"common-layout",style:{margin:"0"}},zM={class:"demo-collapse"},AM={class:"asides_content"},HM={class:"jc_content tablecolor"},jM={class:"jc_padding font12"},KM={class:"xian btncolor tablefocus bmar"},PM={class:"asdis_btn"},XM={class:"flex_a"},IM=Jn(()=>E("span",{class:"spantext"},"添加",-1)),YM=[IM],qM={class:"flex_a"},QM=Jn(()=>E("span",{class:"spantext"},"修改",-1)),ZM=[QM],JM={class:"flex_a"},eV=Jn(()=>E("span",{class:"spantext"},"删除",-1)),tV=[eV],nV={class:"common-layout",style:{margin:"0"}},rV={class:"demo-collapse"},aV={class:"asides_content"},sV={class:"jc_content tablecolor"},iV={class:"jc_padding font12"},oV={class:"xian btncolor tablefocus bmar"},cV={class:"asdis_btn padingcla"},uV={class:"flex_a"},fV=Jn(()=>E("span",{class:"spantext"},"添加",-1)),lV=[fV],gV={class:"flex_a"},pV=Jn(()=>E("span",{class:"spantext"},"修改",-1)),hV=[pV],dV={class:"flex_a"},vV=Jn(()=>E("span",{class:"spantext"},"删除",-1)),yV=[vV],TV={class:"my-header"},xV=["id"],SV={class:"addye"},CV={key:0,class:"fireclass"},wV={class:"l_padding input",style:{padding:"20px 20px 20px 24px"}},_V={class:"demo-input-suffix firsttitle magintop"},EV={class:"btn2"},RV={class:"btn2",style:{"padding-left":"10px"}},OV={key:1,class:"Waterclass"},DV={class:"l_padding input",style:{padding:"20px 20px 20px 24px"}},mV={class:"demo-input-suffix firsttitle magintop"},MV={class:"btn2"},VV={class:"btn2",style:{"padding-left":"10px"}},LV={class:"dialog-footer footer_div l_btn"},BV={class:"footerbtn flex1"},kV={class:"borderimg"},FV={class:"footerbtn flex1"},UV={class:"borderimg"},bV={class:"my-header"},NV=["id"],GV={class:"demo-input-suffix firsttitle leftbgimg2"},$V={class:"guand_1"},WV=Jn(()=>E("span",{class:"spantext"},"搜索",-1)),zV=[WV],AV={class:"demo-pagination-block",style:{"margin-top":"20px"}},HV={class:"dialog-footer footer_div l_btn"},jV={class:"footerbtn flex1"},KV={class:"borderimg"},PV={class:"footerbtn flex1"},XV={class:"borderimg"},IV={class:"my-header"},YV=["id"],qV={class:"delecttitle"},QV={class:"spanclad"},ZV={class:"dialog-footer footer_div l_btn"},JV={class:"footerbtn flex1"},e3={class:"borderimg"},t3={class:"footerbtn flex1"},n3={class:"borderimg"},r3={__name:"InfoBoundary",props:{classradio:String},setup(t,{expose:e}){const n=t,r=()=>{de.clearJgAddMode(),de.renderWindow.render()};let a=U();const s=()=>{a.value.dialoglog=!0,de.selectNodes(),console.log(a.value.dialoglog)},i=ae=>{console.log(ae),w.value=ae.id,m.value.nname=ae.name};let o=U({dialogVisiblenode:!1,dialogsgdelect:!1}),u=U("");vu({id:0,name:"灾情演化",value:".vtk"});let c=U({}),f=U(""),l=U(400);const g=U(),p=U([]),y=U(77),h=U(120);let d=U([]),x=U(""),S=U(1);const v=U(1),T=U(5);let w=U(),C=U(),R=U(),m=U({nname:"",type:"Pressure",flow:"",pressure:"",temperature:"",polcon1:"",polcon2:"",user:"11",nodesel:"1",nodesselect:[{value:"1",label:"1"},{value:"2",label:"2"}],region:"massflow",options:[{value:"massflow",label:"流量边界"},{value:"Pressure",label:" 压力边界"}],region:"边界出口",options2:[{value:"边界出口"}]}),B=U(["1","2"]);const M=U([]);U("");const D=U({dialogVisible:!1}),L=U({collfire:!1,collwater:!1}),b=()=>{Y("")};function $(){Y(x.value)}const Q=ae=>{Y(x.value)},Y=ae=>{const A={transCode:"D00000",count:T.value,page:v.value,searchtag:ae};Fe(A).then(Ce=>{d.value=Ce.rows,S.value=Ce.total}).catch(Ce=>{xe.error(Ce.returnMsg)})},Z=()=>{o.value.dialogVisiblenode=!1,m.value.nname="",v.value=1,console.log(),p.value.length!=0?(w.value=p.value[0].id,m.value.nname=p.value[0].name):m.value.nname=""},se=(ae,A)=>{if(ae.length>1){g.value.clearSelection(),g.value.toggleRowSelection(A,!0),p.value=ae[1];return}ae.length==1?p.value=ae:ae.length==0},W=()=>{C.value="",m.value.nname="",m.value.type="Pressure",m.value.flow="0",m.value.pressure="100000",m.value.temperature="25",m.value.polcon1="0",m.value.polcon2="0",u.value="添加",n.classradio=="Fire"?m.value.type="Pressure":n.classradio=="Water"&&(m.value.type="边界出口")},F=()=>{u.value="修改",JSON.stringify(c.value)=="{}"?xe.error("你还没有选中修改的项目"):(n.classradio=="Fire"?m.value.type="Pressure":n.classradio=="Water"&&(m.value.type="边界出口"),console.log(c.value),C.value=c.value.bid,w.value=c.value.nid,R.value=c.value.aid,D.value.dialogVisible=!0,m.value.nname=c.value.nname,m.value.type=c.value.type,m.value.flow=c.value.flow,m.value.pressure=c.value.pressure,m.value.temperature=c.value.temperature,m.value.polcon1=c.value.polcon1,m.value.polcon2=c.value.polcon2)},j=()=>{const ae={transCode:"D10008",bid:C.value,nid:w.value,nname:m.value.nname,type:m.value.type,aid:R.value,flow:m.value.flow,pressure:m.value.pressure,temperature:m.value.temperature,polcon1:m.value.polcon1,polcon2:m.value.polcon2};Fe(ae).then(A=>{K(R.value)}).catch(A=>{xe.error(A.returnMsg)})},K=ae=>{R.value=ae;const A={transCode:"D10007",aid:R.value};Fe(A).then(Ce=>{M.value=Ce.rows}).catch(Ce=>{xe.error(Ce.returnMsg)})},P=ae=>{console.log(ae),c.value=ae,C.value=ae.bid,f.value=ae.nname},Ee=()=>{const ae={transCode:"D10009",bid:C.value};console.log(ae),Fe(ae).then(A=>{xe({message:"删除成功",type:"success"}),K(R.value)}).catch(A=>{xe.error(A.returnMsg)})},gt=({row:ae,rowIndex:A})=>A%2!=0?"evenRow":"oddRow",xt=ae=>{ae=="2"?n.classradio=="Fire"?L.value.collfire=!0:n.classradio=="Water"&&(L.value.collwater=!0):(L.value.collfire=!1,L.value.collwater=!1)};return Dn(()=>{}),e({boun:L,accident4:xt,addboundary:K,changeModel:r}),(ae,A)=>{const Ce=ee("el-icon"),we=ee("el-table-column"),Je=ee("el-table"),en=ee("el-collapse-item"),J=ee("el-collapse"),q=ee("el-aside"),ve=ee("el-image"),ye=ee("el-input"),Ne=ee("el-form-item"),pt=ee("el-option"),pn=ee("el-select"),hn=ee("el-form"),tn=ee("el-pagination");return Be(),Xe(hr,null,[E("div",$M,[E("div",WM,[Tt(O(q,{width:"591px",class:"L_aside L_aside1 asideg asidegbg leftbgimg2"},{default:k(()=>[E("div",zM,[O(J,{modelValue:V(B),"onUpdate:modelValue":A[4]||(A[4]=I=>Ze(B)?B.value=I:B=I),accordion:""},{default:k(()=>[O(en,{name:"1"},{title:k(()=>[O(Ce,{class:"iconimg Frame2",fit:"contain"}),re(" 火灾"),O(Ce,{class:"header-icon"})]),default:k(()=>[E("div",AM,[E("div",HM,[E("div",jM,[E("div",KM,[O(Je,{data:M.value,style:{width:"100%"},"max-height":V(l),"highlight-current-row":!0,"row-class-name":gt,onRowClick:A[0]||(A[0]=I=>P(I)),"header-cell-style":{background:"rgba(13, 22, 57, 0.96) "}},{default:k(()=>[O(we,{prop:"nid",label:"节点选择"}),O(we,{label:"边界类型",prop:"type",align:"center",width:"80px"},{default:k(I=>[re(rt(I.row.type=="massflow"?"流量边界":(I.row.type=="Pressure","压力边界")),1)]),_:1}),O(we,{prop:"flow",label:"流量(m³/s)",width:"80"}),O(we,{prop:"pressure",label:"压强(pa)",width:"70"}),O(we,{prop:"temperature",label:"温度(℃)"}),O(we,{prop:"polcon1",label:"污染物1浓度",width:"95"}),O(we,{prop:"polcon2",label:"污染物2浓度",width:"95"})]),_:1},8,["data","max-height","header-cell-style"]),E("div",PM,[E("div",XM,[E("div",{class:"btns",onClick:A[1]||(A[1]=I=>{W(),D.value.dialogVisible=!0})},YM)]),E("div",qM,[E("div",{class:"btns",onClick:A[2]||(A[2]=I=>F())},ZM)]),E("div",JM,[E("div",{class:"btns",onClick:A[3]||(A[3]=I=>V(o).dialogsgdelect=!0)},tV)])])])])])])]),_:1})]),_:1},8,["modelValue"])])]),_:1},512),[[Dt,L.value.collfire]])]),E("div",nV,[Tt(O(q,{width:"231px",class:"L_aside L_aside1 asideg asidegbg leftbgimg0"},{default:k(()=>[E("div",rV,[O(J,{modelValue:V(B),"onUpdate:modelValue":A[9]||(A[9]=I=>Ze(B)?B.value=I:B=I),accordion:""},{default:k(()=>[O(en,{name:"2"},{title:k(()=>[O(Ce,{class:"iconimg Frame3",fit:"contain"}),re(" 突水"),O(Ce,{class:"header-icon"})]),default:k(()=>[E("div",aV,[E("div",sV,[E("div",iV,[E("div",oV,[O(Je,{data:M.value,style:{width:"100%"},"max-height":V(l),"highlight-current-row":!0,"row-class-name":gt,onRowClick:A[5]||(A[5]=I=>P(I)),"header-cell-style":{background:"rgba(13, 22, 57, 0.96) "}},{default:k(()=>[O(we,{prop:"nid",label:"节点选择"}),O(we,{prop:"type",label:"边界类型"})]),_:1},8,["data","max-height","header-cell-style"])])]),E("div",cV,[E("div",uV,[E("div",{class:"btns",onClick:A[6]||(A[6]=I=>{W(),D.value.dialogVisible=!0})},lV)]),E("div",gV,[E("div",{class:"btns",onClick:A[7]||(A[7]=I=>F())},hV)]),E("div",dV,[E("div",{class:"btns",onClick:A[8]||(A[8]=I=>V(o).dialogsgdelect=!0)},yV)])])])])]),_:1})]),_:1},8,["modelValue"])])]),_:1},512),[[Dt,L.value.collwater]])]),O(V(yt),{modelValue:D.value.dialogVisible,"onUpdate:modelValue":A[25]||(A[25]=I=>D.value.dialogVisible=I),width:"482",modal:!1,"close-on-click-modal":!1,draggable:"",class:"dialog_class bgcolor foter_l"},{header:k(({titleId:I,titleClass:et})=>[E("div",TV,[O(ve,{src:V(tt),fit:"contain"},null,8,["src"]),E("h4",{id:I,class:vt(et)},rt(V(u)),11,xV)])]),default:k(()=>[E("div",SV,[n.classradio=="Fire"?(Be(),Xe("div",CV,[O(hn,{class:"demo-form-inline",inline:!0,model:V(m)},{default:k(()=>[E("div",wV,[E("div",_V,[O(Ne,{label:"节点名称","label-width":h.value},{default:k(()=>[O(ye,{modelValue:V(m).nname,"onUpdate:modelValue":A[10]||(A[10]=I=>V(m).nname=I),class:"w-50 m-2",placeholder:"节点名称"},null,8,["modelValue"])]),_:1},8,["label-width"]),E("div",EV,[O(V(ue),{type:"primary",onClick:A[11]||(A[11]=I=>{b(),V(o).dialogVisiblenode=!0})},{default:k(()=>[re("选择节点")]),_:1})]),E("div",RV,[O(V(ue),{type:"primary",onClick:A[12]||(A[12]=I=>s())},{default:k(()=>[re("3D节点选择")]),_:1})])]),O(Ne,{label:"边界类型","label-width":h.value},{default:k(()=>[O(pn,{modelValue:V(m).type,"onUpdate:modelValue":A[13]||(A[13]=I=>V(m).type=I),placeholder:"请选择"},{default:k(()=>[(Be(!0),Xe(hr,null,ja(V(m).options,I=>(Be(),yr(pt,{key:I.id,label:I.label,value:I.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1},8,["label-width"]),O(Ne,{label:"流量(m³/s)","label-width":h.value},{default:k(()=>[O(ye,{modelValue:V(m).flow,"onUpdate:modelValue":A[14]||(A[14]=I=>V(m).flow=I),class:"w-50 m-2",placeholder:"请输入"},null,8,["modelValue"])]),_:1},8,["label-width"]),O(Ne,{label:"压强(pa)","label-width":h.value},{default:k(()=>[O(ye,{modelValue:V(m).pressure,"onUpdate:modelValue":A[15]||(A[15]=I=>V(m).pressure=I),class:"w-50 m-2",placeholder:"请输入"},null,8,["modelValue"])]),_:1},8,["label-width"]),O(Ne,{label:"温度(℃)","label-width":h.value},{default:k(()=>[O(ye,{modelValue:V(m).temperature,"onUpdate:modelValue":A[16]||(A[16]=I=>V(m).temperature=I),class:"w-50 m-2",placeholder:"请输入"},null,8,["modelValue"])]),_:1},8,["label-width"]),O(Ne,{label:"污染物1浓度","label-width":h.value},{default:k(()=>[O(ye,{modelValue:V(m).polcon1,"onUpdate:modelValue":A[17]||(A[17]=I=>V(m).polcon1=I),class:"w-50 m-2",placeholder:"请输入"},null,8,["modelValue"])]),_:1},8,["label-width"]),O(Ne,{label:"污染物2浓度","label-width":h.value},{default:k(()=>[O(ye,{modelValue:V(m).polcon2,"onUpdate:modelValue":A[18]||(A[18]=I=>V(m).polcon2=I),class:"w-50 m-2",placeholder:"请输入"},null,8,["modelValue"])]),_:1},8,["label-width"])])]),_:1},8,["model"])])):(Be(),Xe("div",OV,[O(hn,{class:"demo-form-inline",inline:!0,model:V(m)},{default:k(()=>[E("div",DV,[E("div",mV,[O(Ne,{label:"节点名称","label-width":h.value},{default:k(()=>[O(ye,{modelValue:V(m).nname,"onUpdate:modelValue":A[19]||(A[19]=I=>V(m).nname=I),class:"w-50 m-2",placeholder:"节点名称"},null,8,["modelValue"])]),_:1},8,["label-width"]),E("div",MV,[O(V(ue),{type:"primary",onClick:A[20]||(A[20]=I=>{b(),V(o).dialogVisiblenode=!0})},{default:k(()=>[re("选择节点")]),_:1})]),E("div",VV,[O(V(ue),{type:"primary",onClick:A[21]||(A[21]=I=>s())},{default:k(()=>[re("3D节点选择")]),_:1})])]),O(Ne,{label:"边界类型","label-width":h.value},{default:k(()=>[O(pn,{modelValue:V(m).type,"onUpdate:modelValue":A[22]||(A[22]=I=>V(m).type=I),placeholder:"请选择"},{default:k(()=>[(Be(!0),Xe(hr,null,ja(V(m).options2,I=>(Be(),yr(pt,{key:I.id,label:I.label,value:I.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1},8,["label-width"])])]),_:1},8,["model"])])),E("div",LV,[E("div",BV,[E("div",kV,[O(V(ue),{onClick:A[23]||(A[23]=I=>D.value.dialogVisible=!1)},{default:k(()=>[re("取消")]),_:1})])]),E("div",FV,[E("div",UV,[O(V(ue),{onClick:A[24]||(A[24]=I=>{j(),D.value.dialogVisible=!1})},{default:k(()=>[re(" 确定 ")]),_:1})])])])])]),_:1},8,["modelValue"]),O(V(yt),{modelValue:V(o).dialogVisiblenode,"onUpdate:modelValue":A[31]||(A[31]=I=>V(o).dialogVisiblenode=I),width:"600px",class:"dialog_class bgcolor tianjia asideg asidegbg leftbgimg"},{header:k(({titleId:I,titleClass:et})=>[E("div",bV,[O(ve,{src:V(tt),fit:"contain"},null,8,["src"]),E("h4",{id:I,class:vt(et)},"选择节点",10,NV)])]),default:k(()=>[E("div",GV,[E("div",$V,[O(Ne,{label:"节点选择","label-width":y.value},{default:k(()=>[O(ye,{modelValue:V(x),"onUpdate:modelValue":A[26]||(A[26]=I=>Ze(x)?x.value=I:x=I),class:"w-50 m-2",placeholder:"节点名称"},null,8,["modelValue"])]),_:1},8,["label-width"]),E("div",{class:"asdis_btn"},[E("div",{class:"flex_a"},[E("div",{class:"btns",onClick:$},zV)])])]),O(Je,{"row-class-name":gt,"max-height":V(l),ref_key:"multipleTableRef",ref:g,data:V(d),style:{width:"100%"},onSelect:se,"header-cell-style":{background:"rgba(13, 22, 57, 0.96) "}},{default:k(()=>[O(we,{type:"selection",width:"55"}),O(we,{property:"id",label:"节点编号"}),O(we,{property:"name",label:"名称"}),O(we,{property:"ntype",label:"类型"}),O(we,{property:"x",label:"x"}),O(we,{property:"y",label:"y"}),O(we,{property:"z",label:"z"})]),_:1},8,["max-height","data","header-cell-style"]),E("div",AV,[O(tn,{"current-page":v.value,"onUpdate:currentPage":A[27]||(A[27]=I=>v.value=I),"page-size":T.value,"onUpdate:pageSize":A[28]||(A[28]=I=>T.value=I),small:"",background:"",layout:"prev, total,pager, next, jumpe,",total:parseInt(V(S)),class:"mt-4",onCurrentChange:Q},null,8,["current-page","page-size","total"])]),E("div",HV,[E("div",jV,[E("div",KV,[O(V(ue),{onClick:A[29]||(A[29]=I=>V(o).dialogVisiblenode=!1)},{default:k(()=>[re("取消")]),_:1})])]),E("div",PV,[E("div",XV,[O(V(ue),{onClick:A[30]||(A[30]=I=>Z())},{default:k(()=>[re(" 确定 ")]),_:1})])])])])]),_:1},8,["modelValue"]),O(V(yt),{modelValue:V(o).dialogsgdelect,"onUpdate:modelValue":A[34]||(A[34]=I=>V(o).dialogsgdelect=I),width:"400",class:"dialog_class bgcolor tianjia"},{header:k(({titleId:I,titleClass:et})=>[E("div",IV,[O(ve,{src:V(tt),fit:"contain"},null,8,["src"]),E("h4",{id:I,class:vt(et)},"删除框",10,YV)])]),default:k(()=>[E("h4",qV,[re(" 是否确认删除 "),E("span",QV,rt(V(f)),1)]),E("div",ZV,[E("div",JV,[E("div",e3,[O(V(ue),{onClick:A[32]||(A[32]=I=>V(o).dialogsgdelect=!1)},{default:k(()=>[re("取消")]),_:1})])]),E("div",t3,[E("div",n3,[O(V(ue),{onClick:A[33]||(A[33]=I=>{Ee(),V(o).dialogsgdelect=!1})},{default:k(()=>[re(" 确定 ")]),_:1})])])])]),_:1},8,["modelValue"])]),O(GM,{ref_key:"dialogtrue",ref:a,onDtext:i},null,512)],64)}}},a3=On(r3,[["__scopeId","data-v-3177448b"]]),Do={};function F0(t){return!!Do[t]}function s3(){let t=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"http",e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return Do[t](e)}function U0(t,e){Do[t]=e}var i3={get:s3,has:F0,registerType:U0};const o3={bit:Uint8Array,unsigned_char:Uint8Array,char:Int8Array,unsigned_short:Uint16Array,short:Int16Array,unsigned_int:Uint32Array,int:Int32Array,unsigned_long:Uint32Array,long:Int32Array,float:Float32Array,double:Float64Array};function ni(t,e,n){let r=0;function a(s){return s.split(" ").forEach(i=>{i.length&&(t[r++]=Number(i))}),r<t.length?!0:(e(t,n),!1)}return a}const c3={DATASET:{init(t,e){const n=t.split(" ")[1];switch(n){case"UNSTRUCTURED_GRID":e.dataset=zt.newInstance();break;default:console.error(`Dataset of type ${n} not supported`)}return!1},parse(t,e){return!1}},POINTS:{init(t,e){const[n,r,a]=t.split(" "),s=a==="float"?new Float32Array(3*Number(r)):new Float64Array(3*Number(r)),i=e.dataset.getPoints();return i.setName(n),e.arrayHandler=ni(s,i.setData,3),!0},parse(t,e){return e.arrayHandler(t)}},CELLS:{init(t,e){const[n,r,a]=t.split(" "),s=e.dataset.getPolys();return s.set({numberOfCells:Number(r)},!0),e.arrayHandler=ni(new Uint32Array(Number(a)),s.setData,1),!0},parse(t,e){return e.arrayHandler(t)}},POINT_DATA:{init(t,e){return e.POINT_DATA=Number(t.split(" ")[1]),e.activeFieldLocation="POINT_DATA",!1},parse(t,e){return!1}},SCALARS:{init(t,e){e.scalars||(e.scalars=new Map);const[n,r,a]=t.split(" "),s=1,i=new o3[a](e.POINT_DATA),o=_e.newInstance({name:r,size:e.POINT_DATA});return e.scalars.set(r,i),e.arrayHandler=ni(i,o.setData,s),!0},parse(t,e){return t.split(" ")[0]==="LOOKUP_TABLE"?!0:e.arrayHandler(t)}}};function u3(t,e){const n=t.split(" ");return c3[n[0]]}function f3(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},n=null;const a=/\r?\n/.exec(t),s=a!==null?a[0]:null;return t.split(s).forEach((i,o)=>{if(!(o<0)){if(!n){if(n=u3(i),!n)return;n=n.init(i,e)?n:null;return}n&&!n.parse(i,e)&&(n=null)}}),e}var l3={parseLegacyASCII:f3};function b0(){const t=new ArrayBuffer(4),e=new Uint8Array(t),n=new Uint32Array(t);return e[0]=161,e[1]=178,e[2]=195,e[3]=212,n[0]===3569595041?"LittleEndian":n[0]===2712847316?"BigEndian":null}const g3=b0();function p3(t,e){if(e<2)return;const n=new Int8Array(t),r=n.length,a=[];for(let s=0;s<r;s+=e){for(let i=0;i<e;i++)a.push(n[s+i]);for(let i=0;i<e;i++)n[s+i]=a.pop()}}var ri={ENDIANNESS:g3,getEndianness:b0,swapBytes:p3};const{vtkErrorMacro:N0,vtkDebugMacro:h3}=_,mo=()=>(N0("LiteHttpDataAccessHelper does not support compression. Need to register HttpDataAccessHelper instead."),Promise.reject(new Error("LiteHttpDataAccessHelper does not support compression. Need to register HttpDataAccessHelper instead.")));let Er=0;function ws(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};const r=new XMLHttpRequest;return r.open(t,e,!0),n.headers&&Object.entries(n.headers).forEach(a=>{let[s,i]=a;return r.setRequestHeader(s,i)}),n.progressCallback&&r.addEventListener("progress",n.progressCallback),r}function d3(t){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return new Promise((n,r)=>{const a=ws("GET",t,e);a.onreadystatechange=s=>{a.readyState===4&&(a.status===200||a.status===0?n(a.response):r({xhr:a,e:s}))},a.responseType="arraybuffer",a.send()})}function v3(t,e,n){let r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:{};return r&&r.compression?mo():n.ref&&!n.ref.pending?new Promise((a,s)=>{const i=[e,n.ref.basepath,n.ref.id].join("/"),o=ws("GET",i,r);o.onreadystatechange=u=>{o.readyState===1&&(n.ref.pending=!0,++Er===1&&(t!=null&&t.invokeBusy)&&t.invokeBusy(!0)),o.readyState===4&&(n.ref.pending=!1,o.status===200||o.status===0?(n.buffer=o.response,n.ref.encode==="JSON"?n.values=JSON.parse(n.buffer):(ri.ENDIANNESS!==n.ref.encode&&ri.ENDIANNESS&&(h3(`Swap bytes of ${n.name}`),ri.swapBytes(n.buffer,gl[n.dataType])),n.values=_.newTypedArray(n.dataType,n.buffer)),n.values.length!==n.size&&N0(`Error in FetchArray: ${n.name}, does not have the proper array size. Got ${n.values.length}, instead of ${n.size}`),delete n.ref,--Er===0&&(t!=null&&t.invokeBusy)&&t.invokeBusy(!1),t!=null&&t.modified&&t.modified(),a(n)):s({xhr:o,e:u}))},o.responseType=n.dataType!=="string"?"arraybuffer":"text",o.send()}):Promise.resolve(n)}function y3(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return n&&n.compression?mo():new Promise((r,a)=>{const s=ws("GET",e,n);s.onreadystatechange=i=>{s.readyState===1&&++Er===1&&t!=null&&t.invokeBusy&&t.invokeBusy(!0),s.readyState===4&&(--Er===0&&(t!=null&&t.invokeBusy)&&t.invokeBusy(!1),s.status===200||s.status===0?r(JSON.parse(s.responseText)):a({xhr:s,e:i}))},s.responseType="text",s.send()})}function T3(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return n&&n.compression?mo():new Promise((r,a)=>{const s=ws("GET",e,n);s.onreadystatechange=i=>{s.readyState===1&&++Er===1&&t!=null&&t.invokeBusy&&t.invokeBusy(!0),s.readyState===4&&(--Er===0&&(t!=null&&t.invokeBusy)&&t.invokeBusy(!1),s.status===200||s.status===0?r(s.responseText):a({xhr:s,e:i}))},s.responseType="text",s.send()})}function x3(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return new Promise((r,a)=>{const s=new Image;n.crossOrigin&&(s.crossOrigin=n.crossOrigin),s.onload=()=>r(s),s.onerror=a,s.src=e})}const S3={fetchArray:v3,fetchJSON:y3,fetchText:T3,fetchBinary:d3,fetchImage:x3};F0("http")||U0("http",t=>S3);function C3(t,e){e.classHierarchy.push("vtkUnstructuredDataReader"),e.dataAccessHelper||(e.dataAccessHelper=i3.get("http"));function n(r){const{compression:a,progressCallback:s}=e;return e.dataAccessHelper.fetchText(t,r,{compression:a,progressCallback:s})}t.setUrl=function(r){let a=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};e.url=r;const s=r.split("/");return s.pop(),e.baseURL=s.join("/"),e.compression=a.compression,t.loadData({progressCallback:a.progressCallback})},t.loadData=function(){const r=n(e.url);return r.then(t.parseAsText),r},t.parseAsText=r=>{if(r){if(r!==e.parseData)t.modified();else return;e.parseData=r,e.dataModel=l3.parseLegacyASCII(e.parseData),e.output[0]=e.dataModel.dataset,e.output[1]=e.dataModel.scalars}},t.requestData=(r,a)=>{t.parseAsText(e.parseData)}}const w3={};function G0(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,w3,n),_.obj(t,e),_.get(t,e,["url","baseURL"]),_.setGet(t,e,["dataAccessHelper"]),_.algo(t,e,0,1),C3(t,e),e.compression||(e.compression=null),e.progressCallback||(e.progressCallback=null)}const _3=_.newInstance(G0,"vtkUnstructuredDataReader");var E3={newInstance:_3,extend:G0};class R3{constructor(){this.aid=5,this.step,this.stepsum=10,this._url="/disaster/TransServlet?channelNo=service&clientToken=e47b87eec69545559d1e81e56626da68&userId=5f06c8bc77234f969d13e160b54c27e3&aid=",this.polydata,this.scalars=new Array,this.scalar=new Map,this.reader=E3.newInstance()}async initGemetry(){const e=this._url+this.aid+"&transCode=D000014";await this.reader.setUrl(e).then(()=>{this.polydata=this.reader.getOutputData(0)})}async initScalrs(){for(let e=0;e<=this.stepsum;e++)await this.reader.setUrl(this._url+"&transCode=D00009&step="+e).then(()=>{const n=this.reader.getOutputData(1);this.scalars.push(n)})}async getScalrsByStep(e){this.step=e;const n=this._url+this.aid+"&transCode=D00009&step="+this.step;await this.reader.setUrl(n).then(()=>{const r=this.reader.getOutputData(1);this.scalar=r})}}function O3(){return new R3}const Vr=t=>(ea("data-v-47da8ada"),t=t(),ta(),t),D3={class:"l_Dialog"},m3={class:"result result1"},M3={class:"newtime"},V3={class:"newtime"},L3={class:"animation_s"},B3={class:"tanniu"},k3=Vr(()=>E("p",null,"后退",-1)),F3=Vr(()=>E("p",null,"播放",-1)),U3=Vr(()=>E("p",null,"暂停",-1)),b3=Vr(()=>E("p",null,"快进",-1)),N3={class:"demo-collapse jiancedian asideg1 jc_header collapseeion jianstyle"},G3={class:"he_pading color1"},$3={key:1,class:"woter"},W3=Vr(()=>E("span",null,"物理量:",-1)),z3=Vr(()=>E("span",null,"水位",-1)),A3=[W3,z3],H3={class:"jc_content tablecolor"},j3={class:"jc_padding"},K3={key:0,class:"xian"},P3={key:1,class:"xian"},X3={__name:"InfoAnimation",props:{classradio:{type:String}},emits:[],setup(t,{expose:e,emit:n}){const r=t;U("SOS");const a=U(["1"]);let s=U(0);const i=U(0),o=U(!1),u=U(!1),c=U([]);U("http://localhost:8080/?aid=0");const f=U("first");let l=U(""),g=U(1),p=U(60);U(2);let y=U(),h=U(null),d=U(null);U(20),U("#409eff");const x=({row:J,rowIndex:q})=>q%2!=0?"evenRow":"oddRow",S=U({region:"shanghai"});U([]);const v=U([{name:"",value:""}]),T=({row:J,rowIndex:q})=>{console.log(J)},w=U(0),C=U(1),R=U({jid:0,aid:0,starttime:"",endtime:"",state:"",faildes:"",dt:"",dx:"",reportstep:"",interactionstep:"",acctime:"",totaltime:"",coids:"",cocodes:""}),m=U([]),B=U(""),M=U([]),D=U([]),L=U(0),b=U("false");function $(J){s.value=i.value,P.step=i.value}function Q(J){o.value=!0;const q=(ye=J)=>new Promise((Ne,pt)=>{setTimeout(Ne,ye)});(async ye=>{for(;i.value<p.value&&o.value;)o.value==!0&&(await q(J),i.value++,P.step=i.value,s.value=i.value)})()}function Y(){o.value=!1,i.value!=p.value&&(i.value++,s.value=i.value,P.step=i.value)}function Z(){o.value=!1}function se(){o.value=!1,i.value--,P.step=i.value,s.value=i.value}function W(){const J=Date.parse(B.value),q=new Date(J);ae(q)}function F(){for(let J=0;J<D.value.length;J++)if(S.value.region==D.value[J].cocode){L.value=J+1;break}if(v.value=[],r.classradio=="Fire")for(let J=0;J<M.value.length;J++){let q=M.value[J];L.value==1&&v.value.push({name:q.chcode,value:q.v1}),L.value==2&&v.value.push({name:q.chcode,value:q.v2}),L.value==3&&v.value.push({name:q.chcode,value:q.v3}),L.value==4&&v.value.push({name:q.chcode,value:q.v4}),L.value==5&&v.value.push({name:q.chcode,value:q.v5}),L.value==6&&v.value.push({name:q.chcode,value:q.v6})}else for(let J=0;J<M.value.length;J++){let q=M.value[J];v.value.push({name:q.chcode,value:q.v1,value2:q.v2})}}function j(){F(),we()}const K=J=>{y.value=J,(r.classradio=="Fire"||r.classradio=="Water")&&(u.value=!0),b.value=!1,xt(),f.value=="first"?h.value=setInterval(()=>{const q=new Date().getTime();l.value=Hr(q),ae(new Date)},1e3):h.value=setInterval(()=>{const q=new Date().getTime();l.value=Hr(q)},1e3)},P=O3();async function Ee(){const J={transCode:"D10016",aid:y.value,step:P.step};await Fe(J).then(q=>{if(q.returnCode=="000000000"){M.value=q.chvals,v.value=[];for(let ve=0;ve<M.value.length;ve++){let ye=M.value[ve];v.value.push({name:ye.chcode,value:ye.v1})}if(b.value)F();else{b.value=!0,D.value=q.cocodes,S.value.region=D.value[0].cocode,L.value=1,c.value=[];for(let ve=0;ve<D.value.length;ve++){const ye=D.value[ve];c.value.push({id:ve,name:ye.cocode,value:ye.cocode})}}}else xe({message:q.returnMsg,type:"error"})}).catch(q=>{})}function gt(){d.value=setInterval(()=>{m.value=[];for(const J of P.scalar.keys())m.value.push({name:J,value:P.scalar.get(J)[de.selectJgPointId]})},1e3)}async function xt(){de.clearModeAddJg();const J={transCode:"D10017",aid:y.value};await Fe(J).then(q=>{q.returnCode=="000000000"?(R.value=q,ae(new Date),Ee(),A(),gt()):xe({message:q.returnMsg,type:"error"})}).catch(q=>{})}function ae(J){const q=J.getTime(),ve=Date.parse(R.value.acctime);var ye=parseInt((q-ve)/1e3);P.stepsum=parseInt(R.value.totaltime)/parseInt(R.value.reportstep),C.value=P.stepsum,ye<parseInt(R.value.totaltime)?P.step=parseInt(ye/parseInt(R.value.reportstep)):P.step=P.stepsum,i.value=P.step,s.value=i.value}function A(){P.aid=y.value,P.initGemetry().then(J=>{Ce()}).catch(J=>{})}function Ce(){P.getScalrsByStep(P.step).then(J=>{we()}).catch(J=>{console.log(J)})}function we(){console.log("执行了");const J=de.scalarBarActor,q=de.jgMapper,ve=de.jgActor;console.log(S.value.region);const ye=P.scalar.get(S.value.region),Ne=_e.newInstance({name:S.value.region,size:P.polydata.getNumberOfPoints()});Ne.setData(ye),P.polydata.getPointData().setScalars(Ne),q.setInputData(P.polydata),Je(ye),q.setScalarRange(w.value,C.value),J.setAxisLabel(S.value.region),q.clearColorArrays(),ve.getProperty().setOpacity(i.value),de.renderWindow.render()}function Je(J){w.value=J[0],C.value=J[0];for(let q=0;q<=J.length;q++){let ve=J[q];w.value>ve&&(w.value=ve),C.value<ve&&(C.value=ve)}}const en=(J,q)=>{console.log(J.props.name),J.props.name=="first"?h.value=setInterval(()=>{const ve=new Date().getTime();l.value=Hr(ve),ae(new Date)},1e3):(J.props.name=="second"||J.props.name=="third")&&clearInterval(h.value)};return gs(()=>{clearInterval(h.value)}),Dn(()=>{}),A0(s,(J,q)=>{console.log("值改变了",J,q),P.step=J,Ce(),Ee()},{deep:!0}),e({monitor:u,accident5:K}),(J,q)=>{const ve=ee("el-tab-pane"),ye=ee("el-date-picker"),Ne=ee("el-slider"),pt=ee("el-image"),pn=ee("el-tabs"),hn=ee("el-aside"),tn=ee("el-option"),I=ee("el-form-item"),et=ee("el-table-column"),Ht=ee("el-table"),Mn=ee("el-collapse-item"),te=ee("el-collapse");return Be(),Xe("div",D3,[Tt(O(hn,{width:"278px",class:"L_aside asideg asidegbg leftbgimg"},{default:k(()=>[E("div",m3,[O(pn,{modelValue:f.value,"onUpdate:modelValue":q[3]||(q[3]=G=>f.value=G),type:"card",class:"demo-tabs",onTabClick:en},{default:k(()=>[O(ve,{label:"当前时间",name:"first"},{default:k(()=>[E("div",M3,rt(V(l)),1)]),_:1}),O(ve,{label:"指定时间",name:"second"},{default:k(()=>[E("div",V3,[O(ye,{modelValue:B.value,"onUpdate:modelValue":q[0]||(q[0]=G=>B.value=G),type:"datetime",placeholder:"Select date and time",onChange:W},null,8,["modelValue"])])]),_:1}),O(ve,{label:"动画演示",name:"third"},{default:k(()=>[E("div",L3,[O(Ne,{max:V(p),min:V(g),modelValue:i.value,"onUpdate:modelValue":q[1]||(q[1]=G=>i.value=G),onChange:$},null,8,["max","min","modelValue"]),E("div",B3,[E("ul",null,[E("li",null,[O(pt,{src:V(P0),fit:"contain",onClick:se},null,8,["src"]),k3]),E("li",null,[O(pt,{src:V(X0),fit:"contain",onClick:q[2]||(q[2]=G=>Q(500))},null,8,["src"]),F3]),E("li",null,[O(pt,{src:V(I0),fit:"contain",onClick:Z},null,8,["src"]),U3]),E("li",null,[O(pt,{src:V(Y0),fit:"contain",onClick:Y},null,8,["src"]),b3])])])])]),_:1})]),_:1},8,["modelValue"])])]),_:1},512),[[Dt,u.value]]),Tt(E("div",N3,[O(te,{accordion:"",modelValue:a.value,"onUpdate:modelValue":q[5]||(q[5]=G=>a.value=G)},{default:k(()=>[O(Mn,{name:"1"},{title:k(()=>[E("div",G3,[r.classradio=="Fire"?(Be(),yr(I,{key:0,label:"物理量:"},{default:k(()=>[O(V(hu),{modelValue:S.value.region,"onUpdate:modelValue":q[4]||(q[4]=G=>S.value.region=G),onChange:j,placeholder:"请选择"},{default:k(()=>[(Be(!0),Xe(hr,null,ja(c.value,G=>(Be(),yr(tn,{key:G.id,label:G.name,value:G.value},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1})):(Be(),Xe("div",$3,A3))])]),default:k(()=>[E("div",H3,[E("div",j3,[r.classradio=="Fire"?(Be(),Xe("div",K3,[O(Ht,{data:v.value,style:{width:"100%"},onCurrentChange:T,"row-class-name":x,"header-cell-style":{background:"rgba(13, 22, 57, 0.96) "}},{default:k(()=>[O(et,{prop:"name",label:"监测点名称"}),O(et,{prop:"value",label:S.value.region},null,8,["label"])]),_:1},8,["data","header-cell-style"])])):(Be(),Xe("div",P3,[O(Ht,{data:v.value,style:{width:"100%"},onCurrentChange:T,"row-class-name":x,"header-cell-style":{background:"rgba(13, 22, 57, 0.96) "}},{default:k(()=>[O(et,{prop:"name",label:"监测点名称"}),O(et,{prop:"value",label:"水位(m)"}),O(et,{prop:"value2",label:"流量"})]),_:1},8,["data","header-cell-style"])]))])])]),_:1})]),_:1},8,["modelValue"])],512),[[Dt,u.value]])])}}},I3=On(X3,[["__scopeId","data-v-47da8ada"]]);function Y3(t,e){e.classHierarchy.push("vtkPointSource"),t.requestData=(n,r)=>{if(e.deleted)return;const a=r[0],s=a?a.getPoints().getDataType():e.pointType,i=zt.newInstance(),o=e.numberOfPoints,u=_.newTypedArray(s,o*3);i.getPoints().setData(u,3);const c=new Uint32Array(o+1);i.getVerts().setData(c,1);let f,l,g,p,y;for(let h=0;h<o;h++)f=1-2*Fs(),l=Math.sqrt(1-f*f),g=e.radius*Fs()**.33333333,p=g*l,y=2*Math.PI*Fs(),u[h*3]=e.center[0]+p*Math.cos(y),u[h*3+1]=e.center[1]+p*Math.sin(y),u[h*3+2]=e.center[2]+g*f;c[0]=o;for(let h=0;h<o;h++)c[h+1]=h;r[0]=i}}const q3={numberOfPoints:10,center:[0,0,0],radius:.5,pointType:"Float64Array"};function Q3(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};Object.assign(e,q3,n),_.obj(t,e),_.setGet(t,e,["numberOfPoints","radius"]),_.setGetArray(t,e,["center"],3),_.algo(t,e,0,1),Y3(t,e)}_.newInstance(Q3,"vtkPointSource");const Z3={__name:"InfoVtkmodel",setup(t){Dn(()=>{s(),de.clearJgAddMode()});const e=U([]),n=U([]),r=U([]),a=U([]);async function s(){await Fe({transCode:"D00000",count:1e3,page:1}).then(f=>{f.returnCode=="000000000"?(e.value=f.rows,i()):ElMessage({message:f.returnMsg,type:"error"})}).catch(f=>{})}async function i(){await Fe({transCode:"D00001",count:1e3,page:1}).then(f=>{f.returnCode=="000000000"?(n.value=f.rows,u()):ElMessage({message:f.returnMsg,type:"error"})}).catch(f=>{})}function o(c){let f=!1;return n.value.forEach(l=>{if(c.id==l.snId||c.id==l.enId)return f=!0,f}),f}function u(){console.log("模板加载.."),e.value.forEach(c=>{o(c)?a.value.push(c):r.value.push(c)}),de.modelInit(a.value,n.value)}return(c,f)=>null}},J3=On(Z3,[["__scopeId","data-v-f24ba7fa"]]);const $0=t=>(ea("data-v-338f1206"),t=t(),ta(),t),eL={class:"appmian"},tL={class:"ve_menu_logo"},nL={class:"ve_title"},rL={class:"ve_logo_img"},aL={class:"ve_right"},sL=$0(()=>E("span",null,"请选择",-1)),iL=[sL],oL={key:1},cL={class:"l_huoqing"},uL={class:"l_time"},fL=$0(()=>E("span",null,"模型库",-1)),lL="灾情推演软件",gL={__name:"appmian",setup(t){let e=U(),n=U();const r=U("1");U("1");let a=U(),s=U(),i=U(),o=U(!1),u=U({time:"",name:""}),c=H0();U({});let f=U();Dn(()=>{});const l=()=>{r.value="1";const v=r.value;n.value.changeModel(),n.value.accident3(v),s.value.accident4(v),e.value.accident2(v),i.value.monitor=!1,c.push({path:"/configurator",query:{date:new Date().getTime()}})},g=()=>{a.value=e.value.classradio},p=v=>{o.value=v},y=()=>{e.value.dialogVisible=!0},h=()=>{e.value.dialogVisible=!0},d=()=>{n.value.handledisaster(f.value),s.value.addboundary(f.value),n.value.accident3()},x=v=>{console.log(v),u.value.name=v.name,u.value.time=v.time,f.value=v.aid},S=v=>{switch(r.value="",v){case"1":n.value.changeModel(),n.value.accident3(v),s.value.accident4(v),e.value.accident2(v),i.value.monitor=!1,r.value="1";break;case"2":s.value.changeModel(),s.value.accident4(v),n.value.accident3(v),e.value.accident2(v),i.value.monitor=!1,r.value="2";break;case"3":e.value.changeModel(),s.value.accident4(v),n.value.accident3(v),e.value.accident2(v),i.value.monitor=!1,r.value="3",e.value.addinitial();break;case"4":s.value.accident4(v),i.value.accident5(f.value),n.value.accident3(v),e.value.accident2(v),r.value="4"}};return(v,T)=>{const w=ee("el-image"),C=ee("el-menu-item"),R=ee("el-menu"),m=ee("el-header"),B=ee("el-main"),M=ee("el-container");return Be(),Xe("div",eL,[O(M,null,{default:k(()=>[O(m,null,{default:k(()=>[E("div",tL,[E("div",nL,[E("div",rL,[O(w,{style:{height:"100%"},src:V(j0),fit:"contain"},null,8,["src"])]),E("h3",{class:"ve_logo_title"},rt(lL))]),O(R,{"default-active":r.value,class:"el-menu-demo",mode:"horizontal","popper-offset":2,style:{width:"780px"},"background-color":"#0D1639 ","active-background-color":"#0E50C8","text-color":"#68ADFF","active-text-color":"#fff",onSelect:S},{default:k(()=>[O(C,{index:"1"},{default:k(()=>[re("灾害源设置")]),_:1}),O(C,{index:"2"},{default:k(()=>[re("边界设置")]),_:1}),O(C,{index:"3"},{default:k(()=>[re("灾害推演")]),_:1}),O(C,{index:"4"},{default:k(()=>[re("推演结果")]),_:1})]),_:1},8,["default-active"]),E("div",aL,[V(f)==null?(Be(),Xe("div",{key:0,class:"ve_timeioc",onClick:y},iL)):(Be(),Xe("div",oL,[Tt(E("div",{class:"ve_time",onClick:T[0]||(T[0]=D=>h())},[E("span",cL,rt(V(u).name),1),E("span",uL,rt(V(u).time),1)],512),[[Dt,V(o)]])])),E("div",{class:"ve_timeioc",onClick:T[1]||(T[1]=D=>l())},[O(w,{src:V(K0),fit:"contain"},null,8,["src"]),fL])])])]),_:1}),O(B,null,{default:k(()=>[O(RD,{ref_key:"lliudialog",ref:e,addselect:g,headerobj:V(u),onHeaderclick:x,onHandleSelect:S,onChildfun:d,onMoxingclick:p},null,8,["headerobj"]),O(MM,{ref_key:"sourcedis",ref:n,classradio:V(a),aid:V(f)},null,8,["classradio","aid"]),O(a3,{ref_key:"boundary",ref:s,classradio:V(a),aid:V(f)},null,8,["classradio","aid"]),O(I3,{ref_key:"tanimation",ref:i,classradio:V(a),aid:V(f)},null,8,["classradio","aid"]),O(J3,{ref:"vtkmodel"},null,512)]),_:1})]),_:1})])}}},xL=On(gL,[["__scopeId","data-v-338f1206"]]);export{xL as default};
|